我们知道PGP(Pretty Good Privacy)是目前最流行的一种加密软件,它是一个基于RSA公钥加密体系的邮件加密软件。我们可以用它对邮件保密以防止非授权者阅读,它还能对用户的邮件加上数字签名,从而使收信人可以确信发信人的身份。它让用户可以安全地和从未见过的人们通信,事先并不需要任何保密措施的来传递密钥,因为它采用了非对称的“公钥”和“私钥”加密体系。

我们知道采用“公钥”和“私钥”加密体系最大的安全性问题就是公开的“公钥”可能被人篡改,影响文件的解密,虽然PGP也采用这一加密体系,并且所有“公钥”和“私钥”都可以由用户自己产生,不需要专门的认证机构,但它却有一个比较完善的密钥管理体制,所以它的另一半优点就体现在PGP独特的密钥管理体制上。

下面我们就从PGP加密机制和密钥管理的角度来分析PGP加密的优越性。

1.PGP的加密机制。

在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分。邮件的安全问题也就突出了,大家都知道在互联网上传输的数据是不加密的。如果用户不保护自己的信息,第三者就会轻易获得用户的隐私。还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,就需要使用数字签名技术。

RSA公钥体系的特点使它非常适合用来满足上述两个要求:保密性(privacy)和公证性(authentication)。RSA(Rivest-Shamir-Adleman)算法是基于大数不可能被质因数分解假设的公钥体系。简单地说就是找两个很大的质数。一个对外公开,一个不告诉任何人。公开的一个称为“公钥”,另一个叫“私钥”(Public key & Secret key or Private key)。这两个密钥是互补的,也就是说用公钥加密的密文只可以用私钥解密,反过来也一样。

RSA算法简介:

(1)随机取两个独立大素数p与q(保密);

(2)计算:n = p * q (公开n)

Φ(n) = ( p - 1 ) *( q – 1) (保密);

(3)随机选取一整数e,1≤e≤Ф(n),满足gcd(e,Ф(n))=1(公开e);

(4)计算d,满足d * e ≡ 1(mod Ф(n)) (保密d)

利用RSA加密第一步需要将明文数字化,并对长度小于㏒2 n的数字作为明文块M;

加密算法C ≡ E(M)≡ M 的e次幂(mod n)

解幂算法M ≡ D(C)≡ C 的d次幂(mod n)

以上RSA系统记为RSA(n,e),其中P为加密公钥;S为解密公钥。假设甲要寄信给乙,他们互相知道对方的公钥。甲就用乙的公钥加密邮件寄出,乙收到后就可以用自己的私钥解密出甲的原文。由于别人不知道乙的私钥,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面,由于每个人都知道乙的公钥,他们都可以给乙发信,那么乙怎么确信来信是不是甲的,这就是数字签名的必要性,用数字签名来确认发信的身份。

PGP给邮件加密和签名的过程是这样的:首先甲用自己的私钥将上述的128位值加密,附加在邮件后,再用乙的公钥将整个邮件加密(要注意这里的次序,如果先加密再签名的话,别人可以将签名去掉后签上自己的签名,从而篡改了签名)。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的特征值来和用甲的公钥解密签名所得到的数进行比较,如果符合就说明这份邮件确实是甲寄来的。这样两个安全性要求都得到了满足。

2.PGP的密钥管理。

一个成熟的加密体系必然要有一个成熟的密钥管理机制配套。公钥体制的提出就是为了解决传统加密体系的密钥分配过程保密的缺点。比如网络黑客们常用的手段之一就是"监听",如果密钥是通过网络传送就太危险了。对PGP来说公钥本来就要公开,就没有防监听的问题。但公钥的发布中仍然存在安全性问题,例如公钥被篡改(public key tampering),这可能是公钥密码体系中最大漏洞。用户必须确信用户的公钥属于需要收信的那个人。

PGP发展了一种公钥介绍机制来解决这个问题,其思路是这样的:如果用户A和用户B有一个共同的朋友D,而D知道他手中的B的公钥是正确的。这样D就成为用户A和B之间的公证人,用户B为了防止别人篡改自己的公钥,就把经过D签名的自己的公钥上载到BBS上让用户去拿,用户A想要取得用户B的公钥就必需先获取D的公钥来解密BBS或网上经过D签名的B的公钥,这样就等于加了双重保险,一般没有可能去篡改它而不被用户发现,即使是BBS的管理员。这就是从公共渠道传递公钥的安全手段。

也许还有人会问:如何安全地得到D或其他签名朋友的公钥呢。确实有可能用户A拿到的D或其他签名的朋友的公钥也是假的,但这就求这个用户C必须对你们三人甚至很多人都很熟悉,这样的可能性不大,而且必需经过长时间的策划。当然,PGP对这种可能也提出了预防的建议,那就是由一个大家普遍信任的机构担当这个角色,他被称为认证权威机构,每个由他签过字的公钥都被认为真的,这样大家只要有他的公钥就行了,认证这个人的公钥是方便的,因他广泛提供这个服务,假冒他的公钥是极困难的,因为他的公钥流传广泛。这样的"权威机构"适合由非个人控制组织或政府机构充当,现在已经有等级认证制度的机构存在,如广东省电子商务电子认证中心(www.cnca.net)就是一个权威的认证机构。

本文介绍了电子商务中的信息加密技术和认证技术,具体分析了PGP加密技术。它将多种加密算法结合在一起,构成一个混合加密算法。通过对GnuPG的实践使用,使人们了解并解决如何建立密钥、发布密钥以及选择密钥信任度等问题。

随着Internet技术的成熟发展, 将会有更先进的安全保密协议和技术被采用, 从而保证网上交易能安全高效的进行, 电子商务也将以其特有的魅力为日益增多的网民服务。

知识点:

PGP加密系统是采用公开密钥加密与传统密钥加密相结合的一种加密技术。它使用一对数学上相关的钥匙,其中一个(公钥)用来加密信息,另一个(私钥)用来解密信息。PGP采用的传统加密技术部分所使用的密钥称为“会话密钥”(sek)。每次使用时,PGP都随机产生一个128位的IDEA会话密钥,用来加密报文。公开密钥加密技术中的公钥和私钥则用来加密会话密钥,并通过它间接地保护报文内容。