From bd30bab096135955be364570604cdd43db69975a Mon Sep 17 00:00:00 2001 From: jamesshort1 <107395948+jamesshort1@users.noreply.github.com> Date: Thu, 27 Jul 2023 08:59:24 +0100 Subject: [PATCH 1/5] Update README.md --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index 326cc27e..40d49c11 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,34 @@ PrimAITE (Primary-level AI Training Environment) is a simulation environment for training AI under the ARCD programme. +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, services and processes; + +- 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 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 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 and adversarial behaviour; + +- 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 OpenAI gym 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.  + ## Getting Started with PrimAITE ### 💫 Install & Run From fde033b3871a1b5b09548160c41a63b0c53244b7 Mon Sep 17 00:00:00 2001 From: jamesshort1 <107395948+jamesshort1@users.noreply.github.com> Date: Thu, 27 Jul 2023 08:59:43 +0100 Subject: [PATCH 2/5] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 40d49c11..390f7f50 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # PrimAITE -PrimAITE (Primary-level AI Training Environment) is a simulation environment for training AI under the ARCD programme. - 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; From 858396f3d6c6c933b3cf71b4e507193c6e54129d Mon Sep 17 00:00:00 2001 From: Chris McCarthy Date: Thu, 27 Jul 2023 11:03:25 +0100 Subject: [PATCH 3/5] Dropped MIT license until public release --- LICENSE | 21 --------------------- pyproject.toml | 5 ++--- 2 files changed, 2 insertions(+), 24 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 93d6f98b..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 - 2025 Defence Science and Technology Laboratory UK (https://dstl.gov.uk) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/pyproject.toml b/pyproject.toml index c2c8076b..3cd5922a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,11 +6,11 @@ build-backend = "setuptools.build_meta" name = "primaite" description = "PrimAITE (Primary-level AI Training Environment) is a simulation environment for training AI under the ARCD programme." authors = [{name="Defence Science and Technology Laboratory UK", email="oss@dstl.gov.uk"}] -license = {file = "LICENSE"} +license = {text = "MIT License"} requires-python = ">=3.8, <3.11" dynamic = ["version", "readme"] classifiers = [ - "License :: OSI Approved :: MIT License", + "License :: MIT License", "Development Status :: 5 - Production/Stable", "Operating System :: Microsoft :: Windows", "Operating System :: MacOS", @@ -47,7 +47,6 @@ readme = {file = ["README.md"]} [tool.setuptools] package-dir = {"" = "src"} include-package-data = true -license-files = ["LICENSE"] [project.optional-dependencies] From 92671796a15801366d26d9eaf8510e2dd629b46f Mon Sep 17 00:00:00 2001 From: Chris McCarthy Date: Thu, 27 Jul 2023 11:40:29 +0100 Subject: [PATCH 4/5] Added GFX license conditions. Included LICENSE file in build. Fixed a few character issues in README.md --- LICENSE | 28 ++++++++++++++++++++++++++++ README.md | 28 ++++++++++++++-------------- pyproject.toml | 3 ++- 3 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..3f5e4bb3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ +MIT License License + +MIT License Conditions + +These MIT License conditions confirm the provision of the following artefacts as MIT License by Defence Science and Technology +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights + +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + + diff --git a/README.md b/README.md index 390f7f50..4baf47b9 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,38 @@ # PrimAITE -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 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 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, services and processes; +- The ability to model key characteristics of a platform / system by representing connections, IP addresses, ports, traffic loading, operating systems, services and processes; - Operates at machine-speed to enable fast training cycles. -PrimAITE presents the following features: +PrimAITE presents the following features: -- Highly configurable (via YAML files) to provide the means to model a variety of platform / system laydowns and adversarial attack scenarios; +- Highly configurable (via YAML files) to provide the means to model a variety of platform / system laydowns 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 success; +- 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 success; -- Provision of logging to support AI evaluation and metrics gathering; +- Provision of logging to support AI evaluation and metrics gathering; -- Uses the concept of Information Exchange Requirements (IERs) to model background pattern of life and adversarial behaviour; +- Uses the concept of Information Exchange Requirements (IERs) to model background pattern of life and adversarial behaviour; -- 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); +- 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; +- 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 OpenAI gym compliant defensive agents; +- Presents an OpenAI gym or RLLib interface to the environment, allowing integration with any OpenAI gym 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)​; +- 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.  +- NetworkX provides laydown visualisation capability. ## Getting Started with PrimAITE ### 💫 Install & Run **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. +Currently, the PrimAITE wheel can only be installed from GitHub. This may change in the future with release to PyPi. #### Windows (PowerShell) diff --git a/pyproject.toml b/pyproject.toml index 3cd5922a..b66b0168 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" name = "primaite" description = "PrimAITE (Primary-level AI Training Environment) is a simulation environment for training AI under the ARCD programme." authors = [{name="Defence Science and Technology Laboratory UK", email="oss@dstl.gov.uk"}] -license = {text = "MIT License"} +license = {file = "LICENSE"} requires-python = ">=3.8, <3.11" dynamic = ["version", "readme"] classifiers = [ @@ -47,6 +47,7 @@ readme = {file = ["README.md"]} [tool.setuptools] package-dir = {"" = "src"} include-package-data = true +license-files = ["LICENSE"] [project.optional-dependencies] From 378001ff68eba301b9cd409e6a5feed70c1c6fd0 Mon Sep 17 00:00:00 2001 From: jamesshort1 <107395948+jamesshort1@users.noreply.github.com> Date: Thu, 27 Jul 2023 14:57:08 +0100 Subject: [PATCH 5/5] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 4baf47b9..b995bf61 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # PrimAITE +![image](https://github.com/Autonomous-Resilient-Cyber-Defence/PrimAITE/assets/107395948/c59cc1c2-b5eb-4e0f-91a1-ce0036295e54) + + 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;