专利名称:一种挂号电子邮件的传输方法
技术领域:
本发明涉及一种挂号电子邮件的传输方法,属于信息安全领域。
背景技术:
挂号电子邮件作为电子邮件的一种安全增强服务在目前电子邮件得到广泛应用的前提下,显的越来越迫切,目前涉及到的电子邮件的安全解决方法有S/MIME,PEM, PGP 等,分别用来保证邮件的机密性,隐私性和认证性,挂号邮件可以用来保障电子邮件的接收非否认性,和现实生活中的挂号邮件相对应,邮件的发送者可以获得一个邮件接收者的非否认证据,和现实生活中的挂号邮件一样,如果接收者获得了邮件,那么发送者一定能够获得邮件的接收收据,否则如果发送者没有获得邮件的接收收据,那么接收者也无法获得邮件。有学者指出“更加专业的使用邮件的过程中,缺乏消息收据是邮件服务这种基础设施中缺少的一块,挂号邮件是安全消息面临的下一个挑战”,正像公钥基础设施(PKI)及其相关的目录服务需要访问和检索公钥和数字证书一样并不是那么容易获得,安全消息也存在这样的问题,相对于PGP,S/MIME的开发者考虑非否认性,并在RFC 2634中给出签名的收条,然而S/MIME签名收条假想接收者在发送者要求收条的时候会发送收条给发送者,这样的假想是不现实的,因为如果某人是公平的参与者,那么也没有必要要求来自他的收条, 因而S/MIME签名收条并没有被广泛采用。对于商业的挂号邮件无法获得详细的资料和相关技术细节,从可以获得的资料可知一些商业挂号邮件服务是基于安全Web服务器,利用Web服务器作为可信第三方而实现挂号邮件的特征,不支持目前被广泛采用的Internet电子邮件系统架构。时间认证性也是Internet中交互的一种重要的特性,尤其是在电子商务的过程中,时间认证性更加重要,比如通过电子邮件提交专禾ij,具有时间认证性的邮件系统可以为同类的专利申请提供可比较的有权威机构签名的时间戳已证明专利提交的时间,从而防止因为本地时间不同而引起的时间不可判定的问题。1982年,ARPANET电子邮件建议被发表为RFC 821 (传输协议)和RFC 822 (消息格式),这些建议后来成为了事实上的Internet电子邮件协议标准。之后,CCITT草拟了 X. 400提议,被作为OSI的MOTIS (面向文本的互换系统)的基础,经过一段时间的竞争,基于RFC 822/821的电子邮件系统因其简单实用被广泛应用,和X. 400相比,Internet电子邮件传输协议SMTP具有标准功能,可选功能,可以向信息头插入任何数据,可以发送同一信息中相同内容的多个副本等特征。Internet电子邮件系统由两个子系统组成用户代理(MUA,Mail User Agent)禾口消息传输代理(MTA,Mail Transfer Agent)。用户代理是一个本地程序,提供命令方式、菜单方式或图形方式的界面与电子邮件系统交互;消息传输代理作为后台守护进程接收用户代理的请求,并在系统之间传输邮件。用户代理并不接收邮件,它只是显示已经在用户邮箱中存在的邮件,MUA接受用户输入的各种指令,将用户的邮件传送至邮件传输代理,或者通过POP、IMAP将信件从传输代理取到本机。MTA除了接收MUA的请求外,还根据邮件的目标地址查找对应的邮件服务器,将邮件在服务器之间传输,将接收到的邮件缓存或者提交给本地的投递程序进行投递。具体来讲,MTA的任务就是接受MUA的委托,将邮件从一个系统投递到另外一个系统,并收下远程 MTA送来的邮件。当MTA收到MUA或者MTA的请求后,它会首先判断是否应该受理,对于一个外发的邮件,MTA决定接收方的目的地,如果目的地主机是远程的邮件服务器,那么MTA 通过同这个远程的主机建立连接并传递邮件,同时,MTA能够响应远程邮件服务器的连接请求,并为本地用户接收邮件。对于一些要交给其他网络的邮件,有可能会经过多个MTA接力传递。作为邮件终点站的MTA发现收件人是本地系统用户后,便将邮件交给本地投递代理 (MDA)进行投递,邮件被投递到邮件存储区,最终由MUA通过P0P3来将邮件获取到本地(这里只考虑P0P3获取邮件的方式),如附图1所示。
发明内容
本发明的目的在于提供一种挂号电子邮件的传输方法,其可在Internet邮件系统的架构下,实现具有时间认证性的挂号邮件,达到在现有的邮件服务器上进行很少的修改便可以实现挂号邮件的功能。本发明通过在邮件被获取的时候先只提供邮件的主题、邮件的摘要信息、发送者给接收者,要求接收者发送接收收据,只有在接收者发送了接收收据以后,系统才会将邮件正文提供给接收者。同时本发明中的挂号邮件还具有时间认证性。本发明的技术方案为一种挂号电子邮件的传输方法,其步骤为1)发件人通过邮件用户代理在邮件的邮件头中设置该邮件为挂号邮件;2)该邮件通过SMTP认证后到达邮件发送代理,邮件发送代理根据收件人的地址判断该邮件是否为远程邮件,如果是则将该邮件发送到下一接收方的邮件发送代理;3)该邮件到达邮件接收方所在的邮件发送代理后,本地投递代理检查该邮件是否为挂号邮件,如果是则将其投递到一挂号邮件目录;4)收件人通过接收方邮件用户代理从所述挂号邮件目录收取邮件时,接收方邮件发送代理返回该邮件的挂号邮件通知给接收方邮件用户代理;5)接收方邮件用户代理利用所述挂号邮件通知将该邮件标记为挂号邮件后存储到一已通知挂号邮件目录;6)收件人确认接收该邮件后,接收方邮件用户代理生成一收件人签名的发给发件人的收据邮件;7)接收方邮件发送代理对该收据邮件进行验证并通过后,将其发送给收件人,并将该挂号邮件存储到收件人目录中。进一步的,所述1)中,用户代理在邮件的邮件头中同时设置该邮件为要求时间戳。进一步的,所述2)中,邮件发送代理检查邮件头,如果邮件设置为要求时间戳,则邮件发送代理调用时间戳设置接口为邮件设置时间戳后将其加入一等待发送队列。进一步的,所述挂号邮件通知包括邮件的主题、发件人、摘要。
进一步的,所述挂号邮件具有一标识,所述标识为包含邮件摘要、邮件发件人以及邮件接收人信息的字符串。进一步的,接收方邮件发送代理在所述已通知挂号邮件目录中根据邮件标识查找对应的邮件,将其存储到收件人目录。进一步的,邮件的摘要的生成方法为采用单向hash函数对邮件内容进行hash, 获得固定长度的字符串作为该邮件的摘要。进一步的,接收方邮件用户代理通过pop3方式或imap方式从所述挂号邮件目录收取邮件。进一步的,所述接收方邮件用户代理生成一收件人签名的发给发件人的收据邮件的方法为接收方邮件用户代理用收件人的私钥对邮件的摘要进行签名,然后根据签名后的摘要和收件人的公钥生成发给发件人的收据邮件,并设置该邮件的状态为返回的收据。进一步的,所述7)中,接收方邮件发送代理对该收据邮件进行验证的方法为接收方邮件发送代理检查该收据邮件的状态是否为返回的收据,如果是,且发件人为本地用户、该收据中的公钥证书有效且标识和接收者标识一致、用公钥证书验证收据中的签名是接收方对邮件摘要的签名,则验证通过。本发明主要在现有Internet邮件系统的基础上增加下面的内容 邮件头自定义扩展项包括“挂号邮件”选项、“要求时间戳”选项、以及“挂号邮件状态”选项,其中“挂号邮件”选项、“要求时间戳”选项的值为“是/否”,“挂号邮件状态” 为“返回的收据/正在发送”。邮件摘要用非冲突的单向hash函数对邮件内容进行hash获得的固定长度的字符
串ο邮件唯一标识用邮件摘要和邮件发送者以及接收者组成的字符串。邮件收据用邮件接收方的私钥签名对邮件摘要加密的密文。挂号邮件目录在邮件服务器上专门用来存放挂号邮件的目录。已通知挂号邮件目录在邮件服务器上用来存放已被客户端获取了主题和摘要信息的挂号邮件的目录。挂号邮件收取命令客户端对挂号邮件进行收取。时间戳设置接口第三方时间戳服务机构提供的用来为消息设置时间戳的接口。MTA设置要求邮件发送进行身份验证,通信双方已获得了彼此的数字证书。我们来描述本发明中挂号邮件工作的过程。其中MTA(邮件发送代理)包括SMTP 守护进程、P0P3守护进程、投递程序、远程投递代理、本地投递代理、邮件存储区,A为邮件发送者,B为邮件接收者。A所在的MTA表示为MTA_A,B所在的MTA表示为MTA_B,同样MUA_ A表示A的MUA,MUA_B表示B的MUA。步骤1邮件用户代理(MUA_A)对邮件的邮件头进行设置,设置“挂号邮件”选项, “要求时间戳”选项; 步骤2邮件通过SMTP协议到达邮件发送代理(MTA),邮件发送代理检查邮件头,如果“要求时间戳”选项被设置,MTA_A调用时间戳设置接口为邮件设置时间戳,设置完成以后,107\_々将其入队列等待发送。发送的过程中如果是发送给远程的邮件,远程投递代理与邮件接收方所在的邮件发送代理(MTA)联系,对邮件进行投递,如果是本地邮件,直接由本地投递代理对邮件进行投递,如附图1所示。步骤3邮件到达邮件接收方所在的邮件发送代理(MTA_B)后,本地投递代理(MDA_ B)对其进行投递的时候,检查“挂号邮件”选项,发现“挂号邮件”选项被设置,MDA_B将其投递到挂号邮件目录。
步骤4MUA_B通过P0P3协议从MTA_B收取信件,MUA_B执行挂号邮件收取命令获得挂号邮件目录下邮件的主题、发件人、摘要,并将其标记为挂号邮件。步骤5被收取的挂号邮件被转移到B的已通知挂号邮件目录。步骤6邮件接收者接收挂号邮件,MUA_B用接收者的私钥对邮件的摘要进行签名, 连同接收者的公钥证书一起通过SMTP返回给邮件发送者,并设置“挂号邮件状态”为“返回的收据”。步骤7MTA_B获得SMTP请求,检查“挂号邮件状态”选项,发现该状态信息为“返回的收据”,且发送者是本地用户,MTA_B验证收据中的签名确实是邮件接收者对邮件摘要的签名(即先验证收据中的公钥证书的有效性,接着用公钥证书验证签名的有效性),验证通过,MTA_B到已通知挂号邮件目录下按照邮件标识符查找对应的邮件,将其转移到新邮件目录。接着MTA_B将含有收据的邮件入队列,等待发送。步骤8入队列的收据通过SMTP到达发送者所在的MTA_A,被投递到发送者的新邮件目录,从而被获取到发送者本地。步骤9接收者执行获取新邮件命令获得已经返回了接收收据的挂号邮件。SMTP守护进程的处理流程见附图2。至此,完成了一封挂号邮件的传递过程。相对于现有技术,本发明的积极效果在于(1)支持现有Internet邮件系统的架构,现有邮件发送代理和邮件用户代理可以在进行最小修改的情况下实现挂号邮件的功能。(2)具有时间认证性。
图1示出可以实施本发明的Internet电子邮件系统体系结构;图2示出SMTP守护进程的处理流程;图3示出本地投递代理的处理流程;图4示出P0P3扩展命令get_cer的处理流程;图5示出MUA插件获取挂号邮件的处理流程;(A)流程一通过get_Cer命令获取挂号邮件通知(包括邮件的主题、摘要、发送者)的过程;(B)流程二 用户确定接收某个挂号邮件的过程;(C)流程三用户通过MUA获得挂号邮件的过程;图6示出根据本发明实施的具有挂号邮件功能的Qmail邮件系统结构。
具体实施方式
Qmail是目前设计结构合理,且代码安全问题最少的MTA的实现,根据上面的技术方案,我们给出本发明在Qmail的基础上实现挂号邮件的过程。通过扩展邮件发送和接收的处理过程来实现挂号邮件,同时MUA也需要做相应的调整,首先MUA需要对用户表现出具有挂号邮件的功能,用户在发送邮件时通过设置某个选项来要求邮件接收非否认证据(类似于要求邮件收条,但当前MUA中的邮件收条对接收方是否可以 获得消息没有任何约束,接收方可以选择不发送收条),此外MUA需要能够感知扩展后的邮件收发过程。后边给出具体的具有接收非否认证据的邮件发送的实施情况,即发送者A发送消息M给B,只有在B发送了接收收据给A的情况下,B才可以获得消息。如果B没有发送收据给A,那么B将无法获得消息M。用户A、用户B提前获得了对方的公钥(数字证书),首先A通过MUA_A发送一个带有“挂号邮件”选项的邮件M给B,MTA_A在接收到消息M以后,将其投递给B所在的MTA (我们将其表示成MTA B),MTA_B接收邮件,并将其保存在B的邮件存储区的“挂号邮件目录” 下,当B通过pop3获取邮件的时候(我们这里先只考虑这一种接收邮件的方式,通过imap 获取邮件的处理方式与之类似),MTA_B只返回邮件的主题和邮件的摘要给MUA_B,只有当B 通过MUA_B返回对邮件摘要的签名,并经过确认是关于对应消息的签名后,MTA_B才会将消息转移到用户可获取的目录下(new),备用户下次获取邮件的时候获得。邮件存储结构(各级目录下的邮件以邮件idM = h(A,B,h(M))为文件名存放)如下Maildir/newcurcertmpcer_2附图6给出了实施的具有挂号邮件功能的Qmail邮件系统结构。邮件发送过程中需要利用邮件的“挂号邮件”扩展项,这个选项在邮件从MUA发送时被设置,如果邮件同时设置了 “要求时间戳”选项,那么在邮件入队列之前,qmail-smtpd执行远程时戳请求对其设置时间戳,qmail-smtpd的处理流程见附图2,时戳请求返回,消息被入队列, qmail-queue判断收件人的地址,如果邮件地址为远程的邮件,qmail-queue把控制权交给 qmail-rspawn,如果是本地的邮件,qmail-queue将控制权交给qmail-lspawn。当B所在的邮件发送代理(MTA_B)接收到来自A的邮件后,MTA_B中的qmail_ Ispawn判断邮件类型是否是“挂号邮件”,如果是,将邮件存入B的邮件存储区的cer目录下,用邮件的idM作为文件名,等待B端的MUA通过pop3的方式获取。tl中记录了等待处理的挂号邮件的列表及邮件的状态,这个列表可以通过读Maildir下的cer目录和cer_2 目录来获得。挂号邮件投递的过程如附图3所示,即当对具有“挂号邮件”选项的邮件进行投递的时候,本地投递代理首先解析邮件头,如果邮件的“挂号邮件”选项被设置,那么将其投递到cer目录下,否则按照正常邮件处理,投递到new目录下。修改pop获取邮件的过程,增加对挂号邮件的处理,如附图4所示,get_Cer命令负责从cer目录获取挂号邮件的摘要、主题、发件人等信息(后边称为挂号邮件通知),一般情况下用户在MUA中点击“获取挂号邮件”时被调用。当MUA成功获取挂号邮件通知后, 邮件被qmail-pop3d转移到cer_2目录。具体地,执行get_cer命令,针对cer中的邮件, MUA_B将“挂号邮件通知”接收到本地,并对其进行标记,以和其他邮件进行区分。 B对含有消息M的邮件进行接收操作,在MUA_B端点击接收按钮,通过get_Cer命令获取挂号邮件通知(包括邮件的主题、摘要、发送者),如附图5-A所示。当B获得挂号邮件通知以后,选择对含有消息M的邮件进行接受或者拒绝接受操作,如附图5-B所示,B选择接受挂号邮件,MUA_B将用B的公钥对hash (M)的签名以及B的公钥通过smtp返回给A,即发送一份包含接收非否认收据的邮件给A。收据首先到达MTA_ B, qmail-smtpd验证B的签名,如果验证通过,qmail_smtpd通知qmail_pop3d将含有M的邮件从cer_2转移到new目录下,同时qmail-smtpd将B的收据发送给A。这样,下次B接收新邮件的时候可以阅读到M(通过pop3的list和retr命令), 如附图5-C所示。同时A通过正常的邮件收发可以获得来自B的接收非否认收据。该实施过程工作的前提是设置只有通过smtp认证才可以发送邮件,其他方面■扩展后的邮件头格式如下在邮件自定义的扩展项中增加下面的项Certified-reciept :YesCertified—mail status :cer_return/sendingtimestamp :Yes■扩展pop3命令为
■ MUA能够感知挂号邮件,对挂号邮件作出标记,同时增加对挂号邮件的接受操作,接受操作做的事情是生成一个含有B的数字签名的收据并通过smtp返回给A,收据生成过程见附图5-B。■修改qmail_Smtpd的处理流程,首先qmail_Smtpd对于需要时间戳的邮件在入队列之前首先和TSS建立连接,发送为邮件设置时间戳的命令;其次,qmail_smtpd对于返回的邮件的收据进行验证,验证数字签名的合法性,对于验证通过的收据对应的邮件, qmail_smptd 通知 qmail_pop3d 将其从 Maildir/cer_2/ 下转移至Ij Maildir/cer_2/new 下, 并将收据入队列。■涉及到和其他服务的接口有建立和TSS的连接,TSS的监听端口为XXXX, qmail_smtpd此时作为TSS服务的client端向TSS发起请求,设置时间戳的接口函数为 timestamp (h(m),tss_address, tss_port),返回 h(m)的时间戳,其中 h(m)是消息 m 的摘要,tss_address、tss_port为TSS的IP地址和服务的端口号。
权利要求
1.一种挂号电子邮件的传输方法,其步骤为1)发件人通过邮件用户代理在邮件的邮件头中设置该邮件为挂号邮件;2)该邮件通过SMTP认证后到达邮件发送代理,邮件发送代理根据收件人的地址判断该邮件是否为远程邮件,如果是则将该邮件发送到下一接收方的邮件发送代理;3)该邮件到达邮件接收方所在的邮件发送代理后,本地投递代理检查该邮件是否为挂号邮件,如果是则将其投递到一挂号邮件目录;4)收件人通过接收方邮件用户代理从所述挂号邮件目录收取邮件时,接收方邮件发送代理返回该邮件的挂号邮件通知给接收方邮件用户代理;5)接收方邮件用户代理利用所述挂号邮件通知将该邮件标记为挂号邮件后存储到一已通知挂号邮件目录;6)收件人确认接收该邮件后,接收方邮件用户代理生成一收件人签名的发给发件人的收据邮件;7)接收方邮件发送代理对该收据邮件进行验证并通过后,将其发送给收件人,并将该挂号邮件存储到收件人目录中。
2.如权利要求1所述的方法,其特征在于所述1)中,用户代理在邮件的邮件头中同时设置该邮件为要求时间戳。
3.如权利要求2所述的方法,其特征在于所述2)中,邮件发送代理检查邮件头,如果邮件设置为要求时间戳,则邮件发送代理调用时间戳设置接口为邮件设置时间戳后将其加入一等待发送队列。
4.如权利要求1所述的方法,其特征在于所述挂号邮件通知包括邮件的主题、发件人、摘要。
5.如权利要求1所述的方法,其特征在于所述挂号邮件具有一标识,所述标识为包含邮件摘要、邮件发件人以及邮件接收人信息的字符串。
6.如权利要求5所述的方法,其特征在于接收方邮件发送代理在所述已通知挂号邮件目录中根据邮件标识查找对应的邮件,将其存储到收件人目录。
7.如权利要求4或5所述的方法,其特征在于邮件的摘要的生成方法为采用单向 hash函数对邮件内容进行hash,获得固定长度的字符串作为该邮件的摘要。
8.如权利要求1所述的方法,其特征在于接收方邮件用户代理通过pop3方式或imap 方式从所述挂号邮件目录收取邮件。
9.如权利要求1所述的方法,其特征在于所述接收方邮件用户代理生成一收件人签名的发给发件人的收据邮件的方法为接收方邮件用户代理用收件人的私钥对邮件的摘要进行签名,然后根据签名后的摘要和收件人的公钥生成发给发件人的收据邮件,并设置该邮件的状态为返回的收据。
10.如权利要求9所述的方法,其特征在于所述7)中,接收方邮件发送代理对该收据邮件进行验证的方法为接收方邮件发送代理检查该收据邮件的状态是否为返回的收据,如果是,且发件人为本地用户、该收据中的公钥证书有效且标识和接收者标识一致、用公钥证书验证收据中的签名是接收方对邮件摘要的签名,则验证通过。
全文摘要
本发明公开了一种挂号电子邮件的传输方法,属于信息安全领域。本方法为1)发件人在邮件头中设置该邮件为挂号邮件;2)该邮件通过SMTP认证后到达邮件发送代理,如果该邮件是远程邮件,则将其发送到下一接收方的邮件发送代理;3)该邮件到达邮件接收方后,本地投递代理检查该邮件是否为挂号邮件,如果是则将其投递到一挂号邮件目录;4)收件人从挂号邮件目录收取邮件时,接收方返回该邮件的挂号邮件通知给接收方;5)接收方将该邮件标记为挂号邮件后进行存储;6)收件人确认接收该邮件后,接收方生成一收据邮件;7)接收方对该收据邮件进行验证并通过后,将其发送给收件人,并将该挂号邮件存储到收件人目录中。本发明具有简单易行的特点。
文档编号H04L12/58GK102202006SQ20101013490
公开日2011年9月28日 申请日期2010年3月26日 优先权日2010年3月26日
发明者刘冬梅, 卿斯汉, 李鹏飞 申请人:中国科学院软件研究所