您好!刚知道Zcash吗?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

语言

重新访问 Pay-to-sudoku

Sean Bowe | Jun 08, 2017

去年,我开展了一个叫做 pay-to-sudoku 的项目,这是全球首个面世的 零知识或有支付 (ZKCP) 解决方案。ZKCP 是 Gregory Maxwell 在 2011 年发明的,这是一种非常巧妙的加密方法,用户通过这种方法可以通过区块链在原子级交易信息和价值。在 2016 年金融密码会议上,Gregory 演示了这种方法

在 pay-to-sudoku 中,一名用户(“买家”)可以向另一名用户(“卖家”)付款来解答数独谜题。卖家解答谜题后,用密钥对解答进行加密,然后进行哈希运算。使用零知识证明 ― 在这个例子中,zk-SNARK使用 libsnark ― 卖家可以构造一份他们找到了谜题解答的证明,不过,解答经过了加密,需要知道特定的 SHA256 哈希值才能进行解密。

买家继续向区块链提交付款,从而让卖家可以获得金钱回报,作为交换,买家可以获得解密 SHA256 原像的信息(密钥)。卖家提供密钥后,买家即可解密。

为了利用 zk-SNARK 实现这一目的,买家需要负责构建一个通用的引用字符串 (CRS),以便卖家对证明进行评估。Campanelli、Gennaro、Goldfeder 和 Nizzardo 不久前发布了一篇 新论文 ,其中确定了 pay-to-sudoku 使用 PGHR 在 libsnark 中构建实现的一个缺点。特别是,它假设 CRS 的代数结构正确,其结果是买家有可能违反零知识原则,在没有付款的情况下获得解答信息。

请注意,即使 MPC 的所有参与者不诚实,Zcash 的公共参数也不会受到这种恶意行为的影响,因为 多方计算记录 可以保证 CRS 的正确性。该论文中也说明了这一点。

当使用第三方 CRS 时,可以采取几个步骤来缓解这个问题。就像我们对 Zcash 的公共参数采取的措施一样,这些措施足以保证使用多方计算协议正确构建参数。只要不允许 CRS 中出现不正确的结构,就足以防范论文中所讲的特定攻击。作为一项额外的预防措施,可在构建后验证证据!

该论文还提出了一些其他有意思的观点,例如,通过扩展 ZKCP 的概念来购买数字服务,而不是数字商品(如 sudoku 解决方案)。

ZKCP, cryptography, zkSNARKs | 查看所有标签