一种密码系统及数字签名方法与流程

文档序号:16245003发布日期:2018-12-11 23:29阅读:461来源:国知局
一种密码系统及数字签名方法与流程

本发明属于密码技术领域,特别是一种基于双线映射的具有抗抵赖能力的密码系统及数字签名方法。

背景技术

标识密码(identitybasedcryptography,ibc)与采用数字证书技术的pki(publickeyinfrastructure)相比,由于省去了获取私钥拥有者的公钥数字证书这一麻烦环节,技术实现简单,目前日益受到人们的重视,具有广阔的应用前景。

标识密码,既可以用于数据加密(称为identitybasedencryption,ibe),也可以用于数字签名(称为identitybasedsignature,ibs)。目前的标识密码算法大多是采用基于双线性映射(bilinearmapping,也称配对运算,pairing)的算法,其中的双线性映射(配对运算)为:

e:g1×g2→gt时,其中g1、g2(配对或双线性映射的群)是加法循环群,gt是一个乘法循环群,g1、g2、gt的阶是素数n,即若p、q、r分别为g1、g2中的元,则e(p,q)为gt中的元,且:

e(p+r,q)=e(p,q)e(r,q),

e(p,q+r)=e(p,q)e(p,r),

e([a]p,[b]q)=e(p,q)ab

这里a、b是[0,n-1]中的一个整数,[a]p、[b]q表示点的p、q的倍加或数乘。g1和g2可以相同,也可以不同。在g1、g2中分别选取生成元p1、p2,则若g=e(p1,p2)≠1,g是gt的生成元。(若g1和g2是同一个群,则通常取p1=p2)。

在基于双线性映射(配对运算)的标识密码中,有一个私钥生成器(privatekeygenerator,pkg),专门负责生成标识对应的私钥。私钥生成器有一个主密钥s(或主私钥),对应有主公钥ppub=[s]p2,这里[s]p2表示p2的s倍加或数乘s。<e,g1,g2,gt,p1,p2,ppub>为系统参数(公开参数),

在标识密码中用户的一个标识就是公钥,而私钥是通常利用主密钥、用户标识计算得到的群g1中的一个元。

标识密码使用方便,但是,标识密码用于数字签名时,由于私钥是用户之前的私钥生成系统(私钥生成器)产生,不是在用户端产生,这就会产生抵赖问题:电子订单、电子合同的签名者可以说电子订单、电子合同的签名不是自己产生的,因为,私钥生成系统的运行者可以利用私钥生成系统生成签名者的私钥,然后使用生成的私钥假冒签名者对电子订单、电子合同进行了签名。本发明的目的就是要解决这一问题。



技术实现要素:

本发明的目的是针对基于双线性映射的标识密码在数字签名应用中存在的抵赖问题,提出相应的解决方案。

为了实现以上目的,本发明的技术方案是一种基于双线性映射的、具有抗抵赖能力的密码系统及相应的数字签名方法,具体如下。

所述密码系统包括密钥服务系统和密码组件,其中所述密钥服务系统是一个对用户和系统密钥进行管理的系统,密码组件是用户端的一个软件密码模块,或硬件密码模块,或软硬件相结合的密码模块;

所述密钥服务系统有双线映射e:g1×g2→gt,其中群g1的生成元为p1,群g2的生成元为p2;密钥服务系统有主密钥sm(或称主私钥sm);sm有对应的主公钥ppub=[sm]p2;<e,g1,g2,gt,p1,p2,ppub>是系统参数(公开参数);

所述密码组件有双线映射eu:gu1×gu2→gut,其中群gu1的生成元为pu1,群gu2的生成元为pu2;密码组件有主密钥su(或称主私钥su);su有对应的主公钥pupub=[su]pu2;<eu,gu1,gu2,gut,pu1,pu2,pupub>是系统参数(公开参数);

所述密码组件的用户有身份标识信息u;

所述密码组件直接或通过密钥管理客户端(程序)或通过其他方式将pupub提交到密钥服务系统,请求对pupub进行认证;

所述密钥服务系统在验证确定密码组件有从pu2生成pupub的密钥su后,利用主密钥sm采用双线性映射算法或椭圆曲线密码算法对包含身份标识信息u、主公钥pupub、以及密钥限定信息的数据进行数字签名,生成签名的数据cu(signeddata);最后形成的签名的数据cu中包含身份标识信息u、主公钥pupub、以及密钥限定信息;所述密钥限定信息包括:有效期限、区分标识符(如序列号)、密钥用途、以及其他限定pupub及其对应密钥su使用的信息(限定pupub也即限定了su);

