首页 > 其他分享 >SM9 - 密钥交换协议

SM9 - 密钥交换协议

时间:2025-01-16 16:00:21浏览次数:1  
标签:right ke SM9 交换 密钥 Ha ID left

符号
A,B:使用公钥密码系统的两个用户。
\(cf\):椭圆曲线阶相对于\(N\)的余因子。
\(cid\):用一个字节表示的曲线的标识符,其中\(\mbox{0x10}\)表示\(F_p\)(素数\(P>2^{191}\))上常曲线(即非超奇异曲线),\(\mbox{0x11}\)表示\(F_p\)表示超奇异曲线,\(\mbox{0x12}\)表示\(F_p\)上常曲线及其扭曲线。
\(de_A\):用户A的加密私钥。
\(de_B\):用户B的加密私钥。
\(e\):从\(G_1×G_2\)到\(G_T\)的双线性对。
\(eid\):用一个字节表示的双线性对\(e\)的标识符,其中\(\mbox{0x01}\)表示Tate对,\(\mbox{0x02}\)表示Weil对,\(\mbox{0x03}\)表示Ate对,\(\mbox{0x04}\)表示R-ate对。
\(G_T\):阶为素数\(N\)的乘法循环群。
\(G_1\):阶为素数\(N\)的加法循环群。
\(G_2\):阶为素数\(N\)的加法循环群。
\(g^u\):乘法群\(G_T\)中元素\(g\)的\(u\)次幂,\(g^{u} = \underset{u\text{个}}{\underbrace{g \cdot g \cdot \ldots \cdot g}}\),\(u\)是正整数。
\(H_v()\),\(Hash()\):密码杂凑函数。
\(H_1()\):由密码杂凑函数派生的密码函数。
\(hid\):本部分中,用一个字节表示的加密私钥生成函数识别符,由KGC选择并公开。
\(ID_A\):用户A的表示,可以唯一确定用户A的公钥。
\(ID_B\):用户B的表示,可以唯一确定用户B的公钥。
\(KDF()\):密钥派生函数。
\(N\):循环群\(G_1\)、\(G_2\)和\(G_T\)的阶,为大于\(2^{191}\)的素数。
\(P_{pub-e}\):加密主公钥。
\(P_1\):群\(G_1\)的生成元。
\(P_2\):群\(G_2\)的生成元。
\(r_A\):密钥交换中用户A产生的临时密钥值。
\(r_B\):密钥交换中用户B产生的临时密钥值。
\(SK_A\)、\(SK_B\):密钥交换协议商定的共享秘密密钥。
\(ke\):加密主私钥。
\(〈P〉\):由元素\(P\)生成的循环群。
\([u]P\):加法群\(G_1\)、\(G_2\)中元素\(P\)的\(u\)倍。
\(⌈x⌉\):顶函数,大于或等于\(x\)的最小整数。例如,\(⌈7⌉=7\),\(⌈8.3⌉=9\)。
\(⌊x⌋\):底函数,小于或等于\(y\)的最大整数。例如,\(⌊7⌋=7\),\(⌊8.3⌋=8\)。
\(x‖y\):\(x\)与\(y\)的拼接,其中\(x\)和\(y\)是比特串或字节串。
\([x,y]\):大于或等于\(x\)且小于或等于\(y\)的整数的集合。
\(β\):扭曲线参数。

系统加密主密钥和用户加密密钥的产生
KGC产生随机数\(ke∈[1,N-1]\)作为加密主私钥,计算\(G_1\)中的元素\(P_{pub-e}=[ke]P_1\)作为加密主公钥,则加密主密钥对为\((ke,P_{pub-e})\)。KGC秘密保存\(ke\),公开\(P_{pub-e}\)。
KGC选择并公开用一个字节表示的加密私钥生成函数识别符\(hid\)。
用户A和用户B的表示分别为\(ID_A\)和\(ID_B\)。为产生用户A的加密私钥\(de_A\),KGC首先在有限域\(F_N\)上计算\(t_1=H_1⁡(ID_A ‖hid,N)+ke\),若\(t_1=0\)则需重新产生加密主私钥,计算和公开加密主公钥,并更新已有用户的加密私钥;否则计算\(t_2=ke⋅{t_1}^{-1}\),然后计算\(de_A=[t_2 ] P_2\)。为产生用户B的加密私钥\(de_B\),KGC首先在有限域\(F_N\)上计算\(t_3=H_1⁡(ID_B ‖hid,N)+ke\),若\(t_3=0\)则需重新产生加密主私钥,计算和公开加密主公钥,并更新已有用户的加密私钥;否则计算\(t_4=ke⋅{t_3}^{-1}\),然后计算\(de_B=[t_4 ] P_2\)。

