diff --git a/Vagrant Files/InstallationInstructions.txt b/Vagrant Files/InstallationInstructions.txt new file mode 100644 index 0000000000000000000000000000000000000000..0e203ffb6ce7d831e137ba57cf35874bcbcce08b --- /dev/null +++ b/Vagrant Files/InstallationInstructions.txt @@ -0,0 +1,17 @@ + +Please ensure that you have installed Vagrant and have a virtual machine hypervisor installed on your host machine. +Virtualbox is the reccomended hypervisor for this software + + +Scytherbox Installation instructions: + +1. Create a new folder on your host machine + +2. Copy and paste or extract the contents of this folder into the newly created folder + +3. Open Powershell or your text terminal of choice and navigate to the newly created folder. + +4. type 'vagrant up' inside the folder. + +5. Allow time for Vagrant to download the base box and apply the provisioners to the box, this may take several minutes. + diff --git a/Vagrant Files/Vagrantfile b/Vagrant Files/Vagrantfile index e60ed78a5ef3cec7f0c6ed65e1c7085cc6eb1682..653676ec7069e352313b6c1996e2364e6c5aed57 100644 --- a/Vagrant Files/Vagrantfile +++ b/Vagrant Files/Vagrantfile @@ -65,9 +65,10 @@ Vagrant.configure("2") do |config| # Enable provisioning with a shell script. Additional provisioners such as # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the # documentation for more information about their specific syntax and use. - config.vm.provision "file", source: "files", destination: "/home/vagrant/Desktop" config.vm.provision "shell", path: "scyther.sh" + config.vm.provision "file", source: "files", destination: "/home/vagrant/Desktop" config.vm.synced_folder "shared", "/home/vagrant/Desktop/SyncedFiles" + config.vm.provision "shell", path: "scytherpermissions.sh" # apt-get update # apt-get install -y apache2 # SHELL diff --git a/Vagrant Files/files/guide.txt b/Vagrant Files/files/guide.txt index 390795e502bcb316649a5df31b03beb3ddfa047c..767e6d3db9e6d60172dd6b673b9bef660fda0070 100644 --- a/Vagrant Files/files/guide.txt +++ b/Vagrant Files/files/guide.txt @@ -1,7 +1,7 @@ To run Scyther, the scyther-gui.py file is recomeded, this can be launched through terminal by typing: -./scyther/scyther-gui.py +./Desktop/scyther/scyther-gui.py From here, protocols can be loaded using the file -> open menu or crtl+o. By going Desktop->SyncedFiles->GitLink Any protocols in your configured git repo can be opened. diff --git a/Vagrant Files/scyther.sh b/Vagrant Files/scyther.sh index 9b041fe993acc76a5bee2a11e79e7dc0df566f0d..ed1172fcf094778e99a036406db4ea82719466bb 100644 --- a/Vagrant Files/scyther.sh +++ b/Vagrant Files/scyther.sh @@ -1,4 +1,3 @@ sudo apt-get update sudo apt-get -y install graphviz python python-wxgtk3.0 -chmod +x /home/vagrant/Desktop/scyther/scyther/scyther-gui.py chmod 777 -R /home/vagrant/Desktop \ No newline at end of file diff --git a/Vagrant Files/scytherpermissions.sh b/Vagrant Files/scytherpermissions.sh new file mode 100644 index 0000000000000000000000000000000000000000..7f5f3d1874f7a01558bf1803ac44c99e2be6f920 --- /dev/null +++ b/Vagrant Files/scytherpermissions.sh @@ -0,0 +1 @@ +chmod +x /home/vagrant/Desktop/scyther/scyther-gui.py \ No newline at end of file diff --git a/Vagrant Files/shared/Example Protocols/ImplicitKeyAuthentication.spdl.txt b/Vagrant Files/shared/Example Protocols/ImplicitKeyAuthentication.spdl.txt new file mode 100644 index 0000000000000000000000000000000000000000..4e0a6556aba3e1161dd28432fbc4f5501ed55682 --- /dev/null +++ b/Vagrant Files/shared/Example Protocols/ImplicitKeyAuthentication.spdl.txt @@ -0,0 +1,49 @@ +hashfunction hashed; +usertype Message; + +protocol KeyExchange(Monitor,CloudServer) +{ + role Monitor + + { + + fresh MonitorValue : Nonce; + fresh Confirm: Message; + var CloudServerValue : Nonce; + + send_1(Monitor,CloudServer,{Monitor,MonitorValue}pk(CloudServer)); + + recv_2(CloudServer,Monitor, {CloudServerValue,hashed(MonitorValue), + CloudServer}pk(Monitor)); + + send_3(Monitor,CloudServer, hashed(CloudServerValue, Confirm)); + + claim_Monitor1(Monitor,Niagree); + claim_Monitor2(Monitor,Nisynch); + claim_Monitor3(Monitor, Secret, MonitorValue); + claim_Monitor4(Monitor, Secret, CloudServerValue); + + } + + role CloudServer + + { + + var MonitorValue: Nonce; + var Confirm: Message; + fresh CloudServerValue: Nonce; + + recv_1(Monitor,CloudServer,{Monitor,MonitorValue}pk(CloudServer)); + + send_2(CloudServer,Monitor, {CloudServerValue,hashed(MonitorValue), + CloudServer}pk(Monitor)); + + recv_3(Monitor,CloudServer, hashed(CloudServerValue, Confirm)); + + claim_CloudServer1(CloudServer,Niagree); + claim_CloudServer2(CloudServer,Nisynch); + claim_CloudServer3(CloudServer, Secret, MonitorValue); + claim_CloudServer4(CloudServer, Secret, CloudServerValue); + + } +} \ No newline at end of file diff --git a/Vagrant Files/shared/Example Protocols/MessageEncryption.spdl.txt b/Vagrant Files/shared/Example Protocols/MessageEncryption.spdl.txt new file mode 100644 index 0000000000000000000000000000000000000000..cdb06a170662c13cb581364a00cd3c3aeabed083 --- /dev/null +++ b/Vagrant Files/shared/Example Protocols/MessageEncryption.spdl.txt @@ -0,0 +1,31 @@ +protocol smartExchange(Meter,Monitor) + { + + role Meter { + + fresh Message: Nonce; + var Confirm; + + send_1(Meter,Monitor,{Message}k(k)); + + recv_2(Monitor,Meter,{Confirm}k(k)); + + claim_Meter1(Meter, Secret, (k)); + claim_Meter2(Meter, Secret, Message); + + } + + role Monitor { + + var Message; + fresh Confirm: Nonce; + + recv_1(Meter,Monitor,{Message}k(k)); + + send_2(Monitor,Meter,{Confirm}k(k)); + + claim_Monitor1(Monitor, Secret, (k)); + claim_Monitor2(Monitor, Secret, Message); + } + +} \ No newline at end of file diff --git a/Vagrant Files/shared/Example Protocols/MutualAuthentication.spdl.txt b/Vagrant Files/shared/Example Protocols/MutualAuthentication.spdl.txt new file mode 100644 index 0000000000000000000000000000000000000000..ddb305af8daadfdc16824c2fbf1f84de4999fb03 --- /dev/null +++ b/Vagrant Files/shared/Example Protocols/MutualAuthentication.spdl.txt @@ -0,0 +1,57 @@ +hashfunction hashed; +hashfunction sharedkey; +usertype Message; +usertype SessionKey; + +protocol MutualAuthentication(Monitor,CloudServer) +{ + role Monitor { + + fresh MonitorValue : Nonce; + var CloudServerValue : Nonce; + + fresh MonitorInformation : Message; + var CloudServerInformation: Message; + fresh sharedkey: SessionKey; + + + send_1(Monitor,CloudServer,{Monitor,MonitorValue}pk(CloudServer)); + + recv_2(CloudServer,Monitor, {CloudServerValue,hashed(MonitorValue), + CloudServer}pk(Monitor)); + + send_3(Monitor,CloudServer,{CloudServerValue, MonitorInformation} sharedkey ); + + recv_4(CloudServer,Monitor,{MonitorValue,CloudServerInformation} sharedkey); + + claim_Monitor1(Monitor,Niagree); + claim_Monitor2(Monitor,Nisynch); + claim_Monitor3(Monitor, Secret, CloudServerInformation); + claim_Monitor4(Monitor,Alive); + + } + + role CloudServer { + + var MonitorValue: Nonce; + fresh CloudServerValue: Nonce; + + fresh CloudServerInformation: Message; + var MonitorInformation: Message; + var sharedkey: SessionKey; + + recv_1(Monitor,CloudServer,{Monitor,MonitorValue}pk(CloudServer)); + send_2(CloudServer,Monitor, {CloudServerValue,hashed(MonitorValue), + CloudServer}pk(Monitor)); + + recv_3(Monitor,CloudServer, {CloudServerValue, MonitorInformation} sharedkey ); + + send_4(CloudServer,Monitor,{MonitorValue,CloudServerInformation} sharedkey); + + claim_CloudServer1(CloudServer,Niagree); + claim_CloudServer2(CloudServer,Nisynch); + claim_CloudServer3(CloudServer, Secret, MonitorInformation); + claim_CloudServer4(CloudServer,Alive); + + } +} \ No newline at end of file diff --git a/Vagrant Files/shared/Example Protocols/SessionKeys.spdl.txt b/Vagrant Files/shared/Example Protocols/SessionKeys.spdl.txt new file mode 100644 index 0000000000000000000000000000000000000000..f470264c04fb510178e559ff90a7b721d7121f4f --- /dev/null +++ b/Vagrant Files/shared/Example Protocols/SessionKeys.spdl.txt @@ -0,0 +1,49 @@ +hashfunction hashed; +hashfunction sharedkey; +usertype Message; +usertype SessionKey; + +protocol SessionKeys(Monitor,CloudServer) { + + role Monitor { + + fresh MonitorValue : Nonce; + var CloudServerValue : Nonce; + + fresh info : Message; + var info: Message; + fresh sharedkey: SessionKey; + + send_1(Monitor,CloudServer,{Monitor,MonitorValue}pk(CloudServer)); + + recv_2(CloudServer,Monitor, {CloudServerValue,hashed(MonitorValue), + CloudServer}pk(Monitor)); + + send_3(Monitor,CloudServer, {info} sharedkey); + + claim_Monitor1(Monitor,Alive); + claim_Monitor2(Monitor,Secret, info); + } + + role CloudServer { + + var MonitorValue: Nonce; + fresh CloudServerValue: Nonce; + + var info: Message; + fresh info: Message; + fresh sharedkey: SessionKey; + + recv_1(Monitor,CloudServer,{Monitor,MonitorValue}pk(CloudServer)); + + send_2(CloudServer,Monitor, {CloudServerValue,hashed(MonitorValue), + CloudServer}pk(Monitor)); + + recv_3(Monitor,CloudServer, {info} sharedkey); + + claim_CloudServer1(CloudServer,Niagree); + claim_CloudServer2(CloudServer,Nisynch); + claim_CloudServer3(CloudServer,Alive); + claim_CloudServer4(CloudServer,Secret, info); + } +} \ No newline at end of file