ElGamal、Schnorr数字签名方案

数字签名方案-ElGamal、Schnorr数字签名方案

数字签名简介

  • 特征

    • 它必须能验证签名者、签名日期和时间
    • 它必须能够认证被签的消息内容
    • 签名应能由第三方仲裁,以解决争执

    因此数字签名具有认证功能

  • 攻击和伪造
    • 唯密钥攻击
    • 已知消息攻击
    • 一般选择消息攻击
    • 定向选择消息攻击
    • 适应性选择消息攻击
    • 完全破译
    • 通用伪造
    • 选择伪造
    • 存在性伪造
  • 数字签名需求
    • 签名必须是与消息相关的二进制串
    • 签名必须使用发送方某些独有的信息,以防伪造和否认
    • 产生数字签名比较容易
    • 识别和验证签名比较容易
    • 伪造数字签名在计算机上是不行的。
    • 保存数字签名的副本是可行
  • 直接数字签名
    直接数字签名指只涉及通信双方(发送方和接收方)的数字签名方案

ElGamal数字签名方案

基于离散对数求解的困难性,使用私钥进行加密,公钥进行解密

算法描述

  • 生成密钥 KeyGen:
    |p| = 1024, Zp* = , x ∈ Zp-1, y = g^x mod p
    pk = (g, p, y)
    sk = x
  • 签名 Sign
    随机数 r ∈ Zp-1
    S1 = g^r mod p
    S2 = (m - x*S1)r^-1 mod (p-1)
    签名对:(m, (S1, S2))
  • 认证 Verify
    验证等式 g^m = y^s1 * S1^S2 mod p 是否成立
    (任何人都可以验证)

Schnorr数字签名方案

基于离散对数求解的困难性,将生成签名所需的消息计算量最小化

算法描述

  • 生成密钥 KeyGen:
    |p| = 1024
    q: q|p-1, |q| = 160
    g ∈ Zp*, g^q = 1 mod p
    H:{0,1}* ->{0, 1}^160 (->公开的Hash函数)
    y = g^-x mod p
    x ∈ Zq*
    pk = (p, q, g, y, H)
    sk = x
  • 签名 Sign
    随机数 r ∈ Zq*
    H(m||g^r mod p) = e
    s = (r + x*e) mod q
    签名对:(m, (s, e))
  • 认证 Verify
    验证等式 e = H(m||g^s*y^e mod p) 是否成立
    (任何人都可以验证)

对比ElGamal和Schnorr

  • 安全性:Schnorr的安全性小于ElGamal(更容易找到x)
  • 时间效率上:Schnorr耗费的时间更少
  • 空间效率上:Schnorr耗费的空间更少

用RSA产生数字签名方案

用发送方的私钥将该Hash码加密形成签名,然后发送消息及其签名。接收方收到消息,计算Hash码,接收方用发送方的公钥对签名解密,如果计算出Hash码与解密出的结果相同,则认为签名是有效的。因为只有发送方拥有私钥,所以只有发送方能够产生有效的签名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值