第 5 章 身份认证

Post on 19-Mar-2016

145 views 0 download

description

计算机系统安全. 第 5 章 身份认证. 一、认证的基本原理. 在现实生活中,我们个人的身份主要是通过各种证件来确认的,比如:身份证、户口本等。 认证是对网络中的主体进行验证的过程,用户必须提供他是谁的证明,他是某个雇员,某个组织的代理、某个软件过程(如交易过程)。 认证( authentication ) 是证明一个对象的身份的过程。 与决定把什么特权附加给该身份的授权( authorization ) 不同。. 问题的提出 身份欺诈 鉴别需求: 某一成员( 声称者 )提交一 个主体的身份并声称它是那个主体。 - PowerPoint PPT Presentation

Transcript of 第 5 章 身份认证

1

第 5 章身份认证

计算机系统安全

2

一、认证的基本原理 一、认证的基本原理 在现实生活中,我们个人的身份主要是通过各种证件来确认的,比如:身份证、户口本等。认证是对网络中的主体进行验证的过程,用户必须提供他是谁的证明,他是某个雇员,某个组织的代理、某个软件过程(如交易过程)。 认证 ( authentication ) 是证明一个对象的身份的过程。 与决定把什么特权附加给该身份的授权( authorization ) 不同。

3

• 问题的提出问题的提出–身份欺诈身份欺诈

• 鉴别需求:鉴别需求: 某一成员( 某一成员(声称者声称者)提交一 个主体的)提交一 个主体的身份并声称它是那个主体。身份并声称它是那个主体。• 鉴别目的:鉴别目的: 使别的成员( 使别的成员(验证者验证者)获得对声称者所)获得对声称者所声称的事实的信任。声称的事实的信任。

4

一、认证的基本原理 一、认证的基本原理 通常有三种方法验证主体身份。1 )是只有该主体了解的秘密,如口令、密钥;2)是主体携带的物品,如智能卡和令牌卡;3 )是只有该主体具有的独一无二的特征或能力,如指纹、声音、视网膜图或签字等。单独用一种方法进行认证不充分

5

一个成熟的身份认证系统应该具有以下特征: 一个成熟的身份认证系统应该具有以下特征: 11 、验证者正确识别对方的概率极大。、验证者正确识别对方的概率极大。22 、攻击者伪装以骗取信任的成功率极小。、攻击者伪装以骗取信任的成功率极小。33 、通过重放攻击进行欺骗和伪装的成功率极小。、通过重放攻击进行欺骗和伪装的成功率极小。44 、实现身份认证的算法计算量足够小。、实现身份认证的算法计算量足够小。55 、实现身份认证所需的通信量足够小。、实现身份认证所需的通信量足够小。66 、秘密参数能够安全存储。、秘密参数能够安全存储。77 、对可信第三方的无条件信任。、对可信第三方的无条件信任。88 、可证明安全性。、可证明安全性。

6

计算机系统采取的身份认证方法有很多计算机系统采取的身份认证方法有很多• 比如口令认证、比如口令认证、• 智能卡认证、智能卡认证、• 基于生物特征的认证、基于生物特征的认证、• 双因素认证、双因素认证、• 基于源地址的认证、基于源地址的认证、• 数字证书和安全协议等。 数字证书和安全协议等。

7

身份认证系统架构包含三项主要组成元件: 认证服务器 (Authentication Server)

负责进行使用者身份认证的工作,服务器上存放使用者的私有密钥、认证方式及其他使用者认证的信息。 认证系统用户端软件 (Authentication Client Software)

认证系统用户端通常都是需要进行登陆 (login) 的设备或系统,在这些设备及系统中必须具备可以与认证服务器协同运作的认证协定。 认证设备 (Authenticator) 认证设备是使用者用来产生或计算密码的软硬件设备。

8

1 )口令机制用户名 /口令认证技术:最简单、最普遍的身份识别技术,如:各类系统的登录等。口令具有共享秘密的属性,是相互约定的代码,只有用户和系统知道。例如,用户把他的用户名和口令送服务器,服务器操作系统鉴别该用户。口令有时由用户选择,有时由系统分配。通常情况下,用户先输入某种标志信息,比如用户名和 ID号,然后系统询问用户口令,若口令与用户文件中的相匹配,用户即可进入访问。口令有多种,如一次性口令;还有基于时间的口令

9

2 )数字证书这是一种检验用户身份的电子文件,也是企业现在可以使用的一种工具。这种证书可以授权购买,提供更强的访问控制,并具有很高的安全性和可靠性。 非对称体制身份识别的关键是将用户身份与密钥绑定。 CA(Certificate Authority)通过为用户发放数字证书 (Certificate)来证明用户公钥与用户身份的对应关系。

第 5 讲 认证

10

验证者向用户提供一随机数;用户以其私钥 KS对随机数进行签名,将签名和自己的证书提交给验证方;验证者验证证书的有效性,从证书中获得用户公钥KP,以 KP验证用户签名的随机数。

11

