src/HOL/Auth/Yahalom_Bad.thy
changeset 69597 ff784d5a5bfb
parent 67613 ce654b0e6d69
child 76287 cdc14f94c754
equal deleted inserted replaced
69596:c8a2755bf220 69597:ff784d5a5bfb
   104 
   104 
   105 lemmas YM4_parts_knows_Spy =
   105 lemmas YM4_parts_knows_Spy =
   106        YM4_analz_knows_Spy [THEN analz_into_parts]
   106        YM4_analz_knows_Spy [THEN analz_into_parts]
   107 
   107 
   108 
   108 
   109 text\<open>Theorems of the form @{term "X \<notin> parts (knows Spy evs)"} imply 
   109 text\<open>Theorems of the form \<^term>\<open>X \<notin> parts (knows Spy evs)\<close> imply 
   110             that NOBODY sends messages containing X!\<close>
   110             that NOBODY sends messages containing X!\<close>
   111 
   111 
   112 text\<open>Spy never sees a good agent's shared key!\<close>
   112 text\<open>Spy never sees a good agent's shared key!\<close>
   113 lemma Spy_see_shrK [simp]:
   113 lemma Spy_see_shrK [simp]:
   114      "evs \<in> yahalom ==> (Key (shrK A) \<in> parts (knows Spy evs)) = (A \<in> bad)"
   114      "evs \<in> yahalom ==> (Key (shrK A) \<in> parts (knows Spy evs)) = (A \<in> bad)"
   332        frule_tac [6] YM4_parts_knows_Spy)
   332        frule_tac [6] YM4_parts_knows_Spy)
   333 apply (analz_mono_contra, simp_all)
   333 apply (analz_mono_contra, simp_all)
   334 txt\<open>Fake\<close>
   334 txt\<open>Fake\<close>
   335 apply blast
   335 apply blast
   336 txt\<open>YM3: by \<open>new_keys_not_used\<close>, the message
   336 txt\<open>YM3: by \<open>new_keys_not_used\<close>, the message
   337    @{term "Crypt K (Nonce NB)"} could not exist\<close>
   337    \<^term>\<open>Crypt K (Nonce NB)\<close> could not exist\<close>
   338 apply (force dest!: Crypt_imp_keysFor)
   338 apply (force dest!: Crypt_imp_keysFor)
   339 txt\<open>YM4: was @{term "Crypt K (Nonce NB)"} the very last message?
   339 txt\<open>YM4: was \<^term>\<open>Crypt K (Nonce NB)\<close> the very last message?
   340     If not, use the induction hypothesis\<close>
   340     If not, use the induction hypothesis\<close>
   341 apply (simp add: ex_disj_distrib)
   341 apply (simp add: ex_disj_distrib)
   342 txt\<open>yes: apply unicity of session keys\<close>
   342 txt\<open>yes: apply unicity of session keys\<close>
   343 apply (blast dest!: Gets_imp_Says A_trusts_YM3 B_trusts_YM4_shrK
   343 apply (blast dest!: Gets_imp_Says A_trusts_YM3 B_trusts_YM4_shrK
   344                     Crypt_Spy_analz_bad
   344                     Crypt_Spy_analz_bad