Day37-05|18.2.1 状态机模型:用状态、转移和安全不变量描述系统安全

对应教材:第 18 章 安全架构设计理论与实践——18.2.1 状态机模型
学习定位:理解状态机安全模型的基本概念、形式化表示和适用场景,掌握状态、主体、对象、操作、转移条件和安全不变量之间的关系,并能够将认证、授权、会话、配置变更和故障恢复问题转换为状态机进行分析。

一、为什么需要安全模型

安全架构中的“允许访问”“认证成功”“权限提升”“会话失效”“配置发布”等概念,如果只用自然语言描述,容易出现歧义。不同人员可能对“已认证”“有权限”“切换完成”和“安全状态”有不同理解,也很难验证某种操作是否会把系统带入危险状态。

安全模型提供了一种更严格的表达方式:把系统当前情况表示为状态,把用户、设备或服务执行的动作表示为事件或转移,再定义哪些状态是安全的、哪些转移被允许、哪些转移必须经过条件检查。状态机模型就是其中最基础、最直观的一类模型。

状态机的核心思路是:

初始状态 + 合法事件 + 转移条件 → 新状态

如果每次转移都满足安全规则,并且安全状态经过合法转移仍然保持安全,就可以在一定范围内说明系统不会因正常操作直接进入不允许状态。它特别适合描述认证过程、访问控制、会话生命周期、设备接入、审批发布和故障处理。

二、状态机模型的基本元素

2.1 状态

状态描述系统或对象在某一时刻所处的安全条件。例如,一个用户可以处于未注册、已注册、待认证、已认证、锁定、禁用或注销状态;一个网络设备可以处于初始化、在线、降级、隔离、维护或故障状态;一条配置可以处于草稿、审核中、已批准、已发布、回滚和归档状态。

状态必须能够区分安全规则。例如,“已登录”过于粗略,还应区分认证强度、设备可信状态、会话有效期和访问范围,否则无法判断某个高风险操作是否允许。

2.2 事件或输入

事件是触发状态变化的动作或外部条件,例如提交密码、通过多因素认证、访问资源、权限审批、令牌过期、检测到异常、管理员发布策略、链路中断和人工恢复。

事件可以由用户、设备、服务、定时任务或安全平台触发。架构设计中应识别事件来源并验证其真实性,避免攻击者伪造事件直接推动对象进入高权限状态。

2.3 转移

转移描述一个状态如何在事件作用下变成另一个状态。转移通常包括前置条件、执行动作和后置条件。例如,用户从“待认证”转为“已认证”,前提是密码、第二因素、设备状态和风险策略均满足;动作是创建带范围和期限的会话;后置条件是写入审计日志。

2.4 主体与对象

安全状态机往往同时描述主体和对象。主体是发起操作的用户、进程、服务、设备或管理员;对象是被访问的数据、接口、配置、设备或资源。访问控制转移通常需要检查主体身份、主体状态、对象分类、操作类型和上下文条件。

2.5 安全不变量

安全不变量是系统在所有合法状态和合法转移中都必须保持的规则。例如:

  1. 未认证主体不能读取敏感数据。
  2. 已锁定账号不能创建新的高权限会话。
  3. 生产配置只能由经过审批的发布流程改变。
  4. 隔离状态的终端不能访问生产网络。
  5. 已吊销证书不能建立新的可信连接。
  6. 备份恢复过程中未经校验的数据不能直接覆盖生产数据。

不变量越明确,越容易进行设计评审、测试和审计。

三、状态机的形式化表示

一个有限状态机可以表示为五元组:

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 状态与日志一致性

系统显示“已发布”不等于所有设备已生效,控制器显示“已隔离”也不等于终端无法访问资源。要设计状态对账、设备确认、超时、重试和补偿机制,并记录期望状态、实际状态和差异。

九、状态机与故障安全

安全状态机不仅描述攻击,也描述故障。身份服务不可用、控制器失联、策略数据库异常、证书服务故障和日志平台不可用时,系统应进入预先定义的状态。

常见故障模式包括:

  1. 故障关闭:无法验证就拒绝访问,适合高敏感管理操作。
  2. 故障开放:保留有限业务访问,适合某些对连续性要求极高的场景,但必须有范围和时间限制。
  3. 受控降级:只允许已有会话、只允许读操作、只允许本地控制或只开放白名单。
  4. 应急状态:由双人审批和临时凭据进入,所有操作加强审计。

不能笼统地说“安全系统故障时应拒绝全部访问”,因为生产安全、医疗、交通等业务可能需要保持有限运行;也不能笼统地说“为了可用性继续放行”,因为管理权限和敏感数据可能因此暴露。状态机能够帮助架构师逐类定义故障状态和转移条件。

十、案例分析:支付系统高风险操作状态机

某支付平台要求普通查询可以使用账号密码和设备认证,转账、批量导出和修改收款信息必须进行多因素认证和风险校验;发现异常设备时,系统要限制操作并通知安全团队。

