代码签名有几个步骤,从创建唯一密钥对开始。创建的密钥对是公钥-私钥对,因为代码签名使用公钥加密。创建密钥对后,公钥将发送到受信任的证书颁发机构或 CA,该证书颁发机构通过向软件开发人员返回公钥以及经过数字签名的代码签名证书来验证密钥是否属于所有者。CA 是高度受信任的实体,负责签名和生成数字证书。CA 返回的带有附加公钥的证书确认了开发人员及其创建的任何软件的可信度。
现在已返回公钥和数字代码签名证书,软件的代码将通过哈希函数运行。哈希函数是一个单向函数,它将放入函数中的文本转换为无法反转的值的任意混合。这提供了一个值,用于与将数据发送给使用者时进行比较。然后,输出或摘要由私钥加密。私钥用于加密而不是公钥的原因是,开发人员希望任何人都能够读取消息,但没有人能够篡改它。摘要、代码签名证书和哈希函数现在被组合成一个签名块,并放入软件中,然后发送给消费者。
收到软件后,消费者的计算机首先检查代码签名证书的真实性。一旦确认了真实性,摘要就会使用最初创建的密钥对的公钥进行解密。然后,在软件的代码上使用哈希函数,并将生成的摘要与开发人员发送的摘要进行比较。如果摘要匹配,则软件可以安全安装。