Lumino仪式技术解析(一)——椭圆曲线

Lumino仪式已经进行了将近20天,官方及社区爱好者在多个方面介绍了活动情况及参与方式[1][2]。根据官方的详解,Lumino的意义在于通过安全多方计算的方式来共同生成零知识证明算法的系统参数。那么,零知识证明与PlatON隐私AI网络到底有着什么样的关系,会怎样在隐私AI中发挥作用呢?同时,椭圆曲线、bn254、bsl12-381、PLONK这些带着技术面纱的专有名词,该如何去理解呢?

接下来,cross团队将为大家带来尽可能通俗的讲解。当然,这些问题要解释清楚,有很大的信息量,因此我们会通过一个系列文章来说明。本篇会向大家简单说明Lumino仪式对于隐私AI网络的重大意义,同时对关键点之一椭圆曲线进行讲解。

Lumino仪式的意义

Lumino将通过安全多方计算来生成零知识证明算法的系统参数。在区块链领域,零知识证明在链下计算验证(例如Filecoin在复制证明中使用了zkSNARK零知识证明进行了压缩[3])、多方隐私交互(Zcash基于zkSNARK零知识证明实现了秘密交易和去中心化共存[4])中发挥着非常重要的作用。

PlatON隐私ai计算网络的密码学技术体系,包括安全多方计算、同态加密、可验证计算等,在PlatON官方发布的总体架构[5]中,公布了“ PlatON的可验证方案暂时基于zk-SNARK (零知识证明) 算法 ,后续逐步替换为更优化算法”,因此,可以推断,Lumino仪式,是PlatON本阶段可验证方案落地的重要步骤。

可验证计算在去中心化协同计算环境中发挥着很重要的作用,简单的讲,其可以为相互不可信的多个参与方,提供协同计算的可信基础设施。当前,intel和ARM分别通过SGX[6]和Trustzone[7]在硬件层面实现了可信计算环境,部分与隐私计算相关的区块链项目,也尝试了集成intel SGX作为链下可信计算环境,将intel作为其隐私安全的核心保障,能够在一定程度上解决链下计算可验证的问题,但其认证过程需要在intel中心服务器中完成,从区块链技术发展的时代角度讲,可以作为该领域的一种过渡技术。

PlatON可验证计算所采用的底层零知识证明技术体系,能够以去中心化的密码学技术手段,在不可信环境中,为参与者提供可信计算的技术基础,不再需中心化的权威第三方参与,而Lumino仪式的启动,就意味着该技术已经开始真正走向实施落地。

椭圆曲线

Lumino仪式中提到了零知识证明相关的两条椭圆曲线(BN254、BLS12-381),本文将在接下来对椭圆曲线进行一个通俗的讲解, 关于椭圆曲线在零知识证明中的应用技术细节,将在后续文章中详述

椭圆曲线并不是椭圆,被称为椭圆曲线的原因,是因为它们与计算椭圆周长的方程相似,实数域上的椭圆曲线一般表达式为:

公式1

在密码学领域一般采用如下简化形式:

公式2

其图像一般长这样:

曲线图像

椭圆曲线的成名之战,是费马大定理的证明[8]。1970年与1975年之间,Yves Hellegouarch观察到费马曲线和椭圆曲线之间有着奇妙的联系。1985年Gerhard Frey引进现在称为Frey椭圆曲线,证明了如果费马大定理成立,则Frey椭圆曲线不存在。最终普林斯顿大学天才数学家Andrew John Wiles沿着该思路完成了证明[9]。

在密码学领域,椭圆曲线最早应用于公钥密码学,与RSA相比,其诱人之处在于,可以使用比RSA短的多的密钥得到相同的安全性,因此可以减少处理负荷。椭圆曲线随后被应用到零知识证明,在区块链早期,Zcash的零知识证明,使用了椭圆曲线BN254[10](现在已更新为BLS12-381[11])。

椭圆曲线上定义的加法运算俗称打点,其原理示意如下(在密码中,会通过取模转化成有限域进行计算,此处为了理解上的直观,仅考虑实数曲线上的操作即可):

两点打点

