Cointime

扫码下载App
iOS & Android

一文读懂零知识证明技术的发展简史

零知识证明是一种极为巧妙的密码学方法,它允许证明者在不泄露真实信息的前提下,向验证者证明自己确实掌握这个信息。

零知识证明技术运作示例图

这一技术理念最早由MIT的研究人员在1980年代末提出。但直到近些年区块链技术的兴起,零知识证明才真正得以在实际中广泛应用。

本文将简要梳理零知识证明技术的发展历史和基本原理。  

密码学发展历史可以分为古典时期、近代和现代三个阶段。古典密码学起源于军事领域,重点在于如何安全可靠地传递信息。维吉尼亚密码采用多重替代密码表实现加密,大大提高了破解难度。近代密码学从信息论出发,由香农等人将其转向科学化。RSA算法的提出标志着进入现代密码学时代,解决了密钥传送问题。

零知识证明的提出,开启了现代密码学研究的新篇章。

1985年,Goldreich、Micali、Wigderson发表的gbc协议实现了交互式零知识证明。1991年,Fiat和Shamir提出将交互式零知识证明转换为非交互式证明的方法。1994年,PICCS协议缩短了证明长度。随后诞生的SNARK、STARK等不同类型零知识证明也各有特点。随着区块链的出现,其应用获得快速发展。

零知识证明允许证明者在不泄露真实信息的前提下,向验证者证明自己确实掌握这个信息。其基本理念可以用一个数独游戏来解释。证明者Alice设计数独题给验证者Bob,Bob无法解出。为证明自己有答案,Alice准备81张写有1-9的纸卡,根据题面卡字朝上排列,根据答案卡字朝下按9×9矩阵排列。Bob随机抽取行或列进行验证,Alice根据Bob的选择重新排列卡片,使Bob验证行或列确实满足数独要求,重复多轮直至Bob确信Alice有答案。

历史上,零知识证明技术经历了从“交互证明系统”到“非交互证明系统”的发展过程。早期的证明系统需要证明者和验证者之间多轮的“问与答”来实现证明过程。这种交互方式效率低下而且不方便。于是研究者提出了非交互证明系统,事先由一个可信第三方生成验证参数,证明者只需根据这些参数构造证明并发送给验证者一次即可,无需多轮交互。这大大提高了效率。

当前最常见的零知识证明协议是zkSNARK。它通过将计算机代码拍平、引入约束系统、使用椭圆曲线加密等一系列技术手段,最终将证明和验证完全分割开来。验证者无需知道解就能验证证明者按要求进行了正确计算。

zkSNARK概念图

zkSNARK在效率、数据量等方面也衍生出多种不同的算法,如Sonic、Plonk等。随着专用硬件的发展,零知识证明的运算成本有望大幅降低。

zk-STARK概念图

另一种零知识证明协议是zk-STARK。不同于zkSNARK依赖特定数学难题假设的安全性,zk-STARK基于密码学散列函数,其安全性更接近于确定性。但zk-STARK的证明大小更大,效率较低。随着算法不断优化,zk-STARK正朝着实用方向发展。

零知识证明技术在保护隐私数据方面有巨大价值。它已经在许多区块链项目中得到应用,如隐私币Zcash、Layer 2解决方案zkRollup等。随着技术不断进步,零知识证明必将给区块链世界带来更多可能性。

未来可期待其在更多场景中发挥作用,如金融交易、医疗数据、数字身份等方面。它也将促进区块链的扩容和分层架构的发展。当前的挑战包括需求大规模可信设置、效率和使用门槛等。随着专用硬件的进步和协议标准化,零知识证明有望在区块链的未来发挥更大作用。

评论

所有评论

推荐阅读