3 )智能卡网络通过用户拥有什么东西来识别的方法,一般是用智能卡或其它特殊形式的标志,这类标志可以从连接到计算机上的读出器读出来。访问不但需要口令,也需要使用物理智能卡。智能卡技术将成为用户接入和用户身份认证等安全要求的首选技术。用户将从持有认证执照的可信发行者手里取得智能卡安全设备,也可从其他公共密钥密码安全方案发行者那里获得。这样智能卡的读取器必将成为用户接入和认证安全解决方案的一个关键部分。

第 5 讲 认证

12

4)主体特征认证目前已有的设备包括:视网膜扫描仪、声音验证设备、手型识别器等。安全性高。例如:系统中存储了他的指纹,他接入网络时,就必须在连接到网络的电子指纹机上提供他的指纹(这就防止他以假的指纹或其它电子信息欺骗系统),只有指纹相符才允许他访问系统。更普通的是通过视网膜膜血管分布图来识别,原理与指纹识别相同,声波纹识别也是商业系统采用的一种识别方式。

第 5 讲 认证

13

用户名 /口令具有实现简单的优点,但存在以下安全缺点:1 、大多数系统的口令是明文传送到验证服务器的,容易被截获。某些系统在建立一个加密链路后再进行口令的传输以解决此问题,如配置链路加密机。2 、口令维护的成本较高。为保证安全性,口令应当经常更换。另外为避免对口令的字典攻击,口令应当保证一定的长度,并且尽量采用随机的字符。但缺点是难于记忆。3 、口令容易在输入的时候被攻击者偷窥,而且用户无法及时发现。

第 5 讲 认证

14

55 )双因素认证 )双因素认证 • 身份认证有三个要素,身份认证有三个要素,所知道的内容:所知道的内容:需要使用者记忆身份认证内需要使用者记忆身份认证内容,例如密码和身份证号等。容,例如密码和身份证号等。所拥有的物品:所拥有的物品:使用者拥有的特殊认证加强使用者拥有的特殊认证加强机制,例如智能卡,射频卡,磁卡等物理机制,例如智能卡,射频卡,磁卡等物理设备。设备。所具备的特征:所具备的特征:使用者本身拥有的惟一特征,使用者本身拥有的惟一特征,例如指纹、人脸、声音等 例如指纹、人脸、声音等

15

• 11 、用户所知道的内容可能被别人猜出或者被、用户所知道的内容可能被别人猜出或者被用户自己忘记;用户自己忘记;• 22 、用户所拥有的物品可能被丢失或被偷盗;、用户所拥有的物品可能被丢失或被偷盗;• 33 、用户所具备的特征是最为安全的因素,但、用户所具备的特征是最为安全的因素,但是实施起来代价昂贵,一般用在顶级安全需求是实施起来代价昂贵,一般用在顶级安全需求中。中。•把前两种要素结合起来的身份认证机把前两种要素结合起来的身份认证机制就称为双因素认证。如自动提款机制就称为双因素认证。如自动提款机采取的认证方式就是双因素认证采取的认证方式就是双因素认证

这三个要素都有被攻击或破坏的可能:

16

1 、安全与不安全的口令 UNIX系统口令密码都是用 8 位 ( 新的是 13位 )DES算法进行加密的,即有效密码只有前 8位,所以一味靠密码的长度是不可以的。安全的口令要求: 1) 位数 >6 位。 2) 大小写字母混合。3)字母与数字混合。 4) 口令有字母、数字以外的符号。

二、基于口令的身份认证

17

不安全的口令则有如下几种情况: (1) 使用用户名(帐号)作为口令。 (2) 使用用户名(帐号)的变换形式作为口令。将用户名颠倒或者加前后缀作为口令,比如说著名的黑客软件 John ,如果你的用户名是fool ,那么它在尝试使用 fool 作为口令之后,还 会 试 着 使 用 诸 如fool123 、 loof 、 loof123 、 lofo 等作为口令,只要是你想得到的变换方法, John 也会想得到。

第 5 讲 认证

18

(3) 使用自己或者亲友的生日作为口令。这种口令很脆弱,因为这样往往可以得到一个 6 位或者 8 位的口令,但实际上可能的表达方式只有 100×12×31=37200 种。 (4) 使用常用的英文单词作为口令。这种方法比前几种方法要安全一些。一般用户选择的英文单词几乎都落在黑客的字典库里。(5) 使用 5 位或 5 位以下的字符作为口令。

19

加强口令安全的措施:A 、禁止使用缺省口令。B 、定期更换口令。C 、保持口令历史记录,使用户不能循环使用旧口令。 D 、用口令破解程序测试口令。

20

2 、口令攻击的种类 计算资源依靠口令的方式来保护的脆弱性:网络数据流窃听。由于认证信息要通过网络传递,并且很多认证系统的口令是未经加密的明文,攻击者通过窃听网络数据,就很容易分辨出某种特定系统的认证数据,并提取出用户名和口令。口令被盗也就是用户在这台机器上的一切信息将全部丧失,并且危及他人信息安全,计算机只认口令不认人。最常见的是电子邮件被非法截获。

21

