equal
deleted
inserted
replaced
12 |
12 |
13 Pretty.setdepth 25; |
13 Pretty.setdepth 25; |
14 |
14 |
15 |
15 |
16 (*A "possibility property": there are traces that reach the end*) |
16 (*A "possibility property": there are traces that reach the end*) |
17 Goal "[| A ~= B; A ~= Server; B ~= Server |] \ |
17 Goal "A ~= Server \ |
18 \ ==> EX X NB K. EX evs: yahalom. \ |
18 \ ==> EX X NB K. EX evs: yahalom. \ |
19 \ Says A B {|X, Crypt K (Nonce NB)|} : set evs"; |
19 \ Says A B {|X, Crypt K (Nonce NB)|} : set evs"; |
20 by (REPEAT (resolve_tac [exI,bexI] 1)); |
20 by (REPEAT (resolve_tac [exI,bexI] 1)); |
21 by (rtac (yahalom.Nil RS yahalom.YM1 RS yahalom.YM2 RS yahalom.YM3 RS |
21 by (rtac (yahalom.Nil RS yahalom.YM1 RS yahalom.YM2 RS yahalom.YM3 RS |
22 yahalom.YM4) 2); |
22 yahalom.YM4) 2); |
23 by possibility_tac; |
23 by possibility_tac; |
24 result(); |
24 result(); |
25 |
25 |
26 |
26 |
27 (**** Inductive proofs about yahalom ****) |
27 (**** Inductive proofs about yahalom ****) |
28 |
|
29 (*Nobody sends themselves messages*) |
|
30 Goal "evs: yahalom ==> ALL X. Says A A X ~: set evs"; |
|
31 by (etac yahalom.induct 1); |
|
32 by Auto_tac; |
|
33 qed_spec_mp "not_Says_to_self"; |
|
34 Addsimps [not_Says_to_self]; |
|
35 AddSEs [not_Says_to_self RSN (2, rev_notE)]; |
|
36 |
28 |
37 |
29 |
38 (** For reasoning about the encrypted portion of messages **) |
30 (** For reasoning about the encrypted portion of messages **) |
39 |
31 |
40 (*Lets us treat YM4 using a similar argument as for the Fake case.*) |
32 (*Lets us treat YM4 using a similar argument as for the Fake case.*) |
107 |
99 |
108 |
100 |
109 (*Describes the form of K when the Server sends this message. Useful for |
101 (*Describes the form of K when the Server sends this message. Useful for |
110 Oops as well as main secrecy property.*) |
102 Oops as well as main secrecy property.*) |
111 Goal "[| Says Server A {|Crypt (shrK A) {|Agent B, Key K, na, nb|}, X|} \ |
103 Goal "[| Says Server A {|Crypt (shrK A) {|Agent B, Key K, na, nb|}, X|} \ |
112 \ : set evs; \ |
104 \ : set evs; evs : yahalom |] \ |
113 \ evs : yahalom |] \ |
|
114 \ ==> K ~: range shrK"; |
105 \ ==> K ~: range shrK"; |
115 by (etac rev_mp 1); |
106 by (etac rev_mp 1); |
116 by (etac yahalom.induct 1); |
107 by (etac yahalom.induct 1); |
117 by (ALLGOALS Asm_simp_tac); |
108 by (ALLGOALS Asm_simp_tac); |
118 by (Blast_tac 1); |
109 by (Blast_tac 1); |