第9章密码协议CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议2协议协议是一系列步骤它包括两方或多方设计它的目的是要完成一项任务CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议3协议特点协议中的每人都必须了解协议,并且预先知道所要完成的所有步骤。协议中的每人都必须同意遵循它。协议必须是不模糊的,每一步必须明确定义,并且不会引起误解。协议必须是完整的,对每种可能的情况必须规定具体的动作。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议4密码协议密码协议,有时也称作安全协议,是以密码学为基础的消息交换协议,其目的是在网络环境中提供各种安全服务。密码学是网络安全的基础,但网络安全不能单纯依靠安全的密码算法。安全协议是网络安全的一个重要组成部分,我们需要通过安全协议进行实体之间的认证、在实体之间安全地分配密钥或其它各种秘密、确认发送和接收的消息的非否认性等。密码协议包含某种密码算法.参与该协议的伙伴可能是朋友和完全信任的人,或者也可能是敌人和互相完全不信任的人。在协议中使用密码的目的是防止或发现偷听者和欺骗.CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议5协议的目的计算一个数值想共享它们的秘密部分共同产生随机序列确定互相的身份同时签署合同CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议6对协议的攻击被动攻击主动攻击被动骗子主动骗子协议对被动欺骗来说应该是安全的合法用户可以发觉是否有主动欺骗CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议79.5不经意传输协议设A有一个秘密,想以1/2的概率传递给B,即B有50%的机会收到这个秘密,另外50%的机会什么也没有收到,协议执行完后,B知道自己是否收到了这个秘密,但A却不知B是否收到了这个秘密。这种协议就称为不经意传输协议。例如A是机密的出售者,A列举了很多问题,意欲出售各个问题的答案,B想买其中一个问题的答案,但又不想让A知道自己买的是哪个问题的答案。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议89.5不经意传输协议1.基于大数分解问题的不经意传输协议设A想通过不经意传输协议传递给B的秘密是整数n(为两个大素数之积)的因数分解。这个问题具有普遍意义,因为任何秘密都可通过RSA加密,得到n的因数分解就可得到这个秘密。协议基于如下事实:已知某数在模n下两个不同的平方根,就可分解n。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议99.5不经意传输协议协议如下:①B随机选一数x,将x2modn发送给A。②A(掌握n=pq的分解)计算x2modn的4个平方根±x和±y,并将其中之一发送给B。由于A只知道x2modn,并不知道4个平方根中哪一个是B选的x。③B检查第②步收到的数是否与±x在模n下同余,如果是,则B没有得到任何新信息;否则B就掌握了x2modn的两个不同的平方根,从而能够分解n。而A却不知究竟是哪种情况。显然,B得到n的分解的概率是1/2。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议109.5不经意传输协议2.“多传一”的不经意传输协议设A有多个秘密,想将其中一个传递给B,使得只有B知道A传递的是哪个秘密。设A的秘密是s1,s2,…,sk,每一秘密是一比特序列。协议如下:①A告诉B一个单向函数f,但对f-1保密。②设B想得到秘密si,他在f的定义域内随机选取k个值x1,x2,…,xk,将k元组(y1,y2,…,yk)发送给A,其中jjjxjiyfxjiCopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议119.5不经意传输协议③A计算zj=f-1(yj)(j=1,2,…,k),并将zjsj(j=1,2,…,k)发送给B。④由于zi=f-1(yi)=f-1(f(xi))=xi,所以B知道zi,因此可从zisi获得si。由于B没有zj(j≠i)的信息,因此无法得到sj(j≠i),而A不知k元组(y1,y2,…,yk)中哪个是f(xi),因此无法确定B得到的是哪个秘密。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议129.6掷硬币协议在某些密码协议中要求通信双方在无第三方协助的情况下,产生一个随机序列,因为A、B之间可能存在不信任关系,因此随机序列不能由一方产生再通过电话或网络告诉另一方。这一问题可通过掷硬币协议来实现,掷硬币协议有多种实现方式,下面介绍其中的3种。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议139.6掷硬币协议1.采用平方根掷硬币协议如下:①A选择两个大素数p、q,将乘积n=pq发送给B。②B在1和n/2之间,随机选择一个整数u,计算z≡u2modn,并将z发送给A。③A计算模n下z的4个平方根±x和±y(因A知道n的分解,所以可做到),设x’是xmodn和-xmodn中较小者,y’是ymodn和-ymodn中较小者,则由于1un/2,所以u为x’和y’之一。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议149.6掷硬币协议④A猜测u=x’或u=y’,或者A找出最小的i使得x’的第i个比特与y’的第i个比特不同,A猜测u的第i个比特是0还是1。A将猜测发送给B。⑤B告诉A猜测正确或不正确,并将u的值发送给A。⑥A公开n的因子。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议159.6掷硬币协议因u是B随机选取的,A不知道u,所以要猜测u只能是计算模n下z的4个平方根,猜中的概率是1/2。再考虑B如何能欺骗A,如果B在A猜测完后能够改变u的值,则A的猜测必不正确,A可通过z≡u2modn检查出B是否改变了u的值,所以B要想改变u的值就只能在x’和y’之间进行。而B若掌握x’和y’,就可通过gcd{x’-y’,n}或gcd{x’+y’,n}求出p和q,说明B的欺骗与分解n是等价的。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议169.6掷硬币协议例9.1①A取p=3,q=7,将n=21发送给B。②B在1和21/2之间,随机选择一个整数u=2,计算z≡22modn≡4并将z=4发送给A。③A计算模21下z=4的4个平方根x=2,-x=19,y=5,-y=16,取x’=2,y’=5。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议179.6掷硬币协议④A猜测u=5并将猜测发送给B.⑤B告诉A猜测不正确,并将u=2发送给A,A检验u=2在1和21/2之间且满足4≡22mod21,A知道自己输了。⑥A公开n=21的因子p=3,q=7,B检验n=pq,知道自己赢了。CopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议189.6掷硬币协议2.利用单向函数掷硬币设A、B都知道某一单向函数f(x),但都不知道该函数的逆函数,协议如下:①B选择一个随机数x,求y=f(x)并发送给A。②A对x的奇偶性进行猜测,并将结果告诉B。③B告诉A猜测正确或不正确,并将x发送给A。由于A不知道f(x)的逆函数,因此无法通过B发过来的y得出x,即只能猜测x的奇偶性。而B若在A做出猜测以后改变x,A可通过检查出来。?yfxCopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议199.6掷硬币协议3.利用二次剩余掷硬币设n是两个大素数p、q的乘积,即n=pq。整数a满足0an和gcd(a,n)=1,则有一半的a,其Jacobi符号,而在满足的所有a中,只有一半是模n的平方剩余,而判断a是否为模n的平方剩余与分解n是等价的。1an1anCopyrightYuanEmail:hello@nuaa.edu.cn南京航空航天大学网络研究室密码协议209.6掷硬币协议协议如下:①B选择p、q,计算n=pq;再选取满足的随机数a,将n和a发送给A。②A猜测a是模n的平方剩余或非平方剩余,并将结果告诉B。③B告诉A猜测正确或不正确,并将p、q发送给A。④A检查p、q都是素数且n=pq。显然,A猜中的概率是1/2。协议执行完后,A根据p、q可求出amodn的4个平方根(如果a是模n的平方剩余),以检查B是否在A猜测完后将结果做了修改。1an