所述签名的数据cu即是pupub的认证数据;

所述密码组件将cu保存。

以上所述密钥服务系统和密码组件采用的双线性映射算法(配对算法)、双线性映射群,相同或者不同(若用于生成标私钥,则所述密钥服务系统和密码组件,利用主密钥生成一个标识所对应的标识密码私钥的方式相同或者不同)。

以上所述密钥服务系统采用椭圆曲线密码算法对包含身份标识信息u、pupub、以及密钥限定信息的数据进行数字签名的方式仅在g2是椭圆曲线点群时适用。

所述pupub的认证数据cu被公开发布。

对于以上所述密码系统,当密码组件需要对数据进行数字签名时,可以采用如下方法之一。

数字签名方法一、

当需要对数据进行数字签名时,密码组件利用主密钥su采用双线性映射算法或椭圆曲线密码算对数据进行数字签名,形成签名的数据;最后形成的签名的数据中包含pupub的认证数据cu;

当对签名的数据的数字签名进行签名验证时,签名验证方从签名的数据中获得cu,验证确定cu的数字签名的有效性;cu的数字签名的有效性验证通过后,签名验证方(采用与对数据进行数字签名时的签名方法相对应的签名验证方法)验证确定签名的数据的数字签名的有效性。

数字签名方法二、

当需要对数据进行数字签名时,密码组件随机生成一个字串s,以字串s作为标识,然后使用主密钥su生成s对应的标识密码私钥ks;然后使用标识密码私钥ks,以<eu,gu1,gu2,gut,pu1,pu2,pupub>为系统参数,采用基于双线映射的标识密码签名算法对数据进行数字签名,形成签名的数据;最后形成的签名的数据中包含pupub的认证数据cu和字串s;

当对签名的数据的数字签名进行签名验证时,签名验证方从签名的数据中获得cu,验证确定cu的数字签名的有效性;cu的数字签名的有效性验证通过后,签名验证方从签名的数据中获取字串s,然后以s为标识,以<eu,gu1,gu2,gut,pu1,pu2,pupub>为系统参数,采用基于双线映射的标识密码签名算法对签名的数据的数字签名的有效性进行验证。

在本发明中,由于数字签名是由用户自己的密钥su产生的,或者是由用户自己的密钥su所生成的标识密码私钥产生的,而密钥服务系统的运行者不知道用户的密钥su,且用户密码组件的主公钥pupub的认证数据cu被公开发布,因此,签名者无法否认数字签名是由自己的密钥su产生或者由自己的密钥su所生成的标识密码私钥产生的。

在本发明中,若pupub的认证数据、普通数据的数字签名都采用都是基于双线性映射的密码算法,则本发明的密码系统是一种纯粹的基于双线映射的密码系统,是一种纯粹的基于双线性映射的标识密码系统;若对pupub的认证数据或普通数据的数字签名采用了椭圆曲线密码算法,则本发明的密码系统是一种双线性映射密码算法和椭圆曲线密码算法相结合的密码系统;若对pupub的认证数据和普通数据的数字签名都采用的是椭圆曲线密码算法,则就数字签名而言,本发明的系统是一个椭圆曲线密码系统(但仍然不同),但是,若本发明的密码系统同时用于针对普通数据进行基于双线性映射的密码加密,则这种采用椭圆曲线密码算法进行数字签名的系统仍然非常有用,因为它使得人们使用一套基于双线性映射密码技术的密码系统就能同时实现数据加密和抗抵赖数字签名。

附图说明

图1本发明的密码系统示意图

图2本发明的多级密码系统示意图

具体实施方式

下面对本发明的具体实施进行描述。

(一)关于双线性映射(配对)算法、双线性映射的群的实施

目前有多种不同的双线性映射算法(配对算法),如weil配对、tate配对、ate配对、r-ate配对等,就本发明而言,对采用何种双线性映射算法(配对算法)没有限制,只要能实现本发明的功能即可。

双线性映射(配对运算)所采用的群,本发明没有限制,只要采用与双线性映射(配对运算)相适应的群即可,通常是满足一定条件的椭圆曲线点群。

(二)关于用户身份标识信息、密钥限定信息的实施

