1. 【数字签名】如果我是数据的接收者,我会接受源数据和用私钥加密后的源数据的摘要信息两部分数据。我手里会有数据源端提供给我的公钥,用来解密信息源发送过来的用私钥加密后的摘要信息,如果能解密说明该摘要信息的信息源可信。然后自己对源数据在本地提取摘要,与解密后的摘要信息进行对比。----数字签名解决信息源真实,数据没有改动的问题。
数字签名就是指对自己要发布的数据的摘要用私钥加密后的信息。
数据接收端下载的.md5文件显示的摘要信息,其实是通过浏览器中保存的证书中的公钥解密后的信息,发送端发送的是摘要的加密信息。
2. 信息源发送者会发送源数据和用私钥加密后的源数据的摘要信息。分成两部分的原因是,直接对体积较大的源数据进行私钥加密,时间漫长,不可取。----解释了为什么分成两部发送数据的原因。
由于很多时候缺乏把公钥面对面送到数据接收者手中的渠道,所以才出现CA机构,数字证书机构。
3. 数据加密三者关系
【知识背景】1. 私钥也可以加密,用公钥解开,这样保证消息源的真实性。2. 数据发布者其实发布的是两部分数据,与加密相关的只是经过私钥加密的摘要信息。
数据发布者:(1)生成公钥-->购买数字证书;(2)生成私钥-->加密源数据摘要信息;
数据接收者:(2)安装数据发布者购买的证书-->a.用设备的根证书的公钥对数据发布者的数字证书的摘要解密,保证数据发布者的数字证书的安全性;b.获取数据发布者的数字证书的公钥,解密数据发布者私钥加密后的摘要信息;(2)比对摘要信息-->本地提取摘要与解密获得摘要信息比对;
证书发布机构:(1)与设备厂家合作,将根证书预先放到设备里面;(2)用自己私钥对包含数据发布者的公钥的数字证书进行加密;
4.总结:由于我们自己角色一般只是数据发布者或接受者,这里精炼下个角色需要做什么。
(1)数据发布者:生成公钥和私钥,公钥给CA机构生成证书。私钥对数据源摘要加密。
(2)数据接收者:比对摘要信息即可,其他过程不用关心。
5. 公钥不给CA机构,不买证书的情况下如何办?(购买证书成本较高)---那就必须强制校验MD5值才能安装(例如APK安装),且不追究不可靠数据来源。
6. 【数字证书的必要性】一定要与自签名的情况区别开,我们对数据安全的期望有两层含义:基本的,我们要保证接收的数据是安全的,如果数据不对我们不要即可,不追究数据提供方好坏;第二层,但我们接收到数据不对,我们敢确定数据发送方是不可信的,那么就必须自信自己手里的公钥是可靠的,这种情况才需要数字证书。
7. 【APK安装为什么不需要CA认证的证书】如果仅仅只是基本需求,我们只需要提供公钥和私钥即可保证数据安全。这就是App前面并不需要数字证书的原因,因为公钥就包含在APK中,如果公钥被改,根本无法解密私钥加密后生成的SF文件,大不了禁止安装即可,不关心谁改动了证书。而互联网为什么要给一个数字证书呢?那是因为用户往往不验证MD5值,那么安装有问题的源数据后出现问题,数据提供方可以规避责任。而APK的安装是将MD5值的校验过程强制加入APK的安装过程中的,而且采用有问题不安装的策略,这样CA认证的数字证书就不需要了。
8. 公钥私钥如何生存?