name: capability-system
description: “实现基于能力的安全以进行细粒度访问控制和最小权限。”
version: “1.0.0”
tags: [安全, 能力, 访问控制, oopsla]
difficulty: 中级
languages: [rust, capability-calculus, python]
dependencies: [type-checker-generator, linear-type-implementer]
能力系统
基于能力的安全使用不可伪造的令牌(能力)来表示权限。不是检查“你是谁”(ACLs),而是检查“你持有什麼”(能力),实现细粒度的最小权限。
何时使用此技能
- 构建安全操作系统
- 实现沙箱
- 设计最小权限系统
- 分布式对象系统
- 安全浏览器(seL4, Capsicum)
此技能的作用
- 能力令牌: 对资源的不可伪造引用
- 权限委托: 在主体之间转移能力
- 衰减: 减少能力权限
- 撤销: 撤销委托的能力
- 限制: 限制能力传播
关键概念
| 概念 |
描述 |
| 能力 |
授予权限的不可伪造令牌 |
| 衰减 |
减少能力权限 |
| 委托 |
将能力转移给另一个主体 |
| 撤销 |
使能力及其后代无效 |
| 限制 |
限制能力传播 |
| 方面 |
对象的特定接口 |
提示
- 使用不可伪造的令牌(加密或内存安全引用)
- 实现适当的衰减
- 仔细考虑撤销(可能无法跟踪)
- 使用对象能力进行细粒度控制
- 记录能力使用以进行审计
常见用例
- 安全操作系统(seL4, Fuchsia)
- 浏览器沙箱
- 分布式对象系统
- 云访问控制
- IoT设备安全
相关技能
information-flow-analyzer - 跟踪信息流
linear-type-implementer - 线性能力
sandbox-builder - 使用能力进行沙箱化
ownership-type-system - 所有权和能力
规范参考
| 参考 |
重要性 |
| Levy “基于能力的计算机系统” |
经典文本 |
| Miller “能力神话被打破” |
澄清误解 |
| Shapiro 等人 “EROS:一个能力系统” |
实用系统 |
权衡与限制
方法权衡
| 方法 |
优点 |
缺点 |
| 纯能力 |
可组合,无环境权限 |
需要语言支持 |
| 混合(ACL + 能力) |
实用 |
复杂 |
| 加密能力 |
分布式 |
性能 |
何时不使用此技能
- 简单的访问控制需求
- 当ACLs足够时
- 性能关键路径(加密开销)
限制
评估标准
高质量实现应具有:
| 标准 |
要寻找的 |
| 不可伪造性 |
能力不能被伪造 |
| 衰减 |
权限可以减少 |
| 委托 |
能力可以共享 |
| 撤销 |
能力可以被撤销 |
质量指标
✅ 好: 不可伪造,支持衰减和撤销
⚠️ 警告: 可能伪造,无撤销
❌ 差: 无安全保证
研究工具与成果
能力系统:
| 系统 |
要学习的 |
| EROS |
能力操作系统 |
| CapROS |
现代能力操作系统 |
| Fuchsia |
基于能力的 |
研究前沿
1. 分布式能力
实现陷阱
| 陷阱 |
实际后果 |
解决方案 |
| 伪造 |
安全漏洞 |
加密密封 |