Created
January 20, 2017 12:32
-
-
Save keks/ac627ac063a46c439da77f7e54731ff1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
maude tool: 'maude' | |
checking version: 2.7. OK. | |
checking installation: OK. | |
theory SHS begin | |
// Function signature and definition of the equational theory E | |
builtins: diffie-hellman | |
functions: ed2cv/1, fst/1, h/1, mac/2, macv/3, pair/2, pk/1, sdec/2, | |
senc/2, sign/2, snd/1, true/0, verify/3 | |
equations: | |
fst(<x.1, x.2>) = x.1, | |
macv(mac(m, k), m, k) = true, | |
sdec(senc(x.1, x.2), x.2) = x.1, | |
snd(<x.1, x.2>) = x.2, | |
verify(sign(x.1, x.2), x.1, pk(x.2)) = true | |
rule (modulo E) Register_pk: | |
[ Fr( ~ltk ) ] --> [ !Ltk( $A, ~ltk ), !Pk( $A, <'g'^~ltk, pk(~ltk)> ) ] | |
/* has exactly the trivial AC variant */ | |
rule (modulo E) Get_pk: | |
[ !Pk( A, pk ) ] --> [ Out( pk ) ] | |
/* has exactly the trivial AC variant */ | |
rule (modulo E) Reveal_ltk: | |
[ !Ltk( A, ltk ) ] --[ LtkReveal( A ) ]-> [ Out( ltk ) ] | |
/* has exactly the trivial AC variant */ | |
rule (modulo E) Client_sendChal: | |
[ Fr( ~eph ), !Ltk( $A, ltkA ), !Pk( $S, pkS ) ] | |
--> | |
[ | |
Client_chalSent( $A, $S, ltkA, ~eph, pkS, $appKey ), | |
Out( <'g'^~eph, mac('g'^~eph, h($appKey))> ) | |
] | |
/* has exactly the trivial AC variant */ | |
rule (modulo E) Server_recvChal: | |
[ Fr( ~eph ), In( <'g'^X, dhmac> ) ] | |
--[ True( macv(dhmac, 'g'^X, h($appKey)) ) ]-> | |
[ | |
Server_chalSent( $S, ~eph, 'g'^X, $appKey ), | |
Out( <'g'^~eph, mac('g'^~eph, h(<'g'^X^~eph, $appKey>))> ) | |
] | |
/* | |
rule (modulo AC) Server_recvChal: | |
[ Fr( ~eph ), In( <z, dhmac> ) ] | |
--[ True( z.2 ) ]-> | |
[ | |
Server_chalSent( $S, ~eph, z, $appKey ), | |
Out( <'g'^~eph, mac('g'^~eph, h(<z.1, $appKey>))> ) | |
] | |
variants (modulo AC) | |
1. $appKey | |
= $appKey.15 | |
~eph = ~eph.16 | |
dhmac = mac('g', h($appKey.15)) | |
z = 'g' | |
z.1 = 'g'^~eph.16 | |
z.2 = true | |
2. $appKey | |
= $appKey.15 | |
~eph = ~eph.16 | |
dhmac = mac('g'^inv(~eph.16), h($appKey.15)) | |
z = 'g'^inv(~eph.16) | |
z.1 = 'g' | |
z.2 = true | |
3. $appKey | |
= $appKey.17 | |
~eph = ~eph.18 | |
dhmac = dhmac.20 | |
z = 'g' | |
z.1 = 'g'^~eph.18 | |
z.2 = macv(dhmac.20, 'g', h($appKey.17)) | |
4. $appKey | |
= $appKey.17 | |
~eph = ~eph.18 | |
dhmac = dhmac.20 | |
z = 'g'^inv(~eph.18) | |
z.1 = 'g' | |
z.2 = macv(dhmac.20, 'g'^inv(~eph.18), h($appKey.17)) | |
5. $appKey | |
= $appKey.45 | |
~eph = ~eph.46 | |
dhmac = dhmac.48 | |
z = 'g'^X.87 | |
z.1 = 'g'^(~eph.46*X.87) | |
z.2 = macv(dhmac.48, 'g'^X.87, h($appKey.45)) | |
6. $appKey | |
= $appKey.46 | |
~eph = ~eph.47 | |
dhmac = dhmac.49 | |
z = 'g'^inv((~eph.47*x.89)) | |
z.1 = 'g'^inv(x.89) | |
z.2 = macv(dhmac.49, 'g'^inv((~eph.47*x.89)), h($appKey.46)) | |
7. $appKey | |
= $appKey.46 | |
~eph = ~eph.47 | |
dhmac = dhmac.49 | |
z = 'g'^(x.89*inv(~eph.47)) | |
z.1 = 'g'^x.89 | |
z.2 = macv(dhmac.49, 'g'^(x.89*inv(~eph.47)), h($appKey.46)) | |
8. $appKey | |
= $appKey.46 | |
~eph = ~eph.47 | |
dhmac = mac('g'^x.89, h($appKey.46)) | |
z = 'g'^x.89 | |
z.1 = 'g'^(~eph.47*x.89) | |
z.2 = true | |
9. $appKey | |
= $appKey.47 | |
~eph = ~eph.48 | |
dhmac = dhmac.50 | |
z = 'g'^(x.91*inv((~eph.48*x.90))) | |
z.1 = 'g'^(x.91*inv(x.90)) | |
z.2 = macv(dhmac.50, 'g'^(x.91*inv((~eph.48*x.90))), h($appKey.47)) | |
10. $appKey | |
= $appKey.47 | |
~eph = ~eph.48 | |
dhmac = mac('g'^inv((~eph.48*x.91)), h($appKey.47)) | |
z = 'g'^inv((~eph.48*x.91)) | |
z.1 = 'g'^inv(x.91) | |
z.2 = true | |
11. $appKey | |
= $appKey.47 | |
~eph = ~eph.48 | |
dhmac = mac('g'^(x.91*inv(~eph.48)), h($appKey.47)) | |
z = 'g'^(x.91*inv(~eph.48)) | |
z.1 = 'g'^x.91 | |
z.2 = true | |
12. $appKey | |
= $appKey.48 | |
~eph = ~eph.49 | |
dhmac = mac('g'^(x.93*inv((~eph.49*x.92))), h($appKey.48)) | |
z = 'g'^(x.93*inv((~eph.49*x.92))) | |
z.1 = 'g'^(x.93*inv(x.92)) | |
z.2 = true | |
*/ | |
rule (modulo E) Client_recvChal: | |
[ | |
Client_chalSent( A, S, ltkA, eph, <pkSdh, pkSpk>, $appKey ), | |
In( <'g'^X, dhmac> ) | |
] | |
--[ True( macv(dhmac, 'g'^X, h(<'g'^X^eph, $appKey>)) ), Reach( ) ]-> | |
[ Client_authSent( A, S, 'g'^X, eph, <pkSdh, pkSpk>, $appKey ) ] | |
/* | |
rule (modulo AC) Client_recvChal: | |
[ | |
Client_chalSent( A, S, ltkA, eph, <pkSdh, pkSpk>, $appKey ), | |
In( <z, dhmac> ) | |
] | |
--[ True( z.1 ), Reach( ) ]-> | |
[ Client_authSent( A, S, z, eph, <pkSdh, pkSpk>, $appKey ) ] | |
variants (modulo AC) | |
1. $appKey | |
= $appKey.12 | |
dhmac = dhmac.12 | |
eph = eph.12 | |
z = 'g' | |
z.1 = macv(dhmac.12, 'g', h(<'g'^eph.12, $appKey.12>)) | |
2. $appKey | |
= $appKey.12 | |
dhmac = dhmac.12 | |
eph = eph.12 | |
z = 'g'^X.12 | |
z.1 = macv(dhmac.12, 'g'^X.12, h(<'g'^(X.12*eph.12), $appKey.12>)) | |
3. $appKey | |
= $appKey.12 | |
dhmac = dhmac.12 | |
eph = one | |
z = 'g' | |
z.1 = macv(dhmac.12, 'g', h(<'g', $appKey.12>)) | |
4. $appKey | |
= $appKey.12 | |
dhmac = dhmac.12 | |
eph = one | |
z = 'g'^X.12 | |
z.1 = macv(dhmac.12, 'g'^X.12, h(<'g'^X.12, $appKey.12>)) | |
5. $appKey | |
= $x.12 | |
dhmac = mac('g', h(<'g', $x.12>)) | |
eph = one | |
z = 'g' | |
z.1 = true | |
6. $appKey | |
= $x.12 | |
dhmac = mac('g', h(<'g'^x.13, $x.12>)) | |
eph = x.13 | |
z = 'g' | |
z.1 = true | |
7. $appKey | |
= $x.12 | |
dhmac = mac('g'^x.13, h(<'g', $x.12>)) | |
eph = inv(x.13) | |
z = 'g'^x.13 | |
z.1 = true | |
8. $appKey | |
= $x.12 | |
dhmac = mac('g'^x.13, h(<'g'^x.13, $x.12>)) | |
eph = one | |
z = 'g'^x.13 | |
z.1 = true | |
9. $appKey | |
= $x.12 | |
dhmac = mac('g'^x.13, h(<'g'^x.14, $x.12>)) | |
eph = (x.14*inv(x.13)) | |
z = 'g'^x.13 | |
z.1 = true | |
10. $appKey | |
= $x.12 | |
dhmac = mac('g'^x.13, h(<'g'^(x.13*x.14), $x.12>)) | |
eph = x.14 | |
z = 'g'^x.13 | |
z.1 = true | |
11. $appKey | |
= $x.12 | |
dhmac = mac('g'^x.14, h(<'g'^inv(x.13), $x.12>)) | |
eph = inv((x.13*x.14)) | |
z = 'g'^x.14 | |
z.1 = true | |
12. $appKey | |
= $x.12 | |
dhmac = mac('g'^x.14, h(<'g'^(x.15*inv(x.13)), $x.12>)) | |
eph = (x.15*inv((x.13*x.14))) | |
z = 'g'^x.14 | |
z.1 = true | |
13. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv(x.13), h(<'g', $x.12>)) | |
eph = x.13 | |
z = 'g'^inv(x.13) | |
z.1 = true | |
14. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv(x.13), h(<'g'^x.14, $x.12>)) | |
eph = (x.13*x.14) | |
z = 'g'^inv(x.13) | |
z.1 = true | |
15. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv(x.13), h(<'g'^inv((x.13*x.14)), $x.12>)) | |
eph = inv(x.14) | |
z = 'g'^inv(x.13) | |
z.1 = true | |
16. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv(x.13), h(<'g'^(x.15*inv((x.13*x.14))), $x.12>)) | |
eph = (x.15*inv(x.14)) | |
z = 'g'^inv(x.13) | |
z.1 = true | |
17. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv((x.13*x.14)), h(<'g'^inv(x.13), $x.12>)) | |
eph = x.14 | |
z = 'g'^inv((x.13*x.14)) | |
z.1 = true | |
18. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv((x.13*x.14)), h(<'g'^(x.15*inv(x.13)), $x.12>)) | |
eph = (x.14*x.15) | |
z = 'g'^inv((x.13*x.14)) | |
z.1 = true | |
19. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv((x.14*x.15)), h(<'g'^inv((x.13*x.14)), $x.12>)) | |
eph = (x.15*inv(x.13)) | |
z = 'g'^inv((x.14*x.15)) | |
z.1 = true | |
20. $appKey | |
= $x.12 | |
dhmac = mac('g'^inv((x.14*x.15)), | |
h(<'g'^(x.16*inv((x.13*x.14))), $x.12>)) | |
eph = (x.15*x.16*inv(x.13)) | |
z = 'g'^inv((x.14*x.15)) | |
z.1 = true | |
21. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.13*x.14), h(<'g'^x.14, $x.12>)) | |
eph = inv(x.13) | |
z = 'g'^(x.13*x.14) | |
z.1 = true | |
22. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.13*x.14), h(<'g'^(x.14*x.15), $x.12>)) | |
eph = (x.15*inv(x.13)) | |
z = 'g'^(x.13*x.14) | |
z.1 = true | |
23. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*x.15), h(<'g'^(x.15*x.16*inv(x.13)), $x.12>)) | |
eph = (x.16*inv((x.13*x.14))) | |
z = 'g'^(x.14*x.15) | |
z.1 = true | |
24. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*x.15), h(<'g'^(x.15*inv(x.13)), $x.12>)) | |
eph = inv((x.13*x.14)) | |
z = 'g'^(x.14*x.15) | |
z.1 = true | |
25. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*x.15*inv(x.13)), h(<'g'^x.15, $x.12>)) | |
eph = (x.13*inv(x.14)) | |
z = 'g'^(x.14*x.15*inv(x.13)) | |
z.1 = true | |
26. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*x.15*inv(x.13)), h(<'g'^(x.15*x.16), $x.12>)) | |
eph = (x.13*x.16*inv(x.14)) | |
z = 'g'^(x.14*x.15*inv(x.13)) | |
z.1 = true | |
27. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*x.16*inv((x.13*x.15))), | |
h(<'g'^(x.16*x.17*inv(x.13)), $x.12>)) | |
eph = (x.15*x.17*inv(x.14)) | |
z = 'g'^(x.14*x.16*inv((x.13*x.15))) | |
z.1 = true | |
28. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*x.16*inv((x.13*x.15))), | |
h(<'g'^(x.16*inv(x.13)), $x.12>)) | |
eph = (x.15*inv(x.14)) | |
z = 'g'^(x.14*x.16*inv((x.13*x.15))) | |
z.1 = true | |
29. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*inv(x.13)), h(<'g', $x.12>)) | |
eph = (x.13*inv(x.14)) | |
z = 'g'^(x.14*inv(x.13)) | |
z.1 = true | |
30. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*inv(x.13)), h(<'g'^x.14, $x.12>)) | |
eph = x.13 | |
z = 'g'^(x.14*inv(x.13)) | |
z.1 = true | |
31. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*inv(x.13)), h(<'g'^x.15, $x.12>)) | |
eph = (x.13*x.15*inv(x.14)) | |
z = 'g'^(x.14*inv(x.13)) | |
z.1 = true | |
32. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*inv(x.13)), h(<'g'^(x.14*x.15), $x.12>)) | |
eph = (x.13*x.15) | |
z = 'g'^(x.14*inv(x.13)) | |
z.1 = true | |
33. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*inv((x.13*x.15))), h(<'g'^inv(x.13), $x.12>)) | |
eph = (x.15*inv(x.14)) | |
z = 'g'^(x.14*inv((x.13*x.15))) | |
z.1 = true | |
34. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.14*inv((x.13*x.15))), | |
h(<'g'^(x.16*inv(x.13)), $x.12>)) | |
eph = (x.15*x.16*inv(x.14)) | |
z = 'g'^(x.14*inv((x.13*x.15))) | |
z.1 = true | |
35. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*x.16*inv(x.13)), | |
h(<'g'^(x.16*x.17*inv(x.14)), $x.12>)) | |
eph = (x.13*x.17*inv((x.14*x.15))) | |
z = 'g'^(x.15*x.16*inv(x.13)) | |
z.1 = true | |
36. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*x.16*inv(x.13)), | |
h(<'g'^(x.16*x.17*inv((x.13*x.14))), $x.12>)) | |
eph = (x.17*inv((x.14*x.15))) | |
z = 'g'^(x.15*x.16*inv(x.13)) | |
z.1 = true | |
37. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*x.16*inv(x.13)), h(<'g'^(x.16*inv(x.14)), $x.12>)) | |
eph = (x.13*inv((x.14*x.15))) | |
z = 'g'^(x.15*x.16*inv(x.13)) | |
z.1 = true | |
38. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*x.16*inv(x.13)), | |
h(<'g'^(x.16*inv((x.13*x.14))), $x.12>)) | |
eph = inv((x.14*x.15)) | |
z = 'g'^(x.15*x.16*inv(x.13)) | |
z.1 = true | |
39. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv(x.13)), h(<'g'^inv((x.13*x.14)), $x.12>)) | |
eph = inv((x.14*x.15)) | |
z = 'g'^(x.15*inv(x.13)) | |
z.1 = true | |
40. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv(x.13)), | |
h(<'g'^(x.15*x.16*inv((x.13*x.14))), $x.12>)) | |
eph = (x.16*inv(x.14)) | |
z = 'g'^(x.15*inv(x.13)) | |
z.1 = true | |
41. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv(x.13)), h(<'g'^(x.16*inv(x.14)), $x.12>)) | |
eph = (x.13*x.16*inv((x.14*x.15))) | |
z = 'g'^(x.15*inv(x.13)) | |
z.1 = true | |
42. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv(x.13)), | |
h(<'g'^(x.16*inv((x.13*x.14))), $x.12>)) | |
eph = (x.16*inv((x.14*x.15))) | |
z = 'g'^(x.15*inv(x.13)) | |
z.1 = true | |
43. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv(x.14)), h(<'g'^inv(x.13), $x.12>)) | |
eph = (x.14*inv((x.13*x.15))) | |
z = 'g'^(x.15*inv(x.14)) | |
z.1 = true | |
44. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv(x.14)), | |
h(<'g'^(x.15*inv((x.13*x.14))), $x.12>)) | |
eph = inv(x.13) | |
z = 'g'^(x.15*inv(x.14)) | |
z.1 = true | |
45. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv((x.13*x.14))), | |
h(<'g'^(x.15*x.16*inv(x.13)), $x.12>)) | |
eph = (x.14*x.16) | |
z = 'g'^(x.15*inv((x.13*x.14))) | |
z.1 = true | |
46. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.15*inv((x.13*x.14))), | |
h(<'g'^(x.15*inv(x.13)), $x.12>)) | |
eph = x.14 | |
z = 'g'^(x.15*inv((x.13*x.14))) | |
z.1 = true | |
47. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.16*x.17*inv((x.13*x.14))), | |
h(<'g'^(x.17*x.18*inv((x.13*x.15))), $x.12>)) | |
eph = (x.14*x.18*inv((x.15*x.16))) | |
z = 'g'^(x.16*x.17*inv((x.13*x.14))) | |
z.1 = true | |
48. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.16*x.17*inv((x.13*x.14))), | |
h(<'g'^(x.17*inv((x.13*x.15))), $x.12>)) | |
eph = (x.14*inv((x.15*x.16))) | |
z = 'g'^(x.16*x.17*inv((x.13*x.14))) | |
z.1 = true | |
49. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.16*inv((x.13*x.14))), | |
h(<'g'^(x.17*inv((x.13*x.15))), $x.12>)) | |
eph = (x.14*x.17*inv((x.15*x.16))) | |
z = 'g'^(x.16*inv((x.13*x.14))) | |
z.1 = true | |
50. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.16*inv((x.13*x.15))), | |
h(<'g'^inv((x.13*x.14)), $x.12>)) | |
eph = (x.15*inv((x.14*x.16))) | |
z = 'g'^(x.16*inv((x.13*x.15))) | |
z.1 = true | |
51. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.16*inv((x.14*x.15))), | |
h(<'g'^(x.16*x.17*inv((x.13*x.14))), $x.12>)) | |
eph = (x.15*x.17*inv(x.13)) | |
z = 'g'^(x.16*inv((x.14*x.15))) | |
z.1 = true | |
52. $appKey | |
= $x.12 | |
dhmac = mac('g'^(x.16*inv((x.14*x.15))), | |
h(<'g'^(x.16*inv((x.13*x.14))), $x.12>)) | |
eph = (x.15*inv(x.13)) | |
z = 'g'^(x.16*inv((x.14*x.15))) | |
z.1 = true | |
53. $appKey | |
= $appKey.13 | |
dhmac = dhmac.13 | |
eph = x.12 | |
z = 'g'^inv(x.12) | |
z.1 = macv(dhmac.13, 'g'^inv(x.12), h(<'g', $appKey.13>)) | |
54. $appKey | |
= $appKey.13 | |
dhmac = dhmac.13 | |
eph = inv(x.12) | |
z = 'g'^x.12 | |
z.1 = macv(dhmac.13, 'g'^x.12, h(<'g', $appKey.13>)) | |
55. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = x.12 | |
z = 'g'^inv((x.12*x.13)) | |
z.1 = macv(dhmac.14, 'g'^inv((x.12*x.13)), | |
h(<'g'^inv(x.13), $appKey.14>)) | |
56. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = x.12 | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.14, 'g'^(x.13*inv(x.12)), h(<'g'^x.13, $appKey.14>)) | |
57. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = inv(x.12) | |
z = 'g'^(x.12*x.13) | |
z.1 = macv(dhmac.14, 'g'^(x.12*x.13), h(<'g'^x.13, $appKey.14>)) | |
58. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = inv(x.13) | |
z = 'g'^inv(x.12) | |
z.1 = macv(dhmac.14, 'g'^inv(x.12), | |
h(<'g'^inv((x.12*x.13)), $appKey.14>)) | |
59. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = inv((x.12*x.13)) | |
z = 'g'^x.12 | |
z.1 = macv(dhmac.14, 'g'^x.12, h(<'g'^inv(x.13), $appKey.14>)) | |
60. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = (x.12*x.13) | |
z = 'g'^inv(x.12) | |
z.1 = macv(dhmac.14, 'g'^inv(x.12), h(<'g'^x.13, $appKey.14>)) | |
61. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = (x.12*inv(x.13)) | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.14, 'g'^(x.13*inv(x.12)), h(<'g', $appKey.14>)) | |
62. $appKey | |
= $appKey.14 | |
dhmac = dhmac.14 | |
eph = (x.13*inv(x.12)) | |
z = 'g'^x.12 | |
z.1 = macv(dhmac.14, 'g'^x.12, h(<'g'^x.13, $appKey.14>)) | |
63. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = x.12 | |
z = 'g'^(x.13*inv((x.12*x.14))) | |
z.1 = macv(dhmac.15, 'g'^(x.13*inv((x.12*x.14))), | |
h(<'g'^(x.13*inv(x.14)), $appKey.15>)) | |
64. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = inv(x.12) | |
z = 'g'^(x.14*inv(x.13)) | |
z.1 = macv(dhmac.15, 'g'^(x.14*inv(x.13)), | |
h(<'g'^(x.14*inv((x.12*x.13))), $appKey.15>)) | |
65. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = inv((x.13*x.14)) | |
z = 'g'^(x.12*x.13) | |
z.1 = macv(dhmac.15, 'g'^(x.12*x.13), | |
h(<'g'^(x.12*inv(x.14)), $appKey.15>)) | |
66. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = inv((x.13*x.14)) | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.15, 'g'^(x.13*inv(x.12)), | |
h(<'g'^inv((x.12*x.14)), $appKey.15>)) | |
67. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.12*x.14) | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.15, 'g'^(x.13*inv(x.12)), | |
h(<'g'^(x.13*x.14), $appKey.15>)) | |
68. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.12*x.14*inv(x.13)) | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.15, 'g'^(x.13*inv(x.12)), h(<'g'^x.14, $appKey.15>)) | |
69. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.12*inv(x.13)) | |
z = 'g'^(x.13*x.14*inv(x.12)) | |
z.1 = macv(dhmac.15, 'g'^(x.13*x.14*inv(x.12)), | |
h(<'g'^x.14, $appKey.15>)) | |
70. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.12*inv((x.13*x.14))) | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.15, 'g'^(x.13*inv(x.12)), | |
h(<'g'^inv(x.14), $appKey.15>)) | |
71. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.13*x.14) | |
z = 'g'^inv((x.12*x.13)) | |
z.1 = macv(dhmac.15, 'g'^inv((x.12*x.13)), | |
h(<'g'^(x.14*inv(x.12)), $appKey.15>)) | |
72. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.14*inv(x.12)) | |
z = 'g'^inv((x.13*x.14)) | |
z.1 = macv(dhmac.15, 'g'^inv((x.13*x.14)), | |
h(<'g'^inv((x.12*x.13)), $appKey.15>)) | |
73. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.14*inv(x.12)) | |
z = 'g'^(x.12*x.13) | |
z.1 = macv(dhmac.15, 'g'^(x.12*x.13), h(<'g'^(x.13*x.14), $appKey.15>)) | |
74. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.14*inv(x.12)) | |
z = 'g'^(x.12*inv((x.13*x.14))) | |
z.1 = macv(dhmac.15, 'g'^(x.12*inv((x.13*x.14))), | |
h(<'g'^inv(x.13), $appKey.15>)) | |
75. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.14*inv(x.13)) | |
z = 'g'^inv(x.12) | |
z.1 = macv(dhmac.15, 'g'^inv(x.12), | |
h(<'g'^(x.14*inv((x.12*x.13))), $appKey.15>)) | |
76. $appKey | |
= $appKey.15 | |
dhmac = dhmac.15 | |
eph = (x.14*inv((x.12*x.13))) | |
z = 'g'^x.12 | |
z.1 = macv(dhmac.15, 'g'^x.12, h(<'g'^(x.14*inv(x.13)), $appKey.15>)) | |
77. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = inv((x.14*x.15)) | |
z = 'g'^(x.13*x.14*inv(x.12)) | |
z.1 = macv(dhmac.16, 'g'^(x.13*x.14*inv(x.12)), | |
h(<'g'^(x.13*inv((x.12*x.15))), $appKey.16>)) | |
78. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.12*x.15*inv(x.13)) | |
z = 'g'^(x.13*x.14*inv(x.12)) | |
z.1 = macv(dhmac.16, 'g'^(x.13*x.14*inv(x.12)), | |
h(<'g'^(x.14*x.15), $appKey.16>)) | |
79. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.12*x.15*inv((x.13*x.14))) | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.16, 'g'^(x.13*inv(x.12)), | |
h(<'g'^(x.15*inv(x.14)), $appKey.16>)) | |
80. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.12*inv((x.14*x.15))) | |
z = 'g'^(x.13*x.14*inv(x.12)) | |
z.1 = macv(dhmac.16, 'g'^(x.13*x.14*inv(x.12)), | |
h(<'g'^(x.13*inv(x.15)), $appKey.16>)) | |
81. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.14*x.15) | |
z = 'g'^(x.12*inv((x.13*x.14))) | |
z.1 = macv(dhmac.16, 'g'^(x.12*inv((x.13*x.14))), | |
h(<'g'^(x.12*x.15*inv(x.13)), $appKey.16>)) | |
82. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.14*x.15*inv(x.12)) | |
z = 'g'^inv((x.13*x.14)) | |
z.1 = macv(dhmac.16, 'g'^inv((x.13*x.14)), | |
h(<'g'^(x.15*inv((x.12*x.13))), $appKey.16>)) | |
83. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.14*x.15*inv(x.12)) | |
z = 'g'^(x.12*inv((x.13*x.14))) | |
z.1 = macv(dhmac.16, 'g'^(x.12*inv((x.13*x.14))), | |
h(<'g'^(x.15*inv(x.13)), $appKey.16>)) | |
84. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.14*inv((x.12*x.15))) | |
z = 'g'^(x.12*inv((x.13*x.14))) | |
z.1 = macv(dhmac.16, 'g'^(x.12*inv((x.13*x.14))), | |
h(<'g'^inv((x.13*x.15)), $appKey.16>)) | |
85. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.15*inv(x.12)) | |
z = 'g'^(x.12*x.13*inv((x.14*x.15))) | |
z.1 = macv(dhmac.16, 'g'^(x.12*x.13*inv((x.14*x.15))), | |
h(<'g'^(x.13*inv(x.14)), $appKey.16>)) | |
86. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.15*inv(x.12)) | |
z = 'g'^(x.13*inv((x.14*x.15))) | |
z.1 = macv(dhmac.16, 'g'^(x.13*inv((x.14*x.15))), | |
h(<'g'^(x.13*inv((x.12*x.14))), $appKey.16>)) | |
87. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.15*inv(x.13)) | |
z = 'g'^(x.14*inv(x.12)) | |
z.1 = macv(dhmac.16, 'g'^(x.14*inv(x.12)), | |
h(<'g'^(x.14*x.15*inv((x.12*x.13))), $appKey.16>)) | |
88. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.15*inv((x.13*x.14))) | |
z = 'g'^(x.12*x.13) | |
z.1 = macv(dhmac.16, 'g'^(x.12*x.13), | |
h(<'g'^(x.12*x.15*inv(x.14)), $appKey.16>)) | |
89. $appKey | |
= $appKey.16 | |
dhmac = dhmac.16 | |
eph = (x.15*inv((x.13*x.14))) | |
z = 'g'^(x.13*inv(x.12)) | |
z.1 = macv(dhmac.16, 'g'^(x.13*inv(x.12)), | |
h(<'g'^(x.15*inv((x.12*x.14))), $appKey.16>)) | |
90. $appKey | |
= $appKey.17 | |
dhmac = dhmac.17 | |
eph = (x.12*x.16*inv((x.14*x.15))) | |
z = 'g'^(x.13*x.14*inv(x.12)) | |
z.1 = macv(dhmac.17, 'g'^(x.13*x.14*inv(x.12)), | |
h(<'g'^(x.13*x.16*inv(x.15)), $appKey.17>)) | |
91. $appKey | |
= $appKey.17 | |
dhmac = dhmac.17 | |
eph = (x.14*x.16*inv((x.12*x.15))) | |
z = 'g'^(x.12*inv((x.13*x.14))) | |
z.1 = macv(dhmac.17, 'g'^(x.12*inv((x.13*x.14))), | |
h(<'g'^(x.16*inv((x.13*x.15))), $appKey.17>)) | |
92. $appKey | |
= $appKey.17 | |
dhmac = dhmac.17 | |
eph = (x.15*x.16*inv(x.12)) | |
z = 'g'^(x.12*x.13*inv((x.14*x.15))) | |
z.1 = macv(dhmac.17, 'g'^(x.12*x.13*inv((x.14*x.15))), | |
h(<'g'^(x.13*x.16*inv(x.14)), $appKey.17>)) | |
93. $appKey | |
= $appKey.17 | |
dhmac = dhmac.17 | |
eph = (x.15*x.16*inv(x.12)) | |
z = 'g'^(x.13*inv((x.14*x.15))) | |
z.1 = macv(dhmac.17, 'g'^(x.13*inv((x.14*x.15))), | |
h(<'g'^(x.13*x.16*inv((x.12*x.14))), $appKey.17>)) | |
94. $appKey | |
= $appKey.17 | |
dhmac = dhmac.17 | |
eph = (x.15*inv((x.13*x.16))) | |
z = 'g'^(x.12*x.13*inv((x.14*x.15))) | |
z.1 = macv(dhmac.17, 'g'^(x.12*x.13*inv((x.14*x.15))), | |
h(<'g'^(x.12*inv((x.14*x.16))), $appKey.17>)) | |
95. $appKey | |
= $appKey.17 | |
dhmac = dhmac.17 | |
eph = (x.16*inv((x.14*x.15))) | |
z = 'g'^(x.13*x.14*inv(x.12)) | |
z.1 = macv(dhmac.17, 'g'^(x.13*x.14*inv(x.12)), | |
h(<'g'^(x.13*x.16*inv((x.12*x.15))), $appKey.17>)) | |
96. $appKey | |
= $appKey.18 | |
dhmac = dhmac.18 | |
eph = (x.15*x.17*inv((x.13*x.16))) | |
z = 'g'^(x.12*x.13*inv((x.14*x.15))) | |
z.1 = macv(dhmac.18, 'g'^(x.12*x.13*inv((x.14*x.15))), | |
h(<'g'^(x.12*x.17*inv((x.14*x.16))), $appKey.18>)) | |
*/ | |
axiom Eq: | |
"∀ x y #i. (Eq( x, y ) @ #i) ⇒ (x = y)" | |
// safety formula | |
axiom IsTrue: | |
"∀ x #i. (True( x ) @ #i) ⇒ (x = true)" | |
// safety formula | |
lemma Reachable: | |
exists-trace "∃ #i. (Reach( ) @ #i) ∧ (¬(∃ X #j. LtkReveal( X ) @ #j))" | |
/* | |
guarded formula characterizing all satisfying traces: | |
"∃ #i. (Reach( ) @ #i) ∧ ∀ X #j. (LtkReveal( X ) @ #j) ⇒ ⊥" | |
*/ | |
by sorry | |
lemma Client_auth: | |
all-traces | |
"∀ S k #i. | |
(SessKeyI( S, k ) @ #i) ⇒ | |
((∃ #a. SessKeyR( S, k ) @ #a) ∨ | |
(∃ #r. (LtkReveal( S ) @ #r) ∧ (#r < #i)))" | |
/* | |
guarded formula characterizing all counter-examples: | |
"∃ S k #i. | |
(SessKeyI( S, k ) @ #i) | |
∧ | |
(∀ #a. (SessKeyR( S, k ) @ #a) ⇒ ⊥) ∧ | |
(∀ #r. (LtkReveal( S ) @ #r) ⇒ ¬(#r < #i))" | |
*/ | |
by sorry | |
/* | |
WARNING: the following wellformedness checks failed! | |
lemma actions: | |
lemma `Client_auth' references action | |
(ProtoFact Linear "SessKeyI" 2,2,Linear) | |
but no rule has such an action. | |
lemma `Client_auth' references action | |
(ProtoFact Linear "SessKeyR" 2,2,Linear) | |
but no rule has such an action. | |
*/ | |
end | |
============================================================================== | |
summary of summaries: | |
analyzed: shs.spthy | |
WARNING: 2 wellformedness check failed! | |
The analysis results might be wrong! | |
Reachable (exists-trace): analysis incomplete (1 steps) | |
Client_auth (all-traces): analysis incomplete (1 steps) | |
============================================================================== |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment