Professional Documents
Culture Documents
第九章 身份鉴别技术
第九章 身份鉴别技术
第九章 身份鉴别技术
第1章 密码学概述
第2章 古典密码技术
第3章 分组密码
第4章 公钥密码体制
第5章 散列函数与消息鉴别
第6章 数字签名技术
第7章 密钥管理技术
第8章 身份鉴别技术
第9章 序列密码基础
第 10 章 密码技术应用
1/43
• 问题的提出
身份欺诈问题
• 鉴别需求
某一成员(声称者)提交一 个主体的身份并
声称它是那个主体。
• 鉴别目的
使别的成员(验证者)获得对声称者所声称
的事实的信任。
鉴别就是可信地确认实体是它所声明的。
1. 身份鉴别的概念
为了保护网络资源及落实安全政策。需要提供可追究责任的
机制,这里涉及到三个概念:认证、授权及审计。
( 1 )鉴别 Authentication :在做任何动作之前必须要有方
法来识别动作执行者的真实身份。鉴别又称为认证。身份认证
主要是通过标识和鉴别用户的身份,防止攻击者假冒合法用户
获取访问权限。
( 2 )授权 Authorization :授权是指当用户身份被确认合法
后,赋予该用户进行文件和数据等操作的权限。这种权限包括
读、写、执行及从属权等。
( 3 )审计 Auditing :每一个人都应该为自己所做的操作负
责,所以在做完事情之后都要留下记录,以便核查责任。
身份认证往往是许多应用系统中安全保护的第一道设防,
它的失败可能导致整个系统的失败。
身份鉴别的相关实体
所知 所有 唯一特征
( Knowledge ) ( Possesses ) ( charecteristics )
• 验证实体所知什么,如一个秘密的口令或通行字。
• 验证实体拥有什么,如信物、通行证、智能 I C 卡。
• 验证实体不可改变的特性,如指纹、声音等生物学
测定得来的标识特征。
Something
其它,如:you know
• 相信可靠的第三方建立的鉴别(递推)。
Something you have
• 基于环境(如主机
Something you are IP 地址)。
针对身份鉴别的主要威胁和攻击手段
主要威胁:假冒、伪造等。
典型攻击手段
信道截获:由于认证信息要通过网络传递,并且很多
认证系统的口令是未经加密的明文,攻击者通过窃听网络数
据,就很容易分辨出某种特定系统的认证数据,并提取出用
户名和口令,或者其它有关的鉴别信息。
口令猜测:
重放:非授权用户截获信息,然后再传送给接收者。
修改或伪造:非授权用户截获信息,替换或修改信息
后再传送给接收者,或者非授权用户冒充合法用户发送信息。
其它:如反送攻击、交错攻击和选择性攻击等。
方案示意 1 假定用户 A 、 B 已安全共享对称密钥 k
①{ IDA , IDB ,
用户 A rA } 用户 B
② { rB , Ek(rA) }
③
T 怎么构造
{Ek(rB )}
出 Ek(rB) ? B 等待 D 返
回 Ek(rB)
① { IDA , IDB , rT
对手 T } 用户 B
② {rB , Ek(rT) }
① { IDA , IDB ,
rB }
② {rB2 , Ek(rB) }
③
{Ek(rB )}
方案示意 2 假定用户 A 、 B 已安全共享对称密钥 k
① { IDA , IDB ,
用户 A rA } 用户 B
② { Ek(rA , rB) }
③ { rB’ }
B 等待 T 返
特点: B 的质问信息是密文! 回
T 怎么构造出 Ek(rB , rA )
Ek(rB , rA ) ?
① { IDB , IDA ,
对手 T rB } 用户 B
①{ IDA , IDB , r
B }
②{ Ek(rB , rB2 )
}
② { Ek(rB , rB2 )
}
③ { rB2’ }
保证消息的实时性的基本方法
1 、时间戳: A 接受一个新消息仅当该消息包含一个时
间戳,该时间戳在 A 看来,是足够接近 A 所知道的当
前时间;这种方法要求不同参与者之间的时钟需要同步。
2 、质询 / 响应方式( Challenge/Response ): A 期望
从 B 获得一个新消息,首先发给 B 一个随机质询值
(Challenge) ,并要求后续从 B 收到的消息( Respons
e )包含正确的这个质询值(或其函数)。
时间戳方法局限:
由于变化的和不可预见的网络延迟的本性,
不能期望分布式时钟保持精确的同步。
因此,任何基于时间戳的过程必须采用时间窗的
方式来处理:一方面时间窗应足够大以包容网络延迟,
另一方面时间窗应足够小以最大限度地减小遭受攻击的
机会。安全的时间服务器用以实现时钟同步可能是最好
的方法。
质询 / 响应方式局限
不适应非连接性的应用,因为它要求在传输
开始之前先有握手的额外开销,这就抵消了无连接通信
的主要特点。
典型身份鉴别协议的基本过程:
( 1 ) 注册
( 2 )登录
( 3 )鉴别
( 4 )口令修改
( 5 )注销(选)
3. 常用身份鉴别技术
弱
• 静态口令鉴别 身
份
(PAP; Password Authentication Protocol) 鉴
别
• 一次性口令鉴别 (OTP: One time Password ) 机
制
• 双因子身份鉴别(如基于智能卡)
• 生物特征鉴别
3.1 口令鉴别机制
( 1 )静态口令鉴别 (PAP; Password Authentication
Protocol)
目前常用的身份鉴别机制大都是基于静态口令的,属于最简
单、传统的鉴别方法。
该类系统为每个用户维护一个二元组信息 ( 用户 ID 、口令 ) ,
登录系统时用户输入自己的 ID 和口令,鉴别服务器根据用
户输入的信息和自己维护的信息进行匹配来判断用户身份的
合法性。
用户 A 服务器
IDA PWA
IDA, PWA
IDB PWB
… …
引入单向加密机制
用户 服务器 ·
A IDA h(PWA)
IDA , PWA
IDB h(PWB)
… ….
安全性分析:
攻击者可事先计算好各种长度的字符串的消息
摘要,并将其存放再文件(称为字典)中,一但攻击者
的得到了存在服务器中的口令文件,直接和字典中的值
相匹配,即可知道用户的口令 ( 字典攻击)。
基于单向函数的口令鉴别
13 字节口令
MD5 破解
引入加扰机制
IDA h(PWA||saltA)
用户 A 服务器
IDB h(PWB||saltB)
IDA , PWA … …
IDA saltA
IDB saltB
… …
攻击者在事先进行计算各种长度的字符
组成的口令的消息摘要时,由于每个用户的 salt
不同,攻击者必须把各种口令和 salt 进行组合
进行散列运算,使得攻击者得到字典的难度增
加。
20 世纪 70 年代 UNIX 操作系统采取的
UNIX crypt 口令算法是一种口令加盐的方
法。 循环 25 次
I=0(64bit) 交换
DES i 与 24+i 13byte 的字符串
存放在
/etc/passwd 文件
的 PASSWORD 域。
客户端 服务器
口令卡
2 )基于令牌的鉴别机制
给授权用户分配一个认证设备。通常称为“令
牌”,它产生一登录时必须使用的代码。其原理是时间同
步的动态口令。
实现方法:
— 通过种子值和当前时间,采用伪随机算法产生令牌码;
— 安全 ( 令牌服务器)通过基于其记录中的种子值,产生
它自己的一个当前有效代码。然后与用户提交的代码
相比较,达到对用户认证的目的;
— 缺点是算法不被信息系统使用者所知,存在安全风险,
维护成本高。
3) 基于时间同步的动态口令
以用户登录时间作为随机因素;这
种方式对双方的时间准确度要求较高。
IDA f (PWA, x)
用户 A 服务器
IDB f (PWB, x)
IDA,PWA … …
智能卡
用户注册阶段
(x 为服务器秘密信息,可存储在智能卡中 )
基于时间同步的动态口令
智能卡 T’ - T≤△T
T g
g PWA’ IDA T
PWA’
T
x 比较
接受 拒绝
IDA
客户端 服务器
PWA’=g( f (PWA||x)||T)
1) 攻击者只知道用户的口令而没有用户的
智能卡,则不能通过服务器的鉴别;
2 )攻击者只拥有用户的智能卡而不知道用
户的口令,则不能通过服务器的鉴别;
3 )如果攻击者不能服务器进行时间同步,
则攻击者不能通过服务器的鉴别。
4) 基于质询 / 应答机制的动态口令
IDA f(PWA||
x)
IDA, PWA IDB f(PWB||
x)
智能卡 … …
客户端 服务器
用户注册阶段 (x 为服务器秘密信
息)
基于质询 / 应答机制的动态口令
智能卡
IDA f (PWA||
PWA f x)
g PWA’ IDA r g
PWA’
x
比较
随机数 r
接受 拒绝
IDA
客户端 服务器
PWA’ = g( f (PWA||x)||r)
一个基于 OTP 的用户鉴别方案( S-key 方案)
用户鉴别过程三阶段:注册、登录、鉴别。
用户鉴别信息表
IDA (请求登录) IDA hN(PWA) N
N (≠ IDB hN(PWB) N
1)
IDA, OTP=hN - 1(PWA) ……
U 服务器
服务器计算并验证等式, h(OTP)?=hN(PWA)
若通过验证,则服务器用 OTP 替换用户鉴别信息 , N=N - 1
直到 N=1 ,显然用户注册一次可以登录 N - 1 次。
问题:此方法如何体现 OTP ?它是如何保证鉴别的安全性的?
安全性分析:
1) 重放攻击:由于用户每次登录的口令不
同, 因此攻击者把上一次的口令传送给
服务器将通不过服务器的认证。
2 )口令以密文传输:口令散列后在通信信
道中传输,因此攻击者截获口令的散列值
后要计算用户的口令是困难的。
3.2 基于智能卡鉴别机制:
— 智能卡( Smart card ):是一个带 CPU 的安全芯
片卡
具有自己的操作系统 COS ,安全加解密算法;
—— 一般为接触式的,用户需要读卡器;
—— 内置加密口令或数字证书、私钥等,实现身份认
证
—— 缺点:费用高,需要读卡器。
Ek(N)
?
Ek(N)
质询—响应系统提示用户,要求每次登录都给出不同的回答。
例如,系统可能显示一个四位数的询问数据,每个用户各
拥有一个应答函数(如一次性口令鉴别器)以供计算。
基于密码算法的鉴别协议、零知识证明技术:(略)
4. 零知识证明
( 1 )目的:
向别人证明自己知道某个秘密信息,同时又不能让别人知道该秘密信息。
( 2 )基本的零知识证明协议( J.J. Quisquater , L.C. Guillou )
用户 Alice 拥有某个秘密信息(如打开 C 、 D 间密门的咒语);
用户 Alice 要想 Bob 证明自己掌握该秘密,而又不能泄漏该秘密。
A
证明过程:
( 1 ) Bob 站在 A 点。
( 2 ) Alice 走进洞穴,到达 C 或 D
点。
( 3 ) 在 Alice 消失后, Bob 到达 B
B 点。
( 4 ) Bob 命令 Alice 从左通道或右
通道出来(随机)
( 5 ) Alice 遵从 Bob 的命令,必要 C D
时利用咒语打开 C 、 D 间的密门。
( 6 ) Alice 和 Bob 重复第 (1) ~ (5)
步 n 次。
零知识证明协议举例:
设 p 和 q 是两个大素数, n = p q 。 假设 Alice 知道 n 的因
子。如果 Alice 想让 Bob 相信他知道 n 的因子,但却不想让 Bob 知道 n
的因子。
(1) Bob x ,计算 协议:
Alice 和 Bob 可以执行下面的
则随机选取一个大整数
y = x4 mod n
Bob 将计算结果 y 告诉 Alice .
(2) Alice 计算 z y mod n Alice 将结果 z 告诉 Bob
(3) Bob 验证 : y? = x2 mod n 是否成立。
上述协议重复多次,若 Alice 每次都能正确地计算 y mod n
则 Bob 就可以相信 Alice 知道 n 的因子 p 和 q 。
因为可以证明计算 y mod n 等价于对 n 进行因式分解。
若 Alice 不知道 n 的因子 p 和 q ,则计算 y mod n 是一个困难问题。
因此,当在重复执行该协议的情况下, Alice 都能正确地给出 y mod n
则 Bob 可以以非常大的概率认为 Alice 知道 n 的因子 p 和 q 。
散列函数
Alice 的私钥
发送者
散列码
散列运算 签名运算
(数字指纹) Alice 的
明文消息 数字签名
Alice 加密运算 合并
加密信息
报文
对称密钥
( 随 机 产 加密运算
生) 数字信封
Bob 的公钥
发送(不安全信道)
接收者
Bob
提供机密性、完整性和身份鉴别的安全通信示例(接收
端)
Alice 的公钥
通过(接
收)
验证运算
失败(拒
绝)
Alice 的 散列码
分解
数字签名
报文
解密运算 散列
加密信息 运算
对称密钥 明文消息
解密运算
Bob 数字信封
散列函数
接收者
Bob 的私钥
身份鉴别技术应用实例:
Kerberos
Kerberos 需求
1. 安全:一个网络窃听者应该不能获得必要的信息
来假装成另一个用户。更一般地, Kerberos 应
该足够强以防止潜在的对手发现脆弱的链路。
2. 可靠:对所有依赖 Kerberos 进行访问控制的服
务来说,无法获得 Kerberos 服务就意味着无法
获得所要求的服务。因此, Kerberos 应该是高
可靠性的,应该使用分布式的服务器结构,一个
系统能够对另一个系统进行备份。
3. 透明:理想情况下,除了需要输入一个口令外,
用户应该没有意识到鉴别服务的发生。
4. 可扩缩:系统应该拥有支持大量客户和服务器的
能力。这意味着需要一个模块化的、分布式结构。
一个简单的鉴别对话
AS
( 1 ) C → AS: IDc|| PWc || IDv
(1)
( 2 ) AS → C: Ticket (2)
( 3 ) C → V: IDc||Ticket C
(3)
V
C: 客户 IDv : 服务器标识符
V: 服务器 PWc : 用户口令
AS: 鉴别服务器 ADc : C 的网络地址
IDc 用户标识符 Kv : AS 和 V 的共享密
钥
:
更安全的鉴别对话
• 两个主要问题
1. 用户每次访问一种新服务就需要一个新的票据,
导致用户多次输入口令。
2. 用明文传递的用户口令会被窃听。
• 解决办法
– 票据可重用
– 避免明文口令
– 采用票据许可服务器
使用 TGS 的鉴别对话
每次用户的登陆会话 :
(1) C AS : IDc || IDtgs
(2) AS C : EKc [ Tickettgs ]
每种服务类型一次:
(3) C TGS: IDc||IDv||Tickettgs
(4) TGSC: TicketV
每种服务会话一次:
(5) CV: IDc || TicketV
Tickettgs = EKtgs [ IDc || ADc || IDtgs || TS1 || Lifetime1] 票据许可票据
TicketV = EKv [ IDc || ADc || IDV || TS2 || Lifetime2 ] 服务许可票据
符号说明:
Idtgs : TGS 的标识符 Ktgs : AS 与 TGS 的共享密钥
Kc :由用户口令导出的密钥 KV : TGS 与 V 的共享密钥
TS1 :时间戳 TimeStamp
Lifetime1 、 2 :票据生存期
1. 客户通过向 AS 发送用户 ID 、 TGS ID 来请求一张代表
该用户的票据许可票据。 TGS ID 说明一个使用 TGS
服务的请求。
2. AS 发回一张加密过的票据作为响应,加密密钥是由用
户口令导出的。当该响应到达客户端时,客户端提示用
户输入口令,产生密钥,并试图对收到的报文解密。如
果提供的口令正确,票据就能正确恢复。
3. 客户代表用户请求一张服务许可票据。为达到这个目的,
客户向 TGS 发送一个包含用户 ID 、期望服务的 ID 和
票据许可票据的报文。
4. TGS 对收到的票据进行解密,通过检查 TGS 的 ID 是否
存在来验证解密是否成功。它检查票据中的生存期,确
保它没有过期。然后比较用户的 ID 和网络地址与收到
鉴别用户的信息是否一致。如果允许用户访问 v , TGS
就发回一张访问请求服务的许可票据。
5. 客户代表用户请求获得某项服务。为了达
到这个目的,客户向服务器传送一个包含
用户 ID 和服务许可票据的报文。服务器通
过票据的内容进行鉴别。
新的问题
• 第一个问题是票据许可票据的生存期。
– 如果这个生存期太短 ( 如数分钟 ) ,那么用户将总被
要求输入口令。
– 如果生存期太长 ( 如数小时 ) ,那么对手就有更多重
放的机会。对手可以窃听网络,获得票据许可可票据
的复制,然后等待合法用户的退出登录。这样对手便
可伪造合法用户的网络地址,并向 TGS 发送步骤 (3)
中的报文。这将使对手可以没有限制地访问合法用户
可获得的资源和文件。
– 同样,如果对手截获服务许可票据,并在过期前使用
它,对手便可访问相应的服务。
– 因此,我们得出另外一个需求。网络服务 (TGS 或应
用服务 ) 必须能够证明使用票据的人就是申请票据的
人。
新的问题
• 第二个问题是双向鉴别:
向用户鉴别它自己。
没有这样的鉴别,对手可能会阴
谋破坏系统配置,使发往服务器的报文被
转送到另一个位置。
假的服务器在那充当真正的服务
器,并接收来自用户的任何信息,拒绝向
用户提供真正的服务。
Kerberos 第 4 版
(a) 鉴别服务交换:获得 TGS 许可票据
(1) C→AS: IDC║IDtgs║TS1
(2) AS→C: EKc [ KC, tgs║IDtgs║TS2║Lifetime2║Ticket tgs ]
Tickettgs=EKtgs[Kc,tgs║IDc║ADc║IDtgs║TS2║Lifetime2 ] (可重用)
(b) 票据许可交换服务:获得服务许可票据
(3) C→TGS: IDv║Ticket tgs║Authenticatorc
(4) TGS→C: EKc tgs [ Ke,v║IDv║TS4║ Ticket v ]
Tickettgs=EktgsKc , tgs║IDc║ADc║IDtgs║TS2║Lifetime2 ](可重用)
Ticketv=EKv [ Kc,v║IDc║ADc║IDv║TS4║Lifetime4 ] (可重用)
Authenticatorc=EKc,tgs [ IDc ║ADc ║TS3 ] (对抗重放 Tickettg
s )
(c) 客户 / 服务器鉴别交换:获得服务
(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 ]
鉴别服务交换阶段:获得 TGS 许可票据
几个重要数据说明:
Tickettgs 可重用,以便用户不用重新输人口令
IDc: 指明这张票据的合法拥有者
ADc : 防止在其它工作站上使用该票据的人不是票据
的初始申请者
Kerberos 鉴别过程
1. 请求票据许可票据
Authenticator
2. 票据 + 会话密钥 Server (AS)
3. 请求服务许可票据
Ticket Granting
4. 票据 + 会话密钥 Server (TGS)
5. 请求服务
6. 提供服务标识符
Kerberos 领域和多个 Kerberos
• 完整服务的 Kerberos 环境包含一个 Kerberos
服务器、许多客户和许多应用服务
器。 Kerberos 环境有如下需求:
– Kerberos 服务器的数据库必须包含所有参与用户的
ID 和用户口令的散列码。所有用户都向 Kerberos 服
务器注册。
– Kerberos 服务器必须与每个服务器共享一个密钥。
所有服务器都向 Kerberos 服务器件注册。
• 这样的环境被称为一个领域。不同行政组织下的由客户
和服务器组成的网自成不同的领域。换句话说,这通常
是不切实际的,或因不能肯定管理的策略,让在一个管
月下的用户和服务器向别处的 Kerberos 服务器注册。
然而,在一个领域中用户可能需要访问他领域的服务器,
同时某些服务器可能也愿意向其他领域的用户提供服务,
如果这些用户月过鉴别的。
Kerberos 领域
• Kerberos 提供了一种支持不同领域间鉴
别的机制。
每个互操作领域中的 Kerberos 服务器要
与另一个领域中的 Kerberos 服务器共享一个密
钥。两个 Kerberos 服务器都必须相互注册。
这个方案需要一个领域中的 Kerberos 服
务器信任另一个领域中 Kerberos 服务器鉴别的
用户,并且第二个领域的参与服务器也愿意信任
第一个领域中的 Kerberos 服务器。
Kerberos 领域
1. 请求票据许可票据
Authenticator
2. 票据 + 会话密钥 Server (AS)
3. 请求远程 TGS 票
据 Ticket Granting
4. 远程 TGS 票据 Server (TGS)
5. 请求远程服务
许可票据
AS
6. 远程服务
器票据 TGS
第 4 版与第 5 版的差异
• 第 5 版打算两个方面改进第 4 版的不足:
– 环境上的缺点
– 技术上的不足
第四版的缺陷
环境上的不足
(b) 票据许可交换服务:获得服务许可票据
(3) C→TGS: Options║ IDv║ Times ║ Nonce2║Ticket tgs║Authenticatorc
(4) TGS →C: Reamlc║ IDc ║ Ticketv ║ EKc tgs[Ke,v║Times║Nonce2║Realmv║IDv ]
Ticket tgs =EKtgs [ Flags║KC, tgs║Realmc║ IDc║ADc║Times ]
Ticket v =EKv [ Flags║KC,v║Realmc║ IDc║ADc║Times ]
Authenticatorc=EKc,tgs [ IDc ║Realmc ║TS1 ]
(c) 客户 / 服务器鉴别交换:获得服务
(5)C→V: Options║Ticketv║ Authenticatorc
(6)V→C: EKc,v [ TS2 ║ Subkey║Seq# ]
Ticketv=EKv [ Flags║KC,v║Realmc║IDc║ADc║Times ]
Authenticatorc=Ekc,v [ IDc Realmc║ TS2 ║ Subkey║Seq# ]