认证信息截取 / 重放 (Record/Replay) 有的系统会将认证信息进行简单加密后进行传输,如果攻击者无法用第一种方式推算出密码,可以使用截取 / 重放方式。攻击者仍可以采用离线方式对口令密文实施字典攻击;对付重放的方法有:1 在认证交换中使用一个序数来给每一个消息报文编号 ,仅当收到的消息序号合法时才接受之;2 使用时间戳 (A接受一个新消息仅当该消息包含一个 A 认为是足够接近 A所知道的时间戳 );

3询问 /应答方式 (A 期望从 B 获得一个新消息 ,则先发给 B 一个临时值 ,并要求后续从 B收到的消息包含正确的这个临时值 )

22

字典攻击:由于多数用户习惯使用有意义的单词或数字作为密码,某些攻击者会使用字典中的单词来尝试用户的密码。所以大多数系统都建议用户在口令中加入特殊字符,以增加口令的安全性。    穷举尝试 (Brute Force) : 这是一种特殊的字典攻击,它使用字符串的全集作为字典。如果用户的密码较短,很容易被穷举出来,因而很多系统都建议用户使用长口令。窥探: 攻击者利用与被攻击系统接近的机会,安装监视器或亲自窥探合法用户输入口令的过程,以得到口令。

第 5 讲 认证

23

社交工程: 攻击者冒充合法用户发送邮件或打电话给管理人员,以骗取用户口令。比如,在终端上发现如下信息:Please enter your user name to logon:

Your password:

这很可能是一个模仿登录信息的特洛伊木马程序,他会记录口令,然后传给入侵者。垃圾搜索: 攻击者通过搜索被攻击者的废弃物,得到与攻击系统有关的信息,如果用户将口令写在纸上又随便丢弃,则很容易成为垃圾搜索的攻击对象。

第 5 讲 认证

24

口令猜中概率公式: P=L•R/S

L :口令生命周期 R :进攻者单位时间内猜测不同口令次数S :所有可能口令的数目。为降低猜中的概率:1减少口令使用寿命 ,即提高口令更换的频率 ;

2降低进攻者单位时间内猜测尝试口令的次数 ;

3增加可能口令的数目 ,即提高口令的字符个数。然而 ,口令的频繁更换增加了用户的负担 ,也为资深入侵者提供了条件 ( 为了便于记忆 ,人们往往选择与其个人相关的口令 ,如某重要的日期 ) ,口令字符个数的增加也会增加用户的负担且不会对资深入侵者有更大影响 ,因此 ,手段 2应是较为有效的防猜中手段。

第 5 讲 认证

25

1. 选择很难破译的加密算法让硬件解密商品不能发挥作用。2. 控制用户口令的强度 ( 长度、混合、大小写 )

3.掺杂口令 先输入口令,然后口令程序取一个 12 位的随机数 ( 通过读取实时时钟 ) 并把它并在用户输入的口令后面。然后加密这个复合串。最后把 64 位的加密结果连同 12 位的随机数一起存入口令文件。

第 5 讲 认证

26

4. 不要暴露账户是否存在的信息 例:打入一个用户名后,不论账户是否存在,都在相同时间里要求输入口令。5.限制口令尝试次数。6. 系统中只保存口令的加密形式

第 5 讲 认证

27

7. 一 次 性 口 令 ( OTP : One Time Password )    在登录过程中加入不确定因素,使每次登录过程中传送的信息都不相同,以对付重放攻击。确定口令的方式:1 )声称者与验证者两端共同拥有一串随机口令,在该串的某一位置保持同步。用于人工控制环境中。2 )两端共同使用一个随机序列生成器,在序列生成器的初态保持同步。3 )使用时间戳,两端维持同步的时钟。

第 5 讲 认证

28

三、基于智能卡的身份认证 三、基于智能卡的身份认证 1 、智能卡的安全性IC卡是英文 “智能卡”等。这种集成电路卡,是随着 Integrated Circuit (集成电路)卡的缩写,也称“MEMORY CARD” 和“ SMART CARD” ,中文译作“聪明卡”、“智慧卡”和半导体技术的发展以及社会对信息的安全性和存储容量要求的日益提高而应运而生的。它是一种将具有加密、存储、处理能力的集成电路芯片嵌装于塑料基片上而制成的卡片,它的外型与普通的信用卡十分相似,具体尺寸为:长: 85.6 mm 、 宽: 54mm 、 厚: 0.8mm

IC卡可简单地分为三种类型:存储卡、逻辑加密卡、 CPU卡。

第 5 讲 认证

29

IC卡优点:存储容量大 、体积小而轻、保密性强、网络要求低 数据可靠性高 IC卡防磁、防静电、防潮、耐温、抗干扰能力强,一张 IC卡片可重复读写十万次,卡中数据可保存几十年。 IC卡读写操作通过电信号传输来完成,因而对计算机的实时性、敏感性要求降低。内部数据保密性、可靠性好,读写稳定可脱机工作,易于安装维护;

第 5 讲 认证

30

第 5 讲 认证2 、基于智能卡的认证机制在基于 Web 的电子商务应用中, Java applet与智能卡之间的通信是:应用程序与读卡器通信,而读卡器将使用上面介绍的标准与智能卡通信。在用户进行商务交易前,服务器首先使用智能卡完成用户身份的认证。身份认证过程中为了产生变动的密码一般采用双运算因子的计算方式,也就是加密算法的输入值有两个数值,其一为用户密钥、另一为变动因子,由于用户密钥为固定数值,因此变动因子必须不断变动才可以算出不断变动的动态密码。服务器及智能卡必须随时保持相同的变动因子,才能算出相同的动态密码。

