HTTP介绍: HTTP详解
HTTPS出现的目的就是为了弥补HTTP的缺陷, HTTP有哪些缺陷呢?
HTTPS采用SSL协议(Secure Socket Layer)解决了HTTP的上述缺陷, SSL协议的安全机制如下:
HTTPS 只对报文主体加密.
数据加密传输
首先介绍两种加密方式, 共享密钥加密和公开密钥加密, SSL采用的是两者并用的混合加密机制.
(1)共享密钥加密
加密和解密同用一个密钥的方式称为共享密钥加密(Common keycrypto system), 也被叫做对称密钥加密. 但共享密钥加密存在的问题是如何把密钥安全地转交给对方.
(2)公开密钥加密
公开密钥加密使用一对非对称的密钥. 一把叫做私有密钥(private key), 另一把叫做公开密钥(public key). 顾名思义, 私有密钥不能让其他任何人知道, 而公开密钥则可以随意发布, 任何人都可以获得. 使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理, 对方收到被加密的信息后, 再使用自己的私有密钥进行解密. 利用这种方式, 不需要发送用来解密的私有密钥, 也不必担心密钥被攻击者窃听而盗走.
(3)混合加密机制
公开密钥加密的性能是要低于共享密钥加密的, 所以 SSL 充分利用两者各自的优势, 采用共享密钥加密和公开密钥加密两者并用的混合加密机制, 通过公开密钥加密方式来转交共享密钥, 然后在报文通信阶段使用共享密钥加密方式.
身份认证机制
所有使用HTTPS的服务器都必须到数字证书认证机构(Certificate Authority)申请数字证书, 证书包含服务器的公钥, 服务器域名, 证书发行机构, 数字签名等信息.
数字签名: 即CA使用自己的私钥对数字证书里的其他内容进行加密后得出的加密串
客户端认证服务器身份的过程:
报文完整性检查
SSL使用数据摘要算法(SHA的MAC算法)来检查报文的完整性. 数据摘要算法可以将任意长度的数据转换为固定长度的数据, 它是一种单向散列函数, 即不可能反向推导出原始数据.
报文完整性检查的过程:
读到这里我们脑海里会有一个疑问, 那就是如何安全的将服务器的共享密钥转交给客户端? HTTPS工作的完整流程就可以解答我们的疑问:
如果浏览器里的CA公钥被篡改, 那就无法保证整个过程的安全性了, 所以我们要去官网下载浏览器, 不要去下载那种未知的第三方浏览器.