From 7bb1a48f8717748c7e49bbf161d91a0160471fff Mon Sep 17 00:00:00 2001 From: Tim Makarios Date: Thu, 19 Feb 2015 16:34:58 +1300 Subject: [PATCH] Defined indistinguishable --- Communication.thy | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Communication.thy b/Communication.thy index 71e8f70..20f4acd 100644 --- a/Communication.thy +++ b/Communication.thy @@ -54,8 +54,32 @@ inductive constructible :: "actor \ message set \ messag \ constructible a Ms (MessageList l)" -- {* a list of otherwise constructible messages *} -subsubsection {* Indistinguishability of encrypted messages *} +subsubsection {* Indistinguishability of messages *} datatype_new agent = CommunicationLayer | Actor actor + +text {* What pairs of messages should we not expect a particular agent to be able + to distinguish between, given a particular set of messages to work from? + This definition isn't intended to express a limit on what an attacker might + be able to do; rather, it's meant to limit what we might reasonably expect + an honest agent to be able to do without resorting to sophisticated + cryptanalysis or anything similarly difficult. *} +inductive indistinguishable :: "agent \ message set \ message \ message \ bool" + where "indistinguishable CommunicationLayer _ _ _" + | "indistinguishable _ _ m m" + | "\ constructible a Ms m \ \ constructible a Ms m' + \ indistinguishable (Actor a) Ms (Signature _ m) (Signature _ m')" + | "indistinguishable A Ms m m' + \ indistinguishable A Ms (Signature a m) (Signature a m')" + | "A \ Actor a \ A \ Actor b \ A \ Actor c \ A \ Actor d + \ indistinguishable A _ (Encrypted a b _) (Encrypted c d _)" + | "indistinguishable A Ms m m' + \ indistinguishable A Ms (Encrypted a b m) (Encrypted a b m')" + | "indistinghishable A Ms m m' + \ indistinguishable A Ms (MessageList ms) (MessageList ms') + \ indistinguishable A Ms + (MessageList (m # ms)) + (MessageList (m' # ms'))" + type_synonym encrypted_message_data = "actor \ actor \ message" type_synonym encrypted_message_map = "encrypted_message_data \ encrypted_message_data" -- 2.11.4.GIT