The ARCD Primary-level AI Training Environment (PrimAITE) provides an effective simulation capability for the purposes of training and evaluating AI in a cyber-defensive role. It incorporates the functionality required of a primary-level ARCD environment, which includes:
-
The ability to model a relevant platform / system context;
-
The ability to model key characteristics of a platform / system by representing connections, IP addresses, ports, traffic loading, operating systems and services;
-
Operates at machine-speed to enable fast training cycles.
PrimAITE presents the following features:
-
Highly configurable (via YAML files) to provide the means to model a variety of platform / system laydowns, mission profiles and adversarial attack scenarios;
-
A Reinforcement Learning (RL) reward function based on (a) the ability to counter the specific modelled adversarial cyber-attack, and (b) the ability to ensure mission success;
-
Provision of logging to support AI evaluation and metrics gathering;
-
Uses the concept of Information Exchange Requirements (IERs) to model background pattern of life, adversarial behaviour and mission data (on a sliding scale of criticality);
-
An Access Control List (ACL) function, mimicking the behaviour of a network firewall, is applied across the model, following standard ACL rule format (e.g. DENY/ALLOW, source IP address, destination IP address, protocol and port);
-
Application of IERs to the platform / system laydown adheres to the ACL ruleset;
-
Presents an OpenAI gym or RLLib interface to the environment, allowing integration with any compliant defensive agents;
-
Full capture of discrete logs relating to agent training (full system state, agent actions taken, instantaneous and average reward for every step of every episode);
-
NetworkX provides laydown visualisation capability.
PrimAITE is designed to be OS-agnostic, and thus should work on most variations/distros of Linux, Windows, and MacOS. Currently, the PrimAITE wheel can only be installed from GitHub. This may change in the future with release to PyPi.
Prerequisites:
- Manual install of Python >= 3.8 < 3.11
Install:
mkdir ~\primaite
cd ~\primaite
python3 -m venv .venv
attrib +h .venv /s /d # Hides the .venv directory
.\.venv\Scripts\activate
pip install https://github.com/Autonomous-Resilient-Cyber-Defence/PrimAITE/releases/download/v2.0.0/primaite-2.0.0-py3-none-any.whl
primaite setup
Run:
primaite session
Prerequisites:
- Manual install of Python >= 3.8 < 3.11
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.10
sudo apt-get install python3-pip
sudo apt-get install python3-venv
Install:
mkdir ~/primaite
cd ~/primaite
python3 -m venv .venv
source .venv/bin/activate
pip install https://github.com/Autonomous-Resilient-Cyber-Defence/PrimAITE/releases/download/v2.0.0/primaite-2.0.0-py3-none-any.whl
primaite setup
Run:
primaite session
To make your own changes to PrimAITE, perform the install from source (developer install)
git clone [email protected]:Autonomous-Resilient-Cyber-Defence/PrimAITE.git
cd PrimAITE
python3 -m venv venv
source venv/bin/activate
.\venv\Scripts\activate
python3 -m pip install -e .[dev]
primaite setup
The PrimAITE documentation can be built with the following commands:
cd docs
make html
cd docs
.\make.bat html
Related Environments: You may also wish to explore the Yawning-Titan environment, an abstract, graph based cyber-security simulation environment that supports the training of intelligent agents for autonomous cyber operations: https://github.com/dstl/YAWNING-TITAN