软件数字签名一点基础知识整理

来源:互联网 发布:淘宝迅雷会员充值 编辑:程序博客网 时间:2024/04/29 22:59

 

主要参考《MSDN:Introduction to Code Signing》,没有直译,算是自己的理解整理的。

 

为什么要对软件进行数字签名?

现在软件都是通过Internet发布,由于Internet上病毒和黑客技术的泛滥,你要让用户相信你的软件,是来自可靠的公司和组织,

并确保软件在下载过程中不被恶意修改。利用数据签名,可以做到这一点。但要注意,不是说有数字签名的软件就是安全的软件。

 

数字签名?

通常是非对称加密算法,例如RSA加密算法,包括一个公钥和私钥,私钥用来加密,也就是生成签名,公钥用来解密。

 

数字签名的工作过程?

直接对文件进行加密,在遇到文件很大时,速度很慢。因此实际数字签名协议是用的Cryptographic Digest(加密摘要)。具体步骤:

1、根据文件生成一个单向的哈希值(one-way hash,哈希可见的形式是16进制字符串)

2、用私钥加密哈希值,这样就实现对文件签名了。

3、发布、传输带签名的文件。

4、接受人根据文件生成一个哈希值。

5、用公钥解密文件的签名,得到原始哈希值

对比4和5的结果,如果相同就证明签名是有效的。

 

数字证书?

一个文件,包含了软件发布人的公钥。一般随软件一起发布。证书由CA机构在验证了发布人后发布的。

至少包含以下信息:

Owner's public key

Owner's name or alias

Expiration date of the digital certificate

Serial number of the digital certificate

Name of the certification authority that issued the digital certificate

Digital signature of the certification authority that issued the digital certificate

原创粉丝点击