1、 提供数据来源的真实性真实性、数据内容的完整性完整性、签名者的不可否认性不可否认性以及匿名性匿名性等信息安全相关的服务和保障。用于用于网络通信的安全以及各种用途的电子交易系统(如电子商务、电子政务、电子出版、网络学习、远程医疗等)中。概念:数字签名是对以数字形式存储的消息进行某种处理,产生一种类似于传统手书签名功效的信息处理过程。它通常将某个算法作用于需要签名的消息,生成一种带有操作者身份信息的编码一种带有操作者身份信息的编码。示例:示例:Alice和Bob进行通信,并使用消息认证码提供数据完整性保护:情况一:Alice向Bob发送消息并附加了用双方共享密钥生成的消息认证码,但随后Alice否
2、认曾经发送了这条消息;情况二:Bob有能力伪造一个消息及认证码并声称此消息来自Alice。如果通信的过程没有第三方参与的话,这样的局面是难以仲裁的。因此,安全的通信仅有消息完整性认证是不够的,还需要有能够防止通信双方相互作弊的安全机制。数字签名数字签名 至少满足的三个基本要求:至少满足的三个基本要求:1)签名者任何时候都无法否认自己曾经签发的)签名者任何时候都无法否认自己曾经签发的数字签名;数字签名;2)收信者能够验证和确认收到的数字签名,但)收信者能够验证和确认收到的数字签名,但任何人都无法伪造别人的数字签名;任何人都无法伪造别人的数字签名;3)当各方对数字签名的真伪产生争议时,通过)当各方
3、对数字签名的真伪产生争议时,通过仲裁机构(可信的第三方)进行裁决。仲裁机构(可信的第三方)进行裁决。1)手写签名与被签文 件物理上是一个整 体,不可分离;2)手书签名通过物理 比对来判断真伪,需要一定的技艺甚 至需要专门人员,机构来执行;3)手书签名会因人而 异,复制品易于原 件分开。1)数字签名与被签名 的消息是可以相互 分离的比特串;2)数字签名通过一个 严密的公开的算法 来验证签名的真伪;3)数字签名的拷贝与其原件是完全相同的二进制比特串,无法区分,需防止签名重复使用。签名者必须向验证者提供足够多的非保密信签名者必须向验证者提供足够多的非保密信 息,以便验证者能够确认签名者的数字签名;息
4、,以便验证者能够确认签名者的数字签名;签名者不能泄露任何用于产生数字签名的机签名者不能泄露任何用于产生数字签名的机密信息,以防止他人伪造他的数字签名。密信息,以防止他人伪造他的数字签名。因此因此,签名算法必须能够提供签名者用于签名的机密信息与验证者用于验证签名的公开信息。组成部分:签名算法签名算法 验证算法验证算法 代表消息空间消息空间,它是某个字母表中所有串的集合;代表签名空间签名空间,它是所有可能的数字签名构成的集合;代表密钥空间密钥空间,它是所有可能的签名密钥和验证密钥对 构成的集合;(,)M S K SIGVERMSK(,)sk vk 是签名算法签名算法;是验证算法验证算法。对于任意的
5、一个密钥对 ,每一个消息 和签名 。签名变换签名变换 :和验证变换验证变换 :是满足下列条件的函数:SIGVER(,)sk vkKm MsSSIGskMKS(,)vkVER m s()()sksktruesSIGmfalsesSIGmMS,vkKtrue falseVER 两大方面:功能特性功能特性 安全特性安全特性 1)依赖性)依赖性 2)独特性)独特性 3)可验证性)可验证性 4)不可伪造性)不可伪造性 5)可用性)可用性 1)单向性)单向性 2)无碰撞性)无碰撞性 3)无关性)无关性 优点:优点:从根本上消除了成功伪造数字签名的可能性。缺陷:不抵抗窃听缺陷:不抵抗窃听。mcmskpk注意
6、:先签名,后加密的顺序不能颠倒注意:先签名,后加密的顺序不能颠倒mzzcmpk2sk2sk1pk1原始信息原始信息Hash算法算法Hash值值加密加密签名签名原始信息原始信息Hash算法算法Hash值值验证验证Hash值值=?SenderReceiver 直接数字签名体制直接数字签名体制 可仲裁的数字签名体制可仲裁的数字签名体制直接数字签名 A:EKSaM B B:EKPaEKSaM 只有A具有KSa,可以进行加密(签名)任何第三方都可以用KPa验证签名 只提供签名功能 A:EKPbEKSaM B B:EKPaEKSbEKPbEKSaM 提供加密(KPb)和签名(KSa)功能KSa、KPa 分
7、别是分别是A的私钥和公钥的私钥和公钥直接数字签名 A:MEKSaH(M)B B:h=H(M);EKPaEKSaH(M)=h;h=h?H(M)受到Hash算法不可逆的保护 只有A能够生成EKSaH(M)提供签名和鉴别功能 A:EKPbMEKSaH(M)B B:EKSbEKPbMEKSa(M);h=H(M);EKPaEKSaH(M)=h;h=h?提供加密(KPb)、签名(KSa)和鉴别(H(M))功能直接数字签名的缺点 验证模式依赖于发送方的公钥 发送方要抵赖发送某一信息时,可能会声称其私有密钥丢失或被窃,从而他人伪造了他的签名。需要采用与私有密钥安全性相关的行政管理控制手段来制止或至少是削弱这种
8、情况,但威胁在某种程度上依然存在。改进的方式,例如可以要求被签名的信息包含一个时间戳(日期与时间),并要求将已暴露的密钥报告给一个授权中心。仲裁签名 引入仲裁者 所有从发送方A(Alice)到接收方B(Bob)的签名信息首先送到仲裁者C(Carol)。C将信息及其签名进行一系列测试,以检查其来源和内容。C将信息加上日期并与验证通过的指示一起发给B。前提条件:所有的参与者必须极大地相信这一仲裁机制的工作。仲裁签名单密钥加密方式 A与C之间共享密钥Kac,B与C之间共享密钥Kbc;A:MEKacIDAH(M)C A:计算消息M的散列码H(M),用A的标识符IDA 和散列值构成签名,并将消息和经Ka
9、c加密后的签名发送给C;C:EKbcIDAMEKacIDAH(M)TB C:解密签名,用H(M)验证消息M,然后将IDA,M,经Kac加密后的签名和时间戳T一起经Kbc加密发送给B;B:解密C发来的信息,并将消息M和经Kac加密后的签名保存起来。B不能直接验证A的签名 问题:C可以看到A给B的所有信息仲裁签名单密钥加密方式 验证签名 B:EKbcIDAMEKacIDAH(M)C C:用EKbc恢复IDA,M和签名EKacIDAH(M),然后用EKac 解密签名并验证散列码。在这种模式下,B不能直接验证A的签名,B认为C的消息正确,只因为他来自于C。因此,双方必须高度相信C。并且相信C处理争议时
10、是公正的。A和B之间也可以约定一个对称密钥,并使用该密钥加密明文后,再进行以上的签名操作,这样C就无法看到明文的内容。问题 C与A联手可以否认签名的信息 C与B联手可以伪造A的签名仲裁签名双密钥加密方式 A:IDAEKSa IDAEKPbEKSa MC A首先用自己的私有密钥KSa,然后用B的公开密钥KPb,生成经过签名的密文。最后将该信息以及A的标识符一起用自己的私钥EKSa 签名后与IDA一起发送给C。这时加密过的消息对C,以及B以外的其他人都是保密的。C:EKScIDAEKPbEKSa MT B C检查A的签名是否有效,并确认消息。然后将包含IDA、经A加密并签名的消息和时间戳的消息用自
11、己的私钥EKSc 签名后发送给B。仲裁签名 的特点 在通信之前,各方之间无需共享任何信息,从而避免了联手作弊;即使A的私钥EKSa 泄露,只要C的私钥未泄露,不会有错误标定日期的消息被发送;A发送给B的消息的内容对C和任何除A、B以外的其他人是保密的。引入仲裁签名只是为了通过仲裁者证明指定信息是由A在指定的时间发送给B的。并不代表指定信息是由仲裁者签发的。RSA签名体制是Diffie和Hellman提出数字签名思想后的第一个数字签名体制,它是由Rivest、Shamir和Adleman三人共同完成的。该签名体制来源于该签名体制来源于RSARSA公钥公钥密码体制的思想密码体制的思想,将RSA公钥
12、体制按照数字签名的方式运用。选取两个不同的大素数p 和q,计算 选取一个与 互素的正整数 e,并计算出d 满足 ,即 d是e模 的逆。最后,公开 n和 e作为签名验证密钥,秘密保存 p、q和d 作为签名密钥。npq()n1mod()edn()n签名时:()moddsksSIGmmn得到的结果s就是签名者对消息m的数字签名。验证时:验证者通过下式判断签名的真伪(,)modevkVERm struemsnmod()modmodedeedsnmnmnm 对RSA数字签名算法进行选择密文选择密文攻击攻击可以实现三个目的,即:消息破译消息破译 骗取仲裁签名骗取仲裁签名 骗取用户签名骗取用户签名mmncn
13、cuunyunstedddddddmodmodmodmodmod即得到了原始的明文消息即得到了原始的明文消息主要思想:主要思想:当攻击者希望某合法用户对一个消息m进行签名但该签名者可能不愿意为其签名时:将将m m分解成两个(多个)更能迷惑合分解成两个(多个)更能迷惑合法用户的消息法用户的消息m1m1和和m2m2,且满足,且满足m=m1m=m1m2m2;让合法用户对让合法用户对m1m1和和m2m2分别签名;分别签名;攻击者最终获得该合法用户对消息m的签名。上述选择密文攻击都是利用了指数运算利用了指数运算能够保持输入的乘积结构能够保持输入的乘积结构这一缺陷(称为可乘性)。因此,任何时候都不能对陌生
14、人提交的消息直接签名,最好先经过某种处理。1)伪造者Oscar选取一个消息y,并取得某合法用户的RSA公钥(n,e);2)计算:3)伪造者声称y是该合法用户对消息x的RSA签名,达到了假冒该合法用户的目的。这是因为,该合法用户用自己的私钥d对消息x合法签名的结果正好就是y,即:因此从算法本身不能识别伪造者的假冒行为因此从算法本身不能识别伪造者的假冒行为modexyn()mod()modmoddededSKSIGxxnynyny RabinRabin数字签名体制利用数字签名体制利用RabinRabin公钥密公钥密码算法构造而成。码算法构造而成。由于Rabin公钥密码算法与RSA公钥密码算法的相似
15、性,Rabin签名算法与RSA签名算法也具有类似的相似性。Rabin数字签名算法的系统参数包括两个随机两个随机选取的相异大素数选取的相异大素数p p和和q q,及它们的乘积,及它们的乘积 。其中,n n为公开密钥为公开密钥,p p和和q q则需要保密则需要保密。消息空间和签名空间都是由同为模p平方剩余和模q平方剩余的正整数构成的集合。np q 判断消息m是否同时是模 p和模q的平方剩余;否:否:对m作一个变换,将其映射成满足要的 。是:是:对m签字就是计算模m的平方根,即:m()modsSIG mmn 求解合数模的平方根是困难的,除非能求解合数模的平方根是困难的,除非能够对模数进行素因子分解够
16、对模数进行素因子分解。即:知道模数n的两个素因子p和q,然后将问题转化成一次同余方程组,再利用中国剩余定理求解。验证者计算消息签名的平方;通过下式确认数字签名的真伪:Rabin签名正确性的验证是显而易见的。2(,)modVER m struem sn Rabin算法是一种基于平方剩余的公钥基于平方剩余的公钥体制体制,这种体制已经被证明它的安全性正它的安全性正好等价于大整数分解的困难性好等价于大整数分解的困难性,但这种体制也容易遭受一种特定的攻击,其方法如下:攻击者签名者2modxMn 它要求被签消息必须是模 的平方剩余 若不是,将被签消息映射到满足要求的另一个消息m上,再用m的Rabin签名作
17、为原消息的签名。n 思想:ElGamal签名体制是一种基于离散对数基于离散对数问题问题的数字签名方案。ElGamal签名算法是专门为数字签名设计的。ElGamal签名体制也是非确定性的,任任何一个给定的消息都可以产生多个有效的何一个给定的消息都可以产生多个有效的ElGamalElGamal签名签名,并且验证算法能够将它们中的任何一个当作可信的签名接受。一个大素数一个大素数p;的生成元的生成元g;任取的秘密数任取的秘密数a;一个由一个由g和和a计算得到的整数计算得到的整数y;pZ Zmodaygp这些系统参数构成ElGamal数字签名的密钥K=(p,g,a,y),其中(p,g,y)是公开密钥,a
18、是私有密钥。签名时:1()()mod()()mod()mod()modakakak m akpam apmpmygggggggp11mod()213mod466431kp127mod2mod467132aygp若要对消息m=100签名时,假设取随机数k=213且则有:2131mod2mod46729()mod()(10012729)431mod46651kgpmakp11mod()117mod466kp1171mod2mod467126()mod()(100127 126)235mod466350kgpmakp且所以,得到一个新的数字签名s=(126,350)验证时:对于第一个数字签名s=(2
19、9,51),有 而:2951132 29189mod467y100mod2mod467189mgp 对于第二个数字签名s=(126,350),仍然有 而:所以,两个数字签名都是有效的。100mod2mod467189mgp 126350132126189mod467yElGamal数字签名算法的安全性依赖于求解离散对数问题的困难性,如果求解离散对数已经不再困难了,那么ElGamal数字签名算法也就没有任何意义了。在假定离散对数问题依然难以求解的情况下,ElGamal签名方案仍然存在一些安全威胁。这些安全威胁首先来自于对方案使用不当而来自于对方案使用不当而造成的可能攻击造成的可能攻击,包括两个方
20、面:对签名中使用的随机整数对签名中使用的随机整数k k保管不当,发生保管不当,发生 泄露;泄露;重复使用签名随机数重复使用签名随机数k k。注意:注意:这时整个系统完全被破坏,攻击者可以随意伪造该签名者的数字签名。可以使攻击者易于计算出签名者的私有密钥a。具体做法:设 和 分别是某个签名者对消息 和 的签名,且 ,有:两式相减,得:12mod()mmp1122mod()mod()makpmakp1(,)2(,)1212()mod()mmkp1m2m 设:那么,所以,记:则等式变成12gcd(,()dp|()dp12|()d12|()dmm1212()mmmddppd modmkp且 由于 所以
21、,由扩展的欧几里得算法求出:得:故:,利用同余式:即可测出唯一正确的k。找到签名随机数k,即可计算出签名者的私有密钥a。gcd(,)1p 1()m od p1()m odkmp1()mod()kmipp0,1,1idm odkgp 方法一:由此可见,攻击者可以在惟密钥的攻击者可以在惟密钥的情况下进行存在性伪造情况下进行存在性伪造。设:i和j是 上的整数且 可表示为:那么签名验证条件是:于是有:若 且 则上式成立。0,2p modijg yp()modmijgyg ypmodm ijgyp0mod()mip0mod()jp 因此,在给定的i和j,且 的条件下,很容易利用这两个同余式求出 和 ,结
22、果如下:显然,按照种方法构造出来的 是消息 的有效签名,但它是伪造的。gcd(,()1jp11modmod()mod()ijg ypjpmijp (,)mm 设 ,。选取 和 那么,计算:20914711mod2132mod467435mod()435 149mod466425mod()435209 149mod466285ijg ypjpmijp 467p 2g 132y 209i 147j 1mod()149jp (435,425)是对消息m=285的有效签名,这可以从下面的式子得到验证:43542528513243534 mod467234 mod467myg方法二:此方法属于已知消息攻
23、击存在性伪造已知消息攻击存在性伪造,伪造签名者需要从合法签名者的某个已知签名消息开始,来伪造一个新消息签名。具体具体实现:实现:11mod()mod()()()mod()hijg yphjpmhmihjp modmygp(,)m 计算:那么,签名条件 于是,伪造出一个 是 的有效签名。这两种伪造签名的攻击都是对ElGamal数字签名的存在性伪造,对抗这种存在性伪造的简单办法是使消息格式化使消息格式化。最简单的消息格式化机制:在消息中嵌入一个可识别的部分;在消息中嵌入一个可识别的部分;最有效的消息格式化机制:对消息进行对消息进行HashHash函数处理;函数处理;先计算:然后计算 ,使 满足 显
24、然,可以通过中国剩余定理解出 。1mod()mod()um mpup mod()modupp ()()moduuumumyyyggp(,)m 历史背景:历史背景:数字签名标准DSS(Digital Signature Standard)是由美国国家标准技术协会NIST于1991年8月公布,并于1994年12月1日正式生效的一项美国联邦信息处理标准。DSS数字签名标准使用的算法称为数字签名算法DSADSA(Digital Signature Algorithm),它是在ElGamal和Schnorr两个方案基础上设计出来的。一个用户随机选取的整数 ,并计算出 一个一个Hash函数 H:。这些系统
25、参数构成DSA的密钥空间:其中,为公开密钥,a是私有密钥。pa Z Z0,1pZmodaygp,Kp q g a y H(,)p q g y H 对消息m生成数字签名时,随机选取一个秘密整数 ,并计算出:就是消息m的数字签名,即 由此可见,DSA的签名空间为 ,签名的签名的长度比长度比ElGamal体制短了许多体制短了许多。qkZ Z1(mod)mod()modkgpqkH maq(,)s(,)(,)aSIGm k qqZ ZZ Z1mod()mod()kgpmakp(,)p q g y H(,(,)m 12112mod()modmod(mod)moduuwquH m wquwqvg ypq(
26、,(,)VER mtruev 对于一个消息-签名对 ,计算下面几个值并判定签名的真实性:这是因为,如果 是消息 的有效签名,那么11211()(mod)mod(mod)mod(mod)mod(mod)mod uuH mH maakvgpqgpqggpypqqg(,)mSHA-1SHA-1p,q,gkaqw,g y p qkv783mod 7879170g 87mod170mod78793226aygp假设签名者的私有密钥为a=87,那么,假如该签名者要对一个消息摘要为SHA-1(m)=132的消息m签名,并且签名者选择的秘密随机数为k=79,则需要计算:11791mod79mod10178(m
27、od)mod(170mod7879)mod101907mod10199()mod78(1328799)mod101682110 mod10157kkqgpqkH maq因此,(因此,(99,57)是消息)是消息m的签名的签名 计算:所以,说明以上签名是有效的。1112mod57mod10139()mod13239mod10198mod9939mod10123wquH m wquwq129823(mod)mod(1703226mod7879)mod10199uuvgypq DSADSA算法不能用于数据加密,也不能用于密钥算法不能用于数据加密,也不能用于密钥分配;分配;DSA DSA算法比算法比R
28、SARSA慢;慢;DSA DSA算法的密钥长度;算法的密钥长度;主要有以下几个方面:u 攻击秘密数k;u 共用模数的危险;u DSA的阈下信道;允许签名者在其签名中嵌入秘密允许签名者在其签名中嵌入秘密消息消息,只有知道密钥的人能提取签只有知道密钥的人能提取签名者嵌入的秘密消息名者嵌入的秘密消息.小结小结数字签名与公钥加密的区别数字签名与公钥加密的区别签签 名名加加 密密HashSIGHash解密比较mmsskAs=SIGsk(Hash(m)pkA发送方加密算法解密算法接收方密钥空间mmc发送方发送方A(,)pkAskA接收方接收方B(,)pkBskBpkBskB发送方发送方A接收方接收方BAB
29、小结小结数字签名与公钥加密的区别数字签名与公钥加密的区别数字签名与消息加密的结合使用数字签名与消息加密的结合使用 随着网络技术和电子商务的迅猛发展,迫切需要解决网上数据传输安全以及交易双方的身份识别和认证。简单模拟手写签名的普通签名已不能完全满足应用的需要,许多新的应用环境要求数字签名能支持一些特殊的功能,因此,需要在基本数字签名技术的基础上进行扩展,以满足这些特殊的需求。特点:如果没有签名者如果没有签名者AliceAlice的合作,签名的的合作,签名的有效性就得不到验证。有效性就得不到验证。好处:防止了由Alice签署的消息在没有经过Alice本人同意而被复制和分发的可能性。组成:签名算法签
30、名算法 验证协议验证协议 否认协议否认协议 密钥空间为:其中 是公钥,是私钥。(,):(mod)aKapp,pa对于消息 ,签名者计算 xG()(mod)askysigxxpe1e212(mod)eecyp c1(mod)(mod)aqdcp d12(mod)eedxpe1e212(mod)eecyp c1(mod)(mod)aqdcp d12(mod)eedxp12,qffZ12(mod)ffCyp C1(mod)(mod)aqD Cp D12D(mod)ffxp2121()()(mod)effedDpAlice能使能使Bob相信一个无效的签名是一个伪造签名相信一个无效的签名是一个伪造签名A
31、lice能使能使Bob以一个很小的概率相信一个有效的签以一个很小的概率相信一个有效的签名是伪造的名是伪造的软件公司A发行了一套最新的软件.它向用户承诺,此软件不含病毒,为了确保信誉并让用户放心,它在软件包中还包含了该软件的数字签名.假设存在用户B,他在购买了正版软件后,以低价把该软件拷贝卖给另一用户C.用户C当然也希望能保证自己买的软件不含病毒,然而,用户C对B的信任是客观的,并不相信B的口头保证,他要求能验证从B得到的软件包里的数字签名.但是,A公司希望只有合法的用户才能验证该数字签名,因为它只对合法用户负责,而盗版使用的用户C则不能验证签名.同时,对于合法的用户,一旦发现该正版软件真的包含
32、有病毒,希望A公司无法抵赖.可用于版权保护 盲签名是D.Chaum于1982年首次提出的一种具有特殊性质的数字签名:签名签名者能够在不知道被签名文件内容的者能够在不知道被签名文件内容的情况下对消息进行签名情况下对消息进行签名。即使即使签名者在以后看到了被签名的消息签名者在以后看到了被签名的消息及其签名,签名者也不能判断出这个签及其签名,签名者也不能判断出这个签名是他何时为谁生成的。名是他何时为谁生成的。盲签名直观的说明:所谓盲签名,就是先将要隐蔽的文件放入信封,再将一张复写纸也放入信封,签名的过程就是签名者将名字签在信封上,他的签名便透过复写纸签到了文件上。本质本质:签名签名者对消息者对消息签
33、名签名,并不知道消并不知道消息的内容息的内容。盲签名的特点盲签名的特点 不可追踪性:签名者不能把签署消息的行为与签署的消息相关联,即使他记下了他所作的每一个盲签名,他也不能把某个消息的盲签名与某个消息的内容相关联。盲签名的实现过程盲签名的实现过程请求者请求者MM盲化盲化签名签名者者M私钥私钥签名签名S签名签名S去盲化去盲化签名签名S验证验证S是否是是否是M的有效签名的有效签名在签名过程中在签名过程中,签名签名者者从未从未见到见到过过M和对和对M的的签名签名S,所以他无法将所以他无法将(M,S)和和(M,S)联联系系起来起来,因而无法因而无法确定他所签文件的内容确定他所签文件的内容.盲盲RSARSA签名签名请求者请求者签名者签名者在在1到到n之间选取一之间选取一个随机数个随机数k,计算:,计算:盲化处理盲化处理M盲盲签名签名S计算计算S:去去盲化盲化验证验证盲签名的实现方案盲签名的实现方案盲化因子盲化因子盲签名的应用盲签名的应用 签署遗嘱.立遗嘱者想让律师在自己的遗嘱上签字,使之具有法律效力,但他又不想让律师知道遗嘱的具体内容,于是,他可以采用盲签名的形式让律师对遗嘱签字.电子现金.消费者可以从银行得到有效的电子现金,银行不能对消费者的消费状况进行跟踪,有效保护了消费者的消费隐私.环签名群签名前向安全签名 代理签名Thank You