2020/2/111信息安全2020/2/112第5章认证技术2020/2/113知识点:◇认证模型及协议◇静态口令认证技术◇动态口令认证技术◇消息认证技术◇实体认证技术◇X.509认证技术◇数字证书◇PKI、PMI技术2020/2/1145.1认证技术概述5.1.1认证及认证模型认证(Authentication)是指核实真实身份的过程,是防止主动攻击的重要技术之一,是一种用可靠的方法证实被认证对象(包括人和事)是否名副其实或是否有效的过程,因此也称为鉴别或验证。认证(Authentication)是指核实真实身份的过程,是防止主动攻击的重要技术之一,是一种用可靠的方法证实被认证对象(包括人和事)是否名副其实或是否有效的过程,因此也称为鉴别或验证。纯认证系统的模型2020/2/1155.1.2认证协议认证协议就是进行认证的双方采取的一系列步骤。认证协议主要有单向认证和双向认证协议两种。1.单向认证与密钥分发相结合的单向认证有两类:一类采用对称密码技术,需要一个可信赖的第三方——通常为密钥分发中心(KDC)或认证服务器(AS),由这个第三方来实现通信双方的身份认证和密钥分发;另一类采用非对称密码技术,无需第三方的参与。(1)需要第三方参与的单向认证图5-2该方法保证只有合法的接收者才能阅读到消息内容;它还提供了发送方是A这个认证,但该协议无法防止重放攻击。2020/2/116(2)无需第三方参与的单向认证协议执行的步骤如下(如图5-3所示):图5-32.双向认证在双向认证过程中,通信双方需要互相认证的身份,然后交换会话密钥,双向认证的典型方案是Needham/Schroder协议,协议执行的步骤如下(如图5-4所示):2020/2/117密钥KA和KB分别是A与KDC、B与KDC共享的密钥,这个协议的目的是将会话密钥KS安全的分发给A和B。在步骤②中A可安全地获取一个新的会话密钥;步骤③中的报文只能被B解密,因此只有B知道报文的内容;在步骤④中,B已获取了会话密钥KS;在步骤⑤中B确信A已获得了会话密钥KS,同时也使得B确信这是一个新报文,因为使用了随机数N2。本协议中步骤④和⑤的作用是防止某种特定类型的重放攻击。图5-42020/2/118尽管有步骤④和⑤的存在,但此协议还是容易遭到一种重放攻击。假定C是攻击者,已获得了一个过时的会话密钥。C可以冒充A,使用旧的会话密钥,通过简单的重放步骤③就能欺骗B,除非B始终牢记所有与A的会话密钥,否则B无法确定这是一个重放。如果C能截获步骤④中的报文,那么他就能够模仿步骤⑤中的响应。因此,C可以向B发送一个伪造的报文,让B以为报文是来自A(且使用的是认证过的会话密钥)。Denning提出了改进的Needham/Schroder协议,克服了上述这种重放攻击,这个改进协议是在步骤②和③中增加了时间戳,并假定密钥KA和KB是完全安全的。改进后的协议执行的步骤如下:2020/2/1195.2口令认证技术5.2.1安全口令为了防止攻击者猜测出口令,选择的安全口令应满足以下要求:(1)口令长度适中(2)不回送显示(3)记录和报告(4)自动断开连接(5)口令存储的安全性目前,口令的存储有以下两种方法:①明文存储;②散列(Hash)函数存储。2020/2/1110图1-1就是通信服务提供者的信息安全模型。5.2.2静态口令认证技术当前,最基本、最常用的身份认证技术就是“用户名+静态口令”认证。静态口令认证一般分为两个阶段:第1阶段是身份识别阶段,确认认证对象是谁;第2阶段是身份验证阶段,获取身份信息进行验证。静态口令认证虽然具有用户使用简单、方便,线路上传输的数据量最小,后台服务器数据调用最小,速度最快,实现的成本最低等优势,但在口令强度、口令传输、口令验证、口令存储等许多环节都存在严重的安全隐患,可以说是最不安全的认证技术。2020/2/1111实现动态口令认证的技术有:5.2.3动态口令认证技术1.口令表认证技术口令表认证技术是要求用户必须提供一张记录有一系列口令的表,并将表保存在系统中,系统为该表设置了一个指针用于指示下次用户登录时所应使用的口令。2.双因子认证技术一次性口令是变动的口令,其变化来源于产生密码的运算因子的变化。一次性口令的产生因子一般采用双运算因子:一个是用户的私有密钥;一个是变动的因子。变动因子可以是时间,也可以是事件,形成基于时间同步、事件同步、挑战/应答非同步等不同的一次性口令认证技术。2020/2/1112下面简单介绍基于一次性口令的身份认证系统(S/KEY),目前S/KEY现已经作为标准的协议RFC1760。(1)S/KEY的认证过程S/KEY的认证过程如图5-5所示,步骤如下:图5-52020/2/1113①用户向身份认证服务器提出连接请求;②服务器返回应答,并附带两个参数(seed,seq);③用户输入口令,系统将口令与seed连接,进行seq次Hash计算(Hash函数可以使用MD4或MD5),产生一次性口令,传给服务器;④服务器端必须存储一个文件,它存储每一个用户上次登录的一次性口令。服务器收到用户传过来的一次性口令后,再进行一次Hash计算,与先前存储的口令进行比较,若匹配则通过身份认证,并用这次的一次性口令覆盖原先的口令。下次用户登录时,服务器将送出seq‘=seq−1。这样,如果客户确实是原来的那个用户,那么他进行seq−1次Hsah计算的一次性口令应该与服务器上存储的口令一致。2020/2/1114(2)S/KEY的优点①用户通过网络传送给服务器的口令是利用秘密口令和seed经过MD4(或MD5)生成的密文,用户拥有的秘密口令并没有在网上传播。这样即使黑客得到了密文,由于散列算法固有的非可逆性,要想破解密文在计算上是不可行的。在服务器端,因为每一次成功的身份认证后,seq自动减1,这样下次用户连接时产生的口令同上次生成的口令是不一样的,从而有效地保证了用户口令的安全。②实现原理简单,Hash函数的实现可以用硬件来实现,可以提高运算效率。(3)S/KEY的缺点①给用户带来一些麻烦(如口令使用一定次数后需要重新初始化,因为每次seq要减1)。2020/2/1115②S/KEY的安全性依赖于散列算法(MD4/MD5)的不可逆性,由于算法是公开的,当有关于这种算法可逆计算的研究有了信息时,系统将会被迫重新使用其他安全算法。③S/KEY系统不使用任何形式的会话加密,因而没有保密性。如果用户想要阅读他在远程系统的邮件或日志,这会在第1次会话中成为一个问题;而且由于有TCP会话的攻击,这也会对S/KEY的安全性构成威胁。④所有一次性口令系统都会面临密钥的重复这个问题,这会给入侵者提供入侵机会。⑤S/KEY需要维护一个很大的一次性密钥列表,有的甚至让用户把所有使用的一次性密钥列在纸上,这对于用户来说是非常麻烦的事情。此外,有的提供硬件支持,这就要求使用产生密钥的硬件来提供一次性密钥,用户必须安装这样的硬件。。2020/2/11165.3消息认证技术消息认证是一种过程,它使得通信的接收方能够验证所收到的报文(发送者、报文的内容、发送时间、序列等)在传送过程中是否被假冒、伪造、篡改,是否感染了病毒等,即保证信息的完整性和有效性。1.消息认证码5.3.1采用MAC的消息认证技术2020/2/1117(1)B确信消息未被更改过。如果一个攻击者更改消息,而未更改MAC,那么B计算出来的消息将不同于接收到的MAC(假定攻击者不知道该密钥,因此不可能更改MAC来对应被更改过的消息)。(2)B确信消息来自发送者。因为没有其他人知道该密钥,所以也没有人能为一个消息伪造一个合适的MAC。(3)如果消息包括一个序列号(如用于HDLC、X.25和TCP),那么接收者确信该序列号的正确性。这是因为攻击者无法更改序列号。2.基于DES的消息认证码利用DES算法可以生成消息认证码(FIPSPUB113),它是使用DES加密后的密文的若干位(如16或32位)作为消息认证码,如图5-6所示。2020/2/1118图5-6基于DES的消息认证码2020/2/11193.消息认证码方案2020/2/11202020/2/11211.Hash函数的概念Hash函数是可接受变长的数据输入,并生成定长的数据输出的函数。这个定长的输出是输入数据的Hash值或称为消息摘要。由于Hash函数具有单向性的属性,故也称之为单向散列函数。Hash值(消息摘要、散列码)又被称为输入数据的数字指纹。5.3.2采用Hash函数的消息认证技术2020/2/11222.简单的Hash算法2020/2/1123不同的Hash值可以提供几种消息认证方式(如图5-9所示):(1)使用对称密码技术对附加Hash值的消息进行加密(如图5-9(a)所示)。认证的原理是:因为只有A和B共享密钥K,因此消息M必定来自A且未被篡改。消息摘要提供认证所需要的结构或冗余。因为对包括消息和Hash值的整体进行了加密,因此还提供了保密。3.采用Hash函数的消息认证2020/2/1124(2)使用对称,密码技术仅对Hash值进行加密(如图5-9(b)所示)。该方法是针对消息无需保密的应用情况,从而减少了由加密而增加的处理负担。由H值与加密结果合并成为的一个整体函数实际上就是一个消息认证码(MAC)。是变量消息M和密钥K的函数值,且它生成一个定长的输出,对不知道该密钥的攻击者来说是安全的。2020/2/1125(3)使用公钥密码技术和发送方的私钥仅对Hash值进行加密(如图5-9(c)所示)。该方法既能提供认证,又能提供数字签名。因为只有发送方能够生成加密的Hash认证码(事实上,这也是数字签名的本质)。(4)同时提供保密性和数字签名。可使用一个对称秘密密钥对消息和已使用的公钥加密的Hash认证码一起进行加密,如图5-9(d)所示。2020/2/1126(5)通信各方共享一个公共的秘密值S的Hash值(如图5-9(e)所示)。该方法使用Hash值,但不对其加密。假定通信各方共享一个公共秘密值S,用户A对串接的消息M和S计算出Hash值,并将得到的Hash值附加在消息M后。因为秘密值S本身并不被发送,攻击者无法更改中途截获的消息,也就无法产生假消息,此方法只提供认证。2020/2/1127(6)通过对包含消息和Hash值的整体进行加密就能对方法(5)增加保密功能,如图5-9(f)所示。当不需要保密时,方法(2)和(3)在降低计算量上要优于那些需要对整个消息进行加密的方法。然而,目前对避免加密的方法(5)越来越重视。2020/2/1128表5-1归纳了图5-9中说明的保密和认证方法。2020/2/11295.4实体认证技术5.4.1身份认证系统1.身份认证系统的组成由4部分组成:示证者P(Prover)(也称为申请者(Claimant),即出示证件的人,提出某种要求)、验证者V(Verifier)(检验示证者提出的证件的正确性和合法性,决定是否满足要求)、攻击者(可以窃听和伪装示证者,骗取验证者的信任)和可信赖者(即第三方,也称仲裁者,参与调解纠纷)。实现身份验证的这类技术称为身份认证技术,也称为识别(Identification)、实体认证(EntityAuthentication)、身份证实(IdentityVerification)等。实体认证与消息认证的区别主要体现在:消息认证本身不需要实时,而实体认证一般都是实时的;另一方面实体认证通常是认证实体本身,而消息认证除了证实消息的合法性和完整性外,还要知道消息的含义。2020/2/11302.身份认证系统的要求作为一个安全、可靠的身份认证系统,应满足以下要求:(1)不具可传递性(Transferability),验证者B不可能重用示证者A提供给他的信息来伪装示证者A,而成功地骗取其他人的验证,从而得到信任;(2)攻击者伪装示证者欺骗验证者成功的概率要小到可以忽略的程度,特别是要能抗击已知密文攻击,即能抗击攻击者在截获到示证者的验证者多次通信下的密文,然后伪装示证者欺骗验证者;(3)验证者正确识