HTTPS的是如何加密的?

面试中的常考问题:HTTPS是如何加密的,是对称加密还是非对称加密?估计被问到,脑子都是无法直接反应,看完这篇博客再碰到这个问题,面试官直接给你发offer。

        要想搞清这个问题,让我们先了解对称加密和非对称加密。

        对称加密:加密使用的密钥和解密使用的密钥是同一个密钥

        E(p,k1) = c          D(c,k2) = p        k1 == k2

        对称加密的加密和解密的性能更好,核心的破绽是密钥传输的安全性

        非对称加密:加密和解密使用不同的密钥

        E(p,k1) = c        D(c,k2) = p        k1 != k2

        非对称加密的密钥成对出现,称为密钥对(key pair),其中一个密钥是”自己“保留的,只有一份,称为私钥(private key);另一份密钥可以公开出去,称为公钥(public key)。

        E(p,private key) = c        D(c,public key) = p

        意味着”我“可以通过私钥加密数据,给任何拥有公钥的人,那么这些拥有公钥的人,可以通过手中的看懂”我“发出去的内容——但公钥的每个人都可以拿到,这种的加密还有什么意义?

        意义在于防止伪造:因为只要可以通过公钥进行解密,说明这份消息一定是被于和公钥相对的私钥加密发送的。而私钥只有我有,说明这份消息一定是我发的,不是别人发的,类似于印章制度

        E(p,public key) = c        D(c,private) = p

        意味着谁都可以向我发送消息,通过公钥进行加密,但是只有我有私钥,只有我能看懂。

        非对称加密加密和解密的性能较差

下面来看看HTTPS的加密过程

        

总结:对称加密主要用于真正的数据传输,非对称加密,主要为对称加密,解决对称加密的密钥传输的安全问题。

再来想一想中间还可能什么问题

中间人劫持问题

 如果出现这种情况,数据的传输就如同明文传输,中间人完全可见。

这种问题,我们通过证书(CA)机制来解决

CA(Certification Authority)证书当局——类比现实生活中的公证处

由公证处给服务器颁发一个证书(类比营业执照,写明了服务器是谁,提供什么服务,公证处的签名),服务器的公钥存放在证书中,客户端收到的不仅仅是一个公钥本身,而是一套围绕着公钥建立的证明体系。

在这里引入一个知识:

        消息摘要技术:目的是防止数据本身被篡改。广义上是哈希技术的一部分

        原始数据-->Hash(原始数据)-->摘要(哈希值),如果无意中,原始数据被改了,摘要就会发生改变,接收方验证摘要的正确性:Hash(原始数据)-->摘要,如果和发送方的摘要不同,就可以认为数据不是原始数据,被人篡改过。

消息摘要VS加解密技术

        加解密是可逆的。        明文-->密文-->明文

        消息摘要是不可逆的。        明文-->摘要     

再回到CA和签名流程中来

开始,服务器要找CA为它颁发证书,服务器需要提供自己的信息,

CA制作证书,证书中包括域名为主的一系列信息,CA为服务器生成的密钥对中的公钥,然后为上述信息做为数据消息摘要的原始数据,使用CA的私钥对数据进行加密,生成证书和服务器的密钥对。

总结一下HTTPS的加密过程

        当客户端发起请求时,服务器把证书直接给到客户端

        客户端有CA机构的公钥,通过CA机构的公钥对证书进行解密

        客户端能解开,说明证书肯定是CA颁发,然后通过消息摘要算法,域名为主的信息+公钥信息生成新的摘要,和证书中的老摘要进行对比二次验证。

        最终拿到了服务器的公钥,按生成对称加密的密钥,通过服务器的公钥进行加密,传递给服务器。

        服务通过自己私钥进行解密,得到对称解密密钥

        双方使用对称加密,进行请求/响应的传输

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值