科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道PGP软件及其应用

PGP软件及其应用

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

文章主要介绍了PGP软件,对其主要部分和原理进行了阐述,并给出了在电子邮件等方面的应用。

作者:郝保水 来源:北京信息工程学院 2008年10月16日

关键字: PGP 加密解密

  • 评论
  • 分享微博
  • 分享邮件

  1 引言

  电子邮件在人们的工作中占据着重要作用。据统计,中国平均每用户每周收到4.4封邮件,发送3.6封邮件。但是电子邮件的主要协议如SMTP等是明文传送的。这些信息在经过不可信的因特网时,有可能会被第三方获得。在重视信息安全的现代社会,显然这并符合要求。如何能将这些信息保密,同时不篡改、不伪造等?本文所介绍的PGP(Pretty Good Privacy)就是一种这样的软件,它主要应用于电子邮件和文件的加密解密。

  目前PGP获得了广泛的应用。但它本身并不是一种加密算法,相反只是将一些加密算法(如RSA、IDEA、AES等)综合在一起,实现了一个完整的安全软件包。

  PGP主要是由Philip R. Zimmermann开发的,于1991年在Internet上免费发布。他主要做了如下工作:选择比较好的算法,例如RSA、IDEA等作为加密算法的基础构件;将这些算法集成在一个便于用户使用的应用程序中;制作了软件包及其文档,且源代码免费公开,以避隐藏后门之嫌;和公司合作,提供商业版本等。现在用户可以从www.pgp.com下载PGP。目前最新版本是9.0。

  2 原理

  PGP结合了一些大部分人认为很安全的算法,包括传统的对称密钥加密算法和公开密钥算法,充分利用这两类加密算法的特性,实现了以下几种服务:鉴别、加密、压缩等。

  当发送者PGP加密一段明文时, PGP首先压缩明文,然后PGP建立一个一次性会话密钥,采用传统的对称加密算法(例如AES等)加密刚才压缩后的明文,产生密文。然后用接收者的公开密钥加密刚才的一次性会话密钥,随同密文一同传输给接收方。接收方首先用私有密钥解密,获得一次性会话密钥,最后用这个密钥解密密文。

  2.1 数字签名

  数字签名能够保证接收者接收的信息没有经过未授权的第三方篡改,并确信报文来自发信者。PGP使用如下步骤实现数字签名:

  2.1.1发送者创建报文,然后使用SHA-2等散列算法生成散列代码,然后使用自己的私有密钥采用RSA对散列代码加密,并将结果串接在报文前面。

  2.1.2接收者使用发送者的公开密钥,采用RSA解密得到散列代码,然后和根据接收到的报文重新计算的散列代码比较,如果匹配,则接受报文。

  目前,PGP使用的散列函数包括:SHA-2(256bit)、SHA-2(384bit)、SHA-2(512bit)、SHA-1(160bit)、RIPEMD(128bit)、MD-5(128bit)等。

  2.2 压

  压缩是为了减少网络传输时间和磁盘空间,提高安全性:压缩减少了明文中上下文相关信息。(当然如果文件太短或者压缩性能不好,则不压缩。)

  PGP在签名之后加密之前对报文进行压缩。它使用了有Jean-lup Gailly,Mark Adler,Richard Wales等编写的ZIP压缩算法。

  2.3 加

  PGP对每次会话的报文进行加密后传输,它采用的加密算法包括:AES-256、AES-192、AES-128、CAST、3DES、IDEA、Twofish等。例如使用AES密钥最长可达256bit,这已经足够安全了。

  这里需要指出,PGP结合了常规密钥加密和公开密钥加密算法,一是时间上的考虑,对称加密算法比公开密钥加密速度快大约10000倍;二是公开密钥解决了会话密钥分配问题,因为只有接收者才能用私有密钥解密一次性会话密钥。PGP巧妙的将常规密钥加密和公开密钥加密结合起来,从而使会话安全得到保证。

  2.4 密钥管理

  在PGP里面,最有特色的或许就是它的密钥管理。PGP包含四种密钥:一次性会话密钥、公开密钥、私有密钥和基于口令短语的常规密钥。

  用户使用PGP时,应该首先生成一个公开密钥/私有密钥对。其中公开密钥可以公开,而私有密钥绝对不能公开。PGP将公开密钥和私有密钥用两个文件存储,一个用来存储该用户的公开/私有密钥,称为私有密钥环;另一个用来存储其他用户的公开密钥,称为公开密钥环。

  为了确保只有该用户可以访问私有密钥环,PGP采用了比较简洁和有效的算法。当用户使用RSA生成一个新的公开/私有密钥对时,输入一个口令短语,然后使用散列算法(例如SHA-1)生成该口令的散列编码,将其作为密钥,采用CAST-128等常规加密算法对私有密钥加密,存储在私有密钥环中。当用户访问私有密钥时,必须提供相应的口令短语,然后PGP根据口令短语获得散列编码,将其作为密钥,对加密的私有密钥解密。通过这种方式,就保证了系统的安全性依赖于口令的安全性。

  下面介绍PGP的公开密钥管理。假设A想要获得B的公开密钥,可以采取几种方法,包括拷贝给A、通过电话验证公开密钥是否正确、从双方都信任的人C那里获得、从认证中心获得等。PGP并没有建立认证中心这样的概念,它采用信任机制。公开密钥环上的每个实体都有一个密钥合法性字段,用来标识信任程度。信任级别包括完全信任、少量信任、不可信任和不认识的信任等。当新来一个公开密钥时,根据上面附加的签名来计算信任值的权重和,确定信任程度。

  双方使用一次性会话密钥对每次会话内容进行加解密。这个密钥本身是基于用户鼠标和键盘击键时间而产生的随机数。注意,每次会话的密钥均不同。这个密钥经过RSA或Diffie-Hellman加密后和报文一起传送到对方。

  2.5 电子邮件

  用PGP软件加密后密文由任意的8bit字节流组成,但很多电子邮件系统只允许使用可打印ASCII字符,因此PGP利用radix-64将任意8bit字节流转换为可打印ASCII字符来满足这一限制。另外, PGP可以自动将太长的报文划分成合适的大小来满足网络设施的最大报文长度要求。

  报文由三个部分组成:报文部分、可选的数字签名和可选的会话密钥部分组成。

  下面给出发送者发送一封电子邮件的流程图,其中A是发送者,B是接收者,M是邮件内容。接收者的流程图类似,但操作步骤相反,篇幅所限,在此不再给出。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章