(* Title: HOL/Auth/Guard/Guard_OtwayRees.thy Author: Frederic Blanqui, University of Cambridge Computer Laboratory Copyright 2002 University of Cambridge *)
section‹Otway-Rees Protocol›
theory Guard_OtwayRees imports Guard_Shared begin
subsection‹messages used in the protocol›
abbreviation
nil :: "msg"where "nil == Number 0"
abbreviation
or1 :: "agent => agent => nat => event"where "or1 A B NA == Says A B {Nonce NA, Agent A, Agent B, Ciph A {Nonce NA, Agent A, Agent B}}"
abbreviation
or1' :: "agent => agent => agent => nat => msg => event"where "or1' A' A B NA X == Says A' B {Nonce NA, Agent A, Agent B, X}"
abbreviation
or2 :: "agent => agent => nat => nat => msg => event"where "or2 A B NA NB X == Says B Server {Nonce NA, Agent A, Agent B, X, Ciph B {Nonce NA, Nonce NB, Agent A, Agent B}}"
abbreviation
or2' :: "agent => agent => agent => nat => nat => event"where "or2' B' A B NA NB == Says B' Server {Nonce NA, Agent A, Agent B, Ciph A {Nonce NA, Agent A, Agent B}, Ciph B {Nonce NA, Nonce NB, Agent A, Agent B}}"
abbreviation
or3 :: "agent => agent => nat => nat => key => event"where "or3 A B NA NB K == Says Server B {Nonce NA, Ciph A {Nonce NA, Key K}, Ciph B {Nonce NB, Key K}}"
abbreviation
or3':: "agent => msg => agent => agent => nat => nat => key => event"where "or3' S Y A B NA NB K == Says S B {Nonce NA, Y, Ciph B {Nonce NB, Key K}}"
abbreviation
or4 :: "agent => agent => nat => msg => event"where "or4 A B NA X == Says B A {Nonce NA, X, nil}"
abbreviation
or4' :: "agent => agent => nat => key => event"where "or4' B' A NA K == Says B' A {Nonce NA, Ciph A {Nonce NA, Key K}, nil}"
subsection‹definition of the protocol›
inductive_set or :: "event list set" where
Nil: "[] ∈ or"
| Fake: "[evs ∈ or; X ∈ synth (analz (spies evs))]==> Says Spy B X # evs ∈ or"
| OR1: "[evs1 ∈ or; Nonce NA ∉ used evs1]==> or1 A B NA # evs1 ∈ or"
| OR2: "[evs2 ∈ or; or1' A' A B NA X ∈ set evs2; Nonce NB ∉ used evs2] ==> or2 A B NA NB X # evs2 ∈ or"
| OR3: "[evs3 ∈ or; or2' B' A B NA NB ∈ set evs3; Key K ∉ used evs3] ==> or3 A B NA NB K # evs3 ∈ or"
| OR4: "[evs4 ∈ or; or2 A B NA NB X ∈ set evs4; or3' S Y A B NA NB K ∈ set evs4] ==> or4 A B NA X # evs4 ∈ or"
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.