src/HOL/Auth/Kerberos_BAN.thy
author wenzelm
Thu, 27 Aug 1998 16:54:55 +0200
changeset 5393 7299e531d481
parent 5053 75d20f367e94
child 5434 9b4bed3f394c
permissions -rw-r--r--
fixed ISABELLE_USEDIR_OPTIONS;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5053
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     1
(*  Title:      HOL/Auth/Kerberos_BAN
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     2
    ID:         $Id$
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     3
    Author:     Giampaolo Bella, Cambridge University Computer Laboratory
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     4
    Copyright   1998  University of Cambridge
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     5
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     6
The Kerberos protocol, BAN version.
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     7
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     8
From page 251 of
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
     9
  Burrows, Abadi and Needham.  A Logic of Authentication.
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    10
  Proc. Royal Soc. 426 (1989)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    11
*)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    12
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    13
Kerberos_BAN = Shared + 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    14
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    15
(* Temporal modelization: session keys can be leaked 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    16
                          ONLY when they have expired *)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    17
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    18
syntax
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    19
    CT :: event list=>nat
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    20
    Expired :: [nat, event list] => bool
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    21
    RecentAuth :: [nat, event list] => bool
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    22
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    23
consts
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    24
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    25
    (*Duration of the session key*)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    26
    SesKeyLife   :: nat
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    27
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    28
    (*Duration of the authenticator*)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    29
    AutLife :: nat
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    30
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    31
rules
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    32
    (*The ticket should remain fresh for two journeys on the network at least*)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    33
    SesKeyLife_LB    "2 <= SesKeyLife"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    34
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    35
    (*The authenticator only for one journey*)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    36
    AutLife_LB    "1 <= AutLife"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    37
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    38
translations
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    39
   "CT" == "length"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    40
  
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    41
   "Expired T evs" == "SesKeyLife + T < CT evs"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    42
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    43
   "RecentAuth T evs" == "CT evs <= AutLife + T"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    44
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    45
consts  kerberos_ban   :: event list set
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    46
inductive "kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    47
  intrs 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    48
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    49
    Nil  "[]: kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    50
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    51
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    52
    Fake "[| evs: kerberos_ban;  B ~= Spy;  
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    53
             X: synth (analz (spies evs)) |]
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    54
          ==> Says Spy B X # evs : kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    55
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    56
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    57
    Kb1  "[| evs1: kerberos_ban;  A ~= Server |]
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    58
          ==> Says A Server {|Agent A, Agent B|} # evs1
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    59
                :  kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    60
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    61
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    62
    Kb2  "[| evs2: kerberos_ban;  A ~= B;  A ~= Server;  Key KAB ~: used evs2;
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    63
             Says A' Server {|Agent A, Agent B|} : set evs2 |]
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    64
          ==> Says Server A 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    65
                (Crypt (shrK A)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    66
                   {|Number (CT evs2), Agent B, Key KAB,  
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    67
                    (Crypt (shrK B) {|Number (CT evs2), Agent A, Key KAB|})|}) 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    68
                # evs2 : kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    69
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    70
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    71
    Kb3  "[| evs3: kerberos_ban;  A ~= B; 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    72
             Says S A (Crypt (shrK A) {|Number Ts, Agent B, Key K, X|}) 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    73
               : set evs3;
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    74
             Says A Server {|Agent A, Agent B|} : set evs3;
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    75
             ~ Expired Ts evs3 |]
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    76
          ==> Says A B {|X, Crypt K {|Agent A, Number (CT evs3)|} |} 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    77
               # evs3 : kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    78
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    79
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    80
    Kb4  "[| evs4: kerberos_ban;  A ~= B;  
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    81
             Says A' B {|(Crypt (shrK B) {|Number Ts, Agent A, Key K|}), 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    82
		         (Crypt K {|Agent A, Number Ta|}) |}: set evs4;
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    83
             ~ Expired Ts evs4; 
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    84
             RecentAuth Ta evs4|]
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    85
          ==> Says B A (Crypt K (Number Ta)) # evs4
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    86
                : kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    87
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    88
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    89
(*The session key has EXPIRED when it gets lost *)
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    90
    Oops "[| evso: kerberos_ban;  A ~= Spy;
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    91
             Says Server A (Crypt (shrK A) {|Number Ts, Agent B, Key K, X|})
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    92
               : set evso;
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    93
             Expired Ts evso |]
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    94
          ==> Says A Spy {|Number Ts, Key K|} # evso : kerberos_ban"
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    95
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    96
75d20f367e94 New example Kerberos_BAN by G Bella
paulson
parents:
diff changeset
    97
end