1、2023年7月31日星期一第五章第五章 信息安全原理与信息安全原理与技术技术ch05-Hash函数和函数和数字签名数字签名第5章 音讯认证与数字签名 主要知识点:主要知识点:-认证认证 -认证码认证码 -散列函数散列函数 -MD5 -SHA-512 -数字签名数字签名2023-7-31认证 认证那么是防止自动攻击的重要技术,可以防止如下一些攻击:伪装:攻击者生成一个音讯并宣称这条音讯是来自某合法实体,或许攻击者冒充音讯接纳方向音讯发送方发送的关于收到或未收到音讯的欺诈应对。内容修正:对音讯内容的修正,包括拔出、删除、转换和修正。顺序修正:对通讯双方音讯顺序的修正,包括拔出、删除和重新排序。计时
2、修正:对音讯的延迟和重放。在面向衔接的运用中,攻击者能够延迟或重放以前某合法会话中的音讯序列,也能够会延迟或重放是音讯序列中的某一条音讯。2023-7-31认证的目的第一,验证音讯的发送者是合法的,不是冒充的,这称为实体认证,包括对信源、信宿等的认证和识别;第二,验证信息自身的完整性,这称为音讯认证,验证数据在传送或存储进程中没有被窜改、重放或延迟等。2023-7-31认证的目的可提招认证功用的认证码的函数可分为三类:加密函数:运用音讯发送方和音讯接纳方共享的密钥对整个音讯停止加密,那么整个音讯的密文作为认证符。音讯认证码:它是音讯和密钥的函数,发生定长度值,该值作为音讯的认证符。散列函数:它
3、是将恣意长的音讯映射为定长的hash值的函数,以该hash值作为认证符。2023-7-31基本的认证系统模型2023-7-31音讯认证码音讯认证码,简称MAC(Message Authentication Code),是一种运用密钥的认证技术,它应用密钥来生成一个固定长度的短数据块,并将该数据块附加在音讯之后。在这种方法中假定通讯双方A和B共享密钥K。假定A向B发送音讯M时,那么A运用音讯M和密钥K,计算MACC(K,M)2023-7-31音讯认证码的运用2023-7-31音讯认证码的运用续2023-7-31MAC的平安要求MAC中运用了密钥,这点和对称密钥加密一样,假设密钥走漏了或许被攻击了
4、,那么MAC的平安性那么无法保证。在基于算法的加密函数中,攻击者可以尝试一切能够的密钥以停止穷举攻击,普通对k位的密钥,穷举攻击需求2(k-1)步。2023-7-31对MAC的攻击第一轮 给定M1,MAC1CK(M1)对一切2k个密钥判别MACiCKi(M1)婚配数2(k-n)。第二轮 给定M2,MAC2CK(M2)对循环1中找到的2(k-n)个密钥判别MACiCKi(M2)婚配数2(k-2n)。攻击者可以按此方法不时对密钥停止测试,直到将婚配数缩写到足够小的范围。平均来讲,假定k=an,那么需a次循环2023-7-31针对MAC算法的攻击攻击者针对下面的MAC算法,那么不需求运用穷举攻击即可
5、取得密钥信息。设音讯M(X1|X2|Xm),即由64位分组Xi结合而成。定义(M)X1X2 XmCk(M)=EK(M)攻击者可以用任何希冀的Y1至Ym-1替代X1至Xm-1,用Ym替代Xm来停止攻击,其中Ym如下计算的:YmY1Y2Ym-1(M)攻击者可以将Y1至Ym-1与原来的MAC连结成一个新的音讯M,接纳方收到(M,Ck(M)时,由于(M)=Y1 Y2 Ym=(M),因此Ck(M)=EK(M),接受者会以为该音讯是真实。用这种方法,攻击者可以随意拔出恣意的长为64(m-1)位的音讯。2023-7-31MAC的性质一个平安的MAC函数应具有以下性质:假定攻击者知道M和Ck(M),那么他结构
6、满足Ck(M)=Ck(M)的音讯M在计算上是不可行的。Ck(M)应是平均散布的,即对任何随机选择的音讯M和M,Ck(M)=Ck(M)的概率是2-n,其中n是MAC的位数。设M是M 的某个的变换,即M=f(M),那么Ck(M)=Ck(M)的概率为2-n。2023-7-31基于DES的音讯认证码 2023-7-31Hash函数Hash函数(也称散列函数或杂凑函数)是将恣意长的输入音讯作为输入生成一个固定长的输入串的函数,即h=H(M)。这个输入串h称为该音讯的散列值或音讯摘要,或杂凑值。2023-7-31平安的Hash函数的要求H可以运用于恣意长度的数据块,发生固定长度的散列值;对每一个给定的输入
7、m,计算H(m)是很容易的;给定Hash函数的描画,关于给定的散列值h,找到满足H(m)=h的m在计算上是不可行的;给定Hash函数的描画,关于给定的音讯m1,找到满足m2m1且H(m2)=H(m1)的m2在计算上是不可行的;找就任何满足H(m1)=H(m2)且m1 m2的音讯对(m1,m2)在计算上是不可行的。2023-7-31平安的Hash函数的要求H可以运用于恣意长度的数据块,发生固定长度的散列值;对每一个给定的输入m,计算H(m)是很容易的;给定Hash函数的描画,关于给定的散列值h,找到满足H(m)=h的m在计算上是不可行的;给定Hash函数的描画,关于给定的音讯m1,找到满足m2m
8、1且H(m2)=H(m1)的m2在计算上是不可行的;找就任何满足H(m1)=H(m2)且m1 m2的音讯对(m1,m2)在计算上是不可行的。2023-7-31Hash的普通结构2023-7-312023-7-31Hash函数的平安要求1单向性:对任何给定的散列码h,找到满足H(x)h的x在计算上是不可行的。2抗弱碰撞性:对任何给定的音讯x,找到满足yx且H(x)=H(y)的y在计算上是不可行的。3抗强碰撞性:找就任何满足H(x)=H(y)的偶对(x,y)在计算上是不可行的。2023-7-31生日攻击Birthday Attack假设攻击者希望伪造音讯M的签名来诈骗接纳者,那么他需求找到满足H(
9、M)=H(M)的M来替代M。关于生成64位散列值的散列函数,平均需求尝试263次以找到M。但是树立在生日悖论上的生日攻击法,那么会更有效。关于上述效果换种说法:假定一个函数有n个函数值,且一个函数值H(x)。任选k个恣意数作为函数的输入值,那么k必需为多大才干保证至少找到一个输入值y且H(x)=H(y)的概率大于0.5?2023-7-31生日悖论我们可以如下描画这类效果:k为多大时,在k团体中至少找到两团体的生日相反的概率大于0.5?不思索二月二十九日并且假定每个生日出现的概率相反。2023-7-31首先k团体的生日陈列的总数目是365k。这样,k团体有不同生日的陈列数为:因此,k团体有不同生
10、日的概率为不重复的陈列数除以总数目,失掉:那么,k团体中,至少找到两团体同日出生的概率是:2023-7-31Yuval的生日攻击(1)合法的签名方关于其以为合法的音讯情愿运用自己的私钥对该音讯生成的m位的散列值停止数字签名。(2)攻击者为了伪造一份有(1)中的签名者签名的音讯,首先发生一份签名方将会赞同签名的音讯,再发生出该音讯的2m/2种不同的变化,且每一种变化表达相反的意义如:在文字中参与空格、换行字符。然后,攻击者再伪造一条具有不赞同义的新的音讯,并发生出该伪造音讯的2m/2种变化。2023-7-31Yuval的生日攻击续(3)攻击者在上述两个音讯集合中找出可以发生相反散列值的一对音讯。
11、依据生日悖论实际,能找到这样一对音讯的概率是十分大的。假设找不到这样的音讯,攻击者再发生一条有效的音讯和伪造的音讯,并添加每组中的明文数目,直至成功为止。(4)攻击者用第一组中找到的明文提供应签名方要求签名,这样,这个签名就可以被用来伪造第二组中找到的明文的数字签名。这样,即使攻击者不知道签名私钥也能伪造签名。2023-7-31中间相遇攻击法Meet in the Middle Attack(1)依据数字签名的明文,先发生散列函数值h。(2)再依据意图伪造签名的明文,将其分红每个64位长的明文分组:Q1,Q2,QN-2。Hash函数的紧缩算法为:hi=EQihi-1,1iN-2。(3)恣意发生
12、232个不同的X,对每个X计算EXhN-2。异样的,恣意发生232个不同的Y,对每个Y计算DYG,D是相对应E的解密函数。2023-7-31中间相遇攻击法Meet in the Middle Attack-续(4)依据生日悖论,有很大的概率可以找到一堆X及Y满足EXhN-2=DYG。(5)假设找到了这样的X和Y,攻击者重新结构一个明文:Q1,Q2,QN-2,X,Y。这个新的明文的散列值也为h,因此攻击者可以运用的数字签名为这个结构的明文伪造新的明文的签名。2023-7-31MD5 MD5Message-Digest Algorithm 5是由Ronald L.RivestRSA算法中的R这90
13、年代初开收回来的,经MD2、MD3和MD4开展而来。它比MD4复杂,但设计思想相似,异样生成一个128位的信息散列值。其中,MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的计算机。2004年8月,在美国召开的国际密码学会议Crypto2004上,王小云教授给出破解MD5、HAVAL-128、MD4和RIPEMD算法的报告。给出了一个十分高效的寻觅碰撞的方法,可以在数个小时内找到MD5的碰撞。2023-7-31MD5算法步骤 1填充音讯:恣意长度的音讯首先需求停止填充处置,使得填充后的音讯总长度与448模512同余即填充后的音讯长度448 mod 512。填充的方法是在音讯前面
14、添加一位1,后续都是0。2添加原始音讯长度:在填充后的音讯前面再添加一个64位的二进制整数表示填充前原始音讯的长度。这时经过处置后的音讯长度正好是512位的倍数。3初始值IV的初始化:MD5中有四个32位缓冲区,用A,B,C,D表示,用来存储散列计算的中间结果和最终结果,缓冲区中的值被称为链接变量。首先将其区分初始化为为:A=0 x01234567,B=0 x89abcdef,C=0 xfedcba98,D=0 x76543210。2023-7-31MD5算法步骤-续 4以512位的分组为单位对音讯停止循环散列计算:经过处置的音讯,以512位为单位,分红N个分组,用Y0,Y1,YN-1。MD5
15、对每个分组停止散列处置。每一轮的处置会对A,B,C,D停止更新。5输入散列值:一切的N个分组音讯都处置完后,最后一轮失掉的四个缓冲区的值即为整个音讯的散列值。2023-7-31MD5算法步骤-续2023-7-31MD5运用举例1.应用给出的应用给出的MD5顺序对顺序对hello world!停止处置,计算它的停止处置,计算它的HASH值。值。2.微软的系统软件都有微软的系统软件都有MD5验证,尝试查验证,尝试查找软件的找软件的MD5值。在值。在WINDOWS操作系操作系统中,可以经过末尾统中,可以经过末尾运转运转sigverif命令,应用数字签名查找验证命令,应用数字签名查找验证非非WINDO
16、WS的系统软件。的系统软件。2023-7-31SHA-512算法步骤对音讯停止填充:对原始音讯停止填充使其对音讯停止填充:对原始音讯停止填充使其长度与长度与896模模1024同余同余(即填充后的音讯长度即填充后的音讯长度896 mod 1024)。即使原始音讯曾经满足。即使原始音讯曾经满足上述长度要求,依然需求停止填充,因此填上述长度要求,依然需求停止填充,因此填充位数在充位数在1到到1024之间。填充局部由一个之间。填充局部由一个1和和后续的后续的0组成。组成。添加音讯长度信息:在填充后的音讯后添加添加音讯长度信息:在填充后的音讯后添加一个一个128位的块,用来说明填充前音讯的长度,位的块,
17、用来说明填充前音讯的长度,表示为一个无符号整数表示为一个无符号整数(最高有效字节在前最高有效字节在前)。至此,发生了一个长度为至此,发生了一个长度为1024整数倍的扩展整数倍的扩展音讯。音讯。2023-7-31SHA-512算法步骤初始化初始化Hash缓冲区:缓冲区:Hash函数计算的中间结果和函数计算的中间结果和最终结果保管在最终结果保管在512位的缓冲区中,区分用位的缓冲区中,区分用64比特比特的寄存器的寄存器(A,B,C,D,E,F,G,H)表示,并将这些寄存器表示,并将这些寄存器初始化为以下初始化为以下64位的整数位的整数(十六进制值十六进制值):A 0 x6A09E667F3BCC9
18、08B 0 x BB67AE8584CAA73B C 0 x 3C6EF372FE94F82BD 0 x A54FF53A5F1D36F1E=0 x 510E527FADE682D1F=0 x 9B05688C2B3E6C1FG=0 x 1F83D9ABFB41BD6BH=0 x 5BE0CD19137E21792023-7-31SHA-512算法步骤-续以以1024位分组位分组16个字为单位处置个字为单位处置音讯:处置算法的中心是需求停止音讯:处置算法的中心是需求停止80轮轮运算的模块。运算的模块。输入:一切的输入:一切的N个个1024位分组都处置完位分组都处置完以后,最后输入的即是以后,最
19、后输入的即是512位的音讯散位的音讯散列值。列值。2023-7-31SHA-512算法步骤-续2023-7-31 SHA-512每一步的中心处置2023-7-31HMACHMAC的设计目的包括:可以直接运用现有的Hash函数;不针关于某一个Hash函数,可以依据需求改换Hash函数模块;可坚持Hash函数的原有功用,不能过火降低其功用;对密钥的运用和处置应较复杂;假设嵌入的Hash函数的强度,那么可以知道认证机制抵抗密码剖析的强度。2023-7-31HMAC的结构 2023-7-31HMAC的完成方案的完成方案2023-7-31数字签名 数字签名也是一种认证机制,它是公钥密码学开展进程中的一个
20、重要组成局部,是公钥密码算法的典型运用。数字签名的运用进程是,数据源发送方运用自己的私钥对数据校验和或其他与数据内容有关的信息停止处置,完成对数据的合法签名,数据接纳方那么应用发送方的公钥来验证收到的音讯上的数字签名,以确认签名的合法性。2023-7-31数字签名 数字签名需求满足以下条件:签名的结果必需是与被签名的音讯相关的二进制位串;签名必需运用发送方某些独有的信息发送者的私钥,以防伪造和否认;发生数字签名比拟容易;识别和验证签名比拟容易;给定数字签名和被签名的音讯,伪造数字签名在计算上是不可行的。保管数字签名的拷贝,并由第三方停止仲裁是可行的。2023-7-31数字签名的典型运用(1)音
21、讯发送方式与散列函数对音讯停止计算,失掉音讯的散列值。(2)发送方运用自己的私钥对音讯散列值停止计算,失掉一个较短的数字签名串。(3)这个数字签名将和音讯一同发送给接纳方。(4)接纳方首先从接纳到的音讯中用异样的散列函数计算出一个音讯摘要,然后运用这个音讯摘要、发送者的公钥以及收到的数字签名,停止数字签名合法性的验证。2023-7-31Schnorr数字签名 系统参数的选择系统参数的选择 p,q:满足:满足q|p-1,q2160,q 2512 g:gZp,满足,满足gq=1 mod p,g 1 H:散列函数:散列函数 x:用户的私钥,:用户的私钥,1xq y:用户的公钥,:用户的公钥,y=gx
22、 mod p2023-7-31Schnorr数字签名 签名签名 设要签名的音讯为设要签名的音讯为M,0Mp。签名者。签名者随机选择一整数随机选择一整数k,1kq,并计算:,并计算:e=H(r,M)s=k xe mod q(e,s)即为即为M的签名。签名者将的签名。签名者将M 连同连同(r,s)一同寄存,或发送给验证者。一同寄存,或发送给验证者。2023-7-31Schnorr数字签名 验证验证 验证者取得验证者取得M和和(e,s),需求验证,需求验证(e,s)能能否是否是M的签名。的签名。计算:计算:r=gsre mod p 反省反省H(r,M)=e能否正确,假定是,能否正确,假定是,那么那么
23、(e,s)为为M的合法签名。的合法签名。2023-7-31DSS DSA的系统参数选择如下:的系统参数选择如下:p:512的素数,其中的素数,其中2L-1p2L,512L1024,且,且L是是64的倍数,即的倍数,即L的位长在的位长在512至至1024之间并且其增量为之间并且其增量为64位。位。q:160位的素数且位的素数且q|p-1。g:满足:满足g=h(p-1)/q mod p H:为散列函数:为散列函数 x:用户的私钥,:用户的私钥,0 xq y:用户的公钥,:用户的公钥,y=gx mod p p、q、g为系统发布的公共参数,与公钥为系统发布的公共参数,与公钥y地下;私钥地下;私钥x保密
24、。保密。2023-7-31DSS 签名签名 设要签名的音讯为设要签名的音讯为M,0Mp。签名者。签名者随机选择一整数随机选择一整数k,0kq,并计算:,并计算:r=(gk mod p)mod q s=k-1(H(M)+xr)mod q(r,s)即为即为M的签名。签名者将的签名。签名者将M 连同连同(r,s)一同寄存,或发送给验证者。一同寄存,或发送给验证者。2023-7-31DSS 验证验证 验证者取得验证者取得M和和(r,s),需求验证,需求验证(r,s)能否是能否是M的签名。的签名。首先反省首先反省r和和s能否属于能否属于0,q,假定不是,那,假定不是,那么么(r,s)不是签名值。不是签名
25、值。否那么,计算:否那么,计算:w=s-1 mod q u1=(H(M)w)mod q u2=rw mod q v=(gu1yu2)mod p)mod q 假设假设v=r,那么所取得的,那么所取得的(r,s)是是M的合法签名。的合法签名。2023-7-31仲裁数字签名仲裁数字签名 仲裁签名中除了通讯双方外,还有一个仲裁签名中除了通讯双方外,还有一个仲裁方仲裁方 发送方发送方A发送给发送给B的每条签名的音讯都的每条签名的音讯都先发送给仲裁者先发送给仲裁者T,T对音讯及其签名停对音讯及其签名停止反省以验证音讯源及其内容,反省无误止反省以验证音讯源及其内容,反省无误后给音讯加上日期再发送给后给音讯加
26、上日期再发送给B,同时指明,同时指明该音讯已经过仲裁者的检验。该音讯已经过仲裁者的检验。仲裁数字签名实践上触及到多余一步的仲裁数字签名实践上触及到多余一步的处置,仲裁者的参与使得关于音讯的验证处置,仲裁者的参与使得关于音讯的验证具有了实时性。具有了实时性。2023-7-31仲裁数字签名仲裁数字签名 (1)AT:M|EKATIDA|H(M)(2)TB:EKTBIDA|M|EKATIDA|H(M)|T(1)AT:IDA|EPRAIDA|EPUB(EPRAM)(2)TB:EPRTIDA|EPUBEPRAM|T2023-7-31盲签名盲签名 盲签名是Chaum在1982年终次提出的,并应用盲签名技术提
27、出了第一个电子现金方案。盲签名由于具有盲性这一特点,可以有效的维护所签名的音讯的详细内容,所以在电子商务等范围有着普遍的运用。盲签名允许音讯发送者先将音讯盲化,然后让签名者对盲化的音讯停止签名,最后音讯拥有者对签名除去盲因子,失掉签名者关于原音讯的签名。2023-7-31盲签名的性质盲签名的性质 它除了满足普通的数字签名条件外,还必需满足下面的两条性质:1.签名者不知道其所签名的音讯的详细内容。2.签名音讯不可追踪,即当签名音讯被发布后,签名者无法知道这是他哪次的签署的。2023-7-31盲签名的步骤盲签名的步骤 A希冀取得对音讯m的签名,B对音讯m的盲签名的完成描画如下:盲化:A关于音讯停止
28、处置,运用盲因子分解新的音讯M并发作给B;签名:B对音讯M签名后,将签名(M,sign(M)前往给给A;去盲:A去掉盲因子,从对M的签名中失掉B对m的签名。2023-7-31好的盲签名的性质好的盲签名的性质 不可伪造性:除了签名者自己外,任何人都不不可伪造性:除了签名者自己外,任何人都不能以他的名义生成有效的盲签名。能以他的名义生成有效的盲签名。不可供认性:签名者一旦签署了某个音讯,他不可供认性:签名者一旦签署了某个音讯,他无法否认自己对音讯的签名。无法否认自己对音讯的签名。盲性:签名者虽然对某个音讯停止了签名,但盲性:签名者虽然对某个音讯停止了签名,但他不能够失掉音讯的详细内容。他不能够失掉
29、音讯的详细内容。不可跟踪性:一旦音讯的签名地下后,签名者不可跟踪性:一旦音讯的签名地下后,签名者不能确定自己何时签署的这条音讯。不能确定自己何时签署的这条音讯。2023-7-31代理签名代理签名 代理签名的目的是当某签名人因某种缘由不能行使签名权利时,将签名权委派给其他人替自己行使签名权。由原始签名者局部授权代理签名者,使代理签名者发生替代原始签名的签名就是代理数字签名。这个概念是由Mambo,Usada和Okamoto于1996年首先提出的,并且给出了一个代理签名方案。2023-7-31MOU盲签名盲签名 系统参数 p是一个大素数,q为p-1的大素因子,gZp*,且gq 1 mod p。原始
30、签名者A、代理签名者B的私钥为PRA、PRB1,2,.,q-1;公钥区分为:PUA=gPRA mod p、PUB=gPRB mod p。代理2023-7-31MOU盲签名盲签名 签名步骤如下:签名步骤如下:1)发生代理密钥:发生代理密钥:A随机选择一个数随机选择一个数k Zp*,计算,计算r=gk mod p,然后计算代理,然后计算代理签名密钥签名密钥s=(PRA+kr)modd q;2)代理密钥的传递:代理密钥的传递:A将将(s,r)以平安的以平安的方式发送给方式发送给B;3)代理密钥的验证:代理密钥的验证:B反省等式反省等式 gs=PUA rr mod p 能否成立,假设成立那么接受,否那能否成立,假设成立那么接受,否那么拒绝;么拒绝;2023-7-31MOU盲签名盲签名 4)代理签名者对音讯签名:关于音讯m,B将s作为新的私钥替代PRA运用签名算法发生对m的签名sP=sig(s,m),然后将(sp,r)作为他代表A关于音讯m的数字签名(即代理签名);5)代理签名的验证:接纳方收到音讯m和代理签名(sp,r),验证ver(PUA,(sp,r),m)=true,能否成立,假设成立那么以为代理签名成立,否那么拒绝。2023-7-31