31

第 5 讲 认证1)询问 /应答认证 变动因子是由服务器产生的随机数字。认证过程如下:1 )登录请求。客户机首先向服务器发出登录请求,服务器 提示用 户输入用 户 ID 和PIN 。

2 )询问。用户提供 ID 给服务器,然后服务器提供一个随机串 X ( Challenge )给插在客户端的智能卡作为验证算法的输入,服务器则根据用户 ID 取出对应的密钥 K 后,利用发送给客户机的随机串 X ,在服务器上用加密引擎进行运算,得到运算结果 RS 。

32

第 5 讲 认证3 )应答。智能卡根据 X 与内在密钥 K 使用硬件加密引擎运算,也得到一个运算结果RC ,并发送给服务器。4 )验证。比较 RS 和 RC 便可确定用户的合法性。由于密钥存在于智能卡中,运算过程也是在智能卡中完成,密钥认证是通过加密算法来实现的,因而极大地提高了安全性。并且每当客户端有一次服务申请时,服务器便产生一个随机串给客户,即使在网上传输的认证数据被截获,也不能带来安全上的问题。

33

三、基于智能卡的身份认证 三、基于智能卡的身份认证 第 5 讲 认证

34

第 5 讲 认证询问 /应答身份认证的优点: 1.没有同步的问题。 2. 一片认证卡可以用来存取被不同认证服务器所保护的系统。 3. 最安全的认证方式。 缺点: 1. 使用者必须按较多的按钮,操作较繁复。 2. 比较多输入的失误。

35

第 5 讲 认证2)时间同步认证 变动因子使用服务器端与客户端的同步时间值。认证过程如下:1 )用户向服务器发出登录请求,服务器提示用户输入用户 ID 和用户 PIN 。

2 )服务器根据用户 ID 取出对应的密钥 K ,使用K 与服务器时间 T计算动态密码 RS 。

3 )智能卡根据内在的密钥 K 与客户机时间 T 使用相同的专用算法计算动态密码 RC ,并发送给服务器。4 )服务器比较 RS 与 RC ,如果相同则用户合法。

36

三、基于智能卡的身份认证 三、基于智能卡的身份认证 第 5 讲 认证

时间同步认证卡在一个固定期间中 ( 通常是一分钟 ) 产生同一个动态密码,依据时间的流逝产生不同的密码。

37

第 5 讲 认证时间同步身份认证

优点: 易于使用。 缺点: 1. 时间同步困难,可能造成必须重新输入新密码。软体认证卡采用 PC 的时刻,很可能随时被修改。常常需要与服务器重新对时。 2. 不如 Challenge/Response 认证更安全

38

第 5 讲 认证3) 事件同步事件同步认证卡依据认证卡上的私有密钥产生一序列的动态密码,如果使用者意外多产生了几组密码造成不同步的状态,服务器会自动重新同步到目前使用的密码,一旦一个密码被使用过后,在密码序列中所有这个密码之前的密码都会失效。

39

三、基于智能卡的身份认证 三、基于智能卡的身份认证 第 5 讲 认证

40

第 5 讲 认证事件同步的身份认证

优点: 1. 容易使用。 2. 由于使用者无法知道序列数字,所以安全性高,序列号码绝不会显示出来。 缺点: 如果没有 PIN 号码的保护及认证卡借给别人使用时,会有安全的疑虑。

41

四、基于生物特征的身份认证四、基于生物特征的身份认证第 5 讲 认证

对用户固有的某些特征进行测量,如指纹、声音或签字。这些需要特殊硬件,这就限制了生物技术只能用在比较少的环境中。其吸引人的地方是生物识别绝不可能丢失和被偷窃。实际上,存在着某些局限性。传统的安全常识认为认证数据应有规则地进行变化。而使用指纹阅读器难于做到这一点。某些方法也遭到了用户的反对。还有,因为生物技术具有极为本质的特点,因此不可能给出准确的答案。

42

第 5 讲 认证没有两个签字是绝对相同的,即使来自一个人,还有一些莫明其妙的影响,例如疲劳程度、心境状况和健康状况等。在匹配算法中必须建立某些公差。假如某个调用者经认证只有 93% 的可信度,是否让其登录?某些系统使用智能卡存储每个用户的生物技术数据。这避免了需要主机数据库,而是依赖于卡的安全性来防止窜改。在用户和智能卡之间的协议中,结合了来自主机的随机质询,因而避免了重播攻击。

43

四、基于生物特征的身份认证四、基于生物特征的身份认证第 5 讲 认证

优点: 1. 绝对无法仿冒的使用者认证技术。 缺点: 1. 较昂贵。 2. 不够稳定 (辩识失败率高 ) 。

44

身份的零知识证明身份的零知识证明 第 5 讲 认证

