logo资料库

密钥交换协议.pdf

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议 Public Key Cryptographic Algorithm SM2 Based on Elliptic Curves Part 3: Key Exchange Protocol 国家密码管理局 2010年12月
目目目 次次次 前 言 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · II 引 言 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · III 1 范围· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1 2 规范性引用文件· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1 3 术语和定义 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 1 4 符号· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 2 5 算法参数与辅助函数 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 3 5.1 总则 ·················································································· 3 5.2 椭圆曲线系统参数 ····································································· 3 5.3 用户密钥对············································································ 3 5.4 辅助函数 ·············································································· 3 5.4.1 概述 ··········································································· 3 5.4.2 密码杂凑函数 ·································································· 4 5.4.3 密钥派生函数 ·································································· 4 5.4.4 随机数发生器 ·································································· 4 5.5 用户其它信息 ········································································· 4 6 密钥交换协议及流程 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 4 6.1 密钥交换协议 ········································································· 4 6.2 密钥交换协议流程 ····································································· 6 附录A (资料性附录) 密钥交换及验证示例· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 7 A.1 一般要求·············································································· 7 A.2 Fp上椭圆曲线密钥交换协议···························································· 7 A.3 F2m上椭圆曲线密钥交换协议 ··························································· 11 I
前前前 言言言 《SM2椭圆曲线公钥密码算法》分为四个部分: ──第1部分:总则 ──第2部分:数字签名算法 ──第3部分:密钥交换协议 ──第4部分:公钥加密算法 本部分为第3部分。 本部分的附录A为资料性附录。 II
引引引 言言言 N.Koblitz和V.Miller在1985年各自独立地提出将椭圆曲线应用于公钥密码系统。椭圆曲线公钥密码 所基于的曲线性质如下: ──有限域上椭圆曲线在点加运算下构成有限交换群,且其阶与基域规模相近; ──类似于有限域乘法群中的乘幂运算,椭圆曲线多倍点运算构成一个单向函数。 在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭 圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散 对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度要求下,椭圆曲 线密码较其它公钥密码所需的密钥规模要小得多。 本部分描述了基于椭圆曲线的密钥交换协议。 III
SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议 1 范范范围围围 本部分规定了SM2椭圆曲线公钥密码算法的密钥交换协议,并给出了密钥交换与验证示例及其相 应的流程。 本部分适用于商用密码应用中的密钥交换,可满足通信双方经过两次或可选三次信息传递过程, 计算获取一个由双方共同决定的共享秘密密钥(会话密钥)。同时,本部分还可为安全产品生产商提 供产品和技术的标准定位以及标准化的参考,提高安全产品的可信性与互操作性。 2 规规规范范范性性性引引引用用用文文文件件件 下列文件中的条款通过本部分引用而成为本部分的条款。凡是注日期的引用文件,其随后所有的 修改单(不包括勘误的内容)或修订版均不适用于本部分,然而,鼓励根据本部分达成协议的各方研 究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本部分。 SM2椭圆曲线公钥密码算法 第1部分:总则 3 术术术语语语和和和定定定义义义 3.1 3.2 3.3 值。 3.4 3.5 3.6 下列术语和定义适用于本部分。 密密密钥钥钥   key 确定密码函数运算的一个参数,它用于: a) 加密或解密变换; b) 同步产生共享秘密; c) 数字签名的生成或验证。 [ANSI X9.63-2001] 密钥交换 key exchange 在通信实体之间安全地建立一个共享密钥的协商过程。 密钥协商 key agreement 多个用户之间建立一个共享秘密密钥的过程,并且其中的任何一个用户都不能预先确定该密钥的 [ISO/IEC 15946-3 3.16] 从A到B的密钥确认 key confirmation from A to B 使用户B确信用户A拥有特定秘密密钥的保证。 [ISO/IEC 15946-3 3.17] 密钥派生函数 key derivation function 通过作用于共享秘密和双方都知道的其它参数,产生一个或多个共享秘密密钥的函数。 [ANSI X9.63-2001 2.1] 1
杂凑函数 hash function 将一个比特串映射为一个固定长度比特串的函数。该函数满足如下性质: a) 对于任意给定的输出,要找到其对应的输入,在计算上是不可行的; b) 对于任意给定的输入,要找到输出相同的另一个输入,在计算上是不可行的。 注:计算可行性依赖于具体的安全需求和环境。 [ISO/IEC 15946-2 3.1.3] 杂凑值 hash value 杂凑函数作用于一条消息时输出的比特串。 [ISO/IEC 15946-2 3.1.2] 对称密码算法 symmetric cryptographic algorithm 一种执行加密的算法或执行相应解密的算法,其中加密和解密使用的密钥容易从计算上相互求 发起方 initiator 在一个协议的操作过程中发送首轮交换信息的用户。 [ANSI X9.63-2001 2.1] 响应方 responder 在一个协议的操作过程中不是发送首轮交换信息的用户。 [ANSI X9.63-2001 2.1] 3.7 3.8 得。 3.9 3.10 3.11 可辨别标识 distinguishing identifier 可以无歧义辨别某一实体身份的信息。 [ISO/IEC 15946-3 3.9] 4 符符符号号号 下列符号适用于本部分。 A,B:使用公钥密码系统的两个用户。 a,b:Fq中的元素,它们定义Fq上的一条椭圆曲线E。 dA:用户A的私钥。 dB:用户B的私钥。 E(Fq):Fq上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合。 Fq:包含q个元素的有限域。 G:椭圆曲线的一个基点,其阶为素数。 Hash( ):密码杂凑函数。 Hv( ):消息摘要长度为v比特的密码杂凑函数。 h:余因子,h= #E(Fq)=n,其中n是基点G的阶。 IDA,IDB :用户A和用户B的可辨别标识。 K,KA,KB:密钥交换协议商定的共享秘密密钥。 KDF( ) :密钥派生函数。 modn :模n运算。例如,23mod7=2。 2
n :基点G的阶(n是# E(Fq)的素因子)。 O:椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。 PA:用户A的公钥。 PB:用户B的公钥。 q :有限域Fq中元素的数目。 rA:密钥交换中用户A产生的临时密钥值。 rB:密钥交换中用户B产生的临时密钥值。 x∥y:x与y的拼接,其中x、y可以是比特串或字节串。 ZA:关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。 ZB:关于用户B的可辨别标识、部分椭圆曲线系统参数和用户B公钥的杂凑值。 } #E(Fq):E(Fq)上的点的数目,称为椭圆曲线E(Fq)的阶。 [k]P:椭圆曲线上点P的k倍点,即,[k]P= P + P +··· + P ,k是正整数。 | {z x,y]:大于或等于x且小于或等于y的整数的集合。 ⌈x⌉:顶函数,大于或等于x的最小整数。例如,⌈7⌉=7, ⌈8.3⌉=9。 ⌊x⌋:底函数,小于或等于x的最大整数。例如,⌊7⌋=7, ⌊8.3⌋=8。 &:两个整数的按比特与运算。 k个 5 算算算法法法参参参数数数与与与辅辅辅助助助函函函数数数 5.1 总则 密钥交换协议是两个用户A和B通过交互的信息传递,用各自的私钥和对方的公钥来商定一个只 有他们知道的秘密密钥。这个共享的秘密密钥通常用在某个对称密码算法中。该密钥交换协议能够用 于密钥管理和协商。 5.2 椭圆曲线系统参数 椭圆曲线系统参数包括有限域Fq的规模q(当q = 2m时,还包括元素表示法的标识和约化多项式); 定义椭圆曲线E(Fq)的方程的两个元素a、b∈ Fq;E(Fq)上的基点G = (xG;yG)(G ̸= O),其中xG和yG是Fq中 的两个元素;G的阶n及其它可选项(如n的余因子h等)。 椭圆曲线系统参数及其验证应符合第1部分第5章的规定。 5.3 用户密钥对 用户A的密钥对包括其私钥dA和公钥PA=[dA]G=(xA;yA),用户B的密钥对包括其私钥dB和公钥 PB=[dB]G=(xB;yB)。 用户密钥对的生成算法与公钥验证算法应符合第1部分第6章的规定。 5.4 辅助函数 5.4.1 概述 在本部分规定的椭圆曲线密钥交换协议中,涉及到三类辅助函数:密码杂凑函数,密钥派生函数 与随机数发生器。这三类辅助函数的强弱直接影响密钥交换协议的安全性。 3
5.4.2 密码杂凑函数 本部分规定使用国家密码管理局批准的密码杂凑算法,如SM3密码杂凑算法。 5.4.3 密钥派生函数 密钥派生函数的作用是从一个共享的秘密比特串中派生出密钥数据。在密钥协商过程中,密钥派 生函数作用在密钥交换所获共享的秘密比特串上,从中产生所需的会话密钥或进一步加密所需的密钥 数据。 密钥派生函数需要调用密码杂凑函数。 设密码杂凑函数为Hv( ),其输出是长度恰为v比特的杂凑值。 密钥派生函数KDF(Z, klen): 输入:比特串Z,整数klen(表示要获得的密钥数据的比特长度,要求该值小于(232-1)v)。 输出:长度为klen的密钥数据比特串K。 a)初始化一个32比特构成的计数器ct=0x00000001; b)对i从1到⌈klen/v⌉执行: b.1)计算Hai=Hv(Z ∥ ct); b.2)ct++; c)若klen/v是整数,令Ha!⌈klen=v⌉ = Ha⌈klen=v⌉,否则令Ha!⌈klen=v⌉为Ha⌈klen=v⌉最左边的(klen−(v×⌊klen=v⌋))比 特; d)令K = Ha1||Ha2||···||Ha⌈klen=v⌉−1||Ha!⌈klen=v⌉。 5.4.4 随机数发生器 本部分规定使用国家密码管理局批准的随机数发生器。 5.5 用户其它信息 用户A具有长度为entlenA比特的可辨别标识IDA,记ENT LA是由整数entlenA 转换而成的两个字节; 用户B具有长度为entlenB比特的可辨别标识IDB,记ENT LB 是由整数entlenB转换而成的两个字节。 在 本部分规定的椭圆曲线密钥交换协议中,参与密钥协商的A、B双方都需要用密码杂凑函数求得用 户A的杂凑值ZA和用户B的杂凑值ZB。 按本文本第1部分4.2.5和4.2.4给出的方法,将椭圆曲线方程参 数a、b、G的坐标xG、yG 和PA的坐标xA、yA的数据类型转换为比特串,ZA= H256(ENT LA ∥ IDA ∥ a ∥ b ∥ xG ∥ yG ∥ xA ∥ yA);按本文本第1部分4.2.5和4.2.4给出的方法,将椭圆曲线方程参数a、b、G的坐标xG、 yG 和PB的坐标xB、yB的数据类型转换为比特串,ZB= H256(ENT LB ∥ IDB ∥ a ∥ b ∥ xG ∥ yG ∥ xB ∥ yB)。 6 密密密钥钥钥交交交换换换协协协议议议及及及流流流程程程 6.1 密钥交换协议 设用户A和B协商获得密钥数据的长度为klen比特,用户A为发起方,用户B为响应方。 用户A和B双方为了获得相同的密钥,应实现如下运算步骤: 记w=⌈(⌈log2(n)⌉ =2)⌉− 1。 用户A: A1:用随机数发生器产生随机数rA ∈ [1, n-1]; A2:计算椭圆曲线点RA = [rA]G=(x1;y1); A3:将RA发送给用户B; 4
分享到:
收藏