第 5 章 认证技术

85
5 5 第 第第第第 第 第第第第 第1第 第第第第 第2第 第第第第 第3第 第第第第 第4第 第第第第 第5第 第第第第

Upload: ingrid-kane

Post on 31-Dec-2015

124 views

Category:

Documents


5 download

DESCRIPTION

第 5 章 认证技术. 第 1 节 认证概述  第 2 节 口令认证  第 3 节 物理认证  第 4 节 生物认证  第 5 节 密码认证 . 本章小结. 本章讲述了几种基本的认证方法:口令认证、物理认证、生物认证。每种认证方法都有其优势与不足。选择一个特定的认证技术主要依赖于具体的应用,没有一种技术能够在所有方面胜过其它的技术,从这个意义上说,每种技术都是可以采纳的。口令与物理认证。指纹和虹膜认证在准确性和速度上优于声音认证。紧接着又讲述了基于密码学的认证的几种基本. 本章小结. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 5 章 认证技术

第第 55 章 认证技术章 认证技术

第 1 节 认证概述第 2 节 口令认证第 3 节 物理认证第 4 节 生物认证第 5 节 密码认证

Page 2: 第 5 章 认证技术

本章小结本章小结 本章讲述了几种基本的认证方法:口令认证、物理认证、生物认证。每种认证方法都有其优势与不足。选择一个特定的认证技术主要依赖于具体的应用,没有一种技术能够在所有方面胜过其它的技术,从这个意义上说,每种技术都是可以采纳的。口令与物理认证。指纹和虹膜认证在准确性和速度上优于声音认证。紧接着又讲述了基于密码学的认证的几种基本

Page 3: 第 5 章 认证技术

本章小结本章小结

的认证协议,详细分析了这些协议的设计思想以及这些协议是如何细心地面对可能的攻击的。讲述了这些协议的逐步改进完善的过程,主要介绍了Needham-Schroeder 协议与扩展Needham-Schroeder 的协议, Otway-Rees 协议等。最后介绍了随机数的选择。

Page 4: 第 5 章 认证技术

思考题思考题

1. 试分析本章经过改进的最后的各个协议还有什么安全漏洞。 2. 请选择第 1 本参考书的第 11 章中 13道题中的任何一个,解决该题提出的问题。

Page 5: 第 5 章 认证技术

第第 11 节 认证概述节 认证概述 认证系统是让系统验证你是否就是你声称的的实体。比如某个人说她是 Alice ,认证系统的任务就是作出她是否就是 Alice 的结论。如果认证系统给出的结论是她确实是 Alice ,那么我们就说她通过了认证,如果冒充的Alice ,那么就不能通过认证。通过认证,就基本上保证了她就是 Alice ,就可以做系统允许 Alice 所做的事情。这涉及到你是否有某些权利的问题。

Page 6: 第 5 章 认证技术

认证概述认证概述

认证是用可靠的技术验证某个实体身份的过程。这些认证技术包括口令认证、物理认证、生物认证、密码学认证等。不管采用什么认证方法,认证都是基于三种事实:你所知道的东西 ( 比如你知道你自己的口令 ) 、你所拥有的东西 ( 比如你拥有的信用卡、 IC 卡、进入某房间的钥匙等 ) 、你是谁 ( 指纹、声音、虹膜等 ) 。

Page 7: 第 5 章 认证技术

认证过程认证过程 通用的一般认证过程是这样的: Alice 出示表明她就是 Alice 的东西,认证系统检验它出示的东西与认证系统中存储的 Alice 的认证证据是否相匹配,如果相匹配,则通过认证;如果不匹配,则称为认证失败或者相应的实体没有通过认证。 认证系统的组成:根据一般的认证过程可知,一个认证系统必须要有存储系统、要有验证系统和用户提供证据的环境。

Page 8: 第 5 章 认证技术

认证系统认证系统 认证系统非常重要,但并不神秘。我们几乎天天都在与认证系统打交道。这种系统可以非常复杂,比如你想进入国防部大楼的认证系统,也可以是一般的并不复杂的系统,如你收发邮件的认证系统,也可以是非常简单的系统,比如可以简单到学校的门卫系统,甚至简单到只是一把普通的门锁。无论系统是简单还是复杂,原理都是相同的,知道了这一点对我们学习各种认证方法大有帮助。

Page 9: 第 5 章 认证技术

第第 22 节 节 口令认证口令认证 口令认证系统的组成有:提供口令的界面、存储口令的数据库和数据库查询计算系统。口令在计算机领域非常流行。 E-mail 、上网、银行取款、甚至我们上网评价老师都需要口令。口令起源于军方,用得最多的场合也是军方。原因很简单:一个组织也可以将组织所约定的口令告诉本组织的所有人,凡是能说出口令的人都认为是本组织的人员,口令可以作为本组织成员的证据。

