一、PGP简介
1.什么是PGP
PGP是一款由个人编写的密码软件,PGP是为了保护处于极端状况下的人们的隐私而开发的,如果这些人的信息被窃听,那么可能是性命攸关的大事件。
2.关于OpenPGP
OpenPGP是对密文和数字签名格式进行定义的标准规格。
3.关于GNU Privacy Guard
GNU Privacy Guard ( GnuPG、GPG)是一款基于OpenPGP标准开发的密码学软件“,支持加密、数字签名、密钥管理、S/MIME、ssh等多种功能。GnuPG是基于GNU GPL协议发布的一款自由软件,因此任何人都可以自由使用它。
4.PGP的功能
(1)支持用对称密码加密和解密。
(2)支持生成公钥密码的密钥对,以及用公钥密码进行加密和解密。
(3)支持数字签名的生成和验证,也可以将数字签名附加到文件中,或者从文件中分离出数字签名。
(4)PGP可以用单向散列函数计算和显示消息的散列值。
(5)PGP可以生成OpenGPG中规定格式的证书,以及与X.509规范兼容的证书。除此之外,还可以颁发公钥的作废证明。
(6)PGP支持数据的压缩和解压缩,压缩采用ZIP、ZLIB、BZIPZ等格式。
(7)PGP可以将二进制数据和文本数据相互转换。
(8)在文件过大无法通过邮件发送的情况下,PGP可以将一个大文件拆分成多个文件,反过来也可以将多个文件拼合成一个文件。
(9)PGP可以管理所生成的密钥对以及从外部获取的公钥。用于管理密钥的文件称为钥匙串( key ring )。
二、加密和解密
1.加密
PGP的加密过程如下图所示,在这张图中,消息经过混合密码系统加密,然后转化为报文数据。
(1)用为随机数生成器生成会话密钥
(2)用公钥密码加密会话密钥,这里使用的是接收者的公钥
(3)压缩消息
(4)使用对称密码对压缩的消息加密,密钥为(1)中的会话密钥
(5)将加密后的会话密钥与加密后的消息合并
(6)将(5)中的结果转换为文本数据,转换后得到的就是报文数据
2.解密
(1)接收者输入解密的口令
(2)求口令的散列值,生成用于解密的密钥
(3)将私钥解密
(4)将报文数据转换成二进制数据
(5)将二进制数据分解成加密的会话密钥和经过压缩并加密的消息两部分
(6)用公钥密码解密会话密钥,私钥是(3)中生成的接收者的私钥
(7)使用(6)会话密钥将(5)中经过压缩并加密的消息解密
(8)将(7)中得到的经过压缩的消息解压缩
(9)得到原消息
三、生成和验证数字签名
1.生成数字签名
(1)发送者输入签名用的口令
(2)求口令的散列值,生成用于解密的密钥
(3)将私钥解密
(4)用单项散列函数计算消息的散列值
(5)对(4)中的散列值进行签名,相当于用(3)得到的私钥进行加密
(6)将(5)得到的数字签名和消息拼合
(7)将(6)的结果压缩
(8)将(7)的结果转换成文本数据
(9)步骤(8)中的结果就是报文数据
2.验证数字签名
(1)将报文数据转换成二进制数据
(2)对压缩过的数据解压缩
(3)将解压缩后的数据分解为经过签名的散列值和消息两部分
(4)将签名后的散列值用发送者的公钥加密,恢复发送者发出的散列值
(5)将(3)中分解出的消息输入单项散列函数计算出散列值
(6)将(4)中生成的散列值与(5)生成的散列值进行对比
(7)如果(6)的结果相等则数字签名验证成功,不想等则验证失败。
三、生成数字签名并加密以及解密并验证数字签名
1.生成数字签名并加密
2.解密并验证数字签名
四、信任网
之前我们介绍过是使用认证机构对公钥签名认证的方法来确保公钥的合法性,PGP中并没有用到认证机构,而是采用的一种信任网的方法。在这种方法中,PGP用户会互相对对方的公钥进行数字签名。
五、小测验
1.压缩和加密的顺序
从用PGP加密的过程图中可以看出,消息是先进行压缩再加密的,为什么一定要按照压缩→加密的顺序来处理呢?
我的回答:加密会导致比特序列的冗余性消失,而压缩就是消除冗余性,所以如果加密之后就没有压缩的必要了。
2.确认公钥合法性的手段
Alice有一个好朋友叫EIma,两人经常煲电话粥。有一天,她收到了一封来自Elma的邮件,里面说“这是我的公钥",并附带了一个公钥。
Alice考虑到这封邮件可能经过了主动攻击者Mallory 的篡改,于是她打算给Elma打电话以便确认自己所收到的公钥是否来自EIma本人。 可是,由于收到的公钥文件太大,不可能一个字节一个字节地通过电话来口头确认,这可怎么办呢?
我的回答:不需要读出公钥的内容本身,只需要将公钥输入单向散列函数,通过电话对比散列值就可以了。
3.大量的数字签名
Alice收到了来自Jerry 的公钥,这个公钥上带有10个合法的数字签名,Alice能判断这个公钥是合法的吗?
我的回答:不能。公钥的合法性的确可以通过数字签名来保证,可是数字签名的合法性也是需要确认的,必须确认对此公钥进行签名的是否是Alice的信任机构才可以确认公钥的合法性。
4.基础知识
下列说法中,请在正确的旁边画○,错误的旁边画×。
(1) PGP中是先对数据进行压缩,然后再进行加密的。
(2) PGP的用户使用http://www.pgp.com/上设立的认证机构。
(3) 使用PGP可以生成自己的公钥密钥对。
(4) 在用PGP进行加密时,不使用对称密码算法,而是使用公钥密码算法。
(5) 在用PGP验证数字签名时,需要输入口令。
(6) 在用PGP生成数字签名并加密时,需要输入发送者的口令。
我的回答:(1)○;(2)×;(3)○;(4)×;(5)×;(6)○;
(2)PGP中使用的是信任网而不是认证机构。
(3)PGP使用的是混合密码系统,所以既要使用对称密码算法,也要使用公钥密码算法,使用公钥密钥算法对会话秘钥加密,使用对称密码算法对消息加密。
(5) 在用PGP验证数字签名时,不需要输入口令,使用PGP解密的时候需要输入口令。
版权归原作者 Unicorn_snow 所有, 如有侵权,请联系我们删除。