补了一篇AVISPA工具安装和使用的教程,需要的朋友烦请移驾:https://blog.csdn.net/qq_33877253/article/details/107111450
AVISPA证明实例请参考我的另一篇博文:https://blog.csdn.net/qq_33877253/article/details/105096479
注:basic role 命名时必须得写成role_…
注:参变量首字母必须大写
注:def和=中间不能有空格
一、参与者
role role-name (类型化参数) played_by player def =
local %本地变量
const %常量
init %初始化变量
transition %转换
end role
%如
step1. State = 0 /\ RCV({Kab’}_Kas) =|>
State’:= 2 /\ SND({Kab’}_Kbs)
%step1:transition的名字,主要用于区分不同的transition,没有实际用处
%X'表示变量X的新值
%发送的消息由Kbs加密,意味着只有拥有Kbs的对象才能收到该消息
%如
role session(A,B,S : agent,
Kas, Kbs : symmetric_key) def=
local SA, RA, SB, RB SS, RS: channel (dy))
composition
alice (A, B, S, Kas, SA, RA)
/\ bob (B, A, S, Kbs, SB, RB)
/\ server(S, A, B, Kas, Kbs, SS, RS)
end role
%SA A的发送器
%RA A的接收器
role environment()
def=
const a, b, s : agent,
kas, kbs, kis : symmetric_key
intruder_knowledge = {a, b, s, kis} %攻击者知道的知识
composition
session(a,b,s,kas,kbs)
/\ session(a,i,s,kas,kis)
/\ session(i,b,s,kis,kbs)
end role
% i为攻击者
environment()