简单了解HTTPS
HTTPS
HTTPS并非是应用层一个新的协议,通常HTTP直接和TCP通信,HTTPS则先和安全层(SSL、TLS)通信,然后安全层再和TCP层通信。
可以看出HTTPS就是在HTTP的基础上增加了一层SSL/TLS那么SSL都起了什么作用呢?
- 所有信息是加密传输的
- 配备身份验证(服务端),防止身份被冒充
- 具有校验机制,一旦被篡改,通信双方会立刻发现
TLS全称传输层安全协议Transport Layer Security Protocol,TLS/SSL是一种加密通道的规范。
TLS协议是SSL协议发展来的,目前大都用的是TLS协议了
理解HTTPS前需要理解这些概念:对称加密、非对称加密、摘要算法、数字签名、证书、认证中心(CA - Certificate Authority)
1. 对称加密算法
定义:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密。
特点:
- 优点:算法公开、计算量小,加密速度快
- 缺点:相对来说不算特别安全,如果密钥被劫持,信息容易被破译
常用算法:
- DES:现在用的比较少,因为加密强度不够,能够暴力破解
- 3DES:原理和DES几乎一样,只是使用3个密钥,对相同的数据三次加密,增加了加密强度,但是需要维护3个密钥
- AES:用于替代原先的DES,是现在公认最安全的加密方式,对称加密中最流行的算法。AES128和AES256主要区别是密钥长度不同,加密处理轮数不同(10轮、14轮),后者强度更高
2. 非对称加密算法
定义:非对称加密算法需要两个密钥:公钥和私钥,公钥和私钥是一对。
特点:
如果用公钥加密,只有用对应的私钥能解密;
如果用私钥加密,只有用对应的公钥能解密
由于算法复杂,使得加解密速度没用对称加密那么快。有两种密钥,其中一个是公开的,就不需要传输对方的密钥了,安全性提高了很多。
常用算法:
RSA、DSA、ECDSA
3. 数字签名
数字签名有两种功能:
- 能确认消息是由发送方签名并发出来的,因为别人假冒不了发送方的签名
- 能确认消息的完整性,校验数据是否被篡改。
数字签名的过程:
将要发送的原文数据用Hash算法(摘要算法,散列算法)生成消息摘要,然后用发送者的私钥加密生成数字签名。
签名校验过程:
接收者用对应的公钥解密开签名,然后也用HASH算法对收到的原文数据生成一个消息摘要。两相对比,如果一致说明信息完整有效。
消息摘要算法分为三类:
- MD(Message Digest):消息摘要算法
- SHA(Secure Hash Algorithm):安全散列算法
- MAC (Message Authentication Code):消息认证码
4. 证书
数字证书:是一种经证书认证构数字签名的,包含公钥,拥有者信息的文件。
SSL证书文件中包含:组织信息、域名信息、公钥、证书有效期等等。
5. 认证中心(CA)
CA是证书的签发机构,它是公钥基础设施的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。
CA把自己的CA证书集成在了浏览器和操作系统里面。客户端浏览器通过这个CA证书能够识别服务器返给他的证书的真伪。
介绍完上述知识后,接着了解下HTTPS的请求流程:
- 浏览器给出TLS协议版本号、一个客户端生成的随机数1,以及客户端支持的加密方法去服务端请求证书。
- 服务器确认双方使用的加密方法,并给出数字证书,以及一个服务器生成的随机数2。
- 浏览器确认数字证书有效,然后生成一个新的随机数3,并使用数字证书中的公钥加密这个随机数,发给服务器。
- 服务器使用自己的私钥,解密获取客户端发来的随机数。这时双方交换过3个随机数了。
- 客户端和服务器根据约定的加密方法,使用前面的三个随机数经过特定的算法,生成“对话密钥”,用来加密整个对话过程。
客户端怎么校验服务器发来的数字证书的合法性?
- 证书路径信任链逐级校验通过(证书确有可信任的CA认证签发)
- 签名解密成功(确系证书持有者亲笔)
- 签名解析出来的摘要和客户端算出的摘要一致(证书内容完整,未被篡改)
- 主题子域与URL中的HOST一致,综上确保访问的网站是来自预期目标服务器,没有被劫持。