主要参考《MSDN:Introduction to Code Signing》,没有直译,算是自己的理解整理的。
为什么要对软件进行数字签名p>
现在软件都是通过Internet发布,由于Internet上病毒和黑客技术的泛滥,你要让用户相信你的软件,是来自可靠的公司和组织,
并确保软件在下载过程中不被恶意修改。利用数据签名,可以做到这一点。但要注意,不是说有数字签名的软件就是安全的软件。
数字签名p>
通常是非对称加密算法,例如RSA加密算法,包括一个公钥和私钥,私钥用来加密,也就是生成签名,公钥用来解密。
数字签名的工作过程p>
直接对文件进行加密,在遇到文件很大时,速度很慢。因此实际数字签名协议是用的Cryptographic Digest(加密摘要)。具体步骤:
1、根据文件生成一个单向的哈希值(one-way hash,哈希可见的形式是16进制字符串)
2、用私钥加密哈希值,这样就实现对文件签名了。
3、发布、传输带签名的文件。
4、接受人根据文件生成一个哈希值。
5、用公钥解密文件的签名,得到原始哈希值
对比4和5的结果,如果相同就证明签名是有效的。
数字证书p>
一个文件,包含了软件发布人的公钥。一般随软件一起发布。证书由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
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34716 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!