身份认证和访问控制
身份认证主要内容
身份认证的概念:用户要向系统证明他就是他所声称的那个人。
- 识别:明确访问者的身份(信息公开)
- 验证:对访问者声称的身份进行确认(信息保密)
身份认证的作用:
- 限制非法用户访问网络资源。
- 安全系统中的第一道关卡,是其他安全机制基础。
- 一旦被攻破,其他安全措施将形同虚设。
8.1 单机状态下的身份认证
验证用户身份的方法:
- 用户知道的东西:如口令、密码等。
- 拥有的东西:如智能卡、通行证、USB Key。
- 用户具有的生物特征:如指纹、脸型、声音、视网膜扫描、DNA等。
- 用户行为特征:如手写签字、打字韵律等。
8.1.1 基于口令的认证方式
对口令的攻击:
- 联机攻击:联机反复尝试口令进行登录
- 脱机攻击:截获口令密文后进行强力攻击
(1) 直接明文存储口令
- 风险大
任何人只要得到存储口令的数据库,就可得到全体人员(包括最高管理员)的口令。 - 多用于权限提升
(2) Hash散列存储口令
- 口令 x 的散列值 F(x) 又叫通行短语(Pass phrase)
- 散列函数为文件、报文或其他数据产生“数字指纹”
认证方法:
- 系统的口令文件中存储每个用户的账号和口令散列值对;
- 用户登录时输入口令 x,系统计算出 F(x);
- 系统将它与口令文件中相应的散列值比对,成功即允许登录。
(3) 加盐的Hash散列存储口令
加盐的作用:避免由于相同的明文口令对应相同的口令散列而造成多个用户的口令同时被破解。
盐(salt):散列口令前与口令相结合的长为 12bit 的随机常数 —— 即使两个用户口令相同,只要salt 值不同,口令散列将不同。
例如:lijie
和 wangfeng
口令都为 password
/etc/shadow 文件中的口令散列为:
lijie:qdUYgW6vvNB.
wangfeng:zs9RZQrI/0aH2
基于口令认证方式的安全性
(1)即使黑客或管理员得到口令文件,由散列值计算出明文口令很难,所以比口令明文的认证安全。
(2)基于口令明文或散列(静态口令)认证是单因素认证,而用户多选择易记忆、易被猜测的口令,同时窃取口令文件后也可进行字典式攻击。
(3)在计算机网络和分布式系统中使用更不安全。
8.1.2 基于智能卡的认证方式
双因素认证方式:所知道的东西(PIN)和所拥有的东西(智能卡)。
- 每个用户的智能卡存储用户秘密信息,身份认证服务器也存放该信息;
- 用户输入PIN,智能卡识别PIN是否正确;
- 若正确则读出智能卡中的秘密信息,并利用它与主机进行认证。
硬件加密的安全性高;即使PIN或智能卡被窃取,用户仍不会被冒充。
8.1.3 基于生物特征的认证方式
图像处理和模式识别:抓图/抽取特征/比较/匹配
- 生物统计学的生物特征
- 计算机强大计算功能
- 网络技术
(1) 生物识别系统捕捉生物特征的样品;
(2) 提取唯一特征数据并转化为数字符号(存储成该人的特征模板);
(3) 登录时人们同生物特征识别系统交互来进行身份认证,以确定匹配与否。
基于生物特征认证方式的安全性
- 特征因人而异和随身携带 —— 他人模仿难
- 识别速度相对慢
使用代价高
使用面窄
不适合在网络环境中使用
在网络上泄露也不好更新
有误报(False Positives)和漏报(False Negatives)
8.2 S/KEY认证协议
8.2.1 一次性口令技术
网络环境下身份认证的困难性:
- 明文口令:易被嗅探,也容易受到字典攻击。
- 口令散列:直接“重放” 就可以假冒合法用户登录,并不需要解密得到口令本身。
不能使用静态口令,而必须使用一次性口令。
一次性口令技术的发展:
- 1980年代首次提出利用散列函数产生一次性口令
- 1991年贝尔通信提出挑战/应答(Challenge /Response)式动态密码身份认证系统S/KEY
- 开发基于 MD5 散列算法的动态密码认证系统
- RSA 实验室提出基于时间同步的动态密码认证系统 RSA SecureID
一次性口令的两个因子:
- 固定因子:用户的口令散列(双方共享)
- 变动因子:产生变动的一次性口令
1)基于时间同步认证技术
2)基于事件同步认证技术
3)挑战/应答方式的变动因子:由认证服务器产生的随机序列 Challenge,不需要同步。
8.2.2 最初的S/KEY认证协议
最初的 S/KEY 的安全性分析:
- 合法用户容易通过身份认证,而攻击者即使截获一次性口令,也得不到用户口令散列。
- 服务器对同一用户每次发出的挑战中 seed 值相同。
- 而 seq 值递减,使攻击者不知用户口令散列时,不能预测出下一次的一次性口令,因而不能重放成功。
S/KEY 认证协议的优点:
- 并未传送用户口令明文和口令散列。
- 每次的一次性口令不同。
- 根据截获的一次性口令破解出口令散列/明文难。
- 实现原理简单,Hash函数还可用硬件实现。
- 服务器只需存储用户口令散列。
S/KEY 认证协议的缺点:
- 安全性依赖于Hash函数的不可逆性。
- seq 值递减使得挑战使用一定次数后必须初始化。
- 会话内容本身没有保密。
- 循环使用以前的一次性口令。
- 维护一个很大的一次性口令列表很麻烦。
8.2.3 改进的S/KEY认证协议
改进的 S/KEY 的安全性分析:
只有 seed、seq 和一次性口令在网上传播,seed 是不可预测的,而 seq 每次可相同可不同:
- 用户很容易求出正确的一次性口令,采用一次性口令的匹配通过服务器的身份认证;
- 攻击者即使截获一次性口令,也不能破解出用户口令散列;
- 攻击者不能预测下一次一次性口令,也不能重放成功。
S/KEY 协议的应用和安全性:
- Windows 2000之后的 NTLM 认证就使用了这个经过改进的 S/KEY 认证协议。
安全性:
- 能够避免监听和重放,但不能防范拦截和修改数据包、会话劫持等攻击。
- 网络系统的安全仅等同于使用的最弱散列算法的安全强度。
- 没有完整性保护机制,也无法防范内部攻击。
- 不能对服务器的身份进行认证。
8.3 Kerberos认证协议
网络层安全协议 IPSec —— 保证连接的客户端合法
服务器只能对合法用户提供服务 —— Kerberos
- Kerberos 基于可信第三方 KDC,提供不安全分布式环境下的双向用户实时认证。
- 它的认证和数据保密传输使用对称加密 DES,后来也可用其他算法的独立加密模块。
- Windows 2000 之后都默认 Kerberos 为其认证方法。
Kerberos的发展
以 N-S 密钥分配 和 双向鉴别协议 为基础发展起来,并引入时间戳。
- Kerberos v1 - v3 都只在麻省理工学院内部发行
- 1980年末发布的 Kerberos v4 主要是针对 Project Athena
- 1993年发布的 v5 克服了 v4 的局限性和安全问题
Kerberos 实现AAA:认证(Authentication)、授权(Authorization)、审计(Audit)。
认证(Authentication)、授权(Authorization)、审计(Audit)、机密性(confidentiality)、完整性(integrality)、不可否认性、可用性
Kerberos协议的基本思想 :
用户只需输入一次身份验证信息就可凭此信息获得票据(ticket)来访问多个服务,即 SSO(Single Sign On,单点登录)。
用户对应用服务器 V 访问前,必须先从 Kerberos 认证服务器上获取到 V 的票据。
Kerberos 系统应满足四项需求:安全性、可靠性、透明性、可伸缩性。
8.3.1 简单的认证会话
8.3.2 更加安全的认证会话
8.3.3 Kerberos v4认证会话
上述会话仍然存在两个问题:
1)票据许可票据的生存期:如果生存期太短则用户将总被要求输入口令;如果生存期太长则为攻击者提供了大量重放机会。
2)服务器必须向用户证实自己身份,否则假冒的服务器即可捕获用户请求而向用户提供虚假服务。
访问控制与授权主要内容
主要内容:
- 概念原理
- 常用的实现方法
- 访问控制策略
本章重点和复习要点:
- 访问控制常见的实现方法
- 三种主要的访问控制策略;TCSEC中的C级操作系统要求至少具有何种访问控制策略?B级以上操作系统要求具有何种访问控制策略?
- 什么是DAC?它能从根本上防范特洛伊木马的攻击?
- 什么是MAC?它有阻止特洛伊木马的能力吗?
- MAC中实现数据机密性的是哪个安全模型?它必须采用哪种读写规则?实现数据完整性的是哪个安全模型?它必须采用哪种读写规则?
13.1 概念原理
授权(Authorization)和访问控制(Access Control)表示ISO五大服务中的访问控制服务。
访问控制建立在身份认证基础上,通过限制对关键资源的访问,防止非法用户的侵入或因为合法用户的不慎操作而造成的破坏。
访问控制目的:限制主体对客体的访问权限,从而使计算机系统在合法范围内使用。
13.2 常用的实现方法
13.2.1 访问控制矩阵
列表示客体(各种资源),行表示主体(用户),交叉点表示主体对客体的访问权限。
通常文件的Own权限表示可授予(Authorize)或撤消(Revoke)其他用户对该文件访问权限。
13.2.2 访问能力表
实际系统中虽然可能有很多主体与客体,但两者之间的权限关系可能并不多。
为了减轻系统开销与浪费,我们可以从主体(行)出发,表达矩阵某一行的信息,这就是访问能力表(Capabilities)。
只有当主体对某个客体拥有访问能力时,它才能访问这个客体。
但要从访问能力表获得对某一特定客体有特定权限的所有主体就比较困难。
在安全系统中,正是客体需要得到可靠保护,访问控制服务应该能够控制访问某一客体的主体集合,便出现客体为中心的实现方式 —— ACL。