该原型实现了以下两篇论文中提出的方法:
本质上,它基于AutomationML(AML)工件识别安全风险源(即威胁和漏洞)以及攻击后果的类型。风险识别过程的结果可用于生成信息物理攻击图,该图建模可能导致物理损害的多阶段网络攻击。此外,还识别了影响产品质量的级联效应和攻击后果。
此原型依赖于为ETFA 2019论文《基于双向翻译在AutomationML中解释OWL复杂类》(Hua和Hein撰写,arXiv:1906.04240)而分叉的AML与OWL双向翻译实现。克隆该仓库,编译项目,并组装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
克隆此仓库,创建应用基础目录(通常位于用户主目录),并将amlsec-base-dir中的文件以及已组装的AML2OWL JAR(位于aml_owl/target/)放置在该目录中。AMLsec基础目录和AML2OWL JAR的路径必须在配置文件中分别使用键baseDir和amlToOwlProgram进行设置。
安装并启动Apache Jena Fuseki:
$ java -jar <path_to_apache-jena-fuseki-X.Y.Z>/fuseki-server.jar --update
如果要运行QualSec,需要安装LoLA - A Low Level Petri Net Analyzer。
最后,使用sbt构建并启动应用程序。
$ sbt "runMain org.sba_research.worker.Main -q"
使用-s和-q标志分别运行AMLsec和QualSec。
实现的方法利用通过AML库实现的语义信息映射机制。这些AML安全扩展库和AML质量扩展库可以通过导入到AML文件中轻松地在工程项目中重用。
再次强调,如果要执行IEEE TDSC论文中提出的方法原型,请使用-s标志。而-q标志则对应IEEE TII论文中的方法。
该原型的能力已在案例研究中演示(AMLsec,QualSec)。直接运行此原型将生成包含风险识别过程结果的知识库(可通过Fuseki访问)以及案例研究的结果。
此外,如果使用默认案例研究和-s标志运行原型,将创建以下修剪后的信息物理攻击图:
该原型使用Akka框架,能够将风险识别工作负载分布到多个节点上。使用了Akka分布式工作者示例作为模板。
要运行包含多个节点的集群(以-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"
如果在不同的机器上运行节点,则需要调整配置文件中的Akka设置。
在性能评估期间获得的测量结果和日志文件可应要求提供。
如果您在研究中使用此原型,请考虑引用我们的IEEE TDSC 2020或IEEE TII 2022论文。欢迎使用论文的BibTeX条目(TDSC,TII)。
作者感谢Yameng An提供了OntoPLC的初始版本。