当前位置:Linux教程 - Linux - 邮件加密两把锁:PGP和S/MIME

邮件加密两把锁:PGP和S/MIME

邮件加密两把锁:PGP和S/MIME
目前互联网上应用最多的服务是电子邮件,保证电子邮件的安全常用到两种端到端的安全技术:PGP(Pretty Good Privacy)和S/MIME(Secure Multi-Part Intermail Mail Extension)。它们的主要功能就是身份的认证和传输数据的加密。


你的电子邮件不安全


我们知道,电子邮件在传输中使用的是SMTP协议,它不提供加密服务,攻击者可在邮件传输中截获数据。其中的文本格式、非文本格式的二进制数据(如:.exe文件)都可轻松地还原。你经常收到,好像是你的好友发来的邮件,但可能这是一封冒充的、带着病毒或其他让你被欺骗的邮件。还有,电子邮件误发给陌生人或不希望发给的人,也是电子邮件的不加密性客观带来的信息泄露。安全电子邮件能解决邮件的加密传输问题,验证发送者的身份验证问题,错发用户的收件无效问题(因为需要用密钥解密)。但是,安全电子邮件不能解决如邮件炸弹、防御病毒在邮件中的传播、邮件服务器的入侵等问题。


PGP和S/MIME邮件加密专用协议


PGP和S/MIME这两种协议对一般用户来说,在使用上几乎没有什么差别。但是事实上它们是完全不同的,主要体现在格式上,这就有点像GIF和JPEG两种图形文件,对用户来说,查看图片是没有区别,但它们是两种完全不一样的文件。这也就意味着,由于格式的不同,一个使用PGP的用户不能与另一个使用S/MIME的用户通讯,且他们也不能共享证书。


PGP/MIME 和OpenPGP


PGP最早出现在1990年,是一种长期在学术圈和技术圈内得到广泛使用的安全邮件标准。其特点是通过单向散列算法对邮件内容进行签名,保证信件内容无法修改,使用公钥和私钥技术保证邮件内容保密且不可否认。发信人与收信人的公钥发布在公开的地方,如FTP站点。公钥本身的权威性由第三方,特别是收信人所熟悉或信任的第三方进行签名认证,但它没有统一的集中的机构进行公钥/私钥的签发。即在PGP系统中,更多的信任是来自于通信的双方。


s/mime v3和openpgp的对比
主要特征 s/mime v3 openpgp
信息通信的格式 基于cms的二进制格式 基于早期 pgp的二进制格式
身份认证的格式 基于 x.509v3的二进制格式 基于早期 pgp的二进制格式
机密算法 tripledes(des ede3 cbc) tripledes(des ede3 eccentric cfb)
数字签名 diffie-hellman(x9.42) with dss elgamal with dss
哈希算法 sha-1 sha-1



PGP/MIME和OpenPGP都是基于PGP的,已经得到许多重要的邮箱提供商支持,PGP的通信和认证的格式是随机生成的、使用简单的二进制代码。PGP的主要提供商是美国NAI的子公司PGP,在中国,由于PGP的加密超过128位,受到美国出口限制,所以商用的比较少。


S/MIME


S/MIME是一个新协议,最初版本来源于私有的商业社团RSA 数据安全公司。S/MIME V2版本已经广泛地使用在安全电子邮件上。 但是它并不是IETF 的标准。 因为它需要使用 RSA 的密钥交换,这就受限于美国RSA数据安全公司的专利(不过,2001年12月该专利到期)。

S/MIME是从PEM (Privacy Enhanced Mail)和MIME(Internet邮件的附件标准)发展而来的。 同PGP一样,S/MIME也利用单向散列算法和公钥与私钥的加密体系。但它与PGP主要有两点不同:它的认证机制依赖于层次结构的证书认证机构,所有下一级的组织和个人的证书由上一级的组织负责认证,而最上一级的组织(根证书)之间相互认证,整个信任关系基本是树状的,这就是所谓的Tree of Trust。还有,S/MIME将信件内容加密签名后作为特殊的附件传送,它的证书格式采用X.509,但与一般浏览器网上使用的SSL证书有一定差异。

国内众多的认证机构基本都提供一种叫“安全电子邮件证书”的服务,其技术对应的就是S/MIME技术,平台使用的基本上是美国Versign的。主要提供商有北京的天威诚信(www.itrus.com.cn)和TrustAsia上海(www.trustasia.com.cn),它们一个是Versign的中国区合作伙伴,一个是Versign亚太区分支机构。


如何保证邮件安全


加密与解密

找两个很大的质数,一把公开,称为“公钥”,另一把保密,叫“私钥”。这两把密匙是互补的,就是说用公钥加密的密文可以用私钥解密,反之亦然。假设甲要寄信给乙,他们互相知道对方的公钥。甲就用乙的公钥加密邮件寄出,乙收到后就可以用自己的私钥解密出甲的原文。由于只有乙知道他的私钥,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。

数字签名

上面例子中,由于每个人都知道乙的公钥,他们都可以给乙发信,而乙无法确信是不是甲的来信。这就需要数字签名来进行认证。





图中为安全电子邮件的逻辑图,发送者使用自己的证书对邮件进行数字签名,同时将自己的证书传给接收者。对加密邮件来说,发送者需要使用接收者证书中的公钥对邮件进行加密,对无证书的接收者,则不能加密。

了解数字签名首先要了解“邮件文摘”(messagedigest)。简单地讲,“邮件文摘”就是对一封邮件用某种算法算出一个能体现这封邮件的“精华”数来,一旦邮件有任何改变,这个数都会变化,这个数加上作者的名字(实际上在作者的密钥里)和日期等等,就可以作为一个签名了。

甲用自己的私钥将上述的“精华”加密,附在邮件上,再用乙的公钥将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和签名,乙自身的验证系统也从原文计算出一个“精华”来,再用甲的公钥解密签名得到的数进行比较,如果符合就说明这份邮件确实是甲寄来的。这一点在商业领域有很大应用前途,可以防止发信人抵赖和信件被途中篡改。
原作者:姜力东