安全电子邮件的设计与实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1安全电子邮件的设计与实现*杨雪涛李涛刘晓洁任静**(四川大学(西区)计算机学院四川成都610065)摘要:电子邮件作为广泛使用的网络工具,人们对它的安全性需求日益突出。本文提出了一套完整的安全电子邮件解决方案,包括对电子邮件的数字签名、数据加密以及同CA的协同工作。从而提供了电子邮件的保密性、认证身份、完整性和不可否认性。有效的解决了传统电子邮件存在的若干安全性问题,与国外的安全产品相比具有高加密强度并没有安全后门。达到了商用水平,适合国内普通用户乃至重要机密部门使用。关键字:电子邮件数据加密数字签名CAPKI中图分类号:TP393.098文献标识码:AThedesignandimplementofsecureemailYangXue-tao,LiTao,LiuXiao-jie,Renjing(Dept.ofComputer,SichuanUniv.,Chengdu610065,China)Abstract:AsEmailisawidelyusedinternettool,itssecurityrequesthasbeenincreasingurgently.ThethesispresentsacomprehensivesolutionforsecurityEmail,includingdigitalsignatureandencryptionandinterfaceforCA.ThissolutionprovidesEmailconfidentiality,authentication,messageintegrityassurance,andnonrepudiationoforigin.IteffectivelysolvesseveralsecureproblemsintraditionalEmailSystemandhasn’tnetworksecureholesincontrasttoproductsabroadandachieveshighcryptographiclevel.Itreachesthelevelofcommerceandissuitablenotonlyforgeneralusersbutalsoforconfidentialdepartments.Keywords:Email;DigitalSignature;Encryption;CA;PKI*本文承蒙四川省科技厅重点基金项目的资助。**杨雪涛(1975-),男,四川南充人,硕士研究生,研究方向:计算机网络与互联网;李涛(1965-),男,四川人,教授,博士生导师,研究方向:计算机网络安全,人工智能。1引言电子邮件以其方便、快捷、便宜、容易存储和管理等特点,随着计算机网络的日益普及,在人们的工作和生活中得到了越来越广泛的应用。然而,传统的电子邮件存在着诸多不安全因素:如邮件可能在不为通信双方所知的情况下被读取、篡改或截获;发信者的身份可能被伪造等。所有这些,使得重要的信息不宜或不敢使用电子邮件来传递。随着我国电子信息化水平的不断提高,电子商务和电子政务的发展,对电子邮件的安全性也提出了更高的要求。本文实现了一个提供数据加密和数字签名的安全电子邮件系统——鸡毛信。该系统提供了电子邮件的保密性、完整性、和不可否认性。同时还实现了对CA(CertificationAuthority)的支持,从而使鸡毛信能够基于PKI(PublicKeyInfrastructure)实现更广泛的应用。2安全电子邮件系统——鸡毛信的设计与实现在实现电子邮件安全发送与接收之前,鸡毛信系统首先实现了基本的电子邮件系统协议,如SMTP、POP3、MIME等。在实现了基本的电子邮件协议基础上,进而实现安全电子邮件系统。目前比较著名的安全电子邮件协议有PEM、PGP、S/MIME、MOSS等。本系统采用了MOSS协议。MOSS提供了三种功能:1)加密:提供和保障邮件的保密性;22)数字签名:防止邮件伪冒、发送方抵赖和邮件被篡改;3)数字签名和数据加密服务:对只签名或者只加密的数据可以进行嵌套。这样加密的数据可以被签名,对数字签名的数据可以加密。本系统同时实现了对邮件的数字签名和加密。系统对写好的邮件首先进行数字签名,然后对签名的邮件进行加密再发送。接收到加密邮件后系统先解密邮件,再验证它的数字签名。从而保证了电子邮件的保密性、完整性和不可否认性。2.1数据加密和数字签名目前的数据加密技术在算法上主要分为对称算法和公开密钥算法。所谓对称算法即是采用加密和解密用同一把秘密钥匙(简称“密钥”)的方式,应用较广的对称算法有:DES、三重DES、RC2、RC4、RC5和IDEA算法。而公开密钥算法是指用于加密的密钥不同于用于解密的密钥,并且从其中一个很难推断出另一个。其中一个密钥公之于众,称为“公开密钥”(public-key),另一个密钥由用户自己保存,称为“秘密密钥”(private-key),这两个密钥之间存在着相互依存关系:用其中任一个密钥加密的信息只能用另一个密钥进行解密。公开密钥算法最为典型的代表是RSA算法。这两种算法各有其优缺点。对称算法简便高效、密钥简短、破译极其困难,但密钥必须秘密分配,大量的密钥管理困难。公开密钥算法虽然密钥分配简单,密钥保存量少,但加解密速度较慢,而且对选择明文攻击具有脆弱性。所以在实际应用中可将两种算法结合起来使用,以充分发挥两种算法的优势。数字签名是指用户用密钥对报文的数字指纹(由单向散列函数产生)进行加密后得到的数据。在RSA公钥体系中加密的密钥就是用户自己的私钥。数字签名从技术上标识了发信者对该报文的数字指纹的责任,他一旦完成了签名便保证了其无法抵赖曾发过该信息(即不可抵赖性);信息接收者通过验证数字签名来确认收到信息的完整性、正确性。2.2鸡毛信系统邮件数字签名的实现将数字签名技术用于电子邮件,从而电子邮件内容的完整性、正确性和发送方的不可抵赖性都得到了保障。对于一封写好的电子邮件,在发送之前系统先严格按照MIME协议来格式化邮件。然后对格式化后的邮件实施数字签名。具体算法如下://--------------类型定义----------------typedefFILE*MailType;//普通邮件文件typedefstringKeyType;//密钥typedefstringDigestType;//数字摘要typedefstringSignType;//数字签名//------基本操作函数原型说明------DigestTypeMD5(MailTypemail);//返回用MD5算法计算出的mail的数字摘要stringRSAEncrypt(stringstr,KeyTypekey);//用key对str进行RSA加密,返回加密结果stringRSADecrypt(stringstr,KeyTypekey);//用key对str进行RSA解密,返回解密结果CopyMail(MailTypedesmail,MailTypesourcemail);//复制邮件文件AppendSign(MailTypemail,SignTypesig);//将sig合成到mail后得到签名邮件mailDetachSign(MailTypesignedmail,MailTypemail,SignType&sig);//将签名邮件signedmail分解为执行签名的原邮件mail和mail的数字签名sig//----------------执行数字签名-------------voidSignMail(MailTypemail,KeyTypeprikey,MailTypesignedmail){//prikey为发信人私钥DigestTypedig;SignTypesig;dig=MD5(mail);//得到数字摘要sig=RSAEncrypt(dig,prikey);//得到数字签名CopyMail(signedmail,mail);AppendSign(signedmail,sig);//得到签名邮件}由算法可知,本系统是用MD5算法对已经格式化好的邮件mail进行计算从而得到该邮件的数字摘要dig,然后用发送者的私钥prikey对数字摘要用RSA算法加密得到该邮件的数字签名sig,最后将数字签名和格式化的邮件按MOSS3协议合成签名邮件signedmail。当邮件接收者得到签名邮件signedmail后,也按照MOSS协议将邮件拆分为数字签名sig和执行数字签名的原邮件mail两个部分。然后用发送人的公钥pubkey对数字签名进行解密得到数字摘要dig1,再由得到的邮件内容用MD5算法重新计算数字摘要dig2,将两个数字摘要进行比较从而得出结论。算法如下://----------------验证数字签名-------------VerifySign(MailTypesignedmail,KeyTypepubkey){//pubkey为发信人的公钥MailTypemail;SignTypesig;DigestTypedig1,dig2;DetachSign(signedmail,mail,sig);//分解dig1=RSADecrypt(sig,pubkey);dig2=MD5(mail);if(strcmp(dig1,dig2)==0)//比较得出结论returnOK;//数字签名验证正确elsereturnERROR;//数字签名验证错误}若两个数字摘要比较结果完全相同,则系统将得出结论并提示用户收到某人发来的电子邮件,并且邮件内容是值得信任的;否则提示用户该邮件不值得信任。2.3鸡毛信系统邮件加密的实现只实现了数字签名的邮件在传送中仍然是明文传送,邮件有可能在传送过程中被截获而泄密。因此还必须对其加密,使其在传送过程中传送的是密文。这样即使邮件中途被截获,截获者得到的也只是密文,从而保证了邮件内容的安全性。鸡毛信系统总是先对邮件进行签名,然后再对签了名的邮件进行加密再发送。无论采用哪种加密算法,密钥都是至关重要的。密钥的长度是密码系统安全性的一个重要参数。也就是说,采用的密钥的长度越长,加密的信息就越难被破解。按照安全要求,对称加密算法密钥的长度要求至少应该是128位,公钥算法的密钥长度要求至少是1024位。目前发达国家出口到我国的安全产品密钥的长度只有60位和512位,远低于安全要求。鸡毛信系统使用的对称密钥长度为128位;RSA密钥对的长度从512至2048位,由用户选择,足够长度的密钥使邮件的加密强度达到了军用绝密级。鸡毛信系统对邮件的加密采用了IDEA对称算法和RSA公开密钥算法的综合,充分利用了两种加密算法的优点。每当系统要对一封邮件加密时,先用一个随机数rad临时生成一128位的会话密钥sessionkey(每次加密不同),用这个会话密钥对签名的明文邮件用IDEA算法加密,然后用收件人的公钥pubkey采用RSA算法对这个会话密钥加密,再将密文邮件encryptedmail和加密的会话密钥encryptedkey按MOSS协议合成最后要发送的安全电子邮件securemail。算法如下://------------类型定义----------------typedefstringRadomType;//随机数类型//-------基本操作函数原型说明---------RadomTypeGetRadom();//得到一个随机数KeyTypeMakeRadomKey(RadomTyperad);//由随机数得到会话密钥IDEAEncrypt(MailTypemail,KeyTypekey);//用key对mail进行IDEA加密IDEADecrypt(MailTypemail,KeyTypekey);//用key对mail进行IDEA解密AppendKey(MailTypemail,KeyTypekey);//将key合成到mail后边得到安全电子邮件DetachKey(MailTypesecuremail,MailTypem

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功