
第四章数字签名与认证技术课件.ppt
63页第四章第四章 数字签名与认证技术数字签名与认证技术 在网络环境下,数字签名与认证技术是信在网络环境下,数字签名与认证技术是信息完整性和不可否认性的重要保障,是公钥密息完整性和不可否认性的重要保障,是公钥密码体制的重要应用信息的发送方可以对电子码体制的重要应用信息的发送方可以对电子文档生成数字签名,信息的接收方则在收到文文档生成数字签名,信息的接收方则在收到文档及其数字签名后,可以验证数字签名的真实档及其数字签名后,可以验证数字签名的真实性身份认证则是基于数字签名技术为网络世性身份认证则是基于数字签名技术为网络世界中实体的身份提供可验证性界中实体的身份提供可验证性 *本章内容提要本章内容提要: :l数字签名的概念与原理数字签名的概念与原理l消息认证与哈希函数消息认证与哈希函数 l数字签名体制数字签名体制 l身份认证技术身份认证技术l认证技术应用案例认证技术应用案例 l认证技术的发展趋势认证技术的发展趋势 第四章第四章 数字签名与认证技术数字签名与认证技术*4.1 4.1 数字签名的概念与原理数字签名的概念与原理 数字签名是密码学和信息安全中最重要数字签名是密码学和信息安全中最重要和最有用的概念之一。
它的诞生使得在网络和最有用的概念之一它的诞生使得在网络环境下,任一实体(组织或者个人)对在网环境下,任一实体(组织或者个人)对在网络上传输的电子文件进行签名成为可能任络上传输的电子文件进行签名成为可能任何得到该签名的实体可以对签名的有效性进何得到该签名的实体可以对签名的有效性进行验证*l l 数字签名的概念数字签名的概念数字签名的概念数字签名的概念 l l 数字签名的原理数字签名的原理数字签名的原理数字签名的原理 4.1 4.1 数字签名的概念与原理数字签名的概念与原理*l l 数字签名的概念数字签名的概念数字签名的概念数字签名的概念 概念概念 数字签名是以密码学的方法对数据文件作数字签名是以密码学的方法对数据文件作用产生的一组代表签名者身份与数据完整性用产生的一组代表签名者身份与数据完整性的数据信息,通常附加在数据文件的后面的数据信息,通常附加在数据文件的后面数据文件的接收者可以利用签名者的公钥作数据文件的接收者可以利用签名者的公钥作用于数字签名上,以验证数据文件的真实性、用于数字签名上,以验证数据文件的真实性、完整性*l l 数字签名的概念数字签名的概念数字签名的概念数字签名的概念 l l 数字签名的原理数字签名的原理数字签名的原理数字签名的原理 4.1 4.1 数字签名的概念与原理数字签名的概念与原理*l l 数字签名的原理数字签名的原理数字签名的原理数字签名的原理 原理原理 数字签名就是用私有密钥进行加密,而认数字签名就是用私有密钥进行加密,而认证就是利用公开密钥进行正确的解密。
证就是利用公开密钥进行正确的解密数字数字签名的原理签名的原理如图所示如图所示 *l l 数字签名的原理数字签名的原理数字签名的原理数字签名的原理 一个基于公钥密码学的数字签名方案被定义为一个基于公钥密码学的数字签名方案被定义为一个一个算法三元组算法三元组( (GenGen, , SigSig, , VerVer) ),方案中共有两方,方案中共有两方参与:参与:签名者签名者SignerSigner与与验证者验证者VerifierVerifier l 密钥生成算法密钥生成算法GenGen l 签名生成算法签名生成算法SigSigl 签名验证算法签名验证算法VerVer 它是一个概率多项式时间算法,它是一个概率多项式时间算法,由系统或者签名者执行,该算法由系统或者签名者执行,该算法以系统安全参数以系统安全参数1 1k k为输入,输出为输入,输出密钥对(密钥对(PkPk, ,SkSk),其中),其中PkPk称为称为签名者公开密钥,签名者公开密钥,SkSk为签名者秘为签名者秘密钥;即密钥;即GenGen(1(1k k)→()→(PkPk, , Sk Sk) ) 它是一个概率多项式时间算法,它是一个概率多项式时间算法,由签名者执行,该算法以签名秘密由签名者执行,该算法以签名秘密密钥密钥SkSk,待签名消息,待签名消息m m∈{0,1}∈{0,1}k 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 s∈∈SigSig( (m m) ),则输出,则输出1 1说明签名有效;说明签名有效;反之输出反之输出0 0,则说明签名无效,则说明签名无效 *l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质 l l 哈希函数的结构哈希函数的结构哈希函数的结构哈希函数的结构 4.2 4.2 消息认证与哈希函数消息认证与哈希函数l l 安全哈希函数(安全哈希函数(安全哈希函数(安全哈希函数(SHASHASHASHA)))) l l 消息认证消息认证消息认证消息认证*l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质 哈希(哈希(HashHash)函数是一个输入为任意长的二元)函数是一个输入为任意长的二元串,输出为固定长度的二元串的函数。
一般用串,输出为固定长度的二元串的函数一般用H H( (··) )表示哈希函数,若输出是长度为表示哈希函数,若输出是长度为l l的二元串,的二元串,哈希函数表示为:哈希函数表示为:H H( (··):{0,1}*→{0,1}):{0,1}*→{0,1}l l定义定义*l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质哈希函数哈希函数H H( (··):{0,1}*→{0,1}):{0,1}*→{0,1}l l称为具有单向性,是指称为具有单向性,是指1 1))任意给定任意给定M M∈{0,1}*∈{0,1}*,可以很容易(多,可以很容易(多项式时间内)地计算出消息摘要项式时间内)地计算出消息摘要H H( (M M)∈{0,1})∈{0,1}l l2 2))任意给定任意给定H H( (M M)∈{0,1})∈{0,1}l l,求出,求出M M∈{0,1}*∈{0,1}*,在计算上困难的,即多项式时,在计算上困难的,即多项式时间内不可解间内不可解定义定义*l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质 哈希函数哈希函数H H( (··):{0,1}*→{0,1}):{0,1}*→{0,1}l l称为具有抗称为具有抗第二原像性(第二原像性(Second Preimage ResistantSecond Preimage Resistant),),是指任意给定是指任意给定M M∈{0,1}*∈{0,1}*及其信息摘要及其信息摘要H H( (M M) ),求,求出出M′M′∈{0,1}*∈{0,1}*且且M M′≠′≠M M,使得,使得H H( (M M′)=′)=H H( (M M) )是是困难的。
困难的定义定义*l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质 哈希函数哈希函数H H( (··):{0,1}*→{0,1}):{0,1}*→{0,1}l l称为具有抗称为具有抗碰撞性(碰撞性(Collision ResistantCollision Resistant),是指求出任),是指求出任意意M M, ,M′M′∈{0,1}*∈{0,1}*,且,且M M′≠′≠M M,使得,使得H H( (M M′)=′)=H H( (M M) )是困难的是困难的 由上面的四个定义可以知道,哈希函数由上面的四个定义可以知道,哈希函数应该具有应该具有单向性、抗原像性、抗第二原像性单向性、抗原像性、抗第二原像性以及抗碰撞性以及抗碰撞性 定义定义*l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质 l l 哈希函数的结构哈希函数的结构哈希函数的结构哈希函数的结构 4.2 4.2 消息认证与哈希函数消息认证与哈希函数l l 安全哈希函数(安全哈希函数(安全哈希函数(安全哈希函数(SHASHASHASHA)))) l l 消息认证消息认证消息认证消息认证*l l 哈希函数的结构哈希函数的结构哈希函数的结构哈希函数的结构 由由MerkleMerkle提出的迭代哈希函数一般结构提出的迭代哈希函数一般结构如图如图所示所示,这也是目前大多数哈希函数(,这也是目前大多数哈希函数(MD5MD5、、SHA-1SHA-1、、RIPEMDRIPEMD)的结构。
其中,)的结构其中,IVIV称为初始向量,称为初始向量,CVCV称称为链接变量,为链接变量,Y Yi i是第是第i i+1+1个输入消息分组,个输入消息分组,f f称为称为压缩函数,压缩函数,L L为输入的分组数,为输入的分组数,l l为哈希函数的输为哈希函数的输出长度,出长度,b b为输入分组长度为输入分组长度*l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质 l l 哈希函数的结构哈希函数的结构哈希函数的结构哈希函数的结构 4.2 4.2 消息认证与哈希函数消息认证与哈希函数l l 安全哈希函数(安全哈希函数(安全哈希函数(安全哈希函数(SHASHASHASHA)))) l l 消息认证消息认证消息认证消息认证*l l 安全哈希函数(安全哈希函数(安全哈希函数(安全哈希函数(SHASHA))))安全哈希函数(安全哈希函数(SHASHA)) 由美国国家标准和技术协会由美国国家标准和技术协会((NISTNIST)提出的,于)提出的,于19931993年作为年作为美国联邦消息处理标准(美国联邦消息处理标准(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个字)分组处理消息个字)分组处理消息 首先对报文进行填充,填充方法首先对报文进行填充,填充方法是:先添加一个比特是:先添加一个比特1 1,然后填充,然后填充足够多的比特足够多的比特0 0,使填充后的报文,使填充后的报文的长度与的长度与448448模模512512同余,即为同余,即为512512的倍数刚好减去的倍数刚好减去6464比特比特 将一个将一个6464比特的填充前的消比特的填充前的消息的长度分组附加到报文后息的长度分组附加到报文后面,这个面,这个6464比特的长度被看比特的长度被看作是一个无符号整数作是一个无符号整数 SHA-1SHA-1算法使用了算法使用了160160比特比特((5 5××3232比特)的缓存来存放比特)的缓存来存放中间以及最终结果,这中间以及最终结果,这160160比比特被分成特被分成5 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 H3 3,,H H4 4)中的值即为算法输)中的值即为算法输出的出的160160比特报文摘要比特报文摘要 *l l 安全哈希函数(安全哈希函数(安全哈希函数(安全哈希函数(SHASHA))))对于对于步骤步骤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的所有操作都将的所有操作都将在中间变量在中间变量A A,,B B,,C C,,D D,,E E上进行上进行 SHA-1SHA-1每一个主循环压缩每一个主循环压缩函数函数F F共包括共包括8080个操作,个操作,每个操作中都使用了一每个操作中都使用了一个非线性函数。
个非线性函数 在所有在所有8080个操作完成后,算个操作完成后,算法的下列步骤更新法的下列步骤更新MDMD缓存缓存 *l l 安全哈希函数(安全哈希函数(安全哈希函数(安全哈希函数(SHASHA))))【例例】 SHA-1SHA-1算法举例算法举例字符串字符串““abcabc””的二进制表示为的二进制表示为01100001 01100010 01100001 01100010 0110001101100011,长度为,长度为2424比特,则按照比特,则按照SHA-1SHA-1的填充要求,应填充的填充要求,应填充1 1个个““1 1””和和423423个个““0 0””,最后有两个字为,最后有两个字为““00000000000000180000000000000018””,表明原始消息的长度为,表明原始消息的长度为2424比特这样,这个输入只有一个这样,这个输入只有一个512512比特的分组五个寄存器取如下的初始值:比特的分组五个寄存器取如下的初始值:A A=67452301=67452301B B=EFCDAB89=EFCDAB89C C=98BADCFE=98BADCFED D=10325476=10325476E E=C3D2E1F0=C3D2E1F0消息分组的所有字取上述经过填充后的消息分组的所有字取上述经过填充后的512512比特分组,即:比特分组,即:W W[0]=61626380H[0]=61626380H((01100001 01100010 01100011 1000000001100001 01100010 01100011 10000000),),W W[1]=[1]=W W[2]=[2]=……W W[14]=00000000H[14]=00000000H,,W W[15]= 00000018H[15]= 00000018H。
在经过在经过8080步循环后,五个寄存器中的值分别如下:步循环后,五个寄存器中的值分别如下:A A=A9993E36=A9993E36B B=4706816A=4706816AC C=BA3E2571=BA3E2571D D=7850C26C=7850C26CE E=9CD0D89D=9CD0D89D五个寄存器的值顺序排列,即得到消息五个寄存器的值顺序排列,即得到消息““abcabc””的哈希函数的哈希函数值值 *l l 哈希函数的性质哈希函数的性质哈希函数的性质哈希函数的性质 l l 哈希函数的结构哈希函数的结构哈希函数的结构哈希函数的结构 4.2 4.2 消息认证与哈希函数消息认证与哈希函数l l 安全哈希函数(安全哈希函数(安全哈希函数(安全哈希函数(SHASHASHASHA)))) l l 消息认证消息认证消息认证消息认证*l l 消息认证消息认证消息认证消息认证 消息认证消息认证 消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法 消息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其消息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其二是消息的认证,即验证信息在传送过程中未被篡改。
二是消息的认证,即验证信息在传送过程中未被篡改 1 1))消息认证码消息认证码MACMAC((Message Authentication CodeMessage Authentication Code)):是以:是以消息和密钥作为输入的公开函数,可以生成定长的输出该方法消息和密钥作为输入的公开函数,可以生成定长的输出该方法需要在信息的发送方和接收方之间共享密钥需要在信息的发送方和接收方之间共享密钥2 2))哈希函数:哈希函数:是不带密钥的公开函数,它将任意长度的输入是不带密钥的公开函数,它将任意长度的输入消息映射为固定长度的输出值哈希函数与数字签名算法相结合,消息映射为固定长度的输出值哈希函数与数字签名算法相结合,提供对于消息的完整性检验提供对于消息的完整性检验*l l 消息认证消息认证消息认证消息认证基于密钥哈希函数的基于密钥哈希函数的MACMAC 基于密钥哈希函数的基于密钥哈希函数的MACMAC的形式如下的形式如下MACMAC= =H H( (k k‖‖M M) ) HMACHMAC= = H H ( (k k‖‖M M‖‖k k) )使用哈希函数构造的使用哈希函数构造的MACMAC,称为,称为HMACHMAC *l l 消息认证消息认证消息认证消息认证基于分组加密算法的基于分组加密算法的MACMAC 令令e ek k( (m m) )表示表示输入消息入消息为m m,密,密钥为k k的分的分组密密码加密算法。
加密算法为了了认证消息消息M M,,发送者首先送者首先对M M进行分行分组::M M= =m m1 1m m2 2……m ml l其中,每一个子消息其中,每一个子消息组m mi i( (i i=1,2,=1,2,……, ,l l) )的的长度度都等于分都等于分组加密算法加密算法输入的入的长度如果最后一个度如果最后一个子消息子消息组m ml l长度小于分度小于分组长度,就必度,就必须对其填充其填充一些随机一些随机值设C C0 0= =IVIV为随机初始向量随机初始向量现在,在,发送者用送者用CBCCBC加密:加密:*l l RSA RSA RSA RSA数字签名体制数字签名体制数字签名体制数字签名体制 l l ELGamal ELGamal ELGamal ELGamal数字签名体制数字签名体制数字签名体制数字签名体制 4.3 4.3 数字签名体制数字签名体制l l 数字签名标准数字签名标准数字签名标准数字签名标准DSSDSSDSSDSS *l l RSA RSA数字签名体制数字签名体制数字签名体制数字签名体制算法算法 RSA RSA签名体制签名体制密密钥钥建建立立::密密钥钥建建立立过过程程和和RSARSA密密码码系系统统的的密密钥钥建建立立过过程程相相同同。
经经过过密密钥钥建建立立过过程程,,用用户户AliceAlice的的公公钥钥为为( (N N, ,e e) ),,其其中中N N= =pqpq,,p p和和q q是是 两两 个个 长长 度度 差差 不不 多多 的的 大大 素素 数数 ,,e e是是 满满 足足gcd(gcd(e e, ,f f( (N N))=1))=1的的 整整 数数 AliceAlice的的 私私 钥钥 为为d d,, 满满 足足eded=1mod(=1mod(f f( (N N))))签签 名名 生生 成成 :: 为为 了了 生生 成成 消消 息息 的的 签签 名名 ,, AliceAlice计计 算算s s=Sign=Signd d( (m m)←)←m md d(mod (mod N N) ),即得到消息签名对,即得到消息签名对( (m m, ,s s) )签签名名验验证证::设设BobBob是是验验证证者者,,他他知知道道公公钥钥( (N N, ,e e) )属属于于AliceAlice给给 定定 一一 个个 消消 息息 - -签签 名名 对对 ( (m m, ,s s) ),, BobBob的的 验验 证证 过过 程程 为为 测测 试试m m≡≡s se e(mod (mod N N) ),如果成立,则,如果成立,则VerifyVerify( (N N, ,e e) )( (m m, ,s s)=True)=True。
*l l RSA RSA RSA RSA数字签名体制数字签名体制数字签名体制数字签名体制 l l ELGamal ELGamal ELGamal ELGamal数字签名体制数字签名体制数字签名体制数字签名体制 4.3 4.3 数字签名体制数字签名体制l l 数字签名标准数字签名标准数字签名标准数字签名标准DSSDSSDSSDSS *l l RSA RSA数字签名体制数字签名体制数字签名体制数字签名体制算法算法1 1.参数生成.参数生成((1 1))公开参数公开参数设p p是一个大素数,并确保在是一个大素数,并确保在Z Zp p中求解离散中求解离散对数在数在计算上是困算上是困难问题;;g g是是Z Zp p中中乘法群乘法群 的一个生成元,或称为本原元素的一个生成元,或称为本原元素2 2))用户私钥参数用户私钥参数选定一个随机的选定一个随机的x,, ,作为用户的私钥作为用户的私钥3 3))用户公钥参数用户公钥参数计算计算y y≡≡g gx x mod mod p p作为用户的公钥作为用户的公钥由此设用户由此设用户AliceAlice的公私钥对为的公私钥对为( (x xA,A,y yA)A),,y yA A公开,而公开,而x xA A保密。
保密*l l RSA RSA数字签名体制数字签名体制数字签名体制数字签名体制2 2.生成.生成签名名AliceAlice欲生成欲生成对消息消息m m的的签名,名,则执行如下的行如下的签名名过程:程:1 1))随机随机选择k k,, ,并要求并要求gcd(gcd(k k, ,p p-1)=1-1)=12 2)计算签名:)计算签名:r r←←gkgk mod mod p p3 3)计算签名:)计算签名:s s←←k k-1(-1(m m- -x xA Ar r)mod()mod(p p-1)-1)得到消息签名对为得到消息签名对为( (m m,(,(r r, ,s s))))3 3..验证签名名设BobBob为验证方,他知道公开参数方,他知道公开参数( (g g, , p p) )以及以及AliceAlice的公的公钥y yA A对于消息于消息签名名对( (m m,(,(r r, ,s s)))),,BobBob执行行验证过程1 1))预查合法性合法性如果如果1≤1≤r r≤≤p p-1-1,,继续,否,否则签名是不合法的名是不合法的2 2))计算算 : :3) 3) 计算计算 ::4)比较)比较 和和 :如果:如果 ,表示签名有效;否则签名无效,表示签名有效;否则签名无效 :*l l RSA RSA RSA RSA数字签名体制数字签名体制数字签名体制数字签名体制 l l ELGamal ELGamal ELGamal ELGamal数字签名体制数字签名体制数字签名体制数字签名体制 4.3 4.3 数字签名体制数字签名体制l l 数字签名标准数字签名标准数字签名标准数字签名标准DSSDSSDSSDSS *l l 数字签名标准数字签名标准数字签名标准数字签名标准DSSDSSDSADSA算法描述算法描述 设设p p、、q q、、g g作为公开参数,供所有用户共同使用;作为公开参数,供所有用户共同使用;x xA A是签名者的私钥;是签名者的私钥;y yA A是签名者的公钥。
对消息是签名者的公钥对消息M M的签名结果是两个数的签名结果是两个数( (s s, ,r r) )每一次签名每一次签名都使用了随机数都使用了随机数k k,要求每次签名使用的,要求每次签名使用的k k取值不同取值不同1 1))参数生成参数生成1 1)生成公开参数生成公开参数p p:是一个大的素数,:是一个大的素数,2 2L L-1-1<
1>1以上三个参数以上三个参数p p、、q q、、g g,是所有用户公用的参数,所以称为公共参数是所有用户公用的参数,所以称为公共参数2)用户参数选取)用户参数选取—个随机数个随机数x作为用户私钥,要求作为用户私钥,要求0 为用户公钥*l l 数字签名标准数字签名标准数字签名标准数字签名标准DSSDSS((2 2))签名名过程程签名的消息空名的消息空间可以表示可以表示为 签名时还需要一个随机数签名时还需要一个随机数k,可,可由一个随机数生成器生成由一个随机数生成器生成l 随机选择随机选择k k∈∈Z Zq q,,k k∈{1,∈{1,……, ,q q} }l 计算计算r r::r r←(←(g gk k mod mod p p) mod ) mod q q l 计算计算s s::s s←(←(k k-1-1( (H H( (M M)+)+x xA Ar r)) mod )) mod q q,到此,消息,到此,消息m m的签名结果就是的签名结果就是( (r r, , s s) ) ((3 3))认证过程认证过程 l 计算计算w w::w w≡≡s s-1 mod -1 mod q ql 计算计算u u1 1::u u1 1≡H(m) w mod q≡H(m) w mod q l 计算计算u u2 2::u u2 2≡≡r w r w mod mod q q l 计算计算v::l 比较比较r r、、v v,如果,如果r r= =v v,表示签名有效,否则签名非法,表示签名有效,否则签名非法 *l l 数字签名标准数字签名标准数字签名标准数字签名标准DSSDSSDSADSA签名算法安全性分析签名算法安全性分析 l 随机数产生器与攻击随机数随机数产生器与攻击随机数l 全局参数(共享模数)的危险全局参数(共享模数)的危险攻击者可以通过随机数产生器攻击者可以通过随机数产生器的某些特征,而恢复出所使用的某些特征,而恢复出所使用的随机数的随机数k k。 所以在所以在DSADSA签名算签名算法的实现中,设计一个好的随法的实现中,设计一个好的随机数产生器非常重要机数产生器非常重要 在在DSSDSS公布之初,人们反对其使用公布之初,人们反对其使用共享模数共享模数p p、、q q确实,如果对共享确实,如果对共享模数模数p p、、q q的分析,可能对破解私钥的分析,可能对破解私钥参数参数x x有利的话,将对签名方案的有利的话,将对签名方案的安全性造成威胁安全性造成威胁 *l l 身份认证技术概述身份认证技术概述身份认证技术概述身份认证技术概述 l l 单向认证技术单向认证技术单向认证技术单向认证技术4.4 4.4 身份认证技术身份认证技术l l 交叉认证技术交叉认证技术交叉认证技术交叉认证技术 l l 身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统 l l X.509 X.509 X.509 X.509认证技术认证技术认证技术认证技术 *l l 身份认证技术概述身份认证技术概述身份认证技术概述身份认证技术概述 认证是一个实体向另一个实体证明某种声称属性的过认证是一个实体向另一个实体证明某种声称属性的过程。 认证包括程认证包括数据源认证(数据源认证(Data Origin Data Origin AuthenticationAuthentication))和和实体身份认证(实体身份认证(Entity Entity AuthenticationAuthentication)) 数据源认证数据源认证 数据源认证包含从发送者到接收者的消息数据源认证包含从发送者到接收者的消息传输过程,接收者在接收时会验证消息;接传输过程,接收者在接收时会验证消息;接收方执行消息验证的目的在于确认消息发送收方执行消息验证的目的在于确认消息发送者的身份;确认在原消息离开消息发送者之者的身份;确认在原消息离开消息发送者之后的数据完整性以及确认消息传输的后的数据完整性以及确认消息传输的““活现活现性性””*l l 身份认证技术概述身份认证技术概述身份认证技术概述身份认证技术概述身份认证身份认证 l 知道某事知道某事l 拥有某事拥有某事l 固有某事固有某事 这是一个只有要被验这是一个只有要被验证的原告才知道的秘证的原告才知道的秘密例如,密码、密例如,密码、PINPIN、密钥、私钥等、密钥、私钥等 这是一些可以提供原告身份这是一些可以提供原告身份证明的材料。 例如,密码、证明的材料例如,密码、驾驶执照、身份证、信用卡驾驶执照、身份证、信用卡和智能卡等和智能卡等 这是原告的本质特征这是原告的本质特征例如,传统签名、指纹、例如,传统签名、指纹、声音、面相、视网膜模声音、面相、视网膜模式、笔迹等式、笔迹等 基于密码技术实现身份认证可以采用对称密码技术,基于密码技术实现身份认证可以采用对称密码技术,也可以采用非对称密码技术也可以采用非对称密码技术 *l l 身份认证技术概述身份认证技术概述身份认证技术概述身份认证技术概述 l l 单向认证技术单向认证技术单向认证技术单向认证技术4.4 4.4 身份认证技术身份认证技术l l 交叉认证技术交叉认证技术交叉认证技术交叉认证技术 l l 身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统 l l X.509 X.509 X.509 X.509认证技术认证技术认证技术认证技术 *l l 单向认证技术单向认证技术单向认证技术单向认证技术单向认证单向认证 在协议的两个参与主体中,只在协议的两个参与主体中,只对其中的一个主体的身份进行对其中的一个主体的身份进行认证。 设消息源声称自己是认证设消息源声称自己是AliceAlice,并要求与,并要求与BobBob通信通信 l 用对称密码技术实现单方认证用对称密码技术实现单方认证 设通信方设通信方A A和通信方和通信方B B共享有对称密钥共享有对称密钥K KABAB,通信方,通信方B B要认证通信方要认证通信方A A身份1))BA::RB‖Text1;其中;其中RB为通信方为通信方B生成的一次性随机数,生成的一次性随机数,Text1为附为附加文本2))AB::TokenAB= ;其中;其中Text2,,Text3等属等属于可选项于可选项 *l l 单向认证技术单向认证技术单向认证技术单向认证技术l 用非对称密码技术实现单方认证用非对称密码技术实现单方认证 ISO/IEC ISO/IEC标准化版本的标准化版本的““使用公钥的使用公钥的ISOISO两次传输单方认证协议两次传输单方认证协议””1 1))B BA A::R RB B‖‖TextText1 12 2))A AB B::CertA‖TokenABCertA‖TokenAB。 这里TokenAB=RA‖RB‖B‖Text3‖sigA(RA‖RB‖B‖Text2);协议中的Text1,Text2,Text3均为可选信息,CertA是Alice的公钥证书在接收到TokenAB之后,B应该验证签名;如果签名通过验证,B应该接收这次运行;否则拒绝这次运行 使用公钥的使用公钥的ISOISO两次传输单方认证示意两次传输单方认证示意如图所示如图所示 *l l 身份认证技术概述身份认证技术概述身份认证技术概述身份认证技术概述 l l 单向认证技术单向认证技术单向认证技术单向认证技术4.4 4.4 身份认证技术身份认证技术l l 交叉认证技术交叉认证技术交叉认证技术交叉认证技术 l l 身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统 l l X.509 X.509 X.509 X.509认证技术认证技术认证技术认证技术 *l l 交叉认证技术交叉认证技术交叉认证技术交叉认证技术 设通信方设通信方A A拥有公钥证书拥有公钥证书CertACertA;通信方;通信方B B拥有公钥证书拥有公钥证书CertBCertB。 则则ISO公钥三次传输双方认证协议公钥三次传输双方认证协议 :l B BA A::R RB B l A AB B::CertA, TokenABCertA, TokenABl B BA A::CertB, TokenBACertB, TokenBA 交叉认证交叉认证也称为双方认证(也称为双方认证(Mutual Mutual AuthenticationAuthentication),即两个通信的实体需要互相认证即两个通信的实体需要互相认证 TokenAB =TokenAB = R RA A‖‖R RB B‖B‖‖B‖sigsigA A( (R RA‖A‖R RB‖B)B‖B)TokenBA =TokenBA = R RB B‖‖R RA A‖A‖‖A‖sigsigB B( (R RB B‖‖R RA A‖A)‖A)基于公钥密码技术的双方认证协议过程基于公钥密码技术的双方认证协议过程如图所示如图所示 *l l 身份认证技术概述身份认证技术概述身份认证技术概述身份认证技术概述 l l 单向认证技术单向认证技术单向认证技术单向认证技术4.4 4.4 身份认证技术身份认证技术l l 交叉认证技术交叉认证技术交叉认证技术交叉认证技术 l l 身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统 l l X.509 X.509 X.509 X.509认证技术认证技术认证技术认证技术 *l l身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统 适合多个服务器环境的认证方案是适合多个服务器环境的认证方案是KerberosKerberos认证协议。 认证协议KerberosKerberos认证系统是美国麻省理工学认证系统是美国麻省理工学院为院为AthenaAthena工程而设计的,为分布式计算环境提工程而设计的,为分布式计算环境提供一种对用户双方进行验证的认证方法,它是基供一种对用户双方进行验证的认证方法,它是基于对称密钥的身份认证系统于对称密钥的身份认证系统 KerberosKerberos认证的认证的基本思想是使用可信第三方把某个用户引见给某基本思想是使用可信第三方把某个用户引见给某个服务器,引见方法是在用户和服务器间分发会个服务器,引见方法是在用户和服务器间分发会话密钥建立安全信道话密钥建立安全信道KerberosKerberos协议涉及三种服协议涉及三种服务器:一个验证服务器(务器:一个验证服务器(ASAS)、一个票据许可服)、一个票据许可服务器(务器(TGSTGS)和一个给其他机构提供服务的真实)和一个给其他机构提供服务的真实(数据)服务器数据)服务器*l l身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统KerberosKerberos认证协议包括三个子协议认证协议包括三个子协议 l 认证服务器交换(认证服务器交换(ASAS交换):在交换):在““客户客户””C C和和““认证服认证服务器务器””ASAS间运行间运行 l 票证授予服务器交换(票证授予服务器交换(TGSTGS交换):交换):ASAS交换后,在交换后,在C C和和““票证授予服务器票证授予服务器””TGSTGS间运行间运行 l 客户客户/服务器认证应用交换(服务器认证应用交换(AP交换):交换):TGS交换后,交换后,在在C和和“应用服务器应用服务器”S间运行间运行 KerberosKerberos认证协议认证协议如图所示如图所示 *l l身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统认证服务交换认证服务交换AS AS l AS_REQ CAS_REQ CAS : U, TGS, Life_time1, NAS : U, TGS, Life_time1, N1 1l TGT ASTGT ASC : U, TC,TGS, TGTCC : U, TC,TGS, TGTC AS_REQAS_REQ是一个明文消息,客户端是一个明文消息,客户端C C使使用用AS_REQAS_REQ和认证服务器和认证服务器ASAS通信,通知通信,通知ASAS它将代理用户它将代理用户U U和票证授予服务器和票证授予服务器TGSTGS通信。 在请求中包含生命期通信在请求中包含生命期Life_time1Life_time1和随机数和随机数N1N1 认证服务器认证服务器ASAS收到客户端收到客户端C C的的AS_REQAS_REQ请求消息后,生成一个新的请求消息后,生成一个新的票证会话密钥票证会话密钥KC,TGSKC,TGS,该密钥将在,该密钥将在C C和和TGSTGS之间共享;然后把生成的会之间共享;然后把生成的会话密钥加密后封装在票证话密钥加密后封装在票证- -授予票授予票证证TGTTGT中中 *l l身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统票证授予服务交换票证授予服务交换TGS TGS l TGS_REQ TGS_REQ CCTGS : S.life_time2, NTGS : S.life_time2, N2, TC,TGS, AC,TGS2, TC,TGS, AC,TGS 其中,其中, 在该消息中,包含了随机数在该消息中,包含了随机数N2N2,从认,从认证服务器处得到的票证证服务器处得到的票证TC,TGSTC,TGS以及认以及认证符证符AC,TGSAC,TGS。 认证符是向票证授予服认证符是向票证授予服务器务器TGSTGS表明客户端表明客户端C C在在Client_timeClient_time时刻使用了票证会话密钥时刻使用了票证会话密钥KC,TGSKC,TGS l TKT TGS TKT TGS C : U, TC,S, TKTC C : U, TC,S, TKTC TGSTGS在收到请求消息在收到请求消息TGS_REQTGS_REQ后,后,首先用首先用KAS,TGSKAS,TGS解密解密TC,TGSTC,TGS,从其,从其中获得中获得KC,TGSKC,TGS、、Time_startTime_start、、Time_expireTime_expire等信息,生成等信息,生成TC,STC,S和和TKTCTKTC *l l身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统 应用服务交换应用服务交换AP AP l AP_REQ C AP_REQ C S: TC,S, AC,SS: TC,S, AC,S 其中,AC,S = 在在AP_REQAP_REQ请求中,客户请求中,客户C C携带从票证携带从票证服务器处取得的访问服务器服务器处取得的访问服务器S S的票证的票证TC,STC,S(用(用S S和和TGSTGS之间的长期共享密之间的长期共享密钥钥KSKS,,TGSTGS加密),向服务器加密),向服务器S S请求请求访问访问 l AP_REP S AP_REP S C: AS,CC: AS,C 其中,AS,C = 在得到来自客户在得到来自客户C C的请求的请求AP_REQAP_REQ后,后,服务器服务器S S首先对于其所持有的票证首先对于其所持有的票证TC,STC,S进行解密,获得请求者身份,进行解密,获得请求者身份,访问时间段以及与访问者之间的共访问时间段以及与访问者之间的共享密钥享密钥KC,SKC,S,并以,并以AS,CAS,C应答客户应答客户C C的的访问请求访问请求 *l l 身份认证技术概述身份认证技术概述身份认证技术概述身份认证技术概述 l l 单向认证技术单向认证技术单向认证技术单向认证技术4.4 4.4 身份认证技术身份认证技术l l 交叉认证技术交叉认证技术交叉认证技术交叉认证技术 l l 身份认证系统实例身份认证系统实例身份认证系统实例身份认证系统实例-Kerberos-Kerberos-Kerberos-Kerberos系统系统系统系统 l l X.509 X.509 X.509 X.509认证技术认证技术认证技术认证技术 *l lX.509X.509X.509X.509认证技术认证技术认证技术认证技术 基于基于X.509X.509证书的认证技术类似于证书的认证技术类似于KerberosKerberos技术,技术,它也依赖于共同信赖的第三方来实现认证。 与它也依赖于共同信赖的第三方来实现认证与KerberosKerberos认证所不同的是它采用非对称密码体制(公认证所不同的是它采用非对称密码体制(公钥制),在钥制),在X.509X.509认证框架中可信赖的第三方是指称为认证框架中可信赖的第三方是指称为CACA((Certificate AuthorityCertificate Authority)的认证机构该认证机)的认证机构该认证机构负责认证用户的身份并向用户签发公钥证书,同时构负责认证用户的身份并向用户签发公钥证书,同时对于证书提供管理数字证书遵循对于证书提供管理数字证书遵循X.509X.509标准所规定的标准所规定的格式,因此称为格式,因此称为X.509X.509证书持有此证书的用户就可以证书持有此证书的用户就可以凭此证书访问那些信任凭此证书访问那些信任CACA的服务器的服务器 *l lX.509X.509X.509X.509认证技术认证技术认证技术认证技术 X.509X.509证书的认证框架使用公开密码学的技术识别通信方,根据证书的认证框架使用公开密码学的技术识别通信方,根据要求的认证强度的不同,提供要求的认证强度的不同,提供单向认证、双向认证和三向认证单向认证、双向认证和三向认证三种认三种认证模式证模式 单向认证单向认证 消息的内容如下:消息的内容如下: t A表示时间戳,一般由两个日期组成,即消息的生成时间和期满时间。 时间戳用来防止消息传递的延迟及抗重放攻击RA是一次性随机数,在一个有效期内是唯一的;IDB是A希望通信的B的身份信息;sgnData是认证消息携带的数据信息;KAB是A为以后的通信随机选择的会话密钥,并用B的公钥KPB对会话密钥进行了加密,最后附上A用自己的私钥对于前面所有内容的生成的数字签名signatureA *l lX.509X.509X.509X.509认证技术认证技术认证技术认证技术 双向认证双向认证 A收到消息后首先需要获取B的证书,并验证证书的有效性从B的证书中提取公钥,验证B的签名,同时检验消息的完整性检查A自己是否是消息的接收者验证时间戳tB是否为当前时间检查RB是否被重放(可选) *l lX.509X.509X.509X.509认证技术认证技术认证技术认证技术 三向认证三向认证 三向认证的协议中,增加了第三条从A到B的消息,其中包含了来自于第二条消息中B所发送的一次性随机数RB,并且A用自己的私钥对其进行了签名 *4.5 4.5 技术认证应用案例技术认证应用案例 本本节以节以IPSecIPSec中的验证报头中的验证报头((Authentication HeaderAuthentication Header)为)为例,说明消息认证和身份认证例,说明消息认证和身份认证在在IPSecIPSec的应用的应用 *l l技术认证应用案例技术认证应用案例技术认证应用案例技术认证应用案例 Authentication Header Authentication Header 包含的字段如下。 包含的字段如下1 1))Next HeaderNext Header((8 8位):识别这个报头之后紧跟的位):识别这个报头之后紧跟的报头类型报头类型2 2))Payload LengthPayload Length((8 8位):有效载荷长度,位):有效载荷长度,Authentication HeaderAuthentication Header的长度(以的长度(以3232位字为单位)减位字为单位)减2 23 3))ReservedReserved((1616位):保留作将来使用位):保留作将来使用*l l技术认证应用案例技术认证应用案例技术认证应用案例技术认证应用案例 4 4))Sequence NumberSequence Number((3232位):序列号,为一个位):序列号,为一个单调递增的计数器值,用于抗重放攻击单调递增的计数器值,用于抗重放攻击5 5))Authentication DataAuthentication Data(可变长):验证数据,(可变长):验证数据,也被称为完整性校验值(也被称为完整性校验值(ICVICV),必须是),必须是3232位字的位字的整数倍,为整数倍,为MACMAC码,目前的规范为码,目前的规范为9696位。 位*l l技术认证应用案例技术认证应用案例技术认证应用案例技术认证应用案例 在在Authentication DataAuthentication Data部分一般是消部分一般是消息验证码值,当前有两种支持规范:息验证码值,当前有两种支持规范:HMAC-MD5-96HMAC-MD5-96和和HMAC-SHA-1-96HMAC-SHA-1-96其中,前其中,前者使用包含者使用包含MD5MD5的的HMACHMAC算法,后者使用包算法,后者使用包含含SHA-1SHA-1的的HMACHMAC算法,产生的算法,产生的Authentication DataAuthentication Data长度均为长度均为9696位*4.5 4.5 认证技术的发展趋势认证技术的发展趋势 哈希函数是传统的消息认证技术的重要组哈希函数是传统的消息认证技术的重要组成部分,为了保证认证目标,哈希函数必须具成部分,为了保证认证目标,哈希函数必须具备单向性、抗第二原像性和抗碰撞性现在使备单向性、抗第二原像性和抗碰撞性现在使用的重要的计算机安全协议,如用的重要的计算机安全协议,如SSLSSL、、PGPPGP等都等都用哈希函数来进行签名,一旦找到两个文件可用哈希函数来进行签名,一旦找到两个文件可以产生相同的压缩值,就可以伪造签名,给网以产生相同的压缩值,就可以伪造签名,给网络安全领域带来巨大隐患。 长期以来,业界认络安全领域带来巨大隐患长期以来,业界认为一些广为使用的哈希函数具有这些性质,可为一些广为使用的哈希函数具有这些性质,可以安全地用于数字签名以安全地用于数字签名 *l l技术认证应用案例技术认证应用案例技术认证应用案例技术认证应用案例 在身份认证方面,除了本章阐述的基于传统密码学技术在身份认证方面,除了本章阐述的基于传统密码学技术的认证协议外,基于生物特征的各种认证技术也成为近的认证协议外,基于生物特征的各种认证技术也成为近年来的研究热点目前常用的生物特征识别技术所用的年来的研究热点目前常用的生物特征识别技术所用的生物特征有基于生理特征的,如人脸、指纹、虹膜,也生物特征有基于生理特征的,如人脸、指纹、虹膜,也有基于行为特征的,如笔迹、声音等人脸识别作为一有基于行为特征的,如笔迹、声音等人脸识别作为一种基于生理特征的身份认证技术,与目前广泛应用的以种基于生理特征的身份认证技术,与目前广泛应用的以密码、密码、ICIC卡为媒介的传统身份认证技术相比,具有不易卡为媒介的传统身份认证技术相比,具有不易伪造、不易窃取、不会遗忘的特点;而人脸识别与指纹、伪造、不易窃取、不会遗忘的特点;而人脸识别与指纹、虹膜、掌纹识别等生理特征识别技术相比,具有非侵犯虹膜、掌纹识别等生理特征识别技术相比,具有非侵犯性、采集方便等特点。 性、采集方便等特点 *l l 数字签名的原理数字签名的原理数字签名的原理数字签名的原理图 数字数字签名原理名原理图*l l 哈希函数的结构哈希函数的结构哈希函数的结构哈希函数的结构图 迭代哈希函数的一般迭代哈希函数的一般结构构*l l 单向认证技术单向认证技术单向认证技术单向认证技术图 基于公基于公钥技技术的两次的两次传输单方方认证示意示意图*l l 单向认证技术单向认证技术单向认证技术单向认证技术图 基于公基于公钥技技术的三次的三次传输双方双方认证协议*l l 单向认证技术单向认证技术单向认证技术单向认证技术图 KerberosKerberos认证协议。












