姐妹篇

简单了解对称和非对称加密

单向散列函数

数字签名

CA数字证书

HTTPS

HTTP 有以下安全性问题:

  • 使用明文进行通信, 内容可能会被窃听
  • 不验证通信方的身份,通信方的身份可能会被伪装
  • 无法证明报文的完整性,报文可能会被篡改

HTTPS不是新的协议,而是让HTTP先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP通信,也就是HTTPS使用了隧道进行传输。

通过使用SSL, HTTP有了加密(防窃听), 认证(防伪装),和**完整性保护(防篡改)**的能力。

68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f73736c2d6f66666c6f6164696e672e6a7067

加密

有关对称/非对称加密,这里是简单介绍, 另有一片文章详细介绍,具体可见简单了解对称和非对称加密

对称密钥加密

  • 对称密钥加密(Symmetric-Key Encryption), 加密和解密使用同一密钥。

    • 优点 : 运算速度快
    • 确定 : 无法解决密钥配送问题(密钥传输过程中,可能会被窃取)

    image-20200608162746262

非对称密码加密

  • 非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。

  • 公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。

  • 非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。

    • 优点:可以更安全地将公开密钥传输给通信发送方;
    • 缺点:运算速度慢。

    image-20200608163131209

3. HTTPS 采用的加密方式

上面提到对称密钥加密方式的传输效率更高,但是无法安全地将密钥 Secret Key 传输给通信方。而非对称密钥加密方式可以保证传输的安全性,因此我们可以利用非对称密钥加密方式将 Secret Key 传输给通信方。HTTPS 采用混合的加密机制,正是利用了上面提到的方案:

  • 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性;
  • 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key)

68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f486f772d48545450532d576f726b732e706e67

认证

通过使用 证书 来对通信方进行认证。

数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。

服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。

进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

屏幕快照 2020-06-08 下午4.36.08

完整性保护

SSL 提供报文摘要功能来进行完整性保护。

HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。

HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。

HTTPS 的缺点

  • 因为需要进行加密解密等过程,因此速度会更慢;
  • 需要支付证书授权的高额费用。