Page 10: 第 5 章 认证技术

口令认证口令认证 而在现代的口令系统中都对原来的口令系统进行了改进。如果 Alice 要向 Bob 证明她就是 Alice ,但 Bob 并不认识 Alice ,他们可以预先设定一个特别的简短语句 ( 口令 )。Bob 则认为能够说出口令人就是 Alice 。认证是基于你应该知道你的帐户对应的口令。如果你输入口令与你的帐户相对应,你就顺利通过了口令认证。你就具有相应的权利、可以做对应的身份所能做的任何事情。

Page 11: 第 5 章 认证技术

口令认证的工作过程口令认证的工作过程 下图是基于口令的认证系统的组成与工作原理,这个系统用起来非常方便,但存在明显的安全问题。

Ali

ce

My password is XXXXX

I am Alice

Bob

数据库

Page 12: 第 5 章 认证技术

口令认证存在的问题口令认证存在的问题

我们每天都在使用口令,这可能使你产生误解,认为口令是一种比较好的认证策略。事实上用口令认证安全性是比较低的,有很多问题,例如: (1) 攻击者可以在 Alice登录时实施侦听以获取口令。 (2) 攻击者可以读取计算机中所存储的口令信息。 (3) 可以登录计算机,进行在线口令猜测。 (4) 攻击者也可以实施离线破解。 (5) 如果试图强制用户选择无法猜测的口令,那么系统可能变得不便于使用,用户可能不得不写下口令。

Page 13: 第 5 章 认证技术

口令认证存在的问题口令认证存在的问题 口令认证存在这些安全问题的原因主要有三方面:一是口令太短,很容易用搜索 ( 穷举攻击 ) 方法找到口令 ( 比如自动取款机上的口令字只是 6位十进制数 ) ;二是人们选择口令的原则往往与安全原则相违背 ( 比如人们往往选择电话号码、生日或其他编号作为口令,因为没有任何意义的口令虽然猜测很难,但也很难记 ) 。三是口令存储与发送都是以明文方式进行的,这带来了严重的问题,攻击者可以侦听,也可以攻击数据库。

Page 14: 第 5 章 认证技术

安全问题的简单改进安全问题的简单改进

(1) 限制猜测次数 (执行死刑 ) 。(2) 降低猜测口令的速度。(3) 增加攻击者搜索的空间,使必须搜索的口令数目非常大。

(4) 要求用户选择自己的口令,而且是比较好的口令。

Page 15: 第 5 章 认证技术

不直接保存口令不直接保存口令

攻击者可能直接攻击服务器,获得保存用户口令的文件,这样攻击者就可以获得所有的用户口令。这是一个严重的问题,是不允许的。那么如何解决这个问题呢,有两种方法: (1) 数据库中保存用户的口令的单向散列函数值。 (2) 保存用户口令的加密的密文。

Page 16: 第 5 章 认证技术

离线攻击离线攻击 当服务器不再存储用户口令,而改为存储用户口令的哈希值或口令的密文时,攻击者获得口令文件,并不能直接冒充用户。但是攻击者可以采用离线攻击的方法,猜测用户的口令,猜测一个就计算其哈希值或密文。看是否与获得数据库文件相同,如果相同,就获得了用户的口令。特别有效的是 Salt 攻击。从破解口令的难度来看,保存口令的密文比保存口令的哈希值效果要好一些。

Page 17: 第 5 章 认证技术

口令多长才合适口令多长才合适 从防范离线攻击来说,一般认为用计算机搜索 264 种密钥是困难的。因此 64 比特的密钥是合适的。那么如果从 26 个字母与 10 个阿拉伯数字中随机选择口令,每个字符为 5 比特,需要约 12 个字符就能满足需要。但是这样长的口令用户一般也不容易记忆,所以用户一般选择的口令,不能满足安全性要求,很容易受到离线攻击。

Page 18: 第 5 章 认证技术

口令侦听口令侦听

因为使用口令时必须将口令说出来或者打出来,这就存在侦听的可能。攻击者可能观看口令的输入过程、观看屏幕、在线路上搭上窃听装置。解决的方法有距离控制、使用户更为谨慎,输入过程中使用更多的手指、屏蔽掉屏幕的字符、使用一次一密机制、使用口令列表等技术。

Page 19: 第 5 章 认证技术

用户的问题用户的问题

调查表明:绝大多数用户,将安全措施视为一种累赘,而不是对他们提供的保护。用户经常放弃安全人员精心为他们设计的安全措施,而采用不安全的措施。比如系统管理员可能将口令贴在显示器上、在不安全的地方使用口令、在不同的应用中使用相同的口令、长期使用使用不变的口令等。解决的方法是教育用户提高安全意识,告诉他们为什么必须遵循安全步骤,并且在设计安全流程时,考虑用户的忍耐力。

