安全电子邮件的设计与实现.doc_第1页
安全电子邮件的设计与实现.doc_第2页
安全电子邮件的设计与实现.doc_第3页
安全电子邮件的设计与实现.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安全电子邮件的设计与实现* 本文承蒙四川省科技厅重点基金项目的资助。杨雪涛 李涛 刘晓洁 任静*杨雪涛(1975-),男,四川南充人,硕士研究生,研究方向:计算机网络与互联网;李涛(1965-),男,四川人,教授,博士生导师,研究方向:计算机网络安全,人工智能。(四川大学(西区) 计算机学院 四川 成都 610065)摘 要:电子邮件作为广泛使用的网络工具,人们对它的安全性需求日益突出。本文提出了一套完整的安全电子邮件解决方案,包括对电子邮件的数字签名、数据加密以及同CA的协同工作。从而提供了电子邮件的保密性、认证身份、完整性和不可否认性。有效的解决了传统电子邮件存在的若干安全性问题,与国外的安全产品相比具有高加密强度并没有安全后门。达到了商用水平,适合国内普通用户乃至重要机密部门使用。关键字:电子邮件 数据加密 数字签名 CA PKI中图分类号:TP393.098文献标识码:AThe design and implement of secure emailYang Xue-tao, Li Tao, Liu Xiao-jie,Ren jing(Dept. of Computer, Sichuan Univ., Chengdu 610065,China)Abstract: As Email is a widely used internet tool, its security request has been increasing urgently. The thesis presents a comprehensive solution for security Email, including digital signature and encryption and interface for CA. This solution provides Email confidentiality, authentication, message integrity assurance, and nonrepudiation of origin. It effectively solves several secure problems in traditional Email System and hasnt network secure holes in contrast to products abroad and achieves high cryptographic level. It reaches the level of commerce and is suitable not only for general users but also for confidential departments.Key words: Email; Digital Signature; Encryption; CA; PKI1 引言电子邮件以其方便、快捷、便宜、容易存储和管理等特点,随着计算机网络的日益普及,在人们的工作和生活中得到了越来越广泛的应用。然而,传统的电子邮件存在着诸多不安全因素:如邮件可能在不为通信双方所知的情况下被读取、篡改或截获;发信者的身份可能被伪造等。所有这些,使得重要的信息不宜或不敢使用电子邮件来传递。随着我国电子信息化水平的不断提高,电子商务和电子政务的发展,对电子邮件的安全性也提出了更高的要求。本文实现了一个提供数据加密和数字签名的安全电子邮件系统鸡毛信。该系统提供了电子邮件的保密性、完整性、和不可否认性。同时还实现了对CA(Certification Authority)的支持,从而使鸡毛信能够基于PKI(Public Key Infrastructure)实现更广泛的应用。2 安全电子邮件系统鸡毛信的设计与实现在实现电子邮件安全发送与接收之前,鸡毛信系统首先实现了基本的电子邮件系统协议,如SMTP、POP3、MIME等。在实现了基本的电子邮件协议基础上,进而实现安全电子邮件系统。目前比较著名的安全电子邮件协议有PEM、PGP、S/MIME、MOSS等。本系统采用了MOSS协议。MOSS提供了三种功能:1) 加密:提供和保障邮件的保密性;2) 数字签名:防止邮件伪冒、发送方抵赖和邮件被篡改;3) 数字签名和数据加密服务:对只签名或者只加密的数据可以进行嵌套。这样加密的数据可以被签名,对数字签名的数据可以加密。本系统同时实现了对邮件的数字签名和加密。系统对写好的邮件首先进行数字签名,然后对签名的邮件进行加密再发送。接收到加密邮件后系统先解密邮件,再验证它的数字签名。从而保证了电子邮件的保密性、完整性和不可否认性。2.1 数据加密和数字签名目前的数据加密技术在算法上主要分为对称算法和公开密钥算法。所谓对称算法即是采用加密和解密用同一把秘密钥匙(简称“密钥”)的方式,应用较广的对称算法有:DES、三重DES、RC2、RC4、RC5和IDEA算法。而公开密钥算法是指用于加密的密钥不同于用于解密的密钥,并且从其中一个很难推断出另一个。其中一个密钥公之于众,称为“公开密钥”(public-key),另一个密钥由用户自己保存,称为“秘密密钥”(private-key),这两个密钥之间存在着相互依存关系:用其中任一个密钥加密的信息只能用另一个密钥进行解密。公开密钥算法最为典型的代表是RSA算法。这两种算法各有其优缺点。对称算法简便高效、密钥简短、破译极其困难,但密钥必须秘密分配,大量的密钥管理困难。公开密钥算法虽然密钥分配简单,密钥保存量少,但加解密速度较慢,而且对选择明文攻击具有脆弱性。所以在实际应用中可将两种算法结合起来使用,以充分发挥两种算法的优势。数字签名是指用户用密钥对报文的数字指纹(由单向散列函数产生)进行加密后得到的数据。在RSA公钥体系中加密的密钥就是用户自己的私钥。数字签名从技术上标识了发信者对该报文的数字指纹的责任,他一旦完成了签名便保证了其无法抵赖曾发过该信息(即不可抵赖性);信息接收者通过验证数字签名来确认收到信息的完整性、正确性。2.2鸡毛信系统邮件数字签名的实现将数字签名技术用于电子邮件,从而电子邮件内容的完整性、正确性和发送方的不可抵赖性都得到了保障。对于一封写好的电子邮件,在发送之前系统先严格按照MIME协议来格式化邮件。然后对格式化后的邮件实施数字签名。具体算法如下:/-类型定义-typedef FILE* MailType; /普通邮件文件typedef string KeyType; /密钥typedef string DigestType;/数字摘要typedef string SignType; /数字签名/-基本操作函数原型说明-DigestType MD5(MailType mail); /返回用MD5算法计算出的mail的数字摘要string RSAEncrypt(string str, KeyType key); /用key对str进行RSA加密,返回加密结果string RSADecrypt(string str, KeyType key); /用key对str进行RSA解密,返回解密结果CopyMail(MailType desmail,MailType sourcemail); /复制邮件文件AppendSign(MailType mail,SignType sig); /将sig 合成到mail 后得到签名邮件mailDetachSign(MailType signedmail, MailType mail, SignType &sig); /将签名邮件signedmail分解为执行签名的原邮件mail和mail的数字签名sig/-执行数字签名-void SignMail(MailType mail,KeyType prikey,MailType signedmail) /prikey为发信人私钥DigestType dig;SignType sig;dig=MD5(mail); /得到数字摘要sig=RSAEncrypt(dig,prikey);/得到数字签名CopyMail(signedmail,mail);AppendSign(signedmail,sig);/得到签名邮件由算法可知,本系统是用MD5算法对已经格式化好的邮件mail进行计算从而得到该邮件的数字摘要dig,然后用发送者的私钥prikey对数字摘要用RSA算法加密得到该邮件的数字签名sig,最后将数字签名和格式化的邮件按MOSS协议合成签名邮件signedmail。当邮件接收者得到签名邮件signedmail后,也按照MOSS协议将邮件拆分为数字签名sig和执行数字签名的原邮件mail两个部分。然后用发送人的公钥pubkey对数字签名进行解密得到数字摘要dig1,再由得到的邮件内容用MD5算法重新计算数字摘要dig2,将两个数字摘要进行比较从而得出结论。算法如下:/-验证数字签名-VerifySign(MailType signedmail, KeyTypepubkey) /pubkey为发信人的公钥MailType mail;SignType sig;DigestType dig1,dig2;DetachSign(signedmail,mail,sig);/分解dig1 = RSADecrypt(sig,pubkey);dig2 = MD5(mail);if(strcmp(dig1,dig2)=0) /比较得出结论 return OK;/数字签名验证正确else return ERROR;/数字签名验证错误若两个数字摘要比较结果完全相同,则系统将得出结论并提示用户收到某人发来的电子邮件,并且邮件内容是值得信任的;否则提示用户该邮件不值得信任。2.3 鸡毛信系统邮件加密的实现只实现了数字签名的邮件在传送中仍然是明文传送,邮件有可能在传送过程中被截获而泄密。因此还必须对其加密,使其在传送过程中传送的是密文。这样即使邮件中途被截获,截获者得到的也只是密文,从而保证了邮件内容的安全性。鸡毛信系统总是先对邮件进行签名,然后再对签了名的邮件进行加密再发送。无论采用哪种加密算法,密钥都是至关重要的。密钥的长度是密码系统安全性的一个重要参数。也就是说,采用的密钥的长度越长,加密的信息就越难被破解。按照安全要求,对称加密算法密钥的长度要求至少应该是128位,公钥算法的密钥长度要求至少是1024位。目前发达国家出口到我国的安全产品密钥的长度只有60位和512位,远低于安全要求。鸡毛信系统使用的对称密钥长度为128位;RSA密钥对的长度从512至2048位,由用户选择,足够长度的密钥使邮件的加密强度达到了军用绝密级。鸡毛信系统对邮件的加密采用了IDEA对称算法和RSA公开密钥算法的综合,充分利用了两种加密算法的优点。每当系统要对一封邮件加密时,先用一个随机数rad临时生成一128位的会话密钥sessionkey(每次加密不同),用这个会话密钥对签名的明文邮件用IDEA算法加密,然后用收件人的公钥pubkey采用RSA算法对这个会话密钥加密,再将密文邮件encryptedmail和加密的会话密钥encryptedkey按MOSS协议合成最后要发送的安全电子邮件securemail。算法如下:/-类型定义-typedef string RadomType;/随机数类型/-基本操作函数原型说明-RadomType GetRadom();/得到一个随机数KeyType MakeRadomKey(RadomType rad); /由随机数得到会话密钥IDEAEncrypt(MailType mail,KeyType key); /用key对mail进行IDEA加密IDEADecrypt(MailType mail,KeyType key); /用key对mail进行IDEA解密AppendKey(MailType mail,KeyType key); /将key合成到mail后边得到安全电子邮件DetachKey(MailType securemail,MailType mail,KeyType &key);/分解邮件和密钥/-加密电子邮件(已执行签名)-EncryptMail(MailType signedmail ,MailType securemail,KeyType pubkey) /pubkey为收件人的公钥RadomType rad;KeyType sessionkey,encryptedkey;rad = GetRadom();/得到随机数sessionkey = MakeRadomKey(rad); /获得会话密钥CopyMail( securemail , signedmail);IDEAEncrypt(securemail,sessionkey);/加密邮件encryptedkey=RSAEncrypt(sessionkey,pubkey);/用收件人公钥加密会话密钥AppendKey( securemail , encryptedkey); /得到安全电子邮件鸡毛信将两种加密算法结合起来使用,综合发挥了两种密码体制的优势,既利用了对称算法高速简便性,又利用了公开密钥算法的密钥管理的方便和安全性。鸡毛信系统收到安全电子邮件后,便会对其解密。先将邮件按照MOSS协议拆分为两个部分,第一部分为经RSA算法加密后的会话密钥encryptedkey;另一部分是经IDEA加密后的签名邮件encryptedmail。然后用收件人的私钥prikey来解密会话密钥。最后用会话密钥sessionkey来解密加密的邮件得到明文的签名邮件signedmail。当然还要验证邮件的数字签名。算法如下:/-解密安全电子邮件-DecryptMail(MailType securemail,KeyType prikey,MailType signedmail) /prikey为收件人私钥KeyType encryptedkey,sessionkey;DetachKey(securemail,signedmail, encryptedkey);/分解邮件sessionkey=RSADecrypt(encryptedkey, prikey);/解密得到会话密钥IDEADecrypt(signedmail,sessionkey);/解密加密邮件鸡毛信还实现了多人加密,即用多个收件人的公钥用同样的算法对邮件进行嵌套加密。这样在解密时就需要多个对应的私钥依次解密才行,缺一不可。这对于一些对保密要求很高的应用场合有着很好的应用价值。如在工程的招投标的计算机应用中,出于公正性等因素的考虑,诸如投标书等重要的文件资料不仅需要加密,还要求相关的各方人士同时在场时才能被解密打开,这时就需要用到多人加密技术。3鸡毛信系统对CA的支持从前面的邮件加解密和数字签名以及验证签名的过程可以看到这些过程都需要发送者或接收者拥有对方的公钥。这里就存在着如何获得其他人的公钥以及如何信任其他人的公钥的问题。最初的公钥分配(即一方获得另一方的公钥)是基于私人之间的信任关系,然而随着公钥密码技术在网络安全中的应用规模不断扩大,这种分配方式已不能适应了,这时就需要PKI(Public Key Infrastructure)来解决大量的密钥分配和管理。PKI即“公钥基础设施”,是一种完全符合X509标准的密钥管理平台,它能够为所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理。PKI体系的核心部分是认证中心(CA ),它是受信任的第三方机构,负责数字证书的整个生命周期的管理,即产生证书、发放证书和撤消证书(包括发布撤消信息CRL)。数字证书是由认证中心发放并经认证中心数字签名的,包含公开密钥拥有者以及公开密钥相关信息的一种电子文件,可以用来证明数字证书持有者的真实身份。其目的是为公钥分配提供可扩展性和可管理性。当前公认和广泛采用的数字证书是X.509证书。鸡毛信完全实现了与CA的协同工作,用户使用鸡毛信发送和接收安全电子邮件,需要获得自己的密钥对和他人的公钥,这些都可以是CA通过数字证书颁发的。鸡毛信支持对标准的个人证书(PKCS12证书)以及X.509证书的导入。在导入证书之前,需要导入CA自己的证书,其中包含了CA自己的一个公钥,用以验证该CA所签发的数字证书的数字签名。导入证书时,鸡毛信先用已导入的CA的公钥去验证该证书的数字签名,如果通过验证,则证明该证书是值得信任的。继而将证书所包含的密钥及持有者的信息导入系统。若导入的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论