SM2代理签名
基于椭圆曲线的代理签名
代理签名
一个代理签名方案至少需要三种不同类型人的参与,即原始签名人,代理签名人和代理签名的验证人
这篇文章分别用A,B,C代表上述三个身份。
一个代理签名方案又至少包括四个过程
即:初始化过程,数字签名权力的委托过程,代理签名的产生过程和代理签名的验证过程
书本上定义的椭圆曲线
椭圆曲线数字签名
初始定义:
签名算法
1)密钥对产生:
选取正整数$k_A$(random)($0<k_A<n$),作为用户A私钥
然后计算$P_A=k_AP$(用户A的公钥)
2)签名的产生:
对任意消息$m(0<m<n)$,用户A首先选取随机数k,计算$kP=(x,y)$,其中$x,y \in F$
用户A用自己私钥$k_A$计算:
- $r\equiv x\pmod n$
- $s\equiv k^{-1}(m+k_Ar)\pmod n$
签名为($m,r,s$)
3)签名验证:
对系统中任意用户C收到($m,r,s$)后,C首先获取A的公钥然后计算,
- $c\equiv s^{-1}\pmod n$
- $u_1\equiv mc \pmod n$,$u_2\equiv rc\pmod n$
- $u_1P+u_2P_A=(x,y)$
- $r’\equiv \pmod n$,判断$r’?=r$是则是A的签名
基于椭圆曲线的代理签名方案
1)初始化过程:
与椭圆曲线签名相同假定$E$是定义在有限域$F$上的一条椭圆曲线,$P\in E$是$E$中一个阶为n的点,($E,n,P$)公开
A为原始签名者,私钥$k_A$,公钥$P_A=k_AP$
2)委托过程:
原始签名人A为了将其签名权力委托给代理签名人B,且不暴露自己私钥$k_A$
选取$k_0$(random)→$k_0P$,记$Q_0=k_0P=(x_0,y_0)$,($x_0,y_0 \in F$)
计算$r_0\equiv x_0\pmod n $和$\sigma\equiv(k_A+r_0k_0)\pmod n$
然后将$\sigma$秘密的发送给B,$Q_0$公开,委托信息($\sigma,Q_0$)
代理签名者B收到委托消息后验证等式$\sigma P=P_A+r_0Q_0$
3)代理签名过程:
消息m,B选取随机数k(0<k<n),计算$kP=(x,y)$,其中$x,y \in F$
然后计算:
1、$r\equiv x\pmod n$
2、$s\equiv k^{-1}(m+r\sigma)\pmod n$,则($m,r,s,Q_0$)一起构成B对消息m的代理签名
4)验证过程:
任意验证人C收到($m,r,s,Q_0$)利用原始签名人公钥$P_A$,计算:
1、$c\equiv s^{-1}\pmod n$
2、$u_1\equiv mc\pmod n,u_2\equiv rc \pmod n$
3、$u_1P+u_2(P_A+r_0Q_0)=(x’,y’)$
4、$r’=x’\pmod n$判断$r?=r’$

安全性
1、代理签名人B不能从委托信息中获取原始签名人的私钥
椭圆曲线离散对数求解困难
2、代理签名人B也不能利用原始签名人A给的委托信息产生新的委托信息(从而冒充A发出另一委托信息给另一个人D)

3、代理签名伪造者E不能冒充B而产生消息m的代理签名,从而欺骗验证人C


由r求解k是困难的,k求解r相对容易的
记:$Q_1=sP_1-P_2$,$Q_1\in E,Q_2\in E$
可以观之安全性除了基于椭圆曲线离散对数问题的困难假设外,还基于以下两种新问题的难解性

分析:
假定椭圆曲线$E$是由基点$P$生成的循环子群,即假定$E=
$,对于$E$中任意非零点$Q$有$Q=kP$($0<k<n$)
→$r=f(Q)=f(kP)$,因为$P$是固定点,可以理解为r是k的函数,记为:$r=f_1(k)$,定义域和值域均为($0,n$)
不难看出$r->k$是困难的
而且$r$是由$x$确定的同一个$x$可能对应两个不同的点$Q_1=(x,y)$和$Q_2=(x,-y)$属于E,因此对函数$r=f_1(k)$,两个不同的k对应一个r
问题1)
问题2)
SM2签名算法
SM2代理签名



不足之处:方案的某些性质以来依赖授权证书的存在,如果没有证书,则验证者不能识别代理签名生成者的身份,若一个原始签名者授权了多个代理签名者,则这些代理签名者可以对自己生成的有效代理签名进行否认,方案不满足不可否认性。
而且,代理签名者可以利用已知信息伪造其他手授权信息和代理签名密钥,进而伪造代理签名。
改进基于SM2的代理签名方案
代理签名可以分为四大类:完全代理签名、部分代理签名、具有证书的代理签名、以及具有证书的部分代理签名

旧版本问题:


之前的代理签名将授权信息和代理签名者和原始签名者的身份信息绑定生成证书的方法确实很大程度上防止了伪造。
但是,证书的生成和验证都会降低整体的方案。


改进方案的安全性仍然是基于哈希函数的单向性和椭圆曲线离散对数问题的困难性,效率相对原始SM2代理签名效率更高。




