【密码学】第六章、数字签名

基本概念

  • 数字签名
    • 用于对消息进行签名,以防消息的伪造或者篡改,也可用于鉴别通信双方的身份
    • 可以做到身份认证保持数据完整性不可否认性

特性

  • 可信
    • 可验证签名的有效性
  • 不可伪造
    • 除合法签名者,其他人伪造签名是困难的
  • 不可复制
    • 一个消息的签名不能复制为另一个消息的签名。
  • 不可改变
    • 签名后的消息不能被篡改
  • 不可抵赖
    • 签名者事后不能否认自己的签名

RSA数字签名

体制参数(重要

  • 选取大素数pq100-200位十进制数字);
  • 计算n=pq,其欧拉函数为:
    ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n)=(p-1)(q-1) ϕ(n)=(p1)(q1)
  • 随机选取一整数e,保证:
    1 ≤ e < ϕ ( n ) , g c d ( ϕ ( n ) , e ) = 1 1 \leq e < \phi(n),gcd(\phi(n),e)=1 1e<ϕ(n)gcd(ϕ(n),e)=1
  • 计算e的逆元d
    d = e − 1 ( m o d ϕ ) ( n ) d=e^{-1}\pmod \phi(n) d=e1(modϕ)(n)
  • ne为公钥,d为私钥。

签名

  • 设消息为m
    m ∈ Z n , s ≡ ( m o d n ) m\in Z_n,s\equiv \pmod n mZn,s(modn)

验证

  • 接收方收到消息m和签名s
    m = = s d ( m o d n ) m==s^d\pmod n m==sd(modn)
  • 成立则有效。

安全性

困难问题

  • 大数分解

缺点

情景一

对 任 意 y ∈ Z n 可 计 算 x ≡ y e ( m o d n ) 对任意y\in Z_n\\ 可计算x\equiv y^e\pmod n yZnxye(modn)

  • 任何人可伪造对随机消息x的签名。
情景二

H a c k e r   g o t   s i g n e d   m e s s a g e   x 1 , x 2 y 1 ≡ x 1 e ( m o d n ) y 2 ≡ x 2 e ( m o d n ) T h e   s i g n a t u r e   y 1 y 2   o f   m e s s a g e   x 1 x 2   c a n   b e   f o r g e d Hacker\ got\ signed\ message\ x_1,x_2\\ y_1\equiv x_1^e\pmod{n}\\ y_2\equiv x_2^e\pmod{n}\\ The\ signature\ y_1y_2\ of\ message\ x_1x_2\ can\ be\ forged Hacker got signed message x1,x2y1x1e(modn)y2x2e(modn)The signature y1y2 of message x1x2 can be forged

情景三
  • 签名速度慢
解决方案
  • 签名之前求消息的哈希值

一般化描述

