《安全等级模型深度解读:从基础到实践》
第3章 TCSEC的C2级深度解读

3. TCSEC的C2级深度解读:自主访问控制、审计、身份认证、客体复用保护

TCSEC(Trusted Computer System Evaluation Criteria) 的 C2级 是“受控访问保护”的起点,也是现代操作系统安全的基础。它要求系统实现 自主访问控制(DAC)、审计(Audit)、身份认证(Identification & Authentication) 和 客体复用保护(Object Reuse) 四大核心机制。下面我们逐一深度解读。

1. 自主访问控制(DAC)

核心思想: 客体的所有者(Owner)可以自主决定谁可以访问该客体(文件、目录、设备等),以及以何种权限(读、写、执行)访问。

C2级要求:

  • 系统必须支持 用户-客体 的访问控制矩阵。
  • 支持 访问控制列表(ACL) 或等效机制。
  • 能够控制 单个用户 或 用户组 的访问权限。
  • 防止未授权的 传播(如:防止低权限用户将文件共享给更高权限用户)。
自主访问控制(DAC)模型 用户A(所有者) 用户B(组员) 用户C(其他) 文件:report.pdf 所有者:用户A 读/写/执行(完全控制) 读/执行(组权限) 无权限(被拒绝) ACL 用户A: RWX 用户B: R-X 用户C: ---

▲ 图示:DAC模型中,文件所有者(用户A)通过ACL自主设置其他用户的访问权限

2. 审计(Audit)

核心思想: 系统必须能够记录与安全相关的事件,以便事后追踪和审查。

C2级要求:

  • 必须能够记录 谁(用户身份)在 什么时间 对 哪个客体 执行了 什么操作。
  • 审计日志必须 受保护,只有授权管理员才能读取或修改。
  • 系统必须提供 审计工具 用于分析日志。
  • 必须记录的事件包括:登录/登出、文件访问、权限变更、创建/删除客体等。
审计(Audit)流程 用户操作 系统内核 审计子系统 操作请求 审计事件 审计日志 审计管理员 审计日志条目示例 [2025-03-15 10:23:45] 用户: Alice 操作: 读取文件 /data/report.pdf 结果: 成功 | 进程ID: 2345 [2025-03-15 10:24:10] 用户: Bob 操作: 修改文件 /etc/passwd (失败 - 权限不足)

▲ 图示:审计子系统记录所有安全相关事件,并存储到受保护的审计日志中

3. 身份认证(Identification & Authentication)

核心思想: 每个用户必须拥有 唯一标识,并且在访问系统前必须 证明自己的身份。

C2级要求:

  • 系统必须为每个用户分配 唯一的用户ID(UID)。
  • 用户必须通过 密码 或其他机制(如令牌)进行身份验证。
  • 身份认证信息(如密码)必须 加密存储(如使用哈希算法)。
  • 系统必须能够 追踪 所有用户的操作到具体的用户身份。
身份认证(I&A)流程 用户 登录界面 认证模块 输入凭证 验证 密码数据库 认证结果 密码存储 SHA256哈希

▲ 图示:用户通过登录界面提交凭证,认证模块验证后返回结果,密码以哈希形式存储

4. 客体复用保护(Object Reuse)

核心思想: 当一个客体(如内存块、磁盘扇区、文件句柄)被释放并重新分配给另一个用户或进程时,系统必须 清除所有残留数据,防止信息泄露。

C2级要求:

  • 当客体被释放时,系统必须 清空 其中的所有数据(如写零或随机数)。
  • 适用于 内存、磁盘、寄存器、缓存 等所有可复用的存储介质。
  • 新用户/进程在获取客体时,不能看到任何 前一个用户的数据。
  • 典型的实现方式:在分配前执行 清零操作 或使用 安全擦除 算法。
客体复用保护(Object Reuse) 阶段1:用户A使用 内存块包含敏感数据 (密码、密钥等) 释放 阶段2:清零操作 系统自动写入零 或随机数覆盖 分配 阶段3:用户B使用 看到的是清零 后的数据 内存块内容变化 0x4D 0x79 0x50 0x61 (用户A的密码数据) 0x00 0x00 0x00 0x00 (清零后) 0x00 0x00 0x00 0x00 (用户B看到)

▲ 图示:客体复用保护流程——用户A释放内存后,系统清零,用户B获取时无法看到残留数据

C2级四大机制总结

机制 核心目标 实现方式 典型示例
自主访问控制 所有者控制访问权限 ACL、权限位 Linux chmod / chown
审计 记录安全事件 审计日志、syslog Windows 安全日志
身份认证 唯一标识与验证 密码、令牌、生物识别 SSH 密钥认证
客体复用保护 防止残留数据泄露 清零、安全擦除 内存清零、磁盘擦除

实践代码示例(Linux C2级安全配置)

# 1. 自主访问控制 - 设置文件ACL
setfacl -m u:bob:rw /data/report.pdf   # 赋予bob读写权限
getfacl /data/report.pdf               # 查看ACL

# 2. 审计配置 - 使用auditd
auditctl -w /etc/passwd -p wa -k passwd_change   # 监控passwd文件
ausearch -k passwd_change                        # 查询审计日志

# 3. 身份认证 - 强制密码策略
chage -M 90 alice          # 设置密码有效期90天
passwd -l bob              # 锁定用户账户

# 4. 客体复用保护 - 安全删除文件
shred -vfz -n 3 secret.txt   # 使用随机数覆盖3次后清零
  

💡 核心要点: C2级是TCSEC中第一个真正意义上的“安全级”,它要求系统具备 细粒度的访问控制、完整的审计追踪、可靠的身份认证 以及 严格的资源清理 机制。这四个方面共同构成了现代操作系统安全的基础。

专注课程资料整理