上一篇介绍了盲计算,所谓盲计算,就是Alice在不知道s的状况下完成多项式计算。测试
那么,Bob如何肯定Alice的计算结果是正确的呢?要实现这一目标,须要先介绍一个概念:α对。.net
在有限循环群G中,若是,那么就称
为一个α对。cdn
也就是说,b是a的α倍(模p)。有了这个概念,就能够进行一项"系数知识测试":blog
Bob秘密选一个随机的α值,生成一个α对:ci
Bob把这个α对发送给Aliceit
Alice须要回复一个不一样的α对:io
Bob验证是否是一个α对,若是是则接受该回复class
乍一看有点迷糊,既然,那Alice不就是能够反推出α等于多少了吗?请注意:这里的乘法是模p乘法。举个例子就清楚了:bfc
假设Bob选定,那么
,因此最终生成的α对是
,Alice无法反推出α的值是多少(在p很是大的状况下,这是一个离散对数难题)。循环
既然Alice不知道α,那么她就只有一种方法能够生成新的α对:给a和b各乘上同一个系数。
举个例子,假设Alice秘密选定,那么新生成的α对:
Bob收到这个新的α对以后,验证
,接受该回复。
也就是说,Alice秘密持有,Bob秘密持有
。跟上一篇文章中的图拼到一块儿:
这就是所谓的"系数知识假设",英文是"Knowledge of Coefficient Assumption",简称KCA。一句话归纳:所谓KCA,指的是若是Alice成功回复了一个α对,那么她必定持有某个使得
。