
Identificação Automatizada de Riscos de Segurança Usando Dados de Engenharia Baseados em AutomationML
Este protótipo implementa os métodos apresentados nas duas publicações a seguir:
Em essência, ele identifica fontes de risco de segurança (isto é, ameaças e vulnerabilidades) e tipos de consequências de ataques com base em artefatos AutomationML (AML). Os resultados do processo de identificação de riscos podem ser usados para gerar grafos de ataque ciber-físicos, que modelam ataques cibernéticos de múltiplos estágios que potencialmente levam a danos físicos. Além disso, são identificados efeitos em cascata e consequências de ataques que afetam a qualidade do produto.
Este protótipo depende de uma versão bifurcada da implementação da tradução bidirecional entre AML e OWL para o artigo ETFA 2019 "Interpreting OWL Complex Classes in AutomationML based on Bidirectional Translation" de Hua e Hein.
Clone o repositório, compile os projetos e monte um pacote de aplicação de aml_owl:
$ cd aml_models
$ mvn clean compile install
$ cd ../aml_io
$ mvn clean compile install
$ cd ../aml_owl
$ mvn clean compile install assembly:single
Clone este repositório, crie o diretório base da aplicação (geralmente localizado no diretório home do usuário) e coloque os arquivos localizados em amlsec-base-dir e o JAR do AML2OWL montado (localizado em aml_owl/target/) lá.
O diretório base do AMLsec e o caminho para o JAR do AML2OWL devem ser definidos no arquivo de configuração usando as chaves baseDir e amlToOwlProgram, respectivamente.
Instale e inicie o Apache Jena Fuseki:
$ java -jar <path_to_apache-jena-fuseki-X.Y.Z>/fuseki-server.jar --update
Se você quiser executar o QualSec, precisa instalar o LoLA - A Low Level Petri Net Analyzer.
Finalmente, construa e inicie o aplicativo usando sbt.
$ sbt "runMain org.sba_research.worker.Main -q"
Use as flags -s e -q para executar AMLsec e QualSec, respectivamente.
Os métodos implementados utilizam um mecanismo de mapeamento de informações semânticas realizado por meio de bibliotecas AML. Estas bibliotecas de extensão de segurança AML e bibliotecas de extensão de qualidade AML podem ser facilmente reutilizadas em projetos de engenharia ao importá-las para arquivos AML.
Novamente, se você quiser executar o protótipo do método apresentado no artigo IEEE TDSC, use a flag -s.
A flag -q, por outro lado, corresponde ao método apresentado no artigo IEEE TII.
As capacidades deste protótipo são demonstradas em estudos de caso (AMLsec, QualSec). Executar este protótipo como está produzirá a base de conhecimento (pode ser acessada via Fuseki), que também inclui os resultados do processo de identificação de riscos e os resultados do estudo de caso.
Além disso, se você executar o protótipo com o estudo de caso padrão e a flag -s, o seguinte grafo de ataque ciber-físico podado será criado:
O protótipo utiliza o framework Akka e é capaz de distribuir a carga de trabalho de identificação de riscos entre múltiplos nós. O exemplo de workers distribuídos do Akka foi usado como modelo.
Para executar o cluster com múltiplos nós (exemplos com a flag -q):
$ sbt "runMain org.sba_research.worker.Main cassandra -q"
$ sbt "runMain org.sba_research.worker.Main 2551 -q"
$ sbt "runMain org.sba_research.worker.Main 3001 -q"
$ sbt "runMain org.sba_research.worker.Main 5001 3 -q"
Se você executar os nós em máquinas separadas, terá que adaptar as configurações do Akka no arquivo de configuração.
As medições e arquivos de log obtidos durante a avaliação de desempenho estão disponíveis mediante solicitação.
Se você usar este protótipo em sua pesquisa, considere citar nossa publicação IEEE TDSC 2020 ou IEEE TII 2022. Sinta-se à vontade para usar as entradas BibTeX dos artigos (TDSC, TII).
Os autores gostariam de agradecer a Yameng An por fornecer a versão inicial do OntoPLC.