Https 数字证书验证原理

2020-03-09  本文已影响0人  一个追寻者的故事

一、Https为什么安全


讲到https安全,那就看http为什么不安全。
1、明文传输
2、信息被监听和篡改。
3、无法验证通讯对象,有被冒充的风险。
HTTPS就是为解决这些问题的。

二、概念介绍


消息摘要(Message Digest)

消息摘要就是在消息的基础上,执行一个单向的Hash函数,生成一个固定长度的Hash值,这个hash值就是消息摘要。(只能进行正向的信息摘要,无法从中恢复出任何消息)

消息摘要只能保证消息的完整性,并不能保证消息不可篡改。

常用信息摘要算法:MD5(128bit) SHA-1(160bit) SHA-256(256bit)

数字签名(Digital Signature)

类似于现实世界的签名,像是"签章"一样。
签名的作用:(保证可认证、不可抵赖、完整性)
1、保证消息来源的准确性。
2、消息没有被篡改。
3、不可否认性。

一个完整的数字签名方案应该有两部分组成:签名算法 和 验证算法。事实上,任何一种公钥密码体制都可以单独作为一种数字签名方案使用(私钥加密,公钥解密),现实中 数字签名是 非对称机密技术 + 信息摘要 技术的结合。既满足了性能,又能保证安全性。

签名过程:(通过签名过程得到内容 就是 原始信息的数字签名
1、用摘要算法对消息进行摘要。
2、再把摘要用信源的私钥加密。

验证过程
1、原始消息使用同样摘要算法得到信息摘要H1
2、使用预先得到的公钥解密 数字签名,得消息摘要M1(若无法解密,则代表签名被篡改过,验证失败)
3、判断H1 M1是否相等。相等,没有被篡改,且法发送者明确。不等,则代表被篡改。

数字证书

刚才说了那么多,都是基于一个前提:消息的接受者必须事先得到正确公钥,而很多时候根本就不具备事先沟通公钥的信息通道。数字证书是为了解决公钥安全发放的问题,数字证书由权威的CA机构颁发,证书的主要内容有:

三、Https请求原理及数字证书验证。


https.jpg

Https中的加密算法包含: 非对称加密 和 对称加密算法。

这就是涉及到 公钥的安全发放问题了,用户不可能直接对接那么多服务端网站,且也没有实现沟通的机制。有第三方机构CA来做证书的发放。CA除了跟别人办法证书以外,它自己也有证书,这个证书是自己给自己颁发的,为了区分我们称它为根证书。根证书也有自己的公钥和私钥。CA机构 根公钥在设备出厂的时候就已经内置到了设备中,像Chrome这种软件中也内置了,所以CA机构根公钥是一定可信的,只有这样才能验证 证书的真伪,从而确定 证书中发放的公钥的真伪。

浏览器对于证书的认证包含三点信息:

认证具体过程具体过程:

1、浏览器在接收到证书以后,就要开始验证工作了。首先从证书中获取证书的颁发机构。然后去寻找此颁发机构对应的根证书,如果系统中没有则代表此机构是不受信任的。

2、如果是受信任的的CA机构,从根证书中找到公钥,用根公钥去解密证书签名(如果解密失败,代表证书被篡改,或者破坏),得到证书指纹(摘要);再用指纹(摘要)算法对证书的原内容进行计算;两次结果进行对比,如果一致,代表内容未被篡改,否则代表证书内容被篡改。

3、在保证证书没有被篡改的基础上,再验证使用者使用的URL 和 我们请求的URL是否相等。相等,代表当前浏览连接的网站也是正确的,而不是一些钓鱼网之类的。

上一篇 下一篇

猜你喜欢

热点阅读