在之前的文章中,我们讲了邮件加密协议S/MIME,今天我们来了解并一个可以用于邮件加密的技术——PGP加密。

什么是PGP加密?

PGP全称为Pretty Good Privacy,中文名叫做优良保密协议。是采用公开密钥加密与传统密钥加密相结合的一种加密技术,集消息加密、验证于一体。经常被用于加密电子邮件,不仅可为邮件加密,还可以对邮件实施数字签名,确保邮件没有被篡改。

PGP加密

PGP的功能特点

  • 对称密码

PGP支持用对称密码进行加密和解密。对称密码可以单独使用,也可以和公钥密码组合成混合密码系统使用。可以使用的对称密码算法包括AES、IDEA、CAST、三重DES、Blowfish、Twofish、Camellia等。分组密码模式使用的是CFB模式。

  • 公钥密码

PGP支持生成公钥密码的密钥对,以及用公钥密码进行加密和解密。实际上并不是使用公钥密码直接对明文进行加密,而是使用混合密码系统来进行加密操作。可以使用的公钥密码算法包括RSA和ElGamal等。

  • 数字签名

PGP支持数字签名的生成和验证,也可以将数字签名附加到文件中,或者从文件中分离出数字签名。可以使用的数字签名算法包括RSA、DSA、ECDSA(椭圆曲线DSA)、EdDSA(爱德华兹曲线 DSA)等。

数字签名

  • 单向散列函数

PGP可以用单向散列函数计算和显示消息的散列值。可以使用的单向散列函数算法包括MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 和RIPEMD-160等。

  • 证书

PGP 可以生成OpenPGP中规定格式的证书,以及与X.509规范兼容的证书。此外,还可以颁发公钥的作废证明,并可以使用CRL和OSCP对证书进行校验。

PGP加密

  • 钥匙串管理

PGP可以管理所生成的密钥对以及从外部获取的公钥,用于管理密钥的文件称为钥匙串(key ring)。

PGP加密过程

  1. 用伪随机数生成器生成会话密钥。
  2. 用公钥密码加密会话密钥。
  3. 压缩消息。
  4. 使用对称密码对压缩的消息进行加密,这里使用的密钥是步骤1中生成的会话密钥。
  5. 将加密的会话密钥(步骤2)与加密的消息(步骤4)拼合起来。
  6. 将步骤5的结果转换为文本数据,转换后的结果就是报文数据。
  7. 混合密码系统的特点:用公钥密码加密会话密钥,用对称密码加密消息。

PGP加密过程

PGP解密过程

  1. 接收者输入解密的口令。
  2. 求口令的散列值,生成用于解密私钥的密钥。
  3. 将钥匙串中经过加密的私钥进行解密,得到接收者的私钥。
  4. 将报文数据(文本数据)转换成二进制数据。
  5. 将二进制数据分解成两部分:加密的会话密钥、经过压缩和加密的消息。
  6. 用公钥密码解密会话密钥,这里使用步骤3中生成的接收者的私钥。
  7. 对步骤5中得到的经过压缩和加密的消息用对称密码进行解密,这里使用了步骤6中生成的会话密钥。
  8. 对步骤7中得到的经过压缩的消息进行解压缩。
  9. 得到原始消息。

PGP解密过程

值得注意的是,PGP所采用的一种确认公钥合法性的方法——信任网。而信任网的要点是 “不依赖认证机构,而是建立每个人之间的信任关系”。换言之,就是用户能够自己决定要信任哪些公钥。所以在使用PGP时,确认自己所得到的公钥是否真的属于正确的人(公钥合法性)是非常重要的。

免责声明:素材源于网络,如有侵权,请联系删稿。