HTTP和HTTPS
HTTP 超文本传输协议,是实现网络通信的一种规范。
HTTPS是安全的HTTP,引入安全层,将HTTP通信接口部分用SSL(Secure Sockets Layer 安全套接层)/TLS(Transport Layer Security 传输安全层)代替
SSL 在 1999 年被 IETF(互联网工程组)更名为 TLS
HTTP直接和TCP通信,HTTPS的话会先和SSL通信,再由SSL和TCP通信
HTTP存在的安全问题
- 通信使用明文,内容可能被窃听
- 无法证明报文的完整性,报文可能已经被修改
- 不验证通信方的身份,可能遭遇黑客伪造身份发布公钥
身份认证(Authentication),是指确认对方的真实身份,也就是证明你是你(可以比作人脸识别),它可以防止中间人攻击并建立用户信任。
HTTPS保证安全性的做法
- 使用混合加密机制,加密HTTP的通信内容,防止内容被监听。
- 使用摘要算法 实现数据完整性验证
- 使用公钥证书 证明公钥正确性
1.混合加密机制,加密HTTP的通信内容
用随机数产生对称算法使用的会话密钥(session key),再用公钥加密。对方拿到密文后用私钥解密,取出会话密钥。
- 为了安全使用非对称密钥加密的方式交换后续需要的对称密钥
- 通信交换报文阶段为了处理速度更快使用之前接收到的对称密钥加密
存在问题:上述方法解决了数据加密。但是在网络传输过程中,数据有可能被篡改,黑客拦截到数字证书(里面包含了公钥)修改公钥。
- | 对称加密 | 非对称加密 |
---|---|---|
原理 | 加密和解密使用同一个密钥 | 加密使用公钥,可以公开给任何人使用 解密使用私钥,接收方自己拥有 |
特点 | 有密钥就可以解密了,安全性不高 处理速度快 | 处理复杂,处理速度慢 |
数字签名 实现数据完整性验证 使用数字证书证明身份
- 数字证书认证机构使用摘要算法生成服务器公钥的摘要
- 数字证书机构利用自己的私钥和特定的签名算法加密摘要,生成数字签名
- 将数字签名和服务器公钥放入数字证书中,返回给服务器
客户端验证
- 用CA公钥和声明的签名算法对CA中的签名进行解密,得到服务器公钥的摘要内容1
- 用摘要算法对服务器公钥生成摘要内容2,对比是否和摘要内容1相同
相同则说明证书和公钥是可信的。
HTTP和HTTPS的区别
HTTP不安全,HTTPS是安全版本的HTTP = HTTP + SSL
HTTP存在的问题 | HTTPS的解决方案 |
---|---|
通信使用明文,内容可能被窃听 | 混合加密机制,加密HTTP的通信内容 |
不验证通信方的身份,可能遭遇伪装 | 使用公钥证书 证明公钥的正确性 |
无法证明报文的完整性,报文可能已经被修改 | 摘要算法 实现数据完整性验证 |
- http的端口号是80,https的端口号是443
- https需要申请证书。
- http的连接很简单,是无状态的,更高效。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。