Authenticode技术实现原理
客户机收到页面带有三个东西;
1.数字证书 2.活动内容即代码 3.代码开发商的数字签名与摘要
当客户机收到带有证书和活动内容(代码)的页面时,Authenticode取出其中的证书,进行三个验证
1.验证证书真伪和有效性以及CA的身份
2.验证活动内容是否来自发布者(代码开发商)
3.确认活动内容中的程序代码未被修改过
第一点详情:IE内置有可信认证中心的清单以及其公开秘钥,Authenticode扫描该清单,找出提供证书的认证中心,并用其公开秘钥验证证书的真伪及CA的身份,同时也可以验证证书的有效性。
通俗的来说,就是ie本地文件就有一张表(id,CA厂家名称,每个厂家的公钥),数字证书发放者就是某一个CA,本地看到CA名称,就去找自己浏览器本地自带的那张表,判断有无这个数字证书颁发厂家,有就对了,并且可以知道厂家的这个公钥。用厂家的这个公钥去解证书上的 最后一项CA对证书的数字签名,如果能解开,说明证书是真的,解不开,证书是假的。
第二点详情:随着证书和活动内容(代码)的页面带过本地的还有就是代码开发商的数字签名与摘要(内附有软件出版商的签名摘要),如果签名摘要课证明软件出版商签署了所下载的代码,证书就显示出来。
具体验证方式,就是证书上面有代码开发商的公钥,用这个公钥去解代码开发商给过来的数字签名,开能否解开,解开得到的是摘要,我们用得到的摘要与它给的摘要做对比,如果一样,那么这个代码就是这家代码开发商写的。
第三点详情:通过摘要对比来验证活动内容中代码是否曾被修改。(类似第二点)
额外内容有助于理解的,补充说一下数字证书的内容
1.版本号 2.数字证书序列号 3.签名算法标志符 4.数字证书发放者 5.有效期 6.主体——证书持有者(就是代码开发者) 7.主体的公钥 8.CA对证书的数字签名
浙公网安备 33010602011771号