Prototype Use Case Implementations

David Kemp edited this page Mar 23, 2017 · 10 revisions

Several member organizations have developed one or more prototype implementations of the OpenC2 language using the following resources:

  • Language Description Document: Provides a lexicon including the definition of the Open C2 actions, targets, actuators, syntax, and modifiers.
  • JSON Abstract Encoding Notation (JAEN) Toolkit, including OpenC2 schema. JAEN is a schema language used to specify data structures independently of the formats used to serialize those structures. The JAEN package includes a message validator and encoder/decoder that currently supports multiple JSON message formats, but can be extended to XML and binary formats. All of the current prototype implementations have chosen JSON encoding of the commands.
  • Library of Sample Commands: A set of valid JSON encoded OpenC2 commands

The forum is in the process of defining a set of Actuator Profiles, however they are in a pre-draft state. The profiles will be added as they are matured.

The following is a list of current prototype implementations. Please take a look, use, contribute, provide feedback, or grow your own and add it here.

  • Ocas: Ocas simulates a consumer of the openC2 api - either a specific actualtor or a network represented by an orchestrator. Ocas is an OTP application written in Erlang. Erlang implementations are scalable and fault tolerant. Created by sFractal.
  • Yuuki: Yuuki was written in Python and demonstrates how OpenC2 commands can be mapped to multimethods (multiple dispatch on the type of targets and actuators). Multiple dispatch on type provides a simpler conceptual model of OpenC2 commands than most object inheritance models. Created by the University of Maryland.
  • OrchID: OrchID is an OpenC2 proxy written in Python and built in Django 1.10.2. OrchID utilizes multiple dispatch on type and supports multiple actuators. Created by Zepko.
  • IACD Course of Action (Link to be supplied in the near future): Implements 15 OpenC2 actions issued to nine actuators. Implemented in Java. Created by JHU/APL.
  • CTIA Broker (Link to be supplied in the near future): Orchestrator issues DENY and ALLOW to Cisco ASA based on Cisco Threat Intelligence API update. Created by Cisco.
  • Software Defined Networking (SDN): Maps OpenC2 Actions to OpenFlow commands utilized by SDN controllers. Based on an early version of the LDD. Created by SPAWAR
  • Pub/Sub Prototype: A publish/subscribe prototype written in C and developed on HardenedBSD. This was the first prototype produced by the OpenC2 Forum and is based on an early version of the LDD. Created by G-2.