一种基于SM9的属性加密方法与系统技术方案

技术编号:24040703 阅读:54 留言:0更新日期:2020-05-07 03:18
本发明专利技术公开了信息安全技术领域,具体涉及一种基于SM9的属性加密方法与系统,旨在解决现有技术中基于身份标识的加密算法存在用户信息管理开销大、维护困难、用户隐私易泄露的技术问题。密钥生成中心生成系统主私钥和系统主公钥;密钥生成中心KGC基于用户B的请求,结合用户B的属性集、用户B所在组的身份标识,生成用户私钥;用户A结合系统主公钥、用户B所在组的身份标识对消息进行加密;用户B通过用户私钥对密文解密得到解密结果。本发明专利技术基于属性加密机制将用户的私钥和密文用一组属性集关联起来,只有密钥属性与密文属性相匹配才能对密文执行解密操作,不会因为系统中成员的数量而影响加密开销,具有更灵活的访问控制结构。

An attribute encryption method and system based on SM9

【技术实现步骤摘要】
一种基于SM9的属性加密方法与系统
本专利技术属于信息安全
,具体涉及一种基于SM9的属性加密方法与系统。
技术介绍
加密算法作为保护数据隐私的重要工具之一,得到了工业界和学术界的广泛关注。当前加密算法根据其所基于的密钥体制可分为:对称加密算法和公钥加密算法。其中,公钥加密算法因有效解决密钥分发与管理问题而被用于多用户场景应用中,如物联网、云计算等。SM9椭圆曲线公钥密码算法是由国家密码管理局发布的标识密码算法(参见“GM/T0044-2016SM9标识密码算法”标准,国家密码管理局,2016年3月),算法包括数据加密、数字签名、密钥交换等算法和协议。其中,SM9公钥加密算法作为基于身份标识的加密算法,在避免传统公钥加密中证书管理流程的同时,兼具高效性、高安全性等特点,可被广泛用于邮件传输、数据传输等领域。SM9公钥加密算法包括系统初始化算法(SM9_Setup)、用户密钥生成算法(SM9_KeyGen)、密钥封装算法(SM9_KeyEnc)、密钥解封算法(SM9_KeyDec)、加密算法(SM9_Enc)和解密算法(SM9_Dec)。然而,基于身份标识的加密算法在云计算、大数据等多用户环境下存在用户信息维护成本高、用户信息易泄露、系统访问策略不灵活等缺陷。
技术实现思路
本专利技术的目的在于提供一种基于SM9的属性加密方法与系统,以解决现有技术中基于身份标识的加密算法存在用户信息管理开销大、维护困难、用户隐私易泄露的技术问题。为达到上述目的,本专利技术所采用的技术方案是:一种基于SM9的属性加密方法,包括:a、获取基于SM9的属性加密方法所需的系统参数;b、由密钥生成中心KGC生成系统主私钥MSK,并结合系统参数生成系统主公钥MPK;c、密钥生成中心KGC基于用户B的请求,结合系统主私钥MSK、用户B的属性集AtB、用户B所在组的身份标识GID和系统参数,生成用户私钥USK并发送给用户B;d、用户A结合系统主公钥MPK、用户B所在组的身份标识GID和系统参数对消息M进行加密并将产生的密文CT发送给用户B;e、用户B通过用户私钥USK结合系统参数对密文CT解密得到解密结果M′。所述系统参数包括:椭圆曲线参数、辅助函数和双线性对参数。所述步骤b包括:b1.密钥生成中心KGC随机产生s,t∈{1,2,...,n-1},并令MSK=s||t作为系统主私钥,其中,s为系统主私钥的组成部分之一,t为系统主私钥组成部分之二,n表示群G1、G2、GT的阶,G1表示加法循环群之一,G2表示加法循环群之二,GT表示乘法循环群,群G1,G2和群GT有相同的阶;b2.密钥生成中心KGC根据所选主私钥的组成部分s,t,通过以下公式计算并公布系统主公钥MPK:MPK={s·P1,t·P1}(1)其中,令PK1=s·P1表示系统主公钥组成部分之一,令PK2=t·P1表示系统主公钥组成部分之二,P1表示群G1的生成元。所述步骤c包括:c1.用户B将自己所在群组的身份标识GID发送给密钥生成中心KGC,请求用户私钥;c2.密钥生成中心KGC收到用户B的请求后,确认GID是否合法并验证用户B是否在GID对应的群组中;如果验证通过,密钥生成中心KGC为用户B选择随机数r2∈{1,2,3,...,n-1},并结合生成的系统主私钥MSK=s||t、用户B的属性集AtB、用户B所在组的身份标识GID和计算公式(2)作为用户B私钥的一部分:其中,sk1表示用户B私钥的组成部分之一,h1表示由安全的密码杂凑函数派生的密码函数,P2表示群G2的生成元;c3.对于属性集AtB中的每个属性j,KGC选择随机数mj∈{1,2,3,...,n-1}并计算公式(3)、(4)作为用户B私钥的属性私钥:其中,t-1表示t在模n下的逆,表示用户B私钥的属性私钥之一,表示用户B私钥的属性私钥之二,H1()表示安全的密码杂凑函数;c4.密钥生成中心KGC生成用户B私钥并通过安全信道发送给用户B;c5.用户B接收并秘密保存密钥生成中心KGC发送的用户私钥USK。所述步骤d包括:d1.用户A查询用户B所在群组的身份标识GID,如果对应GID存在,则计算公式(5)作为加密中间值:QB=h1(GID,n)·P1+PK1(5)其中,QB表示加密中间值;d2.用户A随机选择r1∈{1,2,3,...,n-1},计算公式(6)、(7)、(8):C1=r1·QB(6)g=e(PK1,P2)(7)其中,C1表示密文的组成部分之一,g表示加密中间结果,e表示从G1×G2到GT的双线性对,ω表示密文的组成部分之四;d3.将用户A选择的随机数r1作为根节点的秘密,构建访问控制树T;访问控制树T中的所有非叶节点x都有一个随机多项式qx,多项式的次数dx与该点门限kx满足公式(9):dx=kx-1(9)从根节点开始,令qr(0)=r1,其中,qr(0)表示根节点r所对应的多项式在变量取0时的值,然后随机选取其他节点x,对应多项式变量取0时应满足公式(10):qx(0)=qparent(x)(index(x))(10)其中,qx(0)表示非叶子节点x所对应的多项式在变量取0时的值;qparent(x)(index(x))表示节点parent(x)所对应的多项式在变量取index(x)时的值,parent(x)表示节点x的父节点,index(x)表示节点x所对应的索引值,x表示访问控制树T中的非叶子节点,T表示访问控制树;d4.利用公式(11)和(12)计算对属性加密的密文部分Cy和Cy=qy(0)·PK2(11)其中,Cy表示密文的组成部分之五,表示密文的组成部分之六,qy(0)表示叶子节点y所对应的的多项式在变量取0时的值,qy(0)·PK2表示两者在椭圆曲线上进行标量乘,PK2表示系统主公钥的组成部分之二;att(y)表示叶子节点y对应的属性值,y表示访问控制树T上的叶子节点;d5.用户A计算:K=KDF(C1||ω||GID,mlen+K2_len)(13)其中,K表示派生密钥,KDF()表示密钥派生函数,用于生成消息加密密钥和消息认证密钥,GID表示用户B所在群组的身份标识,mlen表示待加密消息M的比特长,M表示待加密消息,K2_len表示比特串K2的比特长,K2表示用于生成消息认证码的密钥;令K1为派生密钥K的前mlen比特,K1表示加密密钥,K2为后面K2_len比特,如果K1为全0比特,跳至步骤d2,否则进入步骤d6;d6.用户A通过等式(14)、(15)计算加密中间值C2和消息认证码C3,输出密文C3=H1(K2||C2)(15)其中,C2表示密文的组成部分之二、C3表示密文的组成部分之三,表示长度相等的两个比特串按比特的模2加异或运算,其中,Y表示访本文档来自技高网...