Page 20: 第 5 章 认证技术

更换口令更换口令

频繁更换口令从一定的程度上可以改善安全性。更换口令背后的指导思想是:如果有人已经知道了你的口令,那么当你更换口令后,她就不能再使用了。但是如果攻击者使用一次你的口令就能对系统或对你个人造成大的破坏或损失,那么频繁更换口令用处就不大。频繁更换口令机制必须要用户的积极配合,没有用户的配合,就无法发挥机制的作用。

Page 21: 第 5 章 认证技术

第第 33 节 物理认证节 物理认证 物理认证属于通过“你所拥有的东西”进行认证。是很自然的认证方法,也是我们大家很熟悉的认证方法,而且是工业社会的主流认证方法。介绍信、证明、学生证、第一代身份证等。而现在物理认证则发展成为认证令牌。包括:带有存储磁条的信用卡;智能卡 (有 PIN 保护的内存卡、密码挑战/响应卡、密码计算器、射频感应卡等 ) 。物理认证的缺点是可能被盗窃,一般必须与其它安全机制一起使用。

Page 22: 第 5 章 认证技术

第第 44 节 生物认证节 生物认证 生物认证是利用生物体的不可改变的一些属性进行认证。既然是生物属性就只能认证人的身份,不能用于对网络的其他实体 ( 主机、机构等 ) 的认证。生物认证是基于“你是谁”的认证。生物认证方法主要有:视网膜扫描认证、指纹识别、虹膜扫描认证、掌纹识别认证、语音识别认证与手工签名认证 ( 这一点也可以列为物理认证 ) 。

Page 23: 第 5 章 认证技术

视网膜扫描视网膜扫描

据研究人类视网膜中的血管组织是终生不变的,而且每个人都不同。因此可以作为认证的依据。视网膜扫描设备就是扫描眼睛中的细小血管,同数据库中保存的视网膜数据相比较,如果相同,则通过验证,否则验证失败。不过目前的视网膜扫描设备相当昂贵、界面不太友好。

Page 24: 第 5 章 认证技术

指纹识别指纹识别

指纹同视网膜一样,对于一个人也是终身不变的,而且全世界没有两个人的指纹是完全相同的。指纹扫描是比较简易的技术,已经在各行各业普遍使用,但由于图像识别技术和数据库搜索技术的限制,目前指纹自动化识别并不很成功,这种方法主要是与物理认证技术联合使用来完成认证过程。指纹认证与物理认证联合是一种可行的、快速的认证方法。指纹认证的实例。

Page 25: 第 5 章 认证技术

虹膜认证虹膜认证 虹膜扫描设备扫描人眼中的虹膜图案。这也是基于虹膜的特点。它的主要优点是用户界面比较友好,不需要人眼去对准激光设备,在几步远的距离就可以实施认证,甚至可以偷偷地进行扫描,这使虹膜认证技术可以用在某些秘密的场合,比如海关、机场用于等场合用于对犯罪嫌疑人、通缉犯的初步认证。

Page 26: 第 5 章 认证技术

签名认证签名认证 这是经典的认证方式,并且有专家能够准确地判断出两个签名是否来自同一个人。签名与签名过程的运动时间等都可以用于认证。签名认证需要被认证者在一个电子版上签名。但这种方法还没有达到专家的认证水平。传统的签名认证还基于一定的法律保障,伪造签名将会受到严厉的惩罚。所以伪造签名较少。

Page 27: 第 5 章 认证技术

声音认证声音认证 研究表明一个人的语音频谱与人的指纹一样,具有基本不变的特性。通过语音频谱的认证,能够与指纹认证达到同样准确的认证效果。应用的实例。这种认证的主要问题是:

通过录音重放就可破坏这样的认证系统,另外就是人在生病时声音频谱可能发生变化,从而导致认证失败。

Page 28: 第 5 章 认证技术

其他认证手段其他认证手段 掌纹识别:是通过测量手掌的各个部位的尺寸如手指长度,手掌宽度等。这种认证方法的问题是精度不够高。

步态识别:通过对人走路时的跨度、步伐、速度等进行认证。

人脸认证:通过测量人脸的各种图像数据进行认证,缺点是一定要正面面对认证设备才能达到一定的精确度,否则就会影响认证的准确性。

Page 29: 第 5 章 认证技术

各种认证手段的比较各种认证手段的比较

每种生物特征认证技术都有自己的优势和不足,选择一个特定的生物特征认证技术主要依赖于具体的应用,没有一种技术能够在所有方面胜过其它的技术,从这个意义上说,每种技术都是可以采纳的。指纹和虹膜认证在准确性和速度上优于声音认证。

Page 30: 第 5 章 认证技术

各种认证手段的比较各种认证手段的比较

