一种基于媒介数字证书的ibe数据加密系统的制作方法

文档序号:7718012阅读:170来源:国知局
专利名称:一种基于媒介数字证书的ibe数据加密系统的制作方法
技术领域
本发明属于数据加密技术领域,是一种基于媒介数字证书的IBE (Identity Based Encryption 基于身份标识的加密)数据加密系统,特别是使得不支持IBE加密技术的系统、应用能够使用IBE技术进行数据加密和解密。
背景技术
在公开密钥加密体系中,公钥(Public Key)用于数据的加密和数字签名的验证, 私钥(Private Key)用于数据的解密和数字签名。为了提高数据加密、解密的效率,在使用公开密钥加密技术的实际应用中,当一方向另一方发送加密时,发送方通常先用随机产生的对称密钥对数据进行加密,然后再使用接收方的公钥对随机产生的对称密钥进行加密, 之后,发送方将加密后的数据和加密后的对称钥一起发送到接收方;接收方接收到加密数据及加密后的对称密钥后,先用自己私钥解密加密的对称密钥,然后用解密后的对称密钥解密数据。从以上描述可以看到,在公开密钥体系中一方要向另一方发送加密数据,必须先获得对方的公钥,因此,公钥的拥有者(即加密数据的接收方)需通过一定的安全途径发布其公钥,以使得其他人(或实体)能够使用其公钥向其发送加密数据。在公开密钥体系中, 为了解决这一问题,人们提出了公开密钥基础设施(Public Key Infrastructure, PKI)安全技术体系。在PKI体系中,由一个数字证书认证中心(Certification Authority, CA)作为可信的第三方签发数字证书(Digital Certificate)来进行用户(实体)公钥的发布。 CA签发的数字证书除了包含证书持有人的公钥外,还包含有证书持有人的其他身份信息, 如姓名、所属组织、电子邮件地址等。证书由CA使用其私钥进行数据签名,以保证证书中信息的可信性、安全性。数字证书有时又分为加密证书和身份证书,前者用户数据的加密解密,后者用户身份的鉴别、数字签名及签名验证。这样,在PKI体系中,一方要向另一方发送加密数据,发送方需先通过一定的途径(如从CA的公开证书目录服务)获取接收方的(加密)数字证书,然后从数字证书中提取接收方的公钥。目前数字证书最常用的公开密钥算法是RSA和DSA算法,以及最新获得广泛重视的ECC(Elliptic Curve Cryptography)算法。 RSA、ECC数字证书既可用于数据加密和解密,又可以用于数字签名和签名验证;DSA数字证书只用于数字签名和签名验证。目前绝大部分操作系统、应用都支持RSA、DSA数字证书,支持ECC数字证书的应用也开始出现。在PKI体系中,要发送加密数据,必须事先获取对的(加密)数字证书,这对于许多普通用户来说不是一件容易的事,这也是PKI技术体系在实际应用中存在的一个比较突出的问题,为了解决这问题,人们提出了基于身份标识的加密(Identity Based Encryption, IBE)。IBE也是一种公开密钥加密技术。使用IBE进行传送数据加密时,发送方无需事先获得接收方的数字证书,只需事先知道可唯一标识对方身份的一个标识(如身份证号、电子邮件地址等),然后基于这个身份识别结合一组公开参数就可以进行数据加密 (类似地,通常是先用随机产生的对称密钥加密数据,然后用IBE公钥加密随机产生的对称密钥)。这里,身份标识和一组公开参数就构成了 IBE公钥,(但在实际应用中人人常常把身份标识简称为公钥)。接收方收到数据后,使用自己身份标识对应的私钥即可解密数据 (严格说来,私钥也是由一组公开参数和通过身份标识计算得到私密信息构成)。接收方身份标识对应的私钥是由一个IBE密钥服务器(Key Server)产生的。接收方要获得自己身份标识对应的IBE私钥,需先在IBE密钥服务器完成身份鉴别并证明其是相应身份标识的拥有者(身份鉴别可以通过身份数字证书来实现,或其它强身份鉴别方式实现),之后通过安全通道从IBE密钥服务器获得其IBE私钥,并将私钥安全保存以供日后使用。IBE密钥服务器会通过安全方式发布一组公开参数,以便任何人用其计算某个标识对应的IBE公钥 (进行数据加密)。IBE加密有其独特的优点,它为数据传送加密带来了方便,但IBE技术在实际应用中也存在一个突出的问题目前的操作系统(如Windows)和应用软件(如Outlook)大都不支持IBE加密技术,相反地,目前的大多数操作系统和应用都支持RSA公开密钥算法及 RSA数字证书。本发明就是通过媒介数字证书(如媒介RSA或ECC数字证书)使得在不支持IBE技术的Windows环境(或其他操作系统)、应用中能够使用IBE技术进行数据的加密、解密,其关键技术是开发一个对外注册提供RSA、ECC算法(或其他非对称密码算法), 但内部实际上实现IBE算法的IBE CSP (Cryptographic Service ftOvider 加密服务提供者)。Windows系统中数据加密、解密的功能主要是通过CryptoAPI和CSP来实现的,其中CryptoAPI是一个加密应用编程接口,CSP是真正完成密钥存储、操作与运算的地方,CSP 通过CryptoSPI接口来提供相关功能。应用程序通过调用CryptoAPI使用CSP。Windows系统有多种不同类型的CSP以支持不同的密钥算法和用途,如类型l(Type UPRSA Full)、 类型 3 (Type 3,即 DSS Signature)、类型 12 (Type 12,即 RSA Schannel),而每个类型的 CSP 又可以有多个。如,类型1的CSP用于基于RSA算法的数据加密、解密,签名、签名验证, Windows 系统自带的 Microsoft Strong Cryptographic Provider、Microsoft Enhanced Cryptographic Provider 就是类型 1 白勺 CSP,并且 Microsoft Strong Cryptographic ftxwider是类型1的缺省(default) CSP ;类型3的CSP用于基于DSA算法的签名、签名验证,Windows 系统自带的 Microsoft Base DSS Cryptographic Provider 就是一个这样类型的CSP ;类型12的CSP可用于SSL3. O和TLS1. O的客户端验证,Windows系统自带的 Microsoft RSA SChannel Cryptographic Provider 就是一个这种类型的 CSP。

