2004-02-20 11:37:28 +00:00
|
|
|
secret const k : Function;
|
|
|
|
|
|
|
|
/* Version from the Brutus reports
|
|
|
|
*/
|
|
|
|
|
|
|
|
protocol wmfbrutus(A,B,S)
|
|
|
|
{
|
|
|
|
role A
|
|
|
|
{
|
|
|
|
const kab : SesKey;
|
|
|
|
|
|
|
|
send_1(A,S, A, { B,kab }k(A,S) );
|
|
|
|
}
|
|
|
|
|
|
|
|
role B
|
|
|
|
{
|
|
|
|
var kab : SesKey;
|
|
|
|
|
|
|
|
read_2(S,B, { A, kab }k(B,S) );
|
|
|
|
|
2004-02-22 13:16:53 +00:00
|
|
|
claim(B, Secret,kab);
|
2004-02-20 11:37:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
role S
|
|
|
|
{
|
|
|
|
var kab : SesKey;
|
|
|
|
|
|
|
|
read_1(A,S, A, { B,kab }k(A,S) );
|
|
|
|
send_2(S,B, { A, kab }k(B,S) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const Alice, Bob, Eve: Agent;
|
|
|
|
const Simon: Server;
|
|
|
|
|
|
|
|
untrusted Eve;
|
|
|
|
compromised k(Eve,Simon);
|
|
|
|
|
|
|
|
run wmfbrutus.A(Agent, Agent, Simon);
|
|
|
|
run wmfbrutus.B(Agent, Agent, Simon);
|
|
|
|
run wmfbrutus.A(Agent, Agent, Simon);
|
|
|
|
run wmfbrutus.B(Agent, Agent, Simon);
|
|
|
|
run wmfbrutus.A(Agent, Agent, Simon);
|
|
|
|
run wmfbrutus.B(Agent, Agent, Simon);
|
|
|
|
|
|
|
|
run wmfbrutus.S(Agent, Agent, Simon);
|
|
|
|
|