一种标识私钥自动更新的方法及密码系统与流程

文档序号:12278121阅读:283来源:国知局
一种标识私钥自动更新的方法及密码系统与流程

本发明属于信息安全领域,特别是一种标识私钥自动更新的方法及密码系统。



背景技术:

基于标识的密码(Identity-Based Cryptography,IBC)是一种公开密钥密码体制。在基于标识的密码体制中,用户的一个身份标识,如电子邮箱地址、手机号码,就是公钥,称为标识公钥(或IBC公钥),可用于数据加密和/或签名验证(实际上是用户标识结合一组系统公开参数构成了公钥);用户的身份标识对应一个私钥,称为标识私钥(或IBC私钥),可用于数据解密和/或数字签名。用户的标识私钥是由一个标识密钥服务系统(私钥生成器,Private Key Generator,PKG)根据用户的身份标识计算生成。

在实际应用中为了降低由于私钥泄露带来的安全风险,都不是直接用一个标识作为公钥,并据此计算得到对应的私钥的,而是在一个标识(原始标识)的基础上加上时间限定信息(以及其他的限定信息)形成受限定的身份标识(也称为扩展的身份标识),然后以此受限定的标识(及相应的系统公开参数)作为公钥(标识公钥),并据此受限定的标识计算得到对应的私钥(标识私钥)。一种用时间限定标识的常用方案如下。

从某个固定的时间开始,将时间轴分成等距的时间段,将一个标识与一个时间段相结合,形成受限定的标识:<标识>||<时间段>,这里,<标识>是(原始)标识对应的字串,<时间段>是一个时间段的字串表示,包括起始时刻和截止时刻组成,如用2013-8-28:2013-9-28表示时间段:自2013年8月28日起到2013年9月28止(但这种时间段表示不是唯一的,可根据需要约定),这里的“||”表示标识字串和时间段字串的组合(可以是简单的字串连接、合并,或者其他约定的连接、合并方式,只要能区分、表示受限定的标识即可)。

这样受某个时间段限定的标识将在对应的时间段内作为一个标识公钥使用,并有一个对应于此时间段的标识私钥,即对于用户的一个标识,在不同的时间段对应不同的标识公钥、标识私钥。对应的时间段覆盖当前时刻的受限定的标识(及系统公开参数)是当期有效的标识公钥,而相应的标识私钥是当前有效的标识私钥。

通过时间段限定标识及对应私钥的使用,由此带来的好处是减少了私钥泄露的风险及危害,但是,由此带来的问题是用户需要经常更新其标识私钥,如果这种更新操作是由用户手工操作完成的,那将给用户带来极大的麻烦。针对这个标识私钥的更新问题,本专利发明人在专利申请“一种自动更新和恢复私钥的标识型密码系统及方法”(专利申请号:201410058689.3)中提出了一种解决方案,这种方案可在无需用户手工干预的情况下,自动实现用户标识私钥的更新。但201410058689.3中方案存在的问题是:密码模块从标识密钥服务系统获取私钥时,用户当前有效的标识私钥须处于可直接用状态,这样密码模块才可利用当前有效的标识私钥去获得更新的标识私钥;但是,在实际应用中,这个条件可能无法很好满足,比如,若用户的标识私钥是存放在便携式密码硬件中(如USB Key中),用户可能很长时间不使用密码硬件,这样密码模块就无法使用用户当前有效的标识私钥获取更新的标识私钥;或者,用户的标识私钥经PIN码(Personal Identification Number)或口令保护后(加密后)存放在用户计算机本地的密钥库中,若用户长时间不使用密钥库或不输入保护PIN码或口令,则密码模块法获得用户当前有效的标识私钥获取更新的标识私钥。



技术实现要素:

本发明的目的是提出一种能实现标识私钥自动更新的方法及密码系统,以克服现有技术方案的不足。

为了实现上述目的,本发明所采用的技术方案是:一种标识私钥自动更新的方法,以及基于此方法的密码系统,具体如下。