M e s s a g e : m P r i v a t e   k e y : x P u b l i c   k e y : y S i g n a t u r e   a l g o r i t h m : s ≡ S i g x ( m ) V e r i f i c a t i o n   a l g o r i t h m : V e r y ( s , m ) V e r y ( s , m ) = { T r u e   s = S i g x ( m ) F a l s e   s ≠ S i g x ( m ) Message:m\\ Private\ key:x\\ Public\ key:y\\ Signature\ algorithm:s\equiv Sig_x(m)\\ Verification\ algorithm:Ver_y(s,m)\\ Ver_y(s,m)=\left\{ \begin{aligned} True\ s=Sig_x(m)\\ False\ s\neq Sig_x(m) \end{aligned} \right. MessagemPrivate keyxPublic keyySignature algorithmsSigx(m)Verification algorithmVery(s,m)Very(s,m)={True s=Sigx(m)False s=Sigx(m)

  • 安全性
    • 通过ms难以:求x或者伪造m’使得m’s验证为真。

DSS

密钥生成

S e l e c t   p r i m e   p : 2 L − 1 < p < 2 L 512 ≤ L ≤ 1024 , 64 ∣ L S e l e c t   p r i m e   q : q ∣ p − 1 , 2 159 < q < 2 1 60 S e l e c t   g e n e r a t o r   g : g ≡ h ( p − 1 ) / q ( m o d p ) 1 < h < p − 1 , h ( p − 1 ) / q ( m o d p ) > 1 R a n d o m l y   s e l e c t   x : 0 < x < q , y = g x ( m o d p ) Select\ prime\ p:2^{L-1}<p<2^L\\ 512\leq L\leq 1024,64|L\\ Select\ prime\ q:q|p-1,2^{159}<q<2^160\\ Select\ generator\ g:g\equiv h^{(p-1)/q}\pmod{p}\\ 1<h<p-1,h^{(p-1)/q}\pmod{p}>1\\ Randomly\ select\ x:0<x<q,y=g^x\pmod{p}\\ Select prime p2L1<p<2L512L1024,64LSelect prime qqp1,2159<q<2160Select generator ggh(p1)/q(modp)1<h<p1,h(p1)/q(modp)>1Randomly select x0<x<q,y=gx(modp)

  • 公开参数:pqg
  • 公钥:y
  • 私钥:x

签名

  • 随机选取一个整数k,满足0<k<q
  • 计算:
    r = ( g k ( m o d p ) ) ( m o d q ) s = k − 1 ( h ( m ) + x r ) ( m o d q ) r=(g^k\pmod{p})\pmod{q}\\ s=k^{-1}(h(m)+xr)\pmod{q} r=(gk(modp))(modq)s=k1(h(m)+xr)(modq)
  • 消息m的签名为(r,s)

h为哈希函数,DSS中其为SHA-1

验证

  • 计算:
    w = s − 1 ( m o d q ) u 1 = h ( m ) w ( m o d q ) u 2 = r w ( m o d q ) v = ( g u 1 y u 2 ( m o d p ) ) ( m o d q ) w=s^{-1}\pmod{q}\\ u_1=h(m)w\pmod{q}\\ u_2=rw\pmod{q}\\ v=(g^{u_1}y^{u_2}\pmod{p})\pmod{q} w=s1(modq)u1=h(m)w(modq)u2=rw(modq)v=(gu1yu2(modp))(modq)
  • 验证v=r,等式成立则为有效签名

ElGamal签名体制

体制参数

  • 大素数p
  • 生成元g
  • 密钥x
  • 公钥y=g^x mod p

签名

k ∈ Z p − 1 ∗ S i g ( m , k ) = ( r , s ) r = g k ( m o d p ) s = k − 1 ( H ( m ) − x r ) ( m o d p − 1 ) k\in Z^*_{p-1}\\ Sig(m,k)=(r,s)\\ r=g^k\pmod{p}\\ s=k^{-1}(H(m)-xr)\pmod{p-1} kZp1Sig(m,k)=(r,s)r=gk(modp)s=k1(H(m)xr)(modp1)

验证

y r r s ≡ g H ( m ) ( m o d p ) y^rr^s\equiv g^{H(m)}\pmod{p} yrrsgH(m)(modp)

交互证明系统

  • 概念
    • P知道某一秘密(如公钥密码体制的秘密钥或一平方剩余x的平方根),P希望使V相信自己的确掌握这一秘密。
  • 方法
    • 每轮V都向P发出一询问,PV做出一应答。
    • 所有轮执行完后,V根据P是否在每一轮对自己发出的询问都能正确应答,以决定是否接受P的证明。
  • 要求
    • 完备性
      • P知道秘密,V则接受证明。
    • 可靠性
      • P以一定概率使V接受证明,则P知道相应的秘密。

Fiat-Shamir身份识别方案

  • 证明者P
  • 验证者V

协议

1. P   r a n d o m l y   s e l e c t   r ( 0 < r < n ) , C a l c u l a t e   a ≡ r 2 ( m o d n ) , s e n d   a   t o   V 2. V   r a n d o m l y   s e l e c t   e ∈ { 0 , 1 } , s e n d   e   t o   P 3. P   c a l c u l a t e   b ≡ r y e ( m o d n ) , s e n d   b   t o   V 4. I f   b 2 ≡ a x e ( m o d n ) , t h e n   V   a c c e p t   v e r i f i c a t i o n 1.P\ randomly\ select\ r(0<r<n),\\ Calculate\ a\equiv r^2\pmod{n},send\ a\ to\ V\\ 2.V\ randomly\ select\ e\in\{0,1\},send\ e\ to\ P\\ 3.P\ calculate\ b\equiv ry^e\pmod{n},send\ b\ to\ V\\ 4.If\ b^2\equiv ax^e\pmod{n},then\ V\ accept\ verification 1.P randomly select r(0<r<n)Calculate ar2(modn)send a to V2.V randomly select e{0,1}send e to P3.P calculate brye(modn)send b to V4.If b2axe(modn)then V accept verification

  1. P申明自己知道a的平方根。
  2. eV询问
  3. bP对询问的应答

性质

  • 完备性
    • PV遵守协议,若P知道y则应答正确,V接受证明。
  • 可靠性
    • 假冒者最高能以1/2的概率欺骗。
    • 通过执行多次降低欺骗率。

Schnorr身份识别方案

体制参数

  • pq是大素数,且q|(p-1)

q至少140位,p至少512位。

  • gq阶元。
    g q ≡ 1 ( m o d p ) g^q\equiv 1\pmod{p} gq1(modp)
  • h是输出t位的单向函数

t安全参数

  • 公钥y和私钥x
    y = g − x ( m o d p ) y=g^{-x}\pmod p y=gx(modp)

pqhy公开,x保密。

签名&验证

P → V : r ≡ g k ( m o d p ) , 1 ≤ k ≤ q − 1 V → P : e = H ( r , m ) P → V : s = k + x e ( m o d q ) V : r = = g s × y e ( m o d p ) P\rightarrow V:r\equiv g^k\pmod{p},1\leq k\leq q-1\\ V\rightarrow P:e=H(r,m)\\ P\rightarrow V:s=k+xe\pmod{q}\\ V:r==g^s\times y^e\pmod{p} PV:rgk(modp),1kq1VP:e=H(r,m)PV:s=k+xe(modq)V:r==gs×ye(modp)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值