zoukankan      html  css  js  c++  java
  • 知识签名(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),满足如下等式,则说明自己拥有私钥。         

             操作过程:

             

             解释说明

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

     


  • 相关阅读:
    中高级PHP程序员应该掌握哪些技术
    如何在FOXMAIL添加网易邮箱
    subline text 3快捷键
    【sublime】sublime Text 3 javaScript代码自动提示插件&安装步骤 &启动Debug模式
    PHPStorm常用快捷键
    怎么样快速修改HOSTS文件?让火绒等小工具来帮忙
    windows系统 右键新建菜单添加新建php文件
    给初学编程的人的干货
    安装Adobe Dreamweaver CC时出现安装失败及解决方法
    win10系统每次打开软件都会弹出账户控制如何解决
  • 原文地址:https://www.cnblogs.com/java20130722/p/3207076.html
Copyright © 2011-2022 走看看