1、16:34:01 在网络环境下,数字签名与认证技术是信在网络环境下,数字签名与认证技术是信息完整性和不可否认性的重要保障,是公钥密息完整性和不可否认性的重要保障,是公钥密码体制的重要应用。信息的发送方可以对电子码体制的重要应用。信息的发送方可以对电子文档生成数字签名,信息的接收方则在收到文文档生成数字签名,信息的接收方则在收到文档及其数字签名后,可以验证数字签名的真实档及其数字签名后,可以验证数字签名的真实性。身份认证则是基于数字签名技术为网络世性。身份认证则是基于数字签名技术为网络世界中实体的身份提供可验证性。界中实体的身份提供可验证性。 16:34:01本章内容提要本章内容提要: :l 数
2、字签名的概念与原理数字签名的概念与原理l 消息认证与哈希函数消息认证与哈希函数 l 数字签名体制数字签名体制 l 身份认证技术身份认证技术l 认证技术应用案例认证技术应用案例 l 认证技术的发展趋势认证技术的发展趋势16:34:024.1 4.1 数字签名的概念与原理数字签名的概念与原理 数字签名是密码学和信息安全中最重要数字签名是密码学和信息安全中最重要和最有用的概念之一。它的诞生使得在网络和最有用的概念之一。它的诞生使得在网络环境下,任一实体(组织或者个人)对在网环境下,任一实体(组织或者个人)对在网络上传输的电子文件进行签名成为可能。任络上传输的电子文件进行签名成为可能。任何得到该签名的
3、实体可以对签名的有效性进何得到该签名的实体可以对签名的有效性进行验证。行验证。16:34:02 4.1 4.1 数字签名的概念与原理数字签名的概念与原理16:34:02 概念概念 数字签名是以密码学的方法对数据文件作数字签名是以密码学的方法对数据文件作用产生的一组代表签名者身份与数据完整性用产生的一组代表签名者身份与数据完整性的数据信息,通常附加在数据文件的后面。的数据信息,通常附加在数据文件的后面。数据文件的接收者可以利用签名者的公钥作数据文件的接收者可以利用签名者的公钥作用于数字签名上,以验证数据文件的真实性、用于数字签名上,以验证数据文件的真实性、完整性。完整性。16:34:02 4.1
4、 4.1 数字签名的概念与原理数字签名的概念与原理16:34:02 原理原理 数字签名就是用私有密钥进行加密,而数字签名就是用私有密钥进行加密,而认证就是利用公开密钥进行正确的解密。认证就是利用公开密钥进行正确的解密。数数字签名的原理字签名的原理如图所示如图所示 16:34:02 一个基于公钥密码学的数字签名方案被定义为一个基于公钥密码学的数字签名方案被定义为一个一个算法三元组算法三元组( (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,则说明签名无效,则说明签名无效 16:34:03 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 16:34:03 哈希(哈希(HashHash)函数是一个输入为任意长的二元)函数是一个输入为任意长的二元串,输出为固定长度的二元串的函数。一般用串,输出为固定长度的二元串的函数。一般用H H()()表示哈希函数,若输出是长度为表示哈希函数,若输出是长度为l l的二元串,的二元串,哈希函数表示为:哈希函数表示为:H H():0,1():0,1* *0,10,1l l定义定义16:34:03哈
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* *,在计算上困难的,即多项式时,在计算上困难的,即多项式时间内不可解。间内不可解。定义定义16:34:03 哈希函数哈希函数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) )是是困难的。困难的。定义定义16:34:03 哈希函数哈希函数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) )是困难的。是困难的。 由上面的四个定义可以知道,哈希函数由上面的四个定义可以知道,哈希函数应该具有应该具有单向性、抗原像性、抗第二原像性单向性、抗原像性、抗第二原像性以及抗碰撞性以及抗碰撞性。 定义定义16:34:03 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 16:34:03 由由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为输入分组长度。为输入分组长度。16:34:03 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 16:34:03安全哈希函数(安全哈希函数(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比特报文摘要比特报文摘要 16:34:04对于对于步骤步骤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缓存缓存 16:34:04【例例】 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”的哈希函数的哈希函数值值 16:34:04 4.2 4.2 消息认证与哈希函数消息认证与哈希函数 16:34:04 消息认证消息认证 消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法消息认证是使消息的接收者能够检验收到的消息是否是真实的认证方法 消息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其消
20、息认证的目的有两个:其一是消息源的认证,即验证消息的来源是真实的;其二是消息的认证,即验证信息在传送过程中未被篡改。二是消息的认证,即验证信息在传送过程中未被篡改。 1 1)消息认证码消息认证码MACMAC(Message Authentication CodeMessage Authentication Code):是以:是以消息和密钥作为输入的公开函数,可以生成定长的输出。该方法消息和密钥作为输入的公开函数,可以生成定长的输出。该方法需要在信息的发送方和接收方之间共享密钥。需要在信息的发送方和接收方之间共享密钥。2 2)哈希函数:哈希函数:是不带密钥的公开函数,它将任意长度的输入是不带密钥
21、的公开函数,它将任意长度的输入消息映射为固定长度的输出值。哈希函数与数字签名算法相结合,消息映射为固定长度的输出值。哈希函数与数字签名算法相结合,提供对于消息的完整性检验。提供对于消息的完整性检验。16:34:04基于密钥哈希函数的基于密钥哈希函数的MACMAC 基于密钥哈希函数的基于密钥哈希函数的MACMAC的形式如下。的形式如下。MACMAC= =H H( (k kM M) ) HMACHMAC= = H H ( (k kM Mk k) )使用哈希函数构造的使用哈希函数构造的MACMAC,称为,称为HMACHMAC 16:34:04基于分组加密算法的基于分组加密算法的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,ikiiCmCil16:34:04 4.3 4.3 数字签名体制数字签名体制 16:34:04算法算法 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。16:34:05 4.3 4.3 数字签名体制数字签名体制 16:34:05算法算法1 1参数生成参数生成(1 1)公开参数公开参数设设p p是一个大素数,并确保在是一个大素数,并确保在Z Zp p中求解离散对数在计算上是困难问题;中求解离散对数在计算上是困难问题;g g是是Z
26、 Zp p中中乘法群乘法群 的一个生成元,或称为本原元素。的一个生成元,或称为本原元素。pZ(2 2)用户私钥参数用户私钥参数选定一个随机的选定一个随机的x, ,作为用户的私钥。,作为用户的私钥。pZ(3 3)用户公钥参数用户公钥参数计算计算y yg gx x mod mod p p作为用户的公钥。作为用户的公钥。由此设用户由此设用户AliceAlice的公私钥对为的公私钥对为( (x xA,A,y yA)A),y yA A公开,而公开,而x xA A保密。保密。16:34:052 2生成签名生成签名AliceAlice欲生成对消息欲生成对消息m m的签名,则执行如下的签名过程:的签名,则执行
27、如下的签名过程:1 1)随机选择随机选择k k, ,并要求并要求gcd(gcd(k k, ,p p-1)=1-1)=1。2 2)计算签名:)计算签名:r rgkgk mod mod p p。3 3)计算签名:)计算签名:s sk k-1(-1(m m- -x xA Ar r)mod()mod(p p-1)-1)。得到消息签名对为得到消息签名对为( (m m,(,(r r, ,s s)。pZk1v3 3验证签名验证签名设设BobBob为验证方,他知道公开参数为验证方,他知道公开参数( (g g, , p p) )以及以及AliceAlice的公钥的公钥y yA A。对于消息签名。对于消息签名对对
28、( (m m,(,(r r, ,s s),BobBob执行验证过程。执行验证过程。1 1)预查合法性)预查合法性如果如果11r rp p-1-1,继续,否则签名是不合法的。,继续,否则签名是不合法的。2 2)计算)计算 : :3) 3) 计算计算 :4)比较)比较 和和 :如果:如果 ,表示签名有效;否则签名无效,表示签名有效;否则签名无效 :1v1Amodrsvy rp2v2modmvgp2v1v21vv 16:34:05 4.3 4.3 数字签名体制数字签名体制 16:34:05DSADSA算法描述算法描述 设设p p、q q、g g作为公开参数,供所有用户共同使用;作为公开参数,供所有用
29、户共同使用;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 p p22L L,其中,其中512512L L10241024。q q:是:是( (p p-1)-1)的素因子,并且其字长为的素因子,并且其字长为160160比特,
30、即比特,即21592159q q21602160。g g:g gh h( (p p-1)/-1)/q q mod mod p p,其中,其中h h是一个整数,是一个整数,11h h(11。以上三个参数以上三个参数p p、q q、g g,是所有用户公用的参数,所以称为公共参数。,是所有用户公用的参数,所以称为公共参数。2)用户参数。选取)用户参数。选取个随机数个随机数x作为用户私钥,要求作为用户私钥,要求0 xq;计算;计算求得求得ygx mod p,y为用户公钥。为用户公钥。16:34:05pZ(2 2)签名过程签名过程签名的消息空间可以表示为签名的消息空间可以表示为 。签名时还需要一个随机数
31、。签名时还需要一个随机数k,可,可由一个随机数生成器生成。由一个随机数生成器生成。l 随机选择随机选择k kZ Zq q,k k1,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 ws s-1 mod -1 mod q ql 计算计算u u1 1:u u1 1H(m) w
32、mod qH(m) w mod q l 计算计算u u2 2:u u2 2r w r w mod mod q q l 计算计算v:l 比较比较r r、v v,如果,如果r r= =v v,表示签名有效,否则签名非法,表示签名有效,否则签名非法 12A(mod ) moduuvg ypq16:34:06DSADSA签名算法安全性分析签名算法安全性分析 l 随机数产生器与攻击随机数随机数产生器与攻击随机数l 全局参数(共享模数)的危险全局参数(共享模数)的危险攻击者可以通过随机数产生器攻击者可以通过随机数产生器的某些特征,而恢复出所使用的某些特征,而恢复出所使用的随机数的随机数k k。所以在。所以
33、在DSADSA签名算签名算法的实现中,设计一个好的随法的实现中,设计一个好的随机数产生器非常重要机数产生器非常重要 在在DSSDSS公布之初,人们反对其使用公布之初,人们反对其使用共享模数共享模数p p、q q。确实,如果对共享。确实,如果对共享模数模数p p、q q的分析,可能对破解私钥的分析,可能对破解私钥参数参数x x有利的话,将对签名方案的有利的话,将对签名方案的安全性造成威胁安全性造成威胁 16:34:06 4.4 4.4 身份认证技术身份认证技术 16:34:06 认证是一个实体向另一个实体证明某种声称属性的过认证是一个实体向另一个实体证明某种声称属性的过程。认证包括程。认证包括数
34、据源认证(数据源认证(Data Origin Data Origin AuthenticationAuthentication)和和实体身份认证(实体身份认证(Entity Entity AuthenticationAuthentication)。 数据源认证数据源认证 数据源认证包含从发送者到接收者的消息数据源认证包含从发送者到接收者的消息传输过程,接收者在接收时会验证消息;接传输过程,接收者在接收时会验证消息;接收方执行消息验证的目的在于确认消息发送收方执行消息验证的目的在于确认消息发送者的身份;确认在原消息离开消息发送者之者的身份;确认在原消息离开消息发送者之后的数据完整性以及确认消息传
35、输的后的数据完整性以及确认消息传输的“活现活现性性”。16:34:06身份认证身份认证 l 知道某事知道某事l 拥有某事拥有某事l 固有某事固有某事 这是一个只有要被验这是一个只有要被验证的原告才知道的秘证的原告才知道的秘密。例如,密码、密。例如,密码、PINPIN、密钥、私钥等、密钥、私钥等 这是一些可以提供原告身份这是一些可以提供原告身份证明的材料。例如,密码、证明的材料。例如,密码、驾驶执照、身份证、信用卡驾驶执照、身份证、信用卡和智能卡等和智能卡等 这是原告的本质特征。这是原告的本质特征。例如,传统签名、指纹、例如,传统签名、指纹、声音、面相、视网膜模声音、面相、视网膜模式、笔迹等式、
36、笔迹等 基于密码技术实现身份认证可以采用对称密码技术,基于密码技术实现身份认证可以采用对称密码技术,也可以采用非对称密码技术也可以采用非对称密码技术 16:34:07 4.4 4.4 身份认证技术身份认证技术 16:34:07单向认证单向认证 在协议的两个参与主体中,只在协议的两个参与主体中,只对其中的一个主体的身份进行对其中的一个主体的身份进行认证。设消息源声称自己是认证。设消息源声称自己是AliceAlice,并要求与,并要求与BobBob通信通信 l 用对称密码技术实现单方认证用对称密码技术实现单方认证 设通信方设通信方A A和通信方和通信方B B共享有对称密钥共享有对称密钥K KABA
37、B,通信方,通信方B B要认证通信方要认证通信方A A身份。身份。1)BA:RBText1;其中;其中RB为通信方为通信方B生成的一次性随机数,生成的一次性随机数,Text1为附为附加文本。加文本。2)AB:TokenAB= ;其中;其中Text2,Text3等等属于可选项属于可选项 ABB3|(|B|2)KTextERText16:34:07l 用非对称密码技术实现单方认证用非对称密码技术实现单方认证 ISO/IEC ISO/IEC标准化版本的标准化版本的“使用公钥的使用公钥的ISOISO两次传输单方认证协议两次传输单方认证协议”1 1)B BA A:R RB BTextText1 1。2
38、2)A AB B:CertATokenABCertATokenAB。这里TokenAB=RARBBText3sigA(RARBBText2);协议中的Text1,Text2,Text3均为可选信息,CertA是Alice的公钥证书。在接收到TokenAB之后,B应该验证签名;如果签名通过验证,B应该接收这次运行;否则拒绝这次运行。 使用公钥的使用公钥的ISOISO两次传输单方认证示意两次传输单方认证示意如图所示如图所示 16:34:07 4.4 4.4 身份认证技术身份认证技术 16:34:07 设通信方设通信方A A拥有公钥证书拥有公钥证书CertACertA;通信方;通信方B B拥有公钥证
39、书拥有公钥证书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 AR RB BBBsigsigA A( (R RAAR RBB)B
40、B)TokenBA =TokenBA = R RB BR RA AAAsigsigB B( (R RB BR RA AA)A)基于公钥密码技术的双方认证协议过程基于公钥密码技术的双方认证协议过程如图所示如图所示 16:34:07 4.4 4.4 身份认证技术身份认证技术 16:34:07 适合多个服务器环境的认证方案是适合多个服务器环境的认证方案是KerberosKerberos认证协议。认证协议。KerberosKerberos认证系统是美国麻省理工学认证系统是美国麻省理工学院为院为AthenaAthena工程而设计的,为分布式计算环境提工程而设计的,为分布式计算环境提供一种对用户双方进行验
41、证的认证方法,它是基供一种对用户双方进行验证的认证方法,它是基于对称密钥的身份认证系统。于对称密钥的身份认证系统。 KerberosKerberos认证的认证的基本思想是使用可信第三方把某个用户引见给某基本思想是使用可信第三方把某个用户引见给某个服务器,引见方法是在用户和服务器间分发会个服务器,引见方法是在用户和服务器间分发会话密钥建立安全信道。话密钥建立安全信道。KerberosKerberos协议涉及三种服协议涉及三种服务器:一个验证服务器(务器:一个验证服务器(ASAS)、一个票据许可服)、一个票据许可服务器(务器(TGSTGS)和一个给其他机构提供服务的真实)和一个给其他机构提供服务的
42、真实(数据)服务器。(数据)服务器。16:34:07KerberosKerberos认证协议包括三个子协议认证协议包括三个子协议 l 认证服务器交换(认证服务器交换(ASAS交换):在交换):在“客户客户”C C和和“认证服认证服务器务器”ASAS间运行间运行 l 票证授予服务器交换(票证授予服务器交换(TGSTGS交换):交换):ASAS交换后,在交换后,在C C和和“票证授予服务器票证授予服务器”TGSTGS间运行间运行 l 客户客户/服务器认证应用交换(服务器认证应用交换(AP交换):交换):TGS交换后,交换后,在在C和和“应用服务器应用服务器”S间运行间运行 KerberosKerb
43、eros认证协议认证协议如图所示如图所示 16:34:08认证服务交换认证服务交换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通信。在请求中
44、包含生命期通信。在请求中包含生命期Life_time1Life_time1和随机数和随机数N1N1 AS,TGSC,TGSC,TGSKT=U,C,TGS,K,Time_start,Time_expireUCC,TGS1KTGT =TGS,K,Time_start,Time_expire,N 认证服务器认证服务器ASAS收到客户端收到客户端C C的的AS_REQAS_REQ请求消息后,生成一个新请求消息后,生成一个新的票证会话密钥的票证会话密钥KC,TGSKC,TGS,该密钥,该密钥将在将在C C和和TGSTGS之间共享;然后把生之间共享;然后把生成的会话密钥加密后封装在票证成的会话密钥加密后封
45、装在票证- -授予票证授予票证TGTTGT中中 16:34:08票证授予服务交换票证授予服务交换TGS TGS l TGS_REQ TGS_REQ TGS : S.life_time2, NTGS : S.life_time2, N2, TC,TGS, AC,TGS2, TC,TGS, AC,TGS 其中,其中, C,TGSC,TGSKA=C,Client_time 在该消息中,包含了随机数在该消息中,包含了随机数N2N2,从认,从认证服务器处得到的票证证服务器处得到的票证TC,TGSTC,TGS以及认以及认证符证符AC,TGSAC,TGS。认证符是向票证授予服。认证符是向票证授予服务器务器T
46、GSTGS表明客户端表明客户端C C在在Client_timeClient_time时刻使用了票证会话密钥时刻使用了票证会话密钥KC,TGSKC,TGS。 l TKT TGS TKT TGS C : U, TC,S, TKTC C : U, TC,S, TKTC S,TGSC,SC,SKT=U,C,S,K,Time_start,Time_expire C,TGSCC,S2KTKT =S,K,Time_start,Time_expire,N TGSTGS在收到请求消息在收到请求消息TGS_REQTGS_REQ后,后,首先用首先用KAS,TGSKAS,TGS解密解密TC,TGSTC,TGS,从,从
47、其中获得其中获得KC,TGSKC,TGS、Time_startTime_start、Time_expireTime_expire等信息,生成等信息,生成TC,STC,S和和TKTCTKTC。 16:34:08 应用服务交换应用服务交换AP AP l AP_REQ C AP_REQ C S: TC,S, AC,SS: TC,S, AC,S C,SKC,Client_time1其中,AC,S = 在在AP_REQAP_REQ请求中,客户请求中,客户C C携带从票携带从票证服务器处取得的访问服务器证服务器处取得的访问服务器S S的的票证票证TC,STC,S(用(用S S和和TGSTGS之间的长期共之
48、间的长期共享密钥享密钥KSKS,TGSTGS加密),向服务器加密),向服务器S S请求访问请求访问 l AP_REP S AP_REP S C: AS,CC: AS,C 其中,AS,C = C,SKClient_time1在得到来自客户在得到来自客户C C的请求的请求AP_REQAP_REQ后,后,服务器服务器S S首先对于其所持有的票证首先对于其所持有的票证TC,STC,S进行解密,获得请求者身份,进行解密,获得请求者身份,访问时间段以及与访问者之间的共访问时间段以及与访问者之间的共享密钥享密钥KC,SKC,S,并以,并以AS,CAS,C应答客户应答客户C C的的访问请求访问请求 16:34
49、:08 4.4 4.4 身份认证技术身份认证技术 16:34:08 基于基于X.509X.509证书的认证技术类似于证书的认证技术类似于KerberosKerberos技术,技术,它也依赖于共同信赖的第三方来实现认证。与它也依赖于共同信赖的第三方来实现认证。与KerberosKerberos认证所不同的是它采用非对称密码体制(公认证所不同的是它采用非对称密码体制(公钥制),在钥制),在X.509X.509认证框架中可信赖的第三方是指称为认证框架中可信赖的第三方是指称为CACA(Certificate AuthorityCertificate Authority)的认证机构。该认证机)的认证机构
50、。该认证机构负责认证用户的身份并向用户签发公钥证书,同时构负责认证用户的身份并向用户签发公钥证书,同时对于证书提供管理。数字证书遵循对于证书提供管理。数字证书遵循X.509X.509标准所规定的标准所规定的格式,因此称为格式,因此称为X.509X.509证书。持有此证书的用户就可以证书。持有此证书的用户就可以凭此证书访问那些信任凭此证书访问那些信任CACA的服务器。的服务器。 16:34:08 X.509X.509证书的认证框架使用公开密码学的技术识别通信方,根据证书的认证框架使用公开密码学的技术识别通信方,根据要求的认证强度的不同,提供要求的认证强度的不同,提供单向认证、双向认证和三向认证单