通常的身份认证都要求传输口令或身份信息 (尽管是加密传输 ) 。如果不传输这些信息,身份也能得到证明就好了,这就需要零知识证明技术 (The proof of zero knowledge) 。零知识证明是这样一种技术,被认证方 P掌握某些秘密信息, P想设法让认证方 V 相信他确实掌握那些信息,但又不想让 V 也知道那些信息。

45

第 5 讲 认证解释零知识证明的通俗例子是洞穴问题。  如图:有一个洞,设P 知道咒语,可打开C和 D 之间的秘密门,不知道者都将走入死胡同中,那么 P 如何向V 出示证明使其相信他知道这个秘密,但又不告诉V 有关咒语。

46

第 5 讲 认证P 如何使 V 相信自己掌握了洞穴的秘密 :1)V 站在 A 点。2)P进入洞中任意一点 C或 D 。

3) 当 P进洞之后, V 走到 B点。4)V 叫 P:“从左边出来”或“从右边出来”。5)P按要求实现 ( 以咒语,即解数学难题 ) 。6)P和 V 重复执行 (1)~ (5) 共 n 次。被认证方 P掌握的秘密信息一般是长期没有解决的猜想问题的证明,但能通过具体的步骤来验证它的正确性。

47

Kerberos Kerberos 认证系统认证系统

48

问题问题• 在一个开放的分布式网络环境中,用户通过工作在一个开放的分布式网络环境中,用户通过工作站访问服务器上提供的服务。站访问服务器上提供的服务。

– 服务器应能够限制非授权用户的访问并能够鉴别对服服务器应能够限制非授权用户的访问并能够鉴别对服务的请求。务的请求。– 工作站无法可信地向网络服务证实用户的身份,即工工作站无法可信地向网络服务证实用户的身份,即工作站存在三种威胁。作站存在三种威胁。

• 一个工作站上一个用户可能冒充另一个用户操作;一个工作站上一个用户可能冒充另一个用户操作;• 一个用户可能改变一个工作站的网络地址,从而冒一个用户可能改变一个工作站的网络地址,从而冒充另一台工作站工作;充另一台工作站工作;• 一个用户可能窃听他人的信息交换,并用回放攻击一个用户可能窃听他人的信息交换,并用回放攻击获得对一个服务器的访问权或中断服务器的运行。获得对一个服务器的访问权或中断服务器的运行。

49

KerberosKerberos 的解决方案的解决方案• 在一个分布式的在一个分布式的 client/serverclient/server 体系机体系机构中采用一个或多个构中采用一个或多个 KerberosKerberos 服务器服务器提供一个鉴别服务。提供一个鉴别服务。

50

网络环境网络环境 第 5 讲 Kerberos 认证

SecurityServer

Fileserver

Printingserver . . .

User 1 User 2 . . . Attacker

51

第 5 讲 Kerberos 认证

• 窃听窃听• 重放重放: : 利用先前的标签信息,获得以后利用先前的标签信息,获得以后对系统的访问权。对系统的访问权。• 假冒用户假冒用户• 伪装机器伪装机器

潜在的攻击潜在的攻击

52

一、一、 Kerberos Kerberos 简介 简介 第 5 讲 Kerberos 认证

Kerberos :希腊神话“三个头的狗——地狱之门守护者”希望有三个功能:身份认证、记账、审核。Kerberos针对分布式环境,一些工作站可能安装于不安全场所,而且用户也并非是完全可信的。 客户在登录时,需要认证。用户必须获得由认证服务器发行的许可证,才能使用目标服务器上的服务。许可证提供被认证的用户访问一个服务时所需的授权资格。所有客户和服务器间的会话都是暂时的。

53

第 5 讲 Kerberos 认证1 、 Kerberos 的产生背景在网络系统中,用户需要从多台计算机得到服务,控制访问的方法有三种:a.) 认证工作由用户登录的计算机来管理,服务程序不负责认证,这对于封闭式网络是可行的方案。b.)收到服务请求时,对发来请求的主机进行认证,对每台认证过的主机的用户不进行认证。半开放系统可用此方法。每个服务选择自己信任的计算机,在认证时检查主机地址来实现认证。

54

第 5 讲 Kerberos 认证C) 在开放式系统中,主机不能控制登录它的每一个用户,另外有来自系统外部的假冒等情况发生,以上两种方法都不能保证用户身份的真实性,必须对每一个服务请求,都要认证用户的身份。开放式系统的认证的要求:1.) 安全性:没有攻击的薄弱环节。2.) 可靠性:认证服务是其他服务的基础,要可靠,不能瘫痪。3.) 透明性:用户觉察不到认证服务,只是输入口令。4.) 可扩展性:支持加入更多的服务器。

55

第 5 讲 Kerberos 认证2 、什么是 Kerberos

Kerberos :为网络通信提供可信第三方服务的面向开放系统的认证机制 .

每当用户 C申请得到某服务程序 S 的服务时,用户和服务程序会首先向 Kerberos 要求认证对方的身份,认证建立在用户和服务程序对Kerberos 信任基础上。在申请认证时, C 和S 都是 Kerberos 认证服务的用户,为了和其它服务的用户区别, Kerberos 用户统称为当事人 (principle) , principle 可以是用户或者某项服务。

56