本发明提出的标识私钥自动更新的方法如下。

(用户计算机中的)密码模块或后台检测程序在检测到需要为用户获取更新的标识私钥时(IBC私钥时),使用用户计算机本地存放的安全凭证向标识密钥服务系统申请获取用户标识的更新的标识私钥;标识密钥服务系统在验证安全凭证的有效性后,为用户生成更新的标识私钥,使用更新的标识私钥所对应的时间段(用于限定标识及对应私钥的时间段)的前一个时间段所对应的标识公钥(即受限定的用户标识)将生成的更新的标识私钥加密,然后将加密后的更新的标识私钥返回给密码模块或后台检测程序保存在用户计算机本地;

所述安全凭证是由安全凭证发放系统发放的、用于证明用户被允许从标识密钥服务系统获取加密后的更新的标识私钥的电子信息(如安全令牌,或用户标识及作为私密数据的随机密码)。

若密码模块或后台检测程序检查发现用户计算机本地存放有加密后的更新的标识私钥,且用于解密此加密后的更新的标识私钥的用户标识私钥可用(如用户正在使用能解密此更新的标识私钥的密文数据的私钥,并输入了私钥的保护PIN码,或用户的密码模块硬件以及其中存放的用户标识私钥当前处于可用状态等),则密码模块或后台检测程序使用用户的标识私钥解密加密后的更新的标识私钥,将解密获得的更新的标识私钥保存到密码模块的密钥库中(包括软件密码模块的软件密钥库,或密码模块的密码硬件的密钥库中,如USB Key),删除更新的标识私钥的密文数据。

若用户计算机本地保存有多个加密后的对应不同时间段的更新的标识私钥,则:

当对其中的对应于最早时间段的加密后的更新的标识私钥进行解密的用户标识私钥可用时,密码模块或后台检测程序使用用户标识私钥(如用户正在使用能解密此更新的标识私钥的密文数据的私钥,并输入了私钥的保护PIN码,或用户的密码模块硬件以及其中存放的用户标识私钥当前处于可用状态等),解密其中的对应于最早时间段的加密后的更新的标识私钥;之后,再对余下的对应不同时间段的加密后的更新的标识私钥进行解密处理(若余下的有多个,则递进采用这种方式处理)。

当密码模块(根据密码应用程序的请求)要使用用户的标识私钥进行密码运算时,若密码模块要使用的用户标识私钥作为加密后的更新的标识私钥保存在用户计算机本地,而用于解密此加密后的更新的标识私钥所需的用户标识私钥不处于可用状态(若密码模块要使用的标识私钥是一系列加密后的更新的标识私钥中的一个,则对其中的对应于最早时间段的加密后的用户标识私钥进行解密所需的用户标识私钥不处于可用状态),则密码模块引导用户并通过用户的操作,使得密码模块要使用的用于解密加密后的标识私钥的用户标识私钥处于可用状态(如引导用户输入标识私钥的保护PIN码,或者插入密码硬件并输入密码硬件的保护PIN码或私钥的保护PIN码),然后对密码模块要使用的标识私钥的密文数据进行解密,将解密得到的标识私钥保存在密码模块的密钥库中,之后使用解密得到的标识私钥进行密码运算。

若所述安全凭证还对应有用于证明用户是安全凭证拥有者的秘密数据(如随机密码、对称密钥或非对称密钥的私钥),则:

安全凭证的秘密数据被保存在密码模块或后台检测程序所在用户计算机本地,并能被密码模块或后台检测程序直接使用(在无需用户输入PIN码或口令的情况下直接使用);而对安全凭证的有效性进行验证的系统(如生成更新的标识私钥的标识密钥服务系统、发放安全凭证的安全凭证发放系统)在验证安全凭证的有效性时,通过与密码模块或后台检测程序的交互,验证密码模块或后台检测程序的用户拥有安全凭证的秘密数据。

