零知识证明协议研究
协议:F—S 身份认证协议[8] (1)P 从 0 到 n-1 中随机选取一个数 r,并计算 x=r2modn; (2)P 将 x 发送给 V; (3)V 将 c 发送给 P,其中 c 为 0 或 1; (4)P 计算 y=rsc,其中 r 是在(1)中 P 选取的一个 随机数,s 是 P 的私钥; (5)P 将 y 再发送给 V,从而证明其知道其所声 称的私钥 s; (6)V 计算 y2modn 和 xvc,如果 y2modn=xvc,则 P 或者知道 s 的值(P 是诚实的)或者 P 已经用其他的 方法计算出了 y 的值(P 是不诚实的),因为:
(2)可靠性:如果 P 对 V 的声称是假的,则 V 以
概念是由 Goldwasser 等人[1,2]在 20 世纪 80 年代初 一个大的概率拒绝 P 的声称.
提出的.从提出到现在已经有 30 多年的时间了,在
(3)零知识性:如果 P 对 V 的声称是真的,在 V
零知识证明的研究中,已经取得了许多重要的成 没有违反协议的前提下,则无论 V 采用任何方法,
(6)证明者 P 和验证者 V 可以反复执行(1)~(5)
n 轮.
在上述的零知识洞穴的例子中,若 P 没有掌握
秘密通道的咒语,则他只能从他原来进入通道的一
侧出来.若 P 靠猜测,在整个协议执行的 n 轮过程
中,P 在每一轮中均能按照 V 的要求从相应的一侧
出来的概率只有
1 2n
.经过 16
轮后,P 只有
质上是一种涉及两方的协议,其中的一方称为证明 1<x<n-1.
者,一般用 P 表示,另一方称为验证者,一般用 V 2.3.2 大整数分解问题
表示.在协议的执行过程中,证明者 P 向验证者 V
大整数分解问题是指,给定两个素数 p,q,计算
声称其已经掌握了某种信息,证明者 P 和验证者 V 乘积 p*q=n 很容易;但是,反过来给定整数 n,求 n
协议:数独的零知识证明协议[5] 证明者: (1)证明者随机选择一个置换 σ:{1,2,…,9}a{1,2, …,9}; (2)对于每个单元(i,j)的值 v,证明者发送 σ(v)给 验证者; 验证者: 验证者随机选择下列可能性中的一种:或者一 行、或者一列、或者一个子网格,或直接打开已经填 充好的一个单元格,并要求证明者公开相应的承诺. 当验证者做出回应后, 如果验证者选择了一行、一 列或一个子网格,验证者检查其中的所有的值是否 确实是不同的.如果验证者选择的是直接打开已经 填充好的一个单元格,验证者将所填充的单元格中 的数据与证明者所发送的数据做比较,与原来相同 的现在仍然相同,与原来不同的现在仍然不同,这 样就可以说明 σ 的确是单元格中所填充数字的一 种置换. 3.3 多项式函数根的零知识证明协议 多项式函数是数学中许多重要研究内容之一, 在计算机科学中,多项式函数的研究也有着举足轻 重的作用. 假如 P 已经知道了某个整系数高次 f(x) 的一个整数根 x0,现在他想向 V 证明自己已经知道 了多项式函数 f(x)的某一个根,但又不想让 V 了解 有关 x0 的任何相关信息,这个问题就是多项式函 数根的零知识证明问题.假设某整系数高次多项式
由 Quisquater 等人[4]最先给出了有关零知识证 明解释的通俗例子,如图 1 所示,在位置 C 与位置 D 之间有一个秘密的通道,而这个秘密通道只有知 道相应咒语的人才可以通过.如果证明者 P 知道通 过秘密通道的咒语,他如何在不泄露咒语的前提下 向验证者 V 证明他知道咒语呢?可以按照如下协 议的步骤执行:
n
Σ 函数 f(x)= aixi,其主要证明过程如下: i=0 协议:多项式函数根的零知识证明协议[6]
-7-
(1)P 与 V 共同选取 p 和 Z*p 的生成元 α;
i
x
(2)P 计算 βi=α modp,(i=1,2,…,n),并将所计算 的 βi 返回给 V;
(3)V 要求 p 证明他拥有一个数 x0,使得 βi≡βxi-01 (modp),(i=1,2,…,n);
摘 要:在当代密码学中,零知识证明占据着重要的位置.已经成为信息安全领域身份认证的关键技术
之一,吸引了许多学者的注意,并得到了一系列的重要研究成果.文章首先阐述了零知识证明的主要思想、
零知识证明协议的性质以及零知识证明协议所主要基于的几类数学问题.接着,着重研究了零知识证明在
相关问题中的应用.最后,对本文进行了总结,以期能够吸引更多的学者在更广泛的领域对零知识证明协议
2 零知识证明相关概念
于密码学中的公钥密码体制,都是主要基于如下几
2.1 零知识证明的主要思想
类数学问题的.
ห้องสมุดไป่ตู้
零知识证明指的的就是一方(证明者)能够在不 2.3.1 模 n 平方根问题
向另一方(验证者)提供任何有用的信息的前提下,
设 n 是一个正整数,若存在一个 x,使得 x2≡y
也能使得另一方能够相信某个论断是正确的.其本 (modn),则称 x 是 y 的模 n 平方根.其中:1<y<n-1,
第 30 卷 第 4 期(上) 2014 年 4 月
赤 峰 学 院 学 报( 自 然 科 学 版 ) Journal of Chifeng University(Natural Science Edition)
Vol. 30 No.4 Apr. 2014
零知识证明协议研究
张引兵, 王 慧
(淮北师范大学 数学科学学院, 安徽 淮北 235000)
进行研究.
关键词:密码学;零知识证明;数独;多项式函数根;身份认证
中图分类号:TP393.08 文献标识码:A
DOI:10.13398/ki.issn1673-260x.2014.07.004
文章编号:1673-260X(2014)04-0006-04
1 引言
一个大的概率接受 P 的声称.
“零知识证明”-zero-knowledge proof,这一
图的同构问题:有两个图 G0(V0,E0)和 G1(V1,E1), 其中这两个图的顶点数和边数都相同,并且存在一 个置换 π,当(u,v)∈E0 时,(π(u),π(v))∈E1,则称图 G0 和图 G1 同构,记作 G1=πG0.
协议:图的同构的零知识证明协议[7] 公共输入:初始化数据:两个图 G0(V0,E0)和 G1 (V1,E1),并且 G0=φ(G1) 使用独立的随机掷币协议执行如下 4 步 m 轮. (1)P 随机选择一个置换 π 生成图 G0 的一个置 换图 H,即:H=π(G0),并将 H 发送给 V; (2)V 随机选择 α∈{0,1},并将 α 发送给 P; (3)如果 α=0,P 将置换 π 发送给 V;否则,如果 α≠0,P 将置换 π·φ-1 发送给 V; (4)V 验证 H=ψ (Gα)(其中当 α=0 时,ψ=π;当 α≠0 时,ψ=π·φ-1)是否成立,若成立则继续,否则, 拒绝 P 的声称. 如果如上协议成功执行了 m 轮,V 则接受 P 的证明. 在上述协议中,若 P 确实掌握了图 G0 和图 G1 的同构关系 G1=φ (G0),则对所有的置换 πφ 总有 H=π(G0)=π(φ(G1)),又因为置换 π 是随机选择的,所 以整个过程中没有泄露有关置换 覬 的任何信息.又 因为 V 要求证明 H 与图 G0 同构或与图 G1 同构是 随机的,所以 P 只有掌握了置换 φ 才能或者证明 (H,G0)同构或者证明(H,G1)同构. 3.5 身份认证中的零知识证明—F-S 身份认证协 议 在密码学中,零知识证明最早是作为实体认证 的一种方法进行应用的.Fiat 和 Shamir 在 1986 年 首先给出了这种身份认证的零知识证明方法,也就
所掌握信息的具体内容,这是一种全新的思想.
解大整数问题将是非常困难的.
2.2 零知识证明协议的性质
2.3.3 离散对数问题
一般说来,一个零知识证明协议应该下面三个
离散对数问题指的是整数中一种基于同余运
条件:
算和原根的对数运算,也可以按照如下方式进行简
(1)可行性:如果 P 对 V 的声称是真的,则 V 以 单描述:任意给定一个质数 p,和有限域 Zp 上的一
-8-
是 F-S 认证协议.F-S 认证协议一般不单独应用于 现在的认证系统中,但它当今应用的零知识证明身 份 认 证 系 统 的 基 础 , 像 Feige-Fiat-Shamir 和 Guillou-Quisquater 中,都用到了 F-S 认证协议.
在 F-S 认证协议中,首先找一个证明者和验证 者两方都信任的第三方,第三方选取两个大的素数 p 和 q,然后计算 n=p×q,其中 n 的值是公开的,而 p 和 q 的值是不公开的.P 选取一个私钥 s (1≤s≤ n-1),接着计算 v=s mod n,将 v 作为公钥由可信的 第三方保存.V 可以按照如下步骤对 P 进行认证:
x
(4)P 证明自己拥有 n 个表达式 βi≡βi-1 (modp),
0
(i=1,2,…,n)同时成立的解 x=x0,由于 β0=αx0 =α 是 Z*p 的生成元,因而这是可行的;
n
仪 (5)V 进一步验证 (βi)αi≡1(modp); i=0
(6)重复执行(1) ̄(5)k 轮. 3.4 图论中的零知识证明—图的同构的零知识证 明协议
果,但仍有许多问题有待进一步的研究,近年来已 V 除了能够接受 P 的声称外,而无法获有关 P 所声
经成为密码学研究中的热点问题之一.零知识证明 称内容的任何信息[3].
的思想是许多密码学协议的基础,在安全协议的设 2.3 零知识证明协议主要基于的几类数学问题
计中有着比较广泛的应用.
通常零知识证明协议所基于的数学问题,类似
65536 分
之一的机会猜中.若进过 16 轮的验证,P 在每一轮中
均能按照 V 的要求从相应的一侧出来,那么 V 就可