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.