网络传输加密技术(HTTPS)

目录

1、公钥与私钥原理

2、非对称加密

3、HTTPS加密选择

4、SSL/TLS


 

1、公钥与私钥原理

1)、鲍勃有两把钥匙,一把是公钥,另一把是私钥

2)、鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

3)、苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

4)、鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

5)、鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)

6)、然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)

7)、鲍勃将这个签名,附在信件下面,一起发给苏珊

8)、苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

9)、苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

10)、复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。

11)、后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)

12)、鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13)、苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

2、非对称加密

公钥存在于客户端、私钥存在于服务端

第一种是签名:私钥加密,公钥解密。服务端用私钥对数据加密,发送给客户端,客户端公钥解密。内容不会被篡改,但是内容会被获取(比如黑客拿到报文后如果篡改内容,公钥解密后的数据肯定是不正确的,但是黑客可以直接用公钥解密);
第二种是加密:公钥加密,私钥解密,客户端用公钥对数据加密,发送给服务端,服务端私钥解密。内容会被篡改,但是不会被获取(比如黑客拿到报文后因为没有私钥,所以不能解密,但是可以自己写一份内容,用公钥加密,发送给服务端来篡改内容);

如果甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密,这段数据,再用自己的私钥加密这段加密后的数据。最后再发给乙,这样确保了内容即不会被读取,也不会被篡改。

3、HTTPS加密选择

  • 对称加密弊端:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
  • 非对称加密弊端:服务端只将公钥暴露,浏览器使用公钥对消息进行非对称加密,服务端用私钥解密。但是服务端向浏览器回复的时候,只能用私钥进行加密,浏览器只能用公钥解密。但是:公钥是所有人都知道的,所有人都可以读取服务端回复的消息来进行解密,所以解决不了服务端向浏览器传递消息。

对称加密和非对称加密结合方式:

  • 浏览器使用Https的URL访问服务器,建立SSL链接。
  • 服务器收到SSL链接,发送非对称加密的公钥A返回给浏览器
  • 浏览器生成随机数,作为对称加密的密钥B
  • 浏览器使用公钥A,对自己生成的密钥B进行加密,得到密钥C
  • 浏览器将密钥C,发送给服务器。
  • 服务器用私钥D对接受的密钥C进行解密,得到对称加密钥B。
  • 浏览器和服务器之间可以用密钥B作为对称加密密钥进行通信。

4、SSL/TLS

  • SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。HTTPS=HTTP+SSL
  • TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议,较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。

TLS是在SSL的基础上标准化的产物,目前SSL3.0与TLS1.0保持一致的,二者是并列关系,只是大家习惯称呼SSL。注明的web服务nginx默认支持的就是TLS1.0、TLS1.1、TLS1.2协议。调用的openssl库中,对应的就是ssl3_acceptt函数。

SSL/TLS位于传输层和应用层之间,应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值