作者:甘民涵 | 来源:互联网 | 2023-08-29 03:10
HTTPS 简介
在日常互联网浏览网页时,我们接触到的大多都是 HTTP 协议,这种协议是未加密,即明文的。这使得 HTTP 协议在传输隐私数据时非常不安全。 Netscape 公司设计了 SSL(Secure Sockets Layer) 协议,用于对 HTTP 协议传输进行数据加密,即 HTTPS 。
HTTPS 和HTTP 协议相比提供了:
数据完整性:内容传输经过完整性校验
数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
身份认证:第三方无法伪造服务端(客户端)身份
SSL 目前版本是 3.0,之后升级为了 TLS(Transport Layer Security) 协议,TLS 目前为 1.2 版本。SSL 与 TLS 均指同一协议。
加密方式
加密算法一般分为对称加密与非对称加密。
对称加密
客户端与服务器使用相同的密钥对消息进行加密
优点:
加密强度高,很难被破解
计算量小,仅为非对称加密计算量的 0.1%
缺点:
无法安全的生成和管理密钥
服务器管理大量客户端密钥复杂
非对称加密
非对称指加密与解密的密钥为两种密钥。服务器提供公钥,客户端通过公钥对消息进行加密,并由服务器端的私钥对密文进行解密。
优点:安全
缺点
性能低下,CPU 计算资源消耗巨大,一次完全的 TLS 握手,密钥交换时的非对称加密解密占了整个握手过程的 90% 以上。而对称加密的计算量只相当于非对称加密的 0.1%,因此如果对应用层使用非对称加密,性能开销过大,无法承受。
非对称加密对加密内容长度有限制,不能超过公钥的长度。比如现在常用的公钥长度是 2048 位,意味着被加密消息内容不能超过 256 字节。
HTTPS 下的加密
HTTPS一般使用的加密与HASH算法如下:
非对称加密算法:RSA,DSA/DSS
对称加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256
其中非对称加密算法用于在握手过程中加密生成的密码,对称加密算法用于对真正传输的数据进行加密,而HASH算法用于验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密算法对其加密。非对称加密算法会生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而网站的私钥用于对数据进行解密,所以网站都会非常小心的保管自己的私钥,防止泄漏。
TLS握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。正是由于HTTPS非常的安全,攻击者无法从中找到下手的地方,于是更多的是采用了假证书的手法来欺骗客户端,从而获取明文的信息,但是这些手段都可以被识别出来
关于证书
证书需要申请,并由专门的数字证书认证机构 CA 通过非常严格的审核之后颁发的电子证书,证书是对服务器端的一种认证。颁发的证书同时会产生一个私钥和公钥。私钥有服务器自己保存,不可泄露,公钥则附带在证书的信息中,可以公开。证书本身也附带一个证书的电子签名,这个签名用来验证证书的完整性和真实性,防止证书被篡改。此外证书还有个有效期。
证书包含以下信息:
使用者的公钥值。
使用者标识信息(如名称和电子邮件地址)。
有效期(证书的有效时间)。
颁发者标识信息。
颁发者的数字签名,用来证明使用者的公钥和使用者的标识符信息之间的绑定的有效性。
HTTPS通信过程
向CA机构申请数字证书然后配置在server端。
client端向server端发送HTTPS请求。
server端返回数字证书,加密算法和公钥。
client端验证接受到的数字证书是否和本地受信任的证书的信息一致。
证书验证有效之后,client端生成一个随机数用于对称加密的密钥。
client端用证书里面的公钥对自己生成的密钥进行加密。
client端向server端发送该密钥的密文。
server端通过私钥来解密该密文,拿到对称加密的密钥。
之后client和server就可以通过该密钥来进行加密通信。
chales抓包原理