背景
随着HTTP的应用越来越广泛、一些问题便随之而来。例如:
1、窃听风险。由于HTTP本身并不具备加密属性、所有的信息都等于在互联网上裸奔。
2、身份伪装。用户不知道自己的需求是否发送给了目标服务器、有可能被钓鱼。
HTTPS、正致力于解决这些安全性问题。
TLS/SSL协议
TLS/SSL协议提供了身份验证、信息加密和完整性校验的功能。说白点,就是在明文的上层和TCP层之间加上一层加密,这样就保证上层信息传输的安全
对称加密
HTTPS在正常传输时、使用的对称加密算法、保证传输效率。
1552225-d4c61c9ef76420dc.png
对称加密中A/B双方都持有相同的秘钥。发送数据时加密、接收数据时解密。
非对称加密
HTTPS在握手时使用非对称加密、保证协商私钥时的私密性。
1552225-0c56605fcbae4fad.png
B持有(无数个)锁、每次发送数据时都把数据锁好。A接到盒子后、用手里的钥匙解密。
这样做的好处是、即使客户端B的锁泄漏了、攻击者也无法获知真正的信息、因为他并没法解密。
HTTPS工作的过程
-
对称加密的算法(秘钥)如何确定
我们希望服务器与每一个人的加密算法、都是不固定的。但服务器再和每个用户协商算法的时候、依旧没有加密、仍旧存在被截获的危险。 -
如何安全的协商加密的算法(秘钥)
1、服务器自己持有私钥 2、服务器将公钥分发给所有想要与自己链接的用户 3、用户将加密的核心算法用公钥加密之后传给服务器 4、服务器用私钥对加密的核心算法进行解密并确认使用该算法。
-
使用公钥加密协商一定是安全的?
1552225-433042425d4b7c0b.png
如上图所示、红色的秘钥已经被攻击者获得、攻击者可以随意解密甚至串改二者的通讯信息。
-
如何保证公钥发布者的身份?
1552225-3bfd7d15b5212b3d.png
上图中、蓝色部分(公钥、数字证书)都是由第三方机构提供的。公钥提供给客户端、数字证书提供给服务器。而红色部分(数字签名)也是在服务器申请证书的时候由第三方机构书写。用户只需要信任第三方机构并集成即可。
HTTPS实际的工作过程
1552225-f4422d69eab79d38.png1、客户端发送自己支持的加密规则给服务器,代表告诉服务器要进行连接了
2、服务器从中选出一套加密算法和hash算法以及自己的身份信息(地址等)以证书的形式发送给浏览器,证书中包含服务器信息,加密公钥,证书的办法机构
3、客户端收到网站的证书之后要做下面的事情:
(1)验证证书的合法性
(2)如果验证通过证书,浏览器会生成一串随机数,并用证书中的公钥进行加密
(3)用约定好的hash算法计算握手消息,然后用生成的密钥进行加密,然后一起发送给服务器
4、服务器接收到客户端传送来的信息,要求下面的事情:
(1)用私钥解析出密码,,用密码解析握手消息,验证hash值是否和浏览器发来的一致
(2)使用密钥加密消息,回送
5、如果计算法hash值一致,握手成功
网友评论