网络

HTTPS安全的原因

2018-12-13  本文已影响17人  mecury

HTTPS安全的原因

看了很多博客与文章,我的理解是 HTTPS 之所以安全是因为杜绝了 HTTP 中可能的中间人攻击。
为了实现上面这点,HTTPS 增加了 SSL 层使用数字证书来进行验证及分发需要使用到的公钥。
下面是参考了很多文章的总结,主要是解读了一些比较容易模糊的点:

  1. HTTP不安全的原因
  2. 数字证书的组成
  3. 数字证书的颁发以及验证过程

这里推荐几篇文章:

HTTP不安全的原因

上面的过程会出现一个问题。就是中间人伪造的问题。

图片.png

上面的主要问题是 公钥 每个人都可以得到, 中间人可以自己伪造公钥 代替服务器与中间人进行通信。因此主要问题是:怎样明确确认了公钥是自己请求服务器的。
为了实现这点,引入了第三方公正机构,服务器会发送一些信息去证书颁发机构申请证书,证书颁发机构会验证申请者的身份并且根据一些信息生成证书,里面包含了服务器的公钥,用的加密算法,hash算法等信息,在响应客户端的请求会将证书发送给客户端。让客户端验证证书是否是合法的证书。验证成功就使用证书中的公钥进行加密,算是建立起了连接。

下面看下数字证书的组成

数字证书的组成

image

数字签名的作用:

  1. 数字签名技术就是对“非对称密钥加解密”和“数字摘要“两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接收者。
  2. 接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。
  3. 如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

数字签名的过程如下:
明文 --> hash运算 --> 摘要 --> 私钥加密 --> 数字签名

如:某宝自己的认证中心简称CA(Certificate Authority),CA给某宝颁发了一个证书,这个证书有:

上面在证书中存在的明文,会 HASH运算生成 消息摘要,为了防止被篡改,会使用 CA机构的私钥加密,生成数字签名

证书的作用

证书的颁发过程:
  1. 证书申请者首先产生非对称加密的公私钥, 将公钥与一些身份信息传递给证书认证机构。
  2. 证书在接受到请求后,会执行一些操作对于用户身份认证的一些操作。
  3. 验证完成后,证书认证机构对于整个内容使用私钥加密生成数字证书返回给申请者
证书包含的内容:

验证证书的有效性

  1. 证书颁发的机构是伪造的,浏览器不认识,直接认为是危险证书
  2. 证书颁发的机构是存在的,在浏览器中找到该机构的根证书。使用根证书中的公钥对于数字签名进行解密:解密不成功,直接认为是危险证书
  3. 解密如果成功,会由数字签名中得到信息摘要 A,然后根据证书中的 Hash 算法,对于证书重新进行Hash运算,得到信息摘要 B。如果 A 与 B相同,证明证书是正确的,否则证明信息被篡改
  4. 证书可在其过期前被吊销,通常情况是该证书的私钥已经失密。较新的浏览器如Chrome、Firefox、Opera和Internet Explorer都实现了在线证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。
上一篇 下一篇

猜你喜欢

热点阅读