1、第五讲:数字签名与阈下信道设计,主讲人:xxxxxxx系2018年5月9日星期三,通信网安全理论与技术课程,实践性,通信安全保障,协议安全设计,理论和技术基础,前导性,8. 课程体系及主要内容讲解内容,通信网安全现状、趋势与策略第1讲通信网技术基础与安全体系第2讲通信网安全基础理论与技术(密码学、攻击与防御技术)第3讲网络安全协议理论设计与分析认证协议以及密钥建立协议第4讲数字签名与阈下信道设计第5讲零知识证明及其安全协议构造第6讲安全协议分析与设计第7讲典型的网络安全协议(IPSec协议、Kerberos协议、 Radius/AAA协议) 第810讲通信网安全保障技术第11讲无线网络安全性增
2、强技术(WLAN为主)第12讲网络防火墙与入侵防御技术第13讲网络安全实现方案设计与分析第14讲,内容提要,数字签名基本概念典型的数字签名算法数字签名标准(DSS)特殊数字签名阈下信道设计,内容提要,数字签名基本概念典型的数字签名算法数字签名标准(DSS)特殊数字签名阈下信道设计,数字签名基本概念动机与需求,日常生活中我们经常遇到手写签名的情况,例如:写信后,签署自己的名字在银行提款,也需要签署姓名在商务谈判协议,也需要签名这些签名的用途在于:信件末尾的签名,用于表名写信人的身份提款时的签名,作为提款人的身份认证商务协议上的签名,具有法律效应,可作为以后单方面违反协议后的司法处理证据,数字签名
3、基本概念动机与需求,签名的目的:使信息的收方能够对公正的第三方(双方事先委托的仲裁者)证明其内容的真实性,而且是由指定的发送方发出的发送方事后不能根据自己的利益来否认报文的内容接收方也不能根据自己的利益来伪造报文的内容,数字签名基本概念动机与需求,中国首例电子邮件案:1996年4月9日,北京大学研究生薛某收到美国密执安大学通过互联网发给她的电子邮件,告知该校将为她提供1.8万美元的奖学金,但她却久等不见正式通知后。薛某经过多方查证,最后证实是同寝室的张某从中作梗。张某以薛某的名义伪造电子邮件,使她失去出国深造的机会,如果邮件的发送附加了可防伪和可追踪的数字签名,也许本案就不会发生了,数字签名基
4、本概念动机与需求,在网络环境下,通信双方可能出现以下欺骗(假定A发送一条信息给B):B伪造一个不同的消息,但声称是从A收到的A可以否认发过该消息,B无法证明A确实发了该消息通信网也需类似的签名机制数字签名,以防止出现上述情形与传统的手写签名类似,它应满足以下条件:签名可信:收方可以确认是由发方签名的签名不可伪造签名不可重用:签名是消息的一部分,不能把签名移到其它消息上签名不可抵赖签名后的消息不能篡改,数字签名基本概念与消息认证的关系,数字签名 vs 消息认证消息认证:实现消息的真实性和完整性,其作用:保护通信双方以防第三方的攻击,但不能保护通信双方中的一方防止另一方的欺骗或伪造数字签名:实现消
5、息的不可否认性在通信双方未建立起完全的信任关系且存在利害冲突的情况下,单纯的消息认证就显得不够,有时,实现数字签名的同时,也可实现对消息来源的认证,数字签名基本概念应用,数字签名最早的应用之一用来禁止对核试验条约的验证美国和前苏联互相允许把地震测试仪放入另一个国家,以便对核试验进行监控每个国家需要确信监控国没有篡改从被监控国的地震仪传来的数据同时监控国要确信监测器只发送规定的需要监测的消息日常应用:对电子文档签名(例如:商用软件ID-Sign for Office),数字签名基本概念认识误区,数字签名 纸上签名数字签名应用 签名算法数字签名 文件加密数字签名 防止打印数字签名 防止拷贝,数字签
6、名基本概念典型签名算法,目前已有大量的数字签名算法,如:RSA签名算法ElGamal签名算法Fiat-Shamir签名算法Guillou-Quisquarter签名算法Schnorr签名算法Ong-Schnorr-Shamir签名算法美国数字签名标准/算法(DSS/DSA)椭圆曲线签名算法有限自动机算法.等,数字签名基本概念与加密、认证实现的区别,数字签名基本概念实现原理,数字签名实质就是把一个特定的数据与某个人相关联,该数据代表这个人它包括两个部分:签名和验证签名,其实现原理如下图:,数字签名基本概念实现原理,消息和数字签名一起发给接受者。接受者通过签名来确定发送者的身份以及数据的完整性,内
7、容提要,数字签名基本概念典型的数字签名算法数字签名标准(DSS)特殊数字签名阈下信道设计,典型的数字签名算法,比较经典的数字签名算法:RSA签名算法ElGamal签名算法RSA签名算法提出的时间比较早,并且一直到现在,以其为基础的应用都还在使用ElGamal签名算法的变型算法之一,就是后来的数字签名算法(DSA),典型的数字签名算法1RSA数字签名,参数选择: 选择两个满足需要的大素数p和q,计算n=pq, (n)= (p-1)(q-1),其中(n)是n的欧拉函数值 选一个整数e, 满足1e(n),且gcd(n),e)=1;通过de1mod(n),计算出d 以e,n为公开密钥,d,n为秘密密钥
8、,典型的数字签名算法1RSA数字签名,签名过程假设签名者为Bob,则只有Bob知道秘密密钥d, n设需要签名的消息为m,则签名者Bob通过如下计算对m签名:s m d mod n(m, s)为对消息m的签名:Bob在公共媒体上宣称他发布了消息m ,同时把对m的签名s置于消息后用于公众验证签名,典型的数字签名算法1RSA数字签名,验证过程。公众在看到消息m和对其签名s后,利用Bob的公开验证密钥e, n对消息进行验证公众计算: m se mod n是否成立?若成立,则Bob的签名有效,即公众认为消息m的确是Bob所发布,且消息内容没有被篡改公众可以容易鉴别发布人发布的消息的完整性,典型的数字签名
9、算法1对RSA数字签名的攻击,原始RSA签名算法是有缺陷的,它是对整个消息的签名假设攻击者Eve能得到Bob对多个消息的签名,伪造过程:,若已知: (1)Bob对消息M1的签名为S1,即S1M1d mod n; (2)Bob对消息M2的签名为S2,即S2M2d mod n;则攻击者Eve可以构造消息M3=M1*M2的签名S3,即: S3= M3d=(M1*M2)dmodnS2*S1,虽然说在已知M1、M2的情况下,M3往往只是一个数值,一般来说是没有意义的,但不排除有意义的可能性,故导致了算法的不安全,典型的数字签名算法1对RSA数字签名的改进,RSA+Hash函数:选用一个安全散列函数H()
10、,其改进如下:签名过程 设需签名的消息为m,签名者Bob通过如下计算对其签名: sH(m)d mod n (m, s)为对消息m的签名验证过程 在收到消息m和签名s后,验证: H(m) se mod n ? 若成立,则发送方的签名有效,防止伪造签名的原理在于:当M3=M1*M2时,H(M3)= H(M1)* H(M1)一般不成立,当前国际通行的两大散列函数:MD5:常用的128位的消息摘要SHA和SHA1:160位的消息摘要,典型的数字签名算法1对RSA数字签名的改进,改进型RSA签名(RSA+散列函数)消息摘要+RSA:将消息按散列算法计算得到一个固定位数的消息摘要值(是对压缩消息的签名)对
11、消息摘要值用发送者的私有密钥加密,所产生的密文即称数字签名。然后该数字签名同原消息一起发送给接收者接收方收到消息和数字签名后,用同样的散列算法对消息计算摘要值,然后与用发送者的公开密钥对数字签名进行解密,将解密后的结果与计算的摘要值相比较。如相等则说明报文确实来自发送者,典型的数字签名算法1对RSA数字签名的讨论,前面两个签名方案,消息本身在发送过程中是明文形式,所以它们仅提供消息来源认证而未提供消息保密性为了进一步提供保密性,可在散列函数之后或之前进行一次加密,即:先签名后加密先加密后签名,典型的数字签名算法1对RSA数字签名的讨论,先签名后加密:假定Alice希望发送一个签名的加密消息给B
12、ob给定明文m ,Alice将计算她的签名s SigAlice(m) 然后使用Bob的公开密钥PKb加密m和s,获得密文c=(m,s)PKb ,密文将被传送至Bob当Bob接收到密文c后,他首先使用私钥SKb解密获得(m,s),然后使用Alice的公开验证算法来验证VerAlice(m, s)?,典型的数字签名算法1对RSA数字签名的讨论,先加密后签名:如果Alice首先加密m,然后对加密结果签名会怎样呢?她将计算c=(m)PKb和s SigAlice(c) ,并将把(c, s)发送给BobBob用VerAlice来验证对c的签名,然后解密c,获得m这种方法存在一个潜在的问题,即不能确定发送方
13、身份:若Eve获得了(c, s),他就用他自己的签名s SigEve (c)来替换Alice的签名,并将(c, s)发送给BobBob将用VerEve来验证Eve的签名s而非s,Bob可能由此推断明文m来自Eve,典型的数字签名算法1对RSA数字签名的讨论,基于RSA这种非对称密码体制的签名称为通用签名,即签名者使用它的私钥签名,其它人可用它的公钥对其进行验证为了保证公钥的可靠性,每个签名方必须在一个指定的登记处公布和登记他的公开密钥,例如CA(验证机构)同时,为了解决可能的争议,收发双方以及仲裁者(第三方)需要共享有关报文的验证信息(如消息摘要),当发生争议时,由仲裁者提供证据,与通用签名相
14、对应的,特殊数字签名有:盲签名、代理签名、群签名、不可否认签名等,它与具体应用环境密切相关,它的安全性与RSA密码体制的一样:素数p和q应该足够大,使得对于给定它们的乘积n,若事先不知道q或p,分解n是计算上不可行的对于短期安全性,n的长度至少应为1024位;而长期安全性则要求n至少为2048位,典型的数字签名算法1RSA签名 vs 加密,RSA签名和RSA加密的异同点相同点:都使用一对密钥:公钥和私钥不同点:RSA加密:用公钥加密,用私钥解密(多对一)RSA签名:用私钥签名,用公钥验证(一对多)RSA签名属于确定性数字签名,即明文与密文一一对应,它对一特定消息的签名不变化(使用签名者的密钥签
15、名)对应地,还有非确定性数字签名(即:随机化的或概率式数字签名),即对同一消息的签名是随机变化的,取决于签名算法中的随机参数和取值,典型的数字签名算法2ElGamal签名,与Schnorr数字签名算法一样,都是基于离散对数难题的ElGamal签名于1985年提出,其改进型之一成为美国国家标准技术研究所NIST(National Institute of Standards and Technology)提出的DSA(digital signature Algorithm)算法的基础ELGamal签名是一种非确定性的公钥密码体制,即对同一明文消息,因选择不同的随机参数而有不同的签名相关参数:,选
16、择大素数p、q (其中q是p-1或p-1的大素数因子)选择 g(其值介于1和p之间,且满足gq 1 mod p,称其为域Z*p生成元)私钥 x(小于q)公钥 y(满足y= gx mod p) 可公开信息:y, g, p,典型的数字签名算法2ElGamal签名,初始化:首先选择一个大素数p,使在Zp中求解离散对数困难。然后选择一个生成元gZp*,计算y=gx mod p,则公开密钥y,g,p,私钥x,由于r和s中都引入了随机数k的影响,所以即使是对于同一个消息,因k不同而导致签名结果(r, s)的变化签名信息是消息的2倍k 应该被销毁,典型的数字签名算法2ElGamal签名,签名过程:给定要签名
17、的消息为M首先选择一个小于q并互素的随机数k, gcd(k,p-1)=1 计算r= gk mod p计算s=(H(M)-xr)k-1 mod (p-1)把消息和签名结果(M,r , s)发送给接收者,r= gkmod ps=(H(M)-xr)k-1 mod(p-1),q是p-1或p-1的大素数因子,典型的数字签名算法2ElGamal签名,验证过程:接收方收到消息和签名结果(M,r , s)后,可以按下面的步骤验证签名的有效性:取得发送方的公钥 y;预查合法性:如果p-1 r1,那么继续后续步骤;否则,签名是不合法。计算 u1:u1=yrrs mod p;计算 u2:u2=gH(M) mod p
18、;比较u1和u2: u1=u2 ?,签名过程:给定要签名的消息为M首先选择一个小于q并互素的随机数k计算r= gk mod p计算s=(H(M)-xr)k-1 mod (p-1)把消息和签名结果(M,r , s)发给接收者,初始化:首先选择一个大素数p,使在Zp中求解离散对数困难。然后选择一个生成元gZp*,计算y=gx mod p,则公开密钥y,g,p,私钥x,r= gk mod p,典型的数字签名算法2ElGamal签名,接收的消息M,接收的签名(M,r,s),签名算法,发送者的公钥y,消息摘要u1,摘要算法,消息摘要u2,是否u1=u2 ?,y= gx mod p,u1=yrrs mod
19、 p,u2=g H(M) mod p,ELGamal 签名的验证过程,典型的数字签名算法2ElGamal签名举例,对消息M=“购买设备100台”签名,设h(M)=5 :取 p=11, g=2 选择私钥 x=8 计算: y = gx mod p = 28 mod 11 = 3 公钥是: y=3, g=2, p=11 选择随机数 k=9 ,确定 gcd(10,9)=1 计算: r = gk mod p = 29 mod 11 = 6 计算: s = 9-1(5-86) = 3 mod 10 (即s=(H(M)-xr)k-1 mod (p-1) )签名是 (r=6, s=3) 要验证签名, 需确认:
20、 3663 mod 11 = 25 mod 11 ?,典型的数字签名算法2对ElGamal签名的讨论,为防止签名被伪造,消息M须用哈希函数进行处理签名时所使用的随机值k不能泄露,否则攻击者可以计算出签名的私钥: 通过变换s(H(M)-xr)k-1 mod (p-1),可知x(H(M)-ks) r-1 mod(p-1)对于两个不同的消息签名时,不要使用相同的k ,否则容易求得k的值,从而知道签名者的私钥,典型的数字签名算法2对ElGamal签名的改进,把签名过程中的等式 s =(H(M)-xr)k-1 mod (p-1) H(M)=(xr+ks) mod (p-1) 修改为: u=xv+kw m
21、od (p-1) 称为签名方程 如果u=H(M),v=r,w=s,那么签名方程就是ElGamal签名过程中使用的等式,典型的数字签名算法2对ElGamal签名的改进,如果把u、v、w分别对应不同次序的H(M)、r、s,就可得到其他的ElGamal数字签名变体体制,如下表列举了6种不同的变形,典型的数字签名算法2对ElGamal签名的通用化,ElGamal签名方案可归纳为离散对数签名体制的特例基于离散对数问题的一般数字签名体制参数选取p:大素数;q:p-1或p-1的大素因子;g:gRZ*p,且gq 1 mod p ,其中gRZ*p表示g是从Z*p中随机选取的,其中Z*p=Zp-0;x:用户A的秘
22、密钥,1xq;y:用户A的公开钥, y gx mod p,典型的数字签名算法2对ElGamal签名的通用化,签名过程对于待签名的消息m,A执行以下步骤:计算m的散列值H(m);选择随机数k:1kq,计算r gk mod p ;从签名方程ak b+cx mod p中解出s。方程的系数a, b, c有许多种不同的选择方法,下表给出了这些可能的选择。以(r, s)作为产生的数字签名,典型的数字签名算法2对ElGamal签名的通用化,验证过程收方在收到消息m和签名(r,s)后,可以按照以下验证方程检验: ra mod p = gbyc mod p这样的方案数共有120种,其中安全的共有18种,ElGa
23、mal与DSA都是其中的一种情况,内容提要,数字签名基本概念典型的数字签名算法数字签名标准(DSS)特殊数字签名阈下信道设计,数字签名标准(DSS)DSA数字签名算法,虽然RSA具有较强的数字签名能力,但RSA的使用不是免费的,NIST决定开发一个免费的数字签名算法DSA 1991年8月,NIST提出将数字签名算法DSA (Digital Signature Algorithm)用于数字签名标准DSS(Digital Signature Standard)中。DSA是ElGamal、Schnorr签名算法的变种,其密钥长度为5121024位密钥长度愈长,签名速度愈慢(而制约运算速度的主要因素是
24、大数的模指数运算)ElGamal与DSA签名长度的比较:ElGamal签名长度2048 bitsDSA签名长度320 bits,数字签名标准(DSS)DSA数字签名算法,1. 算法的参数:p是L比特长的素数,L的长度为(5121024)位且是64的倍数q是160比特长且为p-1的素因子。gh(p-1)/q mod p, 其中h, g是整数,1hp-1, 且要求g大于1x是签名者的私钥,由签名者选取的随机数,要求是小于q的正整数ygx mod p为签名者的公钥。选择安全散列算法H( ),标准中指定为SHAk是用户为待签消息选取的秘密数, 是满足 0kq 的随机数或伪随机数 签名者公开(p, q,
25、 g, y)及安全散列算法H( ),保密x,k签名完后及时销毁,数字签名标准(DSS)DSA数字签名算法,签名过程:,验证过程:,r= gkmod ps=(H(M)-xr)k-1 mod(p-1),数字签名标准(DSS)对DSA算法的讨论,对于DSA算法,有人认为不足在于:认为验证比签名快,q的长度160比特太短,不能用于加密和分配密钥等。所有对ElGamal签名算法的攻击,也可以用于对DSA算法的攻击。不过就已有的攻击来看,DSA算法还是安全的与RSA签名算法比较,DSA的优势在于:对于RSA签名算法,每个用户都要有不同的公钥,故针对每个用户,都要去产生大的素数p和q,去计算d对于DSA算法
26、,管理机构只需要计算一次p,g,q(通常又叫全局公开钥),每个用户只需要选择私钥x, 然后计算公钥y(通常又叫用户公钥)。为什么?,数字签名标准(DSS)对DSA算法的讨论,RSA签字与DSA签名的不同方式,数字签名标准(DSS)DSA算法的例子,在该例中采用小的整数代替H(m),以免计算消息摘要值H(m)时复杂运算,假设q=101, p=78101+1=7879, h=19, 则g=1978 mod 7879367取x=69,则ygx mod p= 36769 mod 78791292假设待签名消息为m=3456, 且选择的随机值为k=27,则可以计算 k-115 mod 101。故可以算出
27、签名为: r(gk mod p) mod q=(36727 mod 7879) mod 1016797 mod 10130 s(k-1(m+xr) mod q=(15(3456+6930) mod10170可以得到对m的签名为(30, 70),数字签名标准(DSS)DSA算法的例子,验证签名:ws-1 mod q=70-1 mod 10113u1mw mod q=345613 mod 10184u2rw mod q=3013 mod 10187 v(gu1yu2mod p)mod q =(36784129287 mod 7879) mod 101 (24561687 mod7879) mod
28、101 6797 mod 10130 v=r,因此签名是有效的,可以看到,签名和验证过程中的运算量是很大的,其中最主要的运算集中在模指数运算上实际上,求r的模指数运算与待签的消息无关,因此用户可以预先计算出很多r和k-1供后面签名使用、加快签名速度该例中,素数的取值也是比较小的,这些运算可以通过简单编程实现如果是按标准中的取值,模指数运算及大数的处理对初学者来说还是有挑战性的,数字签名标准(DSS) DSA的安全性,绝大多数公开密钥算法都基于下面3个疑难问题:背包问题:给定一个互不相同的数组成的集合,找出一个子集其和为N离散对数:若p是素数,g和M是整数,找出x满足gx M (mod p)因子
29、分解:设N是两个素数的乘积,则有分解N给定整数M和C,寻找d满足Md C (mod N)给定整数e和C,寻找M满足Me C (mod N)给定整数x,判定是否存在整数y满足x y2 (mod N),内容提要,数字签名基本概念典型的数字签名算法数字签名标准(DSS)特殊数字签名阈下信道设计,特殊数字签名,在有些情况下,前面几种普通数字签名却无能为力,例如:签名方并不希望任何人都能验证该签名,而希望只有特定方才能验证签名是否有效不可抵赖的数字签名在一个企业中,总裁因精力有限而常需要秘书帮他对各种文件进行不可抵赖的数字签名指定的确认人签名总裁希望秘书代替他进行签名计算和验证,而他又不希望将自己的私钥
30、告诉给秘书代理签名在一个企业中,所有副总任何一个都可以对员工送达文件签名,并都有效,而限定某个副总团体签名面对以上这些情况,我们需要特殊的数字签名方案,即特殊数字签名,特殊数字签名主要类别:盲签名,用户需要让签名者对明文消息文件进行数字签名,而又不希望签名者知晓明文消息文件的具体内容,即盲签名(Blind Signature)盲签名是一种特殊的数字签名方法,相对于一般的数字签名而言还应当具有下列2个特性: 盲性:所签消息的内容对签名人是盲的,即签名人签名时不能看见消息的具体内容; 不可追踪性:即使在盲签名公开后,签名者仍然不能跟踪消息-签名对,即不能把签名和其在签名时的看到的信息联系起来。盲签
31、名主要用于基于Internet的匿名金融交易,如匿名电子现金支付系统、匿名电子拍卖系统等应用中:对于电子货币,银行需要对其签名以保证这张货币的合法性,同时用户又不希望银行知道这张货币在谁手上,从而追踪出他在怎样花钱,特殊数字签名主要类别:门限签名,在有n个成员的群体中,至少有t个成员才能代表群体对文件进行有效的数字签名,即门限签名门限签名通过共享密钥方法实现,它将密钥分为n份,只有当将超过t份的子密钥组合在一起时才能重构出密钥门限签名在密钥托管技术中得到了很好的应用, 某人的私钥由政府的n个部门托管, 当其中超过t个部门决定对其实行监听时,便可重构密钥,实现监听,特殊数字签名主要类别:代理签名
32、,1996 年,Mambo、Usuda 和Okamoto提出了代理签名的概念代理签名允许密钥持有者授权给第三方, 获得授权的第三方能够代表签名持有者进行数字签名。代理签名相当于一个人把自己的印章托付给自己信赖的人,让他代替自己行使权力由于代理签名在实际应用中起着重要作用,所以代理签名一提出便受到关注,被广泛研究,特殊数字签名主要类别:群签名,允许一个群体中的成员以整个群体的名义进行数字签名, 并且验证者能够确认签名者的身份最早由D.Chaum和E.van Heyst提出,并给出了四个实现方案因群签名的实用性,人们对其深入研究而提出了分级多群签名、群盲签名、多群签名、满足门限性质的群签名、前向安
33、全的群签名等,特殊数字签名主要类别:群签名,一个好的群签名方案应满足以下的安全性要求:匿名性:给定一个群签名后,对除了唯一的群管理人之外的任何人来说,确定签名人的身份在计算上是不可行的;不关联性:在不打开签名的情况下,确定两个不同的签名是否为同一个群成员所做在计算上是困难的;防伪造性:只有群成员才能产生有效的群签名;可跟踪性:群管理人在必要时可以打开一个签名以确定出签名人的身份,而且签名人不能阻止一个合法签名的打开防陷害攻击:包括群管理人在内的任何人都不能以其他群成员的名义产生合法的群签名抗联合攻击:即使一些群成员串通在一起也不能产生一个合法的不能被跟踪的群签名,特殊数字签名主要类别:前向安全
34、的数字签名方案,普通数字签名方案下,若签名者的密钥被泄漏,那么这个签名者所有的签名(过去的和将来的)都有可能泄漏前向安全的数字签名方案主要思想是当前密钥的泄露并不影响以前时间段签名的安全性根据需要,结合上面思路,提出了前向安全的群签名、盲代理签名、代理门限签名、代理多重签名、公平盲签名等,特殊数字签名设计与实现:盲签名方案,1983年,Chaum提出了盲签名概念,在此基础上设计并实现了一个盲签名方案一般来说,盲签名的协议有如下几个步骤:初始化过程(参数选择)盲化过程签名过程脱盲过程验证过程,特殊数字签名设计与实现:盲签名方案,基于整数分解难题的盲签名RSA盲数字签名,参数选择选择两个满足需要的
35、大素数p和q,计算n=pq, (n)=(p-1)(q-1),其中(n)是n的欧拉函数值选一个整数e, 满足1e(n),且gcd(n),e)=1。通过de1mod(n),计算出d以e, n为公开密钥,d, n为秘密密钥。选择安全的单向hash函数h()这里Bob作为签名者,则Bob知道秘密密钥d, n;所有人都知道公开密钥e, n和算法中选择的hash函数h(),特殊数字签名设计与实现:盲签名方案,基于整数分解难题的盲签名RSA盲数字签名,盲化过程设需要签名的消息为m,请求签名者Alice随机选择一个整数r作为盲化因子计算:re h(m) mod n发送给签名者Bob,签名过程 Bob在收到后,
36、计算 td mod n ,然后把t发送给Alice,脱盲过程 Alice接收到t后,计算str-1mod n. 就得到了消息m 的签名(m, s),验证过程 通过如下计算,任何人都可以验证签名的有效性: seh(m) mod n ? 若成立,则发送方的签名有效,t是Bob对盲消息a的签名,s是Alice在Bob对盲消息a的签名基础计算m的签名,特殊数字签名设计与实现:盲签名方案,体会一下这个RSA盲签名方案:签名者看到的信息是,根据, e, n,签名者显然不能计算出h(m)来,因为还有一个变量r(盲化因子),即所签消息的内容对签名人是盲的,即签名人Bob签名时不能看见消息的具体内容在Alice
37、得到Bob的签名后,Bob即使看到了自己的签名(m, s), 仍然不能把它与签名时的联系起来,即盲签名的第二个性质,不可追踪性,特殊数字签名设计与实现:多重签名,多重数字签名的目的是将多个人的数字签名汇总成一个签名数据进行传送,签名收方只需验证一个签名便可确认多个人的签名。设U1,U2,Un为n个签名者,他们的密钥分别为xi,相应的公钥为yi=gxi mod p(i =1,2,n)他们所形成的对消息m的n个签名分别为(ri,si),其中 : ri=gki mod p 和 si= xim+kir mod p-1(i=1,2,)这里 ,形成的签名(ri,si) 满足方程,由此可以看出,无论签名人有
38、多少,多重签名并没有过多地增加签名验证人的负担多重签名在办公自动化、电子金融和CA认证等方面有重要的应用,特殊数字签名应用例子:双重数字签名,在电子商务应用中,参与方为:持卡人、商户和结算银行持卡人客户:登录商户网站,提出申请购物时,向商户提出两组信息:向商户直接提出订购信息OI(Order Information),同时还必须向银行提出付款信息PI(Payment Instruction) ,以便授权银行付款持卡人的订单信息和付款指示是互相对应的处理过程客户要求:不希望商户知道自己的银行支付帐号的有关信息也不希望银行方面知道具体的购物内容,只需按金额贷记或借记帐户就可,特殊数字签名应用例子:
39、双重数字签名,商家:只有在确认了持卡人的订单信息对应的付款指示是真实有效的情况下,才可能按订单信息发货银行:只有在确认了持卡人的付款指示对应的订单信息是真实有效的情况下,才可能按商家要求进行支付授权订单信息OI和付款指示PI必须捆绑在一起发送给商家和银行,特殊数字签名应用例子:双重数字签名,为了预防商家在验证持卡人付款指示PI时盗用持卡人的信用卡帐号等信息,以及银行在验证持卡人订单信息OI时,而跟踪持卡人的交易活动(侵犯持卡人的隐私)。为了保证持卡人的信用卡帐号等银行信息对商家隐蔽,也为了保证持卡人要购买的商品订单信息对银行隐蔽,在SET中采用了双重签名技术,它是SET推出的数字签名的新应用,
40、特殊数字签名应用例子:双重数字签名,持卡人不想让银行看到订单信息OI,也不想让商家看到付款指示PI信息。可是,购买请求报文中的购买订单信息OI和付款指示PI信息又不能分开。一个双重签名是通过计算两个消息的消息摘要产生的,并将两个摘要连接在一起,用持卡人的私有密钥对消息摘要加密。双重签名的产生过程如图所示,特殊数字签名应用例子:双重数字签名,持卡者实现过程,特殊数字签名应用例子:双重数字签名,特殊数字签名应用例子:双重数字签名,双重签名的产生过程:1. 持卡人产生订单信息OI和付款指示PI的消息摘要H(OI)和H(PI)2. 连接消息摘要H(OI)和H(PI)得到消息OP;3. 生成OP的消息摘
41、要H(OP);4. 用持卡人的私有密钥加密H(OP)得到双重签名Sign(H(OP),持卡人将双重签名Sign(H(OP)包含在消息中以保证接收者能够验证。持卡人发送给商家的消息为 (OI,H(PI),Sign(H(OP) ,即:订单信息,付款指示摘要和双重签名;持卡人发送给银行的消息为(PI,H(OI),Sign(H(OP) ,即:付款指示,订单消息摘要和双重签名,特殊数字签名应用例子:双重数字签名,商户实现过程,特殊数字签名应用例子:双重数字签名,特殊数字签名应用例子:双重数字签名,银行实现过程,特殊数字签名应用例子:双重数字签名,特殊数字签名应用例子:双重数字签名,商家所能看到的信息有:
42、订单信息OI、付款指示PI的消息摘要H(PI)、订单信息OI和付款指示PI的双重签名Sign(H(OP)银行所能看到的信息有:付款指示PI、订单信息OI的消息摘要H(OI)、订单信息OI和付款指示PI的双重签名Sign(H(OP),特殊数字签名应用例子:双重数字签名,在安全交易过程中,持卡人只与商家打交道。付款指示PI由持卡人发送给商家,再由商家转发给支付网关,付款指示PI由持卡人使用支付网关的公钥加密,只有支付网关才能用自己的私钥解密。为了便于商家验证持卡人付款指示PI的真实性,商家所能看到的只是付款指示PI的消息摘要H(PI),而不是付款指示PI本身,内容提要,数字签名基本概念典型的数字签
43、名算法数字签名标准(DSS)特殊数字签名阈下信道设计,阈下信道,囚徒问题:假设Alice和Bob被捕入狱。Bob去男牢房,而Alice进女牢房。看守Walter允许Alice和Bob交换消息,但不允许消息加密。Walter认为他们可能会商讨一个逃跑计划,因此他想能够阅读消息的每个细节Alice和Bob建立一个阈下信道,即完全在Walter视野内的一个秘密通信信道。通过交换完全无害的签名消息,他们可以传送秘密信息,并骗过Walter简易的阈下信道(缺点是无密钥)句子中单词的数目:句子中奇数个单词对应“1”,而偶数个单词对应“0”一幅画:如一棵苹果树,苹果的个数代表一定的约定,阈下信道,阈下信道(
44、Subliminal Channel)又被称为潜信道,该概念是Gustavus J Simmons于1978年提出的,是指在公开信道中建立的一种实现隐蔽通信的信道阈下信道在国家安全方面的应用价值很大,例如:间谍可以通过阈下信道传递蕴含了国家机密、商业机密的数字签名信息虽然监视者可以看到这些数字签名,表面上看来这些签名和普通的数字签名没有区别,并且监视者可以进行验证,但是他不能检测其中蕴含的阈下信息,阈下信道设计,经典对称密码体制(例如DES)中不存在阈下信道,因为明文块与密文块的长度相同,而且明文块与密文块还一一对应实际上,如果存在阈下信道,则要求:一个明文块要对应多个不同的密文块在大多数基于
45、非对称密码体制的数字签名方案中,明文与数字签名并不是一一对应的,从而对同一个消息m可能产生多个数字签名对于多个不同的签名,只要私钥相同,则验证者就能验证签名的有效性,这为阈下信道的存在提供了理论基础,即:阈下接收方可以根据这些不同的数字签名获取公开接收方无法得到的阈下信息绝大多数数字签名方案都可用于阈下信道的通信,将阈下信息嵌入数字签名之中,而对数字签名和验证的过程无任何影响,阈下信道设计基于Elgamal签名方案,如果在一个签名方案中,比特用于传送签名,仅 比特用于提供抗伪造、抗篡改和抗移植等安全的能力,其中 , 则剩余-比特可被用于阈下通信基于Elgamal签名方案的阈下信道设计:首先选择
46、一个素数p,两个随机数g和r,g和r都小于p,然后计算公开密钥K,g和p,私钥是r。Alice和Bob都知道r,这两个密钥用来发送和阅读阈下消息,另外还用来签署公开消息如果使用公开消息M来发送阈下消息S时,同样,M,S以及p都必须互素,此外,S还必须和p-1互素。然后Alice计算:并解方程: (X,Y)就是Alice的签名,阈下信道设计基于Elgamal签名方案,其他人员可以验证Alice的签名:而只有Bob能够恢复阈下消息:首先Bob确认如果上面的确认成立,他接收到的消息就是真实的;然后Bob恢复阈下消息,计算:,实际上,任何签名方案都可以转换称为阈下信道。以上利用了Elgamal签名构造阈下信道。同样,DSA签名也包含几个阈下信道,课后思考题,1.数字签名的原理是什么?有哪些分类?2.简述RSA数字签名算法与RSA公钥加密体制有何区别?3.以小的整数实现DSA签名算法的参数选取,数字签名和签名过程,以理解DSA签名算法。4.在DSA签名算法中,参数k泄露会产生什么后果?5.在ElGamal签名方案中,设p=11,g=2是Z11的本原元,选取x=8,y=gx mod 11=3。p,g,y公开,x保密。假设Alice要对消息m=5进行签名,其秘密随机选取k=9,请计算出Alice对m的签名s,并写出接收方Bob对该签名s的验证过程,