面试题:https为什么能保证安全性

http传输如下:

此时信息是明文传输,如果信息被人截获,则能看到里面的内容,极不安全 

那就需要对内容加密,过程如下:

  1. 浏览器生成一个秘钥

  2. 浏览器向服务器请求公钥

  3. 服务器向浏览器发送它的公钥

  4. 浏览器接收服务器发送的公钥,并使用公钥加密随机生成的对称密钥,发送给服务器

  5. 服务器接收浏览器发送的数据,用自身私钥,得到对称加密密钥

  6. 最后,浏览器和服务器可以使用对称密钥加密内容进行通信

但此方案仍会存在安全隐患,在第三步和第四步之间,如果被一个中间人获取到它的公钥,浏览器使用中间人的公钥加密对称密钥,发送给服务器,中间人再次截获数据,获取其中的对称密钥。浏览器和服务器在双方数据都不知情的情况下,数据内容被窥探。 

问题的重点在于,第三步浏览器无法得到公钥的来源的合法性,这就需要数字证书了。这就是https的解决方案 
服务端单单发送公钥,而是发送包含公钥的数字证书。  
数字证书由第三方机构颁发,浏览器已经维护了所有知名的第三方机构。 

浏览器如何确定公钥的合法性?

  1. 在接收数字证书时,查看证书的有效期

  2. 根据数字证书的第三方机构名称,找到对应的公钥,解密数字签字,得到hash1

  3. 根据服务端网址等信息,使用签名算法,生成hash2

  4. 如果hash1等于hash2,则公钥合法

公钥和私钥的相关知识 
公钥和私钥是一对密钥对,它们可以互解密。使用公钥加密,私钥解密。能有效保证数据的安全性。但是如果使用私钥加密,公钥解密呢,则可以确定来源的合法性。因为只有知道私钥才能加密,如果我们能使用公钥解密得到正常内容(内容是否正确就是比较hash1和hash2),那么对方一定是拥有私钥的主机,而私钥是由第三方颁发给服务器的,这就是数字签名。

OSI七层 
物理层->数据链路层->网络层->传输层->会话层->表示层->应用层  
https的ssl位于传输层和应用层之间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值