equal
deleted
inserted
replaced
177 etac tls.induct i THEN |
177 etac tls.induct i THEN |
178 ClientKeyExch_tac (i+6) THEN (*ClientKeyExch*) |
178 ClientKeyExch_tac (i+6) THEN (*ClientKeyExch*) |
179 ALLGOALS (asm_simp_tac (simpset() addsimps split_ifs @ pushes)) THEN |
179 ALLGOALS (asm_simp_tac (simpset() addsimps split_ifs @ pushes)) THEN |
180 (*Remove instances of pubK B: the Spy already knows all public keys. |
180 (*Remove instances of pubK B: the Spy already knows all public keys. |
181 Combining the two simplifier calls makes them run extremely slowly.*) |
181 Combining the two simplifier calls makes them run extremely slowly.*) |
182 ALLGOALS (asm_simp_tac (simpset() addsimps [insert_absorb])); |
182 ALLGOALS (asm_simp_tac (simpset() addsimps [image_eq_UN, insert_absorb])); |
183 |
183 |
184 |
184 |
185 (*** Properties of items found in Notes ***) |
185 (*** Properties of items found in Notes ***) |
186 |
186 |
187 Goal "[| Notes A {|Agent B, X|} : set evs; evs : tls |] \ |
187 Goal "[| Notes A {|Agent B, X|} : set evs; evs : tls |] \ |
403 \ ==> Key K ~: parts (spies evs) & (ALL Y. Crypt K Y ~: parts (spies evs))"; |
403 \ ==> Key K ~: parts (spies evs) & (ALL Y. Crypt K Y ~: parts (spies evs))"; |
404 by (etac rev_mp 1); |
404 by (etac rev_mp 1); |
405 by (hyp_subst_tac 1); |
405 by (hyp_subst_tac 1); |
406 by (analz_induct_tac 1); |
406 by (analz_induct_tac 1); |
407 (*SpyKeys*) |
407 (*SpyKeys*) |
408 by (Blast_tac 3); |
408 by (Blast_tac 2); |
409 (*Fake*) |
409 (*Fake*) |
410 by (blast_tac (claset() addIs [parts_insertI]) 2); |
410 by (blast_tac (claset() addIs [parts_insertI]) 1); |
411 (** LEVEL 6 **) |
411 (** LEVEL 6 **) |
412 (*Oops*) |
412 (*Oops*) |
413 by (REPEAT |
413 by (REPEAT |
414 (force_tac (claset() addSDs [Notes_Crypt_parts_spies, |
414 (force_tac (claset() addSDs [Notes_Crypt_parts_spies, |
415 Notes_master_imp_Crypt_PMS], |
415 Notes_master_imp_Crypt_PMS], |
438 \ ==> Key (sessionK((NA,NB,M),role)) ~: parts (spies evs)"; |
438 \ ==> Key (sessionK((NA,NB,M),role)) ~: parts (spies evs)"; |
439 by (etac rev_mp 1); |
439 by (etac rev_mp 1); |
440 by (etac rev_mp 1); |
440 by (etac rev_mp 1); |
441 by (analz_induct_tac 1); (*5 seconds*) |
441 by (analz_induct_tac 1); (*5 seconds*) |
442 (*SpyKeys*) |
442 (*SpyKeys*) |
443 by (blast_tac (claset() addDs [Says_imp_spies RS analz.Inj]) 3); |
443 by (blast_tac (claset() addDs [Says_imp_spies RS analz.Inj]) 2); |
444 (*Fake*) |
444 (*Fake*) |
445 by (spy_analz_tac 2); |
445 by (spy_analz_tac 1); |
446 (*Base*) |
|
447 by (Blast_tac 1); |
|
448 qed "sessionK_not_spied"; |
446 qed "sessionK_not_spied"; |
449 |
447 |
450 |
448 |
451 (*If A sends ClientKeyExch to an honest B, then the PMS will stay secret.*) |
449 (*If A sends ClientKeyExch to an honest B, then the PMS will stay secret.*) |
452 Goal "[| evs : tls; A ~: bad; B ~: bad |] \ |
450 Goal "[| evs : tls; A ~: bad; B ~: bad |] \ |