第 5 讲 Kerberos 认证当用户登录到工作站时, Kerberos 对用户进行初始认证,此后用户可以在整个登录时间得到相应的服务。 Kerberos 不依赖用户的终端或请求服务的安全机制,认证工作由认证服务器完成。时间戳技术被应用于防止重放攻击。 Kerberos 保存当事人及其密钥的数据库。共享密钥只被当事人和 Kerberos知道,当事人在登记 时 与 Kerberos 商 定 。 使 用 共 享 密钥, Kerberos 可以创建消息使一个当事人相信另一个当事人的真实性。 Kerberos 还产生一种临时密钥,称做对话密钥,通信双方用在具体的通信中。

57

第 5 讲 Kerberos 认证Kerberos 提供三种安全等级。1) 只在网络开始连接时进行认证,认为连接建立起来后的通信是可靠的。认证式网络文件 系 统 (Authenticated network file system) 使用此种安全等级。2) 安全消息传递:对每次消息都进行认证工作,但是不保证每条消息不被泄露。3) 私有消息传递:不仅对每条消息进行认证,而且对每条消息进行加密。 Kerberos 在发送密码时就采用私有消息模式。

58

二、二、 KerberosKerberos 原理原理 第 5 讲 Kerberos 认证

1 、 Kerberos 的组成MIT 为雅典娜 (Athena) 计划开发的认证系统。组成:Kerberos应用程序库:应用程序接口,包括创建和读取 认 证请求, 以 及创建 safe message 和 private message 的子程序。加密 / 解密库: DES 等。Kerberos 数据库:记载了每个 Kerberos 用户的名字,私有密钥,截止信息 ( 记录的有效时间,通常为几年 ) 等信息。数据库管理程序:管理 Kerberos 数据库

59

第 5 讲 Kerberos 认证KDBM服务器 ( 数据库管理服务器 ) :接受客户端的请求对数据库进行操作。认证服务器 (AS) :存放一个 Kerberos 数据库的只读的副本,用来完成 principle 的认证,并生成会话密钥.数据库复制软件:管理数据库从 KDBM服务所在的机器,到认证服务器所在的机器的复制工作,为了保持数据库的一致性,每隔一段时间就需要进行复制工作.用户程序:登录 Kerberos ,改变 Kerberos 密码,显示和破坏 Kerberos标签( ticket )等工作。应用程序:

60

第 5 讲 Kerberos 认证Kerberos 的主要认证模型如下:  出于实现和安全考虑, Kerberos 认证服务被分配到两个相对独立的服务器。认证服务器 AS :它同时应该连接并维护一个中央数据库存放用户口令、标识等)票据许可服务器 TGS(Ticket Granting Server) 。

整个系统将由四部分组成:AS , TGS , Client , Server 。

61

第 5 讲 Kerberos 认证ServerServerServerServerServerServerServerServer

KerberosKerberosDatabaseDatabase

Ticket GrantingTicket Granting ServerServer

AuthenticationAuthentication ServerServer

WorkstationWorkstation

Kerberos Key Distribution Service

62

第 5 讲 Kerberos 认证Kerberos 有两种 证书:票据 ticket 和 认 证 符authenticator 。这两种证书都要加密,但加密的密钥不同。Ticket 用来安全地在 AS 和 S 之间传递用户的身份,同时保证使用 ticket 的用户必须是 ticket 中指定的用户。Ticket 的组成:C/S 的标识, client 的地址,时间戳,生存时间,会话密钥五部分组成。 Ticket 一旦生成,在 life指定的时间内可以被 client 多次使用来申请同一个 server 的服务。

63

第 5 讲 Kerberos 认证

Authenticator :提供信息与 ticket 中的信息进行比较,一起保证发出 ticket 的用户就是 ticket 中指定的用户。认证符有下列部分组成:client 的名字, client 的地址,记录当前时间的时间戳。 authenticator 只能在一次服务请求中使用,每当 client 向 server申请服务时,必须重新生成Authenticator 。

64

第 5 讲 Kerberos 认证通过三阶段六步操作,用户 C 和服务 V互相验证彼此的身份,并且拥有只有 C 和 V 两者知道的会话密钥 Kc,v ,以后的通信都可以通过会话密钥得到保护。

AS

TGS

DB用户 C

服务器 V

Kerberos

65

第 5 讲 Kerberos 认证2 、 Kerberos工作原理常用术语的简写:C :客户机 AS :认证服务器 V :服务器IDc 、 IDv 、 IDtgs 分别为 C 、 V 、 TGS 的身份ADc : 用户的网络地址TSi :第 i 个时戳Lifetime : 第 I 个有效期限Pc : C 上的用户口令

66

第 5 讲 Kerberos 认证

Kc : C 和 AS 的共享密钥Kv : V 和 TGS 的共享密钥Ktgs : TGS 和 AS 的共享密钥Kc,tgs : C 与 TGS 的共享密钥Kc,v : C 与 V 的共享密钥

67

第 5 讲 Kerberos 认证用户 C请求服务 S 的整个 Kerberos 认证过程1) 认证服务交换 用户 C 向 AS发出请求,以获取访问 TGS 的令牌 (票据许可证 ) : Tickettgs

