src/HOL/Auth/TLS.ML
changeset 8054 2ce57ef2a4aa
parent 7057 b9ddbb925939
child 10833 c0844a30ea4e
equal deleted inserted replaced
8053:37ebdaf3bb91 8054:2ce57ef2a4aa
   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 |]           \