• 零知识证明(Zero Knowledge Proof,ZKP)


    零知识证明(Zero Knowledge Proof,ZKP)并非新鲜事物,其概念初见于1985年的论文《互动证明系统的知识复杂性》。ZKP是一种密码学技术,允许两方(证明者和验证者)来证明某个提议是真实的,而且无须泄漏除了它是真实的之外的任何信息。在密码学货币和区块链中,这通常是指交易信息数据。

    有人借用最简单的阿拉伯童话《一千零一夜》对零知识证明做了通俗、形象的介绍。阿里巴巴掌握着让芝麻开门的咒语。强盗向他拷问打开山洞石门的咒语时,他不想让人听到咒语,于是想了个好办法。他对强盗说:“你们离我一箭之地,用弓箭指着我。你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门。如果我做不到或逃跑,你们就用弓箭射死我。”强盗们同意了,因为这能帮助他们搞清楚阿里巴巴到底是否知道咒语这个问题。强盗举起了右手,只见阿里巴巴的嘴动了几下,石门果真打开了。强盗举起了左手,阿里巴巴的嘴动了几下后石门又关上了。强盗还是有点不信,说不准这是巧合呢。于是不断地换着节奏举右手、举左手,石门跟着他们的节奏开开关关。最后强盗们想,如果还认为这只是巧合,自己未免是个傻瓜,那还是还是相信阿里巴巴吧。这就是最简单易懂的零知识证明。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。

    零知识证明具有以下3条性质:

    ①完备性。如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。

    ②合理性。没有人能够假冒证明方,使这个证明成功。

    ③零知识性。证明过程执行完之后,验证方只获得了“证明方拥有该知识”这条信息,而没有获得关于该知识本身的任何一点信息。

    零知识证明及其有关协议的主要优点:

    ①随着零知识证明的使用,安全性不会降级,因为该证明具有零知识性质。

    ②高效性。该过程计算量小,双方交换的信息量少。

    ③安全性依赖于未解决的数学难题,如离散对数、大整数因子分解、平方根等。

    ④许多零知识证明相关的技术避免了直接使用有政府限制的加密算法,这就给相关产品的出口带来了优势。

  • 相关阅读:
    CompletableFuture使用
    ThreadLocal(Java)
    Java多线程高并发(读写锁ReentrantReadWriteLock)
    Java post和get请求的封装(copy直接用)
    Java多线程死锁举例
    Java Socket分发服务负载均衡
    CountDownLatch倒计时器
    Java数据结构(线性表-->顺序表简单实现)
    JavaFuture模式
    matplotlib总结
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312813.html
Copyright © 2020-2023  润新知