比如在用于机场、海关防止贪官外逃、防止通缉犯出境、对于携带走私物品进出境的可疑人员的过滤等用步态认证或者虹膜认证等都是可行的。然而在电话计账系统中,声音认证却是一个好的选择,因为它能够很好地集成到现有的电话系统中这些

Page 31: 第 5 章 认证技术

认证系统的工作原理是基于各人独特的生物特性,每个人的指纹、虹膜与视网膜都不相同,不同的人这些生物特征相同的概率几乎可以忽略不计。在实际使用中上述各种认证方案往往联合使用,而不是单独使用。比如口令与指纹结合、物理认证与指纹认证相结合、虹膜与指纹结合等。

Page 32: 第 5 章 认证技术

第第 55 节 节 密码学认证方法密码学认证方法 前面讲了口令认证、物理认证、生物认证,这些认证方法都是比较基本的认证方法,速度比较快,但可靠性不高。适用于一般可靠性要求的场合,不能用于金融、电子商务、国防等高可靠性场合。那么这些高可靠性的场合用什么方法认证呢,必须采用密码学认证方法。这就是下面要讲述的内容。还要学习外国人是如何进行科学研究的。

Page 33: 第 5 章 认证技术

5.15.1 单向口令认证 单向口令认证

基本的登录协议在设计时都没有考虑侦听可能带来的问题,根本就没有考虑到可能有人侦听。通常这样的口令认证协议 1 如下: (1) Alice 通过网络发送自己的用户名和口令给Bob( 可能是一个服务器 ) 。 (2) Bob 验证 Alice 的用户名和口令,然后进行通信,不再考虑安全问题。没有加密,也没有任何密码机制加以保护。(冒充问题)

Page 34: 第 5 章 认证技术

5.2 5.2 单向口令认证的改进单向口令认证的改进

Page 35: 第 5 章 认证技术

单向口令认证的改进单向口令认证的改进 (( 协议协议 2)2)A

lice

Bo

b

I am Alice

Challenge R

f(KAB,R)

Page 36: 第 5 章 认证技术

协议协议 22 的优缺点的优缺点 优点:侦听者不能利用侦听的信息冒充 Alice 。 缺点: (1) 上述认证是单向的而不是双向的; (2) 会话可能被劫持,攻击者也可能侦听到认证完成后所进行的通信信息;(3) 侦听者侦听到 R和 f (KAB,R) 后,假定KAB是由口令生成的,那么攻击者可以实行离线口令猜测。 (4) 能够读取 Bob 数据库的攻击者以后就可以冒充 Alice 。

Page 37: 第 5 章 认证技术

协议协议 11 的另一种变形的另一种变形 这是协议 2 的变形,所作的仅仅是将发送的明文进行替换。这是一个简易的增强安全性的措施。

Alic

e

Bob

I am Alice

R

KAB{R}

Page 38: 第 5 章 认证技术

协议协议 33 的缺点的缺点

(1) 因为需要使用可逆的密码算法,所以效率较低。而在协议 2 中,不需要可逆的密码算法,可以是散列函数,所以效率较高。

(2) 假设 KAB 是通过口令生成的,并且口令可以用字典攻击,那么攻击者不需要侦听就可以实施离线口令攻击。

Page 39: 第 5 章 认证技术

协议协议 22 修改成协议修改成协议 44A

lice

BobI am Alice KAB(timestamp)

协议 4

这要求 Alice和 Bob 有同步时钟, Alice加密当前时间, Bob 解密时间并验证时间在一定的时差之内。

Page 40: 第 5 章 认证技术

协议协议 44 的优缺点的优缺点 优点:非常简单,与基于口令的认证非常接近,原方案只需要简单修改就可以采用协议4 ;协议效率更高。

缺点:只要在可以接受的时差之内,侦听者就可以用截获的的信息冒充 Alice ;如果Alice 在多台服务器上使用相同的共享密钥,侦听者还可以在其他服务器上冒充 Alice ;如果侦听者能够修改 Bob 的时间设置,他就可以使用以前侦听到的加密时戳。

Page 41: 第 5 章 认证技术

使用公钥的协议使用公钥的协议

前面几个协议都是使用共享密钥方案,共同的缺点是,如果攻击者能够读取Bob 的数据库,那么就能够冒充 Alice 。如果用公钥技术就可以避免这样的问题。这种方法的好处是即使 Bob 的数据库被攻击者读取,也不会对安全造成影响。

Page 42: 第 5 章 认证技术

Alic

e

Bob

I am Alice

R

Bob用公钥签名认证Alice

{R}A

Ali

ce

Bob

I am Alice

R如果Alice能解密用她的公钥加密的消息,则通过认证

{R}A

Page 43: 第 5 章 认证技术

协议协议 5/65/6 的问题的问题

