密码学-数字签名

数字签名

数字签名概述

特征
  • 验证签名者、签名日期和时间
  • 认证被签名消息内容
  • 能够由第三方仲裁

数字签名具有认证功能,具有可验证性和不伪造性

攻击
  • 唯密钥攻击

攻击者知道公钥

  • 已知消息攻击

攻击者掌握一些<消息签名>对

  • 一般选择消息攻击

攻击者选择一些消息获得签名,不针对特定签名者

  • 定向选择消息攻击

攻击者掌握公钥,选择一些消息获得签名,针对特定签名者

  • 适应性选择消息攻击

攻击者选择与已知<消息签名>对相关的消息获得签名

攻击方案

  • 完全破译

获得私钥

  • 通用伪造

伪造对任意消息的签名

  • 选择性伪造

伪造对特定消息的签名

  • 存在性伪造

至少可以生成一个消息的有效签名

ElGamal数字签名方案

ELGamal安全性基于有限域上离散对数问题的难解性。

参数
  • 素数 p p p
  • 生成元 α \alpha α
  • 私钥 1 < X A < p − 1 1<X_A<p-1 1<XA<p1
  • 公钥 Y A = α A X m o d    p Y_A=\alpha ^ X_A\mod p YA=αAXmodp
签名
  • 选择 1 ⩽ K ⩽ p − 1 , gcd ⁡ ( K , p ) = 1 1\leqslant K\leqslant p-1,\gcd(K,p)=1 1Kp1,gcd(K,p)=1
  • S 1 = α K m o d    p S_1=\alpha ^K\mod p S1=αKmodp
  • S 2 = K − 1 ( m − X A S 1 ) m o d    p − 1 S_2=K^{-1}(m-X_AS_1)\mod p-1 S2=K1(mXAS1)modp1
  • 签名 ( S 1 , S 2 ) (S_1,S_2) (S1,S2)
验证
  • V 1 = α m m o d    p V_1=\alpha ^m\mod p V1=αmmodp
  • V 2 = Y A S 1 S 1 S 2 m o d    p V_2={Y_A}^{S_1}{S_1}^{S_2}\mod p V2=YAS1S1S2modp
  • 验证 V 1 = V 2 V_1=V_2 V1=V2

Schnorr数字签名方案

Schnorr安全性基于有限域上离散对数问题的难解性。

安全性较ElGamal更低,但计算效率更高。

参数
  • 素数 p p p

    • 1024位
  • 素数 q q q,满足 q   ∣   p − 1 q~|~p-1 q  p1

  • 选择 α \alpha α,满足 α q = 1 m o d    p \alpha ^q=1\mod p αq=1modp

  • 私钥 1 < X A < q 1<X_A<q 1<XA<q

  • 公钥 Y A = α − X A m o d    p Y_A=\alpha ^ {-X_A}\mod p YA=αXAmodp

签名
  • 选择 0 < r < q 0<r<q 0<r<q,计算 x = α r m o d    p x=\alpha ^ r\mod p x=αrmodp
  • e = H a s h ( M   ∣ ∣   e ) e=Hash(M~||~e) e=Hash(M  e)
  • y = ( r + X A e ) m o d    q y=(r+X_Ae)\mod q y=(r+XAe)modq
  • 签名 ( e , y ) (e,y) (e,y)
验证
  • x ′ = α y Y A e m o d    p x'=\alpha ^ y{Y_A}^e\mod p x=αyYAemodp
  • 验证 e = H a s h ( M   ∣   x ′ ) e=Hash(M~|~x') e=Hash(M  x)

椭圆曲线数字签名算法

安全性基于椭圆曲线上离散对数问题难解性。

参数
  • 素数 p p p
  • 椭圆曲线参数 a , b a,b a,b
  • 基点 G G G
  • 基点的阶 n n n
  • 私钥 1 ⩽ X A ⩽ n − 1 1\leqslant X_A\leqslant n-1 1XAn1
  • 公钥 Y A = X A G Y_A=X_AG YA=XAG
签名
  • 选择 0 < k < n 0<k<n 0<k<n
  • P = k G = ( x , y ) , r = x m o d    n P=kG=(x,y),r=x\mod n P=kG=(x,y)r=xmodn
  • e = H a s h ( m ) e=Hash(m) e=Hash(m)
  • s = k − 1 ( e + X A r ) m o d    n s=k^{-1}(e+X_Ar)\mod n s=k1(e+XAr)modn
  • 签名 ( r , s ) (r,s) (r,s)
验证
  • 验证 0 < r , s < n 0<r,s<n 0<r,s<n
  • e = H a s h ( m ) e=Hash(m) e=Hash(m)
  • w = s − 1 m o d    n w=s^{-1}\mod n w=s1modn
  • u 1 = e w , u 2 = r w u_1=ew,u_2=rw u1=ew,u2=rw
  • X = u 1 G + u 2 Q = ( x ′ , y ′ ) X=u_1G+u_2Q=(x',y') X=u1G+u2Q=(x,y)
  • v = x ′ m o d    n v=x'\mod n v=xmodn
  • 验证 v = r v=r v=r
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值