Day37-05|18.2.1 状态机模型:用状态、转移和安全不变量描述系统安全
Day37-05|18.2.1 状态机模型:用状态、转移和安全不变量描述系统安全
对应教材:第 18 章 安全架构设计理论与实践——18.2.1 状态机模型
学习定位:理解状态机安全模型的基本概念、形式化表示和适用场景,掌握状态、主体、对象、操作、转移条件和安全不变量之间的关系,并能够将认证、授权、会话、配置变更和故障恢复问题转换为状态机进行分析。
一、为什么需要安全模型
安全架构中的“允许访问”“认证成功”“权限提升”“会话失效”“配置发布”等概念,如果只用自然语言描述,容易出现歧义。不同人员可能对“已认证”“有权限”“切换完成”和“安全状态”有不同理解,也很难验证某种操作是否会把系统带入危险状态。
安全模型提供了一种更严格的表达方式:把系统当前情况表示为状态,把用户、设备或服务执行的动作表示为事件或转移,再定义哪些状态是安全的、哪些转移被允许、哪些转移必须经过条件检查。状态机模型就是其中最基础、最直观的一类模型。
状态机的核心思路是:
初始状态 + 合法事件 + 转移条件 → 新状态
如果每次转移都满足安全规则,并且安全状态经过合法转移仍然保持安全,就可以在一定范围内说明系统不会因正常操作直接进入不允许状态。它特别适合描述认证过程、访问控制、会话生命周期、设备接入、审批发布和故障处理。
二、状态机模型的基本元素
2.1 状态
状态描述系统或对象在某一时刻所处的安全条件。例如,一个用户可以处于未注册、已注册、待认证、已认证、锁定、禁用或注销状态;一个网络设备可以处于初始化、在线、降级、隔离、维护或故障状态;一条配置可以处于草稿、审核中、已批准、已发布、回滚和归档状态。
状态必须能够区分安全规则。例如,“已登录”过于粗略,还应区分认证强度、设备可信状态、会话有效期和访问范围,否则无法判断某个高风险操作是否允许。
2.2 事件或输入
事件是触发状态变化的动作或外部条件,例如提交密码、通过多因素认证、访问资源、权限审批、令牌过期、检测到异常、管理员发布策略、链路中断和人工恢复。
事件可以由用户、设备、服务、定时任务或安全平台触发。架构设计中应识别事件来源并验证其真实性,避免攻击者伪造事件直接推动对象进入高权限状态。
2.3 转移
转移描述一个状态如何在事件作用下变成另一个状态。转移通常包括前置条件、执行动作和后置条件。例如,用户从“待认证”转为“已认证”,前提是密码、第二因素、设备状态和风险策略均满足;动作是创建带范围和期限的会话;后置条件是写入审计日志。
2.4 主体与对象
安全状态机往往同时描述主体和对象。主体是发起操作的用户、进程、服务、设备或管理员;对象是被访问的数据、接口、配置、设备或资源。访问控制转移通常需要检查主体身份、主体状态、对象分类、操作类型和上下文条件。
2.5 安全不变量
安全不变量是系统在所有合法状态和合法转移中都必须保持的规则。例如:
- 未认证主体不能读取敏感数据。
- 已锁定账号不能创建新的高权限会话。
- 生产配置只能由经过审批的发布流程改变。
- 隔离状态的终端不能访问生产网络。
- 已吊销证书不能建立新的可信连接。
- 备份恢复过程中未经校验的数据不能直接覆盖生产数据。
不变量越明确,越容易进行设计评审、测试和审计。
三、状态机的形式化表示
一个有限状态机可以表示为五元组:
M = (S, Σ, δ, s0, F)
其中:
- S 表示有限状态集合;
- Σ 表示事件或输入集合;
- δ 表示状态转移函数;
- s0 表示初始状态;
- F 表示终止状态或满足某条件的状态集合。
在安全模型中,通常还需要加入主体、对象、权限、环境和安全属性,因此实际系统往往是扩展状态机。对考试而言,重点不是复杂数学推导,而是理解五个核心问题:系统从什么状态开始,哪些事件可以发生,每个事件在什么条件下允许,转移后产生什么结果,哪些状态绝不能进入。
四、认证状态机
4.1 基本认证流程
一个典型用户认证状态机可以表示为:
未注册 → 已注册 → 待认证 → 密码校验通过 → 多因素校验通过 → 已认证
↘ 失败次数超限 → 锁定
已认证 → 会话超时 → 待认证
已认证 → 主动退出 → 已注销
这里的“密码校验通过”不能直接等同于“拥有所有权限”。认证只证明主体身份,授权还要根据角色、资源、操作和上下文判断。高风险动作可能要求从“已认证”转为“增强认证”状态,再允许导出、转账或修改配置。
4.2 失败与锁定
认证失败不仅是一个返回错误,还可能改变状态和风险计数。系统需要设置失败次数、时间窗口、验证码、账号锁定、来源限制和告警。锁定状态要有自动解锁、人工复核或身份恢复流程,防止攻击者通过反复尝试锁死合法用户。
4.3 会话生命周期
会话应有创建、刷新、过期、撤销和销毁状态。令牌刷新不能无限延长会话,敏感操作后可能要求重新认证;账号被禁用、设备失陷或风险等级上升时,应能够主动撤销现有会话。
五、访问控制状态机
5.1 访问请求状态
访问请求可以经历:创建、身份确认、策略计算、允许、执行、记录、完成或拒绝。任何一个状态都不应被简单跳过。尤其是权限变更和高风险操作,需要保留策略计算结果和审计证据。
访问状态可以抽象为:
请求到达 → 识别主体 → 验证设备与上下文 → 判断资源与操作 → 允许/拒绝 → 执行与审计 → 会话结束
5.2 动态上下文
在零信任或风险自适应访问中,状态不仅取决于账号,还取决于设备健康、地点、时间、网络、行为和资源敏感度。用户上午从受管设备访问普通文档可能被允许,下午从异常设备导出客户数据则应触发增强认证或拒绝。
状态机可以把风险等级作为状态的一部分:可信、关注、可疑、隔离。风险变化时,系统可以降低权限、缩短会话、要求重新认证或隔离终端。
5.3 权限提升状态
权限提升应有明确的申请、审批、授权、使用和回收状态。临时管理员权限不能永久写入账号,应设置有效期、操作范围和审批人。高风险权限使用结束后立即回收,并核对操作日志和配置差异。
六、配置与变更状态机
安全配置的生命周期也可以用状态机表示:
草稿 → 提交审核 → 审核通过 → 灰度发布 → 全量发布 → 观察稳定 → 归档
↘ 审核拒绝
灰度发布或全量发布发生异常时:
发布中 → 暂停 → 回滚 → 验证恢复 → 重新提交
这种模型可以防止管理员直接在生产设备上修改配置而没有审批、备份和回退。状态转移的每一步都应有操作者、时间、版本、原因和结果。
对于安全策略,发布前应检查规则冲突、影响范围、设备能力和回滚方案;发布后应通过业务探针、日志和流量指标验证。若控制器或配置平台故障,系统应处于明确的安全状态,而不是出现半发布。
七、设备接入与隔离状态机
7.1 终端接入
终端可以依次处于未发现、发现、待认证、认证通过、合规检查、已授权、受限、隔离和注销状态。只有身份、设备证书、补丁、杀毒、配置和网络位置满足要求,才进入正式业务网络。
7.2 异常与隔离
当终端检测到恶意软件、越权行为、异常流量或安全基线不合格时,状态从已授权转为受限或隔离。隔离网络应允许更新、取证和修复,但不能继续访问生产资源。修复完成后,需要重新评估,而不是由用户手动绕过隔离。
7.3 物联网设备
物联网设备的状态还应包括首次注册、密钥发放、固件验证、在线、休眠、异常、退役和密钥吊销。设备退役后,证书、账号、路由和平台记录必须撤销,防止旧设备凭据被重新利用。
八、状态机与安全验证
8.1 可达性分析
要检查从初始状态出发,攻击者能否通过一系列合法或非法事件到达高风险状态。例如,未认证用户是否可以通过修改参数进入已授权状态;低权限服务是否可以通过接口调用进入管理员状态;被隔离终端是否仍能通过备用地址访问生产数据库。
8.2 不变量验证
对每个关键不变量设计测试:未认证不能读取敏感数据;过期令牌不能访问;被吊销证书不能连接;审批未完成的配置不能发布;回滚后业务和策略恢复一致。
8.3 负面路径测试
安全测试不能只验证正常流程,也要验证失败路径、重放、并发、超时、重复提交、消息乱序、节点故障和网络分区。状态机模型能够帮助测试人员覆盖正常和异常转移。
8.4 状态与日志一致性
系统显示“已发布”不等于所有设备已生效,控制器显示“已隔离”也不等于终端无法访问资源。要设计状态对账、设备确认、超时、重试和补偿机制,并记录期望状态、实际状态和差异。
九、状态机与故障安全
安全状态机不仅描述攻击,也描述故障。身份服务不可用、控制器失联、策略数据库异常、证书服务故障和日志平台不可用时,系统应进入预先定义的状态。
常见故障模式包括:
- 故障关闭:无法验证就拒绝访问,适合高敏感管理操作。
- 故障开放:保留有限业务访问,适合某些对连续性要求极高的场景,但必须有范围和时间限制。
- 受控降级:只允许已有会话、只允许读操作、只允许本地控制或只开放白名单。
- 应急状态:由双人审批和临时凭据进入,所有操作加强审计。
不能笼统地说“安全系统故障时应拒绝全部访问”,因为生产安全、医疗、交通等业务可能需要保持有限运行;也不能笼统地说“为了可用性继续放行”,因为管理权限和敏感数据可能因此暴露。状态机能够帮助架构师逐类定义故障状态和转移条件。
十、案例分析:支付系统高风险操作状态机
某支付平台要求普通查询可以使用账号密码和设备认证,转账、批量导出和修改收款信息必须进行多因素认证和风险校验;发现异常设备时,系统要限制操作并通知安全团队。
第一,定义主体和状态。用户有未认证、普通认证、增强认证、风险关注、锁定和注销状态;设备有可信、待修复、隔离和未知状态;交易有创建、待校验、待确认、执行、成功、失败和冲正状态。
第二,定义转移。普通查询要求用户处于普通认证且设备可信;转账请求触发风险评估,风险低时进入增强认证,风险高时进入人工复核或拒绝;多因素验证成功后进入待确认,用户再次确认后才能执行。
第三,定义不变量。未完成增强认证不能执行转账;高风险设备不能导出批量客户数据;交易执行后不能通过普通接口修改金额;失败或超时的交易不能重复扣款;每次状态转移必须记录主体、设备、时间、风险结果和操作结果。
第四,设计故障模式。风险服务短时不可用时,普通查询可以继续,高风险转账暂停或进入人工复核;消息重复时通过幂等号保证交易不重复;数据库故障恢复后,交易状态需要与账务和消息系统对账。
第五,设计监控。监控异常设备、失败认证、状态停留过久、重复请求、批量导出和人工复核积压,并在达到阈值时触发限流、锁定或人工响应。
十一、常见失分点
- 只背有限状态机五元组,不会联系安全场景。
- 只画正常流程,不写失败、超时、撤销、隔离和恢复。
- 认证和授权混为一谈,忽略高风险操作的增强认证。
- 不定义安全不变量,无法验证状态转移是否安全。
- 忽略分布式系统中的状态对账、重复消息和网络分区。
- 故障时简单选择全部拒绝或全部放行,不考虑业务分级和受控降级。
十二、今日必背清单
- 状态机模型用状态、事件、转移、主体、对象和安全不变量描述系统安全。
- 状态必须能够区分安全规则,不能使用过于粗粒度的“已登录”或“在线”。
- 认证证明身份,授权决定是否允许对具体资源执行具体操作。
- 安全不变量是所有合法状态转移都必须保持的安全规则。
- 状态机适合描述认证、会话、权限、配置发布、设备接入、隔离和故障恢复。
- 安全测试要覆盖正常路径、负面路径、异常、超时、重放和故障。
- 分布式系统要处理期望状态与实际状态、重复消息和网络分区。
- 故障模式应按业务风险选择故障关闭、故障开放或受控降级。
十三、课后练习
练习一:单项选择
在安全状态机中,最重要的安全不变量作用是( )。
A. 描述页面显示效果
B. 保证合法状态转移不会破坏关键安全规则
C. 记录设备采购价格
D. 替代所有日志
练习二:判断题
用户认证成功后,就可以直接访问所有系统资源,不需要再进行授权判断。( )
练习三:简答题
请举例说明“状态对账”为什么在分布式安全控制中重要。
练习四:案例题
某企业采用自动化平台下发网络隔离策略。平台显示终端已隔离,但终端仍能访问生产数据库。请用状态机思想分析可能原因,并给出改进措施。
十四、参考答案
练习一答案
答案:B。
解析:安全不变量描述系统在合法状态转移中必须始终保持的安全规则,例如未认证主体不能读取敏感数据。它是模型验证和测试的重要依据。
练习二答案
答案:错误。
解析:认证只证明主体身份,授权还要根据资源、操作、角色、上下文和风险判断是否允许访问。即使身份正确,也可能无权访问某类数据或执行高风险操作。
练习三答案
参考答案:分布式控制中,策略平台记录的是期望状态,设备或实际执行组件可能因为网络中断、资源不足、版本不兼容或下发失败而处于旧状态。若没有状态对账,平台会误以为控制已生效,造成安全假象。应记录期望状态、实际状态、确认时间和差异,设置超时、重试、补偿和人工处置,并通过实际流量和业务探针验证。
练习四答案
可能原因包括:隔离策略只写入控制器而没有成功下发到交换机或安全设备;设备资源不足或规则优先级被其他允许规则覆盖;终端使用备用地址、IPv6 或旁路链路绕过了隔离;状态平台缓存未刷新;数据库访问经过未纳入策略的代理或隧道。
改进措施包括:将终端隔离流程拆为请求、审批、策略生成、设备下发、设备确认、流量验证和完成状态;逐设备读取实际规则和版本,不能只依赖控制器状态;用探针验证终端到生产数据库的真实访问结果;明确隔离不变量,覆盖 IPv4、IPv6、无线、有线和旁路路径;设置下发失败、超时和规则冲突告警;隔离完成后记录审计证据,恢复时重新校验终端状态和策略。
十五、今日复盘
请选择一个熟悉的安全流程,例如登录、远程运维、发布防火墙策略或终端隔离,画出至少六个状态,并为每条状态转移写出触发事件、前置条件、结果和审计记录。最后补充两个“绝不能发生”的安全不变量。完成这个练习,就能把状态机从抽象概念转化为架构设计工具。
下一篇进入 18.2.2「Bell-LaPadula 模型」,学习面向机密性的强制访问控制模型。