第6讲《零知识证明及其安全协议构造》
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内容提要
1. 零知识证明:基本概念与形式 2. 零知识身份认证协议 3. 零知识公平性游戏协议
内容提要
1. 零知识证明:基本概念与形式
• •
基本概念 交互零知识证明
•
•
交互零知识证明例子:Q-G零知识证明协议
交互零知识证明一般形式
2. 零知识身份认证协议 3. 零知识公平性游戏协议
1.零知识证明——基本概念
《通信网安全理论与技术》课程
第六讲:零知识证明及其安全协议构造
主讲人:xxx
xxx系
2017年2月18日星期六
课程体系及主要内容——讲解内容
• • • • – – – – – • • • •
前导性 通信网安全现状、趋势与策略——第1讲 通信网技术基础与安全体系——第2讲 理论和技术基础 通信网安全基础理论与技术(密码学、攻击与防御技术)——第3讲 网络安全协议理论设计与分析 认证协议以及密钥建立协议——第4讲 特殊数字签名与阈下信道设计——第5讲 协议安全设计 零知识证明及其安全协议构造——第6讲 安全协议形式化分析与设计——第7讲 典型的网络安全协议(IPSec协议、Kerberos协议、 Radius/AAA协 议) ——第8~10讲 通信网安全保障技术——第11讲 通信安全保障 无线网络安全性增强技术(WLAN为主)——第12讲 网络防火墙与入侵防御技术——第13讲 网络安全实现方案设计与分析——第14讲 实践性
A
B
C
D
1.零知识证明——例子:Q-G零知识证明协议
•
在上述协议中,如果P不知道秘密口令,他只能从来路返回到B点, 而不能走另外一条路
•
此外, P每一次猜对V要求他走哪一条路的概率是1/2 • 因此,每一轮协议P能够欺骗V的 概率是1/2。执行n轮协议后,P成 功欺骗V的概率是1/2n • 假定n=16,则执行16轮协议后,P B 成功欺骗V的概率是1/216=1/65536 • 在该过程中,如果P能够16次按V 的要求路线返回,V即能证明P确 实知道秘密口令;同时,V无法从 上述证明过程中获取丝毫有关P的 秘密口令的消息——零知识证明 C D
4. 如果 challenge=0 , V 验证 presponse mod q 是否是 commit ;如果 challenge=1, V验证presponse mod q是否是commit ·b
输入
如果m次检验都成功,则V接受证明
承诺 P 证明者 响应 挑战 V 验证者
输入
Repeats wenku.baidu.com rounds
– – –
接收从对方发送来的消息 进行自己的计算 发送消息给对方
•
如果P要向V证明她知道某一个事实,那么先由V提问,然后P回答。在协议 的最后,V根据P是否成功地回答了他所提出的所有问题,来接受或拒绝P 证明的事实
1.零知识证明——交互证明
•
一个交互证明系统应满足如下的两个条件:
–
完备性(Completeness):若P回答正确,则V接受P的证明的概率
1.零知识证明——基本概念
•
优势:除了证明结论的正确性外,零知识证明不泄漏任何其他信息 ,因此它是构造安全协议的主要工具,可用安全协议的一部分,使 各方都能放心地执行该协议
–
RSA算法就是一种典型的零知识证明系统,用户通过让别人用它 的公开密钥来解密他用私钥加密的密文,以表明他确实拥有私钥 ,而不需把私钥实际拿出来给别人看
•
如果验证者V检查,对于每一个挑战的响应都是正确的,这个协议才 输出Accept,否则,输出 Reject
输入
承诺
输入
P
证明者
挑战
V
验证者
响应 Repeats n rounds
1.零知识证明——形式1:整数分解问题
•
设p和q两个大素数,n=pq。假设P知道n的因子,若P想让V相信 他知道n的因子,并且P不想让V知道n的因子,则他们可执行下 面的协议: 1. V随机的选取一个大整数x,计算y=x4 mod n,V将y告诉给P 2. P计算 z=y1/2 mod n,P将z告诉给V 3. V验证z=x2 mod n是否成立
B
C
D
1.零知识证明——例子:Q-G零知识证明协议
1) V 站在A点 2) P 一直走到迷宫深处,随机选择C点或者D点 3) 在 P消失后,V走到B点 4) V 向 P 喊叫,要她:从左通道 出来,或者从右通道出来 5) P答应了,如果有必要她就用秘 密口令打开密门 P 和 V重复第(1)至第(5)步 n 次
•
若我们知道某些秘密信息,如果我们想让别人相信我们知道这些秘 密信息,同时又不想让别人知道这些秘密信息是什么,那么,我们 该怎么办?
• •
解决方法——零知识证明
情形:A要向B证明自己拥有某个房间的钥匙,假设该房间只能用 钥匙打开锁,而其他任何方法都打不开。这时A怎么证明?
① A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥 有该房间的正确的钥匙 ② B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门 ,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的 钥匙
为了抵抗已知攻击,该素数一般应是超过150位的大数)
1.零知识证明——形式3:离散对数问题
•
假定:P的秘密是x<q,p、q和x对应的值b=px mod q都是公开的
•
重复以下步骤m次( p、q 、b公开;x保密):
1. P选取某一个k<q,计算commit= pk mod q,发送commit给V 2. V通过抛硬币的方式选择challenge是0或1发送给P 3. 如果challenge=0, P计算 Response=k ;如果 challenge=1,P计 算Response=(k+x) mod q,发送Response给V
•
零知识证明可分为交互式的和非交互式的两个类型
1.零知识证明——交互证明
•
有两个参与者P、V,其中P称为证明者,V称为验证者,P希望向V证明她
知道某一个事实,但是她又不愿意把事实告诉给V
• •
P和V可采用交互式证明来达到目的 交互证明是一个一问一答的协议,由若干轮构成,在每一轮中,P和V轮流 作如下工作:
1.零知识证明——例子:Q-G零知识证明协议
•
1990年,Quisquater和Guillon提出一种形象的基本零知识证明协议 的例子,如图表示一个简单的迷宫,只有知道秘密口令的人才能打 开C 和D之间的密门 • 现在,P希望向V证明P能够打开 A 此门,但是又不愿意向V泄漏P掌 握的秘密口令
•
P采用了所谓的“分隔与选择”技 术实现一个零知识证明协议
•
与之相对应的有: – 最大泄漏证明:出示或说出此事,但这也使V和A知道或掌握了这 一秘密 – 最小泄漏证明:利用数学方法,使V可检验每一步成立,最终确信 P知道其秘密,而又能保证P的秘密尽可能少泄露
• 零知识证明是现代密码学中的一个非常有趣、艺术性的研究领域, 目前在密码学中得到了广泛的应用,尤其是在认证协议、数字签名 方面
1.零知识证明——形式3:离散对数问题
•
找到两个公开的数字:一个素数q和一个整数p,定义p为素数q的一 个原根, 如果数值p mod q, p2 mod q,……, pq-1 mod q 是各不相同的整数并且以某种排列方式组成了从1到q-1的所有整数
•
对于一个整数b,可以找到一个唯一的指数i,使得
•
协议的执行过程中,V没有得到关于n的因子p和q的任何信息
1.零知识证明——形式2:平方根问题
1. 参数选取 选定一个随机模n=pq, p,q是不同的大素数。产生随机数s,使得 gcd(s,n)=1且s2=v mod n。n和v是公开的,p, q, s作为示证者P的 秘密(注意找到mod n的平方根与分解n等价) 2. 一次证明过程 • P→V:P取随机数r (< n),计算x=r2 mod n ,将x发送给验证者V • V→P :V将一随机比特b发送给P 输入 输入 承诺 • P→V: P V 挑战 – 若b=0, 则P将r发送给V 证明者 验证者 响应 – 若b=1,则P将y=rs发送给V Repeats n rounds • V: – 若b=0,则V证实x=r2 mod n,但不能证明P知道s – 若b=1,则V证实xv=y2 mod n,从而证明P知道s 3.P和V重复执行t次过程2,直到V相信P知道s为止
–
–
证明过程中,验证者V获取了多少信息?
为了让验证者V确信P要证明的事实,他们间需进行多少次交互?
•
第1个问题的理想答案是0,即:信息量为0。正是由于验证者获取的 信息量为0,所以将具有这样性质的交互式证明称为零知识协议
•
第2个问题不仅对于零知识的实际应用非常重要,而且在计算复杂性
理论中也具有重大意义
很大 有效性(Soundness):若P回答错误,则V接受P的证明的概率很小 零知识性(Zero-knowledge):无论V采取任何手段,当P的声明是 真的,P不违背协议时,V除了接受P的结论以外,得不到其他额外 的信息
– •
在零知识协议中,还满足下述性质
–
1.零知识证明——交互证明
•
在交互式证明中,有两个重要问题值得关注
b = pi mod q
–
–
其中 0≤i ≤ q-1, 0≤b≤ q-1
指数i称为b的以p为基数的模q的离散对数(i=log pb mod q)
已知p,q,i,,计算b很容易
反之,已知p,q,b,计算i很困难(应用时:p,q,b公开,i保密)
•
计算模一个素数的指数相对容易,计算离散对数很困难
–
–
小心地选择素数,对于离散对数问题目前还没有多项式时间算法
A
1.零知识证明——例子:Q-G零知识证明协议
分隔与选择(cut and choose):
•
A将蛋糕分成两半;
– –
B为自己选择其中的一半 A得到剩下的一半
A
•
A如果分割不均匀, B总能选择对 自己有利的一半——公平协议
B
C
D
1.零知识证明——一般形式
•
证明者P和验证者V共享输入 (函数或者是值)
•
方法②属于零知识证明,其好处在于在整个证明的过程中,B始 终不能看到钥匙的样子,从而避免了钥匙的泄露
1.零知识证明——基本概念
假设: • 实体:P是某些秘密信息的拥有者, V是验证者 • 任务:P想向V证明自己掌握这些秘密信息,V验证P是否真的掌握这 些秘密信息 • 零知识证明:P设法使V相信自己掌握这些秘密信息,同时又不向V 泄露这些秘密信息
知s。V受骗概率为1/2,但连续t次受骗的概率将仅为2t
–
零知识性:V无法知道P的秘密
2. 一次证明过程(n和v是公开的,p, q, s作为示证者P的秘密) • P→V:P取随机数r (< n),计算x=r2 mod n ,将x发送给验证者V • V→P :V将一随机比特b发送给P • P→V: – 若b=0, 则P将r发送给V – 若b=1,则P将y=rs发送给V • V: – 若b=0,则V证实x=r2 mod n ,但不能证明P知道s – 若b=1,则V证实xv=y2 mod n,从而证明P知道s
1.零知识证明——形式2:平方根问题
•
基于平方根问题的零知识证明协议性质:
–
完备性:如果P和V遵守协议,且P知道s,则应答rs应是模n下xv
的平方根,V接收P的证明,所以协议是完备的
–
有效性:P不知道s,他也可取r,发送x给V,V发送b给P。P可将r 送出,当b=0时则V可通过检验而受骗;当b=1时,则V可发现P不
1.零知识证明——形式3:离散对数问题
•
完备性:如果P和V遵守协议,且P知道x,很容易证明V可以接收P
的证明,所以协议是完备的
•
有效性:
–
P不知道x,他可以猜测Challenge:如果为0,则一开始就发送 commit=pk mod q给V;如果为1,则一开始就发送commit=(pk mod q)/b给V。之后总是在第三步发送k给V 。每次受骗概率为1/2 ,但连续m次受骗的概率将仅为2-m
输入 P 证明者 响应 承诺 挑战 V 验证者 Repeats n rounds 输入
1.零知识证明——形式1:整数分解
•
上述协议可重复执行多次。如果P每次都能正确地计算出y1/2 mod n ,则V就可以相信P知道n的因子p和q
•
可以证明:计算y1/2 mod n等价于对n进行因子分解
– –
如果P不知道n的因子p和q ,则计算y1/2 mod n是一个困难的问题 即:在P不知道n的因子情形下,在多次重复执行上述协议后,P 每次都能正确地计算出y1/2 mod n的概率非常小