信息安全中有三个需要解决的问题:

  • 保密性(Confidentiality):信息在传输时不被泄露。
  • 完整性(Integrity):信息在传输时不被篡改。
  • 有效性(Availability):信息的使用者是合法的。

这三要素统称为CIA Triad。公钥密码解决保密性问题,数字签名解决完整性问题和有效性问题。

加密算法

对称加密

对称加密(Symmetric Cryptography): 加密、解密使用一个共同的密钥。常见算法: DES、AES。

非对称加密

非对称加密(Asymmetric Cryptography):成对的两个密钥(公钥,私钥),一个密钥所加密的内容只能由另一个密钥来解密。常见算法: RSA。

消息摘要、数字签名、数字证书

摘要

消息摘要(数字指纹):对消息进行散列函数处理,获得的唯一的散列值。

消息摘要特点为:

  1. 长度总是固定的;
  2. 相同的输入必会产生相同的输出;不同的信息,可能产生相同的输出;
  3. 单向不可逆。

消息摘要算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和 MAC(Message Authentication Code,消息认证码算法)

  1. MD 系列算法包括 MD2、MD4 和 MD5 共 3 种算法;
  2. SHA 算法主要包括其代表算法 SHA-1 和 SHA-1 算法的变种 SHA-2 系列算法(包含 SHA-224、SHA-256、SHA-384 和 SHA-512);
  3. MAC 算法综合了上述两种算法,主要包括 HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384 和 HmacSHA512 算法。

数字签名

数字签名(digital signature):私钥签名,公钥验证。用于证明消息未被篡改。数字签名附带和消息数据一起发送,可以起到防篡改、防伪装、防否认的作用。

一般不直接对消息进行签名,而是对消息的摘要(HASH)进行签名。一方面,数据可能比较大,签名是使用非对称加密算法,比较耗时。另一方面,防止第三方使用公钥解开签名后,拿到原始数据。

数字证书

数字证书(digital Certificate):认证机构(CA, Certification Authority)对通信方的公钥进行的数字签名。用于解决如何安全分发公钥的问题,也奠定了信任链的基础。常见的证书文件类型有:.crt、.cer、.csr、.key、.p12。

数字证书颁发过程

当用户私钥丢失、被盗时,认证机构需要对证书进行作废(revoke)。认证机构会制作证书作废清单(Certificate Revocation List),简称CRL。

加密通信演化

场景:Alice 和 Bob 进行通信,Eve 企图进行窃听。

明文传输

存在问题:信息窃听、信息篡改、伪装通信方。

对称加密

方法:Alice 和 Bob 使用相同的密钥对信息进行加解密。
解决问题:信息窃听、信息篡改。
存在问题:秘钥泄露。

非对称加密

方法:Alice 和 Bob 使用对方的公钥加密信息、使用各自的私钥解密信息。
解决问题:秘钥泄露。
存在问题:伪装通信方、秘钥交换风险(公钥被截获并篡改)

非对称加密 + 数字签名

方法:Alice 和 Bob 使用各自的私钥对消息进行签名,使用对方的公钥进行消息签名验证,确保信息来源。
解决问题:伪装通信方。
存在问题:公钥交换风险(公钥被截获并篡改)

非对称加密 + 数字签名 + 数字证书

方法:由 CA 对 Alice 和 Bob 的公钥进行数字签名,生成数字证书。Alice 和 Bob 拿到对方的数字证书后,通过 CA 的公钥进行证书签名校验,以确保获得真实的对方公钥。
解决问题:公钥安全分发

参考文档

https://cloud.tencent.com/developer/article/1584742
https://segmentfault.com/a/1190000024523772