网络与系统安全笔记------身份认证技术
信息安全系统基本结构
一个基本的信息安全系统至少应包括身份认证、访问控制和审计功能。其中身份认证是最基本的安全服务,访问控制和审计服务的实现都要依赖于身份认证系统所识别的用户身份。
身份认证
身份认证(Authentication)是证实实体(客户、代理、进程、设备等)与其所声称的身份是否相符的过程,即实体真实性证明。
身份认证可以对抗假冒攻击和重放攻击的威胁。
身份认证系统通常由认证服务器、认证系统客户端和认证设备组成。
分类
根据采用的安全因素的性质不同:
- 基于秘密知识的身份认证
- 基于物品的身份认证
- 基于生物特征的身份认证
根据使用的安全因素数量不同:
- 单因素身份认证
- 多因素身份认证
根据通信方不同:
单向认证:只认证服务器端
双向认证:服务器端和客户端都要认证
根据使用的密码体制不同:
基于对称密码的认证:Kerberos认证协议
基于公钥密码的认证:X.509认证协议
遭受的攻击形式
- 窃听攻击
- 重放攻击
- 伪造攻击/假冒攻击
- 口令猜测攻击
- 中间人攻击
常见的认证方式
基于口令
使用二元组信息来表示某用户的身份:
<用户账号(用户 ID),口令(Password)>
窃听攻击
可以使用hash函数对口令进行加密。
但是无法避免重放攻击与口令的间接泄露。
由于hash函数可以进行反查,口令可能间接泄露。
间接泄露
在hash函数的基础上加入盐salt(随机序列),并且使用慢hash函数,可以防止口令间接泄露。
但是无法避免重放攻击。
重放攻击
验证者和声称者共有一个非重复值消息。
静态口令: 用户提交给系统的验证数据是固定不变的,由用户自己设置或者系统给定的一串静态数据作为口令。
一次性口令: 也称动态口令,在认证过程中加入不确定因素,使每次
认证的口令都不相同,提高认证过程的安全性。
根据不确定因子的不同,形成了不同的一次性口令认证技术:
口令序列认证
基于哈希链的认证,是基于MD4或MD5生成的单向的前后相关的序列。
服务器系统内始终只记录1个口令,初始时记录的是第N个口令。用户用第N-1个口令登录时,系统用单向哈希算法算出第N个口令,与自己保存的第N个口令匹配,以判断用户的合法性。
- 服务器每次保存的口令值为n+1次hash的结果,客户段每次传输的口令为n次hash的结果,服务端只要计算一次就可以完成验证。
- 每次登录后,服务器都进行口令的更新。
- 客户端每次登录后,下一次需要hash计算的次数就会减少。
- 该实现方便,但是其安全性依赖于单向的hash函数。
- 由于N是有限的,在登录N次之后,必须要重新初始化口令序列。
挑战应答认证
由认证服务器产生的随机数字序列(挑战值)作为NRV。
用户需要持有相应的挑战/应答令牌,令牌内置种子密钥和加密算法。
基于挑战/握手认证协议(CHAP)
- 用户向认证方发出认证请求
- 认证方根据内置算法计算出一个挑战值并回传
- 用户将接收到的挑战值输入挑战/应答令牌中
- 令牌利用内置的种子密钥和加密算法计算出相应的应答值
- 用户将产生的应答值并上送至认证方
- 认证方根据该用户存储的种子密钥和加密算法计算出相应的应答值
- 二者比对,进行认证
基于时间同步认证
把时间作为NRV,同步是指用户口令设备和认证服务器所产生的口令在时间上必须同步。时间是时间窗口,一般为30秒。
- 用户与系统约定相同的口令生成算法
- 用户需要访问系统时,用户端根据当前时间T和用户与系统的共享密钥K使用口令生成算法自动生成一次性动态口令,并传送给认证服务器。
- 服务器基于当前时间使用同样的算法和参数计算出所期望的输出值,如果该值与用户所生成的口令相匹配,则认证通过。
操作简单,单向数据传输,用户端需要严格的时间同步电路。
基于事件同步认证
事件同步机制又名计数器同步机制,基于事件同步的认证技术是把变动的数字序列(事件序列)作为NRV。
- 用户与系统约定相同的口令生成算法。
- 用户需要访问系统时,用户端根据当前数字序列中的C和用户与系统的共享密钥K使用口令生成算法自动生成一次性动态口令,并传送给认证服务器。
- 服务器基于同样的数字序列中的C、密钥和算法计算出所期望的输出值,如果该值与用户所生成的口令相匹配,则认证通过。
基于智能卡
是一种双因素的认证方式
IC卡:卡有唯一ID保证卡的真实性
PIN:个人身份识别码
基于生物特征
生物特征认证以人体具有的唯一的生理特征和(或)行为特征为依据,利用计算机图像处理和模式识别技术来实现身份认证。
生物特征认证一般都要经过图像采集、特征提取和特征匹配三个过程。
身份认证协议
Kerberos认证协议
- 在分布式的C/S体系机构中采用集中的认证服务器(authentication server,AS)实现用户到应用服务器和应用服务器到用户的认证服务。
- AS知道所有用户的口令并将它们存储在一个中央数据库中。
- AS与每一个应用服务器共有一个唯一的保密密钥。这些密钥已经用物理方式或更安全的手段分发了。
- Kerberos采用对称加密体制。
Kerberos模型
组成:
- 客户机
- 服务器
- 认证服务器(AS)
- 票据许可服务器(TGS)
- 数据库:保存所有客户的口令以及AS与应用服务器共享的秘密密钥。
- 票据(ticket):使用对称密钥加密的数据,用于客户秘密地向服务器发送自己的身份标识。
安全性问题
口令猜测攻击问题: 用户密钥Kc是采用Hash函数对用户口令进行单向运算后得到的,攻击者可以大量地向AS请求获取访问TGS的票据,通过计算和密钥分析来进行口令猜测。
时钟同步攻击问题: 由于变化的和不可预见的网络延迟的本性,不能期望分布式时钟保持精确的同步。
密钥管理问题: 使用对称密码体制作为协议的基础,带来了密钥交换、密钥存储以及密钥管理的困难。
X.509认证协议
- X.509定义了公钥数字证书、证书链、证书撤销列表等