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

Posted TurkeyCock

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零知识证明|3.什么是KCA系数知识假设?相关的知识,希望对你有一定的参考价值。

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

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

在有限循环群G中,如果 α , β ≠ 0 且 b = α ⋅ a \\alpha, \\beta \\neq 0 且 b = \\alpha \\cdot a α,β̸=0b=αa,那么就称 ( a , b ) (a,b) (a,b)为一个α对。

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

  • Bob秘密选一个随机的α值,生成一个α对: ( a , b ) = ( a , α ⋅ a ) (a,b) = (a,\\alpha \\cdot a) (a,b)=(a,αa)

  • Bob把这个α对 ( a , b ) (a,b) (a,b)发送给Alice

  • Alice需要回复一个不同的α对: ( a ′ , b ′ ) (a', b') (a,b)

  • Bob验证 ( a ′ , b ′ ) (a',b') (a,b)是不是一个α对,如果是则接受该回复

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

假设Bob选定 a = 2 , α = 4 a=2, \\alpha=4 a=2,α=4,那么 b = α ⋅ a = 4 ⋅ 2 ∣ m o d 7 = 1 b=\\alpha \\cdot a=4 \\cdot 2|_mod7=1 b=αa=42mod7=1,所以最终生成的α对是 ( 2 , 1 ) (2,1) (2,1),Alice没法反推出α的值是多少(在p非常大的情况下,这是一个离散对数难题)。

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

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

( a ′ , b ′ ) = ( γ ⋅ a , γ ⋅ b ) = ( 5 ⋅ 2 ∣ m o d 7 , 5 ⋅ 1 ∣ m o d 7 ) = ( 3 , 5 ) (a',b')=(\\gamma \\cdot a, \\gamma \\cdot b)=(5 \\cdot 2|_mod7, 5 \\cdot 1|_mod7) = (3, 5) (a,b)=(γa,γb)=(52mod7,51mod7)=(3,5)

Bob收到这个新的α对 ( a ′ , b ′ ) (a',b') (a,b)之后,验证 α ⋅ a ′ = 4 ⋅ 3 ∣ m o d 7 = 12 ∣ m o d 7 = 5 = b ′ \\alpha \\cdot a' = 4 \\cdot 3|_mod7 = 12|_mod7 = 5 = b' αa=43mod7=12mod7=5=b,接受该回复。

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

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

更多文章欢迎关注“鑫鑫点灯”专栏:https://blog.csdn.net/turkeycock
或关注飞久微信公众号:

以上是关于零知识证明|3.什么是KCA系数知识假设?的主要内容,如果未能解决你的问题,请参考以下文章

递归零知识证明

递归零知识证明

零知识证明|1.什么是同态隐藏?

零知识证明|1.什么是同态隐藏?

《区块链100问》第58集:零知识证明是什么?

知识点复习(持续更新版)