ZK-STARK:如何实现抗量子计算与隐私保护共生?

在OKChain(OK公链)的多链状态分片设计中,考虑到BLS在同一消息的聚合签名验证上仅需2次映射操作的效率优势,所以采用了基于BLS多签的改进版PBFT协议作为共识组的出块标准方案。
 

然而随着量子计算理论的快速发展,非量子安全的BLS签名方案注定只能在中短期使用,更长期的区块链演进需要能够更好抵御量子计算破解的技术。

得益于今年3月份EliBen-Sasson等研究者的工作成果,量子安全的STARK(Scalable Transparent Argument of Knowledge)技术开始变得极具吸引力,大幅减少的证明大小,使其很有希望成为适合的长期方案。
 
在提及STARK之前,我们首先需要简单介绍计算复杂性理论中的IOP(Interactive Oracle Proof)和STIK(Scalable Transparent IOP of Knowledge)。
 
IOP是一个交互式协议,参与双方为证明方(Prover)和验证方(Verifier)。验证方在每个回合随机选取随机数,而证明方根据随机数提供相应位置的谕示结果(oracle access)。

经过多个回合的交互随机查询,验证方可以对证明方的正确与否作出判定,而在这个过程里验证方无须读取证明方所构造的完整证明,而仅需依概率查询部分证明即可。如果验证方采用均匀分布来生成随机数,那么IOP可以基于Fiat-Shamir协议构造为非交互式版本。
 
具有透明(transparent)、可扩展(scalable)等特性的IOP被称为STIK,这里透明指的是验证方发出的全部消息包括向证明发提出的谕示查询都是公开随机数(即Arthur-Merlin协议),类似概率可验证明(PCP)。

可扩展表示验证方进行全部验证的时间复杂度和证明方生成证明的时间复杂度都存在一定限制,即验证方复杂度近似基本计算时间T的对数多项式时间(poly log T),而证明方复杂度接近准线性表示(T poly log T)。
 
保护隐私的STIK系统通常可以很好地支持零知识证明(zero knowledge),一般记作ZK-STIK。STARK作为STIK在证明方计算能力受约束下的一种实现,可以在STIK的基础上转化为交互式STARK(iSTARK)或非交互式STARK(nSTARK)。我们这里谈论的ZK-STARK即ZK-nSTARK。
 
在今年3月发布的《Scalable, transparent, and post-quantum secure computational integrity》论文中,Ben-Sasson等研究者构建了高效的ZK-STARK系统,将计算完整性(computational integrity)归约为Reed-Solomon编码问题,提出FRI方案(Fast Reed-Solomon Interactive Oracle Proofs of Proximity)在每步计算电路(arithmetic circuit)当中使用类似快速傅立叶变换(FFT)的方式减少原验证问题的规模实现快速计算。ZK-STARK具备几个很好的特性:
零知识证明,可保护隐私数据的安全;
非交互式,可减少参与双方的通信复杂度;
透明,无须依赖第三方可信基础设施;
可扩展,参与双方的时间复杂度都相对较低;
量子安全,STARK没有使用公私钥对映射,仅依赖抗碰撞性hash和随机谕示模型,能够抵御量子攻击。
这些特性使得ZK-STARK非常适合那些既需要互信同时又存在很多欺诈动机的应用场景,例如区块链出块验证、安全信息验证、投票系统等。

以太坊团队考虑将ZK-STARK作为其长期计划的关键技术,而由Eli Ben-Sasson与Alessandro Chiesa等人所在的StarkWare团队也正持续推进ZK-STARK技术在区块链上的应用,增强它的可扩展性和隐私保护。
相信随着ZK-STARK技术越来越完善,将其引入OKChain的共识层将会为OKChain提供更加透明的可验证信任和更加安全的隐私数据防护。