得到初始化令牌的工作在用户登录工作站时进行,在用户看来和登录分时系统是完全相同的。登录时用户被要求输入用户名,输入后系统向 AS发送一条包含用户和 TGS服务两者名字的请求,以及时戳 TS1( 表示是新请求 ) 。

68

ASAS 检查用户有效,则随机产生用户和检查用户有效,则随机产生用户和TGSTGS 通信的会话密钥通信的会话密钥 Kc,tgsKc,tgs ,,并创建令并创建令牌牌 TicketTickettgstgs ,,令牌包含用户名,用户地令牌包含用户名,用户地址,址, TGSTGS 服务名 ,当前时间服务名 ,当前时间 (( 时戳时戳TS2)TS2) ,有效时间,还有刚才创建的会,有效时间,还有刚才创建的会话密钥话密钥。。然后将令牌用然后将令牌用 KtgsKtgs 加密。加密。 ASAS向向 CC 发送加密过的令牌发送加密过的令牌 TicketTickettgstgs 和会话和会话密钥密钥 Kc,tgsKc,tgs ,,发送的消息用只有用户和发送的消息用只有用户和认证服务器认证服务器 AA 知道的知道的 KcKc 来加密,来加密, KcKc值基于用户密码。值基于用户密码。

69

第 5 讲 Kerberos 认证用户机器收到 AS回应后,要求用户输入密码,将密码转化为 DES 密钥 Kc ,然后将 AS发回的信息解开,保存令牌 Tickettgs 和会话密钥Kc,tgs ,为了安全 , 用户密码 Pc 和密钥 Kc 则被丢弃。

当用户的登录时间超过了令牌的有效时间时,用户的请求就会失败,这时系统会要求用户使用 kinit 程序重新申请令牌 Tickettgs 。用户运行 klist命令可以查看自己所拥有的令牌的当前状态。

70

第 5 讲 Kerberos 认证2) C 从 TGS 得 到 所 请 求 服 务 的 令 牌Ticketv 。

一个令牌只能申请一个特定的服务,所以用户必须为每一个服务 V申请新的令牌,用户可以从 TGS处得到服务令牌 Ticketv 。

用户程序首先向 TGS发出申请令牌的请求。请求信息中包含 V 的名字,上一步中得到的请求 TGS服务的加密令牌 Tickettgs ,还有加密过的认证符 Authenticatorc 。认证符含有:用户身份、网址、时戳。认证符与 ticket 不同,只用一次且有效期短。

71

第 5 讲 Kerberos 认证如果有效, TGS 生成用于 C 和 V 之间通信的会话密钥 Kc,v ,并生成用于 C申请得到 V服务的 令牌 Ticketv ,其中包含 C 和 V 的 名字, C 的网络地址,当前时间,有效时间和会话密钥 Kc,v 。令牌 Ticketv 的有效时间是初始令牌 Tickettgs 剩余的有效时间和所申请的服务缺省有效时间中最短的时间。TGS 用 C 和 TGS 之间的会话密钥 Kc,tgs 加密 Ticketv 和会话密钥 Kc,v ,然后发送给用户C 。 C 得到回答后,用 Kc,tgs 解密,得到所请求的令牌 Ticketv 和会话密钥 Kc,v 。

72

第 5 讲 Kerberos 认证(3) 客户机与服务器之间认证交换。

C 向 V 发送服务许可票据 Ticketv 和 认 证 符Authenticatorc , V 收 到 后 用 Kv 解 密Ticketv ,然后用 Kc,v 解密认证符。比较得到的用户名,网络地址,时间等信息,判断 C 的身份,请求是否有效。用户和服务程序之间的时钟必须同步在几分钟的时间段内,当请求的时间与系统当前时间相差太远时,认为请求是无效的,用来防止重放攻击。为防止重放攻击, V 通常保存一份最近收到的有效请求的列表,当收到一份请求与已经收到的某份请求的令牌和时间完全相同时,认为此请求无效。

73

(3) (3) 客户机与服务器之间认证交换客户机与服务器之间认证交换。。

当当 CC 也想验证也想验证 VV 的身份时,的身份时, VV 将收到的时将收到的时间戳加间戳加 11 ,并用会话密钥,并用会话密钥 Kc,vKc,v 加密后发送加密后发送给用户,用户收到回答后,用给用户,用户收到回答后,用 Kc,vKc,v 解密后解密后对增加的时戳进行验证,从而确定对增加的时戳进行验证,从而确定 VV 的身的身份。份。此后,客户与服务器之间通过共享的会话密此后,客户与服务器之间通过共享的会话密钥秘密通信。钥秘密通信。

74

Kerberos V5Kerberos V5 的改进的改进加密算法的多样化加密算法的多样化票据有效期延长 票据有效期延长 2288*5*5 分钟分钟任意任意允许认证转发允许认证转发 CC 可让可让 V1V1 代表自己访问代表自己访问 V2V2多区域认证关系简化多区域认证关系简化

75

