Ch8-01 安全设计基础:主体/客体、传递信任、开放与封闭系统
所属域:Domain 3 Security Architecture and Engineering(安全架构与工程) 对应原书:Chapter 8 Principles of Security Models, Design, and Capabilities — Secure Design Principles(前半)
① 一句话秒懂
安全设计的第一步,是先分清”谁”在访问”什么”(主体与客体),并高度警惕”传递信任(transitive trust)”带来的越权风险。
② 生活类比
把系统想象成一家公司。员工(主体)要查阅档案柜(客体),前台只认工牌。 但如果你让快递小哥(VPN / 代理 / 匿名服务)代取,而快递小哥又能进保密室,那你其实间接把保密室的钥匙交了出去——这就是传递信任。
③ 核心概念(大白话 + 原书定义)
主体(Subject)与客体(Object)
- 主体:主动发起访问请求的实体——可以是用户,也可以是进程、程序、计算机、组织。
- 客体:被访问的被动实体——常见是文件、打印机、数据,但也可以是用户、进程本身。
- 关键:同一个实体在一次请求里是客体,在另一次里可能变成主体。例如进程 A 向进程 B 要数据(B 是客体),B 又向进程 C 要数据(B 成了主体)。
原书定义:”The subject is the active entity that requests access to a resource… The object is the passive entity that the subject wants to access.”
传递信任(Transitive Trust) 若 A 信任 B、B 信任 C,则 A 经 B 间接获得 C 的信任。数学上的传递性:a=b 且 b=c ⇒ a=c。在安全上这是严重隐患,可绕过 A 与 C 之间原本存在的限制。
封闭系统 vs 开放系统(Closed vs Open Systems)
- 封闭系统:只与同厂商少量系统协作,标准专有、不公开。难集成,但通用攻击打不穿,需定制 exploit,攻击者需深度了解目标。
- 开放系统:遵循行业标准 / 开放 API,易集成(Windows + Linux + Mac 轻松组网)。但攻击面可预测、目标众多、被研究得最透,更依赖安全编码与纵深防御。
开源 vs 闭源(Open Source vs Closed Source)
- 开源:源码与内部逻辑对公众开放,靠公开审查改进。
- 闭源:源码隐藏,更依赖厂商自行修订;有时经泄露或反编译暴露(前者违法,后者属合规逆向工程)。
- ⚠️ 注意:开源/闭源与开放/封闭系统是两组独立概念。一个闭源程序既可以是开放系统也可以是封闭系统,开源同理。考试常把”闭源”和”封闭系统”混为一谈设陷阱。
④ 真实案例
- 绕过网络限制:公司屏蔽 Facebook/YouTube 提升效率,员工用 VPN / 代理 / 匿名服务绕过——A(员工)→ B(VPN)→ C(被封站点)。这是传递信任被滥用的典型。
- 供应链攻击(如 SolarWinds):攻击者先拿下受信任的供应商系统 B,再利用客户 A 对 B 的信任,把恶意代码当作合法更新推给 A,进而触达 A 信任的其他客户 C。传递信任放大了破坏范围。
⑤ 考试怎么考
- 给情境问”谁是主体 / 客体”——记住角色随每次请求而变。
- 传递信任的定义与危害,常与”绕过访问控制 / 横向移动”结合出题。
- 开放 vs 封闭系统、开源 vs 闭源——四者区分是高频考点,考题常把”闭源”和”封闭系统”当成同义词。
- “封闭系统更安全,因为攻击面小、需定制漏洞利用”是常考结论。
⑥ 记忆口诀
- 主体动、客体静,一次请求定身份;B 既当客体又当主,传递信任要当心。
- 开放易集难防守,封闭难连却难攻;开源闭源看代码,别和开放封闭混。
⑦ 自测
- 在”进程 A 请求 B 的数据、B 再请求 C 的数据”中,进程 B 分别扮演什么角色?
- 什么是传递信任?举一个绕过企业网络访问限制的例子。
- 开源(open-source)系统和封闭系统(closed system)是一回事吗?为什么?
- 封闭系统在安全上的”双刃”体现在哪里?(既难被攻击,也难被集成)