对于以上所述标识私钥自动更新的方法中的安全凭证的更新,有多种方法,其中的一种方法如下:

若密码模块或后台检测程序检测发现用户计算机本地保存的安全凭证需要更新且本地保存的安全凭证当前是有效的(在有效期内),则:

密码模块或后台检测程序使用本地保存的安全凭证向安全凭证发放系统申请获取具有新的有效期的安全凭证,即获取更新的安全凭证;安全凭证发放系统在验证密码模块或后台检测程序使用的安全凭证的有效性后(如果安全凭证有私密数据,还验证用户拥有安全凭证的秘密数据),为用户生成、发放更新的安全凭证,使用用户当前有效的标识公钥对更新的安全凭证或者对更新的安全凭证的私密数据加密(后者对应安全凭证有私密数据的情形),然后将加密后的更新的安全凭证或者将更新的安全凭证及加密后的(安全凭证)私密数据返回给密码模块或台检测程序保存在用户计算机本地;

若密码模块或后台检测程序检测检查发现用户计算机本地存放有加密后的更新的安全凭证,或者有更新的安全凭证及对应的加密后的(安全凭证)私密数据,且用于解密此加密后的更新的安全凭证或解密此更新的安全凭证的加密后的私密数据的用户标识私钥可用(如由于用户正在使用能解密此更新的安全凭证或更新的安全凭证的私密数据的密文数据的私钥,并输入了私钥的保护PIN码,或用户的密码模块硬件以及其中存放的用户标识私钥当前处于可用状态等),则:

密码模块或后台检测程序使用用户的标识私钥解密加密后的更新的安全凭证,将解密获得的更新的安全凭证保存在用户计算机本地,然后删除更新的安全凭证的密文数据,或者密码模块或后台检测程序使用用户的标识私钥解密更新的安全凭证的加密后的私密数据,将解密获得的(更新的安全凭证的)私密数据(连同更新的安全凭证一起)保存在用户计算机本地,然后删除更新的安全凭证的私密数据的密文数据。

对于以上所述标识私钥自动更新的方法中的安全凭证的更新的另一种方法如下:

若密码模块或后台检测程序检测发现用户计算机本地保存的安全凭证需要更新且本地保存的安全凭证是有效的(在有效期内),则:

密码模块或后台检测程序使用本地保存的安全凭证向安全凭证发放系统申请获取具有新的有效期的安全凭证,即获取更新的安全凭证;安全凭证发放系统在验证密码模块或后台检测程序使用的安全凭证的有效性后(如果安全凭证有私密数据需要,还要验证用户拥有安全凭证的秘密数据),为用户生成、发放更新的安全凭证,然后将更新的安全凭证返回给密码模块或台检测程序保存在用户计算机本地。

以上两种安全凭证的更新方法,前一种似乎更安全点,它可以防止攻击者获得更新的安全凭证或安全凭证的私密数据;但后一种实际上也是安全的,并不存在攻击者利用窃取的安全凭证获取用户标识私钥的可能,因为,只要攻击者没有用户的标识私钥,那么,即便他利用窃取的安全凭证获得了用户的加密后的更新大标识私钥,他也无法解密获得用户的标识私钥。但是,后一种安全凭证的更新方法使得标识密钥服务系统更容易遭受消耗系统资源的DOS攻击。

除了安全凭证的更新,对于安全凭证的获取有如下一种方法(实际上,它不但适合于本地没有当前有效的安全凭证时的安全凭证的获取,也适合于本地有当前有效的安全凭证时的安全凭证的更新):

若密码模块或后台检测程序检测发现需要为用户获取安全凭证(由于本地没有安全凭证,或者由于安全凭证需要更新),且用户当前有效的标识私钥可用(如由于用户正在使用当前有效的标识私钥,并输入了私钥的保护PIN码,或用户的密码模块硬件以及其中存放的用户的当前有效的标识私钥正处于可用状态等),则:

