Korg is named after the KORG MicroKorg synthesizer, which has a dedicated attack knob (Knob 3). (Source: KORG MicroKorg Owner's Manual, page 9). Image below courtesty of KORG.
- TOC {:toc}
Korg is a tool for attacker synthesis. Specifically, given:
- a system model
P
, called the "target process"; - a model
Q
called the "vulnerable process"- with interface
IO
;
- with interface
- and a property
phi
,- where
P || Q |= phi
,
- where
Korg will try to generate a new process A
called an attacker that has the interface IO
and violates phi
when composed with P
.
Intuitively, Korg assumes the adversary can "hack" a process Q
in an environment P
, and attempts to prove that in so doing, an adversary might induce P
to violate phi
. The IO
is used to stop the adversary from performing actions that Q
could never perform in the first place.
See the install docs.
See the usage docs.
Read the #comments
in the Makefile. TL;DR:
- To run
experiment1
without recovery, domake experiment1
. - To run
experiment2
orexperiment3
, change--phi=demo/TCP/phi1.pml
to--phi=demo/TCP/phi2.pml
or--phi=demo/TCP/phi3.pml
in theexperiment1
target. Then domake experiment1
. - To run
experiment1
with recovery, change--with_recovery=False
to--with_recovery=True
in theexperiment1
target, then domake experiment1
. - To reproduce our results, do
make avgExperiment
. - To run unit tests for main body of
Korg
logic, domake testKorg
. - To run unit tests for
Characterize.py
, domake testChar
. - To run unit tests for
Construct.py
, domake testCons
. - To run all the unit tests, do
make test
. - To clean up after running one of the targets, do
make clean
.
See the Usage docs, or, adapt the commands in the Makefile to your needs.
Use Cygwin
, or, a virtual machine, or, the Linux Subsystem.
- Please use the Issue Tracker to report any issues. We have not yet tested on Windows.
See interpreting outputs.
See troubleshooting.