加密技术之PGP与邮件加密

      PGP ── Pretty Good Privacy ,是一个基于 RSA 公钥加密体系的邮件加密软件,它提出了公共钥匙或不对称文件加密和数字签名。其创始人是美国的 Phil Zimmermann。他的创造性在于他把 RSA 公钥体系的方便和传统加密体系的高速结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计,因此 PGP 成为目前几乎最流行的公钥加密软件包。

     我们可以给 PGP 下一个简单的定义: PGP 是 RSA 和传统加密的杂合算法。那么为什么说 PGP 用的是 RSA 和传统加密的杂合算法呢?因为 RSA 算法计算量极大在速度上不适合加密大量数据,所以 PGP 实际上用来加密的不是 RSA 本身,而是采用了 IDEA 这种传统加密算法。

IDEA 的加(解)密速度比 RSA 快得多,所以实际上 PGP 是用一个随机生成密匙(每次加密不同)用 IDEA 算法对明文加密,然后用 RSA 算法对该密匙加密。这样收件人同样是用 RSA 解密出这个随机密匙,再用 IDEA 解密邮件本身。这样的链式加密就做到了既有 RSA 体系的保密性,又有 IDEA 算法的快捷性。

二、PGP 的主要特征

使用 PGP 对邮件加密,以防止非法阅读;

能给加密的邮件追加上数字签名,从而使收信人进一步确信邮件的发送者,而事先不 需要任何保密的渠道用来传递密钥;

可以实现只签名而不加密,适用于发表公开声明时证实声明人身份,也可防止声明人 抵赖,这一点在商业领域有很大的应用前景;

能够加密文件,包括图形文件、声音文件以及其它各类文件;

利用 PGP 代替 Uuencode 生成 RADIX 64 (就是 MIME 的 BASE 64 格式)的编码文件。

三、PGP 密钥体系管理

    PGP 密钥体系包含对称加密算法( IDEA )、非对称加密算法( RSA )、单向散列算法( MD5 )以及随机数产生器(从用户击键频率产生伪随机数序列的种子),每种算法都是 PGP 不可分割的组成部分

    公钥体制的提出,就是为了克服传统加密体系的密钥分配过程难以保密的缺点。而 PGP 采用公钥介绍机制不仅解决了公钥体制的缺点,而且对其加以发展。所谓公钥介绍机制,就是由一个大家普遍信任的人或机构担当介绍人,被称为“认证权威”,每个由他签字的公钥都被认为是真的,这样大家只要有一份他的公钥就行了。而认证这个人的公钥是很方便的,因为他广泛提供这个服务,因而他的公钥也广泛流传。现在公认的有效方法是通过密钥分配中心 KDC 来管理和分配公开密钥,这对商业的网络化提供了可靠的保障。

     当然,个人用户可以不需要进行机构认证,而通过私人方式进行密钥转介,这体现了人们交往的自然状态。

四、PGP 邮件加密的使用

我们就目前的 PGP 6.0.2i 版软件来看一看其对邮件的加密方法。 使用 PGP 6.0.2i 可以简洁而高效地实现邮件或者文件的加密、数字签名。当 PGP 6.0.2i 安装完成后,在任务栏中出现 PGP 所特有的小锁图标── PGP Trays 。点击左键,即可激活 PGPtools 。

PGP 6.0.2i 中使用 PgpKeys 管理密钥环( KeyRing ),密钥环文件保存所有与你相关的公开密钥,并对其进行维护和管理,如进行密钥的生成、传播或废除,以及数字签名、信任管理、资源查询等。如果机器与 Internet 相连,还可实现在线密钥认证以及在线密钥更新。

密钥的生成、传播和废除

每一个用户必须生成自己的密钥对,这是使用 PGP 加密的第一步,通常在安装过程中完成。在 PgpKeys 中也可生成新的密钥,即在菜单中选择“ Keys ”—“ New Key ”,弹出对话窗,提示用户填写用户名、电子信箱地址,然后要选择密钥长度,一般选择 2048bit 。之后是确定密钥生存周期:可以定制该密钥在一定天数后过期,默认值为 NEVER 。最后定义保护密钥的口令。生成密钥后,可以选择是否立即将新的公开密钥发送到 Internet 密钥服务器上,这样希望与你通信的用户可以直接到密钥服务器中下载你的密钥。通过密钥服务器可以实现密钥的上载与下载,还能方便地与他人交换公钥。若想废除时,只须选取 Revoke 即可。

数字签名

     如果希望发出的信件或者文件不被冒名或篡改,可以用你的私钥对邮件等签名。收件人可使用你的公钥验证签名。 PGP 6.0.2i 还可实现加密后签名,避免了老版本中签名文件的明文状态──只能保证不被篡改,不能加密传输的缺点。

加密与解密

下面我们以 gx.txt 为例,说明实现加密的具体过程。点击“ Encrypt ”后,出现选择所加密文件的对话框,选择 gx.txt 后,进一步选择加密后的输出格式,分别有以下 4 个选项:

Text Output

Conventional Encryption

Wipe Original

Secure Viewer

根据邮件及文件重要性的不同,可选择合适的输出格式。本例中,选择“ Conventional Encryption ”。接下来便是提示输入口令,得到确认之后,选择输出文件名 A ,然后一切 OK!

解密是加密的反过程。 PGP 6.0.2i 的解密过程同样简单,点击“ Decrypt/Verify ”,弹出文件选择对话框,选择所要解密的文件之后,输入加密时使用的密码,经过计算,再次选择输出文件名,解密就完成了。

五、其它

     在这里我提一下 PGP 的加密前预压缩处理,PGP 内核使用 PKZIP 算法来压缩加密前的明文。一方面对电子邮件而言,压缩后加密再经过 7bits 编码密文有可能比明文更短,这就节省了网络传输的时间。另一方面,明文经过压缩,实际上相当于经过一次变换,信息更加杂乱无章,对明文攻击的抵御能力更强。 PGP 中使用的 PKZIP 算法是经过原作者同意的。 PKZIP 算法是一个公认的压缩率和压缩速度都相当好的压缩算法。在 PGP 中使用的是 PKZIP 2.0 版本兼容的算法。

PGP 的密钥和口令的安全性问题

PGP 最可能的失密方式就是别人得到你的口令和你的私匙文件,那么整个加密体系就无密可言了。

另一个要注意的就是口令设置问题,口令设置不要太简单。 PGP 用的是“口令”( passphase ),而不是“密码”( password ),就是说可以在口令中包含多个词和空格。攻击者可能会用一本字典或者名言录来寻找你的口令,因此为了得到好记又难猜的口令,你可以创造句子或者找些非常生僻的文学篇章中的句子。口令的长度最好大于等于 8 个字符,同时也可夹杂英文字母的大小写和数字、符号等。一般说来,密钥长度每提高一位,就可以让攻击者多花费一倍的破解时间,因此从理论上而言,如果没有更新的计算技术出现,总是可以找到在给定时间内不能被破解的密钥的。

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页