HTTPS安全的原因

HTTPS安全的原因

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

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

这里推荐几篇文章:

HTTP不安全的原因

  • 通过非对称加密获取对称加密的公私钥。后续主要的数据传输通过对称加密来实现。
    在正常的情况下,HTTP协议的表现如下:


    图片.png
  • 客户端请求服务器发起SSL连接

  • 服务器响应公钥给客户端。私钥只有服务器持有

  • 客户端使用公钥加密对称密钥,发送给服务器

  • 后续的数据传输都使用对称密钥加密

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

图片.png
  • 中间人可以截取客户端的请求以及服务器的响应。在获取公钥及发送对称加密密钥的时候,都使用自己伪造的公钥与对称密钥进行替换,成功截取到用户的信息

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

下面看下数字证书的组成

数字证书的组成

image
  • 数字摘要 = 明文 + hash运算
  • 数字签名 = 数字摘要 + 非对称加密的私钥加密(CA颁发机构的私钥)
  • 数字证书 = 非对称加密的公钥(申请公钥) + 数字签名

数字签名的作用:

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

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

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

  • 签发者
  • 证书用途
  • 某宝的公钥
  • 某宝的加密算法
  • 某宝用的HASH算法
  • 证书的到期时间等

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

证书的作用

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

验证证书的有效性

  1. 证书颁发的机构是伪造的,浏览器不认识,直接认为是危险证书
  2. 证书颁发的机构是存在的,在浏览器中找到该机构的根证书。使用根证书中的公钥对于数字签名进行解密:解密不成功,直接认为是危险证书
  3. 解密如果成功,会由数字签名中得到信息摘要 A,然后根据证书中的 Hash 算法,对于证书重新进行Hash运算,得到信息摘要 B。如果 A 与 B相同,证明证书是正确的,否则证明信息被篡改
  4. 证书可在其过期前被吊销,通常情况是该证书的私钥已经失密。较新的浏览器如Chrome、Firefox、Opera和Internet Explorer都实现了在线证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。