diff --git a/Scyther Files/SessionKeys.spdl b/Scyther Files/SessionKeys.spdl index 65305c8e3dcbfe423b4480ae9c558428c03c9f88..4cf6a49ab77f29384dabe499280a674e7c7ead95 100644 --- a/Scyther Files/SessionKeys.spdl +++ b/Scyther Files/SessionKeys.spdl @@ -1,48 +1,49 @@ - -usertype SessionKey; -usertype Message; - -protocol EncrpytedExchange(Meter,Monitor) - - { - - - role Meter { - - fresh M: Message; - fresh TokenA: SessionKey; - var TokenB; - - send_1(Meter,Monitor,{TokenA}k(k)); - recv_2(Monitor,Meter,{TokenB}k(k)); - claim(Meter,Running,Monitor,M); - send_3(Meter,Monitor,{M}k(k)); - - claim_Meter1(Meter, Secret, (k)); - claim_Meter2(Meter, Secret, M); - claim_Meter3(Meter,Niagree); - claim_Meter4(Meter,Nisynch); - - } - - role Monitor { - - var M; - var TokenA; - fresh TokenB: SessionKey; - - recv_1(Meter,Monitor,{TokenA}k(k)); - send_2(Monitor,Meter,{TokenB}k(k)); - recv_3(Meter,Monitor,{M}k(k)); - - claim_Monitor1(Monitor, Secret, (k)); - claim_Monitor2(Monitor, Secret, M); - claim_Meter3(Monitor,Niagree); - claim_Meter4(Monitor,Nisynch); - - - - - } - -} \ No newline at end of file + +hashfunction hashed; +hashfunction sharedkey; +usertype Message; +usertype SessionKey; + +protocol KeyExchange(Monitor,CloudServer) +{ + role Monitor + + { + + fresh MonitorValue : Nonce; + var CloudServerValue : Nonce; + + fresh 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, {hashed(CloudServerValue), info} sharedkey ); + + claim_Monitor1(Monitor,Niagree); + claim_Monitor2(Monitor,Nisynch); + claim_Monitor3(Monitor, Secret, info); + + } + + role CloudServer + + { + + var MonitorValue: Nonce; + fresh CloudServerValue: Nonce; + + var info: 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, {hashed(CloudServerValue), info} sharedkey ); + + claim_CloudServer1(CloudServer,Niagree); + claim_CloudServer2(CloudServer,Nisynch); + claim_CloudServer3(CloudServer, Secret, info); + + } +}