1. 什么是身份认证
身份认证是证实用户的真实身份与其所声称的身份是否相符的过程。
2. 身份认证技术的分类
a. 根据实现方式分类
基于口令的认证技术
基于密码学的认证技术
生物特征的认证技术
b. 根据认证条件的数目分类
仅通过一个条件的相符合来证明一个人的身份,称之为单因子认证;
通过两种不同条件来证明一个人的身份,称之为双因子认证;
通过组合多种不同条件来证明一个人的身份,称之为多因子认证。
c. 根据认证数据的状态分类静态
静态数据认证:指用于识别用户身份的认证数据事先已产生并保存在特定的存储介质上;
动态数据认证:指用于识别用户身份的认证数据不断动态变化,每次认证使用不同的认证数据,即动态密码。动态密码由一种称为动态令牌的专用设备(硬件或软件)产生,其产生动态密码的算法与认证服务器采用的算法相同。
3. 基于对称密钥的身份认证协议
以网络为背景的认证技术的核心基础是密码学。
对称密码和公开密码是实现用户身份识别的主要技术。
认证协议——示证方和验证方遵循的特定规则
3.1 基于挑战-应答方式的认证协议
过程:
- 验证方生成一个大随机串(即挑战)发送给示证方
- 示证方使用共享密钥加密随机串,回送给验证方
- 验证方通过解密密文得到挑战,通过验证挑战的正确与否,来认证示证方的身份。
适用场合:
只有少量用户的封闭式网络系统;各用户之间的双人共享密钥的数量有限
3.2 Needham-Schroeder认证协议
所有的使用者共同信任一个公正的第三方,此第三方被称为认证服务。
每个使用者需要在认证服务器AS(Authentication Server)
上完成注册,AS
保存每一个用户的信息并与每一个用户共享一个对称密钥。
有关符号:KDC(Key Distribution Center)
为
A
S
AS
AS的秘钥分配中心,主要功能是为用户生成、分发通信秘钥。
I
D
A
ID_A
IDA和
I
D
B
ID_B
IDB分别是
A
A
A和
B
B
B的网络用户标识。
过程:
-
A → K D C : I D A ∥ I D B ∥ N 1 A \to KDC: ID_A \Vert ID_B \Vert N_1 A→KDC:IDA∥IDB∥N1
-
K D C → A : E K a [ K s ∥ I D B ∥ N 1 ∥ E K b [ K s ∥ I D A ] ] KDC \to A: E_{K_a}\left [ K_s \Vert ID_B \Vert N_1 \Vert E_{K_b}\left [K_s \Vert ID_A\right]\right] KDC→A:EKa[Ks∥IDB∥N1∥EKb[Ks∥IDA]]
K s K_s Ks为会话秘钥, N 1 N_1 N1表示当次申请,用 K a K_a Ka加密保证安全性;
K b K_b Kb加密转发给 B B B的内容,该内容只能由 B B B和 A S AS AS还原。 -
A → B : E K b [ K s ∥ I D A ] A \to B: E_{K_b}[K_s \Vert ID_A ] A→B:EKb[Ks∥IDA]
A A A将 K D C KDC KDC返回的消息用 K a K_a Ka解锁。A转发 K D C KDC KDC给 B B B的内容为 E K b [ K s ∥ I D A ] E_{K_b}[K_s \Vert ID_A ] EKb[Ks∥IDA]。 -
B → A : E K s [ N 2 ] B \to A: E_{K_s}[N_2] B→A:EKs[N2]
B B B用 K b K_b Kb解出 K s K_s Ks,生成一个挑战值 N 2 N_2 N2并用 K s K_s Ks加密,发给 A A A。 -
A → B : E K s [ f ( N 2 ) ] A \to B: E_{K_s}[f(N_2)] A→B:EKs[f(N2)]
A A A还原 N 2 N_2 N2后,根据事先的约定 f ( x ) f(x) f(x),比如 f ( x ) = x − 1 f(x)=x-1 f(x)=x−1,计算 f ( N 2 ) f(N_2) f(N2),使用 K s K_s Ks加密后,回应 B B B的挑战,完成认证,随后 A A A和 B B B使用 K s K_s Ks进行加密通讯。
漏洞:
假定攻击方
C
C
C掌握了
A
A
A和
B
B
B之间通信的一个老的会话。
C
C
C可以在第3步冒充
A
A
A利用老的会话欺骗
B
B
B。
除非
B
B
B记住所有以前使用的与
A
A
A通信的会话密钥,否则
B
B
B无法判断这是一个重放攻击。
解决方法:
加入时间戳。
3.3 Kerberos认证协议
每个用户或应用服务器与
K
e
r
b
e
r
o
s
Kerberos
Kerberos分享一个对称密钥。
K
e
r
b
e
r
o
s
Kerberos
Kerberos由两个部分组成:
认证服务器AS (Authentication Server)
票据授予服务器TGS (Ticket Granting Server)
。
允许一个用户通过交换加密消息,在整个网络上与另一个用户或应用服务器互相证明身份, K e r b e r o s Kerberos Kerberos给通讯双方提供对称密钥。
AS
负责签发访问TGS
服务器的票据,TGS
负责签发访问其它应用服务器的票据。
过程:
-
C
向AS
发送 I D C ∥ I D t g s ∥ T S 1 ID_C\Vert ID_{tgs}\Vert TS_1 IDC∥IDtgs∥TS1C
为client
,向AS
请求访问TGS
,TS_1
为时间戳。 -
AS
向C
返回数据(即为票据)。
K c , t g s K_{c, tgs} Kc,tgs由AS
产生,用于在TGS
和C
之间安全交换信息。(TGS
和C
之间的密钥)
6 的作用为防止重放攻击。
4. 基于公开密钥的身份认证协议
方式一:实体A需要认证实体B,A发送挑战给B,B用自己的私钥对挑战加密,称为签名;B将签名信息发送给A,A使用B的公钥来解密签名消息,称为验证签名,以此来确定B是否具有合法身份。
方式二:实体A将挑战因子用实体B的公钥加密后发送给B,B收到后是用自己的私钥解密还原出挑战因子,并将挑战因子明文发还给A,A可以根据挑战因子内容的真伪来核实B的身份。
N e e d h a m − S c h r o e d e r Needham-Schroeder Needham−Schroeder 公钥认证
①
A
→
B
:
E
K
U
b
[
I
D
a
∥
R
a
]
A \to B:E_{KUb}[ID_a\Vert R_a]
A→B:EKUb[IDa∥Ra]
A使用B的公钥加密A的标识
I
D
a
{ID_a}
IDa和挑战
R
a
{R_a}
Ra,确保只有B才能使用私钥解密。
②
B
→
A
:
E
K
U
a
[
R
a
∥
R
b
]
B \to A:E_{KUa}[R_a\Vert R_b]
B→A:EKUa[Ra∥Rb]
B使用A的公钥加密A的挑战
R
a
{R_a}
Ra和B的挑战
R
b
{R_b}
Rb,发送给A,确保只有A才能使用其私钥解密。
③
A
→
B
:
E
K
U
b
[
R
b
]
A \to B:E_{KUb}[R_b]
A→B:EKUb[Rb]
A还原出
R
b
R_b
Rb后,再使用B的公钥加密
R
b
{R_b}
Rb,作为验证应答信息发送给B。
基于 C A CA CA数字证书的认证协议
数字证书是一个经过第三方机构(CA认证中心,Certificate Authority
)签名的包含拥有者信息及公开密钥的文件。