零知识证明二——zksnarks学习笔记

写一下最近研究零知识证明的一些理解 ,也许会有错误,不过后续会继续更新。
1、零知识证明是一种协议,任何人都可以按照这套协议实现工程,当然前提是你现实的工程无懈可击;后续我也会根据自己的写一个demo;

2、零知识证明有交互式和非交互式之分,但是非交互式并不意味着没有任何信息的传递,还是有信息的交换的,只是很少;

3、zksnarks中的多项式盲证KCA,并不是直接证明P拥有的多项式p‘(x)就是V需要的多项式p(x);它只是通过阿尔法对证明了,1、P使用的多项式p’(x)确实是一个多项式而不是指数函数,阶乘函数等其他的;2、证明了P使用的多项式p‘(x)是由V提供一些列子项的线性组合;

4、至于如何验证P使用的多项式就是V要求的,而不是P随意用的;这事靠匹诺曹协议来完成鉴定;因为如果P使用随意的多项式p’‘(x),则他和正确的多项式p(x)交集最多只有d个(d即p(x)的最高阶);而实际中x的域的取值范围F则远远大于d,所以P只有d/F的概率能够欺骗V;之前我一直以为KCA直接就完成这一步步骤,后来看了很多资料,才有所觉悟;

5、为什么要用QAP,要把一个问题转换为QAP,1、首先我觉得公式计算进行各种转换时,逻辑性更强,更严谨,也更方便转换为一个实际的工程;2、很多交互型的零知识证明就是运用NP问题,所以这里用QAP也是希望将问题和NP问题结合起来。3、密码学本身就需要数学来作为基础的,零知识证明用到QAP也就不足为奇;

6、同态隐藏,其实并不意味着一定是E(x+y)= E(x)+E(y),也可以是E(x+y)= E(x)*E(y)或者E(x+y)= E(x)/E(y);这里应该和同态加法和同态乘法的并不是完全一致的;其实指数函数就是很好的例子,f(x+y)=f(x)*f(y),有兴趣的可以自己算一下;

你可能感兴趣的:(密码学)