椭圆曲线加法运算,定义了如果曲线上的三个点在一条直线上,则其“和”为0。即上图中,A+B+C’=0。某个点以x轴对称的点为其“负”点,即上图中B关于x轴对称的点为-B。由于椭圆曲线关于x轴对称,因此曲线上的每个点对应的“负”点也在曲线上,例如上图中-C’=C。减法运算的示意如上图中,A-B=A+(-B)=D,同时,可以验证B+D=A,所以在此定义下,减法运算也是加法运算的“逆”运算。

乘法计算的定义为迭代相加,俗称迭代打点,例如4P=P+P+P+P。其中,P+P的结果为沿P点的切线打点(密码学中的常用方式)。3P为P+P打点的结果,再与点P相连进行打点,以此类推。具体示意如下:

切线打点

椭圆曲线加解密算法

下面是椭圆曲线应用于公钥密码学的加解密过程的一种简化案例[12]:

  1. Alice选定一条椭圆曲线E,选择曲线上一点作为基点G;
  2. Alice随机生成一个私钥k,并生成公钥P=kG;
  3. Alice将椭圆曲线E、基点G和公钥P发送给Bob;
  4. Bob接收到信息后,将待传输的明文数据编码到椭圆曲线E上的一个点M,并产生一个随机数r( Bob不能公开r );
  5. Bob计算点C1=M+rP;C2=rG;
  6. Bob将C1、C2传给Alice;
  7. Alice接收到C1和C2后,利用自己的私钥k计算计算C1-kC2可得M。具体为:C1-kC2=M+rP-k(rG)=M+rP-r(kG)=M+rP-rP=M;
  8. Alice对点M进行解码即可获得明文。

通信过程中,Alice向Bob公开传输的信息为椭圆曲线E、基点G和公钥P,通过G和P求解私钥k是困难的;而Bob向Alice公开传输的信息为密文C1和C2,同理,通过C2和G求解r是困难的,这也进一步使得通过C1、P求解M是困难的。

Lumino中的椭圆曲线

椭圆曲线[14]后来被用于zkSNARK算法,在Lumino仪式中,其零知识证明用到了BN254、BLS12-381两条椭圆曲线。

BN254在设计之初,具有128-bit安全等级,由于后续攻击算法的进步,有研究[13]表明其安全等级可能被降到110-bit。BN254是Zcash零知识证明zkSNARK中最早使用的椭圆曲线,于2017年更换成了具有更好安全级别、同时拥有更高计算效率的BLS12-381。关于这两种椭圆曲线,及其与零知识证明的关系,将在后续系列文章中详细讲解。

总结

Lumino是PlatON践行隐私ai计算网络的一小步,但却是密码学技术体系进一步走向应用落地、帮助用户数据主权得以保护的一大步。

注:该仪式的参与方式以及操作方法详见[1][2]。

参考文献

[1]https://mp.weixin.qq.com/s/guCmTltyEGX8xM8jnA4FYg

[2]Lumino多方安全计算平台的使用

[3]https://spec.filecoin.io/

[4]https://github.com/Zcash/mpc/blob/master/whitepaper.pdf

[5]总体架构 | PlatON

[6]https://software.intel.com/content/www/cn/zh/develop/topics/software-guard-extensions.html

[7]Documentation – Arm Developer

[8]解答数学“大问题”——证明费马大定理的故事----中国科学院

[9]http://scienzamedia.uniroma2.it/~eal/Wiles-Fermat.pdf

[10]PEREIRA G C C F, JR M A S, NAEHRIG M, etal. A family of implementation-friendly BN elliptic curves[J]. Journal of Systems and Software, 2011, 84(8): 1319-1326.

[11] ARANHA D F, FUENTES-CASTAÑEDA L, KNAPP E, etal. Implementing pairings at the 192-bit security level[C]//The 5th International Conference on Pairing-Based Cryptography, May 16-18, 2012, Cologne, Germany. Heidelberg: Springer-Verlag, 2012: 177-195.

[12]《区块链理论与方法》袁勇,王飞跃。

[13]Menezes, A., Sarkar, P., & Singh, S. (2016, December). Challenges with assessing the impact of NFS advances on the security of pairing-based cryptography. In International Conference on Cryptology in Malaysia (pp. 83-108). Springer, Cham.
[14]Elliptic Curve Cryptography: a gentle introduction - Andrea Corbellini

7 个赞

写的很好啊~社区很需要这样的技术科普:)