OpenPGP:加密、签名与安全攻防
1. OpenPGP基础概述
OpenPGP是一种广泛应用于加密消息和文件的标准,它基于混合加密技术,结合了对称加密和非对称加密的优势。在加密过程中,OpenPGP库会随机选择一个对称消息密钥 ( k ),使用该密钥对消息或文件进行对称加密,生成对称加密(完整性保护)数据包。同时,所选的密钥 ( k ) 会使用PGP公钥加密子密钥进行加密,形成公钥加密会话密钥数据包。对于发送给 ( n ) 个收件人的电子邮件消息,消息密钥 ( k ) 会使用 ( n + 1 ) 个不同的子密钥进行加密,分别为发送者和每个收件人各加密一次。
PGP还可用于对文本文件和二进制文件进行数字签名。对于文本文件,在签名之前会应用简单的规范化算法,以补偿不同操作系统中文件表示的差异,例如将行结束字符规范化为 <CR><LF> 。对于二进制文件,OpenPGP假设这些文件在所有操作系统中的表示不变。
2. OpenPGP标准与数据包
OpenPGP标准RFC 4880描述了所有PGP消息的结构,基于此规范可以开发互操作的PGP应用程序。RFC 4880及其前身标准RFC 1991和RFC 2440都基于PGP 5.0版本。
PGP消息由PGP数据包组成,每个数据包采用标签 - 长度 - 值(TLV)编码。标签指定数据包的类型,长度定义数据包的长度,值包含数据。标签和长度字段具有固定长度。OpenPGP定义了多种类型的数据包,如下表所示:
| 数据包类型 | 标签 |
| — | — |
| 公钥加密会话密钥数据包 | 1 |
| 签名数
超级会员免费看
订阅专栏 解锁全文

2364

被折叠的 条评论
为什么被折叠?



