一种基于SM9的多用户消息加密解密方法及系统技术方案

技术编号:37319671 阅读:12 留言:0更新日期:2023-04-21 23:00
本发明专利技术公开了一种基于SM9的多用户消息加密解密方法及系统,用户i使用拥有n个用户的群组G的标识、群组中所有用户的标识ID以及系统公钥加密消息M,并将加密后的消息密文C发送给群组G;加密后的消息密文C包含群组中所有用户对应的加密参数;将密文发送给群组中的用户j;用户j使用自身的私钥,解密出消息明文。本发明专利技术采用的SM9公钥加密与解密算法,该算法使消息发送者可以利用接收者的标识对消息进行加密,唯有接收者可以用相应的私钥对该密文进行解密,从而获取消息。与传统公钥加密算法相比,SM9通过将用户标识作为公钥,从而省略了数字证书交换与证书管理等过程,适用于互联网各种新兴应用的安全保障。新兴应用的安全保障。新兴应用的安全保障。

【技术实现步骤摘要】
一种基于SM9的多用户消息加密解密方法及系统


[0001]本专利技术属于信息安全
,涉及一种消息加密解密方法及系统,具体涉及一种基于SM9的多用户消息加密解密方法及系统,可以应用于群聊消息加密保护中。

技术介绍

[0002]在信息安全领域中,如何保护数据的安全与隐私一直是人们关注的重点。在安全通信场景中,服务端加密方法会存储在传输过程中加密的数据,保证数据不被未经授权者访问,但这种方法不能保护整个的数据隐私的传输过程。端到端加密则提供了保护通信的最高标准,这种方法的加密解密过程发生在终端设备上,只有发送方和指定的接收方可以访问数据,任何第三方机构都不能访问服务器上的加密数据。即时通信是当前信息网络上应用广泛的一种通信技术,允许两人或多人使用互联网实时传输文字、语音和图片等信息。与电子邮件等传统安全通信任务的要求不同,安全即时通信不仅要求保障用户信息的安全传输,同时也需要保证用户隐私数据的安全存储。
[0003]运用密码技术是解决通信过程中的数据隐私保护问题的重要手段。目前的即时通信加密技术为满足该场景下用户多方的解密需求,需要通过密钥协商生成多方共有的会话密钥。这种方法不仅为实现会话密钥的一次一密安全要求带来了困难,也为即时通信系统的密钥管理带来了极大困难。

技术实现思路

[0004]本专利技术的目的在于克服现有在多用户参与的场景下安全即时通信加密方法存在的缺陷,提出了一种基于SM9的多用户消息加密解密方法及系统,用于解决现有技术存在的需要复杂的密钥协商过程以及密钥管理困难的问题,在省去密钥协商过程的情况下,实现满足一次一密且群组中所有用户均可解密的公钥加密算法。
[0005]本专利技术的方法所采用的技术方案是:一种基于SM9的多用户消息加密解密方法,包括以下步骤:
[0006]步骤1:用户i使用拥有n个用户的群组G的标识、群组中所有用户的标识ID以及系统公钥加密消息M,并将加密后的消息密文C发送给群组G;加密后的消息密文C包含群组中所有用户对应的加密参数;其中n≥3;
[0007]步骤2:将密文发送给群组中的用户j;用户j使用自身的私钥,解密出消息明文。
[0008]本专利技术的系统所采用的技术方案是:一种基于SM9的多用户消息加密解密系统,包括以下模块:
[0009]模块1,用于用户i使用拥有n个用户的群组G的标识、群组中所有用户的标识ID以及系统公钥加密消息M,并将加密后的消息密文C发送给群组G;加密后的消息密文C包含群组中所有用户对应的加密参数;
[0010]模块2,用于将密文发送给群组中的用户j;用户j使用自身的私钥,解密出消息明文。
[0011]本专利技术的优点在于,使用基于SM9的公钥加密算法的变种实现,利用群组中用户的标识进行消息加解密可省去消息通讯过程中的数字证书交换与证书管理等过程,适用于即时通信场景下的数据安全保障;将用户标识引入消息加密过程中,从而使得群组中的用户均能够解密群聊消息,消除了当前即时通信对称加密方法中的密钥协商过程与传统公钥加密算法中只能一方解密的问题;实现了安全通信中端到端加密方案的隐私数据传输全过程保护与端到服务器加密方案中隐私数据的安全存储的有效融合,将隐私数据的安全传输与安全存储一次完成。
附图说明
[0012]附图1为本专利技术实施例的加密实现流程图;
[0013]附图2为本专利技术实施例的解密实现流程图。
具体实施方式
[0014]为了便于本领域普通技术人员理解和实施本专利技术,下面结合附图详细描述本专利技术的具体实施方式及其简化和变形。应理解,此处所描述的实施示例仅用于说明和解释本专利技术,并不用于限定本专利技术的保护范围。
[0015]本专利技术提出了一种基于SM9的群聊消息加密解密方法,用于解决现有安全即时通信方法存在的需要复杂的密钥协商过程以及密钥管理困难的问题,在省去密钥协商过程的情况下,实现满足一次一密且通信多方均可解密的公钥加密算法。
[0016]本实施例中设需要发送的消息为比特串M,mlen为M的比特长度,K1_为分组密码算法中密钥K1的比特长度,K2_为函数MAC(K2,)中密钥K2的比特长度。
[0017]参照附图1,本实施例提供的一种基于SM9的即时通信群聊消息加密方法,群组用户i加密明文M给拥有n个用户的群组G,其中n≥3;实现步骤为:
[0018]步骤1.1:用户i使用群组中n个用户的标识以及系统公钥P
pub