密码模块或后台检测程序向安全凭证发放系统申请用户的用于更新标识私钥的安全凭证,安全凭证发放系统在(通过与密码模块或后台检测程序的交互)验证密码模块或后台检测程序的用户拥有当前有效的标识私钥后(如通过验证用户标识私钥的数字签名,或者通过验证用户能使用标识私钥解密使用标识公钥加密的数据),为用户生成、发放安全凭证,并返回给密码模块或后台检测程序保存在用户计算机本地。

对于以上所述标识私钥自动更新的方法,当密码模块需要使用用户的当前有效的标识私钥进行密码运算,而密码模块没有用户当前有效的标识私钥可用,且无法通过解密本地保存的加密后的更新的标识私钥获得用户的当前有效的标识私钥,或者无法通过本地保存的安全凭证包括通过解密本地保存的加密后的安全凭证获得用户的当前有效的标识私钥(通过获取更新的标识私钥的方式获得),则所述密码模块按通常获取当前有效的标识私钥的方式从标识密钥服务系统获取用户的当前有效的标识私钥;所述通常获取当前有效的标识私钥的方式是指非依赖于已有的标识私钥获取当前有效的标识私钥的方式。

当密码模块需要使用用户的以前的标识私钥(当前时刻对应的时间段之前的标识私钥)进行密码运算,而密码模块没有用户以前的标识私钥可用,且无法通过解密本地保存的加密后的更新的标识私钥获得用户以前的标识私钥,则密码模块使用用户的当前有效的标识私钥从标识密钥服务系统获取用户以前的标识私钥(如利用当前有效的标识私钥在标识密钥服务系统完成用户身份鉴别,然后获得用户以前的标识私钥)。

对于以上所述的标识私钥自动更新的方法,为了防止攻击者盗用用户的用于标识私钥更新的安全凭证进行攻击(主要是进行滥用系统资源的DOS攻击),每个安全凭证都一个唯一标识符,当标识密钥服务系统在检测发现一个用于标识私钥更新的安全凭证存在非正常使用的情况时(如被频繁使用,短时间内在大量的不同计算设备中使用),将此安全凭证标记为禁用状态,禁止该安全凭证的使用(用于获取加密后的更新的标识私钥)。

基于上述标识私钥自动更新的方法的密码系统如下。

所述密码系统包括安全凭证发放系统、标识密钥服务系统、密码模块、后台检测程序,其中:

安全凭证发放系统:一个发放安全凭证,用于证明用户被允许从标识密钥服务系统获取加密后的更新的标识私钥的系统;所述安全凭证发放系统是一个独立的系统,或者是标识密钥服务系统的一个子系统或组件;

标识密钥服务系统:一个为用户的标识生成标识私钥的系统;

密码模块:一个使用用户的标识私钥进行密码运算的软件或软硬件相结合的组件(若是软硬件相结合的组件,则是位于用户计算机中的软件部分实施本发明的、解密操作以外的操作);

后台检测程序:一个运行在用户计算机后台进行标识私钥以及安全凭证获取、更新的程序;

所述密码模块、后台检测程序、标识密钥服务系统及安全凭证发放系统采用所述标识私钥自动更新的方法,进行标识私钥和安全凭证的自动获取、更新。

基于本发明的方法及密码系统,当用户的标识私钥需要更新而用户的当前有效的标识私钥不处于可用状态时,密码模块或后台检查程序可以使用存放在用户计算机本地的安全凭证自动获取用户的加密后的更新的标识私钥,而当用户的对加密后的更新的标识私钥进行解密的标识私钥处于可用状态时,密码模块或后台检查程序自动通过解密获得用户的更新的标识私钥;由于用于标识私钥更新的安全凭证的有效期可以很长,比如一年,大大地大于用户在不同时期的标识私钥所对应的时间段,这样,即便用户密码模块中的标识私钥长时间不处于可用状态,密码模块或后台检查程序也可以利用安全凭证自动获得用户在不同时期的、对应不同时间段的更新的标识私钥的密文数据,之后在用户的用于解密的标识私钥处于可用状态时,由密码模块或后台检测程序逐个解密被(连环)加密的更新的标识私钥,这样既避免了标识私钥更新过程中的用户手工操作,又能在用户当前有效的标识私钥不处于可用状态时,能够获得用户更新的标识私钥的密文数据,并在适当的时候解密此密文数据获得用户更新的标识私钥。在本发明中,由于加密后的更新的标识私钥最终是由用户的标识私钥解密的,因此,这种技术方案并没有降低标识私钥更新过程中的安全性。

