一个安全电子邮件系统的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2002-03-05(修改稿) 作者简介:高继文(1967-),男,硕士研究生,主要研究方向:信息安全、电子商务; 何涛(1976-),男,硕士研究生,主要研究方向:信息安全、网络应用; 杨寿保(1947-),男,教授,博士生导师,主要研究方向:计算机网络及应用、信息安全与密码学.

文章编号:1001-9081(2002)06-0082-02

一个安全电子邮件系统的设计与实现

高继文,何 涛,杨寿保

(中国科学技术大学计算机科学技术系,安徽合肥230026)

摘 要:分析了安全电子邮件需要解决的问题,介绍了安全电子邮件的解决方案,并以一个企业的工资发放邮件系统为例给出了企业级安全解决的实例。

关键词:电子邮件;加密;数字签名;数字信封中图分类号:TP393.098 文献标识码:A

1 需要解决的问题

电子邮件存在的不安全因素包括:容易被别人偷窥,容易

被篡改,以任何人的名义冒发电子邮件等。尽管存在很多的不安全因素,但电子邮件还是在Internet 上被广泛应用,这是因为一般的电子邮件通信仅仅传输的是一些不敏感或不重要的普通信息,但是一旦考虑传输一些重要信息,那么安全性问题就是首要问题。

安全电子邮件的具体要求包括如下几点:

邮件内容的保密性。在邮件的收发过程中,除了邮件收发双方外任何人无法获取邮件真实内容。

信息来源证明———发信方对所发邮件的内容不可否认。当收信人接收到邮件时,有足够的证据证实这封邮件确实是发信方所发的,而且没有被篡改。

安全收条———收信方对所收到的邮件的内容不可否认。当收信人接收到邮件时,发信方有可靠的证据证实这封邮件被接收方收到了。

2 采用的安全措施

安全电子邮件所采用的安全措施,几乎全部以数据加密

技术为基础。安全电子邮件把对称密钥体制和公开密钥体制完美的结合了起来,充分利用了DES 效率高速度快、RS A 安全性高、密钥管理简便的优点。下面以数据加密技术为基础,讨论安全电子邮件所采用的安全措施。

(1)数字签名

数字签名采用RS A 算法,数据发送方采用自己的私钥加密数据,接受方用发送方的公钥解密,由于私钥和公钥之间的严格对应性,使用其中一个只能用另一个来解,保证了发送方不能抵赖发送过数据,完全模拟了现在生活中的签名。

(2)数字信封

发送方将消息用DES 、RC2、RC4等算法进行加密,并将对称密钥用接受方的公钥加密,称为消息的“数字信封”,将数字信封与加密后的消息一起发给接受方。接受者收到消息后,先用其密钥打开数字信封,得到发送方的对称密钥,再用此对称密钥去解开数据。只有用接受方的RS A 密钥才能够打开此数字信封,确保了接受者的身份。

(3)协签名

数字签名的一个重要的应用就是协签名。一个文件可以被多个人签名,首先甲方将文件进行数字签名,被签名的文件发给乙方,乙方验证甲方的签名后可以用协签名的方法将自己的数字签名加到文件里,如果还有其他的人还可以用这个文件继续签名,最后发送给邮件的接收者。

3 实现方法

C APIC OM 是微软公司的一个C OM 的客户端组件,支持Automation ,它用于实现加密功能,如数据签名、验证签名、用

数字信封对信息加密、用数字信封对信息解密、数据加密、数据解密、数字证书验证等。可以使用VB 、VC ++对C APIC OM 进行开发。

1)创建数字证书

用户在创建数字签名、解密信息时必须拥有一个带有私钥(Private K ey )的证书(Certificate ),如果一个证书没有私钥,那么数字签名、解密就无法进行。使用C APIC OM 时要确保我们有一个证书,证书可以向专门的C A 认证中心申请,如RS A 、VeriS ign 、中国国际电子商务中心(CIECC )等。另外微软公司(密钥长度512位)和S UN 公司(密钥长度2048位)都提供了创建证书的工具。

可以从微软的站点下载这个工具,下载后先创建一个自签名的证书,方法如下:

makecert -r -n "cn =xxx ,ou =yyy ,o =zzz"-ss my

其中XXX 是用户的名字,YYY 是组织名,ZZZ 是公司名。在Windows 操作系统中用控制台将这个证书导出,并放到根证书存储区后使这个证书合法并受信任。根据这个根证书可以创建相应的用户证书,发给单位其他的人使用,如果希望用于安全电子邮件,则需要将电子邮件地址的信息加到证书中。

2)对一个文件进行数字签名

数字签名的标准使用方法是将一个文件进行签名运算并且将签名后的数据保存到另外一个文件里。这个签名后的文件也可以在Internet 上传送。下面的例子简述了用C APIC OM 进行数字签名的过程,例中没有指定签名者,程序将在个人证书存储区自动找出用于签名的证书,如果有多个证书,将弹出

第22卷第6期2002年6月

计算机应用C om puter Applications Vol.22,No.6June ,2002

一个对话框,让用户选择用于签名的证书。

Dim S ignobj As New S ignedData