e
,计算中间参数Q
k
;其中,P
pub

e
为加密主公钥,P
pub

e
=[ke]P1;ke为加密主私钥;P1为群G1的生成元;G1是阶为素数N的加法循环群;
[0019]Q
k
=[H1(ID
k
||hid,N)]P1+P
pub

e
,1≤k≤n;
[0020]其中,ID
k
为用户k的标识;H1()为由密码杂凑函数派生的密码函数;hid为用一个字节表示的私钥生成函数标识符,由密钥生成中心KGC选择并公开;
[0021]步骤1.2:产生n+1个随机数{r
k
,r},其中r
k
∈[1,N

1],r∈[1,N

1],k=1,2,

,n;
[0022]步骤1.3:使用随机数r
k
、r与中间参数Q
k
计算n个元素
C
k与C

k

[0023]计算群G1中的n个元素C
k
=[r
k
]Q
k
、群G2中的n个元素C

k
=(x

k
,y

k
)=[r

r
k
]P2以及群G
T
中的n个元素同时计算β
k
=H1(α
k
||ID
k
)及δ
k
=H1(β
k
||ID
k
);然后计算其中,G2是阶为素数N的加法循环群;P2为群G2的生成元;G
T
是阶为素数N的乘法循环群;e为从G1×
G2到G
T
的双线性对;
[0024]步骤1.4:计算群G
T
中的元素g=e(P
pub

e
,P2);
[0025]步骤1.5:计算群G
T
中的元素w=g
r
,将w的数据类型转换为比特串;
[0026]步骤1.6:使用密钥派生函数KDF()生成密钥K1和K2,使用K1加密消息M得到CC2;
[0027]本实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于SM9的多用户消息加密解密方法,其特征在于,包括以下步骤:步骤1:用户i使用拥有n个用户的群组G的标识、群组中所有用户的标识ID以及系统公钥加密消息M,并将加密后的消息密文C发送给群组G;加密后的消息密文C包含群组中所有用户对应的加密参数;其中n≥3;步骤2:将密文发送给群组中的用户j;用户j使用自身的私钥,解密出消息明文。2.根据权利要求1所述的基于SM9的多用户消息加密解密方法,其特征在于,步骤1的具体实现包括以下子步骤:步骤1.1:用户i使用群组中n个用户的标识以及系统公钥P
pub

e
,计算中间参数Q
k
;其中,P
pub

e
为加密主公钥,P
pub

e
=[ke]P1;ke为加密主私钥;P1为群G1的生成元;G1是阶为素数N的加法循环群;Q
k
=[H1(ID
k
||hid,N)]P1+P
pub

