具体实施方式
第一实施例
概述
如图1所示,在第一实施例中,公司(在图1中由虚线框3示意性地表示)的局域网(LAN)1通过因特网7连接至受托第三方服务器5(在下文中称作T3P服务器5)。多个工作站9a-9c(为了易于图示,在图1中仅示出其中三个)与管理员工作站11一起连接至LAN 1。网关13连接至LAN 1和因特网7,以使LAN 1与因特网7之间的所有通信都通过网关13。传统的邮件服务器15和传统的轻量级目录访问协议服务器17(下文称作LDAP服务器17)也连接至LAN 1。
在该实施例中,密钥服务器19进一步连接至LAN 1。密钥服务器19存储工作站9的用户的加密密钥,并且当合适时对通过网关13从LAN 1外发的电子邮件进行加密,并对通过网关13传入LAN 1的电子邮件进行解密。在该实施例中,由密钥服务器19存储的加密密钥包括从T3P服务器5下载的用于非对称加密算法的私有密钥,这种下载由加密密钥机构进行管理。
在该实施例中,加密密钥机构发布为WO 03/017559中所描述的加密算法提供根公共密钥
的公共密钥证书,该专利的全部内容通过引用合并于此。根据该加密算法,具有电子邮件地址“client_ID”的客户的公共密钥
可以由以下公式给出:
其中,F是可公开获得的函数。以此方式,与客户相关联的公共密钥可以由任何知道该客户的邮件地址、加密机构的根公共密钥
和函数F(这些都是可公开获得的)的人计算得出。
与客户相关联的私有密钥仅在知道根私有密钥
的情况下才能被计算得出,该根私有密钥
由加密机构保密。具体来说,具有电子邮件地址“client_ID”的客户的私有密钥
由T3P服务器5根据以下关系计算得出:
其中,G是与F配对的函数。
在说明书的所有剩余部分中,除非另外指出,对使用公共密钥被非对称加密的数据的引用意味着,该数据用组成加密密钥的公共密钥使用WO
03/017559中所描述的非对称加密算法被加密,并且类似地,对使用私有密钥被非对称解密的数据的引用意味着,该数据用组成加密密钥的私有密钥使用WO 03/017559中所描述的非对称加密算法被解密。
在整个说明书中,还会引用使用对称密钥被对称地加密或解密的数据。除非另外指出,这是指将对称密钥用作加密密钥使用高级加密标准(AES)算法对该数据进行的加密或解密。
为了发送已加密电子邮件,在该实施例中采取了所谓的KEM-DEM方法,在KEM-DEM方法中,已加密电子邮件消息由密钥封装机制(KEM)部分和数据封装机制(DEM)部分组成,其中KEM部分存储使用接收方的公共密钥被非对称加密的会话密钥(该会话密钥对该消息来说是唯一的),DEM部分存储使用会话密钥被对称加密的电子邮件消息。具体来说,对于每个接收方,KEM部分存储使用该接收方的公共密钥被非对称加密的会话密钥,并且KEM还存储通过发送方的公共密钥被非对称加密的会话密钥。以此方式,仅需要处理操作相对集中的非对称加密算法来恢复会话密钥,而使用处理操作不太集中的对称加密算法来恢复消息。
所使用的KEM-DEM方法的其它细节可以在WO 2005/050908中找到,该专利的全部内容通过引用合并于此。
由于客户的私有密钥由T3P服务器5生成,因此在如何使所生成的私有密钥可用上存在问题。如以下详细描述的,该实施例中,在T3P服务器5与密钥服务器19之间建立安全通信来方便与LAN1的用户相关联的私有密钥的下载。
对于公司来说,例如该实施例的具有LAN 1的公司,公司对正在接收的和正在向外发送的电子邮件进行检查以便禁止计算机病毒的传播和过滤出垃圾邮件是正常的。然而,当电子邮件的内容已被加密时,在执行这些检查中存在问题。如以下详细描述的,该实施例中,当需要时,密钥服务器19使用与LAN 1的用户之一相关联的公共密钥被加密的引入电子邮件进行解密,以在该电子邮件被传递到目的地之前允许对该电子邮件的内容执行检查。
现在更详细地描述网关13、密钥服务器19、LDAP服务器17和T3P服务器5的主要部件。
网关
如图2所示,网关13具有通过总线系统41互连的外部网络接口31、LAN接口33、操作员接口35、处理器37和存储器39。
外部网络接口31以网络信号43的形式从因特网接收数据且向因特网输出数据。类似地,LAN接口33以网络信号45的形式从LAN 1接收数据且向LAN 1输出数据。
操作员接口35包括允许操作员将数据输入网关13的键盘(未在图2中示出)和允许操作员读取网关13所产生的数据的显示器(未在图2中示出)。操作员接口35还包括CD-ROM读写器,通过该CD-ROM读写器,存储在CD-ROM 47上的数据可以被输入到网关13,或者由网关13产生的数据可以被写入到可记录的CD-ROM 47上。
处理器37根据存储在存储器39中的程序例程执行处理操作。这些程序例程可以在生产过程中存储,或可以通过操作员接口35、外部网络接口31或LAN接口33输入到网关13。程序例程处理存储在存储器39中的数据和通过操作员接口35、外部网络接口31或LAN接口33接收的数据。
传统上,存储器39由不同类型的存储器组成,各个存储器具有用于检索存储在其中的数据的不同的访问时间。例如,存储器39包括访问时间相对较慢的硬盘驱动区域和访问时间相对较快的随机存取存储器RAM(区域)。采用传统的处理技术通过预先将可能需要的数据缓存到RAM中来提高处理速度。
存储器39包括存储网关13所使用的程序例程的区域49、存储数据的区域51和提供工作存储的区域53。
具体来说,程序例程的存储区域49存储:
- 主控制(Master_Control)例程55;
- 处理传入电子邮件(Process_Incoming_Email)例程57;和
- 处理外发电子邮件(Process_Outgoing_Email)例程59。
被存储数据的存储区域51存储在处理传入和外发电子邮件期间所使用的准则/规则的集合61。
密钥服务器
如图3所示,密钥服务器19包括通过总线系统81互连的LAN接口71、操作员接口73、处理器75、实时时钟77和存储器79。
LAN接口71以网络信号83的形式从LAN 1的其余部分接收数据且向LAN 1的其余部分输出数据。操作员接口73包括供操作员将数据输入密钥服务器19的键盘(未在图3中示出)和允许操作员读取密钥服务器19所产生的数据的显示器(未在图3中示出)。操作员接口73还包括CD-ROM读写器,通过该CD-ROM读写器,存储在CD-ROM85上的数据可以输入到密钥服务器19中,或者由密钥服务器19产生的数据可以写入到可记录的CD-ROM85上。
实时时钟77提供由密钥服务器19使用的时间和日期信息。
处理器75根据存储在存储器79中的程序例程执行处理操作。这些程序例程可以在生产过程中存储,也可以通过操作员接口73或LAN接口71输入到密钥服务器19。程序例程处理存储在存储器79中的数据,以及通过操作员接口73或LAN接口71接收的数据。
以与网关13的存储器39相同的方式,存储器79由不同类型的存储器组成,这些不同类型的存储器分别具有不同访问时间,并且通过预先将可能需要的数据缓存到快速访问时间存储器中,传统的处理技术被用来提高处理速度。
存储器79包括存储密钥服务器19所使用的程序例程的区域87、存储数据的区域89和提供工作存储器的区域91。
具体来说,程序例程的存储区域87存储:
- 主控制(Master_Control)例程93;
- 登记服务器(Enrol_Server)子例程95;
- 启动用户密钥(Initiate_User_Key)子例程97;
- 新用户(New_User)子例程99;
- 下载密钥(Download_Key)子例程101;
- 更新密钥(Update_Key)子例程103;
- 加密消息(Encrypt_Message)子例程105;和
- 解密消息(Decrypt-Message)子例程107。
被存储数据的存储区域89存储:
- 传送密钥储存器109,存储将密钥服务器19与密钥服务器传送密钥进行关联和将LAN 1的各个用户与相应的用户传送密钥进行关联的表格;
- 当前密钥储存器111,存储密钥服务器19的当前私有密钥和LAN1的各个用户的当前私有密钥;
- 未来密钥储存器113,存储密钥服务器19和LAN 1的用户的私有密钥以供将来使用;
- 密钥档案115,存储先前已被使用过的加密密钥;和
- 根公共密钥储存器117,存储包括根公共密钥
的公共密钥证书。
应该理解,需要对存储在被存储数据的存储区域89中的加密密钥信息的访问进行限制。具体来说,使用由诸如Windows和UNIX之类的现代操作系统提供的传统安全数据存储技术来保证加密密钥信息仅可以由专用用户来访问,规定的程序例程在该专用用户的上下文中运行。
LDAP服务器
如图4所示,LDAP服务器17具有通过总线系统129互连的网络接口121、操作员接口123、处理器125和存储器127。
网络接口121以网络信号131的形式从LAN 1的其余部分接收数据且向LAN 1的其余部分输出数据。
操作员接口123包括允许操作员将数据输入LDAP服务器17的键盘和允许操作员读取LDAP服务器17所产生的数据的显示器。操作员接口123还包括CD-ROM读写器,通过该CD-ROM读写器,存储在CD-ROM 133上的数据可以被输入到LDAP服务器17中,或者数据可以被写入到可记录的CD-ROM 133上。
处理器125根据存储在存储器127中的程序例程执行处理操作。这些程序例程可以在生产过程中存储,也可以通过操作员接口123或LAN接口121输入到LDAP服务器17。程序例程处理存储在存储器127中的数据,以及通过操作员接口123和LAN接口121接收的数据。
以与网关13的存储器39相同的方式,存储器127由分别不同类型的存储器组成,这些不同类型的存储器具有不同的访问时间,并且通过预先将可能需要的数据缓冲到快速访问存储器中,传统的处理技术被用来提高处理速度。
存储器127包括存储LDAP服务器17所使用的程序例程的区域135、存储数据的区域137和提供工作存储器的区域139。
具体来说,程序例程的存储区域135存储:
- 主控制(Master_Control)例程141;
- 检查令牌(Check_Token)子例程143;和
- 处理请求(Process_Request)子例程145。
除其它数据之外,被存储数据的存储区域137还存储具有LAN 1的各个用户的项目149a-149c的用户数据库147。如图5中所示,用户数据库中的各个项目149存储:
- 登录信息161,包括用户姓名和密码;
- 等级信息163,指示用户在公司的等级中的位置;
- 权限信息165,指示允许用户在LAN 1中执行的操作(例如用户是否具有管理员权限);和
- 电子邮件地址信息167。
受托第三方服务器
如图6所示,T3P服务器5具有通过总线系统181互连的网络接口171、操作员接口173、处理器175、实时时钟177和存储器179。
网络接口171以网络信号183的形式从因特网7接收数据且向因特网7输出数据。操作员接口173包括供操作员将数据输入T3P服务器5的键盘(未在图6中示出)和允许操作员读取T3P服务器5所产生的数据的显示器(未在图6中示出)。操作员接口173还包括CD-ROM读写器,通过该CD-ROM读写器,存储在CD-ROM 185上的数据可以被输入到T3P服务器5中,或者由T3P服务器5产生的数据可以被写入到可记录的CD-ROM 185上。
实时时钟177提供由T3P服务器5使用的时间和日期信息。
处理器175根据存储在存储器179中的程序例程执行处理操作。这些程序例程可以在生产过程中存储,也可以通过操作员接口173或网络接口171输入到T3P服务器5。程序例程处理存储在存储器179中的数据,以及通过操作员接口173或网络接口171接收的数据。
以与网关13的存储器39相同的方式,存储器179由不同类型的存储器组成,这些不同类型的存储器分别具有不同的访问时间,并且通过预先将可能需要的数据缓存到快速访问时间存储器中,传统的处理技术被用来提高处理速度。
存储器179包括存储T3P服务器5所使用的程序例程的区域187、存储数据的区域189和提供工作存储器的区域191。
具体来说,程序例程的存储区域187存储:
- 主控制(Master_Control)例程193;
- 注册密钥服务器(Register_Key_Server)子例程195;
- 生成根密钥(Generate_Root_Keys)子例程197;
- 计算私有密钥(Calculate_Reivate_Keys)子例程199;和
- 更新根密钥(Update_Root_Keys)子例程201。
被存储数据的存储区域189存储:
- 有效根密钥信息203,存储当前使用的根公共密钥
和根私有密钥
- 未来根密钥信息205,存储未来将使用的根公共密钥和根私有密钥对;
- 根密钥档案信息207,存储先前已被使用过的根公共密钥和根私有密钥对,并且存储各个根公共密钥和根私有密钥对被使用的时间段;
- 密钥服务器数据库209,存储关于由T3P服务器5注册的密钥服务器的信息;
- 客户数据库211,存储关于由T3P服务器5注册的单个用户的信息,包括针对各个用户的相关联的传送密钥和标识任何被允许接收用户的私有密钥的密钥服务器的信息;和
- T3P服务器密钥储存器213,存储与T3P服务器相关联的公共密钥/私有密钥对。
现在将描述该实施例的电子邮件消息接发系统中执行的主要操作。
密钥服务器的安装
密钥服务器19的安装是由操作员使用密钥服务器19的操作员接口73启动安装进程而开始的。响应于操作员启动安装进程,主控制例程93启动登记服务器子例程95,现在参考图7A和7B描述登记服务器子例程95。
在S1,登记服务器子例程95启动之后,在S3,密钥服务器19使用操作员接口73的显示器来显示注册表格。注册表格包括数据项目字段,所述数据项目字段用于接收密钥服务器19的操作员的联系信息和用于制定密钥服务器19期望获得私有密钥的对应电子邮件地址的范围。该电子邮件地址的范围可以例如对应于特定的电子邮件地址、特定的域范围(例如abc.co.uk的所有用户)或子域范围(例如def.abc.co.uk的所有用户)、或电子邮件地址、域范围及子域范围的组合。
在S5,接收输入的电子邮件组信息和联系信息之后,密钥服务器19在S7生成随机会话密钥。然后,密钥服务器19使用由与T3P服务器5相关联的公共密钥证书指定的公共密钥(如果需要的话从因特网下载该公共密钥),来对输入的电子邮件地址组信息、密钥服务器19的电子地址信息和所生成的会话密钥进行加密。密钥服务器19接着在S11向T3P服务器5发送请求注册密钥服务器19和包括已加密数据的HTTPS信号。
在S13,一旦接收到请求密钥服务器注册的HTTPS信号,T3P服务器5的主控制例程193即启动注册密钥服务器子例程195。T3P服务器5使用T3P服务器5的私有密钥来对已加密数据进行解密以复原电子邮件组信息、电子地址信息和会话密钥。T3P服务器5然后在S15生成随机传送密钥,在下文中该随机传送密钥称作密钥服务器传送密钥。该密钥服务器传送密钥用于对在T3P服务器5与密钥服务器19之间发送的数据进行对称加密。
在生成密钥服务器传送密钥之后,T3P服务器5在S17将该密钥服务器传送密钥分为两部分,然后使用已复原的会话密钥对每个部分进行对称加密。然后在S19,T3P服务器5向密钥服务器19的网络地址发送输送已加密密钥服务器传送密钥的一部分的HTTPS信号。接着在S21,T3P服务器5等待,直到对密钥服务器19的操作员接收指定电子邮件地址组的私有密钥的授权被T3P服务器5的操作员确认为止。该确认是根据预定义的程序来进行的,除其它事情之外,该预定义的程序包括检查联系信息中所制定的人已与正确地电子邮件地址组相关联。在接收到该确认之后,在S23,T3P服务器5向密钥服务器19的电子邮件地址发送输送已加密密钥服务器传送密钥的另一部分的电子邮件。
在S25,一旦接收到输送已加密密钥服务器传送密钥的第一部分的HTTPS信号,在S27,密钥服务器19即等待输送加密的密钥服务器传送密钥的另一部分的电子邮件。在S29,一旦接收到输送已加密密钥服务器传送密钥的另一部分的电子邮件,在S31,密钥服务器19即复原密钥服务器传送密钥并将该密钥服务器传送密钥安全地存储在传送密钥储存器109中。然后,在S33,密钥服务器19向T3P服务器5发送请求传输密钥服务器19的私有密钥的信号。
当在S35,T3P服务器5接收到请求密钥服务器19的私有密钥的信号时,T3P服务器5使用当前有效的根私有密钥
生成与密钥服务器19的电子地址信息相对应的私有密钥,使用密钥服务器传送密钥对密钥服务器私有密钥进行对称加密,然后在S37向密钥服务器19发送输送已加密密钥服务器私有密钥的HTTPS信号。
当密钥服务器19接收输送已加密密钥服务器私有密钥的HTTPS信号时,在S41,密钥服务器19复原密钥服务器私有密钥,然后将该密钥服务器私有密钥存储在被存储数据的存储区域89的当前密钥储存器111中。现在已接收到密钥服务器私有密钥,密钥服务器19能够将数字签名添加到发送给T3P服务器5的任意消息上,以允许T3P服务器5验证该消息来源于密钥服务器19并且该消息没有在传输中被篡改。在该说明书中,具有数字签名的消息称作已签名消息。
然后在S43,密钥服务器19执行启动用户密钥子例程97,现在将参考图8A至8C来描述该启动用户密钥子例程97。
在S51,启动用户密钥子例程97开始之后,在S53,密钥服务器19向LDAP服务器17发送请求所有用户电子邮件地址的列表的信号。响应于在S55处对请求信号的接收,LDAP服务器17的主控制例程141启动处理请求子例程145。该子例程确定该请求是对所有用户电子邮件地址的列表的请求,询问用户数据库147以复原所有用户电子邮件地址,然后在S57向密钥服务器19发送输送所有用户电子邮件地址的列表的信号。
在S59,从LDAP服务器17接收到输送用户电子邮件地址的列表的信号之后,密钥服务器19在S61向T3P服务器5发送HTTPS编码信号,该HTTPS编码信号输送请求LAN 1的用户的传送密钥的已签名消息且包括LAN1的用户的电子邮件地址的列表。
在S63,接收到请求与电子邮件地址的列表相对应的传送密钥的HTTPS信号之后,T3P服务器5在S65生成各个用户电子邮件地址的随机用户传送密钥,并将所生成的用户传送密钥存储在客户数据库211中。然后,T3P服务器5在S67使用密钥服务器传送密钥对用户传送密钥和相关联的电子邮件地址对进行对称加密,然后在S69向密钥服务器19发送输送已加密数据的HTTPS信号。
在S71,一旦从T3P服务器5接收到信号,在S73,密钥服务器19即对已加密数据进行解密以复原用户传送密钥,然后在S75将用户传送密钥存储在传送密钥储存器109中。接着在S77,密钥服务器19向T3P服务器5发送HTTPS编码信号,该HTTPS编码信号输送请求LAN 1的用户的用户私有密钥的已签名消息。
在S79,一旦接收到对用户私有密钥的请求,在S81,T3P服务器5即使用计算私有密钥子例程199来计算电子邮件地址的列表中各个电子地址的用户私有密钥。然后T3P服务器5使用用户的用户传送密钥对对应的各个所生成的用户私有密钥进行对称加密,并接着使用密钥服务器传送密钥对得到的已加密用户密钥进行进一步对称加密。然后在S83,T3P服务器5向密钥服务器19发送输送已加密用户私有密钥的HTTPS编码信号。
在S85接收到输送已加密用户私有密钥的HTTPS信号之后,在S87,密钥服务器19使用密钥服务器传送密钥和对应于各个用户的用户传送密钥对用户私有密钥进行解密,以便恢复用户私有密钥,并将用户私有密钥存储在被存储数据的存储区域89的当前密钥储存器111中。然后在S89启动用户密钥子例程97结束。
返回图7B,在执行启动用户密钥子例程97之后,在S45登记服务器子例程结束。
新用户
如果在初始安装之后,密钥服务器19接收到作为通过LAN的网络信号或作为操作员接口73输入的注册新用户请求,则密钥服务器19启动新用户子例程99。
新用户子例程向T3P服务器5发送针对新用户的用户传送密钥的已签名请求。一旦接收到该请求,T3P服务器5即生成并存储新用户传送密钥,使用密钥服务器传送密钥对该新用户传送密钥进行加密,并向密钥服务器19发送该已加密新用户传送密钥。一旦接收到该已加密新用户传送密钥,密钥服务器19对该新用户传送密钥进行解密并存储。
然后密钥服务器19向T3P服务器19发送针对新用户的私有密钥的请求,T3P服务器5使用计算私有密钥子例程199来计算新用户私有密钥。然后,T3P服务器5使用新用户传送密钥和密钥服务器传送密钥对新用户私有密钥进行加密,并向密钥服务器19发送已加密私有密钥。一旦接收到该已加密私有密钥,密钥服务器19使用新用户传送密钥和密钥服务器传送密钥对该已加密私有密钥进行解密,并存储所复原的新用户私有密钥。
根密钥管理
应该理解,用户私有密钥的安全性依赖于保密的根私有密钥
作为预防措施,在该实施例中,有规律地改变根私有密钥
同样也使所有用户私有密钥有规律地改变。
具体来说,在由T3P服务器5的实时时钟177确定的预定时刻,T3P服务器5的主控制例程193启动更新根密钥子例程199,然后该更新根密钥子例程199将有效根私有密钥
和根公共密钥
对从有效根密钥储存器203中移到根密钥档案207中,将先前生成的根私有密钥
和根公共密钥
对未来根密钥储存器205中移到有效根密钥储存器203中,然后生成新的根私有密钥
和根公共密钥
对,并将所生成的密钥存储在未来根密钥储存器205中。在该实施例中,更新根密钥子例程199在每月的第一天被触发。
在根密钥档案207中存储被替换的有效根公共密钥
/根私有密钥
对允许重新生成从该密钥对生成的用户密钥,从而即使在接收方丢失了所需的用户私有密钥或在其它情况下所需的用户私有密钥不可获得时,仍然能够对在这些根密钥有效期间所加密的电子邮件进行解密。
由于周期性地对有效根密钥进行更新,因此密钥服务器19需要周期性地下载新用户私有密钥。在该实施例中,密钥服务器19的主控制例程93在该月的第十日或第二十日之间的、由密钥服务器19的实时时钟77确定的随机时刻启动下载密钥子例程101,密钥下载子例程101确定来自LDAP服务器17的所有用户电子邮件地址列表,然后向T3P服务器5发送HTTPS信号,该HTTPS信号输送请求针对该电子邮件地址列表的新私有密钥的已签名消息。响应于对该请求的接收,T3P服务器5的主控制例程193启动供应根密钥子例程201,然后根密钥供应子例程201使用计算私有密钥子例程199来利用存储在未来根密钥储存器205中的根私有密钥计算与该电子邮件列表对应的新的用户私有密钥。然后使用与相关联的电子邮件地址相对应的用户传送密钥对所生成的用户私有密钥进行对称加密,接着使用密钥服务器传送密钥对得到的已加密传送密钥进一步进行对称加密。然后将已加密用户私有密钥发送给密钥服务器19。
一旦接收到已加密用户私有密钥,密钥服务器19使用密钥服务器传送密钥和用户传送密钥对已加密的数据进行解密,从而复原用户私有密钥,然后将所复原的私有密钥存储在未来密钥储存器113中。
接下来,与T3P服务器5触发更新根密钥子例程201同时,密钥服务器19的主控制例程93触发密钥更新子例程103,密钥更新子例程103将当前用户密钥储存器111中的已有用户密钥传送到密钥档案115中,并将未来密钥储存器113中的未来用户密钥传送到当前用户密钥储存器111中。
通过在密钥服务器19从T3P服务器5下载替换用户私有密钥时引入随机时序元素,不同的密钥服务器可以在不同的时刻获得新的用户私有密钥,从而使T3P服务器5的处理负载随时间均匀分布。
对传入电子邮件的处理
响应于网关13接收到进入LAN 1的电子邮件,主控制例程55触发处理传入电子邮件子例程57,现在将参考图9A至9B来描述该处理传入电子邮件子例程57。
在S91,一旦响应于接收到传入电子邮件而启动处理传入电子邮件子例程57,在S93,网关13即根据准则/规则储存器61中所制定的规则对所接收的电子邮件执行基于非内容的检查。这些基于非内容的检查包括检查该电子邮件的发送方不在发送方黑名单中和/或检查诸如主题头等的头部信息不与已知的垃圾电子邮件或病毒感染的电子邮件的头部信息匹配。
如果网关13在S95确定所接收的电子邮件没有通过一个或多个基于非内容的检查,则网关13在S97隔离所接收的电子邮件,并且该子例程在S99结束。
如果网关13在S95确定所接收的电子邮件通过了基于非内容的检查,则网关13在S101检查该电子邮件是否被加密。如果网关13确定该电子邮件已被加密,则网关13在S103向密钥服务器19发送该电子邮件,以供解密。在S105一旦接收到该已加密电子邮件,密钥服务器19的主控制例程93在S107执行解密消息子例程107。
解密消息子例程107确定该电子邮件的接收方和该电子邮件的发送时间,并查找该接收方的在该电子邮件的发送时间有效的用户私有密钥。通常,该密钥会是该接收方的存储在当前用户密钥储存器111中的用户私有密钥。然而,用户私有密钥也有可能自从该电子邮件的发送时间之后已经被更新,在这种情况下,需要从密钥档案115中检索该接收方的在该电子邮件被发送时有效的用户私有密钥。在检索到正确的用户私有密钥之后,解密消息子例程107使用检索到的用户私有密钥对该消息进行解密。然后,密钥服务器19在S107向网关13发送已解密的消息。
如果网关13确定所接收的电子邮件没有被加密或者在从密钥服务器19接收到已解密的消息之后,网关13在S113根据准则/规则储存器61中存储的规则对该消息的内容执行基于内容的检查。在该实施例中,这些检查包括对表现出垃圾电子邮件的内容进行病毒检查和启发式检查。
如果网关13在S115确定所接收的电子邮件没有通过一个或多个基于内容的检查,则网关13在S117隔离该电子邮件,并且处理传入电子邮件子例程57在S119结束。如果网关13在S115确定所接收的电子邮件通过所有的基于内容的检查,则网关13在S121向邮件服务器15转发该电子邮件,以等待用户的访问,并且处理传入电子邮件子例程57在S123结束。
对外发电子邮件的处理
响应于网关13接收到从LAN 1外发的电子邮件,主控制例程55触发处理外发电子邮件子例程59,现在将参考图10来描述处理外发电子邮件子例程59。
在S131启动处理外发电子邮件子例程59之后,网关13在S133根据准则/规则储存器61中所存储的规则对外发电子邮件执行检查。在该实施例中,这些检查包括关于该电子邮件是否应该被加密的检查。例如,准则/规则储存器61包括来自特定发送方的所有电子邮件都必须被加密或者到特定接收方的所有电子邮件都必须被加密的规则。进一步地,准则/规则储存器61存储与对外发电子邮件的内容的启发式分析相关联的规则,使得与特定主题相关的电子邮件必须被加密。
如果在S135网关13确定该电子邮件不需要加密,则网关13在S137以传统方式将该电子邮件传递到因特网7的其余部分,并且处理外发电子邮件子例程59在S139结束。然而,如果网关13在S137确定一个或多个检查表明该电子邮件应该被加密,则网关13在S141向密钥服务器19发送对该电子邮件进行加密的请求以及该电子邮件以供加密。
一旦在S143接收到请求加密的电子邮件,密钥服务器19即在S145执行加密消息子例程105。首先,加密消息子例程105生成随机会话密钥,并使用该随机会话密钥对该电子邮件的消息部分进行对称加密,以形成已加密电子邮件的DEM部分。然后,加密消息子例程105使用有效根公共密钥和该发送方及各接收方的电子邮件地址来计算该电子邮件的发送方和该电子邮件的各接收方的用户公共密钥。接着,加密消息子例程105使用计算出的该发送方的用户公共密钥对该电子邮件的会话密钥进行非对称加密,然后使用计算出的各个接收方的用户公共密钥对会话密钥独立进行非对称加密,并组合所有的已加密会话密钥,以形成已加密电子邮件的KEM部分。然后,密钥服务器19在S147向网关13发送已加密电子邮件。
一旦在S149接收到已加密电子邮件,网关13在S151向因特网发送该已加密电子邮件,并且在S153处理外发电子邮件子例程结束。
第二实施例
在第一实施例中,密钥服务器19不仅存储用户私有密钥,还执行任何需要的加密和解密操作。这是一个优势,原因在于用户工作站不需要任何超出传统电子邮件程序的东西。然而,可能会期望保证电子邮件的已加密版本被递送给用户计算机。例如,用户可能能够通过因特网访问存储在邮件服务器中的邮件消息,在这种情况下,优选地,已加密电子邮件被递送给用户计算机并且由用户计算机来执行解密。
现在将参考图11至14来描述第二实施例,其中加密插件安装在各用户计算机的电子邮件程序中,以允许用户计算机执行加密操作。
在第二实施例中,T3P服务器除了增加新用户子例程之外,与第一实施例的T3P服务器相同,密钥服务器除了对新用户子例程99进行修改之外,与第一实施例的密钥服务器19相同,网关除了对处理外发电子邮件子例程59的修改之外,与第一实施例的网关13相同。
如图11所示,在第二实施例中,用户计算机221具有通过总线系统233互连的网络接口223、操作员接口225、处理器227、实时时钟229和存储器231。
网络接口223以网络信号235的形式从LAN 1接收数据且向LAN 1输出数据。操作员接口225包括供操作员将数据输入用户计算机221的键盘(未在图11中示出)和允许操作员读取用户计算机221所产生的数据的显示器(未在图11中示出)。操作员接口225还包括CD-ROM读写器,通过该CD-ROM读写器,存储在CD-ROM 237上的数据可以被输入到用户计算机221中,或者由用户计算机221产生的数据可以被写入到可记录的CD-ROM237中。
实时时钟229提供由用户计算机221使用的时间和日期信息。
处理器227根据存储在存储器231中的程序例程执行处理操作。这些程序例程可以在生产过程中存储,也可以通过操作员接口225或网络接口223输入到用户计算机221。程序例程处理存储在存储器231中的数据,以及通过操作员接口225或网络接口223接收的数据。
以与第一实施例中的网关13的存储器39相同的方式,存储器231由不同类型的存储器组成,这些不同类型的存储器分别具有不同的访问时间,并且通过预先将可能需要的数据缓存到快速访问时间存储器中,传统的处理技术被用来提高处理速度。
存储器231包括存储用户计算机221所使用的程序例程的区域239、存储数据的区域241和提供工作存储器的区域243。
具体来说,存储在程序例程存储区域239中的程序除包括其它之外,还包括:
- 操作系统245;
- 万维网浏览器247;和
- 包括加密插件251的电子邮件程序249。
被存储数据的存储区域241除存储其它数据之外,还存储:
- 用户数据253,提供用户的细节;和
- 加密数据255,存储加密插件251所使用的数据。
如图12所示,加密插件251包括若干个例程,具体包括:
- 主控制(Master_Control)例程261;
- 安装加密插件(Download_Encryption_Plug_In)子例程263;
- 下载密钥(Download_Keys)子例程265;
- 更新密钥(Update_Keys)子例程267;
- 加密消息(Encrypt_Message)子例程269;和
- 解密消息(Decrypt_Message)子例程271。
如图13所示,加密数据255包括:
- 当前用户私有密钥储存器281;
- 未来密钥储存器283;
- 密钥档案285;
- 代理服务器IP地址储存器287;和
- 用户传送密钥储存器289。
现在将描述在该实施例的电子邮件消息接发系统中执行的主要操作。
加密插件的安装
现在将参考图14A至14F来描述加密插件251的安装。
随着用户计算机221的操作员使用操作员接口225激活安装加密插件子例程263,安装过程在S201开始。然后,在S203用户计算机221显示请求输入用户的电子邮件地址的文本输入框。接着,用户计算机221激活万维网浏览器247,并在S205向T3P服务器发送包括所输入的电子邮件地址并请求统一资源定位器(URL)的HTTP信号,从该统一资源定位器中可以获得用户私有密钥。
一旦在S207从用户计算机221接收到信号,T3P服务器即启动新用户子例程,该新用户子例程在S209查找该电子邮件地址是否对应于已注册密钥服务器具有接收私有密钥的权限的电子邮件地址范围之一。一旦发现密钥服务器之一确实具有接收该电子邮件地址的用户私有密钥的权限,T3P服务器即在S211发送输送包括该密钥服务器的URL、该密钥服务器的电子邮件地址和有效根公共密钥的已签名消息的HTTPS编码信号。如果无已注册密钥服务器具有接收该用户电子邮件地址的用户私有密钥的权限,则T3P服务器发送该T3P服务器自身的URL。
一旦在S213从T3P服务器接收到信号,用户计算机221即将该密钥服务器的URL存储在代理服务器IP地址储存器287中。然后,用户计算机221使用所接收的密钥服务器的电子邮件地址和根公共密钥
来计算密钥服务器的公共密钥。接着,用户计算机221生成随机会话密钥,使用密钥服务器公共密钥对所生成的会话密钥进行非对称加密,并在S215向重定向URL发送输送请求用户私有密钥且包括已加密会话密钥数据及提供用户信息的令牌的消息的HTTPS编码信号。
一旦在S217接收到对用户私有密钥的请求,密钥服务器即使用密钥服务器的私有密钥对已加密的数据进行解密,从而复原会话密钥。然后,密钥服务器在S219向T3P服务器发送输送请求该用户的用户传送密钥的已签名消息的HTTPS编码信号。
一旦在S221从密钥服务器接收到对用户传送密钥的请求,T3P服务器即使用数字签名来验证密钥服务器的身份,并且验证该密钥服务器具有接收与用户电子邮件地址相对应的用户私有密钥的权限。在验证密钥服务器的证书之后,T3P服务器在S223生成随机用户传送密钥,使用密钥服务器传送密钥对用户传送密钥进行对称加密,然后向密钥服务器发送输送已加密用户传送密钥的已签名消息。
一旦接收到(在S225)已加密用户传送密钥,密钥服务器即对已加密的数据进行解密,从而复原用户传送密钥,并将用户传送密钥存储在传送密钥储存器中。然后,密钥服务器在S227向T3P服务器发送输送请求用户私有密钥的已签名消息的HTTPS信号。
在S229接收到对用户私有密钥的请求之后,T3P服务器在S231使用有效根私有密钥来计算用户私有密钥。然后,T3P服务器使用用户传送密钥和密钥服务器传送密钥对计算出的用户私有密钥进行对称加密,接着在S233向密钥服务器发送已加密的用户私有密钥。
一旦在S235接收到已加密用户私有密钥,密钥服务器使用密钥服务器传送密钥和用户传送密钥对已加密的数据进行解密,从而复原用户私有密钥。然后密钥服务器在S237向LDAP服务器发送请求以检查令牌的有效性。在S239接收到验证令牌的请求之后,LDAP服务器启动检查令牌(Check_Token)子例程143,检查令牌子例程143在S241检查该令牌与当前登录到LAN 1的、具有对应于用户私有密钥的电子邮件地址的用户相一致,并在S243向密钥服务器发送有效性检查的结果。
一旦在S245接收到令牌有效性检查的结果,密钥服务器即在S247确定令牌的有效性是否已由LDAP服务器确认。如果令牌的有效性已被确认,则密钥服务器在S249使用会话密钥对用户传送密钥进行对称加密,并向用户计算机221发送输送已加密用户传送密钥的HTTPS信号。
在S251接收到已加密用户传送密钥之后,用户计算机对已加密的数据进行解密,从而复原用户传送密钥,并将所复原的用户传送密钥储存在当前用户传送密钥储存器289中。然后,用户计算机在S253发送对用户私有密钥的请求。一旦在S255接收到对用户私有密钥的请求,密钥服务器即在S257使用用户传送密钥对用户私有密钥进行对称加密,并向用户计算机221发送已加密用户私有密钥。在S259接收到已加密用户私有密钥之后,用户计算机221使用用户传送密钥对已加密的数据进行解密,从而复原用户私有密钥,并将用户私有密钥存储在当前用户私有密钥储存器251中。然后安装加密插件子例程在S261结束。
如果密钥服务器确定令牌还没有被验证,例如LDAP服务器由于某些原因而离线,那么密钥服务器需要保证该用户计算机的操作员实际上被授权使用与该用户私有密钥相对应的电子邮件地址。这是通过以类似于第一实施例中T3P服务器向密钥服务器发送密钥服务器传送密钥的方式来向用户发送用户传送密钥而完成的。
具体来说,密钥服务器在S263将用户传送密钥分为两部分,并使用会话密钥对各部分进行对称加密。然后,密钥服务器在S265向用户计算机221的网络地址发送输送已加密传送密钥的一部分的HTTPS信号。在S267接收到已加密传送密钥的第一部分之后,用户计算机221在S269等待输送已加密传送密钥的另一部分的电子邮件。同时,密钥服务器在S271向与用户私有密钥相对应的电子邮件地址发送输送已加密传送密钥的另一部分的电子邮件。
一旦在S273接收到该电子邮件,用户计算机即在S275使用会话密钥对已加密传送密钥的两部分进行解密,从而复原用户传送密钥。
然后,用户计算机221在S277向密钥服务器发送请求用户私有密钥的信号。一旦在S279接收到该请求时,密钥服务器使用用户传送密钥对用户私有密钥进行对称加密,并在S281向用户计算机221发送已加密的数据。一旦在S283接收到已加密的数据,用户计算机221即在S285对已加密的数据进行解密,从而复原用户私有密钥,然后将该用户私有密钥存储在当前用户私有密钥储存器281中。然后安装加密插件子例程在S287结束。
密钥管理
在安装之后,用户计算机221使用下载密钥子例程265从密钥服务器下载新的用户私有密钥,并且使用更新密钥子例程267更新有效密钥。具体来说,下载密钥子例程265在密钥服务器下载新的用户私有密钥的时段结束与密钥服务器更新有效密钥的时间中间的、由实时时钟229确定的随机时间被执行,并且所下载的用户私有密钥被保存在未来密钥储存器283中。更新密钥子例程267在T3P服务器更新根密钥的同时被启动,并将当前用户私有密钥从当前用户密钥储存器281中移到密钥档案285中,并将新的用户私有密钥从未来密钥储存器中移到当前私有密钥储存器中。
发送电子邮件
在该实施例中,用户计算机的操作员具有决定是否对电子邮件进行加密的选择权。具体来说,电子邮件程序工具栏包括可以通过操作员激活来使电子邮件变为私有的选项按钮。
如果操作员选择使电子邮件变为私有,则加密消息子例程269被激活,加密消息子例程269根据接收方的电子邮件地址和根公共密钥
来计算各个接收方的用户公共密钥,并使用先前描述的KEM-DEM生成已加密电子邮件。具体来说,已加密电子邮件包括输送使用随机会话密钥被对称加密的消息的DEM部分和输送与使用发送方和各个接收方的用户公共密钥被非对称加密的会话密钥相对应的已加密会话密钥序列的KEM部分。
在该实施例中,当网关13接收到外发已加密电子邮件时,处理外发电子邮件子例程被修改为识别并缓存已加密电子邮件,并向密钥服务器自动传递已加密电子邮件的副本,以解密。由于密钥服务器能够使用发送方的用户私有密钥从KEM部分中复原出会话密钥,然后使用所复原的会话密钥来对DEM部分进行解密,因此密钥服务器能够对已加密电子邮件进行解密。接着,密钥服务器向网关发送已解密的电子邮件,以进行基于内容的检查。如果电子邮件通过该基于内容的检查,则所缓存的已加密电子邮件被传递到因特网,否则所缓存的已加密电子邮件被隔离。
接收电子邮件
在该实施例中,如果网关13接收到传入电子邮件消息,则以与第一实施例相同的方式来执行基于非内容的检查和基于内容的检查。然而,在该实施例中,由网关13缓存所接收到的已加密电子邮件的副本,并且如果已加密电子邮件通过基于非内容的检查和基于内容的检查,则所缓存的电子邮件被传递到邮件服务器15,用于递送给用户。一旦接收到已加密电子邮件,用户计算机即执行解密消息子例程271,消息解密子例程271使用用户私有密钥对接收到的电子邮件进行解密。
改进和其它实施例
在所描述的实施例中,T3P服务器生成根私有密钥和根公共密钥对。这种生成涉及某些形式的随机数生成,从而使生成的密钥不是预定义的。一旦根私有密钥被生成,用户私有密钥就可以根据该根私有密钥和某些形式的用户的标识符被计算出。类似地,一旦根公共密钥被生成,用户公共密钥就可以根据该根公共密钥和用户的标识符被计算出。具体来说,用户私有密钥和公共密钥的计算不需要任意随机数生成,并且是可重复的计算,无论何时何地执行都会得到相同的结果。
在所描述的实施例中,用户的电子邮件地址被用作用户标识符。也可以使用其它形式的标识符,但是由于为了给接收方发送电子邮件消息,发送方总是能得知接收方的电子邮件地址,因此电子邮件地址很方便。
如上所述,发送方能够使用接收方的电子邮件地址和根公共密钥来计算该接收方的公共密钥。因此,不需要验证接收方的公共密钥的真实性(例如通过公共密钥证书),尽管根公共密钥通常组成公共密钥证书的一部分,该公共密钥证书包含了以传统方式来确认根公共密钥的真实性的信息。值得注意的是,即使接收方没有向T3P服务器注册,发送方也能够向该接收方发送已加密电子邮件。如果这种情况发生,则接收方仅需要向T3P服务器注册,以获取可用于对已加密的消息进行解密的用户私有密钥。
在所描述的实施例中,使用WO 03/017559中所讨论的非对称加密算法。应该理解,也可以使用具有相同的总体功能的可替换算法,例如R.Sakai和M.Kasahara在报告2003/054的密码技术电子印刷档案(Cryptology ePrintarchive)中的“ID based cryptosystems with pairing on elliptic curve(基于ID的在椭圆曲线上成对的密码系统)”中所讨论的算法以及Chen等人在报告2005/224的密码技术电子印刷档案中的“An Efficient ID-KEM Based On theSakai-Kasahara Key Construction(基于Sakai-Kasahara密钥结构的有效ID-KEM)”中所讨论的算法(由此将这两个文献通过引用合并于此)。
进一步,非对称加密算法不需要使用客户身份来确定客户的公共密钥,并且可以使用任何非对称加密算法,例如RSA算法。
在所描述的实施例中,使用各个接收方的相应公共密钥来对电子邮件进行加密,从而使各个接收方能够使用相应的私有密钥来对该电子邮件进行解密。以此方式,仅有期望的接收方能够对该电子邮件进行解密。应该理解,可替换地,或作为补充地,该电子邮件可以使用发送方的私有密钥被签名。以此方式,每个接收方能够验证该电子邮件发自该发送方且未被篡改。
尽管在所描述的实施例中使用AES加密算法来执行对称加密,但是应该理解,也可以使用其它对称加密算法,例如DES算法。
在第一实施例中,连接至网络的密钥服务器充当连接至局域网的用户组的加密设备。在第二实施例中,密钥服务器充当代理服务器,以方便将信息从T3P服务器下载到局域网的用户。
在这两个实施例中,密钥服务器用于针对电子邮件卫生的目的来监控传入LAN的已加密电子邮件,而在第二实施例中,密钥服务器还用于针对电子邮件卫生的目的来监控从LAN外发的电子邮件。尽管这种操作是优选的,但并不是必需的。
在所描述的实施例中,当密钥服务器请求网络用户的新的私有密钥时,密钥服务器首先询问LDAP服务器,以获取该网络所有用户的细节,然后请求该网络所有用户的私有密钥。可替换地,密钥服务器可以保留需要加密服务的用户的记录,然后仅请求这些用户的新的私有密钥,以便减小T3P服务器处的处理负载和网络通信量。接下来如果用户私有密钥没有被密钥服务器存储的用户请求加密服务,则密钥服务器可以仅向T3P服务器发送对合适的用户私有密钥的请求。
在第一实施例中,密钥服务器从LDAP服务器获取LAN用户的细节。然而,如果该信息已存储在LAN的其它地方,则不需要从LDAP服务器获取该用户的细节。
在第二实施例中,单个密钥服务器介于局域网用户与由加密机构操作的T3P服务器之间。可替换地,密钥服务器的等级可以介于T3P服务器与网络用户之间,使得T3P服务器向第一级密钥服务器组供应加密密钥,各个第一级服务器向一个或多个第二层密钥服务器供应加密密钥,等等,直到最低层密钥服务器向网络用户供应加密密钥为止。
在第二实施例中,密钥服务器仅响应于来自LAN用户的请求而下载该用户的加密密钥。可替换地,密钥服务器可以自动下载LAN的所有用户或一些用户的加密密钥,从而在接收到用户请求时,密钥服务器能够立即供应加密密钥。
在所描述的实施例中,密钥服务器、LDAP服务器、网关和邮件服务器是连接至LAN的分离部件。可替换地,这些部件中的两个或更多个部件的功能可以被集成到连接至LAN的单一设备中。
尽管在所描述的实施例中,密钥服务器连接至局域网,并且代表该局域网用户的T3P服务器,但并不是必需的。例如,网络用户可以是由两个或更多个互连局域网组成的广域网的用户,对于具有散布于多个地理分离地点的内部计算机网络的大型公司来说通常是这种情况。
在所描述的实施例中,网关对引入和外发电子邮件执行基于非内容的检查,并且如果电子邮件通过基于非内容的检查,则网关执行基于内容的检查。在可替换的实施例中,基于非内容的检查可以指定,如果符合规则(例如如果接收方是特定的接收方),则可以跳过基于内容的检查。
在图示的实施例中,受托第三方服务器9存储根私有密钥,并使用客户身份和该根私有密钥来计算私有客户密钥。然而,必需的是受托第三方服务器9有权访问客户私有密钥。因此,在可替换的实施例中,受托第三方服务器9可以直接存储各个客户的私有密钥,或可替换地从分立的设备上访问期望的客户私有密钥。
在所描述的实施例中,网络信号作为http或https信号被发送给系统部件的网络地址。应该理解,这些网络地址可以静态的,也可以是动态的。进一步地,应该理解,也可以使用除http和https之外的网络协议。
在所描述的实施例中,工作站和用户计算机是传统的个人计算机。应该理解,这种个人计算机可以是例如膝上型计算机或台式计算机。进一步地,用户计算机可以由诸如瘦客户端(thin client)或个人数字助理(PDA)的其它类型的计算机设备形成。
尽管本发明所描述的实施例包括计算机设备和在该计算机设备中执行的处理,但是本发明还可以扩展到计算机程序,尤其是适于将本发明付诸实践的载体上的计算机程序。该程序可以采用源代码、目标代码、代码中间源和诸如被部分编译形式的目标代码的形式,也可以采用适于使用根据本发明的过程的实施的任何其它形式。
该载体可以是能够承载程序的任何实体或设备。例如,该载体可以包括诸如ROM之类的储存器介质,例如CD-ROM或半导体ROM,也可以包括磁记录介质,例如软盘或硬盘。进一步地,该载体可以是诸如可以通过电缆或光缆或通过无线电或其它手段输送的电子信号或光信号的可传输载体。
当该程序具体实现为可以通过线缆或其它设备或工具直接输送的信号时,该载体可以由这类线缆或其它设备或工具构成。可替换地,该载体可以是程序被嵌入其中的集成电路,该集成电路适于执行相关处理或在执行相关处理时使用。
尽管在所描述的实施例中,本发明是使用软件实现的,但是应该理解,可替换地,本发明可以使用硬件设备或硬件设备与软件的组合来实现。