TLS (Transport Layer Security) 是一种安全传输协议,用于保护网络通信的安全性和隐私性。
TLS 由记录协议、握手协议、警告协议、变更密码规范协议、扩展协议等几个子协议组成,综合使用了对称加密、非对称加密、身份认证等许多密码学前沿技术。

对称加密

对称加密算法使用相同的密钥进行加密和解密,加密和解密速度快,适合大数据量的加密。常见的对称加密算法有DES、3DES、AES等。

加密分组模式

可以让算法用固定长度的密钥加密任意长度的明文

非对称加密

有两个密钥,一个叫公钥(public key),一个叫私钥(private key)两个密钥是不同的(不对称),公钥可以公开给任何人使用,而私钥必须严格保密。公钥和私钥有个特别的 单向 性,虽然都可以用来加密解密,但公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密
非对称加密可以解决密钥交换的问题。网站秘密保管私钥,在网上任意分发公钥,你想要登录网站只要用公钥加密就行了,密文只能由私钥持有者才能解密。而黑客因为没有私钥,所以就无法破解密文。

数字签名

数字签名是一种类似于手写签名的数据完整性保护技术。数字签名是用于验证数据完整性和真实性的一种技术,它是一种数字加密技术,是公钥密码体制的应用。数字签名是将数据的摘要信息用发送者的私钥加密,然后将加密后的摘要信息附在数据后面,一起传送给接收者。接收者收到数据后,用发送者的公钥解密摘要信息,然后用相同的摘要算法对数据进行摘要运算,最后比较两个摘要信息是否一致,以验证数据的完整性和真实性。

数字证书

数字证书是一种由第三方权威机构颁发的电子证明,用于证明某个公钥的真实性。数字证书包含了公钥、证书持有者的信息、证书颁发者的信息、证书有效期等信息。数字证书的作用是验证公钥的真实性,防止公钥被篡改。

CA (Certificate Authority)

CA 是数字证书的颁发机构,负责验证证书持有者的身份,签发数字证书。CA 通过数字签名的方式保证证书的真实性和完整性。知名的 CA 全世界就那么几家,比如 DigiCert、VeriSign、Entrust、Let’s Encrypt 等,它们签发的证书分 DV、OV、EV 三种,区别在于可信程度。

  • DV 是最低的,只是域名级别的可信,背后是谁不知道。
  • EV 是最高的,经过了法律和审计的严格核查,可以证明网站拥有者的身份(在浏览器地址栏会显示出公司的名字,例如 Apple、GitHub 的网站)。CA怎么证明自己呢? 小一点的 CA 可以让大 CA 签名认证 ,但链条的最后,也就是 Root CA ,就只能自己证明自己了,这个就叫 自签名证书(Self-Signed Certificate)或者 根证书(Root Certificate)。你必须相信,否则整个证书信任链就走不下去了。
    有了这个证书体系,操作系统和浏览器都内置了各大 CA 的根证书 ,上网的时候只要服务器发过来它的证书,就可以验证证书里的签名,顺着证书链(Certificate Chain)一层层地验证,直到找到根证书,就能够确定证书是可信的,从而里面的公钥也是可信的。

证书体系的弱点

如果 CA 失误或者被欺骗,签发了错误的证书,虽然证书是真的,可它代表的网站却是假的。
对于这种情况,开发出了 CRL(证书吊销列表,Certificate revocation list) 和 OCSP(在线证书状态协议,Online Certificate Status Protocol) ,及时废止有问题的证书。
如果CA 被黑客攻陷,或者 CA 有恶意,因为它(即根证书)是信任的源头,整个信任链里的所有证书也就都不可信了
对于这种情况,因为涉及的证书太多,就只能操作系统或者浏览器从根上下狠手了,撤销对 CA 的信任,列入黑名单,这样它颁发的所有证书就都会被认为是不安全的。