从HTTP到HTTPS:后者如何保证安全性?

从HTTP到HTTPS:后者如何保证安全性?

1.HTTP的问题

  • 通信的过程中使用明文,内容容易被窃听。
  • 没有验证通信方的身份,容易遭遇伪装。
  • 无法证明报文的完整性,内容容易遭遇篡改。

为了解决这个三个问题,HTTPS应运而生。HTTP+加密+认证+完整性保护=HTTPS。

2.HTTPS

背景知识:

  • HTTPS中采用了“公钥+私钥”和“共享密钥”两种方式对通信的内容进行加密。
  • 公钥加密的内容只有相应的私钥能解开,反之亦然。
  • 共享密钥是两边有相同的钥匙。即两边可以用“一个密码”进行解密。
  • 数字证书用来证明一个服务器是确实存在的、是安全的。
  • 权威机构CA能对别人的公钥进行认证。

完整的一次通信(服务器到浏览器):

通信前完成的东西:

  1. 服务器把自己的公钥 S.pub 给权威机构CA,CA用它自己的私钥 C.pri 对 S.pub 进行认证(加密),产生一个数字证书。证书里面有 S.pub 和认证机构、服务器的域名等。数字证书返回给服务器。
  2. 浏览器内置了CA机构的公钥 C.pub(根证书)。C.pub 能对 C.pri 加密过的东西解密。

开始通信:

  1. 服务器将数字证书(认证机构、服务器本身的域名等信息)发送给浏览器。
  2. 浏览器接收到了数字证书,使用 C.pub(根证书)对数字证书进行解密。解密后对比域名和数字证书的颁发机构的合法性。如果合法,则证明了通信方身份的可靠性。且此时拿到了 S.pub。
  3. 浏览器自己生成一个共享密钥(一串随机数),通过 S.pub 加密,发送给服务器。
  4. 服务器用自己的私钥 S.pri 对共享密钥进行解析,拿到了共享密钥。
  5. 服务器、浏览器开始使用共享密钥进行通信。

疑问:

Q: 假设有中间人在步骤2中,把“数字证书+公钥”给劫持了,伪造了一份假的给浏览器,会发生什么?
A:

  • 由于中间人没有CA机构的私钥C.pri,所以无法伪造证书。
  • 中间人如果用自己创造的私钥伪造了一份发给浏览器,则浏览器无法使用提前内置的C.pub(根证书)对数字证书解密。
  • 中间人把自己的公钥也拿去给CA认证(产生一份属于中间人的数字证书),但认证的信息里面包含了中间人的信息。此时浏览器可以用提前内置的C.pub(根证书)对证书解密。但对比域名后发现不是服务器的,所以无法伪造。

Q: 为什么后面要用共享密钥通信?
A: 因为使用共享密钥加密解密效率更高。

PS:

证书通常包含这些内容
(1) 服务端的公钥;
(2) 证书发行者(CA)对证书的数字签名;
(3) 证书所用的签名算法;
(4) 证书发布机构、有效期、所有者的信息等其他信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值