使用签名证书对代码进行签名的过程是什么?
问题描述:
我是一位开发开源应用程序的新开发人员,我试图弄清楚如何签署一个程序。使用签名证书对代码进行签名的过程是什么?
我明白为什么代码签名是一件事情,而且我知道如何从CA或单独获取证书,但是一旦拥有私钥,我就找不到解释实际签名过程的任何内容。
如何使用签名证书对代码进行签名?具体来说,你是否签署了源代码,内置的可执行文件,完全是其他的东西?你是否运行特定的应用程序,或者在代码中包含某些内容?
答
您有一个包含私钥和公钥的代码签名证书。
您计算加密保存您的代码和数据的校验和,用私钥加密。您将加密校验和和您的公钥添加到您的代码中。
现在任何人都可以计算出你的代码相同的校验,解密用公钥加密校验,并进行比较。如果它们匹配,那么证明代码是由拥有你的私钥的人提供的。如果它们不匹配,则证明此代码与加密校验和的代码不同。
为了有用,允许任何应用程序之前先运行操作系统将执行这种测试。公钥将与OS供应商拥有的众所周知的私钥签署,并可能伴随可用于识别公钥所有者的数据。
显然EvilHacker可以创建恶意软件和代码签名。所以它签署的事实是没有意义的。但是你也会拥有EvilHacker的身份,否则操作系统将无法启动应用程序。所以操作系统永远不会允许你运行被黑客入侵的应用程序,或者公共所有者对操作系统的创建者不知道的应用程序。
黑客可以成功执行的第二个最糟糕的事情是彻底删除代码签名并给你未签名的黑客代码 - 操作系统可能会问你是否要运行未签名的代码,或者根本不允许它。
黑客能做的最坏的要么是精读操作系统业主接受EvilHacker的代码签名证书,或窃取代码签名证书,并创建一个真正正确签名的恶意软件。
好了,所以,你会运行在你的源代码校验,并与encrytped校验和公钥一起分发你的src。如果你只想分发一个可执行文件呢? – GreySage