密码杂凑函数\(H_v()\)
密码杂凑函数\(H_v ()\)的输出是长度恰为\(v\)比特的杂凑值。本部分规定使用国家密码管理主管部门批准的密码杂凑函数,如SM3密码杂凑算法。

密码函数\(H_1 ()\)
密码函数\(H_1⁡(Z,n)\)的输入为比特串\(Z\)和整数\(n\),输出为一个整数\(h_1∈[1,n-1]\)。\(H_1⁡(Z,n)\)需要调用密码杂凑函数\(H_v ()\)。
密码函数\(H_1⁡(Z,n)\):
输入:比特串\(Z\),整数\(n\)。
输出:整数\(h_1∈[1,n-1]\)。

  1. 初始化一个32比特构成的计数器\(ct=\mbox{0x00000001}\);
  2. 计算\(hlen=8×⌈(5×(\log{2}{⁡n}))⁄32⌉\);
  3. 对\(i\)从\(1\)到\(⌈hlen⁄v⌉\)执行:
    3.1. 计算\(Ha_i=H_v⁡(\mbox{0x01}‖Z‖ct)\);
    3.2. \(ct++\);
  4. 若\(hlen⁄v\)是整数,令\(Ha!_{⌈hlen⁄v⌉} =Ha_{⌈hlen⁄v⌉}\) ,否则令\(Ha!_{⌈hlen⁄v⌉}\) 为\(Ha_{⌈hlen⁄v⌉}\) 最左边的\((hlen-(v×⌊hlen⁄v⌋))\)比特;
  5. 令\(Ha=Ha_1 ‖Ha_2 ‖⋯‖Ha_{⌈hlen⁄v⌉-1} ‖Ha!_{⌈hlen⁄v⌉}\) ;
  6. 计算\(h_1=(Ha\mod{(n-1)})+1\)。

密钥派生函数
设密码杂凑函数为\(H_v ()\),其输出是长度为\(v\)比特的杂凑值。
密钥派生函数\(KDF⁡(Z,klen)\):
输入:比特串\(Z\),整数\(klen\)(表示要获得的密钥数据的比特长度,要求该值小于\((2^{32}-1)v\))。
输出:长度为\(klen\)的密钥数据比特串\(K\)。

  1. 初始化一个32比特构成的计数器\(ct=\mbox{0x00000001}\);
  2. 对\(i\)从\(1\)到\(⌈klen⁄v⌉\)执行:
    2.1. 计算\(Ha_i=H_v⁡(Z‖ct)\);
    2.2. \(ct++\);
  3. 若\(klen⁄v\)是整数,令\(Ha!_{⌈klen⁄v⌉} =Ha_{⌈klen⁄v⌉}\) ,否则令\(Ha!_{⌈klen⁄v⌉}\) 为\(Ha_{⌈klen⁄v⌉}\) 最左边的\((klen-(v×⌊klen⁄v⌋))\)比特;
  4. 令\(K=Ha_1 ‖Ha_2 ‖⋯‖Ha_{⌈klen⁄v⌉-1} ‖Ha!_{⌈klen⁄v⌉}\) 。

密钥交换协议
设用户A和用户B协商获得密钥数据的长度为\(klen\)比特,用户A为发起方,用户B为响应方。用户A和用户B双方为了获得相同的密钥,应实现如下运算步骤:
用户A:
 A1.计算群\(G_1\)中的元素\(Q_B=[H_1⁡(ID_B ‖hid,N) ] P_1+P_{pub-e}\);
 A2.产生随机数\(r_A∈[1,N-1]\);
 A3.计算群\(G_1\)中的元素\(R_A=[r_A ] Q_B\);
 A4.将\(R_A\)发送给用户B;