【技术保护点】
1.一种基于SM9的属性加密方法,其特征是,包括:/na、获取基于SM9的属性加密方法所需的系统参数;/nb、由密钥生成中心KGC生成系统主私钥MSK,并结合系统参数生成系统主公钥MPK;/nc、密钥生成中心KGC基于用户B的请求,结合系统主私钥MSK、用户B的属性集At

【技术特征摘要】
1.一种基于SM9的属性加密方法,其特征是,包括:
a、获取基于SM9的属性加密方法所需的系统参数;
b、由密钥生成中心KGC生成系统主私钥MSK,并结合系统参数生成系统主公钥MPK;
c、密钥生成中心KGC基于用户B的请求,结合系统主私钥MSK、用户B的属性集AtB、用户B所在组的身份标识GID和系统参数,生成用户私钥USK并发送给用户B;
d、用户A结合系统主公钥MPK、用户B所在组的身份标识GID和系统参数对消息M进行加密并将产生的密文CT发送给用户B;
e、用户B通过用户私钥USK结合系统参数对密文CT解密得到解密结果M′。


2.根据权利要求1所述的基于SM9的属性加密方法,其特征是,所述系统参数包括:椭圆曲线参数、辅助函数和双线性对参数。


3.根据权利要求1所述的基于SM9的属性加密方法,其特征是,所述步骤b包括:
b1.密钥生成中心KGC随机产生s,t∈{1,2,...,n-1},并令MSK=s||t作为系统主私钥,其中,s为系统主私钥的组成部分之一,t为系统主私钥组成部分之二。n表示群G1、G2、GT的阶,G1表示加法循环群之一,G2表示加法循环群之二,GT表示乘法循环群,群G1,G2和群GT有相同的阶;
b2.密钥生成中心KGC根据所选主私钥的组成部分s,t,通过以下公式计算并公布系统主公钥MPK:
MPK={s·P1,t·P1}(1)
其中,令PK1=s·P1表示系统主公钥组成部分之一,令PK2=t·P1表示系统主公钥组成部分之二,P1表示群G1的生成元。


