Merlin——零知识证明(2)应用篇

使用Merlin来实现一个证明协议的过程如下:
1)通过“Transcript Protocols”,将所需证明的数学对象表达为transcript messages;
2)通过“Passing Transcripts”,将transcripts传送至proving函数和verification函数中,在其中会涉及domain separation和sequential composition;
3)通过“Prover-Verifier Duality”,将描述两个交易对手如何交互地生成非交互式证明。

1. Transcript Protocol

总体来说,证明系统是基于数学对象的证明,通常牵涉到如下数学对象:有限域元素,椭圆曲线点等等,Merlin提供的是面向字节的消息API,处理的是如:transcript hashing, message framing(信息陈述)等等。
因此Merlin中的Transcript Protocol需要做的是:
将proof system层面的数学对象转换为Merlin层面的字节信息。

Transcript Protocol具体实现可分为两大步:
*1. 定义一个proof-specific的domain separator和一套标签labels for协议中特定的messages。标签必须提前设定好,不允许在运行时定义,因为运行时数据应包含在message body消息体中,而标签为协议定义的一部分。transcript可被解析的一个充分条件是所有的标签都不同且不相互依赖。(fn domain_sep(&mut self)函数。)
*2. 定义如何将数学对象转换为字节信息,如将一个椭圆权限点表达为一个字节串;或将均匀分布的challenge bytes转换为均匀分布的scalar。(fn append_point(&mut self, label: &'static [u8], point: &CompressedRistretto)fn challenge_scalar(&mut self, label: &'static [u8]) -> Scalar函数。)

git clone https://github.com/dalek-cryptography/merlin
git checkout update-rand //master中没有如上相应的trait函数。

2. Passing Transcript

Merlin将证明协议模型化为基于transcript上下文的操作。这意味着在模型的实现过程中,不能在内部创建transcript,只能将transcript以参数形式接收。
也就是说,Merlin transcripts以参数的形式在证明库所提供的proving和verification函数间传输。应用层在调用这些库函数时,需创建相应的transcript对象。

transcript创建函数需要有一个domain separation label作为输入参数。

当组合多个proof statements,可通过附加domain separator的方式来区分组合,如传递transcript到第一个proof function,然后传递该transcript到第二个proof function。第二个proof的messages和challenges将与第一个proof有关,而第一个proof的messages将与composition declaration有关。这种组合方式可在应用层实现,也可在基于不同库的proof组合实现。

3. Prover-Verifier Duality

在零知识证明过程中,可能存在可疑的参与者,不按正常行为操作;也可能存在忠诚但好奇的参与者,按正常步骤操作,但是可能会获悉额外的信息。

在Merlin中,Prover和Verifier都是执行相同的transcript操作,在初始transcript state基础上执行相同的转换。这意味着Prover和Verifier具有二元性,角色可互换。
Merlin——零知识证明(2)应用篇_第1张图片
dalek-cryptography zkp为Ristretto-based toolkit for Schnorr proofs。

参考资料:
[1] 博客Merlin——零知识证明(1)理论篇
[2] https://merlin.cool/use/index.html
[3] https://medium.com/@hdevalence/merlin-flexible-composable-transcripts-for-zero-knowledge-proofs-28d9fda22d9a

你可能感兴趣的:(Merlin——零知识证明(2)应用篇)