Https 概述
1. HTTP被攻击的手法
由于http是明文传输,所以很容易遭受攻击。
1.1 偷窃
获取http传输的内容,可以知道用户浏览了哪些内容,甚至能获取用户的密码。
1.4 篡改
截获http的内容,并进行修改。
1.2 中间人攻击
类似于在A与B之间加了一个C,AB之间的所有请求都会经过这个C。这个C可以修改、窃取信息。为了防止此情况的出现,需要认证机制。
1.3 重放攻击
截获A–>B的一次认证通信,伪造成A,与B进行通信。
2. 密码学
公钥密码体制根据其所依据的难题一般分为三类:大素数分解问题类、离散对数问题类、椭圆曲线类
2.1 密码
用加密算法生成的一串密文
2.3 密钥
使这串密文改变的参数。算法不变,传的那个参数就是密钥。
2.4 加密算法
2.4.1 对称加密
双方都知道密钥
举例:AES
2.4.2 非对称加密
一个公钥,一个私钥。公钥是公开的。私钥只有发布人有。用公钥加密,私钥解密。
举例:RSA,DH
–DH:在双方没有预先设定信息的情况下,就算加密过程被偷窥,也无法获取密钥的算法。
2.5 数字证书
由受信任的组织颁发的用于证明真实身份(公开密钥)的证书。此文件包含公钥信息,拥有都的身份信息,数字证书认证机构对这份文件的数字签名。
2.6 数字签名
用非对称加密算法,生成的签名,并且会对比双方生成的签名或原文是否一样。能够用于文件完整性校验,和防篡改。
2.7 电子签章
指依附于电子文件的章,用于判断发行人的真伪。
2.8 前向保密
防止回溯性破解的算法。就算密钥泄露了,也不会导致历史数据被破解。应用在 最新版的TLS1.3中。
3. SSL/TLS协议
3.1 历史演变
3.1.1 版本变化
SSL 1.0 –> SSL 2.0 –> SSL 3.0 –> TLS1.0 –> TLS1.1 –> TLS1.2 –> TLS1.3
3.1.2 加密算法的演变
无法做到前向保密的算法被丢弃,比如:RSA,DH。但是对称加密AES被保留了下来。
3.2 SSL握手
目的是:获取两边都都知道的会话密钥(对称密钥),以便加密信道
由于此阶段是明文传输,要防止密钥泄漏,就需要相互认证。
(1)客户端创建安全连接(443端口),并提供可供选择的密码包。
(2)服务端选择密码,并返回证书。
(3)利用证书中的公钥加密会话密钥,并传回服务端,服务端用私钥解密,获取会话密钥。
(4)相互告知并开始建立加密信道。
3.3 SSL握手之后
对请求报文进行加密(对称加密,密钥是SSL握手后获取的会话密钥),通过TCP层进行传输。
3.4 优点
可扩展性好,可以合许多其它协议配合,比如FTP,Telnet,UDP。防篡改,防泄密,防造假。