4-KCA验证The Knowledge of Coefficient Test and Assumption

KCA验证The Knowledge of Coefficient Test and Assumption

2019.12.06 胡振远

在多项式盲证中,Alice在未知s的情况下,通过计算E(P(s)),确实能够验证Bob拥有s,是P(x)的解。因此Alice可以向外界宣告,Bob是对的。但是如果Alice不诚实,不计算E(P(s))就直接向外宣告Bob是对的,或者宣告Bob是错的。那么Alice这种行为如何保证呢。我们需要用到KCA做检验。

KCA检验原理

我们可以这么理解KCA检验的原理,假设Bob秘密的持有一个数据\alpha,现在Alice除了需要公布E(P(s)),还需要公布E(\alpha P(s))。那么Bob就能根据E(P(s))E(\alpha P(s))计算这两者的相关性。

由于Alice不知道\alpha,如果Alice没有诚实地计算E(P(s))E(\alpha P(s)),就无法伪造一份E(\alpha P(s))

那么Bob如何把\alpha秘密地传输给Alice,而且Alice还可以在不知道\alpha的情况下,计算出 E(P(s))E(\alpha P(s))呢。

\alpha

我们定义g是群G的生成元,\alpha \cdot g表示\alphag相加。如果ab都是G中的元素,且b=\alpha \cdot a,我们称(a,b)是一个\alpha对。

按一下流程

  1. Bob首先在某个{\Bbb{F}_p^*}中选择一个\alpha,从G中选择a,然后计算b=\alpha \cdot a
  2. Bob发送这个(a,b)给Alice
  3. Alice在{\Bbb{F}_p^*}中选择一个\gamma,计算(a',b')=(\gamma \cdot a,\gamma \cdot b)
  4. 由于b'=\gamma \cdot b=\gamma \alpha \cdot a= \alpha(\gamma \cdot a) = \alpha \cdot a',因此(a',b')也是一个\alpha对。

使用\alpha对进行KCA检验

在Bob向Alice公布E(s^0),E(s^1),E(s^2),...,E(s^d)的同时,我们现在要求Bob同时Alice公布E(\alpha s^0),E(\alpha s^1),E(\alpha s^2),...,E(\alpha s^d),我们当然希望Bob公布的分别都是一个个的\alpha对。

E(s^0) E(\alpha s^0)
E(s^1) E(\alpha s^1)
E(s^2) E(\alpha s^2)
... ...
E(s^d) E(\alpha s^d)

那怎么验证他们确实都是\alpha对呢。

配对函数

配对函数e是满足如下定义的函数:

e(g^x,g^y)=e(g,g)^{xy}

如果要验证\alpha对,我们就可以判断如下等式是否成立:

e(E(f(s),g^\alpha)=e(E(\alpha f(s)),g)

A=E(f(s)),B=E(\alpha f(s))

e(A,g^\alpha)=e(g^{f(s)},g^\alpha)=e(g,g)^{\alpha f(s)}
e(B,g)=e(g^{\alpha f(s)},g)=e(g,g)^{\alpha f(s)}

因此A,B是一个\alpha对,这样也就验证了Bob公布的两组数据。

KCA检验

回到多项式盲证,为了检验Alice正确的计算了E(P(s)),现在需要Alice再计算一组E(\alpha P(s))。由于

E(\alpha P(x))=E(a_0\alpha x^0+a_1\alpha x^1+a_2\alpha x^2+...+a_d\alpha x^d)

=E(\alpha x^0)^{a_0}\cdot E(\alpha x^1)^{a_1}\cdot E(\alpha x^2)^{a_2}\cdot ... \cdot E(\alpha x^d)^{a_d}

现在Alice不光要公布E(x^0)^{a_0}\cdot E(x^1)^{a_1}\cdot E(x^2)^{a_2}\cdot ... \cdot E(x^d)^{a_d}的计算结果,同时还需要公布E(\alpha x^0)^{a_0}\cdot E(\alpha x^1)^{a_1}\cdot E(\alpha x^2)^{a_2}\cdot ... \cdot E(\alpha x^d)^{a_d}

这样Alice由于不知道\alpha,如果不经过诚实地计算,就几乎不可能向Bob公布出来这两组数据,而且这两组数据具有

\alpha对的关系。

\delta 偏移

更进一步,我们也不希望公布E(f(s)),为此Bob可以挑选\delta偏移

A=E(\delta + f(s)), B=E(\alpha(\delta + f(s)))

这样由Bob公布的数据将更加进一步得到隐藏,本文在此不再详述。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 去年在这里写了“关于比特币的5个想法”,貌似是这里的第一篇关于比特币的文章,今天在这里介绍一下比特币的协议。 本文...
    杨硕阅读 2,812评论 0 15
  • 无网问题描述及安全性分析 SmartMesh重庆智能雷电部 1.背景知识:链接支付 链接支付基于hash时间锁(H...
    rectinajh阅读 747评论 0 1
  • 加密货币,特别是比特币,几乎从各个方面都得到了大量关注:规则、管理、税务、技术、产品创新等等,不胜枚举。“点对点(...
    简闻阅读 683评论 0 9
  • 区块链这个东西是好,但区块越深,通过创建新链来替换它所需要的计算量就越大。链条越长,运行攻击的代价就越昂贵。这就是...
    AI视客阅读 346评论 0 1
  • 沾停在校门口,盯着某个方向看着,打开手机,给他去了电话。 钥匙和锁相咬合,配合出清脆的响声,顿了顿,推开门,抬眼碰...
    池池雾阅读 404评论 0 0