http协议:五 (3)数字签名与证书
1、摘要算法用来实现完整性,能够为数据生成独一无二的“指纹”,常用的算法是 SHA-2 SHA224、SHA256、SHA384,分别能够生成 28 字节、32 字节、48 字节的摘要;
2、数字签名是私钥对摘要的加密,可以由公钥解密后验证,实现身份认证和不可否认;
3、公钥的分发需要使用数字证书,必须由 CA 的信任链来验证,否则就是不可信的;
4、作为信任链的源头 CA 有时也会不可信,解决办法有 CRL、OCSP,还有终止信任。
机密性:靠混合加密解决,非对称加密实现对称加密秘钥传递,对称加密实现内容加密。
摘要算法保证了“数字摘要”和原文是完全等价的。所以,我们只要在原文后附上它的摘要,就能够保证数据的完整性。
真正的完整性必须要建立在机密性之上,在混合加密系统里用会话密钥加密消息和摘要,这样黑客无法得知明文,也就没有办法动手脚了

摘要算法近似地理解成一种特殊的压缩算法,它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”。换一个角度,也可以把摘要算法理解成特殊的“单向”加密算法,它只有算法,没有密钥,加密后的数据无法解密,不能从摘要逆推出原文。
完整性:靠摘要算法解决。

身份认证:靠数字证书解决,数字证书因为CA机构的信任变成一个完整信任链条,从而实现通过数字证书证明了对方真实身份,但注意身份真实也可能是挂羊头卖狗肉,是一个坏人,所以,有了CRL、OCSP,还有终止信任。
不可否认:靠数字签名解决,内容摘要算法得到摘要,私钥加密摘要,对方使用对应公钥解密,得到摘要,再和自己得到的服务器提供的原文摘要对比,一致说明这个内容就是原服务器提供的,由证书说明了服务器的身份。
关于证书验证:
服务器返回的是证书链(不包括根证书,根证书预置在浏览器中),然后浏览器就可以使用信任的根证书(根公钥)解析证书链的根证书得到一级证书的公钥+摘要验签,然后拿一级证书的公钥解密一级证书拿到二级证书的公钥和摘要验签,再然后拿二级证书的公钥解密二级证书得到服务器的公钥和摘要验签,验证过程就结束了。
CA(Certificate Authority,证书认证机构)。它就像网络世界里的公安局、教育部、公证中心,具有极高的可信度,由它来给各个公钥签名,用自身的信誉来保证公钥无法伪造,是可信的。
↓ 对称加密(有密钥交换的问题)
↓ 非对称加密(基于复杂的数学难题,运行速度很慢)
↓ 混合加密(怎么保证完整性?不被修改?)
↓ 摘要算法(无法保证是用户自己)
↓ 数字签名(公钥怎么保证安全正确的?)
↓ 数字证书(对公钥的认证证书)、CA(认证机构)DV、OV、EV三个级别由低到高
问题
1、为什么公钥能够建立信任链,用对称加密算法里的对称密钥行不行呢?
2、假设有一个三级的证书体系(Root CA=> 一级 CA=> 二级 CA),你能详细解释一下证书信任链的验证过程吗?
浙公网安备 33010602011771号