1、协议的主要的核心是定义一个协议在协议中声明角色:
Protocol ExampleProtocol(I,R){
role I{ };
role R{ };//在角色中一开始我们没有定义角色的行为
} 在协议中声明两个角色,分别是 I 和 R
很多安全协议依赖生成一个随机的值,他们可以在一个角色中使用 fresh 声明一个临时的值,列如下面 在角色X中 使用 fresh 声明一个Nonce 类型的临时值 :
role X(.....){
fresh Na:Nonce;
send_1(X,Y,Na);
}
代理可以使用变量存储接受的值(术语),列如,使用 Na 接受一个临时变量:
roel Y(.....){
var Na:Nonce;
recv_1(X,Y,Na);
}
对于局部变量,对于新生成的值以及变量像Na ,对于角色 都是局部变量。这样我们可以指定一个新生成的临时变量Na 在一个角色中,另一个Na在另一个Na 中不会出现冲突。变量必须出现在接受事件中,不允许未初始化的变量出现在发送事件中。第一次接受事件之后触发执行 ,分配一个值,之后再不能改变。
任何两个术语可以结合成一个术语对,可以写成N个术语对,例如: (x,y,z)再Scyther