上回书说到了对称与非对称加密以及两者结合起来的混合加密解决了【机密性】;
整个通信过程中除了【机密性】还得有【完整性】和【身份证验证】以及【不可否认】
今天我们就来说一说;
摘要算法-完整性
我们要实现完整性的主要手段就是使用【摘要算法】
理解摘要算法
可以理解摘要算法是一种特殊的压缩算法,它能够把任意长度的数据【压缩】成固定长度,并且是独一无二的;
同时它也是一个单向的加密算法,只有算法。没有密钥,不需要解密,不能从摘要中逆推出原文;
摘要算法是把数据从一个大的空间映射到一个小的空间,是存在一定的冲突【碰撞】可能性,好的摘要算法是能够抵挡冲突,降低这个可能性;
TLS中的摘要算法
我们日常工作中使用过【MD5】、【SHA1】,这两个是我们日常常用的摘要算法,能够生成16字节和20字节长度的数字摘要;但是这两个摘要算法安全强度比较低,不够安全,在TLS中被禁止使用;
目前TLS主要推荐使用的是SHA-2;
SHA-2摘要算法
SHA-2是一系列摘要算法的统称,共有六种,常用有如下三种
- SHA224:生成28字节
- SHA256:生成32字节
- SHA384: 生成48字节
完整性
摘要算法建立了【数字摘要】和原文等价的关系,所以只要我们在原文加上它的摘要,就能够保证数据的完整性;
example
我发了条消息:【跑步去啊】,然后在传输时加上SHA-2的摘要,网站收到后也计算一下消息的摘要,进行对比,如果一致说明消息时完整可信的,并没有被修改;
HTTP协议-摘要算法.png
不具备机密性
摘要算法是不具备机密性,如果明文传输,黑客是可以修改消息后把摘要也一起修改了,这样接收方也是鉴别不出来完整性的;
所以完整性是建立机密性之上,机密性是基础;
数字签名-身份认证,不可否认
加密算法+摘要算法可以让我们的通信过程说是比较安全了;但是这里还有漏洞,就是通信的两个端点;
example
黑客可以伪装成接收者来窃取信息,也可以伪装成请求者向网站发送敏感信息(支付、转账),接收者没法确认你的身份,信息数据就这么被泄漏了;
非对称加密【私钥】+ 【摘要算法】 实现数字签名
非对称加密【私钥】+ 【摘要算法】 实现数字签名,同时实现了身份认证和不可否认的特性
数字签名原理
就是把非对称加密中的公钥和私钥用法反过来,之前是公钥加密私钥解密,现在是私钥加密公钥解密;
由于非对称加密的效率比较低,这里非对称加密仅仅加密【摘要】,运算量就小很多;
签名和公钥都是公开的,任何人都是可以获取的,这个签名只有私钥对应的公钥才能解开;
HTTP协议-数字签名.png
实际
当我们和网站互换公钥后,就可以确认消息的真实性,验明真身;
当我们用自己的私钥签名一个信息,网站收到后用你的公钥解密,确认身份没问题;同样网站用它的私钥签名消息,你收到后用它的公钥验证下,没问题,后面就可以用混合加密进行安全通信了;
数字证书和CA
到目前为止我们使用对称加密、非对称加密、摘要算法已经实现了安全的四大特性,你以为这样就完美了?
公钥信任问题
公钥是谁都可以发布的,我们的黑客同学也是可以伪造公钥的,为了解决公钥信任问题,借助外力,引入数字证书体系 CA
CA来给各个公钥签名,用自身的信誉保证公钥是真实的安全的;
CA
知名CA全世界就几家,DigiCert、VeriSign、Entrust等
它们签发的证书分为 DV、OV、EV三种,区别在于可信强度
DV是级别最低的只是域名级别可信;EV是最高的经过了法律和审计的严格核查的,可以证明网站拥有者的身份;
操作系统和浏览器都内置了各大CA的根证书,上网时服务器发过来它的证书,就可以验证证书里的签名,确认证书是否可信,从而确认里面的公钥是否可信;
网友评论