协议 5 可以诱骗 Alice 对某些消息进行签名;协议 6 可以诱骗 Alice 对某些消息解密。避免这些问题的可行的方法有两种:一是不要将相同的密钥用于两种不同的目的;二是确定用于认证的消息应当有固定的格式。

Page 44: 第 5 章 认证技术

2.12.1 双向认证双向认证两个方向上的独立认证,具体协议如下图(协议 7)

Alic

e

Bob

I am Alice

R1

f(KAB,R1)

R2

f(KAB,R2)

Page 45: 第 5 章 认证技术

协议协议 77 的问题的问题

协议 7 存在的一个主要问题是效率比较低,通信复杂性较高, Alice和Bob之间的一次认证就需要来回 5次通信,严重浪费通信带宽、浪费双方宝贵的时间。这个问题可以通过在每个消息中放入多个消息,从而将消息减少为 3个消息。这就是下面的协议 8 。

Page 46: 第 5 章 认证技术

协议协议 77 的改进的改进 (( 协议协议 8)8)A

lice

Bob

I am Alice, R2

R1, f(KAB, R2)

f(KAB, R1)

Page 47: 第 5 章 认证技术

协议协议 88 的问题的问题

协议 8 存在的一个安全缺陷是反射攻击,假设攻击者 Carol希望冒充 Alice ,它就可以按下面的方法发动反射攻击。就是 Carol先启动一个认证会话过程,当收到 Bob发来的挑战时,他不响应这个挑战,而是重新启动一个认证会话,在这个会话中,他将 Bob发来的挑战,作为新的会话中的挑战发给对方。用 Bob 在第2 个会话中的响应来继续他启动的第 1 个认证会话,完成第 1 个认证会话,欺骗 Bob 。

Page 48: 第 5 章 认证技术

对协议对协议 77 的反射攻击的反射攻击A

lice

Bob

Alic

e

Bob

反射攻击第一步

反射攻击第二步

Page 49: 第 5 章 认证技术

协议协议 77 的改进的改进

有两种方法可以避免反射攻击,两种方法都基于同样的原则,即不要让 Alice 和 Bob 做同样的事情。 (1)

在认证 Alice和 Bob时使用不同的密钥; (2) 要求挑战者和响应者使用的随机数有不同的格式。

Page 50: 第 5 章 认证技术

协议协议 77 的改进的改进 (( 协议协议 8)8)A

lice

Bob

I am Alice, R2

R1, f(KAB, R2)

f(KAB, R1)

Page 51: 第 5 章 认证技术

协议协议 88 的缺陷的缺陷 协议 8 还有另外一个缺陷,就是 Carol 可以不需要侦听就可以实施离线口令猜解,他只需要发送一个消息给 Bob ,并声称自己是 Alice ,同时发送一个数据 R1要求计算 f (KAB, R1), Bob就会将计算的结果发回,然后 Carol 就有了 <R2, f (KAB, R1)> ,因为函数是已知的, R1是 Carol自己产生的,它就可以实施离线口令猜解,猜测KAB。通过增加消息的长度,可以增加口令猜解的难度。如下面的图所示的措施,攻击者必须经过两次侦听才能才能进行离线口令猜解。

Page 52: 第 5 章 认证技术

Ali

ce

Bob

I am Alice

R1

f(KAB, R1),R2

f(KAB, R2)

协议 8 的改进

Page 53: 第 5 章 认证技术

用公钥实现双向认证用公钥实现双向认证 (( 协议协议 9)9)

用公钥实现双向认证比较容易,假设的前提是 Alice和 Bob 都知道对方的公开密钥,这样每个人都产生一个随机数 (挑战 ), 并用对方的公开密钥加密,并要求对方响应这个随机数。如果对方能正确响应随机数,说明对方知道其私有密钥,而这正是能证明对方身份的证据。

Page 54: 第 5 章 认证技术

用公钥实现双向认证用公钥实现双向认证 (( 协议协议 9)9)A

lice

Bob

I am Alice,

R2,{R1}A

{R2}B

R1

Page 55: 第 5 章 认证技术

协议协议 99 的问题的问题 协议 9 存在两个问题 : (1) 如何让 Alice知道 Bob 的公钥,虽然可以让 Bob发过来,但如果攻击者能冒充的话,就有问题。这是需要我们进一步研究的问题,我们将在 CA 部分解决这一问题。 (2) 在 Alice只知道口令的情况下,如何让 Alice 知道她自己的私钥?有的人可能会说知道自己的私钥是理所当然的。如果是对称密钥可以由口令生成,公开密钥就不能这样生成,记起来就相当困难。需要采用下面的机制:用 Alice 的口令加密她的私钥,并保存到工作站中,需要使用时,输入口令即可。

Page 56: 第 5 章 认证技术