e
,1≤k≤n;其中,ID
k
为用户k的标识;H1()为由密码杂凑函数派生的密码函数;hid为用一个字节表示的私钥生成函数标识符,由密钥生成中心KGC选择并公开;步骤1.2:产生n+1个随机数{r
k
,r},其中r
k
∈[1,N

1],r∈[1,N

1],k=1,2,

,n;步骤1.3:使用随机数r
k
、r与中间参数Q
k
计算n个元素C
k
与C

k
;计算群G1中的n个元素C
k
=[r
k
]Q
k
、群G2中的n个元素C
k

=(x
k

,y
k

)=[r

r
k
]P2以及群G
T
中的n个元素同时计算β
k
=H1(α
k
||ID
k
)及δ
k
=H1(β
k
||ID
k
);然后计算其中,G2是阶为素数N的加法循环群;P2为群G2的生成元;G
T
是阶为素数N的乘法循环群;e为从G1×
G2到G
T
的双线性对;步骤1.4:计算群G
T
中的元素g=e(P
pub

e
,P2);步骤1.5:计算群G
T
中的元素w=g
r
,将w的数据类型转换为比特串;步骤1.6:使用密钥派生函数KDF()生成密钥K1和K2,使用K1加密消息M得到CC2;步骤1.7:计算CC3=MAC(K2,CC2);其中,MAC()为消息认证码函数;步骤1.8:输出密文C=(C1||C
″1)|I
……
||(C
n
||C

n
)||CC2||CC3,并上传服务器,服务器发送给用户j的密文简化为C=C
j
||C

j
||CC2||CC3。3.根据权利要求2所述的基于SM9的多用户消息加密解密方法,其特征在于:步骤1.6中,使用结合密钥派生函数的分组密码算法加密明文;计算整数klen=K1_len+K2_len,然后计算K=KDF(ID
G
||w||ID1||

||ID
n
,klen);令K1为K最左边的K1_len比特,K2为剩下的K2_len比特,若K1为全0比特串,则返回执行步骤1.2;其中,ID
G
为群组G的标识;计算CC2=Enc(K1,M);其中,Enc()为分组加密算法。4.根据权利要求2所述的基于SM9的多用户消息加密解密方法,其特征在于,步骤2的具体实现包括以下子步骤:步骤2.1:从C中取出比特串C
j
和C

j
,将C
j
和C

j
的数据类型转换为椭圆曲线上的点,验证C
j
∈G1与C

j
∈G1是否成立,若不成立则报错并退出;步骤2.2:计算群G
T
中的元素w

,将w

的数据类型转换为比特串;计算群G
T
中的元素α
j
=e(C
j
,de
j
)、β
i
=H1(α
j
||ID
j
)及δ
j
=H1(β
j
||ID
j
),提取密文并令C

j
=(a,b),然后计算C

j
=(β
j
·
a,δ
j
·
b),以及w

=α
j
·
e(P
pub

e
,C

j
),将w

的数据类型转换
为字符串;其中,de
j
为用户j的私钥,计算公式为de
j
=[ke.(H1(ID
j
||id,N)+ke)
‑1]P2;步骤2.3:使用密钥派生函数KDF()生成密钥K
′1和K
′2,使用K
′1解密密文CC2得到M

;步骤2.4:计算u=MAC(K
′2,CC2),从C中取出比特串CC3,若u≠CC3,则报错并退出;步骤2.5:输出明文M

。5.根据权利要求4所述的基于SM9的多用户消息加密解密方法,其特征在于:步骤2.3中,使用结合密钥派生函数的分组密码算法解密密文;计算整数klen=K1_len+K2_len,然后计算K

=KDF(ID
G
||w

||ID1||

||ID
n
,klen);令K
′1为K

最左边的K1_len比特,K
′2为剩下的K2_len比特,若K
′1为全0比特串,则报错并退出;计算M

=Dec(k
′1,CC2);其中,Dec()为分组解密算法。6.一种基于SM9的多用户消息加密解密系统,其...

【专利技术属性】
技术研发人员:杜昭睿宋奕杨世昭王茜艳霍明月
申请(专利权)人:烟台珈港电子科技有限公司
类型:发明
国别省市:

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

1