知识签名(signature of knowledge)

定义

签名者利用数学知识和公共信息,非交互和不泄露某个秘密的情况下,向别人证明他知道这个秘密。

常见的知识签名有三种:

    • 离散对数的知识签名
    • 双离散对数的知识签名
    • 离散对数e次方根的知识签名

离散对数的知识签名

离散对数的知识签名的符号表示是:

是针对如下问题提出的:y = g^x mod(n); x是私钥,y是公钥,g和n都是公开的系统参数,m是消息

现在需要让其他人证明自己拥有私钥x。

如何证明呢?

只要知识签名者给出一个(c,s)对,符合如下等式就能证明自己拥有私钥x。

c = H(m||y||g||(g^s) (y^c))

操作过程

    1. 选择一个随机数 r;
    2. 计算c:根据公式c=H(m||y||g||g^r)
    3. 计算s:根据公式 s = r - c * x
    4. (c,s)即为知识签名。

解释说明

如果知道密钥x,执行通过上面操作过程中的四个步骤就可以轻松计算出(c,s)对的值,

如果不知道密钥x,而想算出(c,s),只能通过3式计算,这在计算上是不可行的。

所以,如果能给出一个满足条件的(c,s)对,就能说明其拥有私钥x。

双离散对数的知识签名

理解了离散对数的知识签名,后面这两个知识签名的思想完全一样,只是形式上稍微复杂一点点。

双离散对数的知识签名的符号表示为:

它是针对如下问题提出:


y是公钥,g,α,n都是公开的系统参数,m是消息。只要给出(c,s1,s2,……sk),满足如下等式就表示自己拥有私钥x。


操作过程

解释说明

和离散对数的签名的“解释说明”类似,拥有私钥x,就可以根据“操作过程”中的步骤计算出(c,s1,s2,……sk),如果不知道私钥x,在计算上来说不太可能计算出满足条件的(c,s1,s2,……sk)对。

离散对数e次方根的知识签名

离散对数e次方根的知识签名的符号表示为:

它是针对如下问题提出的:
y是公钥,g,e,n是公开的系统参数,β是对于的私钥,m是消息。现需要证明自己拥有私钥β。
如果能给出(c, s1, s2……sk),满足如下等式,则说明自己拥有私钥。

操作过程:


解释说明

“解释说明”和前面的解释说明类似。


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值