4.根据权利要求1所述的基于SM9的属性加密方法,其特征是,所述步骤c包括:
c1.用户B将自己所在群组的身份标识GID发送给密钥生成中心KGC,请求用户私钥;
c2.密钥生成中心KGC收到用户B的请求后,确认GID是否合法并验证用户B是否在GID对应的群组中;如果验证通过,密钥生成中心KGC为用户B选择随机数r2∈{1,2,3,...,n-1},并结合生成的系统主私钥MSK=s||t、用户B的属性集AtB、用户B所在组的身份标识GID和计算公式(2)作为用户B私钥的一部分:



其中,sk1表示用户B私钥的组成部分之一,h1表示由安全的密码杂凑函数派生的密码函数,P2表示群G2的生成元;
c3.对于属性集AtB中的每个属性j,KGC选择随机数mj∈{1,2,3,...,n-1}并计算公式(3)、(4)作为用户B私钥的属性私钥:






其中,t-1表示t在模n下的逆,表示用户B私钥的属性私钥之一,表示用户B私钥的属性私钥之二,H1()表示安全的密码杂凑函数;
c4.密钥生成中心KGC生成用户B私钥并通过安全信道发送给用户B;
c5.用户B接收并秘密保存密钥生成中心KGC发送的用户私钥USK。


5.根据权利要求1所述的基于SM9的属性加密方法,其特征是,所述步骤d包括:
d1.用户A查询用户B所在群组的身份标识GID,如果对应GID存在,则计算公式(5)作为加密中间值:
QB=h1(GID,n)·P1+PK1(5)
其中,QB表示加密中间值;
d2.用户A随机选择r1∈{1,2,3,...,n-1},计算公式(6)、(7)、(8):
C1=r1·QB(6)
g=e(PK1,P2)(7)



其中,C1表示密文的组成部分之一,g表示加密中间结果,e表示从G1×G2到GT的双线性对,ω表示密文的组成部分之四;
d3.将用户A选择的随机数r1作为根节点的秘密,构建访问控制树T;访问控制树T中的所有非叶节点x都有一个随机多项式qx,多项式的次数dx与该点门限kx满足公式(9):
dx=kx-1(9)
从根节点开始,令qr(0)=r1,其中,qr(0)表示根节点r所对应的多项式在变量取0时的值,然后随机选取其他节点x,对应多项式变量取0时应满足公式(10):
qx(0)=qparent(x)(index(x))(10)
其中,qx(0)表示非叶子节点x所对应的多项式在变量取0时的值;qparent(x)(index(x))表示节点parent(x)所对应的多项式在变量取index(x)时的值,parent(x)表示节点x的父节点,index(x)表示节点x所对应的索引值,x表示访问控制树T中的非叶子节点,T表示访问控制树;
d4.利用公式...

【专利技术属性】
技术研发人员:张宏杰何德彪陈泌文季洪涵罗敏马军耿多贺建伟戴晓辉管荑刘勇马雷王文婷刘冬兰张朋丰梁野邵立嵩王景王春艳李慧勋李航
申请(专利权)人:国家电网有限公司武汉大学国网宁夏电力有限公司南瑞集团有限公司国网电力科学研究院有限公司北京科东电力控制系统有限责任公司国网山东省电力公司国网浙江省电力有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1