3.3. 机密性保护机制机密性保护机制 前面所讲的都是如何实现 Alice和 Bob之间的认证,完成认证后,他们能不能就直接用明文进行通信呢?完成认证后如何通信的问题我们还没有涉及到。现在我们来研究这个问题。他们在认证过程中应该协商一个秘密的会话密钥,用这个会话密钥加密他们之间的通信数据,以实现安全通信。不管在那种情况下,前面的认证过程完成后, Alice和 Bob之间都有了足够的信息 ( 比如他们有 R1和 R2,或者一个时标 ) ,使得他们能够产生一个双方共享的会话

Page 57: 第 5 章 认证技术

用共享密钥实现认证用共享密钥实现认证

Ali

ce

Bob

I am Alice

R

KAB{R}

共享密钥实现认证

Page 58: 第 5 章 认证技术

机密通信机制机密通信机制

密钥。比如它们可以用 (KAB+1){R} 作为会话密钥。那么能不能用 KAB{R} 作会话密钥呢?答案是否定的, Why?是否可以用 KAB{R+ 1} 作为会话密钥呢?答案也是 No,Why?因为在上述的认证过程中 Bob发送了 R 作为挑战。而以后如果用 KAB{R+ 1} 作为会话密钥加密所有通信过程的信息, Carol 可能实施侦听,并记录全部的通信信息。然后 Carol 冒充 Bob引诱Alice 给他通信,首先他假装要对 Alice 实施

Page 59: 第 5 章 认证技术

为什么不能用为什么不能用 KKABAB{{RR++ 11}}

Ali

ce

冒充

Bob

I am Alice

R+1

KAB{R+1}

Trudy冒充Bob

Page 60: 第 5 章 认证技术

机密通信机制机密通信机制

认证,但 Alice 给他发送第一个消息: I am Alice 后,他就给 Alice发送 R+1 作为挑战, Alice 就会返回一个响应 KAB{R+1} ,这时 Carol 就获得了 KAB{R+ 1} ,而这正是以前某个时候 Alice与 Bob 进行通信时所用的会话密钥, Carol现在获得了这个密钥,他就能解密以前的这次通话的所有信息。因此 Alice和 Bob 在认证结束之后,都知道了 KAB, R 。

Page 61: 第 5 章 认证技术

机密性保证机制机密性保证机制

有多种方法可以将这两个数据结合起来得到可用的会话密钥,但结合得到的部分数据不能作为会话密钥。一个好的会话密钥必须对不同的会话不同、侦听者无法猜解的,并且不能 KAB用加密一个侦听者能够预测或者提取到的数据。

Page 62: 第 5 章 认证技术

4.4. 用用 KDCKDC 实现认证实现认证

KDC 的概念在前面已经介绍过。现在我们来学习如何利用 KDC 实现认证。首先KDC 有一个存放所有用户的密钥的数据库。任何在 KDC注册的用户 Alice 都可以与KDC 进行安全通信。 Alice和 KDC 可以互相认证,并在通信过程中实施加密,因为他们双方都知道 Alice 的密钥。通过KDC 实现认证的过程如图所示。

Page 63: 第 5 章 认证技术

KDCKDC 认证认证A

lice

KDC

生成密钥KAB

Bo

b

Alice wants Bob

KB{use KAB for Alice}

KA{use KAB for Bob}

Page 64: 第 5 章 认证技术

AliceAlice和和 BobBob 之间的直接通信之间的直接通信A

lice

Bob

I am Alice, KAB{M}

Page 65: 第 5 章 认证技术

KDCKDC 存在的问题存在的问题

1. KDC 拥有可以冒充任何用户身份的信息;

2. KDC 是安全问题的焦点;3. KDC 可能成为通信的瓶颈。

Page 66: 第 5 章 认证技术

利用利用 KDCKDC 的实际操作过程的实际操作过程A

lice

KDC

Bob

Alice wants Bob

Page 67: 第 5 章 认证技术

认证中心认证中心 CACA

如果网络安全采用公开密钥技术来保证。那么密钥的分发要容易得多。每个结点都知道自己的私钥,而所有结点的公钥可以放到某个所有结点都可以访问的文件服务器中。但是这个服务器必须采取一系列措施保证其上面的信息都是真实的、可信的,具有这种性质的服务器,我们称其为 Certification Authority-CA

Page 68: 第 5 章 认证技术

可信性保证机制可信性保证机制

1. CA 的可信性保证机制 ( 可信的机构建立CA ,签名机制 ) 。

2. 证书的概念 ( 实际是证明公钥的证据 ) 。3. CA与 KDC 的比较: CA 不需要在线;由于不要在线所以更加安全;公开证书不会对安全性造成任何危害;即使成功入侵 CA 也不能解密其他用户的通信内容。证书撤销问题。

Page 69: 第 5 章 认证技术

多个多个 KDCKDC或或 CACA

1. KDC或 CA 的缺点。2. 为什么要引入多个 KDC或 CA

