{
"title": "PGP工作原理详解",
"tags": [
"post",
"PGP"
],
"sources": [
"xlog"
],
"external_urls": [
"https://x.oii.im/how-pgp-works"
],
"date_published": "2023-03-25T12:50:13.988Z",
"content": "前言\n-----\n\n最近在浏览[博客](https://www.stephendiehl.com/blog/disconnect.html)的时候发现博主的PGP Key页面,虽然之前知道是用于邮件通信加密的,但是具体原理及使用却不太清楚,所以找了时间查阅了相关资料,整理一下PGP加密的一些内容。\n\nPGP定义\n--\n\nPretty Good Privacy(PGP)是一个[加密程序](https://en.wikipedia.org/wiki/Encryption_software),为[数据通信](https://en.wikipedia.org/wiki/Data_communication)提供[加密](https://en.wikipedia.org/wiki/Cryptographic)[隐私](https://en.wikipedia.org/wiki/Privacy)和[身份验证](https://en.wikipedia.org/wiki/Authentication)。PGP 用于对文本、电子邮件、文件、目录和整个磁盘分区进行签名、加密和解密,并提高电子邮件通信的安全性。PGP加密使用[散列](https://en.wikipedia.org/wiki/Cryptographic_hash_function),[数据压缩](https://en.wikipedia.org/wiki/Data_compression),[对称密钥加密](https://en.wikipedia.org/wiki/Symmetric-key_cryptography),最后是[公钥加密](https://en.wikipedia.org/wiki/Public-key_cryptography)的串行组合。其中最关键的是两种形式的加密的组合:对称密钥加密(Symmetric Cryptography)和非对称密钥加密(Asymmetric cryptography)。\n\nPGP工作原理\n----\n\n在实现PGP加密的过程中,首先使用对称密钥加密算法对原始数据进行加密。对称密钥加密算法包括DES、AES、Blowfish等,这些算法能够快速地加密和解密数据,但是需要发送方和接收方之间共享密钥。\n\n为了避免在网络上传输密钥,PGP使用了公钥加密算法。公钥加密算法是一种使用不同的密钥加密和解密的算法,其中公钥用于加密,而私钥用于解密。公钥加密算法包括RSA、DSA等,这些算法具有极高的安全性,但是加密和解密速度比对称密钥加密算法慢得多。\n\nPGP将对称密钥加密,并使用接收方的公钥进行加密。这种方式可以保证密钥的安全性,同时可以确保只有接收方可以解密对称密钥,从而保护了数据的机密性。接收方使用自己的私钥对加密的对称密钥进行解密,然后使用对称密钥对数据进行解密。这种方式既可以保护数据的安全性,也可以提高加解密的速度。\n\n![PGP工作原理示意](https://cdn.staticaly.com/gh/baddate/pichost@master/blog/PGP-diagram.3j9g4tes6dts.webp \"PGP工作原理\")\n\nPGP 使用两种类型的加密算法来保护数据:对称密钥加密和公钥加密。对称密钥加密是一种使用相同密钥加密和解密的算法,因此在加密和解密之间需要共享密钥。而公钥加密则是一种使用不同的密钥加密和解密的算法,其中公钥用于加密,而私钥用于解密。下面我将简单介绍一下这两种算法的工作原理。\n\n### 对称密钥加密\n\n对称密钥加密是一种使用相同密钥加密和解密的算法,因此在加密和解密之间需要共享密钥。对称密钥加密的过程如下:\n\n1. 发送方选择一个加密密钥,并使用它将原始数据加密。\n2. 加密后的数据被发送到接收方。\n3. 接收方使用相同的密钥将加密的数据解密。\n\n尽管对称密钥加密非常高效,但它有一个明显的缺点,即需要在发送方和接收方之间共享密钥。如果这个密钥被黑客或其他人获取,数据将无法得到保护。为了解决这个问题,PGP 使用了另一种加密算法:公钥加密。\n\n### 公钥加密\n\n公钥加密是一种使用不同的密钥加密和解密的算法,其中公钥用于加密,而私钥用于解密。公钥加密的过程如下:\n\n1. 发送方获取接收方的公钥,并使用它将对称密钥加密。\n2. 加密后的对称密钥和加密后的数据被发送到接收方。\n3. 接收方使用自己的私钥将加密的对称密钥解密。\n4. 接收方使用解密后的对称密钥将加密的数据解密。\n\n公钥加密允许发送方使用接收方的公钥加密数据,而无需共享对称密钥。这样,即使黑客获得了加密后的数据,也无法使用它,因为他们没有接收方的私钥来解密对称密钥。\n\n### PGP示例\n\n我用常用的加密电子邮件来举个例子,具体的工作流程是:\n\n用户A要给用户B发送邮件。\n\n1. 用户B生成一对密钥(公钥和私钥),将公钥发送给用户A。\n2. PGP软件使用算法生成一个随机的会话密钥,这个密钥是一个很大的数字,而且只使用一次。\n3. 用户A用刚刚生成的密钥,加密邮件,并使用用户B的公钥对该密钥进行加密。\n4. 最后,用户A将加密的邮件及密钥发送给用户B,用户B使用自己的私钥进行解密,得到会话密钥,进而可以解密完整的邮件。\n\nPGP加密用途\n-------\n\nPGP有三个主要用途:\n\n* **发送和接收加密电子邮件。**\n* 验证向您发送此消息的人员的身份,即**数字签名验证**。\n* 加密数据。\n\n其中,发送安全电子邮件 - 是迄今为止PGP的主要应用。数字签名是一种基于公钥加密的技术,用于证明信息的发送者身份和信息完整性,以及防止信息被篡改。发送方使用自己的私钥对消息的摘要进行加密,生成数字签名。接收方使用发送方的公钥对数字签名进行解密,并生成消息的摘要,比对两个摘要是否一致,来验证消息的完整性和身份。如果数字签名验证失败,则说明消息可能被篡改或者来自伪造的发送方。\n\n总结\n-----\n\nPGP使用对称密钥加密算法保护数据机密性,使用公钥加密算法保护对称密钥的安全性,使用数字签名技术验证消息的完整性和身份。这种结合了对称密钥和公钥加密的方法,可以在安全性和效率之间取得平衡。PGP已经成为一种被广泛应用的数据加密和数字签名的标准,保护了用户的隐私和安全。\n\n参考\n-------\n\n[Pretty Good Privacy - Wikipedia](https://en.wikipedia.org/wiki/Pretty_Good_Privacy)\n\n[What is PGP Encryption and How Does It Work? | Varonis](https://www.varonis.com/blog/pgp-encryption/)\n\n[Public Key Cryptography Simply Explained | Hacker Noon](https://hackernoon.com/public-key-cryptography-simply-explained-e932e3093046)\n\n---\n欢迎访问我的个人博客:[方寸之间](https://sanmoji.xyz/)",
"attributes": [
{
"value": "how-pgp-works",
"trait_type": "xlog_slug"
}
]
}