附图说明

图1为本发明的方法在密码模块是软件组件时的示意图。

图2为本发明的方法在密码模块是软硬件结合组件时的示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的描述。以下实施例不代表本发明所有可能的实施方式,也不作为对本发明的限定。

实施例1、

如图1所述,在此实施例中,用户的密码模块是软件密码模块(如基于Windows CryptoSPI接口的CSP动态库,基于PKCS#11接口的PKCS#11动态库),用户的标识私钥存放在用户计算机本地的一个密钥库中,且保存在密钥库中的用户的一个身份标识所对应的(一系列)标识私钥由一个对称密钥加密后存储(此对称密钥称为标识私钥加密密钥),而此标识私钥加密密钥经用户的口令或PIN码(导出的密钥)加密后也保存密钥库中。当用户输入口令或PIN码后,密码模块或后台检测程序可以通过解密得到标识私钥加密密钥,然后使用此标识私钥加密密钥,解密密钥库中的用户标识私钥,并使用用户的标识私钥进行密码运算或密钥操作。

用于用户标识私钥更新的安全凭证保存在用户计算机本地。安全凭证有用于证明用户是安全凭证拥有者的私密数据,或者没有对应的私密数据。若没有私密数据,则标识密钥服务器在验证安全凭证的有效性后为用户生成更新的标识私钥,将更新的标识私钥加密后返回给密码模块或后台检测程序保存在用户计算机本地;若有私密数据,则在为用户生成更新的标识私钥前,标识密钥服务器要验证安全凭证的有效性,而在验证安全凭证的有效性时,标识密钥服务器要通过安全凭证的私密数据验证密码模块或后台检测程序的用户是安全凭证的拥有者,具体怎么验证,取决于私密数据是共享秘密(如随机密码、对称密钥)还是非对称密钥的私钥(这都不是难事)。

密码模块或后台检测程序从标识密钥服务系统获取的更新的标识私钥所对应的时间段,相对于进行标识私钥更新操作的当前时刻有两种可能,具体如下。

若标识密钥服务系统允许用户在当前有效的标识私钥到期前的一段时间内提前进行标识私钥更新,则:1)在当前时刻处于当前有效的标识私钥对应的时间段中的允许提前进行标识私钥更新的时间范围内时,密码模块或后台检测程序向标识密钥服务系统申请获取相对于当前时间段(当前时刻所在时间段)之后的下一个相邻时间段所对应的用户标识私钥;2)当用户没有当前有效的标识私钥时(包括没有加密后的当前有效的标识私钥时),密码模块或后台检测程序向标识密钥服务系统申请获取的更新的标识私钥是用户的当前有效的标识私钥(相对于前一个相邻时间段是更新)。

若标识密钥服务系统不允许用户在当前有效的标识私钥到期前提前进行标识私钥更新,则:当用户没有当前有效的标识私钥时(包括没有加密后的当前有效的标识私钥时),密码模块或后台检测程序向标识密钥服务系统申请获取的更新的标识私钥是用户当前有效的标识私钥(相对于前一个相邻时间段是更新)。

密码模块或后台检测程序将获得的加密后的更新的标识私钥保存在用户计算机本地的密钥库中。当加密后的更新的标识私钥被解密后,密码模块或后台检测程序将解密后的更新的标识私钥放入到密码模块在用户计算机本地的密钥库中。