第 5 讲 Kerberos 认证3 、 Kerberos 数据库管理认证工作由 AS 实现,它从 Kerberos 数据库中读取用户的信息来完成认证工作,对数据库操作是只读的。对数据库的更新和管理操作 由 另 外 的 服 务 来 完 成 , 称 做KDBM(Kerberos Database Management Service) 。 KDBM 只能运行在主 Kerberos服务器上,机器上维护可写的 Kerberos 数据库,而其他 的 认 证服务程 序 则 可运行 在从Kerberos服务器上,机器上维护 Kerberos 的只读备份,完成认证工作,数据库复制软件用来完成从主机到从机的复制工作。

76

第 5 讲 Kerberos 认证1) KDBM服务程序 (KDBM server)

用于添加 principle 、改变其密码。 KDBM服务请求是独一无二的,所以请求 KDBM服务不需要向 tgs申请令牌,而采用认证中的第一步和第三步,直接向认证服务器申请认证,这样做的目的是为了要求用户输入原来的密码。当用户不在时,别人可能会篡改用户的密码,尤其是超级用户,可以更改任何人的密码,所以要在申请 KDBM服务时输入用户的密码。当 KDBM收到请求时,比较请求的发出者和被操作者,当两者相同时,操作被允许。当两者不同时,在存取控制列表中寻找发出者的存在,如果存在,操作被允许,否则,操作被拒绝。KDBM存放所有请求的日志,防止异常情况发生。

77

第 5 讲 Kerberos 认证2) kadmin 和 kpasswd命令Kadmin命令只能被 Kerberos 超级用户使用,用 来添加 principle 和 更改 principle 的 密码。 Kadmin 运行时会要求输入超级用户密码,当一个用户为 Kerberos超级用户时,会在 原 来 的 用 户 上创建一 个 admin 实例(instance) , admin 实例的密码可以与原来用户的密码不同, kadmin 要求输入 admin 实例的密码。Kpasswd命令被 principle 用来修改 Kerberos密码,同样要求输入用户原来的密码完成认证工作。

78

第 5 讲 Kerberos 认证3) 数据库复制为了提高系统的效率和可靠性, Kerberos 在master 上存放数据库,而在 slave 上存放数据库的只读副本。这样当 master 出现异常情况时,系统还可以完成日常的认证工作,并且多台认证服务器的使用减少了瓶颈的发生。但维持数据库的多个副本带来了如何保持各个副本间数据一致性的问题。有一个简单有效的办法可以解决这个问题,那就是每隔一个小时就进行一次从 master 到 slave 的转储工作。

79

第 5 讲 Kerberos 认证为了保证数据库不被窃听和篡改, Kerberos使用以下措施:数据库中 principle 的所有密码在存储时都用 Kerberos 数据库专用密钥进行加密,这样在传输过程中即使被偷听,偷听者也无法得到想要的信息 ; 在传输之前先传输校验和,这样当有多出的冒充信息或者接收信息被篡改时,可以通过比较校验和及时发现。

80

第 5 讲 Kerberos 认证Kerberos 的局限性:1.时间同步问题: 因为整个 Kerberos 的协议都严重地依赖于时钟,而实际证明,要求在分步式系统环境中实现良好的时钟同步,是一个很难的课题。如果能够实现一种基于安全机制的时间服务,或是研制一种相对独立于计算机和网络环境、且基于一种或几种世界标准时钟的,能够准确进行时间转化和时间服务的联机物理时钟,这种问题将得到较好的解决;

81

第 5 讲 Kerberos 认证2.口令猜测问题:Kerberos 的口令没有进行额外的特殊处理,以至于即使用强力攻击(即穷举法)的时间复杂度仅和口令的长度成比例,这将形成一个两难的局面:或是增加密钥长度换取更高的安全,但这会造成用户的使用困难(可以参照口令短语方式解决此困难)和增加系统加 / 解密开销。 

82

第 5 讲 Kerberos 认证3.认证域之间的信任问题:认证域之间的多级跳跃过程复杂且不明确,相互信任和协调不方便。若各 Kerberos区域形成复杂或不规则的网状结构,则要求方便的域间服务,将付出极大的代价,即系统的可扩充性不强。针对这种无序的状况,应有规划有目的地建立起全球一体化的分层(树状)结构,形成良好的信任链条。 

83

第 5 讲 Kerberos 认证4.重放攻击的问题:  长票的生存期较长,容易被重放攻击;对短票而言,如果攻击者技术高明,也有机会重放攻击,况且攻击者可以着手破坏系统的时钟同步性。我们建议,在 Kerberos引入序列号循环机制,即让传送的消息带上一定的序列号,这些序列号在由系统循环地赋予消息,再结合系统原有的生存期控制,将有效地保证一定的时间段里只能存在唯一的合法消息,从而消除了重放的可能性。当然,这必须付出一定的系统开销代价。

84

第 5 讲 Kerberos 认证5.密钥的存储问题:   Kerberos 认证中心要求保存大量的共享私钥,无论是管理还是更新都有很大的困难,需要特别细致的安全保护措施(甚至应采用硬件 /物理方法),将付出极大的系统代价。6.系统程序的安全性、完整性问题:  对Kerberos 系统程序进行攻击,特别是恶意篡改登录程序,是有效的攻击方法。所以,必须花一定的系统代价去防范对认证系统本身的集中攻击。其中,建立高性能的防火墙和进行日志是必要的。