用户B:
 B1.计算群\(G_1\)中的元素\(Q_A=[H_1⁡(ID_A ‖hid,N) ] P_1+P_{pub-e}\);
 B2.产生随机数\(r_B∈[1,N-1]\);
 B3.计算群\(G_1\)中的元素\(R_B=[r_B ] Q_A\);
 B4.验证\(R_A∈G_1\)是否成立,若不成立则协商失败;否则计算群\(G_T\)中的元素\(g_1=e⁡(R_A,de_B )\),\(g_2={e⁡(P_{pub-e},P_2 )}^{r_B }\),\(g_3={g_1}^{r_B }\);
 B5.计算\(SK_B=KDF⁡(ID_A ‖ID_B ‖R_A ‖R_B ‖g_1 ‖g_2 ‖g_3,klen)\);
 B6.(选项)计算\(S_B=Hash⁡(\mbox{0x82}‖g_1 ‖Hash⁡(g_2 ‖g_3 ‖ID_A ‖ID_B ‖R_A ‖R_B ) )\);
 B7.将\(R_B\)、(选项\(S_B\))发送给用户A;
用户A:
 A5.验证\(R_B∈G_1\)是否成立,若不成立则协商失败;否则计算群\(G_T\)中的元素\(g_1'={e⁡(P_{pub-e},P_2 )}^{r_A }\),\(g_2'=e⁡(R_B,de_A )\),\(g_3'={(g_2')}^{r_A }\);
 A6.(选项)计算\(S_1=Hash⁡(\mbox{0x82}‖g_1'‖Hash⁡(g_2'‖g_3'‖ID_A ‖ID_B ‖R_A ‖R_B ) )\),并检验\(S_1=S_B\)是否成立,若等式不成立则从B到A的密钥确认失败;
 A7.计算\(SK_A=KDF⁡(ID_A ‖ID_B ‖R_A ‖R_B ‖g_1'‖g_2'‖g_3',klen)\);
 A8.(选项)计算\(S_A=Hash⁡(\mbox{0x83}‖g_1'‖Hash⁡(g_2'‖g_3'‖ID_A ‖ID_B ‖R_A ‖R_B ) )\),并将\(S_A\)发送给用户B;
用户B:
 B8.(选项)计算\(S_2=Hash⁡(\mbox{0x83}‖g_1 ‖Hash⁡(g_2 ‖g_3 ‖ID_A ‖ID_B ‖R_A ‖R_B ) )\),并检验\(S_2=S_A\)是否成立,若等式不成立则从A到B的密钥确认失败。

注1:注意到加密主公钥为\(P_{pub-e}=[ke] P_1\),且用户A、B的加密私钥为

$ \left. \left\{ \begin{matrix} {t_{1} = {H_{1}\left( {\left. {ID}_{A} \right\| hid,N} \right)} + ke} \\ {t_{3} = {H_{1}\left( {\left. {ID}_{B} \right\| hid,N} \right)} + ke} \end{matrix} \right.\Rightarrow\left\{ \begin{matrix} {t_{2} = ke \cdot {t_{1}}^{- 1}} \\ {t_{4} = ke \cdot {t_{3}}^{- 1}} \end{matrix} \right.\Rightarrow\left\{ \begin{matrix} {{de}_{A} = \left\lbrack t_{2} \right\rbrack P_{2}} \\ {{de}_{B} = \left\lbrack t_{4} \right\rbrack P_{2}} \end{matrix} \right. \right. $
进而步骤A1、B1有
$ \left\{ \begin{matrix} {Q_{A} = \left\lbrack {H_{1}\left( {\left. {ID}_{A} \right\| hid,N} \right)} \right\rbrack P_{1} + P_{pub - e} = \left\lbrack {{H_{1}\left( {\left. {ID}_{A} \right\| hid,N} \right)} + ke} \right\rbrack P_{1} = \left\lbrack t_{1} \right\rbrack P_{1}} \\ {Q_{B} = \left\lbrack {H_{1}\left( {\left. {ID}_{B} \right\| hid,N} \right)} \right\rbrack P_{1} + P_{pub - e} = \left\lbrack {{H_{1}\left( {\left. {ID}_{B} \right\| hid,N} \right)} + ke} \right\rbrack P_{1} = \left\lbrack t_{3} \right\rbrack P_{1}} \end{matrix} \right. $
则对于步骤A3、B3有
$ \left\{ \begin{matrix} {R_{A} = \left\lbrack r_{A} \right\rbrack Q_{B} = \left\lbrack {r_{A} \cdot t_{3}} \right\rbrack P_{1}} \\ {R_{B} = \left\lbrack r_{B} \right\rbrack Q_{A} = \left\lbrack {r_{B} \cdot t_{1}} \right\rbrack P_{1}} \end{matrix} \right. $
此时,观察步骤B4及A5获得$g_1$、$g_2$、$g_3$及$g_1'$、$g_2'$、$g_3'$具有如下关系(双线性对的性质参阅注2)
$ \left\{ \begin{array}{l} {g_{1} = {e\left( {R_{A},{de}_{B}} \right)} = {e\left( {\left\lbrack {r_{A} \cdot t_{3}} \right\rbrack P_{1},\left\lbrack {ke \cdot {t_{3}}^{- 1}} \right\rbrack P_{2}} \right)} = {e\left( {P_{1},P_{2}} \right)}^{r_{A} \cdot ke} = {e\left( {\left\lbrack {ke} \right\rbrack P_{1},P_{2}} \right)}^{r_{A}} = {e\left( {P_{pub - e},P_{2}} \right)}^{r_{A}} = g_{1}'} \\ {g_{2} = {e\left( {P_{pub - e},P_{2}} \right)}^{r_{B}} = {e\left( {\left\lbrack {ke} \right\rbrack P_{1},P_{2}} \right)}^{r_{B}} = {e\left( {P_{1},P_{2}} \right)}^{r_{B} \cdot ke} = {e\left( {\left\lbrack {r_{B} \cdot t_{1}} \right\rbrack P_{1},\left\lbrack {ke \cdot {t_{1}}^{- 1}} \right\rbrack P_{2}} \right)} = {e\left( {R_{B},{de}_{A}} \right)} = g_{2}'} \\ {g_{3} = {g_{1}}^{r_{B}} = {e\left( {P_{1},P_{2}} \right)}^{r_{A} \cdot r_{B} \cdot ke} = \left( {g_{2}'} \right)^{r_{A}} = g_{3}'} \end{array} \right. $
所以,步骤A7及B5的计算
$ \left\{ \begin{array}{l} {{SK}_{A} = {\mathit{KDF}\left( {\left. {ID}_{A} \right\|\left. {ID}_{B} \right\|\left. R_{A} \right\|\left. R_{B} \right\|\left. g_{1}' \right\|\left. g_{2}' \right\| g_{3}',klen} \right)}} \\ {{SK}_{B} = {\mathit{KDF}\left( {\left. {ID}_{A} \right\|\left. {ID}_{B} \right\|\left. R_{A} \right\|\left. R_{B} \right\|\left. g_{1} \right\|\left. g_{2} \right\| g_{3},klen} \right)}} \end{array} \right. $
有$SK_A=SK_B$,即用户A、B会获得相同的共享秘密密钥。同时,对于验证步骤A6、A8及B6、B8有
$ \left\{ \begin{array}{l} {S_{A} = {{\mathit{Has}h}\left( {\left. \text{0}\text{x}83 \right\|\left. g_{1}' \right\|{{\mathit{Has}h}\left( {\left. g_{2}' \right\|\left. g_{3}' \right\|\left. {ID}_{A} \right\|\left. {ID}_{B} \right\|\left. R_{A} \right\| R_{B}} \right)}} \right)} = S_{2}} \\ {S_{B} = {{\mathit{Has}h}\left( {\left. \text{0}\text{x}82 \right\|\left. g_{1} \right\|{{\mathit{Has}h}\left( {\left. g_{2} \right\|\left. g_{3} \right\|\left. {ID}_{A} \right\|\left. {ID}_{B} \right\|\left. R_{A} \right\| R_{B}} \right)}} \right)} = S_{1}} \end{array} \right. $
即在计算无误、传输无误、过程中无篡改、未受伪造、未受密码分析的攻击等情况时验证可通过,且可以保证用户双方共享相同的秘密密钥。

注2:双线性对
设\((G_1,+)\)、\((G_2,+)\)和\((G_T,⋅)\)是3个循环群,\(G_1\)、\(G_2\)和\(G_T\)的阶均为素数\(N\),\(P_1\)是\(G_1\)的生成元,\(P_2\)是\(G_2\)的生成元,存在\(G_2\)到\(G_1\)的同态映射\(ψ\)使得\(ψ⁡(P_2 )=P_1\)。
双线性对\(e\)是\(G_1×G_2→G_T\)的映射,满足如下条件:
a) 双线性性:对任意的\(P∈G_1\),\(Q∈G_2\),\(a,b∈Z_N\),有\(e⁡([a]P,[b]Q)={e⁡(P,Q)}^{ab}\);
b) 非退化性:\(e⁡(P_1,P_2 )≠1_{G_T }\);
c) 可计算性:对任意的\(P∈G_1\),\(Q∈G_2\),存在有效的算法计算\(e⁡(P,Q)\)。
标准GM/T 0044.1—2016中7.1节、GM/T 0044.5—2016中3.1节规定了,SM9算法使用R-ate对(\(eid\):\(\mbox{0x04}\))。




参考
GM/T 0044.1—2016
GM/T 0044.3—2016
GM/T 0044.5—2016

标签:right,ke,SM9,交换,密钥,Ha,ID,left
From: https://www.cnblogs.com/miro-cnblogs/p/18675041

相关文章

  • 在Linux系统上创建一个200GB的交换空间
    步骤1:创建交换文件选择新的磁盘位置:假设你希望将交换空间放置在/mnt/data目录下(可以是任何其他挂载的磁盘分区)。首先确保该目录或挂载点存在。bashsudomkdir-p/mnt/data创建200GB的交换文件:使用dd命令创建一个200GB的交换文件。200GB=204800MB,因此需要指定文......
  • 交换机如何协助实现对网络流量的审计
    本文探讨了交换机在网络流量审计中的关键作用,强调其作为数据转发节点的优势,可实现网络可见性和合规性支持。介绍了端口镜像技术和VLAN流量审计的工作原理,提供了Cisco和华为交换机的流量审计配置命令。同时,结合安全策略,如ACL和基于用户设备的策略,优化流量审计。最后,强调了日......
  • 和供应商传输文件,值得推荐的高效安全数据交换平台!
    企业跟供应商之间需要传输的文件种类繁多,这些文件通常与双方的业务合作、产品供应、质量管理、财务结算等方面密切相关。而且和供应商传输文件时,会涉及到多方面的安全问题,这些安全问题可能对企业造成严重的损失。1、数据泄露风险文件在传输过程中被窃取:使用不安全的传输方式,如......
  • 第三章 交换机与VLAN的配置与应用
    想做一个自己学习的有关的csdn账号,努力奋斗......会更新我计算机网络实验课程的所有内容,还有其他的学习知识^_^,为自己巩固一下所学知识,下次更新链路聚合与生成树配置。我是一个萌新小白,有误地方请大家指正,谢谢^_^文章目录前言一、实验原理二、命令认识1.ping命令2.sy......
  • 代码随想录算法训练营第4天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面
    一、刷题部分1.124.两两交换链表中的节点原文链接:代码随想录题目链接:24.两两交换链表中的节点-力扣(LeetCode)1.1.1题目描述给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输......
  • C# 实现 gRPC 进程间通讯:两台设备的数据交换之道
    标题:C#上位机通信救星!gRPC助力打造高效稳定通信架构,告别传统通信泥潭!引言:作为一名C#上位机开发老鸟,你是否还在为以下问题焦头烂额?两台工控机之间数据交互慢如蜗牛,实时性?不存在的!进程间通信代码堪比天书,调试维护?想哭!传统通信方式面对高并发、大数据量直接躺平,性能?呵呵!别......
  • 深入学习Fanout Exchange交换机
            在消息队列系统中,交换机(Exchange)是消息的分发中心,负责将生产者发送的消息路由到一个或多个队列中。FanoutExchange(扇形交换机)是其中的一种类型,具有独特的消息分发机制。本文将深入探讨FanoutExchange的工作原理、应用场景以及如何在RabbitMQ中实现其基本操作......
  • 深入学习Topic Exchange交换机
            在消息队列系统中,交换机(Exchange)作为消息分发中心,负责将生产者发送的消息根据路由规则路由到一个或多个队列中。TopicExchange(主题交换机)是其中一种强大的交换机类型,它通过路由键(RoutingKey)的通配符匹配,提供了灵活的消息路由机制。本文将深入探讨TopicExcha......
  • 小程序uniapp+java易物小店物品交换系统 0439y
    目录系统实现截图技术栈开发核心技术介绍:为什么选择最新的Vue与SpringBoot技术核心代码部分展示代码执行流程详细视频演示源码获取系统实现截图技术栈jdk版本:jdk1.8+编程语言:java框架支持:springboot/ssm数据库:mysql版本不限数据库工具:Navicat/SQLyog......
  • 《从传统到智能:大模型交换机的变革之路》
    大模型交换机是一种专门为大规模人工智能模型提供网络和计算资源调度的硬件设备。以下是关于它的详细介绍:特点高带宽和低延迟:大模型的训练和推理通常需要处理大量的数据,高带宽可以确保数据在各个计算节点之间快速传输,低延迟则能减少数据传输过程中可能出现的瓶颈,提高训练和......