用户身份标识信息是用于标识和识别用户的信息。对于用户身份标识信息,可以是电子邮箱地址、手机号等简单的用户标识、识别信息,也可以是x500的甄别名(distinguishedname),或其他的唯一标识、识别用户的信息形式。

密钥限定信息是用于限定pupub及对应的su的使用的。密钥限定信息通常包括有效期、密钥用途、系列号等。对于密钥限定信息的具体格式,可由实施者自行约定。

(三)关于系统参数实施的说明

在本发明技术方案描述中,仅约定cu包含身份标识信息、主公钥pupub、以及密钥限定信息,而实际应用中还涉及到密钥服务系统的系统参数、密码组件的其他系统参数,如何得到这些系统参数,这属于本发明之外的问题,比如,可以让有关的密码组件、密码系统预先配置有这些系统参数,或者让它们实时从某个系统获取这些系统参数,或者,将这些系统参数包含在cu、签名的数据中等,本发明对此没有限定,一些可能的方式如下:

(1)对于双线性映射,可以给每个双线性映射算法(配对算法)一个唯一标识,然后在签名的数据或密码运算的结果中包含相应的双线性映射算法(配对算法)标识;

(2)双线性映射(配对运算)的群g1、g2以及gu1、gu2,通常是满足特定条件的椭圆曲线的点群,系统参数中这些点群并非直接给出的,而是通过椭圆曲线方程结合其他参数(比如生成元)给出的,具体实施中给出这些点群的方式、描述这些点群的方式,可由实施者自己确定,比如,可以事先约定这些点群是怎样的,也可以在cu中包含椭圆曲线方式的标识信息,然后在线从一个系统获得,也可以直接将描述点群的信息包含在cu中等。

需要指出的是,若密码组件的gu1、pu1、eu未包含在中cu的话,那么,密码组件对于不同的数字签名,可以使用不同的gu1、pu1、eu。

(四)关于密钥服务系统验证确定密码组件是否有从pu2生成pupub的密钥su的实施

密钥服务系统验证确定密码组件是否有从pu2生成pupub的密钥su的方法有很多种,本发明对此没有特别的限定,以下是可能采用的方法(并非全部)。

方式一:群点计算方法

密钥服务系统在[1,n-1]中随机选择一个整数x,计算q1=[x]pu2,q2=[x]pupub,将q1提交给密码组件;

密码组件计算q3=[su]q1,将q3返回给密钥服务系统;

密钥服务系统比较q3和q2,若二者相等,则确定密码组件有从pu2生成pupub的密钥su。

方式二:私钥生成验证法

密钥服务系统生成一个包含随机信息的字串rid,将rid作为标识提交给密码组件,请求密码组件生成rid对应的标识密码私钥;

密码组件以su为主密钥,以<eu,gu1,gu2,gut,pu1,pu2,pupub>为系统参数(公开参数),生成并返回rid对应的标识密码私钥krid;

接收到密码组件生成并返回的rid对应的标识密码私钥krid后,密钥服务系统以<eu,gu1,gu2,gut,pu1,pu2,pupub>为系统参数(公开参数),基于双线性映射eu,验证密码组件返回的标识密码私钥krid是否是与rid对应的标识密码私钥,若是,则确定密码组件有从pu2生成pupub的密钥su。

具体地,验证确定密码组件返回的标识密码私钥krid是否是与rid对应的标识密码私钥,可以采用如下方式之一(并非全部)。

(1)加密验证法、

密钥服务系统随机生成一个数据r,然后以rid作为标识,使用密码组件的系统参数(公开参数)<eu,gu1,gu2,gut,pu1,pu2,pupub>,采用基于双线性映射的加密算法对数据r加密,然后以krid为私钥,采用基于双线性映射的加密算法对加密后的数据进行解密,若能正确解密还原数据r,则确定krid是rid对应的标识密码私钥。

(2)签名验证法、

密钥服务系统随机生成一个数据r,然后以krid为私钥,使用密码组件的系统参数(公开参数)<eu,gu1,gu2,gut,pu1,pu2,pupub>,采用基于双线性映射的签名算法对数据r进行数字签名,然后以rid作为标识,采用基于双线性映射的签名算法对签名的数据进行签名验证,若验证的结果是正确,则确定krid是rid对应的标识密码私钥。

(3)配对验证法、

利用配对运算验证法确定krid是否是rid对应的标识密码私钥的具体实施,与密码组件生成标识密码私钥的方式有关。

若密码组件的双线性映射的群gu1、gu2相同为gu,生成元pu1、pu2相同为pu,生成标识密码私钥的方式是krid=[su]qrid(比如,boneh-franklin的ibe的私钥生成),其中qrid是rid映射到群gu中得到的元,则:

密钥服务系统进行配对运算g1=eu(qrid,pupub),g2=eu(krid,pu);若g1=g2,则确定krid是rid对应的标识密码私钥,否则,不是。

若密码组件生成标识密码私钥的方式是krid=[su(h1+su)-1]pu1,其中h1=h1(rid||hid,n)(参见sm9规范,即中国密码管理机构颁布的《基于双线性对的标识密码算法》),则:

密钥服务系统进行配对运算:

g1=eu(pu1,pupub),

若g1=g2,则确定krid是rid对应的标识密码私钥,否则,不是。

对于其他标识密码私钥的生成方式,可以采用类似的方法,看配对运算的结果是否符合预期的等式关系。

方式三:双线性映射(配对)验证法、

密钥服务系统计算g1=eu(qu1,pu2),g2=eu(qu1,pupub),qu1是群gu1中随机选择的一个元;将g1发送给密码组件;

密码组件计算(g1的su次幂),将g3返回给密钥服务系统;

密钥服务系统比较g1和g3是否相等,若相等,则确定密码组件有从pu2生成pupub的密钥su。

若群gu2和群g1是同一个群,则也可以按如下方式通过双线性映射进行验证:

密钥服务系统计算g1=e(pu2,q2),g2=e(pupub,q2),q2是群g2中随机选择的一个元;将g1发送给密码组件;

密码组件计算(g1的su次幂),将g3返回给密钥服务系统;

密钥服务系统比较g1和g3是否相等,若相等,则确定密码组件有从pu2生成pupub的密钥su。

若群gu2和群g2是同一个群,则也可以按如下方式通过双线性映射进行验证:

密钥服务系统计算g1=e(q1,pu2),g2=e(q1,pupub),q1是群g1中随机选择的一个元;将g1发送给密码组件;

密码组件计算(g1的su次幂),将g3返回给密钥服务系统;

密钥服务系统比较g1和g3是否相等,若相等,则确定密码组件有从pu2生成pupub的密钥su。

方式四:椭圆曲线密码运算验证法、

若密码组件的配对运算的群是椭圆曲线点群,则密钥服务系统以pu2为基点,以pupub为su对应的公钥,利用椭圆曲线密码算法验证确定密码组件是否有与公钥pupub对应的私钥su,若有,则确定密码组件有生成pupub的密钥su。

具体地,密钥服务系统利用椭圆曲线密码算法验证确定密码组件是否有与公钥pupub对应的私钥su的方法可以是如下加密验证法和签名验证法。

(1)加密验证法

密钥服务系统随机产生一个数据t,然后以pupub为公钥,采用椭圆曲线密码算法对随机生成的数据t进行加密,然后将加密的数据提交给密码组件,若密码组件能够解密返回正确的数据t,则确定密码组件有与公钥pupub对应的私钥su。

(2)签名验证法

密钥服务系统随机生成一个数据t,然后要求密码组件使用pupub对应的私钥su采用椭圆曲线密码算法对随机生成的数据t进行数字签名,接收到密码组件返回的、使用私钥su签名的数据后,密钥服务系统以pupub为公钥,验证数字签名的正确性,若数字签名验证的结果正确,则确定密码组件有与公钥pupub对应的私钥su。

(五)关于对包含身份标识信息u、pupub、以及密钥限定信息的数据的数字签名的实施

密钥服务系统对包含身份标识信息u、pupub、以及密钥限定信息的数据的数字签名可以有多种方式,以下是一些可能实施方式(不是全部)。

(1)基于标识私钥生成的数字签名、

密钥服务系统按约定的方式形成包含身份标识信息u、pupub、以及密钥限定信息的数据,然后以此数据作为一个标识,使用主密钥sm、基于自身的系统参数<e,g1,g2,gt,p1,p2,ppub>生成此标识对应的标识密码私钥,之后以此生成的标识密码私钥作为针对包含身份标识信息u、pupub、以及密钥限定信息的数据的数字签名。

而验证方以<e,g1,g2,gt,p1,p2,ppub>为系统参数,通过验证确定cu中的数字签名是否是将包含身份标识信息u、pupub、以及密钥限定信息的数据作为一个标识时,此标识所对应的标识密码私钥,从而验证确定数字签名的有效性(是,则有效,不是,则无效)。

验证确定数字签名是否是将包含用户标识和识别信息u、pupub、以及密钥限定信息的数据作为一个标识时,此标识所对应的标识密码私钥的方式,与前面密钥服务系统利用随机生成的字串rid作为标识,请求密码组件生成对应的标识密码私钥krid,然后利用密码组件的系统参数验证确定krid是否是rid所对应的标识密码私钥的方式类似,只是标识不同、系统参数不同而已。

(2)基于散列值群元计算的数字签名方法、

密钥服务系统将按约定的方式形成的包含身份标识信息u、pupub、以及密钥限定信息的数据作为待签名的数据,计算得到待签名的数据的一个散列值(哈希,杂凑)h,然后计算qs=[f(sm,h)]p1,其中f(sm,h)是关于sm的双线性映射(或配对)隐含可验证分式(sm的多项式构成的分式),则qs是针对待签名的数据的数字签名;

所述f(sm,h)是关于sm的双线性映射(或配对)可验证分式指,若qs=[f(sm,h)]p1,那么,qs与系统参数的双线性运算结果满足基于qs=[f(sm,h)]p1导出的不包含sm的等式关系,否则,不满足(或者满足的概率几乎为零);

而对于此种数字签名的验证,签名验证方采用与签名时同样的方式,计算得到签名前的原数据的散列值(哈希,杂凑)h,然后验证qs与系统参数的双线性运算结果是否满足基于qs=[f(sm,h)]p1导出的不包含sm的等式关系,若是,则确定qs是被签名的原数据的有效数字签名,否则,不是。

如果将待签名的数据作为标识,然后按sm9的私钥生成方式生成标识密码私钥,并以标识密码私钥作为数据的数字签名,则这种数字签名方式就是基于散列值群元计算的数字签名方法的特例。

(3)基于群元映射的数字签名方法

密钥服务系统将按约定的方式形成的包含身份标识信息u、pupub、以及密钥限定信息的数据作为待签名的数据,将待签名的数据映射为群g1中一个元q1,然后计算qs=[f(sm)]q1,其中f(sm)是关于sm的双线性映射(或配对)隐含可验证分式,则qs是针对待签名数据的数字签名,以此数字签名形成签名的数据;

所述f(sm)是关于sm的双线性映射(或配对)可验证分式指,若qs=[f(sm)]q1,那么,则qs与系统参数的双线性运算结果满足基于qs=[f(sm)]q1导出的不包含sm的等式关系,否则,不满足(或者满足的概率几乎为零);

签名验证方采用与签名时同样的方式,计算得到签名前的原数据的散列值(哈希,杂凑)h,然后验证qs与系统参数的双线性运算结果是否满足由qs=[f(sm)]q导出的不包含sm的等式关系,若是,则确定qs是被签名的原数据的有效数字签名,否则,不是。

如果将待签名的数据作为标识,然后按boneh-franklin的私钥生成方式生成标识密码私钥,并以标识密码私钥作为数据的数字签名,则这种数字签名方式就是基于散列值群元计算的数字签名方法的特例。

(4)基于生成元标识映射的数字签名方法(专用数字签名方法)、

前面对包含身份标识信息u、pupub、以及密钥限定信息的数据进行数字签名的方法同样适用于普通数据(内容没有限定的数据),而这里的基于生成元标识映射的数字签名方法是一种专门针对本发明pupub认证的数字签名方法,当所述密码组件的双线性映射群gu2与密钥服务系统的双线性映射群g1(第一个群)相同时,此数字签名方法可用,具体如下。

密码组件将包含身份标识信息u及密钥限定信息的数据映射到群g1(即群gu2)中得到群元pu2,且得到的pu2是gu2的生成元(gu2中的任一个非零元都是gu2的生成元);密码组件计算pupub=[su]pu2,将pupub提交给密钥服务系统;将包含身份标识信息u及密钥限定信息映射到群g1(即群gu2)中得到群元pu2的方式,具有防止pupub=[x]pu2被伪造的特性,其中x是[1,n-1]中的整数,n是群g1的阶(即gu2的阶);所述将包含身份标识信息u及密钥限定信息映射到群g1(即群gu2)中得到群元pu2的方式,具有防止pupub=[x]pu2被伪造的特性是指,若d1、d2是分别用包含不同身份标识信息和/或密钥限定信息的数据映射到群g1中得到的元,则在未知su的情况下,无法利用pupub1=[su]d1计算得到pupub2=[su]d2;

密钥服务系统采用与密码组件同样的方式,将包含身份标识信息u及密钥限定信息的数据映射到群g1(即群gu2)中得到群元pu2(pu2是gu2的生成元),计算pupubsm=[asm]pu2+[bsm]pupub,其中a、b是[1,n-1]中任选的整数(随机选择或固定选择的整数,且a=1,b=1是允许的),然后以(pupubsm,a,b)作为针对包含身份标识信息u、主公钥pupub、以及密钥限定信息的数据的数字签名;

签名验证方按如下方式对前述数字签名的有效性进行验证:

从cu中获取身份标识信息u、pupub、以及及密钥限定信息,采用同样的方式将包含身份标识信息u及密钥限定信息的数据映射到群g1(即群gu2)中得到群元pu2,计算g1=e(pupubsm,p2),g2=(e(pu2,ppub))a(e(pupub,ppub))b;若g1=g2,则数字签名的有效性验证通过,否则,不通过。

(5)基于椭圆曲线密码的数字签名、

若密钥服务系统的双线性映射的群是椭圆曲线点群,则可以实施此方式(通常配对运算的群是椭圆曲线点群)。

密钥服务系统以p2为基点,以sm为私钥,以ppub为sm对应的公钥,采用椭圆曲线密码算法对包含用户标识和识别信息u、pupub、以及密钥限定信息的数据进行数字签名,生成签名的数据cu;

签名验证方以p2为基点,以ppub为公钥,验证确定cu的数字签名的有效性。

(六)关于cu格式的实施。

cu的具体数据格式,可以自定义,可采用简单的、可扩展的字串格式,当然也可以采用类似于x509数字证书的格式,甚至可以是x509数字证书的扩展格式,以便与pki数字证书应用兼容(但是,x509数字证书格式太复杂)。

(七)关于密码组件针对(普通)数据的数字签名的具体实施。

当需要对(普通)数据进行数字签名时,密码组件可用采用密钥服务系统使用主密钥sm针对包含身份标识信息u、pupub、以及密钥限定信息的数据进行数字签名一样的方法,当然基于生成元标识映射的专用数字签名方法除外,使用主密钥su对数据进行数字签名,差别仅仅在于一个主密钥不同,双线性映射的群可能不同,双线性映射可能不同;签名验证方采用对应签名验证方式对数字签名进行签名验证。

另外,密码组件还可以采用如下数字签名方法:

当需要针对一个数据进行数字签名时,密码组件任选一个字串s作为标识,以密钥su作为主密钥(或主私钥),基于自身的配对运算群gu1、gu2生成s对应的标识密码私钥sks;

密码组件以sks为私钥,以<eu,gu1,gu2,gut,pu1,pu2,pupub>为系统参数,采用基于双线性映射的签名算法,对数据进行数字签名,形成签名的数据,而最后形成的签名的数据中包含s、cu;

当对数据的数字签名进行签名验证时,签名验证方先从签名的数据中获得s、cu,验证cu的数字签名的有效性(根据cu签名的方式不同,验证的方式也不同);cu签名有效性验证通过后,签名验证方利用系统参数<eu,gu1,gu2,gut,pu1,pu2,pupub>,以s为标识,采用基于双线性映射的签名算法,验证数据的数字签名的有效性。

若生成cu时所采用的数字签名方法是前面所述的针对pupub认证的专用数字签名方法,则签名验证方在进行签名验证时,先从cu中获得身份标识信息u和密钥限定信息,然后将包含身份标识信息和密钥信息的数据映射到群g1(此时群gu2与群g1相同)中得到群元pu2,然后以pu2为gu2的生成元,在此基础上对签名的数据中的数字签名的有效性进行验证。

若密钥服务系统验证确定密码组件是否有从pu2生成pupub的密钥su采用的是私钥生成验证法,则要确保s不是密钥服务系统使用的包含随机信息的字串rid,这可以通过规定s和rid具有不同的格式做到。

(八)关于标识密码私钥生成的实施

对于不同的基于双线性映射(配对运算)的标识密码算法(包括数据加密、数字签名算法),生成一个标识对应的私钥的方式不一定相同,比如boneh-franklin的ibe加密算法生成标识私钥的方式与sm9(中国密码管理机构颁布的《基于双线性对的标识密码算法》)标识密码算法的私钥生成方式不同,本发明实施时要根据选取的标识密码算法,选取相应的标识密码私钥的生成方式。

若本发明实施需要生成一个标识对应的标识密码私钥,则密钥服务系统和密码组件的私钥生成方式,可以相同,也可以不同。

(九)关于密钥服务系统、密码组件的实施及功能。

密钥服务系统可以采用任何成熟的信息系统技术结合密码技术实施。

在具体应用中,如果仅仅涉及数字签名应用,那么,密钥服务系统的功能主要限于对包含身份标识信息u、pupub、以及密钥限定信息的数据进行数字签名,生成cu(即pupub的认证数据);但是,如果除数字签名外,还涉及数据加密应用,则密钥服务系统通常还用于生成标识对应的标识密码私钥(数据加密解密的私钥不由用户的密码组件产生)。

对于密码组件,可以采用纯软件实施,也可以采用纯硬件实施,也可以采用软硬件相结合的方案。密码组件的功能除了实施数字签名外,还可以同时实施基于双线性映射的数据加密,其他密码运算(如散列运算、对称密钥密码运算)以及密钥管理功能。

(十)多级密码系统的实施

在本发明的技术方案的基础上,还可以实施一个多级(分级)的密码系统,具体如下。

所述多级密码系统包括密码组件及多个密钥服务系统,其中:

密码组件有双线映射eu:gu1×gu2→gut,其中群gu1的生成元为pu1,群gu2的生成元为pu2;密码组件有主密钥su(或称主私钥su);su有对应的主公钥pupub=[su]pu2;<eu,gu1,gu2,gut,pu1,pu2,pupub>是系统参数(公开参数);

密码组件的用户有身份标识信息u;

每个密钥服务系统都有双线性映射、用于双线性映射(配对)运算的群、主密钥(主私钥)、以及主公钥;

多个密钥服务系统依据其相互关系分为上级密钥服务系统、下级密钥服务系统,其中,最下级的密钥服务系统利用其主密钥,针对密码组件,对包含身份标识信息u、主公钥pupub、以及密钥限定信息的数据进行数字签名,生成签名的数据cu作为pupub的认证数据,并由密码组件保存;一个上级密钥服务系统利用其主密钥对包含下级密钥服务系统的标识信息、下级密钥服务系统的主公钥以及密钥限定信息的数据进行数字签名,生成签名的数据,所生成的签名的数据是下密钥服务系统主公钥的认证数据;最上级的密钥服务系统利用其主密钥对包含自身的身份标识信息、主公钥以及密钥限定信息的数据进行数字签名,生成自签名的数据,所生成的自签名的数据是最上级密钥服务系统主公钥的自认证数据;

从密码组件的主公钥的认证数据cu,到生成签名的数据cu的最下级密钥服务系统的主公钥的认证数据,到最上级密钥服务系统的主公钥的自认证数据,通过数字签名构成了一个主公钥认证数据的信任链(类似于pki数字证书的信任链,最上级密钥服务系统的主公钥的自认证数据类似于pki中的自签名根证书);

当需要对一个数据进行数字签名时,密码组件采用前述数字签名方法针对数据进行数字签名,形成签名的数据;最后形成的签名的数据中包含pupub的认证数据cu;

当对签名的数据的数字签名进行签名验证时,签名验证方从签名的数据中获得cu,构建从cu开始的主公钥认证数据的信任链,通过数字签名验证确定从cu开始的主公钥认证数据的信任链的有效性、可信性(类似于pki中对最终实体证书及证书信任链的有效性、可信性的验证);

从cu开始的主公钥认证数据的信任链的有效性、可信性验证通过后,签名验证方对签名的数据中的数字签名的有效性进行验证;

若密码系统中的密钥服务系统仅一个,则从cu开始的主公钥认证数据的信任链仅包含密码组件主公钥的认证数据cu以及密钥服务系统的主公钥的自认证数据。

针对密码组件的主公钥pupub进行认证的专用数字签名方法同样适用于上级密钥服务系统对下级密钥服务系统主密钥的认证,以及适用于最上级的密钥服务系统对自身主公钥的认证(自认证),其差别在于,此时被认证的主密钥是密钥服务系统的主密钥,此时身份标识信息是主公钥被认证的密钥服务系统的身份标识信息,密钥限定信息是针对被认证的密钥服务系统的主公钥及其对应主密钥的限定信息。

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

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