零知识证明基础:数字签名-基于RSA的签名方案

RSA的签名方案流程如下:

  • 1)生成公私密钥对
    ①选取两个大素数 p p p p p p,计算 n = p q n=pq n=pq n n n的欧拉函数 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n) = (p-1)(q-1) φ(n)=(p1)(q1);
    ②随机选取整数 e ( 1 < e < φ ( n ) ) e(1<e<\varphi(n)) e(1<e<φ(n))作为公钥,满足 gcd ⁡ ( e , φ ( n ) ) = 1 \gcd(e,\varphi(n))=1 gcd(e,φ(n))=1,即 e e e φ ( n ) \varphi(n) φ(n)互素;
    ③使用Euclid扩展算法计算私钥: d ≡ e − 1 m o d    φ ( n ) d \equiv e^{-1} \mod \varphi(n) de1modφ(n),即 e e e 的逆元(先选择 e e e再确定 d d d的原因是:加密的重要性大于解密的重要性)。

  • 2)签名过程
    设待签名的消息为 m m m,签名者利用安全的 H a s h Hash Hash函数产生消息摘要 h = H a s h ( m ) h=Hash(m) h=Hash(m),然后计算签名: s ≡ h d m o d    n s \equiv h^d\mod n shdmodn

  • 3)验证过程
    签名接收者收到消息 m m m和签名 s s s,计算消息摘要 h = H a s h ( m ) h=Hash(m) h=Hash(m),然后,检验等式 h m o d    n ≡ s e m o d    n h \mod n \equiv s^e \mod n hmodnsemodn。若成立,则签名有效;否则签名无效。


签名时使用 H a s h Hash Hash函数可以防止利用同态的伪造攻击,有很好的抗攻击性。
RSA签名方案存在签名可重用的问题,同一消息在不同时刻签名不应是相同的。

RSA签名方案还存在签名可重用的问题,同一消息在不同时刻签名不应是相同的。这个问题可以通过在签名中引人随机数来解决。


上一篇:蓝蜂网关接入天津粉尘涉爆企业风险监测预警系统指导案例


下一篇:漏洞挖掘基本概念及步骤介绍