scyther/spdl/bkepk.spdl
ccremers 282504c8cc - Improved the arguments adapting to the input stuff (e.g. number of
protocols)
- Improved many protocols by adding agreement claims.
2005-03-02 19:57:05 +00:00

61 lines
986 B
Plaintext

/*
Bilateral Key Exchange with Public Key protocol (BKEPK)
CMV version with explicit secrecy claims.
*/
usertype Key;
const pk,hash: Function;
secret sk,unhash: Function;
inversekeys (pk,sk);
inversekeys (hash,unhash);
protocol bkepk(A,B)
{
role B
{
const nb: Nonce;
var na: Nonce;
var kab: Key;
send_1 (B,A, B,{ nb,B }pk(A) );
read_2 (A,B, { hash(nb),na,A,kab }pk(B) );
send_3 (B,A, { hash(na) }kab );
claim_4 (B, Secret, na );
claim_5 (B, Secret, nb );
claim_6 (B, Niagree );
claim_7 (B, Nisynch );
}
role A
{
var nb: Nonce;
const na: Nonce;
const kab: Key;
read_1 (B,A, B,{ nb,B }pk(A) );
send_2 (A,B, { hash(nb),na,A,kab }pk(B) );
read_3 (B,A, { hash(na) }kab );
claim_8 (A, Secret, na );
claim_9 (A, Secret, nb );
claim_10 (A, Niagree);
claim_11 (A, Nisynch);
}
}
const Alice,Bob,Eve;
compromised sk(Eve);
untrusted Eve;
run bkepk.A(Alice,Bob);
run bkepk.B(Alice,Bob);
run bkepk.A(Alice,Bob);
run bkepk.B(Alice,Bob);