跳转至

基于模型的安全关键系统保障 — 契约与论证

概述

  • 作者: Dionisio de Niz, CMU SEI
  • 会议: MBSE in Practice Conference 2025, 2025年8月21日
  • 资助: DoD Contract No. FA8702-15-D-0002(SEI作为FFRDC的运营合同)
  • 核心创新: 提出基于模型的契约(Model-Based Contracts)和论证(Argumentations)方法,用于安全关键系统的形式化保障

核心问题:多重声明 — 多重分析

安全关键系统面临多种保障声明,每种声明需要不同分析,而不同分析的假设可能冲突:

  • 控制稳定性(Control Stability)
  • 可调度性(Schedulability)
  • 功耗(Power)
  • 温度/热失控(Thermal Runaway)
  • 死锁/模型检查(Deadlock/Model Checking)

不同分析域(传感器采样、PID控制器、执行器、通信协议等)之间存在复杂的假设-保证关系,需要统一的框架来: - 组合多重分析 - 验证假设 - 解决假设冲突 - 整合到论证中以满足声明

核心方法论

分析契约(Analysis Contract)

每个分析被建模为包含四个组件的契约:

contract {
  inputs: E2ELatencies
  assumptions: areConnectionsDelayed(), areDeadlinesConstrained(), 
               areTasksSchedulable(), areAllThreadsPeriodic()
  analysis: meetEndToEndLatencies()
  guarantee: [E2EResponses[i] <= E2ELatencies[i] for i in range(len(Responses))]
}
  • 假设(Assumptions):分析有效所必须满足的约束条件
  • 分析(Analysis):评估保证是否可以履行
  • 保证(Guarantee):作为模型上真实事实呈现的断言
  • 实现(Implementation):基于SMT求解器(Z3)实现契约论证

保障契约论证(Assurance Contract Argumentation)

建立了契约之间的层级论证结构:

  1. Claim 1 → Contract 1 → Guarantee(提供Assumption 1给下层)
  2. Claim 2 → Contract 2 → Guarantee(依赖Assumption 2,又为上层提供Assumption 3)
  3. Claim 3 → Contract 3 → Guarantee

论证链使用AADL数据作为证据,支持行为模型验证。关键机制: - 静态验证(Static Verification)使用AADL证据 - 行为模型提供假设验证 - 分析之间通过证明义务(Proof Obligation)连接

符号化契约论证框架

核心创新技术组件:

  • 假设约束条件推理
  • SMT(Z3)实现契约论证:评估约束条件是否能从分析保证的事实中得到满足
  • 假设验证:证明义务确保约束条件的缺失不会允许任何值满足假设(如RM优先级)
  • 精化过程中的论证演进:未约束的符号变量被赋值以满足问题 → 视为证明义务(由于部分模型) → 最终验证完整模型的所有可能值

分析契约选择策略

  • 基于精化的选择:基于模型数据可用性选择契约
  • 基于设计的选择:基于模型数据类型(如RM优先级)选择契约

契约论证可扩展性

利用科学领域知识:

策略 说明
专门域算法 如实时理论中的贪心最坏情况响应时间,用命令式语言实现
分析正确性假设 验证契约论证时假定分析正确,可连接其他低级验证结果(如PROSA: Coq定理证明器验证实时理论)
实现正确性 利用运行时机制的已证明属性(调度器、hypervisor);利用代码生成;推迟代码验证以适应假设

论证模块化(Argument Modularity)

支持将复杂安全声明分解为子声明,逐步构建备选方案:

  • 可靠自动刹车(Reliable Autobrake)声明分解为多层子声明
  • 子声明之间通过OR关系连接备选分析契约(如HarmonicBound vs NonHarmonicBound vs ResponseTime分析)
  • 利用OR机制支持增量式分解和备选方案评估

多架构描述的分析论证

支持从不同架构描述中查询和组合分析:

  • AADL架构 → 提取线程、周期、WCET
  • SysML v2 / SysML v1架构 → 不同建模语言的一致性分析
  • 使用模型查询语言提取分析所需数据:threads = root.allSubcomponents.filter {s -> s.isThread}
  • 最终生成综合性的认证(Certificate)

案例研究:A330 CI202事故分析

2020年6月14日,空客A330-302在台北着陆时三台飞行控制主计算机(FCPC/PRIM)准同时故障,导致地面扰流板、反推和自动刹车全部失效。机组在跑道末端30英尺前安全停下飞机。

A330架构分析

  • 完整性(Integrity):COM+MON对(不同团队独立开发,需相同输入 → 输出交叉检查)
  • 可用性(Availability):PRIM1+PRIM2+PRIM3三重冗余(需独立故障假设 → FTA分析)
  • 端到端时序:延迟通信、RM优先级、无自挂起

AADL通道建模

pedalToActuationCOMPRIM1: end to end flow 
  Sensor1.s1 -> Sensor1.f1 -> c2 -> COM.f5 -> c6 -> Actuator1.k1
pedalToActuationMONPRIM1: end to end flow 
  Sensor2.s3 -> Sensor2.f3 -> c4 -> MON.f6 -> c5 -> COM.f5 -> c6 -> Actuator1.k1

关键分析发现

  1. 零输入抖动无法实现——除非采用复杂(不现实)的同步方案
  2. COM和MON可能同时故障——如果输出不一致
  3. 共享COM+MON传感器保留多样化计算——这是修正方案

验证计划

使用三个域(同步、可靠性、可调度性)和对应契约: - SamplingSynchronizationContract:验证采样抖动 ≤ 容忍度 - ReliabilityContract:验证可靠性 ≥ 目标(假设副本在独立处理器上) - EndToEndDelayedCommunicationContract:验证端到端响应 ≤ 延迟要求

结论与新架构

原始A330设计分析揭示的假设违规通过提出的新架构得到修复: - 满足所有声明 - 满足所有假设 - 编码为形式化的验证论证

工具网站:https://acps-sei.github.io/tools/sar