e8c1198f90dba46f0ceb234cbc602887.ppt
- Количество слайдов: 87
计算机系统安全 身份认证 1
第七讲 认证 一、认证的基本原理 在现实生活中,我们个人的身份主要是通过各 种证件来确认的,比如:身份证、户口本等。 认证是对网络中的主体进行验证的过程,用户 必须提供他是谁的证明,他是某个雇员,某个 组织的代理、某个软件过程(如交易过程)。 认证( authentication )是证明一个对象的身份的 过程。与决定把什么特权附加给该身份的授权 ( authorization )不同。 2
第七讲 认证 一、认证的基本原理 通常有三种方法验证主体身份。 1)是只有该主体了解的秘密,如口令、密钥; 2)是主体携带的物品,如智能卡和令牌卡; 3)是只有该主体具有的独一无二的特征或能 力,如指纹、声音、视网膜图或签字等。 单独用一种方法进行认证不充分 3
第七讲 认证 身份认证系统架构包含三项主要组成元件: 认证服务器(Authentication Server) 负责进行使用者身份认证的 作,服务器上存放使用 者的私有密钥、认证方式及其他使用者认证的信息。 认证系统用户端软件(Authentication Client Software) 认证系统用户端通常都是需要进行登陆(login)的设备 或系统,在这些设备及系统中必须具备可以与认证服 务器协同运作的认证协定。 认证设备(Authenticator) 认证设备是使用者用来产生或计算密码的软硬件设备。 4
第七讲 认证 1)口令机制 用户名/口令认证技术:最简单、最普遍的身份识别 技术,如:各类系统的登录等。 口令具有共享秘密的属性,是相互约定的代码,只有 用户和系统知道。例如,用户把他的用户名和口令送 服务器,服务器操作系统鉴别该用户。 口令有时由用户选择,有时由系统分配。通常情况下, 用户先输入某种标志信息,比如用户名和ID号,然后 系统询问用户口令,若口令与用户文件中的相匹配, 用户即可进入访问。 口令有多种,如一次性口令;还有基于时间的口令 5
第七讲 认证 2)数字证书 这是一种检验用户身份的电子文件,也是企业 现在可以使用的一种 具。这种证书可以授权 购买,提供更强的访问控制,并具有很高的安 全性和可靠性。 非对称体制身份识别的关键是将用户身份与密 钥绑定。CA(Certificate Authority)通过为用户 发放数字证书(Certificate)来证明用户公钥与用 户身份的对应关系。 6
第七讲 认证 验证者向用户提供一随机数;用户以其私钥KS对随 机数进行签名,将签名和自己的证书提交给验证方; 验证者验证证书的有效性,从证书中获得用户公钥 KP,以KP验证用户签名的随机数。 7
第七讲 认证 3)智能卡 网络通过用户拥有什么东西来识别的方法,一般是用 智能卡或其它特殊形式的标志,这类标志可以从连接 到计算机上的读出器读出来。访问不但需要口令,也 需要使用物理智能卡。 智能卡技术将成为用户接入和用户身份认证等安全要 求的首选技术。用户将从持有认证执照的可信发行者 手里取得智能卡安全设备,也可从其他公共密钥密码 安全方案发行者那里获得。这样智能卡的读取器必将 成为用户接入和认证安全解决方案的一个关键部分。 8
第七讲 认证 4)主体特征认证 目前已有的设备包括:视网膜扫描仪、声音验 证设备、手型识别器等。安全性高。 例如:系统中存储了他的指纹,他接入网络时, 就必须在连接到网络的电子指纹机上提供他的 指纹(这就防止他以假的指纹或其它电子信息 欺骗系统),只有指纹相符才允许他访问系统。 更普通的是通过视网膜膜血管分布图来识别, 原理与指纹识别相同,声波纹识别也是商业系 统采用的一种识别方式。 9
第七讲 认证 用户名/口令具有实现简单的优点,但存在以下安全 缺点: 1、大多数系统的口令是明文传送到验证服务器的, 容易被截获。某些系统在建立一个加密链路后再进行 口令的传输以解决此问题,如配置链路加密机。 2、口令维护的成本较高。为保证安全性,口令应当 经常更换。另外为避免对口令的字典攻击,口令应当 保证一定的长度,并且尽量采用随机的字符。但缺点 是难于记忆。 3、口令容易在输入的时候被攻击者偷窥,而且用户 无法及时发现。 简单和安全是互相矛盾的两个因素。 10
第七讲 认证 二、基于口令的身份认证 1、安全与不安全的口令 UNIX系统口令密码都是用 8位(新的是 13位)DES算法 进行加密的,即有效密码只有前8位,所以一味靠密 码的长度是不可以的。安全的口令要求: 1) 位数>6位。 2) 大小写字母混合。 3)字母与数字混合。 4) 口令有字母、数字以外的符号。 11
第七讲 认证 不安全的口令则有如下几种情况: (1)使用用户名(帐号)作为口令。 (2)使用用户名(帐号)的变换形式作为口令。 将用户名颠倒或者加前后缀作为口令,比如说 著名的黑客软件John,如果你的用户名是fool, 那么它在尝试使用fool作为口令之后,还会试 着使用诸如fool 123、loof 123、lofo等作为 口令,只要是你想得到的变换方法,John也会 想得到。 12
第七讲 认证 (3)使用自己或者亲友的生日作为口令。这种 口令很脆弱,因为这样往往可以得到一个 6位 或者8位的口令,但实际上可能的表达方式只 有100× 12× 31=37200种。 (4)使用常用的英文单词作为口令。这种方法 比前几种方法要安全一些。一般用户选择的英 文单词几乎都落在黑客的字典库里。 (5)使用 5位或 5位以下的字符作为口令。 13
第七讲 认证 加强口令安全的措施: A、禁止使用缺省口令。 B、定期更换口令。 C、保持口令历史记录,使用户不能循环使用 旧口令。 D、用口令破解程序测试口令。 14
第七讲 认证 2、口令攻击的种类 计算资源依靠口令的方式来保护的脆弱性: 网络数据流窃听。由于认证信息要通过网络传 递,并且很多认证系统的口令是未经加密的明 文,攻击者通过窃听网络数据,就很容易分辨 出某种特定系统的认证数据,并提取出用户名 和口令。口令被盗也就是用户在这台机器上的 一切信息将全部丧失,并且危及他人信息安全, 计算机只认口令不认人。最常见的是电子邮件 被非法截获。 15
第七讲 认证 认证信息截取/重放(Record/Replay) 有的系统会将认证信息进 行简单加密后进行传输,如果攻击者无法用第一种方式推算 出密码,可以使用截取/重放方式。攻击者仍可以采用离线方 式对口令密文实施字典攻击; 对付重放的方法有: 1在认证交换中使用一个序数来给每一个消息报文编号 ,仅当 收到的消息序号合法时才接受之; 2使用时间戳 (A接受一个新消息仅当该消息包含一个 A认为是 足够接近 A所知道的时间戳 ); 3询问 /应答方式 (A期望从 B获得一个新消息 ,则先发给 B一 个临时值 ,并要求后续从 B收到的消息包含正确的这个临时 值) 16
第七讲 认证 字典攻击:由于多数用户习惯使用有意义的单词或数 字作为密码,某些攻击者会使用字典中的单词来尝试 用户的密码。所以大多数系统都建议用户在口令中加 入特殊字符,以增加口令的安全性。 穷举尝试(Brute Force): 这是一种特殊的字典攻击, 它使用字符串的全集作为字典。如果用户的密码较短, 很容易被穷举出来,因而很多系统都建议用户使用长 口令。 窥探: 攻击者利用与被攻击系统接近的机会,安装 监视器或亲自窥探合法用户输入口令的过程,以得到 口令。 17
第七讲 认证 社交 程: 攻击者冒充合法用户发送邮件或打电话 给管理人员,以骗取用户口令。比如,在终端上发现 如下信息: Please enter your user name to logon: Your password: 这很可能是一个模仿登录信息的特洛伊木马程序,他 会记录口令,然后传给入侵者。 垃圾搜索: 攻击者通过搜索被攻击者的废弃物,得 到与攻击系统有关的信息,如果用户将口令写在纸上 又随便丢弃,则很容易成为垃圾搜索的攻击对象。 18
第七讲 认证 口令猜中概率公式: P=L • R/S L:口令生命周期 R:进攻者单位时间内猜测不同口令次数 S:所有可能口令的数目。为降低猜中的概率: 1减少口令使用寿命 ,即提高口令更换的频率 ; 2降低进攻者单位时间内猜测尝试口令的次数 ; 3增加可能口令的数目 ,即提高口令的字符个数。 然而 ,口令的频繁更换增加了用户的负担 ,也为资深入侵者 提供了条件 (为了便于记忆 ,人们往往选择与其个人相关的口 令 ,如某重要的日期 ),口令字符个数的增加也会增加用户的 负担且不会对资深入侵者有更大影响 ,因此 ,手段 2应是较 为有效的防猜中手段。 19
第七讲 认证 1. 选择很难破译的加密算法 让硬件解密商品不能发挥作用。 2. 控制用户口令的强度(长度、混合、大小写) 3. 掺杂口令 先输入口令,然后口令程序取一个 12 位的随 机数(通过读取实时时钟)并把它并在用户输入 的口令后面。然后加密这个复合串。最后把 64 位的加密结果连同 12 位的随机数(叫做 salt)一 起存入口令文件。 20
第七讲 认证 4. 不要暴露账户是否存在的信息 例:打入一个用户名后,不论账户是否存 在,都在相同时间里要求输入口令。 5. 限制口令尝试次数。 6. 系统中只保存口令的加密形式 21
第七讲 认证 7. 一次性口令 (OTP:One Time Password) 在登录过程中加入不确定因素,使每次登录过 程中传送的信息都不相同,以对付重放攻击。 确定口令的方式: 1)声称者与验证者两端共同拥有一串随机口 令,在该串的某一位置保持同步。用于人 控 制环境中。 2)两端共同使用一个随机序列生成器,在序 列生成器的初态保持同步。 3)使用时戳,两端维持同步的时钟。 22
第七讲 认证 三、基于智能卡的身份认证 1、智能卡的安全性 IC卡 是 英 文 Integrated Cirtuit( 集 成 电 路 ) 卡 的 缩 写 , 也 称 “MEMORY CARD”和“SMART CARD”,中文译作“聪明卡”、 “智慧卡”和“智能卡”等。 这种集成电路卡,是随着半导体技术的发展以及社会对信息 的安全性和存储容量要求的日益提高而应运而生的。它是一 种将具有加密、存储、处理能力的集成电路芯片嵌装于塑料 基片上而制成的卡片,它的外型与普通的信用卡十分相似, 具体尺寸为: 长: 85. 6 mm 、 宽: 54 mm 、 厚: 0. 8 mm IC卡可简单地分为三种类型: 存储卡、逻辑加密卡、CPU卡。 23
第七讲 认证 IC卡优点: 存储容量大 、体积小而轻、保密性强、网络要 求低 数据可靠性高 IC卡防磁、防静电、防潮、耐温、 抗干扰能力强,一张IC卡片可重复读写十万次, 卡中数据可保存几十年。 IC卡读写操作通过电信号传输来完成,因而对 计算机的实时性、敏感性要求降低。内部数据 保密性、可靠性好,读写稳定可脱机 作,易 于安装维护,而磁卡系统离不开网络; 24
第七讲 认证 2、智能卡技术规范 1)ISO 7816 描述智能卡底层接口标准,定义读卡器和智能卡之间如何传 递字节流。此标准主要是定义了塑料基片的物理和尺寸特性 (7816/1),触点的尺寸和位置(7816/2),信息交换的底层协议描 述(7816/3),7816/4论述了跨行业的命令集。 2)PC/SC (Personal Computer/Smart Card ) 作组 Microsoft联合其它几家公司推出了称为PC/SC 的智能卡应 用程序标准,用于Win 32平台的个人计算机与智能卡之间实现 互通信。PC/SC 作组于1996年五月成立,目的在于规范一 个开放的Windows接口。PC/SC 作组持有对PC-ICC互操作 规范的所有权。 25
第七讲 认证 3)Open. Card 框架 由IBM,Netscape,NCI和Sun在 1997年 3月27日提 出的用于网络环境的智能应用框架。目的是支持智能 卡应用程序在网络计算机、PC机、ATM和GSM平台 上实现应用互操作。Open. Card 还提供了到PC/SC的 接口。 4)Java Card 论坛 1996年 10月推出了Java Card API规范,目前版本为 2. 1. 1,1997年 4月27日,Java Card论坛正式宣布成立。 Java Card论坛的成立目的是完善Java Card API规范, 使之最终成为多应用智能卡的首选编程语言。 26
第七讲 认证 Java Card就 是 能 够 运 行 Java程 序 的 智 能 卡 。 Java Card在出厂时就在ROM中烧入了操作系统、 Java Card虚拟机、 API类库和可选的applets, 随后,初始化和个人化向EEPROM 中写入数 据。所谓Java Card 规范,主要是定义了Java作 为一种独立于平台的编程技术在智能卡上的应 用 。 Java Card API与 正 式 的 国 际 标 准 ( 如 ISO 7816)和 业规范标准(如Europay/Master Card/Visa)兼容。也就是说Java applet能够直 接运行在遵循ISO 7816标准的智能卡之上。 27
第七讲 认证 3、基于智能卡的认证机制 在基于Web的电子商务应用中,Java applet与智能 卡之间的通信是:应用程序与读卡器通信,而读卡 器将使用上面介绍的标准与智能卡通信。在用户进 行商务交易前,服务器首先使用智能卡完成用户身 份的认证。 身份认证过程中为了产生变动的密码一般采用双运 算因子的计算方式,也就是加密算法的输入值有两 个数值,其一为用户密钥、另一为变动因子,由于 用户密钥为固定数值,因此变动因子必须不断变动 才可以算出不断变动的动态密码。服务器及智能卡 必须随时保持相同的变动因子,才能算出相同的动 态密码。 28
第七讲 认证 1)询问/应答认证 变动因子是由服务器产生的随机数字。认 证过程如下: 1)登录请求。客户机首先向服务器发出登录 请求,服务器提示用户输入用户ID和PIN 。 2)询问。用户提供ID给服务器,然后服务器 提供一个随机串X(Challenge)给插在客户端 的智能卡作为验证算法的输入,服务器则根据 用户ID取出对应的密钥K后,利用发送给客户 机的随机串X,在服务器上用加密引擎进行运 29 算,得到运算结果RS。
第七讲 认证 3)应答。智能卡根据X与内在密钥K使用硬 件加密引擎运算,也得到一个运算结果RC, 并发送给服务器。 4)验证。比较RS和RC便可确定用户的合法性。 由于密钥存在于智能卡中,运算过程也是在 智能卡中完成,密钥认证是通过加密算法来 实现的,因而极大地提高了安全性。并且每 当客户端有一次服务申请时,服务器便产生 一个随机串给客户,即使在网上传输的认证 数据被截获,也不能带来安全上的问题。 30
第七讲 认证 三、基于智能卡的身份认证 31
第七讲 认证 询问/应答身份认证的优点: 1. 没有同步的问题。 2. 一片认证卡可以用来存取被不同认证服务 器所保护的系统。 3. 最安全的认证方式。 缺点: 1. 使用者必须按较多的按钮,操作较繁复。 2. 比较多输入的失误。 32
第七讲 认证 2)时间同步认证 变动因子使用服务器端与客户端的同步时间值。 认证过程如下: 1)用户向服务器发出登录请求,服务器提示用户 输入用户ID和用户PIN。 2)服务器根据用户ID取出对应的密钥K,使用K与 服务器时间T计算动态密码RS。 3)智能卡根据内在的密钥K与客户机时间T使用相 同的专用算法计算动态密码RC,并发送给服务器。 4)服务器比较RS与RC,如果相同则用户合法。 33
第七讲 认证 三、基于智能卡的身份认证 时间同步认证卡在一个固定期间中(通常是一分钟)产生同一 个动态密码,依据时间的流逝产生不同的密码。 34
第七讲 认证 时间同步身份认证 优点: 易于使用。 缺点: 1. 时间同步困难,可能造成必须重新输入新密 码。软体认证卡采用PC的时刻,很可能随时 被修改。常常需要与服务器重新对时。 2. 2. 不如Challenge/Response认证更安全 35
第七讲 认证 3)事件同步认证卡依据认证卡上的私有密钥产生 一序列的动态密码,如果使用者意外多产生 了几组密码造成不同步的状态,服务器会自 动重新同步到目前使用的密码,一旦一个密 码被使用过后,在密码序列中所有这个密码 之前的密码都会失效。 36
第七讲 认证 三、基于智能卡的身份认证 37
第七讲 认证 事件同步的身份认证 优点: 1. 容易使用。 2. 由于使用者无法知道序列数字,所以安 全性高,序列号码绝不会显示出来。 缺点: 如果没有PIN号码的保护及认证卡借给别人 使用时,会有安全的疑虑。 38
第七讲 认证 四、基于生物特征的身份认证 对用户固有的某些特征进行测量,如指纹、 声音或签字。这些需要特殊硬件,这就限制 了生物技术只能用在比较少的环境中。其吸 引人的地方是生物识别绝不可能丢失和被偷 窃。实际上,存在着某些局限性。传统的安 全常识认为认证数据应有规则地进行变化。 而使用指纹阅读器难于做到这一点。某些方 法也遭到了用户的反对。还有,因为生物技 术具有极为本质的特点,因此不可能给出准 确的答案。 39
第七讲 认证 没有两个签字是绝对相同的,即使来自一个 人,还有一些莫明其妙的影响,例如疲劳程 度、心境状况和健康状况等。在匹配算法中 必须建立某些公差。假如某个调用者经认证 只有93%的可信度,是否让其登录? 某些系统使用智能卡存储每个用户的生物技 术数据。这避免了需要主机数据库,而是依 赖于卡的安全性来防止窜改。在用户和智能 卡之间的协议中,结合了来自主机的随机质 询,因而避免了重播攻击。 40
第七讲 认证 四、基于生物特征的身份认证 优点: 1. 绝对无法仿冒的使用者 认证技术。 缺点: 1. 较昂贵。 2. 不够稳定(辩识失败率高 )。 41
第七讲 认证 身份的零知识证明 通常的身份认证都要求传输口令或身份 信息(尽管是加密传输)。如果不传输这些信 息,身份也能得到证明就好了,这就需要零 知识证明技术(The proof of zero knowledge) 。 零知识证明是这样一种技术,被认证方P掌 握某些秘密信息,P想设法让认证方V相信 他确实掌握那些信息,但又不想让V也知道 那些信息。 42
第七讲 认证 解释零知识证明的通俗例子是洞穴问题。 如图:有一个洞,设P知道咒语,可打开C和D 之间的秘密门,不知道者都将走入死胡同中,那 么P如何向V出示证明使其相信他知道这个秘密, 但又不告诉V有关咒语。 43
第七讲 认证 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掌握的秘密信息一般是长期没有解决的猜想问 题的证明,但能通过具体的步骤来验证它的正确性。 Feige-Fiat-Shamir 零知识身份识别协议 1986年 受到美国军方干预 44
Kerberos 认证系统 45
第七讲 Kerberos认证 网络环境 Security Server User 1 File server User 2 Printing server . . . Attacker 46
第七讲 Kerberos认证 潜在的攻击 n n 窃听 重放: 利用先前的标签信息,获得以后 对系统的访问权。 假冒用户 伪装机器 47
第七讲 Kerberos认证 一、Kerberos 简介 Kerberos:希腊神话“三个头的狗——地狱之门守护 者” 希望有三个功能:身份认证、记账、审核。 Kerberos针对分布式环境,一些 作站可能安装于不 安全场所,而且用户也并非是完全可信的。 客户在登录时,需要认证。用户必须获得由认证服 务器发行的许可证,才能使用目标服务器上的服务。 许可证提供被认证的用户访问一个服务时所需的授 权资格。 所有客户和服务器间的会话都是暂时的。 48
第七讲 Kerberos认证 1、Kerberos的产生背景 在网络系统中,用户需要从多台计算机得到 服务,控制访问的方法有三种: a. )认证 作由用户登录的计算机来管理,服 务程序不负责认证,这对于封闭式网络是可 行的方案。 b. )收到服务请求时,对发来请求的主机进行 认证,对每台认证过的主机的用户不进行认 证。例:rlogin和rsh 程序。半开放系统可用此 方法。每个服务选择自己信任的计算机,在 认证时检查主机地址来实现认证。 49
第七讲 Kerberos认证 C) 在开放式系统中,主机不能控制登录它的每一个用 户,另外有来自系统外部的假冒等情况发生,以上两 种方法都不能保证用户身份的真实性,必须对每一个 服务请求,都要认证用户的身份。 开放式系统的认证的要求: 1. ) 安全性:没有攻击的薄弱环节。 2. )可靠性:认证服务是其他服务的基础,要可靠,不 能瘫痪。 3. ) 透明性:用户觉察不到认证服务,只是输入口令。 4. )可扩展性:支持加入更多的服务器。 50
第七讲 Kerberos认证 2、什么是Kerberos:为网络通信提供可信第三方服务的 面向开放系统的认证机制. 每当用户C申请得到某服务程序S的服务时, 用户和服务程序会首先向Kerberos要求认证对 方的身份,认证建立在用户和服务程序对 Kerberos信任基础上。在申请认证时,C和S都 是Kerberos认证服务的用户,为了和其它服务 的 用 户 区 别 , Kerberos用 户 统 称 为 当 事 人 (principle),principle可以是用户或者某项服务。 51
第七讲 Kerberos认证 当用户登录到 作站时,Kerberos对用户进行 初始认证,此后用户可以在整个登录时间得到 相应的服务。Kerberos不依赖用户的终端或请 求服务的安全机制,认证 作由认证服务器完 成。时间戳技术被应用于防止重放攻击。 Kerberos保存当事人及其密钥的数据库。共享 密钥只被当事人和Kerberos知道,当事人在登 记时与Kerberos商定。使用共享密钥,Kerberos 可以创建消息使一个当事人相信另一个当事人 的真实性。Kerberos还产生一种临时密钥,称 做对话密钥,通信双方用在具体的通信中。 52
第七讲 Kerberos认证 Kerberos提供三种安全等级。 1) 只在网络开始连接时进行认证,认为连接 建立起来后的通信是可靠的。认证式网络文 件系统(Authenticated network file system) 使用 此种安全等级。 2) 安全消息传递:对每次消息都进行认证 作,但是不保证每条消息不被泄露。 3) 私有消息传递:不仅对每条消息进行认证, 而且对每条消息进行加密。Kerberos在发送密 码时就采用私有消息模式。 53
第七讲 Kerberos认证 二、Kerberos原理 1、Kerberos的组成 MIT为雅典娜(Athena)计划开发的认证系统。组成: Kerberos应用程序库:应用程序接口,包括创建和读 取认证请求,以及创建safe message 和private message 的子程序。 加密/解密库:DES等。 Kerberos数据库:记载了每个Kerberos 用户的名字, 私有密钥,截止信息(记录的有效时间,通常为几年) 等信息。 数据库管理程序:管理Kerberos数据库 54
第七讲 Kerberos认证 KDBM服务器(数据库管理服务器):接受客户端的请 求对数据库进行操作。 认证服务器(AS):存放一个Kerberos数据库的只读的 副本,用来完成principle的认证,并生成会话密钥. 数据库复制软件:管理数据库从KDBM服务所在的 机器,到认证服务器所在的机器的复制 作,为了 保持数据库的一致性,每隔一段时间就需要进行复 制 作. 用户程序:登录Kerberos,改变Kerberos密码,显示 和破坏Kerberos标签(ticket)等 作。 应用程序: 55
第七讲 Kerberos认证 Kerberos的主要认证模型如下: 出于实现和安全考虑,Kerberos认证服务 被分配到两个相对独立的服务器。 认证服务器AS:它同时应该连接并维护一个 中央数据库存放用户口令、标识等) 票据许可服务器TGS(Ticket Granting Server)。 整个系统将由四部分组成:AS,TGS,Client, Server。 56
第七讲 Kerberos认证 Ticket Granting Server Kerberos Database Server Workstation Authentication Server Kerberos Key Distribution Service 57
第七讲 Kerberos认证 Kerberos 有 两 种 证 书 : 票 据 ticket和 认 证 符 authenticator。这两种证书都要加密,但加密的 密钥不同。 Ticket用来安全地在AS和S之间传递用户的身 份,同时保证使用ticket的用户必须是ticket中 指定的用户。Ticket的组成: C/S的标识,client的地址,时间戳,生存时间, 会话密钥五部分组成。Ticket一旦生成,在life 指定的时间内可以被client多次使用来申请同一 个server的服务。 58
第七讲 Kerberos认证 Authenticator:提供信息与ticket中的信息进行 比较,一起保证发出ticket的用户就是ticket中 指定的用户。认证符有下列部分组成: client的名字,client的地址,记录当前时间的 时间戳。authenticator只能在一次服务请求中 使用,每当client向server申请服务时,必须重 新生成Authenticator。 59
第七讲 Kerberos认证 通过三阶段六步操作,用户C和服务V互相验证彼此 的身份,并且拥有只有C和V两者知道的会话密钥 Kc, v,以后的通信都可以通过会话密钥得到保护。 Kerberos 用户C AS DB TGS 服务器V 60
第七讲 Kerberos认证 2、Kerberos 作原理 常用术语的简写: C:客户机 AS:认证服务器 V:服务器 IDc、IDv、IDtgs 分别为C、V、TGS的身份 ADc: 用户的网络地址 TSi:第i个时戳 Lifetime: 第I个有效期限 Pc:C上的用户口令 61
第七讲 Kerberos认证 Kc:C和AS的共享密钥 Kv:V和TGS的共享密钥 Ktgs: TGS 和AS的共享密钥 Kc, tgs:C与TGS的共享密钥 Kc, v:C与V的共享密钥 62
第七讲 Kerberos认证 用户C请求服务S的整个Kerberos认证过程 1)认证服务交换 用户C向AS发出请求,以获取访问TGS的令牌( 票据许可证):Tickettgs 得到初始化令牌的 作在用户登录 作站时进 行,在用户看来和登录分时系统是完全相同 的。登录时用户被要求输入用户名,输入后 系统向AS发送一条包含用户和TGS服务两者 名字的请求,以及时戳TS 1(表示是新请求)。 63
AS检查用户有效,则随机产生用户和TGS 通 信 的 会 话 密 钥 Kc, tgs, 并 创 建 令 牌 Tickettgs ,令牌包含用户名,用户地址, TGS服务名,当前时间(时戳TS 2) ,有效 时间,还有刚才创建的会话密钥。然后 将令牌用Ktgs加密。AS向C发送加密过 的令牌Tickettgs和会话密钥Kc, tgs,发送 的消息用只有用户和认证服务器A知道 的Kc来加密,Kc值基于用户密码。 64
第七讲 Kerberos认证 用户机器收到AS回应后,要求用户输入密码, 将密码转化为DES密钥Kc,然后将AS发回的 信息解开,保存令牌Tickettgs和会话密钥Kc, tgs, 为了安全, 用户密码Pc和密钥Kc则被丢弃。 当用户的登录时间超过了令牌的有效时间时, 用户的请求就会失败,这时系统会要求用户 使用kinit程序重新申请令牌Tickettgs。用户运 行klist命令可以查看自己所拥有的令牌的当前 状态。 65
1. C AS: IDC||IDtgs||TS 1 2. AS C: EKc[Kc,tgs||IDtgs||TS 2||Lifetime 2||Tickettgs] 其中:Tickettgs = EKtgs[Kc, tgs||IDc||ADc|| IDtgs ||TS 2||Lifetime 2] 说明: 1. 不输入C的口令,就不能解开来自 AS的信息 2. TS 1时戳用来防止重放攻击; 3. Kc 由用户口令导出; 4. Kc,tgs 是 C 和 TGS间的会话密钥。 66
第七讲 Kerberos认证 2) C从TGS得到所请求服务的令牌Ticketv。 一个令牌只能申请一个特定的服务,所以用 户必须为每一个服务V申请新的令牌,用户可 以从TGS处得到服务令牌Ticketv 。 用户程序首先向TGS发出申请令牌的请求。请 求信息中包含V的名字,上一步中得到的请求 TGS服务的加密令牌Tickettgs,还有加密过的认 证符Authenticatorc 。认证符含有:用户身份、 网址、时戳。认证符与ticket不同,只用一次 且有效期短。 67
第七讲 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 。 68
第七讲 Kerberos认证 3. C TGS: IDv||Tickettgs||Authenticatorc=EKc,tgs[IDc||ADc||TS 3] 说明: TGS拥有 Ktgs,可以解密 Tickettgs ,然后使用从 Tickettgs 得到的Kc, tgs 来解密 Authenticatorc 将认证符中的数据与票据中的数据比较,以验证 票据发送者就是票据持有者。 4. TGS C: EKc,tgs[Kc,v||IDv||TS 4||Ticketv] Ticketv= EKv[Kc,v||IDc||ADc||IDv||TS 4||Lifetime 4] 69
第七讲 Kerberos认证 (3) 客户机与服务器之间认证交换。 C向 V发 送 服 务 许 可 票 据 Ticketv 和 认 证 符 Authenticatorc ,V收到后用Kv 解密Ticketv ,然后 用Kc, v解密认证符。比较得到的用户名,网络地址, 时间等信息,判断C的身份,请求是否有效。用户和 服务程序之间的时钟必须同步在几分钟的时间段内, 当请求的时间与系统当前时间相差太远时,认为请 求是无效的,用来防止重放攻击。为防止重放攻击, V通常保存一份最近收到的有效请求的列表,当收到 一份请求与已经收到的某份请求的令牌和时间完全 相同时,认为此请求无效。 70
(3) 客户机与服务器之间认证交换。 当C也想验证V的身份时,V将收到的时间戳 加 1,并用会话密钥Kc, v加密后发送给用户, 用户收到回答后,用Kc, v解密后对增加的 时戳进行验证,从而确定V的身份。 此后,客户与服务器之间通过共享的会话密 钥秘密通信。 71
第七讲 Kerberos认证 5. C V: Ticketv||Authenticatorc 6. V C: Ekc, v[TS 5+1] 其中: Ticketv= EKv[Kc, v||IDc||ADc||IDv||TS 4||Lifetime 4] Authenticatorc=Ekc, v [IDc||ADc||TS 5] 72
Kerberos V 5的改进 Ø 加密算法的多样化 Ø 票据有效期延长 28*5分钟 任意 Ø 允许认证转发 C可让V 1代表自己访问V 2 Ø 多区域认证关系简化 73
第七讲 Kerberos认证 3、Kerberos数据库管理 认证 作由AS实现,它从Kerberos数据库中读 取用户的信息来完成认证 作,对数据库操 作是只读的。对数据库的更新和管理操作由 另 外 的 服 务 来 完 成 , 称 做 KDBM(Kerberos Database Management Service)。KDBM只能运 行在主Kerberos服务器上,机器上维护可写的 Kerberos数据库,而其他的认证服务程序则可 运 行 在 从 Kerberos服 务 器 上 , 机 器 上 维 护 Kerberos的只读备份,完成认证 作,数据库 复制软件用来完成从主机到从机的复制 作。 74
第七讲 Kerberos认证 1) KDBM服务程序(KDBM server) 用于添加principle、改变其密码。KDBM服务请求是独 一无二的,所以请求KDBM服务不需要向tgs申请令牌, 而采用认证中的第一步和第三步,直接向认证服务器申 请认证,这样做的目的是为了要求用户输入原来的密码。 当用户不在时,别人可能会篡改用户的密码,尤其是超 级用户,可以更改任何人的密码,所以要在申请KDBM 服务时输入用户的密码。 当KDBM收到请求时,比较请求的发出者和被操作者, 当两者相同时,操作被允许。当两者不同时,在存取控 制列表中寻找发出者的存在,如果存在,操作被允许, 否则,操作被拒绝。 KDBM存放所有请求的日志,防止异常情况发生。 75
第七讲 Kerberos认证 2) kadmin和kpasswd命令 Kadmin命令只能被Kerberos超级用户使用,用 来 添 加 principle和 更 改 principle的 密 码 。 Kadmin运行时会要求输入超级用户密码,当 一个用户为Kerberos超级用户时,会在原来的 用户上创建一个admin实例(instance),admin实 例的密码可以与原来用户的密码不同,kadmin 要求输入 admin实例的密码。 Kpasswd命令被principle用来修改Kerberos密码, 同样要求输入用户原来的密码完成认证 作。 76
第七讲 Kerberos认证 3) 数据库复制 为了提高系统的效率和可靠性,Kerberos在 master上存放数据库,而在slave上存放数据库 的只读副本。这样当master出现异常情况时, 系统还可以完成日常的认证 作,并且多台 认证服务器的使用减少了瓶颈的发生。但维 持数据库的多个副本带来了如何保持各个副 本间数据一致性的问题。有一个简单有效的 办法可以解决这个问题,那就是每隔一个小 时就进行一次从master到slave的转储 作。 77
第七讲 Kerberos认证 为了保证数据库不被窃听和篡改,Kerberos使 用以下措施:数据库中principle的所有密码在 存储时都用Kerberos数据库专用密钥进行加密, 这样在传输过程中即使被偷听,偷听者也无 法得到想要的信息; 在传输之前先传输校验和, 这样当有多出的冒充信息或者接收信息被篡 改时,可以通过比较校验和及时发现。 78
第七讲 Kerberos认证 Kerberos的局限性: 1.时间同步问题: 因为整个Kerberos的协议 都严重地依赖于时钟,而实际证明,要求在 分步式系统环境中实现良好的时钟同步,是 一个很难的课题。如果能够实现一种基于安 全机制的时间服务,或是研制一种相对独立 于计算机和网络环境、且基于一种或几种世 界标准时钟的,能够准确进行时间转化和时 间服务的联机物理时钟,这种问题将得到较 好的解决; 79
第七讲 Kerberos认证 2.口令猜测问题: Kerberos的口令没有进行额外的特殊处理,以 至于即使用强力攻击(即穷举法)的时间复 杂度仅和口令的长度成比例,这将形成一个 两难的局面:或是增加密钥长度换取更高的 安全,但这会造成用户的使用困难(可以参 照口令短语方式解决此困难)和增加系统加/ 解密开销。 80
第七讲 Kerberos认证 3.认证域之间的信任问题:认证域之间的多 级跳跃过程复杂且不明确,相互信任和协调 不方便。若各Kerberos区域形成复杂或不规则 的网状结构,则要求方便的域间服务,将付 出极大的代价,即系统的可扩充性不强。针 对这种无序的状况,应有规划有目的地建立 起全球一体化的分层(树状)结构,形成良 好的信任链条。 81
第七讲 Kerberos认证 4.重放攻击的问题: 长票的生存期较长,容易被重放攻击; 对短票而言,如果攻击者技术高明,也有机 会重放攻击,况且攻击者可以着手破坏系统 的时钟同步性。我们建议,在Kerberos引入序 列号循环机制,即让传送的消息带上一定的 序列号,这些序列号在由系统循环地赋予消 息,再结合系统原有的生存期控制,将有效 地保证一定的时间段里只能存在唯一的合法 消息,从而消除了重放的可能性。当然,这 必须付出一定的系统开销代价。 82
第七讲 Kerberos认证 5.密钥的存储问题: Kerberos认证中心 要求保存大量的共享私钥,无论是管理还是 更新都有很大的困难,需要特别细致的安全 保护措施(甚至应采用硬件/物理方法),将 付出极大的系统代价。 6.系统程序的安全性、完整性问题: 对 Kerberos系统程序进行攻击,特别是恶意篡改 登录程序,是有效的攻击方法。所以,必须 花一定的系统代价去防范对认证系统本身的 集中攻击。其中,建立高性能的防火墙和进 行日志是必要的。 83
X. 509认证业务 Kerberos认证:基于对称密钥体制 X. 509认证: 基于公开密钥体制 X. 509认证过程: 假设通信双方都知道对方的公钥,或者双方都从 目录服务器获得对方的公钥证书。 认证过程有三种: 1)单向身份认证:用户A将消息发往B,以向B证明: A的身份、消息是由A产生的; 消息的意欲接收者是B; 消息的完整性和新鲜性。 84
A B 单向身份认证 A B: IDA||ESA(TA||RA||IDB||EPB(KAB)) 说明:IDA、IDB:A和B的身份标识。 ESA: 用A的私钥加密 EPB: 用B的公钥加密 TA: A产生消息的时戳,包括产生时间、截止时间 RA: A产生的不会重复的随机数,防止重放、伪造; B在收到的消息截止时间内要一直保存RA。 KAB:双方欲建立的会话密钥 B要验证:A的证书的有效性;A的签名;消息完 整性;接收者是否为B;时戳是否是当前时间; 85 RA有无重复
A B 双向身份认证 在单向认证基础上,B向A做出应答,以证明: B的身份、应答是B产生的; 应答的意欲接收者是A; 应答消息是完整的和新鲜的。 A B: IDA||ESA(TA||RA||IDB||EPB(KAB)) B A: ESB(TB||RA||IDA||EPA(KBA) 应答消息包含由A发来的一次性随机数RA,以使 应答消息有效。TB、RB是B的时戳和随机数 KBA: 双方的会话密钥 86
A B 三向身份认证 在双向认证基础上,A再向B做出应答,即构成三 向身份认证。 A B: IDA||ESA(TA||RA||IDB||EPB(KAB)) B A: ESB(TB||RA||IDA||EPA(KBA) A B: ESA(RB||IDB) 三向身份认证的目的是将收到的对方发来的一次 性随机数又返回给对方,因此双方不需要检查 时戳只要检查对方的一次性随机数即可判断出 重放攻击。在通信双方无法建立时钟同步时, 就要用此方法。 87
e8c1198f90dba46f0ceb234cbc602887.ppt