《图解密码技术》笔记13:PGP-密码技术的完美组合

目录

13.2 PGP简介

13.2.1 什么是PGP

关于GNU Privacy Guard

13.2.2 PGP的功能

13.4  加密与解密

13.4.1 加密

13.4.2 解密

13.5  生成和验证数字签名

13.5.1 生成数字签名

13.5.2 验证数字签名

13.6 信任网


13.2 PGP简介

13.2.1 什么是PGP

PGP是于1990年左右由菲利普·季默曼个人编写的密码软件,现在依然在世界上被广泛使用。PGP这个名字是Pretty Good Privacy的缩写。

PGP可以在Windows、MacOS、Linux等很多平台上运行,版本包括商用版本和免费版。此外,还有一个由GNU遵照OpenPGP规范编写的叫作GnuPG(GNU Privacy Guard)的自由软件。

OpenPGP规范是对密文和数字签名进行定义的标准规范(RFC1991、RFC2440、RFC4880、RFC5581、RFC6637)。

关于GNU Privacy Guard

GNU Privacy Guard(GnuPG、GPG)是一款基于OpenPGP标准开发的密码学软件,支持加密、数字签名、密钥管理、S/MIME、ssh等多种功能。

GnuPG是基于GNU GPL协议发布的一款自由软件,因此任何人都可以自由使用它。GnuPG本身是一款命令行工具,但它也经常被集成到其他应用软件中。

GnuPG分为stable、modern和classic三个系列。

13.2.2 PGP的功能

PGP具备现代密码软件所必需的几乎全部功能。

  • 对称密码
  • 公钥密码
  • 数字签名
  • 单向散列函数
  • 证书
  • 压缩
  • 文本数据
  • 大文件的拆分和拼合
  • 密钥串管理

13.4  加密与解密

13.4.1 加密

这里的加密过程跟第6章的混合密码系统的结构基本一致,差异在于这里还包括了消息的压缩以及二进制→文本转换(转换为ASCII radix-64格式)这两个步骤。

生成和加密会话密钥
(1)用伪随机数生成器生成会话密钥
(2)用公钥密码加密会话密钥,这里使用的密钥接收者的公钥

压缩和加密消息
(3)压缩消息。
(4)使用对称密码压缩的消息进行加密,这里使用的密钥是步骤(1)中生成的会话密钥
(5)将加密的会话密钥(步骤(2))与加密的消息(步骤(4))拼合起来。
(6)将步骤(5)的结果转换为文本数据,转换后的结果就是报文数据。

用公钥密码加密会话密钥,用对称密码加密消息就是混合密码系统的特点。

13.4.2 解密


解密私钥
PGP的私钥是保存在用户的钥匙串中的。为了防止钥匙串被盗,私钥都是以加密状态保存的,并在保存时使用了基于口令的密码(PBE)

解密私钥的步骤如下:
(1)接收者输入解密的口令
(2)求口令的散列值,生成用于解密私钥的密钥
(3)将密钥串中经过加密的私钥进行解密。

解密会话密钥
(4)将报文数据(文本数据)转换成二进制数据。
(5)将二进制数据分解成两部分:加密的会话密钥经过压缩和加密的消息
(6)用公钥密码解密会话密钥,这里使用步骤(3)中生成的接收者的私钥。

解密和解压缩消息
(7)对步骤(5)中得到的经过压缩和加密的消息用对称密码进行解密。这里使用步骤(6)中生成的会话密钥
(8)对步骤(7)中得到的经过压缩的消息进行解压缩。
(9)得到原始消息。

13.5  生成和验证数字签名

13.5.1 生成数字签名


解密私钥
在钥匙串中,私钥是通过口令进行加密保存的,因此不知道口令的人就无法使用相应的私钥。
(1)发送者输入签名用的口令
(2)求口令的散列值,生成用于解密私钥的密钥
(3)将钥匙串中经过加密的私钥进行解密。

生成数字签名
(4)用单向散列函数计算消息的散列值
(5)对步骤(4)中得到的散列值进行签名。这一步相当于使用步骤(3)中得到的私钥进行加密。
(6)将步骤(5)中生成的数字签名消息进行拼合。
(7)将步骤(6)的结果进行压缩
(8)将步骤(7)的结果转换为文本数据
(9)步骤(8)的结果就是报文数据。

13.5.2 验证数字签名


恢复发送者发送的散列值
(1)将报文数据(文本数据)转换为二进制数据
(2)对经过压缩的数据进行解压缩
(3)将解压后的数据分解成经过签名的散列值消息两部分。
(4)将经过签名的散列值(经过加密的散列值)用发送者的公钥进行解密,恢复出发送者发送的散列值

对比散列值
(5)将步骤(3)中分解出的消息输入单向散列函数计算散列值。
(6)将步骤(4)中得到的散列值与步骤(5)中得到的散列值进行对比。
(7)如果步骤(6)的结果相等则数字签名验证成功,不相等则验证失败。这就是数字签名的验证结果。
(8)步骤(3)中分解出的消息就是发送者发送的消息。

13.6 信任网

在使用PGP时,确认自己所得到的公钥是否真的属于正确的人(公钥合法性)是非常重要的,因为公钥可能会通过中间人攻击被替换。

第10章中介绍的证书就是确认公钥合法性的方法之一。证书就是由认证机构对公钥施加的数字签名,通过验证这个数字签名就可以确认公钥合法性。

然而,PGP中却没有使用认证机构,而是采用了一种叫做信任网(web of trust)的方法。在这种方法中,PGP用户会互相对对方的公钥进行数字签名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值