基于SM2算法的环签名方案
假设Alice希望用环签名为消息M签名,M的长度为 k l e n k_{len} klen,环中有 n n n个成员 A 1 , A 2 . . . A n A_1, A_2...A_n A1,A2...An,其中签名者Alice 是 A s A_s As。对于 s s s的某个值 1 ≤ s ≤ n 1 \leq s \leq n 1≤s≤n,其中所有环成员使用SM2作为他们各自的签名方案。基于SM2算法的环签名方案主要由系统建立、密钥生成、签名和验证3个部分组成。
初始化阶段
每个环成员 A i A_i Ai选定一条满足安全要求的椭圆曲线(256 bits),包括参数 N N N椭圆曲线的阶数, G G G椭圆曲线基点, a a a椭圆曲线一次项系数, b b b椭圆曲线的常数项。
q q q为大素数且 q > 2 256 q > 2^{256} q>2256;
m o d q mod\ q mod q是模 q q q的运算;
Z q ∗ Z_q^* Zq∗是由参数 1 , 2 , . . . q − 1 1,2,...q-1 1,2,...q−1组成的整数集合;
[ k ] G [k]G [k]G是椭圆曲线加法群的倍点运算,即 G G G的 k k k倍。
H ( ⋅ ) H(\cdot) H(⋅)为SM3密码杂凑函数的哈希算法,输入为任意长度的比特串 { 0 , 1 } ∗ \{0,1\}^* {
0,1}∗,输出为固定长度的密码杂凑函数。
通过随机数发生器产生随机数 k ∈ [