电子邮件IBE加密研究
2018-03-23龙毅宏
龙毅宏,黄 强,王 维
(武汉理工大学信息工程学院,湖北 武汉 430070)
0 引言
电子邮件是人们常用的信息传递工具,许多的敏感和重要信息都是通过电子邮件传送的,保证电子邮件安全非常重要。目前保证电子邮件安全的技术方案主要有两种,PGP(Pretty Good Privacy)[1],和S/MIME(Secure/Multipurpose Internet Mail Extensions)[2],这两种技术方案都是采用公钥密码技术,都能实现电子邮件的消息鉴别和数据保密。S/MIME 基于 PKI(Public Key Infrastructure)[3,4]安全技术体系,它通过 CA认证机构签发的数字证书实现电子邮件的数字签名和数据加密。PGP与S/MIME的公钥管理机制不同,它的公钥发布不是通过 CA认证机构,而是通过社交网络传播。目前的大部分的标准邮件客户端,如微软 Outlook、Mozilla Thunderbird(雷鸟),都支持基于数字证书的电子邮件安全保护,同时,许多的邮件客户端也通过插件(Plug-in)技术支持基于PGP的邮件安全。
采用传统的公钥密码技术对电子邮件进行邮件加密的最大问题是:邮件加密方必须事先获得并配置加密邮件接收方的公钥(如数字证书),并在加密邮件接收方的公钥更新后及时获得并配置接收方更新的公钥,这对用户特别是普通用户而言是一件非常麻烦的事。实际上,数据加密方要事先获得加密数据接收方的公钥是传统公钥密码体制的一个普遍性的问题,这一问题妨碍了公钥密码技术的广泛应用。为了解决公钥密码体制在应用中存在的问题,人们提出了基于标识的密码体制(Identity Based Cryptography,IBC)[5-10],包括基于标识的签名(Identity Based Signature)[5,6]和基于标识的加密(Identity-Based Encryption)[7-10]。IBC密码体制属于公开密钥密码体制,其将用户的一个身份标识(比如 Email地址、手机号、身份证号等)作为用户的公钥,同时用户身份标识对应一个私钥,私钥由一个私钥生成器(Private Key Generator,PKG)根据用户标识计算得到。
基于IBC(IBE)进行加密数据交换时(如加密邮件),加密数据的发送方(如加密邮件的发送方)只需使用加密数据接收方(如加密邮件接收方)的一个身份标识(如接收方的电子邮箱地址)作为公钥进行数据加密即可;而加密数据(加密邮件)的接收方使用从 PKG获得的身份标识对应的私钥对加密数据(加密邮件)进行解密即可。
IBC特别是IBE很好地解决了公钥分发、获取的问题,使得公钥密码技术的应用变得容易。虽然 IBE技术具有很多独特的优点,但它目前的最大的问题是缺少应用的支持,目前IBE应用研究得最多的还是电子邮件加密[11-14]。但已有的方案都存在不足。刘镪等人[11]以及赵旭东[12]的论文都没有给出IBE邮件客户端的具体实现,更没有说如何在已有邮件客户端上实现IBE邮件加密。刘丹[13]等人则是自己开发出了基于IBE安全的电子邮件系统,不能在已有邮件客户端上实现 IBE邮件加密、解密。李海江[14]采用Outlook的加载项技术,由Outlook的加载项直接进行电子邮件IBE加密、解密。这种方案本文作者也曾采用过,这种方案存在如下问题:(1)与Outlook已有的安全功能不兼容,比如,Outlook本身有发送加密邮件的选项,如果用户发送时选择了 Outlook的加密选项,则IBE加密无法正常实现;(2)处理起来非常麻烦,比如,加载项自己要判断接收的邮件是否被加密,而且是否被 IBE加密;(3)在邮件有附件时处理起来更麻烦;(4)与S/MIME不兼容。
本研究以电子邮件IBE加密为突破口,解决IBE的应用问题。
1 基于伪RSA密钥的IBE密码技术
目前的很多加密应用都支持基于 RSA公开密钥密码算的数据加密和解密,因此,如果引入一种伪RSA密钥,以伪RSA密钥为桥梁,将使得使用RSA密码算法的加密应用能够使用IBE密码算法进行数据的加密和解密,这种案具体如下。
所谓伪RSA密钥,即假RSA密钥,包括伪RSA公钥和伪RSA私钥,它的密钥数据在数据结构上与RSA密钥的密钥数据一样,但它的密钥数据中存放的不是真正的RSA密钥数据,而是IBE密钥数据。为了区分真正的RSA密钥和伪RSA密钥可以采用在 RSA密钥数据结构的某几个约定的数据位上加上特殊的标志,所选择的这些数位对于真正的RSA密钥而言,不可能是这个特殊标志的值,或者是这个特殊标志的值的概率几乎为零。
基于伪 RSA密钥,再实施一个通过标准 RSA密码接口,如Windows CSP的CyrptoSPI、RSA公司的PKCS#11[15],提供IBE密码功能的IBE密码模块。当加密应用通过RSA密码接口使用RSA密钥调用密码功能时,IBE密码模块通过RSA密钥数据中的特征位判断使用的RSA密钥是真正的RSA密钥还是伪RSA密钥,并将针对伪RSA密钥的密码功能调用转化成针对相应IBE密钥的密码功能调用。
在IBE的具体应用中,通常将一个身份标识与一个时间段结合,形成一个扩展身份标识:<身份标识> || <时间期限>,这里,<身份标识>指身份标识的字串表示,<时间期限>指时间段的字串表示(如用2013-8-28:2013-9-28,表示时间期限2013年8月28日到2013年9月28),“||”表示身份标识字串和时间期限字串的组合;用时间期限限定的扩展身份标识仅在对应时间期限用于数据加密,并对应有一个IBE私钥用于数据解密。
采用时间期限对身份标识的使用进行限定降低了身份标识的私钥泄露所带来的风险,但也给基于伪RSA密钥的数据加密和解密带来了额外的问题:如果不同的IBE密钥对对应不同的伪RSA密钥对,那么,IBE密钥对更新后,加密应用的用户需要定时进行伪RSA密钥对的更新和配置,IBE密码模块需要定时创建新的IBE私钥对象,这当然很麻烦。那么,能否将不同的IBE密钥对对应到同一个的伪RSA密钥对?这样将能避免定时进行伪 RSA密钥对的更新和配置的问题。但这又带来额外的问题,进行数据加密时,IBE密码模块可以根据当前时刻知道使用哪个IBE公钥(即扩展身份标识)进行加密,但进行数据解密时,IBE密码模块如何知道使用哪个私钥进行解密?本研究的方案如下:
IBE密码模块通过标准 RSA接口提供密码功能;一个身份标识在IBE密码模块中对应一个IBE密钥组,这个密钥组是由同一个身份标识对应于不同时间段的扩展身份标识对应的IBE私钥或密钥对所组成,这个IBE密钥组对外作为一个密钥对象用一个密钥对象标识符标识、并通过密钥对象标识符对外使用(这与通常的密钥对象不同)。
每个身份标识对应一个伪RSA密钥对,伪RSA公钥和伪 RSA私钥的数据结构中存放的是身份标识或身份标识的散列值,以及一些密码运算时所需的辅助信息。
当密码应用程序和密码管理工具调用IBE密码模块的接口请求生成一个RSA密钥对时,IBE密码模块在内部生成一个(空的)IBE密钥组,并返回生成的IBE密钥组的密钥对象标识符。
当密码应用程序导入并使用一个 RSA公钥进行数据加密时,IBE密码模块根据密钥数据中的特征数据判断导入的RSA公钥是真正的RSA公钥还是伪RSA公钥,若是真正的RSA公钥,则使用RSA密码算法进行数据加密运算,若是伪RSA公钥,则根据当前时刻,确定合适的扩展身份标识,并用扩展身份标识采用IBE密码算法进行数据加密运算;在完成加密后,IBE密码模块将当前使用的扩展身份标识的限定时间段作为附件数据填充到加密运算的结果中(密码运算的直接结果中,非PKCS#11中的密钥标识信息中)。
当密码应用程序以使用 RSA私钥的方式通过IBE密钥组的密钥对象标识符使用密钥对象进行数据解密时,IBE密码模块从待解密的数据中获得加密时的扩展身份标识的限定时间段,然后查看 IBE密钥组中是否有对应时间段的IBE私钥,若有,则使用对应时间段的IBE私钥进行数据解密运算,否则,调用IBE密钥服务客户端、连接IBE密钥服务系统获取对应的IBE私钥。
在需要进行IBE私钥更新或恢复时,IBE密码模块自动调用IBE密钥服务客户端从IBE密钥服务器获取更新的IBE私钥或恢复IBE私钥;在更新或恢复IBE私钥的过程中,IBE密码模块以密码模块中存储的当前有效的IBE私钥作为客户端用户身份证明的私密数据(这样就无需手工干预)。
目前采用公开密钥密码技术(如RSA)的密码应用通常不是直接使用公开密钥对的,而是通过X.509数字证书[16],如RSA X.509数字证书。在进行数据加密时,密码应用通过配置信息找到要使用的数字证书,或者在已有的多个数字证书中提示用户选择要使用的数字证书,然后从数字证书中获取公钥,然后将获取的公钥提交给密码模块进行数据加密运算;而在进行数据解密时,密码应用从加密数据中获得加密时所用数字证书的标识信息(如PKCS#7即CMS[17]格式的加密数据中包含的加密时所用数字证书的签发者名和序列号),然后在证书库或密码模块中找到对应的带私钥的数字证书,然后再使用存储在密码模块中的数字证书的私钥进行数据解密运算。
由于目前的绝大多数公钥密码应用都支持RSA数字证书,因此,使得支持RSA数字证书的密码应用能够使用IBE密码技术进行数据加密、解密的一种方案是引入伪RSA数字证书。所谓伪RSA数字证书,是一种采用X.509标准格式、标识为使用RSA密钥的数字证书,只是数字证书上的用户公钥不是真正的RSA公钥,而是包含用户身份标识的伪RSA公钥,而数字证书的私钥对象是前面所述的IBE密码模块中的IBE密钥组密钥对象。这样,支持RSA数字证书的公钥密码应用可以像使用 RSA数字证书一样使用伪 RSA数字证书进行数据的加密、解密,而通过IBE密码模块实际上被转化为IBE数据加密、解密。
如果伪RSA数字证书也是通过一个CA系统签发,那么此方案有传统数字证书方案一样的问题。对此,本研究的方案如下:
引入一个伪RSA数字证书签发工具,并安装在每个IBE密码算法的使用者(用户)的计算机上;每个用户计算机上的伪 RSA数字证书签发工具自动生成一个带私钥的RSA根CA证书,用于签发伪RSA数字证书,并将生成的RSA根CA证书安装到可信任的根 CA证书库中;每个用户计算机上生成的RSA根CA证书具有一样的签发者名,一样的证书序列号,但对应的RSA密钥对不一样(这不影响伪证书的使用);加密邮件发送者、接收者自己使用工具生成邮件接收者的不带私钥或带私钥的伪伪RSA数字证书。
但这种方案仍存在不足,它需要用户手工操作,本研究通过插件来解决这一问题。
2 基于插件的IBE邮件加密
邮件客户端,如微软的 Outlook,Mozilla的雷鸟等,通常有专门的联系人通讯薄或地址薄;使用数字证书进行邮件加密的邮件客户端会通过一定的方式(手工或其他方式)将联系人的加密数字证书配置在通讯薄或地址薄中的联系人的联系信息中;在进行邮件加密时,邮件客户端从通讯薄或地址薄的联系人信息中获得加密邮件接收者的加密数字证书,并用获得加密数字证书对邮件进行加密。当接收到加密邮件后,邮件客户端会从邮件客户端所使用的密码模块所对应的证书库中查找对应的带私钥的数字证书,然后通过密码模块使用数字证书的私钥对加密邮件进行解密。另外,邮件客户端在进行邮件加密时,还需要使用邮件发送帐户对应的带私钥的数字证书,因此,邮件客户端的要发送加密邮件的帐户还需要配置对应的(发件者本人的)带私钥的数字证书。
邮件客户端使用数字证书进行电子邮件加密的最大问题是加密邮件的发送者需事先获得加密邮件接收者的加密数字证书,并将加密数字证书配置到邮件客户端的联系人通讯薄或地址薄中的联系人信息中,这对于用户而言是一件非常麻烦的事。要使得使用数字证书进行邮件加密的邮件客户端能够通过伪 RSA数字证书实现邮件的IBE加密,并避免用户手工配置邮件接收者的伪RSA数字证书,那么需要通过一定的技术手段自动在联系人通讯薄或地址薄中的联系人信息中自动配置邮件接收者的伪RSA数字证书。
有些邮件客户端,如Outlook,雷鸟等,提供了通过加载项(Add-Ons)扩展程序功能的机制。加载项是插入到邮件客户端的邮件发送和接收或读取处理过程中的一种插件(Plug-in),能对邮件客户端的事件进行响应和处理。本研究的基于加载项(即插件)的电子邮件IBE加密方案如图1所示。
图1 基于加载项的邮件IBE加密方案Fig.1 Add-on based Email Encryption with IBE
这里的邮件客户端是支持使用数字证书进行邮件加密和解密、并提供加载项机制扩展功能的电子邮件专用客户端。
这里的IBE密码模块是前面所述的基于伪RSA密钥及RSA密码接口、提供IBE密码功能的密码模块,此IBE密码模块是(或配置为)邮件客户端进行邮件加密和解密时所使用的密码模块;IBE密码模块中的IBE密钥组密钥对象是带私钥的伪RSA数字证书的私钥对象。
这里的伪 RSA数字证书是作为邮件客户端使用IBE加密算法进行邮件加密和解密桥梁的X.509格式的具有加密用途的伪 RSA数字证书;伪 RSA数字证书被保存在邮件端所使用的密码模块所对应的证书库中(若邮件客户端使用的密码模块是Windows CSP,则对应的证书库是Windows证书库,若是PKCS#11,则证书库在PKCS#11中)。
这里的伪 RSA数字证书生成模块在需要的时候被IBE加载项调用用于生成伪RSA数字证书,并由IBE加载项将所生成的伪RSA数字证书放入到邮件客户使用的密码模块(即IBE密码模块)所对应的证书库中。
这里的IBE密钥服务客户端,是IBE密码模块与IBE密钥服务器交互、获取IBE公开参数以及用户身份标识对应的IBE私钥的动态库。
这里的IBE加载项是扩展邮件客户端功能的插件,在邮件客户端启动以及发送和接收或读取邮件时被触发调用,并对涉及加密邮件的发送和接收或读取操作进行处理。
当电子邮件客户端启动时,IBE加载项检查邮件客户端中的每个发件人邮箱帐户在邮件客户端所使用的证书库中是否有对应的带私钥的伪RSA数字证书,若没有,则调用伪RSA数字证书生成模块生成与发件人邮件帐户相对应的带私钥的伪RSA数字证书;之后,IBE加载项进一步检查邮件客户端中的每个发件人邮箱帐户是否已配置使用带私钥的伪RSA数字证书进行邮件加密,若没有,则进行配置。
当电子邮件客户端发送加密邮件时,IBE加载项根据不同情况分别按如下方式进行处理:
若邮件客户端从联系人通讯薄或地址薄中获取加密邮件接收人的数字证书,则IBE加载项针对当前正待加密的电子邮件的每个邮件收件人,依次检查联系人通讯薄或地址薄中是否有相应的邮件收件人,若没有,则创建相应的联系人,调用伪RSA数字证书生成模块,生成与收件人电子邮件地址相对应的不带私钥的伪 RSA数字证书,并将生成的伪RSA数字证书加入到联系人通讯薄或地址薄中的相应邮件接收人的联系信息中;若有,则进一步检查联系人通讯薄或地址薄中的对应邮件收件人是否有相应的伪RSA数字证书,若没有,调用所述伪RSA数字证书生成模块,生成与收件人电子邮件地址相对应的不带私钥的伪RSA数字证书,并将生成的伪RSA数字证书加入到联系人通讯薄或地址薄中的相应邮件接收人的联系信息中。
若邮件客户端从所使用的密码模块的证书库中获取加密邮件接收人的数字证书,IBE加载项针对当前正待加密的电子邮件的每个邮件收件人,依次检查证书库中是否有相应的伪RSA数字证书,若没有,调用所述伪RSA数字证书生成模块,生成与收件人电子邮件地址相对应的不带私钥的伪RSA数字证书,并将生成的伪RSA数字证书加入证书库中。
当电子邮件客户端接收或读取加密邮件时,IBE加载项在IBE密码模块所对应的证书库中查看是否有当前邮件收件人的带私钥的伪 RSA数字证书,若没有,则调用所述伪RSA数字证书生成模块,生成与当前收件人电子邮件地址相对应的带私钥的伪RSA数字证书,并将生成的带私钥的伪RSA数字证书加入到IBE密码模块所对应的证书库中的相应证书存储区中(邮件客户端启动时IBE加载项已为发件人的每个邮件帐户生成、配置了带私钥的伪RSA数字证书,故此处理通常是不必要的,只有在邮件客户端启动后,用户人为删除了邮件帐户的带私钥的伪RSA数字证书时,这个处理才需要)。
采用以上技术方案后,加密邮件的发送者在发送加密邮件前无需获取和配置收件人的加密数字证书,只需在发送加密邮件时点击邮件客户端的加密按钮,或者只需在邮件客户端的联系人通讯薄或地址薄中相关收件人的联系信息中设置相应的加密选项即可;当需要进行邮件加密时,若联系人通讯簿或地址簿中没有相应收件人的伪RSA数字证书,或者若加密所用证书库中没有相应收件人的伪 RSA数字证书,则邮件客户端的IBE加载项会自动为邮件收件人生成、配置相应的伪RSA数字证书;当邮件客户端接收或读取加密邮件时,若没有相应的带私钥的伪RSA数字证书,则IBE加载项会自动调用伪 RSA数字证书生成模块为用户生成解密邮件所需的带私钥的伪RSA数字证书。
以上描述的是一个一般性的技术方案,针对具体的电子邮件客户端还会有一些特别的处理,下面针对微软Outloo,对基于插件的邮件IBE加密的具体实施作进一步的描述。
3 基于插件的Outlook IBE邮件加密实施
Outlook是微软的邮件客户端,它支持基于数字证书的邮件加密和解密。Outlook所使用的密码模块是Windows CSP,发送方的Outlook从联系人通讯簿中获得加密邮件接收方的加密数字证书,而加密邮件接收方的Outlook从Windows证书库中查找带私钥的数字证书解密被加密邮件。Outlook提供加载项机制用于功能扩展。基于前面所述的基于插件的IBE邮件加密技术方案,Outlook邮件加密的具体技术实施方案如图2所示。
图2 基于插件的Outlook IBE邮件加密的技术方案Fig.2 Plug-in based Outlook IBE Email Encryption
这里的IBE CSP是具有RSA接口、通过伪RSA密钥技术实施 IBE密码功能的 Windows CSP。Outlook使用的证书库是 Windows证书库。这里的IBE加载项采用COM(Component Object Model)技术开发实施,具体可实施_IDTExtensibilty2接口。在实施IBE加载项时有如下几点需要注意:
(1)对于Outlook2003,IBE加载项对Outlook邮件及数据(如联系人通讯簿)的访问采用消息应用程序编程接口(MAPI,Messaging Application Programming Interface),而对于 Outlook2007和Outlook2010及以后版本,则采用 Microsoft.Office.Interop.Outlook接口;
(2)IBE加载项向 Outlook注册要响应ApplicationEvents中的OnStartup (0xF006)事件,对应 Outlook启动;注册要响应 ApplicationEvents中的OnItemSend(0xF002)事件,以及ExplorerEvents中的 OnSelectChange(0xF007)事件,它们分别对应邮件发送和邮件读取事件;
(3)响应OnStartup事件时,IBE加载项针对Outlook中的每个发件人邮件帐户在 Windows证书库中检查是否有对应的带私钥的伪RSA数字证书,若没有,则调用调用伪RSA数字证书生成模块生成发件人邮件帐户对应的带私钥的伪RSA数字证书;
(4)响应OnItemSend事件时,IBE加载项通过检查邮件加密按钮是否按下,确定发送的是加密邮件还是非加密邮件,或者总是假设发送的是加密邮件;在确定是发送加密邮件后,IBE加载项检查确定 Outlook联系人通讯簿中是否有邮件中的接收人,以及在 Outlook联系人通讯簿中的接收人信息中是否配置有用于邮件加密的不带私钥的伪 RSA数字证书,若没有,则进行相应的处理;
(5)响应OnSelectChange时,IBE加载项检查邮件内容(是否是 S/MIME)确定邮件是否加密,或者总是假设邮件是加密的;在确定邮件是加密的后,IBE加载项在Windows证书库中检查是否有收件人的带私钥的伪RSA数字证书,若没有,则调用伪RSA数字证书生成模块生成;
(6)Outlook联系人通讯簿中的联系人可能是一个邮件组,因此,在响应邮发送事件时,IBE加载项要通过联系人通讯簿检查邮件接收者是个人还是一个邮件组,若是一个邮件组,则还需针对邮件组中的每个人在联系人通讯簿中进一步检查是否有相应的联系人信息及伪RSA数字证书,若没有,则作相应的处理;
(7)由于没有相应的应用编程接口,因此Outlook中的某个邮箱要配置安全邮件选项时,用户必须手工选择、配置用于发件人本人的带私钥的签名数字证书和加密数字证书,而选择、配置的用于发件人本人的的带私钥的签名数字证书和加密数字证书来自Windows证书库;用户选择、配置的带私钥的签名数字证书可以是任何一个 CA机构或系统签发的具有签名用途的数字证书,而用户选择、配置的带私钥的加密数字证书即是 IBE加载项在Outlook启动时调用伪RSA数字证书生成模块生成的具有加密用途的带私钥的伪RSA数字证书。
4 应用效果
采用以上所述方案后的Outlook,当用户通过信任中心进行电子邮件安全配置、选择加密数字证书时,由IBE插件生成的、具有加密用途的带私钥的伪RSA数字证书已存在,用户无需手工生成,只需选择就行了。
查看邮件客户端所使用的证书库可以看到,当发送加密邮件时,若没有邮件接收者的伪RSA数字证书,则接收者的伪RSA数字证书会被(插件)自动生成并放置到证书库中。加密邮件接收者读取加密邮件时,若IBE密码模块中没有相应的当前有效IBE私钥解密邮件,则IBE密码模块会自动连接IBE密钥服务器进行IBE私钥获取处理,包括弹出窗口提示用户进行操作;若IBE密码模块中没有之前的IBE私钥解密邮件,则IBE密码模块会自动连接IBE密钥服务器并使用当前有效的IBE私钥申请恢复之前的IBE私钥。进一步,当需要进行IBE私钥更新时,IBE密码模块会自动连接IBE密钥服务器并使用当前有效的IBE私钥获取更新的IBE私钥。
5 结论
本论文研究工作通过伪RSA密钥、伪RSA数字证书及插件解决了IBE技术在电子邮件加密中的应用问题,从应用效果可以看到,采用本论文提出的方案,用户可以在仅作极少量配置或不作任何配置的情况下使用 Outlook等邮件客户端发送、接收经IBE加密的电子邮件,在应用IBE进行邮件加密和解密的过程中,用户的手工干预是非常少的,这个方案既发挥了IBE加密的优势,又使得已有的邮件客户端能在不修改的情况下使用IBE技术,进一步地,本论文中的方案对IBE在其他加密应用中的应用具有借鉴作用。
[1] Callas J. OpenPGP Message format[S]. IETF RFC4880,November 2007.
[2] Dusse S. S/MIME Version 2 Message Specification[S]. IETF RFC2311, March 1998.
[3] 李建新. 公钥基础设施(PKI)理论及应用[M]. 北京: 机械工业出版社, 2010.
[4] 郁建. PKI应用安全支撑平台研究与构建[J]. 信息安全与通信保密, 2013, 11(8): 60-62.
[5] Shamir A. Identity-Based Cryptosystems and Signature Schemes. Advances in Cryptology[C], Proceedings of CRYPTO 84, Lecture Notes in Computer Science, 7: 47-53, 1984.
[6] Hess F. Efficient Identity Based Signature Schemes Based on Pairings[J], Selected Areas in Cryptography, Lecture Notes in Computer Science,Vol.2595,February 2003, pp. 310-324.
[7] Polychroniadou A, Chalkias K, Stephanides G. A compatible implementation between Identity-Based and certificateless encryption schemes[C]. IEEE Computer Society: 8th International Conference on Web Information Systems and Technologies, Engineering Village, 2012.
[8] Siad A. Anonymous identity-based encryption with distributed private-key generator and searchable encryption[C],IEEE Computer Society: 5th International Conference on New Technologies, Mobility and Security, 2012.
[9] Boneh D, Franklin M. Identity-Based Encryption From the Weil Pairing[C]. Proceedings of Crypto 2001. Springer-Verlag, 2001: 213-229.
[10] Anand D, Khemchandani V, Sharma R K. Identity-based cryptography techniques and applications[C]. IEEE Com-puter Society: 5th International Conference on Computa-tional Intelligence and Communication Networks. 2013.
[11] 刘镪, 王胜男. 基于身份标识的密码体制及其在安全电子邮件的应用[J]. 信息安全与技术, 2014, 5(6): 70~72.
[12] 赵旭东. 一种基于身份加密的安全电子邮件方案研究与实现[D]. 成都: 西南交通大学, 2010.
[13] 刘丹, 刘畅, 宋樵. 基于身份的安全电子邮件系统[J]. 信息网络安全, 2010, 10(5): 64-66.
[14] 李海江. 新型安全电子邮件加密系统的设计与实现[J]. 信息安全与技术, 2012, 3(7): 11~13.
[15] RSA Laboratories. PKCS #11 v2.11: Cryptographic Token Interface Standard[S]. November 2001.
[16] Cooper D, Santesson S, Farrell S et al. Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List(CRL) Profile[S], IETF RFC5280, May 2008.
[17] Housley R. Cryptographic Message Syntax (CMS)[S], IETF,RFC5652, September 2009.