跳转至

第 3 章:身份认证与访问控制 —— "你是谁"和"你能做什么"

场景: 你回到家,先用钥匙开门(身份认证),然后进入不同房间——卧室你可以随便进,但父母的保险柜房间你不能进(访问控制)。信息系统的安全同样从这两个问题开始:你是谁?你能做什么?


3.1 身份认证的三类方式

核心比喻:认证就是证明"你是你"

怎么证明你是你?三种方式:

  1. 你知道什么 (密码)—— 像门锁密码
  2. 你有什么 (令牌)—— 像门禁卡
  3. 你是什么 (生物特征)—— 像指纹锁
认证因素 类型 示例 优点 缺点
知识因素 你知道什么 密码、PIN 码、安全问题 简单、零成本 易遗忘、易被猜测
持有因素 你有什么 智能卡、U-Key、手机 不易复制 可能丢失或被盗
固有因素 你是什么 指纹、人脸、虹膜 不会丢失 隐私问题、不可更改

多因素认证(MFA)

双因素认证(2FA)

同时使用两种不同类别的认证因素,安全性大幅提升:

  • 密码 + 短信验证码(知识 + 持有)
  • 指纹 + PIN 码(固有 + 知识)
  • 密码 + U-Key(知识 + 持有)

即使密码泄露,攻击者没有你的手机/U-Key 也无法登录。


3.2 认证协议

基于口令的认证

用户 ──→ 输入用户名+密码 ──→ 服务器
                                  ├── 查数据库验证
                                  ├── ✅ 匹配 → 登录成功
                                  └── ❌ 不匹配 → 拒绝

密码存储安全

绝对不要明文存储密码! 应该存储密码的哈希值(加盐):

存储: 用户名 + salt + hash(password + salt)
验证: 用户输入密码 → 加盐哈希 → 与存储的哈希值比较

"加盐"(Salt)是在密码后附加随机字符串再哈希,防止彩虹表攻击。

Kerberos 协议

Kerberos 是经典的网络认证协议,使用"票据"机制:

客户端 ──→ AS(认证服务器)  : "我是 Alice,请求票据"
AS      ──→ 客户端          : "这是你的 TGT(票据授予票据)"
客户端 ──→ TGS(票据授予服务): "用 TGT 换访问文件服务器的票据"
TGS     ──→ 客户端          : "这是访问文件服务器的票据"
客户端 ──→ 文件服务器        : "这是我的票据,让我访问"
组件 全称 作用
AS Authentication Server 验证用户身份,发放 TGT
TGS Ticket Granting Server 发放访问特定服务的票据
TGT Ticket Granting Ticket 用户身份的临时凭证

3.3 访问控制模型

核心比喻:访问控制就是"不同房间配不同钥匙"

家里每个人有不同的钥匙串:

  • 孩子:只能开自己卧室和客厅
  • 父母:能开所有房间
  • 客人:只能进客厅和客卫

自主访问控制(DAC)

特点 说明
控制权 资源所有者决定谁可以访问
灵活性 高,用户可以自主授权
安全性 较低,权限可能被滥用
典型实现 Linux 文件权限(rwx)、Windows NTFS 权限

强制访问控制(MAC)

特点 说明
控制权 系统根据安全策略强制控制
灵活性 低,用户不能自主授权
安全性 高,防止权限滥用
典型实现 SELinux、AppArmor

基于角色的访问控制(RBAC)

特点 说明
核心思想 权限不直接授予用户,而是授予角色
灵活性 高,便于管理
安全性 较高
典型实现 企业 ERP 系统、云平台 IAM
RBAC 模型:

用户 ──→ 角色 ──→ 权限

Alice ──→ 管理员 ──→ 读写所有文件
Bob   ──→ 编辑   ──→ 读写文章
Carol ──→ 读者   ──→ 只读文章

3.4 常见考试题型

例题 1: 以下属于"你有什么"认证因素的是( )。

A. 密码  B. 指纹  C. 智能卡  D. PIN 码

查看答案

答案:C

智能卡属于持有因素(你有什么)。密码和 PIN 码属于知识因素(你知道什么),指纹属于固有因素(你是什么)。

例题 2: RBAC 访问控制模型中,权限被授予( )。

A. 用户  B. 角色  C. 组  D. 进程

查看答案

答案:B

RBAC(Role-Based Access Control)的核心是将权限授予角色,再将角色分配给用户。这样当用户职责变化时,只需更改其角色,无需逐一修改权限。

例题 3: 以下关于密码存储的说法,正确的是( )。

A. 明文存储便于找回密码  B. 使用 MD5 哈希存储即可  C. 应使用加盐哈希存储  D. 加密存储比哈希存储更安全

查看答案

答案:C

密码应使用加盐哈希存储。明文存储极其危险;MD5 已被破解,不适合安全场景;加密存储意味着可以解密还原,不如哈希(单向不可逆)安全。


要点总结

  • 三类认证因素:知识(密码)、持有(令牌)、固有(生物特征)
  • 多因素认证(MFA)结合两类以上因素,安全性大幅提升
  • 密码存储必须加盐哈希,绝不能明文
  • DAC:所有者自主授权;MAC:系统强制控制;RBAC:基于角色授权
  • Kerberos 使用票据机制实现安全的网络认证

课后练习

  1. 认证设计 :为某网上银行设计登录认证方案,要求至少使用两种认证因素。

  2. 模型对比 :从控制权、灵活性、安全性三个维度对比 DAC、MAC 和 RBAC。

  3. 真题演练 :在 RBAC 模型中,用户通过(  )获得相应的操作权限。


下一章预告: 身份确认了,权限也分配好了。但网络层面的攻击怎么防御?防火墙、IDS/IPS、VPN 如何保护我们的网络?第 4 章见。

继续第 4 章:网络安全 →