( 一个国家的管理体制 )?3. 运行方式 ( 国际贸易中的信用证方式 ) 。

Page 70: 第 5 章 认证技术

Needham-SchroederNeedham-Schroeder 协议协议 使用 KDC 实现认证的经典协议是由Needham和 Schroeder 设计的。该协议与前面描述的 KDC 认证过程类似。 Needham-Schroeder 协议非常重要,因为它是经典的KDC仲裁认证协议,其他协议都是在该协议的基础上设计的。 Kerberos 就是基于该协议的安全认证标准。了解这一协议的优缺点非常有启发意义。最基本的 Needham-Schroeder 如果所示,此协议晦涩难懂,要理解这个协议必须深入其内部。

Page 71: 第 5 章 认证技术

Needham-SchroederNeedham-Schroeder 协议协议A

lice

KDC

生成密钥KAB

Bob

N1 Alice wants Bob

KA{N1, "Bob", KAB, ticket to Bob}where ticket to Bob=KB{KAB,"Alice"}

ticket, KAB{N2}

KAB {N2-1, N3}

KAB {N3-1}

Page 72: 第 5 章 认证技术

协议的细节协议的细节 消息 1: Alice告诉 KDC 她希望与 Bob 通信。其中的 Nonce N1是为了保证她与 KDC 通信。主要是为了防止下面的攻击:假如不这样设计,那么 Alice和 KDC之间的通信过程将会是这样的

Alice wants Bob

KA{"Bob", KAB, ticket to Bob}where ticket to Bob=KB{KAB,"Alice"}

Page 73: 第 5 章 认证技术

协议的分析协议的分析如果这样, Carol 就能进行下面的攻击: Carol在某次 Alice 请求KDC 以获得与 Bob 进行通信的密钥时截获了 KDC返回的消息。 KA{ “ Bob”, KAB, ticket to Bob} where ticket to Bob= KB { KAB,“Alice”}并保存这个消息。 Carol 又偷取了 Bob 的密钥 KB , Bob已经知道自己密钥被窃的事,并且更新了自己的密钥。当 Alice再次向KDC申请与 Bob 通信的密钥时, Carol只需要重放消息,然后 Carol 就可以冒充 Bob 了。因为Alice会认为这是 KDC刚生成的 KAB而且认为 KB

Page 74: 第 5 章 认证技术

协议分析协议分析仍然是 Bob 的有效密钥,但是如果加入一个Nonce ,只要 Alice 每次都使用一个不同的Nonce ,就可以防止这样的攻击,因为如果重放, Nonce已经不同,这样重放攻击就会被发现。虽然很难想象在什么情况下能够实施这种攻击,但是加入一个 Nonce 几乎不需要什么开销,而且再也不需要考虑这种攻击是否会发生。那么我想请大家思考一个问题,还有没有别的方法可以阻止这种重放攻击?

Page 75: 第 5 章 认证技术

协议分析协议分析 在消息 2 中, KDC为 Alice和 Bob 生成共享密钥 KAB ,并将该密钥安全地发给 Alice 。如果消息中没有 Bob , Carol 就可以将 Alice发送给KDC 的消息修改为 Alice wants Carol, 而KDC返回的消息就成为 KA{ KAC, ticket } where ticket=KC{ KAC, “Alice”}。从而引诱 Alice 与他通信,而在消息中加入 Bob ,就可以防止这种攻击,因为虽然 Carol 可以将消息修改成 Alice wants Carol ,但在 KDC 生成的消息中将会指明是用于与 Carol 通信,而不是与Bob 通信用的,所以

Page 76: 第 5 章 认证技术

协议分析协议分析Alice 就会发现这一问题。在消息 2 中除了共享密钥与 Bob 的名字以外, KDC 还将访问 Bob的Ticket 交给了 Alice ,这与实际中的情况更加相似。访问 Bob的 Ticket 包括了共享密钥与 Alice的名字,并用 Bob 的密钥进行加密,对 Alice来说,该 Ticket 是一堆无法理解的数据。也防止Alice修改 Ticket 的内容。 在消息 3 中, Alice发送一个挑战 N2,并用KAB后发送给 Bob ,同时还发送了 Ticket。 Bob可以用自己的密钥解密 Ticket ,得到 KAB

Page 77: 第 5 章 认证技术

协议分析协议分析 在消息 4 中, Bob 通过用 KAB解密 KAB {N2} 并返回 KAB {N2- 1} 证明自己知道 KAB ,Alice 可以解密 KAB {N2- 1} 验证这一点。为什么发送 KAB {N2- 1}而不是发送 KAB {N2} ? 类似地,消息 5 的作用主要是 Alice向Bob 证明自己知道 KAB 。 如果采用 ECB模式加密,本协议存在反射攻击,如果采用 CBC模式加密,就可以防止这种攻击。

Page 78: 第 5 章 认证技术

