Skip to content
Snippets Groups Projects
Commit 9060f368 authored by Müller, Jonas's avatar Müller, Jonas
Browse files

Change flag in verify transcript and clean-up lemmas

parent e7f75533
No related branches found
No related tags found
No related merge requests found
#ifdef PFS #ifdef ForwardSecrecy
rule Verify_Transcript_C: rule Verify_Transcript_C:
let let
pkCe = pk(skCe) pkCe = pk(skCe)
......
...@@ -25,6 +25,15 @@ lemma two_session_exist: exists-trace ...@@ -25,6 +25,15 @@ lemma two_session_exist: exists-trace
" "
// Agreement // Agreement
lemma aliveness:
"All k sid A role B #i #t .
Completed(k, sid, A, role, B) @ #i
& Finished(sid) @ #t
==> (Ex k2 sid2 role2 C #j .
Completed(k2, sid2, B, role2, C) @ #j)
| (Ex #k . Corrupted(B) @ #k)
"
lemma weak_agreement_C: lemma weak_agreement_C:
"All k sid C T #i #t . "All k sid C T #i #t .
Completed(k, sid, C, 'chip', T) @ #i Completed(k, sid, C, 'chip', T) @ #i
...@@ -65,15 +74,6 @@ lemma agreement_T: ...@@ -65,15 +74,6 @@ lemma agreement_T:
| (Ex #k . Corrupted(T) @ #k) | (Ex #k . Corrupted(T) @ #k)
" "
lemma aliveness:
"All k sid A role B #i #t .
Completed(k, sid, A, role, B) @ #i
& Finished(sid) @ #t
==> (Ex k2 sid2 role2 C #j .
Completed(k2, sid2, B, role2, C) @ #j)
| (Ex #k . Corrupted(B) @ #k)
"
lemma session_uniqueness: lemma session_uniqueness:
"All A B k sid sid2 role #i #j . "All A B k sid sid2 role #i #j .
Completed(k, sid, A, role, B) @ #i Completed(k, sid, A, role, B) @ #i
...@@ -102,25 +102,14 @@ lemma key_secrecy: ...@@ -102,25 +102,14 @@ lemma key_secrecy:
| (Ex #m . Corrupted(T) @ #m) | (Ex #m . Corrupted(T) @ #m)
" "
// Cannot track chip before CA
lemma chip_hiding:
"All C T iid #i .
CompletedTA(C, iid, T) @ #i
==> not(Ex #m . K(iid) @ #m)
| (Ex #m . (K(iid) @ #m & #i < #m))
"
/* We simulate a one sided protocol execution */ /* We simulate a one sided protocol execution */
// The terminal submits a transcript for a valid protocol execution and the chip verifies it // The terminal submits a transcript for a valid protocol execution and the chip verifies it
// If the terminal succeeds it has disproven non-repudiation for the chip
// 1.: We prohibit any previous protocol executions // 1.: We prohibit any previous protocol executions
// 2.: The chip should not be corrupted, so that the terminal needs to forge the values // 2.: The chip should not be corrupted, so that the terminal needs to forge the values
// 3.: The terminal is not allowed to register a chip certificate // 3.: The terminal is not allowed to register a chip certificate
// This should be possible for the terminal lemma notNonRepudiation_C: exists-trace
lemma nonRepudiation_terminal: exists-trace
"Ex C T #i . "Ex C T #i .
ValidTrans(C, 'chip', T) @ #i ValidTrans(C, 'chip', T) @ #i
& not(Ex #k . Started() @ #k) // 1. & not(Ex #k . Started() @ #k) // 1.
...@@ -130,10 +119,9 @@ lemma nonRepudiation_terminal: exists-trace ...@@ -130,10 +119,9 @@ lemma nonRepudiation_terminal: exists-trace
// The chip submits a transcript for a valid protocol execution and the terminal verifies it // The chip submits a transcript for a valid protocol execution and the terminal verifies it
// If the chip succeeds it has disproven non-repudiation for the terminal
// This should NOT be possible for the chip lemma notNonRepudiation_T: exists-trace
lemma nonRepudiation_chip: exists-trace
"Ex C T #i . "Ex C T #i .
ValidTrans(T, 'terminal', C) @ #i ValidTrans(T, 'terminal', C) @ #i
& not(Ex #k . Started() @ #k) & not(Ex #k . Started() @ #k)
...@@ -141,8 +129,7 @@ lemma nonRepudiation_chip: exists-trace ...@@ -141,8 +129,7 @@ lemma nonRepudiation_chip: exists-trace
& not(Ex #k . RegisteredRole(C, 'terminal') @ #k) & not(Ex #k . RegisteredRole(C, 'terminal') @ #k)
" "
// Perfect forward secrecy lemma forward_secrecy:
lemma pfs:
"All C T k sid #i #j . "All C T k sid #i #j .
Completed(k, sid, C, 'chip', T) @ #i Completed(k, sid, C, 'chip', T) @ #i
& Completed(k, sid, T, 'terminal', C) @ #j & Completed(k, sid, T, 'terminal', C) @ #j
...@@ -151,3 +138,13 @@ lemma pfs: ...@@ -151,3 +138,13 @@ lemma pfs:
==> (not(Ex #m . K(k) @ #m) ==> (not(Ex #m . K(k) @ #m)
| (Ex #m . Revealed(sid) @ #m)) | (Ex #m . Revealed(sid) @ #m))
" "
lemma forward_secrecy_T:
"All C T k sid #i #j .
Completed(k, sid, C, 'chip', T) @ #i
& Completed(k, sid, T, 'terminal', C) @ #j
& not(Ex #m . Corrupted(C) @ #m)
& not(Ex #m . Corrupted(T) @ #m & #m < #j)
==> (not(Ex #m . K(k) @ #m)
| (Ex #m . Revealed(sid) @ #m))
"
...@@ -19,7 +19,7 @@ let ...@@ -19,7 +19,7 @@ let
pk = 'g'^~ltk pk = 'g'^~ltk
in in
[ Fr(~ltk) ] [ Fr(~ltk) ]
--[ TestMe() ]-> -->
[ !Pk($A, pk, 'chip'), !Ltk($A, ~ltk, 'chip'), Out(pk) ] [ !Pk($A, pk, 'chip'), !Ltk($A, ~ltk, 'chip'), Out(pk) ]
#else #else
rule Generate_chip_key_pair: rule Generate_chip_key_pair:
......
#ifdef PFS #ifdef ForwardSecrecy
rule Verify_Transcript_C: rule Verify_Transcript_C:
let let
pkT = cert_pk(certT) pkT = cert_pk(certT)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment