一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于国密SM9算法的可审计隐私保护认证方法与流程

2021-11-05 19:19:00 来源:中国专利 TAG:

一种基于国密sm9算法的可审计隐私保护认证方法
技术领域
1.本发明属于数据安全技术领域,具体涉及一种基于国密sm9算法的可审计隐私保护认证方法。


背景技术:

2.基于属性的签名(attribute

based signature,abs)方案是基于属性的加密方案(attribute

based encryption,abe)的扩展。在abs方案中,签名者对消息签名时,使用某一签名策略对消息签名,验证者则可以验证该签名是否满足签名者声明的签名策略。此外,为保护签名者隐私,验证者只能确定签名者的属性满足相应的签名策略,而不能确定是签名者的哪些属性满足该签名策略。abs在传统数字签名不可伪造性的基础上还具有匿名性,可以隐藏签名者的身份。但是,正是由于具有匿名认证的性质,传统abs方案中,签名者可以利用这一性质滥用签名。可审计的abs方案则可以防止签名者滥用签名,即给定一个合法签名,kgc可以确定签名者的身份。在不需要完全匿名性的应用场景,可审计的abs方案非常具有吸引力。
3.国家密码管理局正式发布sm9标准,该标准是一种基于双线性对的基于身份的(identity

based cryptography,ibc)密码方案。目前,sm9方案已得到广泛应用,研究者们也基于sm9方案构造了多种类型的密码方案,例如区块链隐私保护、多方签名、门限解密、广播加密、标识签密、范围证明等。但是传统的密码方案只能对待加密的信息进行加密处理,但是不能确定进行加密的用户是否合法,也不能追溯加密用户,并对该用户进行删除,从而造成了签名的滥用性以及其权威性较低。


技术实现要素:

4.为解决以上现有技术存在的问题,本发明提出了一种基于国密sm9算法的可审计隐私保护认证方法,该方法包括:
5.s1:系统初始化,kgc定义系统相关公共参数;
6.s2:获取各个用户参数,所述用户参数包括用户标识、用户属性集以及签名策略;将所有的用户参数分别上传到kgc中,生成各个自用户秘钥;
7.s3:用户获取待认证信息,采用签名算法对用户秘钥和待认证信息进行处理,得到待认证信息的签名;
8.s4:对待认证信息、签名以及签名策略进行验签处理,判断该签名是否合法;若签名合法,则对待认证消息进行认证;若签名不合法,则kgc通过签名对签名的用户进行身份追踪,防止滥用签名。
9.优选的,kgc定义系统相关公共参数的过程包括:定义两个阶为大素数n的加法循环群g1、g2,两个加法循环群的的生成元分别为p1、p2;根据加法循环群g1和g2定义g2→
g1的算法ψ;定义阶为大素数n的乘法循环群g
t
,从g1×
g2到g
t
的双线性对为e;定义两个密码杂凑函数h1、h2;随机选取作为主私钥;计算加法循环群g2的元素mpk,将该元素作为
主公钥;公开除主私钥msk的所有参数,其中,msk表示主私钥,表示与n互素且小于n的正整数,n表示循环群g1、g2和g
t
的阶,r表示随机空间,mpk表示主公钥。
10.优选的,生成用户秘钥的过程包括:
11.s21:用户将用户标识id、用户属性集s

以及签名策略τ发送到kgc;
12.s22:kgc根据用户标识id与密码杂凑函数h1计算出用户标识的哈希值h
id

13.s23:kgc根据签名策略τ生成签名树t;
14.s24:kgc根据密码杂凑函数h1、双线性对e、用户属性集s

、签名策略树t计算用户密钥sk
id
(sk
id1
,sk
id2
),并将计算的用户秘钥返回给用户。
15.进一步的,根据签名策略τ生成签名树t的过程包括:
16.s231:定义其中其中上的一个d

1多项式p(
·
)可通过拉格朗日插值法得到p(x)=∑
i∈s
p(i)δ
i,s
(x),d=|s|;采用拉格朗日差值公式计算属性树t的相关中间值;其中,δ
i,s
(x)表示拉格朗日差值公式,j表示用户属性的编号数,i表示用户属性的编号数,s表示系统内所有用户属性,表示表示与n互素且小于n的正整数,n表示大素数,d表示用户属性的编号数,p(x)表示多项式p(
·
)中的参数为x时的值,p(i)表示多项式p(
·
)的参数为i时的值;
17.s232:定义属性树t,即每一个节点代表一个门限,节点x的子节点数量num
x
,节点x的门限值为k
x
;当门限值k
x
=1时,该门为“或”门;当k
x
=num
x
时,该门为“与”门,其中每个叶子节点代表一个属性,用attr(x)表示,叶子节点对应的门限值k
x
=1;对每个节点的子节点进行编号,并采用函数index(x)返回节点x的编号,采用函数parent(x)返回节点x的父节点;
18.s233:根据签名策略τ生成签名树t:即对t的每个节点x生成一个k
x

1次的多项式p
x
(
·
);随机选择定义根节点p
root
(0)=t,对每一个子节点x

定义p
x

(0)=p
parent(x

)
(index(x

)),根据根节点和子节点生成签名树。
19.进一步的,计算用户秘钥的过程包括:根据主私钥msk、用户标识的哈希值h
id
以及加法循环群g1的生成元p1计算用户的sk
id0
;对于签名树t的每一个叶子节点i=attr(x),令t
i
=p
i
(0),根据签名树的叶子节点计算用户秘钥对sk
id
(sk
id1
,sk
id2
);将用户密钥对sk
id
(sk
id1
,sk
id2
)返回给用户。
20.优选的,采用签名算法对用户秘钥和待认证信息进行处理的过程包括:
21.s31:输入用户密钥对sk
id
与消息m,根据用户密钥对对输入的消息执行签名;
22.s32:根据加法循环群的生成元p1、加法循环群g2的元素mpk以及从g1×
g2到g
t
的双线性对e计算出群g
t
元素g;
23.s33:选取随机数根据随机数r和元素g计算群g
t
元素w;
24.s34:将元素w和消息m输入到密码杂凑函数h2中,计算哈希值h;
25.s35:根据随机数r、哈希值h以及用户密钥sk
id1
计算出群g1元素集合
26.s36:定义群g2元素k的秘钥为sk
id2

27.s37:根据g1元素集合和群g2元素k的秘钥sk
id2
对消息m进行签名,签名为
28.优选的,判断签名是否和法的过程为:
29.步骤1:输入签名sig(h,s,k)、消息m和签名策略τ;
30.步骤2:利用双线性对e、群g1生成元p1、主公钥mpk和签名h计算出群g
t
元素g
h

31.步骤3:利用双线性对e、签名s集合部分、签名k部分、群g
t
元素g
h
和签名策略τ计算出群g
t
元素w


32.步骤4:采用密码杂凑函数h2计算群g
t
元素w

和消息m的哈希值h


33.步骤5:判断签名h与哈希值h

是否相等,若相等,则签名合法;否则签名不合法。
34.优选的,计算出群g
t
元素w

的过程包括:
35.步骤31:从叶子节点自下而上计算属性树t的根值s
root

36.步骤32:若叶子节点x的k
parent(x)
=1,则sk
idparent(x)
=sk
idx
,否则sk
idparent(x)
=∑
i∈x
sk
idi
,其中x代表父节点的所有孩子节点,最后得到s
root

37.步骤33:利用双线性对e、s
root
、签名k部分以及群g
t
元素g
h
计算出群g
t
元素w


38.优选的,对待认证消息进行认证的过程包括:
39.步骤1:提交sig(h,{s1,s2,

,s
|τ|
},k,τ)中的k值,执行审计;
40.步骤2:由于t为kgc在密钥生成部分生成的随机数,msk为主私钥,由kgc保存,故kgc能从k中求得h
id

41.步骤3:根据h
id
对用户进行身份追踪。
42.本发明通过基于国密sm9算法构造了可审计隐私保护认证方法,该方法的核心为属性签名方案,该方案同时具有树形访问结构、可追踪身份的功能。安全性方面,形式化安全性分析可表明本文所提方案在随机谕言机模型下是给定策略选择消息攻击(sp

cma)安全的,同时也是抗合谋攻击的。效率方面,本发明采用的签名开销与验签开销能够更加快速高效的处理数据,在完成一次本发明的验签仅需要各做一次指数运算以及双线性对运算。
附图说明
43.图1为本发明的一种基于国密sm9算法的可审计隐私保护认证方法的功能模块图;
44.图2为本发明的系统建立部分流程框图;
45.图3为本发明的签名策略树示意图;
46.图4为本发明的用户密钥生成部分流程框图;
47.图5为本发明的签名部分流程框图;
48.图6为本发明的验签部分流程框图;
49.图7为本发明的审计部分流程框图。
具体实施方式
50.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.一种基于国密sm9算法的可审计隐私保护认证方法,如图1所示,包括以下四个部分:
52.s1、系统建立:kgc定义系统相关公共参数。
53.s2、用户密钥生成:用户将用户标识、用户属性集、签名策略上传kgc,生成用户密钥。
54.s3、签名:签名用户输入用户密钥与消息,运行签名算法,得到对该消息的一个签名。
55.s4、验签:验签用户输入消息、签名、签名策略,运行验签算法,可判断该签名是否合法。对于验签用户来说,仅知晓签名用户的用户属性满足签名策略,无法得到签名用户具体拥有那些属性。
56.s5、审计:kgc可通过签名对签名者身份进行追踪,防止滥用签名。
57.一种基于国密sm9算法的可审计隐私保护认证方法的具体实施方式,该方法包括:
58.s1:系统初始化,kgc定义系统相关公共参数;
59.s2:获取各个用户参数,所述用户参数包括用户标识、用户属性集以及签名策略;将所有的用户参数分别上传到kgc中,生成各个自用户秘钥;
60.s3:用户获取待认证信息,采用签名算法对用户秘钥和待认证信息进行处理,得到待认证信息的签名;
61.s4:对待认证信息、签名以及签名策略进行验签处理,判断该签名是否合法;若签名合法,则对待认证消息进行认证;若签名不合法,则kgc通过签名对签名的用户进行身份追踪,防止滥用签名。
62.如图2所示,kgc定义系统相关公共参数的过程包括:
63.s11:定义两个阶为大素数n的加法循环群g1、g2,其中加法循环群g1的生成元为p1,加法循环群g2的生成元为p2。
64.s12:定义一个从g2→
g1的算法ψ,形如:ψ(p2)

p1。
65.s13:定义一个阶为大素数n的乘法循环群g
t
,e是从g1×
g2到g
t
的双线性对。
66.s14:定义两个密码杂凑函数h1、h2,形如
67.s15:随机选择作为主私钥,msk需要进行保密,其中msk为从的数据集中的随机值。计算g2中的元素mpk=[msk]p2作为主公钥。公开除主私钥msk外所有参数。
[0068]
如图4所示,生成用户秘钥的过程包括:
[0069]
s21:用户将用户标识id、用户属性集s

以及签名策略τ发送到kgc;
[0070]
s22:kgc根据用户标识id与密码杂凑函数h1计算出用户标识的哈希值h
id
;其中h
id
的表达式为:
[0071]
h
id
=h1(id||hid,n)
[0072]
其中,h1表示密码杂凑函数,id表示用户标识,hid表示用一个字节标识的私钥生
成函数识别符,由kgc选择并公开,n表示大素数。
[0073]
s23:kgc根据签名策略τ生成签名树t;
[0074]
s231:定义其中则上的一个d

1多项式p(
·
)可通过拉格朗日插值法得到p(x)=∑
i∈s
p(i)δ
i,s
(x);采用拉格朗日差值公式计算属性树t的相关中间值;其中,δ
i,s
(x)表示拉格朗日差值公式,j表示用户属性的编号数,i表示用户属性的编号数,s表示系统内所有用户属性,表示表示与n互素且小于n的正整数,n表示大素数,d表示用户属性的编号数,p(x)表示多项式p(
·
)的参数为x时的值,p(i)表示多项式p(
·
)的参数为i时的值;
[0075]
s232:定义属性树t,参见图3:每一个节点代表一个门限,num
x
是节点x的子节点数量,k
x
代表节点x的门限值。当k
x
=1,该门是一个“或”门;当k
x
=num
x
时,该门是一个“与”门,叶子节点代表一个属性,用attr(x)表示,对应的门限值k
x
=1。每个节点的子节点进行编号,并且t中的所有节点编号需不一致,函数index(x)返回节点x的编号,parent(x)返回节点x的父节点。
[0076]
s233:根据签名策略τ生成签名树t:对t的每个节点x生成一个k
x

1次的多项式p
x
(
·
)。随机选择首先定义根节点p
root
(0)=t,然后对每一个子节点x

定义p
x

(0)=p
parent(x

)
(index(x

))。
[0077]
s24:kgc根据密码杂凑函数h1、双线性对e、用户属性集s

、签名策略树t计算用户密钥sk
id
(sk
id1
,sk
id2
),并将计算的用户秘钥返回给用户。
[0078]
s241:计算对于t的每一个叶子节点i=attr(x),令t
i
=p
i
(0),计算sk
id1
:{sk
id1i
=t
i
·
sk
id0
},
[0079]
其中,sk
id0
表示用户密钥中间值,msk表示主私钥,h
id
表示用户id的哈希值,p1表示群g1的生成元,p2表示群g2的生成元。
[0080]
s242:将用户密钥sk
id
(sk
id1
,sk
id2
)返回给用户。
[0081]
如图5所示,采用签名算法对用户秘钥和待认证信息进行处理的过程包括:
[0082]
s31:输入用户密钥对sk
id
与消息m,根据用户密钥对对输入的消息执行签名;
[0083]
s32:根据加法循环群的生成元p1、加法循环群g2的元素mpk以及从g1×
g2到g
t
的双线性对e计算出群g
t
元素g;计算元素g的公式为:
[0084]
g=e(p1,mpk)
[0085]
其中,e表示双线性对,p1表示群g1生成元,mpk表示主公钥。
[0086]
s33:选取随机数根据随机数r和元素g计算群g
t
元素w=g
r

[0087]
s34:将元素w和消息m输入到密码杂凑函数h2中,计算哈希值h=h2(m||w,n);
[0088]
s35:根据随机数r、哈希值h以及用户密钥sk
id1
计算出群g1元素集合
[0089]
s36:定义群g2元素k的秘钥为sk
id2
,即k=sk
id2

[0090]
s37:根据g1元素集合和群g2元素k的秘钥sk
id2
对消息m进行签名,签名为
[0091]
如图6所示,判断签名是否和法的过程为:
[0092]
步骤1:输入签名sig(h,{s1,s2,

,s
|τ|
},k,τ)、消息m和签名策略τ;
[0093]
步骤2:利用双线性对e、群g1生成元p1、主公钥mpk和签名h计算出群g
t
元素g
h
;元素g
h
的公式为:
[0094]
g
h
=e(p1,mpk)
h
[0095]
步骤3:利用双线性对e、签名s集合部分、签名k部分、群g
t
元素g
h
和签名策略τ计算出群g
t
元素w


[0096]
步骤31:如图3,所示从叶子节点自下而上计算属性树t的根值s
root

[0097]
步骤32:若叶子节点x的k
parent(x)
=1,即父节点是一个“或”门,那么sk
idparent(x)
=sk
idx
,否则sk
idparent(x)
=∑
i∈x
sk
idi
,其中x代表父节点的所有孩子节点,最后计算得到
[0098]
步骤33:利用双线性对e、s
root
、签名k部分以及群g
t
元素g
h
计算出群g
t
元素w

=e(s
root
,k)
·
g
h

[0099]
步骤4:采用密码杂凑函数h2计算群g
t
元素w

和消息m的哈希值h

;哈希值h

的公式为:
[0100]
h

=h2(m||w

,n)
[0101]
步骤5:判断签名h与哈希值h

是否相等,若相等,则签名合法;否则签名不合法。
[0102]
如图7所示,对待认证消息进行认证的过程包括:
[0103]
步骤1:提交sig(h,{s1,s2,

,s
|τ|
},k,τ)中的k值,执行审计;
[0104]
步骤2:由于t为kgc在密钥生成部分生成的随机数,msk为主私钥,由kgc保存,故kgc能从k中求得h
id

[0105]
步骤3:根据h
id
对用户进行身份追踪。
[0106]
以上所举实施例,对本发明的目的、技术方案和优点进行了进一步的详细说明,所应理解的是,以上所举实施例仅为本发明的优选实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内对本发明所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献