区块链隐私保护密码技术介绍

  • 时间: 2020-03-05
  • 地点: 视频会议
  • 主讲: 郁昱, 上海交通大学

清华王小云老师团队组织的一个区块链学术报告, 报告人郁昱老师在密码学顶会里非常高产...

区块链中密码技术简介

区块链中密码技术主要作用于以下几个方面:

  • Hash 函数和数字签名
  • 数据的 Hash 链 + 分布式共识算法保证了区块链上数据的不可篡改
  • 数字签名
    • 授权. 数字资产, 业务处理权等于签名公钥关联, 只有公钥的 owner 可以产生签名
    • 数字签名保证了处于共识进行过程中的业务数据的完整性和不可否认性

区块链的隐私保护问题

以比特币为例, 比特币的交易基本结构为

  • 每个交易产生一个或多个交易输出(TXO), 同时消费一个或多个之前的交易输出
  • 每个 TXO 属于/关联到一个签名公钥, 并记录交易金额
  • 一个交易输入要消费一个之前的 TXO, 必须提供授权证明(该 TXO 的公钥验证通过的数字签名)

比特币所有公钥的历史消费记录均可以公开取得, 但无法轻易地关联到现实中的人. 但目前通过一些技术分析依然可以完成定位, 比如大部分交易所的地址均已经被标记.

区块链的隐私保护主要挑战在于隐私保护与区块链数据公开可验证是冲突的. 隐私保护主要有三个手段:

  • 隐藏交易输出去向(相对容易, 例如采用一次性地址)
  • 隐藏交易输入来源
    • 新交易要消费之前的一个 TXO, 需要在这个新交易中包含可公开验证的, 对该 TXO 消费的授权证明, 而这导致了此新交易与该 TXO 之间的可追踪性
    • 每个 TXO 只能被消费一次也必须公开可验证
  • 隐藏交易金额

目前有一些非密码技术手段可用于解决以上问题:

  • 使用一次性地址
  • 混币, 切断/隐藏交易之间的关联关系(类似现实中的洗钱)
    • 混币. 基于中介服务
    • 洗币. 用户间自主交互
    • Dash

另外基于密码技术有两个非常典型的技术路线:

  • Menero(门罗币)
  • Zcash

Menero

  • 隐形地址(公钥派生算法), 文章: https://cryptonote.org/whitepaper.pdf. 付款人不用于收款人交互, 从收款人的主公钥计算出一次性的派生公钥, 收款人不必与付款人交互, 自行计算出派生公钥对应的私钥. 派生公钥公开, 但(直观上)不泄露其主公钥, 从同一主共公钥的派生公钥也不会被关联起来, 达到了隐藏输出的目的. 存在效率问题: 收款人需要判断链上的每一个交易是否属于他
  • 可链接环签
    • 隐藏交易输入消费的真实 TXO, 切断交易间的可追踪性
    • 匿名集, 隐私水平 1-out-of-n, 达到的隐私级别取决于匿名集的大小
  • 承诺和零知识证明(零知识是万能的!)

此处大量关于门罗采用技术的数学证明简介, 略过

Zcash

Zcash 的核心技术是 zk-SNARKs.

  • 每个交易输出: 承诺 owner 的公钥, 币值, 随机数
  • 承诺的 hiding: 公钥与币值不被泄露
  • 链上所有的承诺组成一个集合 S
  • 当一个用户要消费一个他的币, 把其中的币值转移到新的承诺(交易输出)中时, 需要用他所知道的该币的币值, 随机数, 公钥地址和相应的密钥, 调用 zk-SNARKs 产生该交易的一个证据
  • 证据可被任何人公开验证
    • 产生证据的人知道 S 中某一个承诺的全部信息和密钥, 且
    • 该承诺没有被之前的交易消费过
    • 该承诺中的币值与交易产生的新承诺中的币值维持平衡
    • 证据不会泄露"所消费的承诺是 S 中的一个"之外关于被消费的承诺信息
    • 证据不会泄露被消费承诺对应的 owner 公钥, 币值, 随机数和私钥的任何信息
    • 证据不会泄露新产生的承诺

感想

个人由于没有受过系统的学术训练和缺少对常用数学工具的认知, 听该报告只能完全忽略其中的数学证明部分, 但对于眼界的拓展仍然有意义.

我很早就了解到门罗币, 把它的浏览器挖矿脚本植入在自己的一些网站中, 也曾听说过它是暗网交易所使用的排名第二的数字货币. 门罗这个团队在数学证明还不完备的情况下就于 2015 年匆匆推出这个项目然后发币, 虽说赚了很多钱但从今天看来其后劲明显不足. 快钱一时爽, 一直快钱一直爽.