扩展扩展 Needham-SchroederNeedham-Schroeder 协议协议 上面介绍的 Needham-Schroeder 协议看上去比较完善,但是还有一个安全问题。这个问题就是如果 Carol得到了 Alice 的密钥,而Alice 并不知道这件事,那么在 Alice更新自己的密钥之前, Carol 都可以冒充 Alice ,更糟的是即使 Alice更换了密钥,但访问 Bob 的门票仍然是有效的, Carol仍然可以利用。 Ding D. E. 发现了这个问题,并提出了解决方案。解决方案的论文发表在一个很有影响的国际著名学报上。解决方案如下:

Page 79: 第 5 章 认证技术

扩展扩展 Needham-SchroederNeedham-Schroeder 协议协议A

lice

KDC取出NB

生成密钥KAB Bob

I wants to talk to you

N1, Alice wants Bob KB{NB}

KAB {N2-1, N3}

KAB {N3-1}

KB{NB}

KA{N1, "Bob", KAB, ticket to Bob}where ticket to Bob =KB{KAB, "Alice", NB}

Ticket,KAB {N2}

Page 80: 第 5 章 认证技术

扩展扩展 Needham-SchroederNeedham-Schroeder 协议协议

Alice首先以明文方式与 Bob 进行通信,要求Bob发送一个 Nonce NB, Alice将该 Nonce发给 KDC ,然后 KDC将该 Nonce加到访问 Bob的门票里,这就可以让 Bob 相信他正在通信的实体刚刚和 KDC 进行了通信,因为 Nonce是Bob刚刚生成的,这样就可以防止 Carol 重放过去某个时刻得到的门票,如果重放过去某个时刻得到的门票, Bob 就会发现这个过时的Nonce 。这就是扩展的 Needham-Schroeder 协议。

Page 81: 第 5 章 认证技术

Otway-ReesOtway-Rees 协议协议 Otway和 Rees 提出了一种先进的认证协议,它不仅解决了门票的有效性问题,还用 5 个消息实现了双向认证。他用了一个重要的思想:只要可以,实体都必须生成挑战。在 Otway-Rees 协议中,通信的发起人 Alice需要首先生成两个Nonce NA, NC , 并发送下列消息给 Bob : NC “Alice”, “Bob”, KA{NA, NC , “Alice”, “Bob“}. Bob 无法解密消息 KA{NA, NC , “Alice”, “Bob“}, 他就将该消息转发给 KDC 。 在第 2 个消息中, Bob除了转发 Alice发来的

Page 82: 第 5 章 认证技术

Otway-ReesOtway-Rees 协议协议A

lice

KDC取出NB

生成密钥KAB

Bob

NC, "Alice", "Bob", KA{NA, NC, "Alice", "Bob"}

KA{NA, NC, "Alice", "Bob"}KB{NB, NC, "Alice", "Bob"}

NC, KA{NA,KAB}, KB{NB, KAB}

KA{NA,KAB}

KAB{anything recognizable}

Page 83: 第 5 章 认证技术

Otway-ReesOtway-Rees 协议协议加密消息以外,还要产生一个新的 Nonce NB,并与 NC,“ Alice” ,“ Bob” 一起用自己的密钥加密后发送 KDC。 KDC 能够解密这两个消息 KA{ NA, NC , “Alice”, “Bob“},和 KB{ NB, NC , “Alice”, “Bob“}, 并验证这两个消息中的 NC是同一个,如果是同一个说明发来消息的确实是 Bob ,因为只有 Bob才能用 KB加密 NC 。否则 KDC就会拒绝这一个消息。这样就实现了对 Bob 的认证。

Page 84: 第 5 章 认证技术

Otway-ReesOtway-Rees 协议协议

在消息 3 中, KDC为 Alice和 Bob 生成一个会话密钥 KAB并发送消息 NC, KA {NA,KAB}, KB {NB,KAB}给 Bob ,该消息转发给 Alice 。通过这个消息中的 NA , Alice 相信 KDC 是合法的,因为 Alice 相信 KDC 是合法的,就进一步相信 Bob 也是合法的。 消息 5 主要是让 Alice 能够向 Bob 证明她的身份。而 Bob 不再需要向 Alice 证明自己的身份,因为这是由 KDC 所保证的。

Page 85: 第 5 章 认证技术

5.5. 随机数的选择随机数的选择 上述所有协议经过各种改进完善之后,其安全性最后都取决于一个因素:选择的随机数是否是无法预测的。对于信息安全来说对随机数要求非常严格。一般来说我们可以采用下面的方法生成满足需要的随机数:选取真正的随机数 ( 比如抛硬币、或者用户运用键盘击键时产生的随机数 ) 作为种子,然后计算该随机数的散列函数值,得到一个新的随机数,再计算该随机数的散列值得到另一个散列值,依此类推。