发明内容
本发明的目的是提供一种基于媒介数字证书的IBE数据加密系统,它借于媒介数字证书,使得不支持IBE加密算法的Windows系统及其应用能够使用IBE技术进行数据的加密、解密。这里所说的媒介数字证书是一个符合)(509规范的加密用途的数字证书(如RSA 或ECC加密数字证书),它不是由一个第三方证书认证机构或者专门的CA系统签发,而是由用户(利用客户端工具)自己生成的一个自签名根CA证书的私钥来签发,且被签发的证书的主题名(Subject Name)与该用户的身份标识相对应(或包含有身份标识信息,如邮件地址、身份证号等)。尽管每个用户自己生成的自签名根CA证书的公私密钥对各不相同,但它们的主题名和颁发者名(Issuer Name)却都相同,具有固定的特定名称,且它们的序列号(Serial Nuumber)都相同,比如,都是由主题名的散列(HASH)值产生。该种由用户自己(通过自生成CA证书的私钥)签发的数字证书仅在IBE加密过程中在加密应用软件和 IBE加密模块之间起着桥梁、媒介作用,并不是作为一个通常的数字证书来使用,因此,在本发明将其称为媒介数字证书。由于该用户自己签发的数字证书仅在加密过程中起着媒介作用,因此,即便它不是公共可信的,也不影响IBE加密的安全性。为了实现上述目的,本发明所采用的技术方案是一种基于媒介数字证书的IBE数据加密系统,包括如下部分IBE CSP 一个注册提供某种非对称密码算法(如RSA)的某种类型(如RSA Full, 或 Type 1、类型 1)的 Windows 加密服务提供者(Cryptographic Service Provider, CSP), 它通过扩展接口函数完成与IBE有关的密钥存储和密钥操作,通过CryptoSPI接口函数提供其他的密码操作与运算功能,将基于注册所指非对称密码算法(如RSA)的数据加密解密运算转换成相应的基于IBE的数据加密解密运算,它通过直接调用一个Windows自带的相同类型的 CSP(比如,RSAFull 类型的 Microsoft Strong Cryptographic Provider)完成其它的密钥操作及运算。具体地,当应用系统通过CryptoAPI调用IBE CSP进行密钥操作以及数据加密、解密运算时,IBE CSP判断其是否为与IBE有关的密钥操作或数据加密、解密运算,若是,则由其自身完成有关操作及运算;否则,它通过CryptoSPI接口直接调用一个Windows自带的相同类型的CSP来完成有关的操作和运算,该Windows自带的相同类型的CSP称为IBE关联CSP。IBE密钥管理客户端其主要功能包括自签名根CA证书的生成和签名,媒介数字证书的生成和签名,IBE密钥的获取和存储等。在加密数据的发送方(即加密方),它负责基于接收方(即解密方)的身份标识产生接收方的IBE公钥(IBE Public Key)并保存它,以及生成身份标识对应的媒介数字证书,供加密应用软件使用;对于身份标识的拥有者(即加密数据接收方),它负责根据身份标识产生对应的媒介数字证书,从IBE密钥服务器获得标识对应的IBE私钥(IBE Private Key),并将IBE密钥对(IBE Key Pair)保存到IBE CSP 中,供加密应用软件使用。IBE密钥服务器(IBE Key Server)负责对身份标识拥有者进行身份鉴别,验证其是标识的真正拥有者,为标识产生IBE私钥并通过安全通道将私钥返回给标识拥有者。IBE客户端安装软件负责IBE CSP和IBE密钥管理客户端的安装及设置。在安装过程中,IBE客户端安装软件对Windows的注册表进行如下修改将HKEY_L0CAL_MACHINE- > Software- > Microsoft- > Cryptography- > Defaults- > Provider Types 下 IBE CSP 对应的 CSP 类型(如 Type 001,即 RSA Full)对应的子键(subkey)的值中设定的缺省CSP设定为本发明的IBE CSP0所述非对称密码算法是指)(509证书支持的、能用于对称密钥或数据加密解密的非对称密码算法,包括但不限于RSA、ECC算法;所述非对称密码算法的所述特定CSP类型,是指提供所述非对称密码算法密码功能的一个特定的CSP类型,包括但不限于Windows目前已定义的CSP类型;所述IBE CSP扩展接口函数,是在CryptoSPI接口函数之外定义的专门用于IBE密钥存储操作的接口函数;所述媒介数字证书是一种符合)(509规范的加密用途的数字证书,它由用户的IBE 密钥管理客户端自己生成的一个自签名根CA证书的私钥来签发,且被签发的证书的主题名与该用户的身份标识相对应;所述自签名根CA证书的主题名和颁发者名相同,具有固定的特定名称,且该自签名根CA证书的序列号具有固定值;所述加密数据的发送方即数据的加密方,而所述加密数据的接收方即加密数据的
解密方。所述加密数据的发送方用户可通过启动IBE密钥管理客户端,进入获取接收方媒介数字证书的功能,输入接收方的身份标识(如邮件地址,身份证号等),由IBE密钥管理客户端生成、签发并保存接收方身份标识对应的媒介数字证书,以及生成并保存接收方的IBE 公钥,具体为在发送方用户输入接收方的身份标识后,IBE密钥管理客户端按如下流程工作Al.在本地证书库的受信任的颁发机构根证书存储区中查看是否有具有特定主题名的、用于签发媒介数字证书的自签名根CA证书,若没有,转入步骤A3;否则,转入下一

少;A2.进一步检查该自签名根CA证书是否有私钥,若有,转入步骤A4 ;否则,删除该自签名根CA证书,然后转入下一步;A3.通过 CryptoAPI 调用 IBE 关联 CSP(如一个 Windows 自带的 RSA Full 类型 CSP)产生一个相应非对称密码算法(如RSA)的密钥对,并基于该密钥对生成一个自签名的CA数字证书,该CA证书的主题名和颁发者名相同,具有预先设定的特定名称,证书序列号由主题名和颁发者名的散列(HASH)值产生,自签名根CA数字证书生成、签名完成后,将该自签名根CA数字证书放入本地证书库中的受信任的颁发机构根证书存储区中,之后转入下一步;A4.通过CryptoAPI调用IBE关联CSP产生一个相应非对称密码算法的密钥对 (如RSA密钥对),并基于该密钥对生成一个待签名的数字证书,该证书的主题名中包含有接收方的身份标识信息,颁发者名为用于签发媒介数字证书的自签名根CA证书的主题名, 而证书的序列号(Serial Number)由主题名和颁发者名的HASH(散列)值产生,证书的Key ^age (密钥用途)设置为Key Encipherment (密钥加密),然后用自签名根CA证书的私钥对待签名数字证书进行签名生成一个媒介数字证书;A5.调用Windows提供的证书管理编程接口,将该刚签发的媒介数字证书放入本地证书库中的其他人证书存储区中,以及通过相应的自动(如API)或手动手段将该证书放入到特定应用程序的特定证书存储区(如Outlook对应用户的通信录中);A6.基于接收方身份标识及IBE公开参数生成接收方的IBE公钥;A7.调用IBE CSP的扩展接口,将步骤A6产生的IBE公钥存入IBE CSP中,调用接口参数中除了 IBE公钥外,还有步骤A4中产生的媒介数字证书的公钥。在以上所述步骤A7中,当IBE CSP通过扩展接口(即一个原CryptoSPI中没定义的自定义接口 )接收到IBE公钥存储请求后,按如下方式进行操作在硬盘等存储介质中为该IBE公钥创建一个永久性的IBE公钥对象,将IBE公钥、调用接口中提交的媒介数字证书的公钥以及该公钥HASH(散列)值保存到IBE公钥对象中。通过将媒介数字证书的公钥及其散列值保存到IBE公钥对象中,可将IBE公钥与媒介数字证书的公钥关联,以后所有与该媒介数字证书公钥相关的密钥操作、数据加密运算,IBE CSP将使用该公钥对应的IBE公钥进行。在本发明中,与IBE公钥对应的、相关联的媒介数字证书公钥称为该IBE公钥的影子公钥。所述身份标识的拥有者(即加密数据接收方),通过启动IBE密钥管理客户端,进入获取本人媒介数字证书功能,输入本人身份标识信息,可获取与身份标识对应的媒介数字证书,以及与身份标识对应的IBE密钥对,并由IBE密钥管理客户端将IBE密钥对保存到 IBE CSP 中。在身份标识的拥有者使用IBE密钥管理客户端输入其身份标识信息、请求获取本人媒介数字证书后,IBE密钥管理客户端和IBE密钥服务器按如下流程进行工作Bi. IBE密钥管理客户端以安全的方式(如SSL)连接IBE密钥服务器,申请获取用户身份标识对应的IBE私钥;B2. IBE密钥服务器要求对客户端进行身份鉴别;B3. IBE密钥管理客户端提交用户的身份凭证(Credential),如身份数字证书、用户名/ 口令等,进行身份鉴别;B4. IBE密钥服务器完成对客户端用户的身份鉴别后,通过预先设定的方式验证用户确实为身份标识的拥有者;B5.若用户身份鉴别和身份标识归属验证获得通过,则IBE密钥服务器为用户产生标识对应的IBE私钥,并通过安全通道将IBE私钥返回到IBE密钥管理客户端,否则,返回出错信息;B6. IBE密钥管理客户端接收到用户IBE私钥后,从IBE私钥中提取相关信息,产生相应的IBE公钥,然后,转入下一步;B7. IBE密钥管理客户端在本地证书库的受信任的颁发机构根证书存储区中查看是否有具有特定主题名的、用于签发媒介数字证书的自签名根CA证书,若没有,转入步骤 B9 ;否则,转入下一步;B8. IBE密钥管理客户端进一步检查该自签名根CA证书是否有私钥,若有,转入步骤BlO ;否则,删除该自签名根CA证书,然后转入下一步;B9. IBE密钥管理客户端通过CryptoAPI调用IBE关联CSP (如一个Windows自带的类型为RSA Full的CSP)产生一个相应非对称密码算法的密钥对(如RSA密钥对),并基于该密钥对生成一个自签名的CA数字证书,该CA证书的主题名和颁发者名相同,具有预先设定的特定名称,证书序列号由主题名和颁发者名的散列(HASH)值产生,自签名根CA数字证书生成、签名完成后,将该自签名根CA数字证书放入本地证书库中的受信任的颁发机构根证书存储区中,之后转入下一步;BIO. IBE密钥管理客户端通过CryptoAPI调用IBE关联CSP产生一个相应非对称密码算法的密钥对(如RSA密钥对),并基于该密钥对生成一个待签名的数字证书,该证书的主题名包含有接收方的身份标识,颁发者名为自签名根CA证书的主题名,而证书的序列号由主题名和颁发者名的散列(HASH)值产生,证书的密钥用途(Key Usage)设置为密钥加密(Key Encipherment),然后使用自签名根CA证书的私钥对待签名数字证书签名,生成一媒介数字证书,之后,转入下一步;Bll. IBE密钥管理客户端通过调用扩展CSP接口,将前面步骤中获得的IBE密钥对存入IBE CSP中,调用扩展接口时,除了提供IBE密钥对,还同时提供密钥容器标识以及刚签发的媒介数字证书的公钥,IBE密钥对保存成功后,转入下一步;B12.若在本地证书库的本人证书存储区中有先前产生的、与同一身份标识对应的媒介数字证书,则IBE密钥管理客户端将该证书清除,然后转入下一步;B13. IBE密钥管理客户端调用Windows的证书管理接口,将刚签名产生的媒介数字证书存入本地证书库的本人证书存储区中,并将证书私钥存储的CSP设置为本发明的 IBE CSP,私钥存储的CSP的类型设置为IBE CSP注册的CSP类型(如RSA Full),私钥的密钥容器标识设置为步骤Bll调用扩展接口在IBE CSP中保存用户IBE密钥对时提供的密钥容器标识,私钥的密钥用途设置为Key Exchange (密钥交换)。在以上所述步骤B4中,IBE密钥服务器验证用户确实为身份标识的拥有者的方式包括但不限于向电子邮箱发送验证邮件验证、确认申请者是邮箱的拥有者,或者向移动通信手机号码发送验证短信验证、确认申请者是手机号码的拥有者,或者用户在IBE密钥服务器的帐户名就是用户的身份标识,或者用户在IBE密钥服务器上创建帐户时输入了其身份标识且其拥有该标识是通过其他方式验证的,或者用户使用身份证书登录密钥服务器, 而身份证书中有用户的该身份标识信息等。在以上所述步骤Bll中,IBE CSP接收到保存IBE密钥对的请求后,按如下步骤进行操作Bll. 1.在存储介质中创建一个永久性的IBE密钥容器,其密钥容器标识为调用扩展接口时输入的密钥容器标识,然后将IBE密钥对存放到该密钥容器中,该密钥对的用途为Key Exchange,并且进一步地将调用接口中提交的媒介数字证书的公钥及其散列(HASH) 值存入到该IBE密钥容器中(从而将IBE密钥对与提交的媒介数字证书的公钥关联);Bll. 2.通过CryptoSPI直接调用IBE关联CSP,在其中产生一个永久性的密钥容器(如RSA密钥容器),并在该密钥容器中产生一用途是Key Exchange的永久性密钥对(如 RSA密钥对);Bll. 3.将步骤B8. 2在IBE关联CSP中产生的密钥容器的标识保存到步骤B8. 1产生的IBE密钥容器中(从而将IBE密钥容器与该IBE关联CSP中产生的密钥容器关联),然后返回。以上步骤Bll. 2中产生的IBE关联CSP中的密钥容器称为步骤Bll. 1中产生的 IBE密钥容器的影子密钥容器。在本发明中,每个IBE密钥容器,无论它是内存中的临时的, 还是存储介质上永久保存的,无论是否包含有IBE密钥对,它都有一个与之对应的、IBE关联CSP中产生的、相关联的影子密钥容器,它们有同样的生命周期(这点在后面描述中将可看到)。若IBE密钥容器中包含有一个IBE密钥对,则其影子密钥容器中将有一个Key Exchange用途的密钥对(如RSA密钥对),在本发明中称之为对应IBE密钥对的影子密钥对,但它不是与IBE密钥对对应的媒介数字证书的密钥对,也与IBE密钥对不存在直接关系。在前面步骤B13,通过将媒介数字证书私钥与一个IBE密钥容器关联,所有与该媒介数字证书私钥相关的操作、加密运算,IBE CSP将调用该私钥对应的IBE私钥进行。在标识拥有者通过IBE密钥管理客户端成功产生与身份标识对应的媒介数字证书后,可使用加密应用软件解密接收到的加密数据。在以上过程中采用了特定的方式约定证书的主题名、颁发者名及证书序列号,其原因是,在基于数字证书的数据加密中,发送方完成数据加密后,会将接收方的数字证书的主题名,颁发者名及证书序列号以H(CS7所规定的格式放入到加密数据中(更确切地说是被加密的对称密钥中)。而接收方加密软件正是基于该主题名、颁发者名及证书序列号信息在本地证书库的本人证书存储区中找到对应的数字证书并使用该证书保存在CSP中的私钥完成数据解密。因此,要能正确解密数据,发送方产生的属于接收方的媒介数字证书与接收自己生成的媒介数字证书的主题名,颁发者名及证书序列号必须相同,证书的密钥对必须相同(但在本发明中证书的密钥对可以不同)。要做到双方产生的媒介数字证书的主题名、颁发者名相同,可约定一个由身份标识产生主题名的方式,规定颁发者名为特定的名称 (即签发CA具有特定的主题名);为了使得证书序列号相同,约定证书序列号由主题名和颁发者名的HASH(散列)值产生。IBE CSP将按如下不同情形对通过CryptoSPI接口的接口函数调用进行相应处理情形1 对于通过接口函数CPAcquireContext获取密钥容器句柄(handle)的操作,根据接口调用中输入的密钥容器标识分别做如下处理若输入的密钥容器标识指向一个永久性IBE密钥容器,则进一步判断接口函数调用中的输入参数dwFlags的值是否为零或CRYPT_SILENT或CRYPT_DELETEKEYSET,若都不是,则返回出错;否则,再判断dwFlags的值是否为CRYPT_DELETEKEYSET,若是,则先通过直接调用IBE关联CSP的接口函数CPAcquireContext删除IBE关联CSP中对应的影子密钥容器,然后,删除接口中输入的密钥容器标识所指向的永久性IBE密钥容器及其IBE密钥对, 最后返回操作结果;否则,先在内存中创建一个IBE密钥容器对象,然后获取密钥容器标识所指向的永久性IBE密钥容器中的IBE密钥对、对应的影子公钥及该影子公钥散列值,生成相应的数据对象,并将这些数据对象保存到(即关联到)内存中刚产生的IBE密钥容器对象中,其中IBE密钥对的用途为Key Exchange,然后再通过调用IBE关联CSP的接口函数 CPAcquireContext获得IBE关联CSP中对应的影子密钥容器的句柄,并将返回的影子密钥容器的句柄与内存中刚创建的IBE密钥容器对象关联,最后将影子密钥容器的句柄作为密钥容器的句柄返回。若输入的密钥容器标识不是指向一个永久性IBE密钥容器,则进一步判断输入接口中输入参数dwFlags的值是否为CRYPT_DELETEKEYSET,若是,则使用相同的输入参数直接调用IBE关联CSP的CPAcquireContext接口函数,完成有关操作,然后将操作结果返回; 否则,先在内存中创建一个IBE密钥容器对象,然后使用相同的输入接口参数,直接调用 IBE关联CSP的接口函数CPAcquireContext,获取相应的密钥容器的句柄,该密钥容器也称为内存中刚创建的IBE密钥容器的影子密钥容器(即便它不与任何IBE密钥对关联),然后将返回的密钥容器的句柄与内存中刚创建的IBE密钥容器对象关联,最后将返回的密钥容器的句柄作为密钥容器的句柄返回。情形2 对于通过接口函数CPGetUserKey获取密钥容器中保存的密钥对句柄的
15操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器对象,若不是,返回出错;否则,进一步检查所指向的IBE密钥容器是否包含有一个IBE 密钥对对象,若是,则通过调用IBE关联CSP的接口函数CPGetUserKey,获取对应的影子密钥容器中的影子密钥对(即Key Exchange用途的密钥对)的密钥句柄,然后,将返回的影子密钥对句柄与IBE密钥容器中的IBE密钥对对象关联,之后将影子密钥对句柄作为密钥对的句柄返回;否则,使用相同的输入接口参数,通过直接调用IBE关联CSP的接口函数 CPGetUserKey完成有关操作,并将返回的密钥对句柄返回。情形3 对于通过接口函数CPImportKey导入公钥的密钥导入操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查该公钥(如通过该公钥散列值)是否与一个永久性IBE密钥容器或永久性IBE公钥对象对应,即检查导入的公钥是否是一个IBE公钥的影子公钥,若是,则在内存中创建一个IBE公钥对象,并将该IBE公钥对象、影子公钥及该影子公钥的散列值保存到 (即关联到)接口中输入的密钥容器句柄所指的IBE密钥容器中,然后再通过调用IBE关联CSP的接口函数CPImportKey,将要导入的公钥导入到IBE关联CSP中对应的影子密钥容器中,并将调用返回的导入的公钥的密钥句柄与内存中刚创建的IBE公钥对象关联,之后将该密钥句柄作为导入的密钥的句柄返回;否则,使用相同的输入接口参数,通过直接调用 IBE关联CSP的接口函数CPImportKey完成有关操作,并将调用返回的密钥句柄返回。情形4 对于通过接口函数CPImportKey导入对称密钥的密钥导入操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查接口中输入的解密密钥句柄是否指向对应IBE密钥容器中的一个IBE密钥对对象,若是,则先使用该IBE密钥对对象中的IBE私钥,解密被加密的对称密钥,然后再通过调用IBE关联CSP的接口函数CPImportKey将要导入的对称密钥导入到IBE 关联CSP中的对应影子密钥容器中,然后将调用返回的导入的密钥的密钥句柄返回;否则, 使用相同的输入接口参数,通过直接调用IBE关联CSP的接口函数CPImportKey完成对称密钥的导入,并将调用返回的导入的密钥的密钥句柄返回。情形5 对于通过接口函数CPExportKey导出密钥的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则, 进一步检查被导出密钥的句柄是否指向IBE CSP中的一个IBE公钥对象,若是,则导出该 IBE公钥对应的影子公钥;否则,再进一步检查被导出密钥的句柄是否指向IBE CSP中的一个IBE密钥对对象,若是,则禁止导出;否则,再进一步检查用于对被导出密钥进行加密的加密密钥的句柄是否指向一个IBE公钥对象或IBE密钥对对象,若是,则先通过相应的接口函数将要导出的密钥以明文形式从IBE关联CSP中导出,或者先导出密文后再解密成明文, 然后再用对应的IBE公钥加密要导出的密钥,返回结果;否则,使用相同的接口输入参数, 直接调用IBE关联CSP的接口函数CPExportKey完成有关操作。情形6 对于通过接口函数CPEncrypt进行数据加密的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查加密密钥句柄是否指向IBE密钥容器中的一个IBE公钥对象或IBE密钥对对象,若是,使用对应的IBE公钥加密数据,然后返回加密结果;否则,使用相同的输入接口参数,直接调用IBE关联CSP的接口函数CPEncrypt完成有关操作。
16
情形7 对于通过接口函数CPDecrypt的数据解密操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则, 进一步检查解密密钥句柄所指向的密钥对象是否为IBE密钥容器中的一个IBE密钥对,若是,则使用该IBE密钥对的私钥解密数据,然后返回解密结果;否则,使用相同的接口输入参数,直接调用IBE关联CSP的接口函数CPEncrypt完成有关操作。情形8 对于通过接口函数CPGetKeyParam获取密钥参数的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错; 否则,进一步检查要查询的密钥句柄是否指向一个IBE公钥对象或IBE密钥对对象,若是, 根据该IBE公钥对象或IBE密钥对对象对应的影子公钥返回有关参数;否则,使用相同的输入接口参数,直接调用IBE关联CSP的接口函数CPGetKeyParam完成有关操作。情形9 对于通过接口函数CPktKeyParam设置密钥参数的操作,检查要设置参数的密钥句柄是否指向IBE密钥容器中的一个IBE公钥对象或IBE密钥对对象,若是,拒绝有关操作;否则,使用相同的输入接口参数,直接调用IBE关联CSP的接口函数 CPSetKeyParam完成有关操作。情形10 对于通过接口函数DuplicateKey复制密钥的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,先使用相同的输入接口参数,调用IBE关联CSP的接口函数DuplicateKey进行复制密钥的操作,调用成功后,再检查要复制的密钥的密钥句柄是否指向当前IBE密钥容器中的一个在内存中创建的IBE公钥对象,若是,则在内存中复制该IBE公钥对象,并将调用IBE 关联CSP进行密钥复制操作时返回的、复制后的密钥对象的句柄与刚才复制的I BE公钥对象关联,然后将该密钥对象句柄作为复制后的密钥对象句柄返回;否则,再进一步检查要复制的密钥句柄是否指向IBE密钥容器中的IBE密钥对对象,若是,则将调用IBE关联CSP 的接口函数DuplicateKey进行密钥复制操作时返回的、复制后的密钥对象的句柄与该IBE 密钥对对象关联,然后将该密钥对象句柄作为复制后的密钥对象的句柄返回;否则,将调用 IBE关联CSP的接口函数DuplicateKey的操作结果直接返回。情形11 对于通过接口函数DestroyKey释放密钥句柄的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错; 否则,先使用相同的输入接口参数,调用IBE关联CSP的接口函数DestroyKey进行释放密钥句柄的操作,调用成功后,再检查要释放的密钥句柄是否指向当前IBE密钥容器中的、一个在内存中创建的IBE公钥对象,若是,则释放该IBE公钥对象及其密钥句柄,并返回操作成功;否则,再进一步检查要释放的密钥句柄是否指向IBE密钥容器中的IBE密钥对, 若是,则释放该密钥句柄,并返回操作成功;否则,直接返回调用IBE关联CSP的接口函数 DestroyKey的操作结果。情形12 对于通过接口函数CPReleaseContext释放加密上下文(Context)的操作,也即释放密钥容器句柄的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,先调用IBE关联CSP的接口函数 CPReleaseContext释放对应的影子密钥容器的加密上下文,然后释放当前IBE密钥容器在内存中创建的所有密钥对象,以及当前IBE密钥容器对象,之后返回操作成功。情形13 对于其他接口函数调用,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,使用相同的输入参数,通过调用IBE关联CSP的相同接口函数,完成有关操作。在以上操作中,IBE CSP并不为其各类数据对象,如密钥容器对象、密钥对对象、公钥对象等,产生单独的对象句柄,而是直接使用关联CSP中相应的影子数据对象的句柄,作为其数据对象的句柄。当然,IBE CSP也可为其各类数据对象产生并维护单独的数据对象句柄,然后维护一个密钥句柄映射表,保存IBE CSP中各类数据对象的句柄与其影子数据对象的句柄之间的映射关系;当IBE CSP调用IBE关联CSP的接口函数进行有关操作时,使用相应的、映射后的影子数据对象的句柄(若需要进行句柄转换的话)。使用IBE进行数据块加密时(主要是对称密钥),加密数据中需保存解密所需的随机性参数。如果IBE CSP注册提供的非对称算法是RSA,则由于一个IBE加密数据块的长度小于RSA加密数据块的长度,为了使得IBE加密后的数据块的边界与RSA加密数据块的边界对齐,可在一个或多个IBE加密数据块后添加随机字符串。基于本发明IBE加密系统,数据加密方(发送方)的数据加密过程如下Cl.发送方的基于数字证书的加密软件在进行传送数据加密时,在本地证书库中, 或特定应用程序的特定证书存储区(如Outlook的通信录中),查找(比如根据接收方的邮件地址)并提示用户选择接收方的数字证书,若证书库中有与接收对方身份标识对应的媒介数字证书,则在发送方用户选择了该证书后,加密软件将通过CryptoAPI自动调用IBE CSP,使用媒介数字证书的公钥完成数据的加密,而IBECSP会使用对应的IBE公钥完成有关的操作;若证书库中无接收方的媒介数字证书,则转入步骤C2。C2.发送方启动IBE密钥管理客户端,进入获取接收方媒介数字证书的功能,输入对方的身份标识,在管理工具提示成功后,重新进入步骤Cl。加密数据的接收方的数据解密过程如下Dl.加密数据接收方接收到加密数据后,使用加密应用软件(如Outlook)解密数据。若加密应用软件能够在本地证书库的本人证书存储区中(通过证书的主题名、颁发者、 证书序列号,这些信息保存在对称密钥的加密信息中)找到与加密时使用的数字证书对应的媒介数字数字证书(但不一定是同一个证书,因为证书密钥对不一定相同),且该证书在本地证书库中的信息指示该证书的私钥在IBE CSP中,则应用软件会通过CryptoAPI调用 IBE CSP,请求用媒介数字证书对应的私钥对数据解密,IBE CSP将使用对应的IBE私钥完成有关解密操作;若接收方加密应用软件无法在本地证书库的本人证书存储区中找不到数据加密对应的媒介数字证书,或者找到了,但解密操作报告私钥不存在,则转入步骤D2。D2加密数据的接收方启动IBE密钥管理客户端,进入获取本人媒介数字证书功能,输入身份标识信息,在管理工具提示成功后,重新进入步骤Dl。本发明的特点及创新性在于解决了在不支持IBE加密技术的操作系统、应用系统中使用IBE技术的技术难点,其创新点在于以媒介数字证书为桥梁,结合开发一种IBE CSP来实现基于IBE的数据加密和解密。


图1为本发明的整体系统结构图。
具体实施例方式下面结合附图和实施说明对本发明作进一步的描述。本发明的系统的结构如图1所示,图中的IBE密钥服务器,IBE密钥管理客户端, IBE CSP,IBE客户端安装软件属于本方明的内容。本发明各部分的功能和工作流程在前面发明内容中已作了描述,下面描述其具体实施方案。IBE密钥服务器是一个基于C/S模式的服务系统,其客户端即是IBE密钥管理客户端。IBE密钥服务器可使用常见的信息系统开发技术,如C/C++或C#,. Net或J2EE开发语言及环境,以及有关的数据库开发技术;其IBE密钥的生成参照RFC5091规范实现,IBE密钥生成既可在软件中实现,也可以用硬件实现。IBE密钥服务器与IBE密钥管理客户端的信息交互可采用已有的安全信息加密通道技术,如SSL等。一个用户要从IBE密钥服务器获取私钥,需先在IBE密钥器上注册为用户;获得批准后,用户可使用其身份凭证(如用户名/ 口令,数字证书)登录IBE系统注册器其身份标识(可多个);注册的身份标识经一定的方式验证为属于该注册用户所有后,该用户可使用 IBE密钥管理客户端登录IBE密钥服务器获取其身份标识对应的IBE私钥。用户注册、用户身份鉴别、身份标识归属性验证等功能的实现,与通常的用户信息管理系统的实现类似,无需进一步特别说明。IBE密钥管理客户端可使用C/C++开发。客户端对注册表的修改,对媒介数字证书 (如媒介RSA或ECC证书)的生成、签发和证书存放操作,可使用Windows提供的相应接口实现。IBE CSP的开发,可按微软提供的CSP开发技术规范、流程和工具进行。本发明的 IBE CSP除了实现CryptoSPI定义的接口函数外,还扩展定义了用于存放IBE公钥、IBE密钥对的接口函数,这些扩展接口除了存放IBE公钥、IBE密钥对外,还将它们与对应媒介数字证书的公钥关联。这两个接口函数的可能接口形式如下
int WINAPI StoreIBE-PublicKey ( IN IBE-PublicKeySt *ibepk, IN Cert-PublicKeySt *certpk);
int WINAPI StoreIBE-KeyPair ( IN IBE-KeyPareSt *ibekp , IN Cert-PublicKeySt *certpk,
IN CHAR *pszContainer)。IBE_PubIicKeySt 是一个存放 IBE 公钥的结构,Cert_PubIicKeySt 是一个存放媒介证书公钥的结构,它内部有标识指明对应的非对称密码算法的类型,Keyl^i^t是一个存放IBE密钥对的结构,pszContainer是一个输入参数,存放IBE密钥容器的标识。对于存放IBE密钥对的调用,IBE CSP将创建一个永久性的IBE密钥容器,存放该IBE密钥对,该密钥对的用途是密钥交换(Key Exchange),且密钥容器中还存放有对应的媒介数字证书的公钥及公钥散列值,该散列可用于判断某个公钥是否与IBE密钥容器中的 IBE密钥对对应。对于存放IBE公钥的调用,IBE CSP也在硬盘等存储介质中创建一个永久性的IBE 公钥对象(这与通常的CSP不同),用于存放该I BE公钥,并同时存放对应的媒介数字证书的公钥及其散列值,用于以后判断某个公钥是否与IBE公钥对象中的IBE公钥对应。为了维护IBE CSP在内存中创建的各个数据对象(如密钥容器、密钥对、公钥等) 及其句柄,IBE CSP维护一个全局表(可以是静态表,或动态表,如动态链表),该表保存了 IBE CSP维护的所有数据对象(的指针)及其对应的句柄。这样,通过对象句柄就能找到对应的数据对象。类似地,每个密钥容器也维护有一个表,表中保存有该密钥容器中保存的 (关联的)数据对象及其对应的句柄。每个数据对象中都有如下字段对象类型;对象句柄; 父数据对象指针(如对于密钥对对象,其父数据对象就是其所在密钥容器对象)。对于IBE CSP其他操作逻辑、功能和相关数据结构的实现,根据前述发明内容的描述是不难做到的。对于IBE客户端安装软件,可以采用用微软相应的SDK和开发接口实现,比如对注册表的修改,对证书库的操作,都可以通过调用Windows的相应接口实现;而对于将媒介数字证书存放到特定加密应用软件的特定证书存储区的操作,可通过调用加密应用软件提供的相关接口等方法实现。对于加密系统有关组件(模块)所涉及到有关流程,可根据发明内容中的相关描述实现。
权利要求
1.一种基于媒介数字证书的IBE数据加密系统,该系统由如下四个部分组成IBE CSP:—个注册提供某种非对称密码算法的特定类型的Windows CSP,它通过扩展接口函数完成IBE密钥的存储操作,通过CryptoSPI接口函数提供其他的密码操作与运算功能,其中,对于基于所述非对称密码算法的数据加密解密运算,它将其转换成相应的基于 IBE的数据加密解密运算,而对于其它的密钥操作及密码运算,它通过CryptoSPI直接调用一个Windows自带的相同类型的CSP完成相应的操作与运算,该Windows自带的相同类型的CSP称为IBE关联CSP ;IBE密钥管理客户端负责自签名根CA数字证书的生成和签名,媒介数字证书的生成和签名,IBE密钥的获取和存储;在加密数据的发送方,它负责基于接收方的身份标识产生接收方的IBE公钥并将其保存在本地计算机系统中,以及生成身份标识对应的媒介数字证书,供加密应用软件使用;对于身份标识的拥有者,即加密数据接收方,它负责根据身份标识产生对应的媒介数字证书,从IBE密钥服务器获得标识对应的IBE私钥,并将IBE密钥对保存到IBE CSP中供加密应用软件使用;IBE密钥服务器负责对身份标识拥有者进行身份鉴别,验证其是身份标识的真正拥有者,为标识产生IBE私钥并通过安全通道将IBE私钥返回给身份标识的拥有者; IBE客户端安装软件负责IBE CSP和IBE密钥管理客户端的安装及设置; 所述非对称密码算法是指X509证书支持的、能用于对称密钥或数据加密解密的非对称密码算法,包括但不限于RSA、ECC算法;所述非对称密码算法的所述特定CSP类型,是指提供所述非对称密码算法密码功能的一个特定的CSP类型,包括但不限于Windows目前已定义的CSP类型;所述IBE CSP扩展接口函数,是在CryptoSPI接口函数之外定义的专门用于IBE密钥存储操作的接口函数;所述媒介数字证书是一种符合X509规范的加密用途的数字证书,它由用户的IBE密钥管理客户端自己生成的一个自签名根CA证书的私钥来签发,且被签发的证书的主题名与该用户的身份标识相对应;所述自签名根CA证书的主题名和颁发者名相同,具有固定的特定名称,且该自签名根 CA证书的序列号具有固定值;所述加密数据的发送方即数据的加密方,而所述加密数据的接收方即加密数据的解密方。
2.根据权利要求1所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 IBE客户端安装软件在安装过程中对Windows的注册表进行如下修改将HKEY_LOCAL_MACHINE- > Software- > Microsoft- > Cryptography- > Defaults- > Provider Types下的IBE CSP对应的CSP类型所对应的子键的值中设定的缺省CSP设定为 IBE CSP。
3.根据权利要求1所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 当加密数据发送方启动IBE密钥管理客户端、进入获取接收方媒介数字证书的功能、并输入接收方的身份标识后,IBE密钥管理客户端将按如下流程生成、签发并保存接收方身份标识对应的媒介数字证书,生成并保存接收方身份标识对应的IBE公钥第1步.在本地证书库的受信任的颁发机构根证书存储区中查看是否有具有特定主题名的、用于签发媒介数字证书的所述自签名根CA证书,若没有,转入第3步;否则,转入下一步;第2步.进一步检查该自签名根CA证书是否有私钥,若有,转入第4步;否则,删除该自签名根CA证书,然后转入下一步;第3步.通过CryptoAPI调用IBE关联CSP产生一个密钥对,并基于该密钥对生成一个自签名的CA数字证书,该CA证书的主题名和颁发者名相同,具有预先设定的特定名称, 证书序列号由主题名和颁发者名的散列值产生,自签名根CA数字证书生成、签名完成后, 将该自签名根CA数字证书放入本地证书库中的受信任的颁发机构根证书存储区中,之后转入下一步;第4步.通过CryptoAPI调用IBE关联CSP产生一个密钥对,并基于该密钥对生成一个待签名的数字证书,该证书的主题名中包含有接收方的身份标识信息,颁发者名为所述自签名根CA证书的主题名,而证书序列号由主题名和颁发者名的散列值产生,证书的密钥用途设置为密钥加密,然后用所述自签名根CA证书的私钥对待签名数字证书签名生成一个媒介数字证书;第5步.调用Windows提供的证书管理编程接口,将该刚签发的媒介数字证书放入本地证书库中的其他人证书存储区中,以及通过相应的自动或手动手段将该证书放入到特定应用程序的特定证书存储区中;第6步.基于接收方身份标识及IBE公开参数生成接收方的IBE公钥; 第7步.调用IBE CSP的扩展接口,将第6步产生的IBE公钥存入IBE CSP中,调用接口参数中除了 IBE公钥外,还有第4步中生成的媒介数字证书的公钥;在以上步骤中,是先生成IBE公钥还是先生成媒介数字证书,其先后顺序是无关紧要的。
4.根据权利要求3所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 当IBE密钥管理客户端按所述第7步调用IBECSP的扩展接口将IBE公钥存入IBE CSP时, IBE CSP扩展接口函数按如下方式进行有关操作为该IBE公钥在存储介质中创建一个永久性的IBE公钥对象,将接口中提供的IBE公钥保存到该IBE公钥对象中,同时将调用接口中提交的媒介数字证书的公钥以及该公钥散列值也保存在该永久性IBE公钥对象中,使得该永久性IBE公钥对象与输入的媒介数字证书的公钥关联、对应;所述与IBE公钥对应的、相关联的媒介数字证书的公钥称为对应IBE公钥的影子公钥。
5.根据权利要求1所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 当身份标识的拥有者,即加密数据接收方,启动IBE密钥管理客户端、进入获取本人媒介数字证书功能、并输入本人身份标识信息后,IBE密钥管理客户端和IBE密钥服务器按如下流程,生成与身份标识对应的媒介数字证书,产生与身份标识对应的IBE密钥对,并将IBE密钥对保存到IBE CSP中步骤1. IBE密钥管理客户端以安全的方式连接IBE密钥服务器,申请获取用户身份标识对应的IBE私钥;步骤2. IBE密钥服务器要求对客户端进行身份鉴别;步骤3. IBE密钥管理客户端提交用户的身份凭证进行身份鉴别; 步骤4. IBE密钥服务器完成对客户端用户的身份鉴别后,通过预先设定的方式验证用户确实为身份标识的拥有者;步骤5.若用户身份鉴别和身份标识归属验证获得通过,则IBE密钥服务器为用户产生标识对应的IBE私钥,并通过安全通道将IBE私钥返回到IBE密钥管理客户端,否则,返回出错信息;步骤6. IBE密钥管理客户端接收到用户IBE私钥后,从IBE私钥中提取相关信息,产生相应的IBE公钥,然后,转入下一步骤;步骤7. IBE密钥管理客户端在本地证书库的受信任的颁发机构根证书存储区中查看是否有具有特定主题名的、用于签发媒介数字证书的所述自签名根CA证书,若没有,转入步骤9;否则,转入下一步骤;步骤8. IBE密钥管理客户端进一步检查该自签名根CA证书是否有私钥,若有,转入步骤10 ;否则,删除该自签名根CA证书,然后转入下一步骤;步骤9. IBE密钥管理客户端通过CryptoAPI调用IBE关联CSP产生一个密钥对,并基于该密钥对生成一个自签名的CA数字证书,该CA证书的主题名和颁发者名相同,具有预先设定的特定名称,证书序列号由主题名和颁发者名的散列值产生,自签名根CA数字证书生成、签名完成后,将该自签名根CA数字证书放入本地证书库中的受信任的颁发机构根证书存储区中,之后转入下一步骤;步骤10. IBE密钥管理客户端通过CryptoAPI调用IBE关联CSP产生一个密钥对,并基于该密钥对生成一个待签名的数字证书,该数字证书的主题名包含有接收方的身份标识, 颁发者名为所述自签名根CA证书的主题名,而证书序列号由主题名和颁发者名散列值产生,证书的密钥用途设置为密钥加密,然后使用所述自签名根CA证书的私钥对待签名证书签名,生成一媒介数字证书,之后,转入下一步骤;步骤11. IBE密钥管理客户端通过调用扩展CSP接口,将前面步骤中获得的IBE密钥对存入IBE CSP中,调用扩展接口时,除了提供IBE密钥对外,还同时提供密钥容器标识以及刚签发的媒介数字证书的公钥,该公钥称为所述IBE密钥对的影子公钥,IBE密钥对保存成功后,转入下一步骤;步骤12.若在本地证书库的本人证书存储区中有先前产生的、与同一身份标识对应的媒介数字证书,则IBE密钥管理客户端将该证书清除,然后转入下一步骤;步骤13. IBE密钥管理客户端调用Windows的证书管理接口,将刚签名产生的媒介数字证书存入本地证书库的本人证书存储区中,并将证书私钥存储的CSP设置为权利要求1中所述的IBE CSP,私钥存储的CSP的类型设置为IBE CSP对应的CSP类型,私钥的密钥容器标识设置为步骤11调用扩展接口、在IBE CSP中保存用户IBE密钥对时提供的密钥容器标识,私钥的密钥用途设置为密钥交换;在以上步骤中,是先生成IBE密钥对还是先生成媒介数字证书,其先后顺序是无关紧要的。
6.根据权利要求5所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 当IBE密钥管理客户端按所述步骤11调用IBECSP扩展接口保存IBE密钥对时,IBE CSP扩展接口按如下步骤进行有关操作第一步.在存储介质中创建一个永久性的IBE密钥容器,其密钥容器标识为调用扩展接口时输入的密钥容器标识,然后将接口中提供的IBE密钥对存放到该密钥容器中,该密钥对用途为密钥交换,并且进一步地将调用接口中提交的媒介数字证书的公钥及其散列值存入到该IBE密钥容器中,使得该密钥容器及其中的IBE密钥对与输入的媒介数字证书的公钥关联;第二步.通过CryptoSPI直接调用IBE关联CSP,在其中产生一个永久性的密钥容器, 称为第一步创建的IBE密钥容器的影子密钥容器,然后在该影子密钥容器中产生一用途是密钥交换的、永久性的密钥对,称为对应IBE密钥对的影子密钥对;第三步.将第二步产生的密钥容器的标识保存到第一步产生的IBE密钥容器中,从而将该IBE关联CSP中产生的影子密钥容器关联到第一步产生的IBE密钥容器,然后返回。
7.根据权利要求1所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 所述IBE CSP按如下不同情形对通过CryptoSPI接口的接口函数调用进行相应处理情形1 对于通过接口函数CPAcquireContext获取密钥容器句柄的操作,根据接口调用中输入的密钥容器标识分别做如下处理若输入的密钥容器标识指向一个永久性IBE密钥容器,则进一步判断接口函数调用中的输入参数dwFlags的值是否为零或CRYPT_SILENT或CRYPT_DELETEKEYSET,若都不是,则返回出错;否则,再判断dwFlags的值是否为CRYPT_DELETEKEYSET,若是,则先通过直接调用IBE关联CSP的接口函数CPAcquireContext删除IBE关联CSP中对应的影子密钥容器, 然后,删除接口中输入的密钥容器标识所指向的永久性IBE密钥容器及其IBE密钥对,最后返回操作结果;否则,先在内存中创建一个IBE密钥容器对象,然后获取密钥容器标识所指向的永久性IBE密钥容器中的IBE密钥对、对应的影子公钥及该公钥散列值,生成相应的数据对象,并将这些数据对象保存到、关联到内存中刚产生的IBE密钥容器对象中,其中IBE 密钥对的用途为密钥交换,然后通过直接调用IBE关联CSP的接口函数CPAcquireContext 获得IBE关联CSP中对应的影子密钥容器的句柄,并将返回的影子密钥容器的句柄与内存中刚创建的IBE密钥容器对象关联,最后将影子密钥容器的句柄作为密钥容器的句柄返回;若输入的密钥容器标识不是指向一个永久性IBE密钥容器,则进一步判断输入接口中输入参数dwFlags的值是否为CRYPT_DELETEKEYSET,若是,则使用相同的输入参数直接调用IBE关联CSP的CPAcquireContext接口函数,完成有关操作,然后将操作结果返回;否则,先在内存中创建一个I BE密钥容器对象,然后使用相同的输入接口参数,直接调用IBE 关联CSP的接口函数CPAcquireContext,获取相应的密钥容器的句柄,该密钥容器同样也称为内存中刚创建的IBE密钥容器的影子密钥容器,然后将返回的影子密钥容器的句柄与内存中刚创建的IBE密钥容器对象关联,最后将返回的影子密钥容器的句柄作为密钥容器的句柄返回;情形2 对于通过接口函数CPGetUserKey获取密钥容器中保存的密钥对句柄的操作, 先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器对象,若不是,返回出错;否则,进一步检查所指向的IBE密钥容器是否包含有一个IBE密钥对对象,若是,则通过调用IBE关联CSP的接口函数CPGetUserKey,获取对应的影子密钥容器中的、密钥交换用途的影子密钥对的密钥句柄,然后,将返回的影子密钥对句柄与IBE密钥容器中的IBE密钥对对象关联,之后将返回的影子密钥对句柄作为密钥对的句柄返回;否则,使用相同的输入接口参数,通过直接调用IBE关联CSP的接口函数CPGetUserKey完成有关操作,并将调用返回的密钥对句柄返回;情形3 对于通过接口函数CPImportKey导入公钥的密钥导入操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步通过该导入公钥的散列值检查该公钥是否与一个永久性IBE密钥容器或永久性 IBE公钥对象对应,即检查导入的公钥是否是一个IBE公钥的影子公钥,若是,则在内存中创建一个IBE公钥对象,并将该I BE公钥对象、要导入的公钥及该公钥的散列值保存、关联到接口中输入的密钥容器句柄所指的IBE密钥容器中,然后再通过调用IBE关联CSP的接口函数CPImportKey,将要导入的公钥导入到IBE关联CSP中对应的影子密钥容器中,并将调用返回的导入的公钥的密钥句柄与内存中刚创建的IBE公钥对象关联,之后将该密钥句柄作为导入的公钥的句柄返回;否则,使用相同的输入接口参数,通过直接调用IBE关联 CSP的接口函数CPImportKey完成有关操作,并将调用返回的密钥句柄返回;情形4 对于通过接口函数CPImportKey导入对称密钥的密钥导入操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查接口中输入的解密密钥句柄是否指向对应IBE密钥容器中的一个IBE 密钥对对象,若是,则先使用该IBE密钥对对象中的IBE私钥,解密被加密的对称密钥,然后再通过调用IBE关联CSP的接口函数CPImportKey将要导入的对称密钥导入到IBE关联 CSP中的对应影子密钥容器中,然后将调用返回的导入的对称密钥的密钥句柄返回;否则, 使用相同的输入接口参数,通过直接调用IBE关联CSP的接口函数CPImportKey完成对称密钥的导入,并将调用返回的导入的对称密钥的密钥句柄返回;情形5 对于通过接口函数CPExportKey导出密钥的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查被导出密钥的句柄是否指向IBE CSP中的一个IBE公钥对象,若是,则导出该IBE公钥对应的影子公钥;否则,再进一步检查被导出密钥的句柄是否指向IBE CSP中的一个IBE 密钥对对象,若是,则禁止导出;否则,再进一步检查用于对被导出密钥进行加密的加密密钥的句柄是否指向一个IBE公钥对象或IBE密钥对对象,若是,则先通过相应的接口函数将要导出的密钥以明文形式从IBE关联CSP中导出,或者先密文导出后再解密成明文,然后再用对应的IBE公钥加密要导出的密钥,返回结果;否则,使用相同的接口输入参数,直接调用IBE关联CSP的接口函数CPExportKey完成有关操作;情形6 对于通过接口函数CPEncrypt进行数据加密的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查加密密钥句柄是否指向IBE密钥容器中的一个IBE公钥对象或IBE密钥对对象, 若是,使用对应的IBE公钥加密数据,然后返回加密结果;否则,使用相同的输入接口参数, 直接调用IBE关联CSP的接口函数CPEncrypt完成有关操作;情形7 对于通过接口函数CPDecrypt的数据解密操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查解密密钥句柄所指向的密钥对象是否为IBE密钥容器中的一个IBE密钥对,若是,则使用该IBE密钥对的私钥解密数据,然后返回解密结果;否则,使用相同的接口输入参数,直接调用IBE关联CSP的接口函数CPEncrypt完成有关操作;情形8 对于通过接口函数CPGetKeyParam获取密钥参数的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,进一步检查要查询的密钥句柄是否指向一个IBE公钥对象或IBE密钥对对象,若是,根据该IBE公钥对象或IBE密钥对对象对应的影子公钥返回有关参数;否则,使用相同的输入接口参数,直接调用IBE关联CSP的接口函数CPGetKeyParam完成有关操作;情形9 对于通过接口函数CPktKeyParam设置密钥参数的操作,检查要设置参数的密钥句柄是否指向IBE密钥容器中的一个IBE公钥对象或IBE密钥对对象,若是,拒绝有关操作;否则,使用相同的输入接口参数,直接调用IBE关联CSP的接口函数CPktKeyParam完成有关操作;情形10 对于通过接口函数DuplicateKey复制密钥的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,先使用相同的输入接口参数,调用IBE关联CSP的接口函数DuplicateKey进行复制密钥的操作,调用成功后,再检查要复制的密钥的密钥句柄是否指向当前IBE密钥容器中的一个在内存中创建的IBE公钥对象,若是,则在内存中复制该IBE公钥对象,并将调用IBE关联 CSP进行密钥复制操作时返回的、复制后的密钥对象的句柄与刚才复制后的IBE公钥对象关联,然后将该密钥对象句柄作为复制后的密钥对象句柄返回;否则,再进一步检查要复制的密钥句柄是否指向IBE密钥容器中的IBE密钥对对象,若是,则将调用IBE关联CSP的接口函数DuplicateKey进行密钥复制操作时返回的、复制后的密钥对象的句柄与该IBE密钥对对象关联,然后将该密钥对象句柄作为复制后的密钥对象的句柄返回;否则,将调用IBE 关联CSP的接口函数DuplicateKey的操作结果直接返回;情形11 对于通过接口函数DestroyKey释放密钥句柄的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则, 先使用相同的输入接口参数,调用IBE关联CSP的接口函数DestroyKey进行释放密钥句柄的操作,调用成功后,再检查要释放的密钥句柄是否指向当前IBE密钥容器中的、一个在内存中创建的IBE公钥对象,若是,则释放该IBE公钥对象及其密钥句柄,并返回操作成功;否则,再进一步检查要释放的密钥句柄是否指向IBE密钥容器中的IBE密钥对,若是,则释放该密钥句柄,并返回操作成功;否则,直接返回调用IBE关联CSP的接口函数DestroyKey的操作结果;情形12 对于通过接口函数CPReleaseContext释放加密上下文的操作,即释放密钥容器句柄的操作,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的 IBE密钥容器,若不是,返回出错;否则,先调用IBE关联CSP的接口函数CPReleaseContext 释放对应的影子密钥容器的加密上下文,然后释放当前IBE密钥容器在内存中创建的所有密钥对象,以及当前IBE密钥容器对象,之后返回操作成功;情形13 对于其他接口函数调用,先检查接口中输入的密钥容器句柄是否指向一个内存中已创建的有效的IBE密钥容器,若不是,返回出错;否则,使用相同的输入参数,通过调用IBE关联CSP的相同接口函数,完成有关操作。
8.根据权利要求1所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 IBE CSP采用如下两种方式之一,维护其各类数据对象的句柄方式1 :IBE CSP不为其各类数据对象,包括密钥容器对象、密钥对对象、公钥对象,产生单独的对象句柄,而是直接使用IBE关联CSP中相应的影子数据对象的句柄,作为其自身数据对象的句柄;方式2 =IBE CSP为其各类数据对象产生并维护单独的数据对象句柄,然后维护一个密钥句柄映射表,表中保存IBE CSP中各类数据对象的句柄与其影子数据对象的句柄之间的映射关系;当IBE CSP调用IBE关联CSP的接口函数进行有关操作时,若需要进行句柄转换,则在接口函数调用中使用相应的、映射后的影子数据对象的句柄。
9.根据权利要求1所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 所述IBE CSP在使用IBE算法进行数据或密钥加密时,将解密所需的随机性参数存放到加密数据块中;进一步地,若媒介数字证书采用的非对称密码算法是RSA算法,则为了使得 IBE加密后的数据块的边界与RSA加密数据块的边界对齐,在一个或多个IBE加密数据块后添加随机字节串。
10.根据权利要求1所述的一种基于媒介数字证书的IBE数据加密系统,其特征在于 基于CSP接口实现的IBE密码操作与运算模块,即IBE CSP,也可以是一个基于Public key Cryptography Standards 11接口规范实现的IBE密码操作与运算模块,此基于Public key Cryptography Standards 11的IBE密码操作与运算模块有扩展的接口用于IBE公开密钥对或IBE公钥的导入,并将它们与对应的媒介数字证书上的公钥相关联,且此基于Public key Cryptography Standards 11的IBE密码操作与运算模块将基于媒介数字证书所对应的非对称密码算法的数据加密和解密运算转换成相应的基于IBE的数据加密和解密运算。
全文摘要
本发明是一种基于媒介数字证书的IBE数据加密系统,本发明的系统包括四个组成部分IBE CSP、IBE密钥管理客户端、IBE密钥服务器以及IBE客户端安装软件,其中IBE CSP是本发明的核心和关键。本发明使得不支持IBE加密技术的系统、应用能够使用IBE技术进行数据加密与解密。本发明以媒介数字证书为桥梁,通过一个注册提供RSA、ECC或其他X509证书支持的非对称密码算法、但实际上实现IBE算法的Windows CSP,将基于RSA、ECC或其他非对称密码算法的数据加密、解密运算自动转换为相应的基于IBE算法的数据加密、解密运算。
文档编号H04L9/32GK102255729SQ201110189108
公开日2011年11月23日 申请日期2011年7月7日 优先权日2011年7月7日
发明者龙毅宏 申请人:武汉理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1