OpenC2
语言规范的目标是提供一种在网络防御系统的function elements
(功能元素)之间进行互操作的语言。 该语言与OpenC2
执行器配置文件和OpenC2
传输规范结合使用,允许与供应商无关的网络攻击响应。
综合自适应网络防御(IACD
)框架基于传统的OODA
(Observe
(观察)–Orient
(定位)–Decide
(决定)–Act
(行动))循环IACD定义了一系列活动:
Sensing
(感知):收集有关系统活动的数据Sense Making
(意图理解):对数据进行分析和评估,以了解正在发生的事情Decision Making
(决策):确定响应系统事件的行动方案Acting
(行动):执行行动过程
OpenC2
的目标是在执行网络防御功能的解耦块之间实现网络相关时间的协调防御。
OpenC2
侧重于IACD
框架的acting
(执行)部分; 作为OpenC2
设计基础的假设是已经提供了sensing/analytics
(传感/分析)并且已经做出了采取行动的决策。 这个目标和这些假设指导OpenC2
的设计:
Technology Agnostic
(技术无关性):OpenC2
语言以平台和实现无关的方式定义了一组抽象的原子网络防御行为Concise
(简洁性):命令旨在仅传达描述所需操作所需的基本信息,并且可以以非常紧凑的形式表示,以适应通信受限的环境Abstract
(抽象性):命令和响应是抽象定义的,可以根据不同实现环境的需要通过多种方案进行编码和传输Extensible
(可扩展性):虽然OpenC2
定义了一套用于网络防御的核心动作和目标,但该语言有望随着网络防御技术的发展而发展,并允许扩展以适应新的网络防御技术。
- 生产者 :生产者是一个实体,它创建命令以向一个或多个系统提供指令,以根据命令的内容进行操作。 生产者可以与命令一起接收和处理响应。
- 消费者 :消费者是接收并可能对命令采取行动的实体。 消费者可以创建响应,提供捕获或发送回制作人所需的任何信息。
OpenC2
是生产者和消费者的一套规范,用于指挥和执行网络防御功能。 这些规范包括OpenC2
语言规范,执行器配置文件和传输规范。
OpenC2
语言规范和执行器配置文件规范侧重于命令和响应的生产者和消费者的语言内容和含义,而转移规范侧重于交换协议。
OpenC2
语言规范:提供了语言基本元素的语义,命令和响应的结构,以及定义表示命令或响应的语言元素的正确语法的模式。OpenC2
执行器配置文件:指定在特定执行器功能的上下文中相关的OpenC2
语言的子集。 网络防御组件,设备,系统和/或实例可能(实际上可能)实现多个执行器配置文件。 执行器配置文件通过定义将执行器标识为所需精度级别的说明符来扩展语言。 执行器配置文件可以定义与这些执行器功能相关和/或唯一的命令参数和目标。OpenC2
传输规范:利用现有协议和标准在特定环境中实现OpenC2
。 这些标准用于超出语言范围的通信和安全功能,例如消息传输编码,身份验证和OpenC2
消息的端到端传输。
OpenC2
语言规范定义了一种语言,用于组成用于命令和控制网络防御系统和组件的消息。
消息由Header
和Payload
组成(在OpenC2语言规范版本1.0中定义为消息主体,并在一个或多个执行器配置文件中指定 )。
该语言规范定义了两个Payload
结构
- 命令(
Command
) :从一个系统(称为生产者)到一个或多个系统(消费者)的指令,用于对命令的内容进行操作。 - 响应 (
Response
):由命令返回生产者的任何信息。
OpenC2
实现将上述相关的OpenC2
规范与相关的行业规范,协议和标准集成在一起。
下图描述了OpenC2
规范之间的关系,以及它们与其他行业标准和OpenC2
的特定于环境的实现之间的关系。
注意,图中的实现方面的分层是概念性的,并不旨在排除实现所需功能的任何特定方法
(例如,使用应用层消息签名功能来提供消息源认证和完整性)。
协议层 | 例子 |
---|---|
Function-Specific Content | 执行器配置文件 ([OpenC2-SLPF-v1.0],...) |
Common Content | Language Specification |
Message | Transfer Specifications ([OpenC2-HTTPS-v1.0], OpenC2-over-CoAP , ...) |
Secure Transport | HTTPS , CoAP , MQTT , OpenDXL , ... |
Secure Transport
层提供Producer
和Consumer
之间的通信路径。OpenC2
可以通过任何标准传输协议进行分层。Message
层提供传输和内容无关的机制来传递消息。 传输规范将特定于传输的协议元素映射到由内容和相关元数据组成的与传输无关的消息元素集。Common Content
层定义了Commands
和Responses
的结构以及用于构造它们的一组公共语言元素。Function-Specific Content
层定义用于支持特定网络防御功能的语言元素。Actuator
配置文件定义了该功能的实现一致性要求。 生产者和消费者将支持一个或多个配置文件。
Command
是由Action
(要做什么),Target
(正在执行的操作),可选的Actuator
(执行命令的是什么)和Command Arguments
这几部分组成,它们影响命令的执行方式。
Target
(目标)与Action
(动作)结合足以描述完整的Command
。
虽然Actuator
和Command Arguments
是可选的,但是可以为Command
提供额外的精度。
Response
由数字格式的StatusCode
(状态码),以及可选的字符串格式的status text
(状态文本)和可选results
(结果)组成。 results
的格式取决于要返回的响应的数据类型。