第一,定义主体和状态。用户有未认证、普通认证、增强认证、风险关注、锁定和注销状态;设备有可信、待修复、隔离和未知状态;交易有创建、待校验、待确认、执行、成功、失败和冲正状态。

第二,定义转移。普通查询要求用户处于普通认证且设备可信;转账请求触发风险评估,风险低时进入增强认证,风险高时进入人工复核或拒绝;多因素验证成功后进入待确认,用户再次确认后才能执行。

第三,定义不变量。未完成增强认证不能执行转账;高风险设备不能导出批量客户数据;交易执行后不能通过普通接口修改金额;失败或超时的交易不能重复扣款;每次状态转移必须记录主体、设备、时间、风险结果和操作结果。

第四,设计故障模式。风险服务短时不可用时,普通查询可以继续,高风险转账暂停或进入人工复核;消息重复时通过幂等号保证交易不重复;数据库故障恢复后,交易状态需要与账务和消息系统对账。

第五,设计监控。监控异常设备、失败认证、状态停留过久、重复请求、批量导出和人工复核积压,并在达到阈值时触发限流、锁定或人工响应。

十一、常见失分点

  1. 只背有限状态机五元组,不会联系安全场景。
  2. 只画正常流程,不写失败、超时、撤销、隔离和恢复。
  3. 认证和授权混为一谈,忽略高风险操作的增强认证。
  4. 不定义安全不变量,无法验证状态转移是否安全。
  5. 忽略分布式系统中的状态对账、重复消息和网络分区。
  6. 故障时简单选择全部拒绝或全部放行,不考虑业务分级和受控降级。

十二、今日必背清单

  1. 状态机模型用状态、事件、转移、主体、对象和安全不变量描述系统安全。
  2. 状态必须能够区分安全规则,不能使用过于粗粒度的“已登录”或“在线”。
  3. 认证证明身份,授权决定是否允许对具体资源执行具体操作。
  4. 安全不变量是所有合法状态转移都必须保持的安全规则。
  5. 状态机适合描述认证、会话、权限、配置发布、设备接入、隔离和故障恢复。
  6. 安全测试要覆盖正常路径、负面路径、异常、超时、重放和故障。
  7. 分布式系统要处理期望状态与实际状态、重复消息和网络分区。
  8. 故障模式应按业务风险选择故障关闭、故障开放或受控降级。

十三、课后练习

练习一:单项选择

在安全状态机中,最重要的安全不变量作用是( )。

A. 描述页面显示效果
B. 保证合法状态转移不会破坏关键安全规则
C. 记录设备采购价格
D. 替代所有日志

练习二:判断题

用户认证成功后,就可以直接访问所有系统资源,不需要再进行授权判断。( )

练习三:简答题

请举例说明“状态对账”为什么在分布式安全控制中重要。

练习四:案例题

某企业采用自动化平台下发网络隔离策略。平台显示终端已隔离,但终端仍能访问生产数据库。请用状态机思想分析可能原因,并给出改进措施。

十四、参考答案

练习一答案

答案:B。

解析:安全不变量描述系统在合法状态转移中必须始终保持的安全规则,例如未认证主体不能读取敏感数据。它是模型验证和测试的重要依据。

练习二答案

答案:错误。

解析:认证只证明主体身份,授权还要根据资源、操作、角色、上下文和风险判断是否允许访问。即使身份正确,也可能无权访问某类数据或执行高风险操作。

练习三答案

参考答案:分布式控制中,策略平台记录的是期望状态,设备或实际执行组件可能因为网络中断、资源不足、版本不兼容或下发失败而处于旧状态。若没有状态对账,平台会误以为控制已生效,造成安全假象。应记录期望状态、实际状态、确认时间和差异,设置超时、重试、补偿和人工处置,并通过实际流量和业务探针验证。

练习四答案

可能原因包括:隔离策略只写入控制器而没有成功下发到交换机或安全设备;设备资源不足或规则优先级被其他允许规则覆盖;终端使用备用地址、IPv6 或旁路链路绕过了隔离;状态平台缓存未刷新;数据库访问经过未纳入策略的代理或隧道。

改进措施包括:将终端隔离流程拆为请求、审批、策略生成、设备下发、设备确认、流量验证和完成状态;逐设备读取实际规则和版本,不能只依赖控制器状态;用探针验证终端到生产数据库的真实访问结果;明确隔离不变量,覆盖 IPv4、IPv6、无线、有线和旁路路径;设置下发失败、超时和规则冲突告警;隔离完成后记录审计证据,恢复时重新校验终端状态和策略。

十五、今日复盘

请选择一个熟悉的安全流程,例如登录、远程运维、发布防火墙策略或终端隔离,画出至少六个状态,并为每条状态转移写出触发事件、前置条件、结果和审计记录。最后补充两个“绝不能发生”的安全不变量。完成这个练习,就能把状态机从抽象概念转化为架构设计工具。

下一篇进入 18.2.2「Bell-LaPadula 模型」,学习面向机密性的强制访问控制模型。