′声明并且创建一个签名对象得实例S ignobj.C ontent=c′将被签名的数据c赋给签名对象s=S ignobj.S ign′得出签名的结果

3)协签名

一个文件可以被多个人签名,例如合同的双方对一个合同进行签名,首先加方将合同进行数字签名,被签名的文件发给乙方,乙方验证甲方的签名后可以用协签名的方法将自己的数字签名加到文件里。下面的例子首先将要签名的原文赋给签名对象,然后验证甲方的签名,验证无误后加入乙方的签名。

S ignobj.C ontent=c′将被签名的数据c赋给签名对象S ignobj.Verify s′验证甲方的签名CS=S ignobj.C oS ign

′用协签名的方法加入乙方的签名,生成新的协签名数据如果有第三方的话,可以用同样的方法进行协签名。

4)验证签名

当接收到一个数字签名的文件后,用C APIC OM很容易对其进行验证,验证包括验证签名者的证书和签名的信息两个方面。首先用签名者的证书中的公钥(Public K ey)对签名的信息进行解密,如果签名时产生的哈希(hash)值与接收到的明文的哈希值相符,那么就证明明文没有被篡改。对证书的验证包括检查该证书是否已被吊销、是否过期、该证书是否在接受者的信任链中等。下面的例子用C APIC OM验证一个签名的过程。

Dim sig As S ignedData′声明并且创建一个签名对象得实例Set sig=New S ignedData

sig.C ontent=c′将明文的数据赋给签名对象On Error resume next

sig.Verify s,T rue′验证签名if Err.number<>0then

Msgbox"数字签名非法!"′报错

E lse

MsgBox"数字签名正确!"

End if

5)创建和接收数字信封

数字信封是用一组接收者的证书加密后的信息,在创建数字信封时产生一个会话密钥,用这个会话密钥加密原文,然后将这个会话密钥用接收者的公钥进行加密,数字信封的信息包括加密后的信息、接收者的证书、经过加密的会话密钥。下面的例子创建了一个数字信封信息。

Dim CertS tore As New S tore′声明并创建一个证书存储区′打开接收者的证书存储区

CertS tore.Open CAPICOM—CURRE NT—USER—ST ORE,"Other", CAPICOM—ST ORE—OPE N—RE AD—ON LY

Dim EnvM essage As New EnvelopedData

′声明并创建一个数字信封对象EnvM essage.C ontent=T ext′将明文赋给数字信封对象

F or I=1T o CertS tore.Certificates.C ount

EnvM essage.Recipients.Add CertS tore.Certificates.Item(I)

′读入接收者的证书CertS tore.Certificates.Item(I).Display′显示每个证书Next I

Envmessage.Alg =E NCRY PTION—A LG ORITH M—RC4

′用RC4加密算法Envmessage.Alg orithm.K ey Length=KEY—LE NG TH—128—BITS

′给定密钥长度128位EnvelopedM essage=EnvM essage.Encrypt′得出加密后的信息解密一个数字信封时,首先到“个人证书”存储区找出相应的带有私钥的证书,如果没有对应接收人信息的带有私钥的证书时,这个加密的信息就不会被解密。下面的例子首先用接收人的私钥解密会话密钥,然后用会话密钥将密文解密,如果没有相应的证书会产生一个错误。

Dim Envmessage As New EnvelopedData

Envmessage.Decrypt encrypted′解密数字信封MsgBox Envmessage.C ontent′显示解密后的明文在发送加密并签名的邮件时要先对原文进行签名,然后加密,接收时,先解密,然后验证签名。

6)软件实现流程

在研究的过程中为某企业实现了一个安全的工资条邮件系统。首先建立企业内部的C A(certification authority),创建一个企业的根证书(R oot certificate),并将此根证书存放到一个安全的计算机上,以这个根证书为基础创建所有员工的证书(拥有自己的一对公钥和私钥),将每个员工的证书和根证书的公钥安全地发到每个员工的手中,每个员工将根证书和证书导入

。软件实现的流程如图1所示。

图1 安全电子邮件系统的软件流程图

4 小结

首先建立企业内部的C A,为每个员工生成一个证书。为防止E2mail被窃取用公钥加密E2mail,为方便别人认证E2mail发送者的身份发送者用自己的私钥加密E2mail。工资发放邮件系统在企业的应用过程中收到了良好的效果,由于它的安全性而受到很多企业的欢迎。工资发放邮件系统加密过的信息在现有的计算机运算速度下短时间内根本无法破解,在企业中无论是邮件服务器管理员,还是网络管理人员,都无法得到其他人邮件的真实内容,从而有效地实现了安全电子邮件在企业中的应用。

参考文献

[1] F ord W.,Baum M.Secure E lectronic C ommerce:Building the

In frastructure for Digital S ignatures and Encryption[M].Prentice Hall, 1997.

[2] Bruce Schneier.Applied Cryptography:Protocols,Alg orithms,and

S ource C ode in C,2nd Edition[M].W iley Press,1995.

[3] Z immermann P.PG P User′s G uide[M].MIT Press,1995.

[4] M icros oft.MS DN Library[CP/DK].M icros oft C orp,2001.

38

第6期高继文等:一个安全电子邮件系统的设计与实现

相关文档
最新文档