零知识证明
解释零知识证明的通俗例子是洞穴问题。
如图:有一个洞,设P知道咒语,可打开C和D 之间的秘密门,不知道者都将走入死胡同中,那 么P如何向V出示证明使其相信他知道这个秘密, 但又不告诉V有关咒语。
零知识证明
P如何使V相信自己掌握了洞穴的秘密: 1)V站在A点。 2)P进入洞中任意一点C或D。 3)当P进洞之后,V走到B点。 4)V叫P:“从左边出来”或“从右边出来”。 5)P按要求实现。 6)P和V重复执行(1)~(5)共n次。
n
公开信息 (A, XA) (B, XB) xB (C, XC) xC …… ……
私有信息 xA
零知识证明
“验证身份(authentication)”问题
假设A想向B表明身份,最简单的办法: (1) A把xA告诉给B。 (2) B验证xA^2 = XA (mod n)是否成立。 但这样做之后,B知道xA,B可以伪装成A和其他用户 通信。我们需要用到“零知识证明”。
密码的历史几乎和人类使用文字的历史一样长 公元前2000年,古埃及人 象形文字
1.
密码学发展的三个阶段 1949年之前,密码学是一门艺术 古典密码
1883年Kerchoffs第一次明确的提出了编码的原则:加密算 法应建立在算法公开且不影响明文和密钥安全的基础上
2.
1949-1975年,密码学开始由艺术转变为科学 近代密 码
私有信息 xA
一组用户A, B, C,…每个用户都有一个私有信息。 假如A想向B表明身份: (1) A向B证明他(她)知道xA。 (2) A不希望泄露xA。
零知识证明 “验证身份(authentication)”问题