这里需要注意的是,后台检测程序进行的密码运算操作和密钥管理(如存储)操作最终是通过密码模块进行的(后台检测程序不直接进行密码运算,不直接将标识私钥存放到密钥库中,这属于密码模块的功能)。

实施例2、

如图2所述,实施例2与实施例1的差别在于此时的密码模块是一个软件与硬件相结合的组件,其中硬件部分(如USB Key)存放用户标识私钥并应用标识私钥进行密码运算(如数据解密、数字签名等);只有用户在计算机上插入密码硬件并输入密码硬件或标识私钥的保护口令(PIN码)后,各种程序才能通过密码模块的软件部分(密码接口)调用、使用密码硬件中的标识私钥进行密码运算。此时,密码模块的软件部分提供了密码硬件与应用程序之间的调用接口(密码接口),密码接口通常是动态库(如实现Windows CryptoSPI接口的CSP的动态库、实现PKCS#11接口的PKCS#11动态库等);密码模块的软件部分负责本发明中使用标识私钥进行解密运算之外的其他功能的实施。

在此实施例中,用于标识私钥更新的安全凭证、以及从标识密钥服务系统获得的加密后的更新的标识私钥都保存在用户计算机本地中(的永久存储介质中),供密码模块的软件部分或后台检测程序操作。

当用户在计算机上插入密码硬件,输入密码硬件或用户标识私钥的保护口令(PIN码)后,用户标识私钥处于可用状态,此时,若有加密后的更新的标识私钥,则密码模块的软件部分或后台检测程序将加密后的更新的标识私钥导入到密码硬件中,由密码硬件解密获得更新的标识私钥,并存放在密码硬件的密钥库中。

后台检测程序针对标识私钥进行的密码操作(包括密码运算、密钥导入及解密)是通过调用密码模块的软件部分进行的。

对于安全凭证的实施有多种实施方式。

一种方式是,安全凭证是由安全凭证发放系统签发的安全令牌(此时的安全凭证发放系统是安全令牌签发系统),安全令牌中有用户的身份标识、有效期,并经安全凭证发放系统签名(对称密钥或非对称密钥签名),但安全令牌没有对应的私钥数据;验证安全凭证时,安全凭证的验证系统通过验证安全令牌的签名的有效性,从而确定用户是否被允许获取加密后的更新的标识私钥。

另一种方式是,安全凭证是由安全凭证发放系统签发的安全令牌,但安全令牌对应有私密数据,而私密数据是由安全凭证发放系统生成,并连同安全令牌一起返回给密码模块或后台检测程序的随机密码(随机字串),安全凭证发放系统保存有此随机密码;验证安全凭证时,安全凭证的验证系统一方面验证安全令牌的签名的有效性,另一方面通过查询安全凭证发放系统中保存的随机密码,验证安全模块或后台检测程序提交的随机密码是否正确,从而确定用户是否被允许获取加密后的更新的标识私钥。

再有一种方式是,安全凭证是一个数字证书,证书中有由密码模块或后台检测程序生成的非对称密钥的公钥,数字证书对应的私密数据是非对称密钥的私钥;验证安全凭证时,安全凭证的验证系统一方面验证数字证书的有效性,另一方面通过验证用户是否有数字证书对应的私钥,确定密码模块或后台检测程序的用户是否是证书的拥有者,从而确定用户是否被允许获取加密后的更新的标识私钥。

还有一种方式是,安全凭证就是用户的标识以及由安全凭证发放系统生成的随机密码(随机字串),安全凭证发放系统保存有此随机密码;验证安全凭证时,安全令牌的验证系统通过查询安全凭证发放系统中保存的随机密码,验证安全模块或后台检测程序提交的随机密码是否正确,从而确定用户是否被允许获取加密后的更新的标识私钥。

对于本发明的密码系统的实施,只要采用合适的软件开发技术,包括网络信息系统开发技术和桌面应用开发技术,结合相应的IBC密码技术进行开发,并实施本发明的标识私钥自动更新的方法即可。

其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1