第四章-数字签名与认证技术课件.ppt
《第四章-数字签名与认证技术课件.ppt》由会员分享,可在线阅读,更多相关《第四章-数字签名与认证技术课件.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、17:02:39 在网络环境下,数字签名与认证技术是信在网络环境下,数字签名与认证技术是信息完整性和不可否认性的重要保障,是公钥密息完整性和不可否认性的重要保障,是公钥密码体制的重要应用。信息的发送方可以对电子码体制的重要应用。信息的发送方可以对电子文档生成数字签名,信息的接收方则在收到文文档生成数字签名,信息的接收方则在收到文档及其数字签名后,可以验证数字签名的真实档及其数字签名后,可以验证数字签名的真实性。身份认证则是基于数字签名技术为网络世性。身份认证则是基于数字签名技术为网络世界中实体的身份提供可验证性。界中实体的身份提供可验证性。 17:02:40本章内容提要本章内容提要: :l 数
2、字签名的概念与原理数字签名的概念与原理l 消息认证与哈希函数消息认证与哈希函数 l 数字签名体制数字签名体制 l 身份认证技术身份认证技术l 认证技术应用案例认证技术应用案例 l 认证技术的发展趋势认证技术的发展趋势17:02:404.1 4.1 数字签名的概念与原理数字签名的概念与原理 数字签名是密码学和信息安全中最重要数字签名是密码学和信息安全中最重要和最有用的概念之一。它的诞生使得在网络和最有用的概念之一。它的诞生使得在网络环境下,任一实体(组织或者个人)对在网环境下,任一实体(组织或者个人)对在网络上传输的电子文件进行签名成为可能。任络上传输的电子文件进行签名成为可能。任何得到该签名的
3、实体可以对签名的有效性进何得到该签名的实体可以对签名的有效性进行验证。行验证。17:02:40 4.1 4.1 数字签名的概念与原理数字签名的概念与原理17:02:40 概念概念 数字签名是以密码学的方法对数据文件作数字签名是以密码学的方法对数据文件作用产生的一组代表签名者身份与数据完整性用产生的一组代表签名者身份与数据完整性的数据信息,通常附加在数据文件的后面。的数据信息,通常附加在数据文件的后面。数据文件的接收者可以利用签名者的公钥作数据文件的接收者可以利用签名者的公钥作用于数字签名上,以验证数据文件的真实性、用于数字签名上,以验证数据文件的真实性、完整性。完整性。17:02:40 4.1
4、 4.1 数字签名的概念与原理数字签名的概念与原理17:02:40 原理原理 数字签名就是用私有密钥进行加密,而数字签名就是用私有密钥进行加密,而认证就是利用公开密钥进行正确的解密。认证就是利用公开密钥进行正确的解密。数数字签名的原理字签名的原理如图所示如图所示 17:02:41 一个基于公钥密码学的数字签名方案被定义为一个基于公钥密码学的数字签名方案被定义为一个一个算法三元组算法三元组( (GenGen, , SigSig, , VerVer) ),方案中共有两方,方案中共有两方参与:参与:签名者签名者SignerSigner与与验证者验证者VerifierVerifier。 l 密钥生成算
5、法密钥生成算法GenGen l 签名生成算法签名生成算法SigSigl 签名验证算法签名验证算法VerVer 它是一个概率多项式时间算法,它是一个概率多项式时间算法,由系统或者签名者执行,该算法由系统或者签名者执行,该算法以系统安全参数以系统安全参数1 1k k为输入,输出为输入,输出密钥对(密钥对(PkPk, ,SkSk),其中),其中PkPk称为称为签名者公开密钥,签名者公开密钥,SkSk为签名者秘为签名者秘密钥;即密钥;即GenGen(1(1k k)()(PkPk, , Sk Sk) )。 它是一个概率多项式时间算法,它是一个概率多项式时间算法,由签名者执行,该算法以签名秘密由签名者执行
6、,该算法以签名秘密密钥密钥SkSk,待签名消息,待签名消息m m0,10,1k k为输为输入,输出一个串入,输出一个串s s。此时称。此时称s s为签名为签名者以签名秘密密钥者以签名秘密密钥SkSk对消息对消息m m所做的所做的签名,即签名,即SigSig( (SkSk, ,m m)s s。 它是一个确定性算法,由验证者执它是一个确定性算法,由验证者执行,该算法以签名公开密钥行,该算法以签名公开密钥PkPk,签名,签名消息对消息对( (m m, , s s) )为输入,输出为输入,输出0 0或或1 1,即,即VerVer( (PkPk, ,m m, ,s s)0,1)0,1,如果,如果s sS
7、igSig( (m m) ),则输出,则输出1 1说明签名有效;说明签名有效;反之输出反之输出0 0,则说明签名无效,则说明签名无效 17:02:41 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 17:02:41 哈希(哈希(HashHash)函数是一个输入为任意长的二元)函数是一个输入为任意长的二元串,输出为固定长度的二元串的函数。一般用串,输出为固定长度的二元串的函数。一般用H H()()表示哈希函数,若输出是长度为表示哈希函数,若输出是长度为l l的二元串,的二元串,哈希函数表示为:哈希函数表示为:H H():0,1():0,1* *0,10,1l l定义定义17:02:42哈
8、希函数哈希函数H H():0,1():0,1* *0,10,1l l称为具有单向性,是指称为具有单向性,是指1 1)任意给定任意给定M M0,10,1* *,可以很容易(多,可以很容易(多项式时间内)地计算出消息摘要项式时间内)地计算出消息摘要H H( (M M)0,1)0,1l l。2 2)任意给定任意给定H H( (M M)0,1)0,1l l,求出,求出M M0,10,1* *,在计算上困难的,即多项式时,在计算上困难的,即多项式时间内不可解。间内不可解。定义定义17:02:42 哈希函数哈希函数H H():0,1():0,1* *0,10,1l l称为具有抗称为具有抗第二原像性(第二原
9、像性(Second Preimage ResistantSecond Preimage Resistant),),是指任意给定是指任意给定M M0,10,1* *及其信息摘要及其信息摘要H H( (M M) ),求,求出出MM0,10,1* *且且M MM M,使得,使得H H( (M M)=)=H H( (M M) )是是困难的。困难的。定义定义17:02:42 哈希函数哈希函数H H():0,1():0,1* *0,10,1l l称为具有抗称为具有抗碰撞性(碰撞性(Collision ResistantCollision Resistant),是指求出任),是指求出任意意M M, ,MM0
10、,10,1* *,且,且M MM M,使得,使得H H( (M M)=)=H H( (M M) )是困难的。是困难的。 由上面的四个定义可以知道,哈希函数由上面的四个定义可以知道,哈希函数应该具有应该具有单向性、抗原像性、抗第二原像性单向性、抗原像性、抗第二原像性以及抗碰撞性以及抗碰撞性。 定义定义17:02:42 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 17:02:42 由由MerkleMerkle提出的迭代哈希函数一般结构提出的迭代哈希函数一般结构如图如图所示所示,这也是目前大多数哈希函数(,这也是目前大多数哈希函数(MD5MD5、SHA-1SHA-1、RIPEMDRIPEM
11、D)的结构。其中,)的结构。其中,IVIV称为初始向量,称为初始向量,CVCV称称为链接变量,为链接变量,Y Yi i是第是第i i+1+1个输入消息分组,个输入消息分组,f f称为称为压缩函数,压缩函数,L L为输入的分组数,为输入的分组数,l l为哈希函数的输为哈希函数的输出长度,出长度,b b为输入分组长度。为输入分组长度。17:02:42 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 17:02:42安全哈希函数(安全哈希函数(SHASHA) 由美国国家标准和技术协会由美国国家标准和技术协会(NISTNIST)提出的,于)提出的,于19931993年作为年作为美国联邦消息处理标
12、准(美国联邦消息处理标准(FIPS FIPS PUB 180PUB 180)公布。)公布。19951995年年NISTNIST发发布了它的修订版(布了它的修订版(FIPS 180-1FIPS 180-1),),通常称为通常称为SHA-1SHA-1 SHA-1SHA-1算法具体的处理步骤算法具体的处理步骤 步骤步骤1 1: 附加填充比特附加填充比特步骤步骤2: 附加长度值附加长度值步骤步骤3 3: 初始化初始化MDMD缓存缓存步骤步骤4 4: 以以512512比特(比特(1616个字)分组处理消息个字)分组处理消息 首先对报文进行填充,填充方法首先对报文进行填充,填充方法是:先添加一个比特是:先
13、添加一个比特1 1,然后填充,然后填充足够多的比特足够多的比特0 0,使填充后的报文,使填充后的报文的长度与的长度与448448模模512512同余,即为同余,即为512512的倍数刚好减去的倍数刚好减去6464比特比特 将一个将一个6464比特的填充前的消比特的填充前的消息的长度分组附加到报文后息的长度分组附加到报文后面,这个面,这个6464比特的长度被看比特的长度被看作是一个无符号整数作是一个无符号整数 SHA-1SHA-1算法使用了算法使用了160160比特比特(5 53232比特)的缓存来存放比特)的缓存来存放中间以及最终结果,这中间以及最终结果,这160160比比特被分成特被分成5
14、5个个3232比特字比特字H H0 0,H H1 1,H H2 2,H H3 3,H H4 4(SHA-1SHA-1算法中每算法中每个字个字3232比特)比特) 消息开头循环地处理消息序列消息开头循环地处理消息序列分组,直至消息的结尾。每一分组,直至消息的结尾。每一次循环都以当前处理的次循环都以当前处理的512512比比特分组和特分组和MDMD缓存缓存H H0 0,H H1 1,H H2 2,H H3 3,H H4 4作为输入。作为输入。 步骤步骤5 5: 输出输出 在最后一个消息分组处理完在最后一个消息分组处理完毕后,毕后,MDMD缓存(缓存(H H0 0,H H1 1,H H2 2,H H
15、3 3,H H4 4)中的值即为算法输)中的值即为算法输出的出的160160比特报文摘要比特报文摘要 17:02:42对于对于步骤步骤4 4的每一次循环又可分为三个阶段的每一次循环又可分为三个阶段阶段阶段1 1:复制中间变量复制中间变量 阶段阶段2 2:执行压缩函数执行压缩函数F F 阶段阶段3 3:更新更新MDMD缓存缓存H H0 0,H H1 1,H H2 2,H H3 3,H H4 4 把把H H0 0,H H1 1,H H2 2,H H3 3,H H4 4分别分别复制到中间变量复制到中间变量A A,B B,C C,D D,E E中,阶段中,阶段2 2的所有操作都将的所有操作都将在中间变
16、量在中间变量A A,B B,C C,D D,E E上进行上进行 SHA-1SHA-1每一个主循环压缩每一个主循环压缩函数函数F F共包括共包括8080个操作,个操作,每个操作中都使用了一每个操作中都使用了一个非线性函数。个非线性函数。 在所有在所有8080个操作完成后,算个操作完成后,算法的下列步骤更新法的下列步骤更新MDMD缓存缓存 17:02:43【例例】 SHA-1SHA-1算法举例。算法举例。字符串字符串“abc”abc”的二进制表示为的二进制表示为01100001 01100010 01100001 01100010 0110001101100011,长度为,长度为2424比特,则按
17、照比特,则按照SHA-1SHA-1的填充要求,应填充的填充要求,应填充1 1个个“1”1”和和423423个个“0”0”,最后有两个字为,最后有两个字为“0000000000000018”0000000000000018”,表明原始消息的长度为,表明原始消息的长度为2424比特。比特。这样,这个输入只有一个这样,这个输入只有一个512512比特的分组。五个寄存器取如下的初始值:比特的分组。五个寄存器取如下的初始值:A A=67452301=67452301B B=EFCDAB89=EFCDAB89C C=98BADCFE=98BADCFED D=10325476=10325476E E=C3D
18、2E1F0=C3D2E1F0消息分组的所有字取上述经过填充后的消息分组的所有字取上述经过填充后的512512比特分组,即:比特分组,即:W W0=61626380H0=61626380H(01100001 01100010 01100011 1000000001100001 01100010 01100011 10000000),),W W1=1=W W2=2=W W14=00000000H14=00000000H,W W15= 00000018H15= 00000018H。在经过在经过8080步循环后,五个寄存器中的值分别如下:步循环后,五个寄存器中的值分别如下:A A=A9993E36=A
19、9993E36B B=4706816A=4706816AC C=BA3E2571=BA3E2571D D=7850C26C=7850C26CE E=9CD0D89D=9CD0D89D五个寄存器的值顺序排列,即得到消息五个寄存器的值顺序排列,即得到消息“abc”abc”的哈希函数的哈希函数值值 17:02:43 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 17:02:43 消息认证消息认证 消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法 消息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其消
20、息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其二是消息的认证,即验证信息在传送过程中未被篡改。二是消息的认证,即验证信息在传送过程中未被篡改。 1 1)消息认证码消息认证码MACMAC(Message Authentication CodeMessage Authentication Code):是以:是以消息和密钥作为输入的公开函数,可以生成定长的输出。该方法消息和密钥作为输入的公开函数,可以生成定长的输出。该方法需要在信息的发送方和接收方之间共享密钥。需要在信息的发送方和接收方之间共享密钥。2 2)哈希函数:哈希函数:是不带密钥的公开函数,它将任意长度的输入是不带密钥
21、的公开函数,它将任意长度的输入消息映射为固定长度的输出值。哈希函数与数字签名算法相结合,消息映射为固定长度的输出值。哈希函数与数字签名算法相结合,提供对于消息的完整性检验。提供对于消息的完整性检验。17:02:43基于密钥哈希函数的基于密钥哈希函数的MACMAC 基于密钥哈希函数的基于密钥哈希函数的MACMAC的形式如下。的形式如下。MACMAC= =H H( (k kM M) ) HMACHMAC= = H H ( (k kM Mk k) )使用哈希函数构造的使用哈希函数构造的MACMAC,称为,称为HMACHMAC 17:02:43基于分组加密算法的基于分组加密算法的MACMAC 令令e
22、ek k( (m m) )表示输入消息为表示输入消息为m m,密钥为,密钥为k k的分组密的分组密码加密算法。为了认证消息码加密算法。为了认证消息M M,发送者首先对,发送者首先对M M进进行分组:行分组:M M= =m m1 1m m2 2m ml l其中,每一个子消息组其中,每一个子消息组m mi i( (i i=1,2,=1,2, ,l l) )的长度的长度都等于分组加密算法输入的长度。如果最后一个都等于分组加密算法输入的长度。如果最后一个子消息组子消息组m ml l长度小于分组长度,就必须对其填充长度小于分组长度,就必须对其填充一些随机值。设一些随机值。设C C0 0= =IVIV为随
23、机初始向量。现在,为随机初始向量。现在,发送者用发送者用CBCCBC加密:加密:1()1,2,ikiiCmCil17:02:43 4.3 4.3 数字签名体制数字签名体制 17:02:44算法算法 RSA RSA签名体制。签名体制。密钥建立:密钥建立过程和密钥建立:密钥建立过程和RSARSA密码系统的密钥建立过程相密码系统的密钥建立过程相同。经过密钥建立过程,用户同。经过密钥建立过程,用户AliceAlice的公钥为的公钥为( (N N, ,e e) ),其中,其中N N= =pqpq,p p和和q q是两个长度差不多的大素数,是两个长度差不多的大素数,e e是满足是满足gcd(gcd(e e
24、, ,f f( (N N)=1)=1的整数。的整数。AliceAlice的私钥为的私钥为d d,满足,满足eded=1mod(=1mod(f f( (N N)。签 名 生 成 : 为 了 生 成 消 息 的 签 名 ,签 名 生 成 : 为 了 生 成 消 息 的 签 名 , A l i c eA l i c e 计 算计 算s s=Sign=Signd d( (m m)m md d(mod (mod N N) ),即得到消息签名对,即得到消息签名对( (m m, ,s s) )。签名验证:设签名验证:设BobBob是验证者,他知道公钥是验证者,他知道公钥( (N N, ,e e) )属于属于
25、AliceAlice。给定一个消息给定一个消息- -签名对签名对( (m m, ,s s) ),BobBob的验证过程为测试的验证过程为测试m ms se e(mod (mod N N) ),如果成立,则,如果成立,则VerifyVerify( (N N, ,e e) )( (m m, ,s s)=True)=True。17:02:44 4.3 4.3 数字签名体制数字签名体制 17:02:44算法算法1 1参数生成参数生成(1 1)公开参数公开参数设设p p是一个大素数,并确保在是一个大素数,并确保在Z Zp p中求解离散对数在计算上是困难问题;中求解离散对数在计算上是困难问题;g g是是Z
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 数字签名 认证 技术 课件
限制150内