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