src/HOL/SET_Protocol/Cardholder_Registration.thy
changeset 63648 f9f3006a5579
parent 63167 0909deb8059b
child 67443 3abf6a722518
equal deleted inserted replaced
63647:437bd400d808 63648:f9f3006a5579
   491   DK isn't a private encryption key may be an artifact of the particular
   491   DK isn't a private encryption key may be an artifact of the particular
   492   definition of KeyCryptKey.\<close>
   492   definition of KeyCryptKey.\<close>
   493 lemma K_fresh_not_KeyCryptKey:
   493 lemma K_fresh_not_KeyCryptKey:
   494      "[|\<forall>C. DK \<noteq> priEK C; Key K \<notin> used evs|] ==> ~ KeyCryptKey DK K evs"
   494      "[|\<forall>C. DK \<noteq> priEK C; Key K \<notin> used evs|] ==> ~ KeyCryptKey DK K evs"
   495 apply (induct evs)
   495 apply (induct evs)
   496 apply (auto simp add: parts_insert2 split add: event.split)
   496 apply (auto simp add: parts_insert2 split: event.split)
   497 done
   497 done
   498 
   498 
   499 
   499 
   500 text\<open>This holds because if (priEK (CA i)) appears in any traffic then it must
   500 text\<open>This holds because if (priEK (CA i)) appears in any traffic then it must
   501   be known to the Spy, by @{term Spy_see_private_Key}\<close>
   501   be known to the Spy, by @{term Spy_see_private_Key}\<close>
   511 by (erule set_cr.induct, analz_mono_contra, auto)
   511 by (erule set_cr.induct, analz_mono_contra, auto)
   512 
   512 
   513 text\<open>Lemma for message 5: pubSK C is never used to encrypt Keys.\<close>
   513 text\<open>Lemma for message 5: pubSK C is never used to encrypt Keys.\<close>
   514 lemma pubSK_not_KeyCryptKey [simp]: "~ KeyCryptKey (pubSK C) K evs"
   514 lemma pubSK_not_KeyCryptKey [simp]: "~ KeyCryptKey (pubSK C) K evs"
   515 apply (induct_tac "evs")
   515 apply (induct_tac "evs")
   516 apply (auto simp add: parts_insert2 split add: event.split)
   516 apply (auto simp add: parts_insert2 split: event.split)
   517 done
   517 done
   518 
   518 
   519 text\<open>Lemma for message 6: either cardSK is compromised (when we don't care)
   519 text\<open>Lemma for message 6: either cardSK is compromised (when we don't care)
   520   or else cardSK hasn't been used to encrypt K.  Previously we treated
   520   or else cardSK hasn't been used to encrypt K.  Previously we treated
   521   message 5 in the same way, but the current model assumes that rule
   521   message 5 in the same way, but the current model assumes that rule
   688   or else cardSK hasn't been used to encrypt K.\<close>
   688   or else cardSK hasn't been used to encrypt K.\<close>
   689 
   689 
   690 text\<open>Lemma for message 5: pubSK C is never used to encrypt Nonces.\<close>
   690 text\<open>Lemma for message 5: pubSK C is never used to encrypt Nonces.\<close>
   691 lemma pubSK_not_KeyCryptNonce [simp]: "~ KeyCryptNonce (pubSK C) N evs"
   691 lemma pubSK_not_KeyCryptNonce [simp]: "~ KeyCryptNonce (pubSK C) N evs"
   692 apply (induct_tac "evs")
   692 apply (induct_tac "evs")
   693 apply (auto simp add: parts_insert2 split add: event.split)
   693 apply (auto simp add: parts_insert2 split: event.split)
   694 done
   694 done
   695 
   695 
   696 text\<open>Lemma for message 6: either cardSK is compromised (when we don't care)
   696 text\<open>Lemma for message 6: either cardSK is compromised (when we don't care)
   697   or else cardSK hasn't been used to encrypt K.\<close>
   697   or else cardSK hasn't been used to encrypt K.\<close>
   698 lemma msg6_KeyCryptNonce_disj:
   698 lemma msg6_KeyCryptNonce_disj: