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.
Korg is a tool for attacker synthesis. Specifically, given:
P
, called the “target process”;Q
called the “vulnerable process”
IO
;phi
,
P || Q |= phi
,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:
experiment1
without recovery, do make experiment1
.experiment2
or experiment3
, change --phi=demo/TCP/phi1.pml
to --phi=demo/TCP/phi2.pml
or --phi=demo/TCP/phi3.pml
in the experiment1
target. Then do make experiment1
.experiment1
with recovery, change --with_recovery=False
to --with_recovery=True
in the experiment1
target, then do make experiment1
.make avgExperiment
.Korg
logic, do make testKorg
.Characterize.py
, do make testChar
.Construct.py
, do make testCons
.make test
.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.
See interpreting outputs.
See troubleshooting.
Simply build the Dockerfile. It automatically reproduces all results from the paper, and checks these results against a saved copy.