零知识证明 | 3.什么是KCA系数知识假设?

上一篇介绍了盲计算,所谓盲计算,就是Alice在不知道s的情况下完成多项式计算。

那么,Bob如何确定Alice的计算结果是正确的呢?要实现这一目标,需要先介绍一个概念:α对

在有限循环群G中,如果,那么就称为一个α对。

也就是说,b是a的α倍(模p)。有了这个概念,就可以进行一项"系数知识测试":

  • Bob秘密选一个随机的α值,生成一个α对:

  • Bob把这个α对发送给Alice

  • Alice需要回复一个不同的α对:

  • Bob验证是不是一个α对,如果是则接受该回复

乍一看有点迷糊,既然,那Alice不就是可以反推出α等于多少了吗?请注意:这里的乘法是模p乘法。举个例子就清楚了:

假设Bob选定,那么,所以最终生成的α对是,Alice没法反推出α的值是多少(在p非常大的情况下,这是一个离散对数难题)。

既然Alice不知道α,那么她就只有一种方法可以生成新的α对:给a和b各乘上同一个系数。

举个例子,假设Alice秘密选定,那么新生成的α对:

Bob收到这个新的α对之后,验证,接受该回复。

也就是说,Alice秘密持有Bob秘密持有。跟上一篇文章中的图拼到一起:

这就是所谓的"系数知识假设",英文是"Knowledge of Coefficient Assumption",简称KCA。一句话概括:所谓KCA,指的是如果Alice成功回复了一个α对,那么她一定持有某个使得

转载于:https://juejin.im/post/5cdb8bfcf265da035f6ffb55

你可能感兴趣的:(零知识证明 | 3.什么是KCA系数知识假设?)