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 中解释成 ((x,y),z)

2、对称秘钥

任何术语都可以作为堆成加密的秘钥,使用术语 kir 加密  ni 可以表示成   {ni }kir  ,除非将 kir 明确的制定为非对称秘钥的一部分,不然除此之外解释为对称加密。

对称秘钥:   对称秘钥的基本结构   定义形式 k (X,Y) 表示长期的对称秘钥共享 X和 Y之间。

3、非对称秘钥

公钥基础的结构是预定义的(PKI), sk(X) 表示 X 的长期私钥, pk(X)表示对应的公钥,随机数数 ni 在触发者  I 中使用公钥 pk(I) 加密,接受者只能使用私钥 skI(I) 解密。

4、预先定义类型

Nonce  标准类型(经常使用),因此定义在角色内部

Ticket  变量类型(可以被任何术语替代)

5、用户定义类型

使用关键字  usertypes

usertypes MyAtomicMessages;

protocol X (X,R){

Role I{

var y:MyAtomicMessage;

recv_1(I,R, y)    }

}

这中新申明的类型实例化只能使用自身的类型来实例化,

在事件中,每个接受事件和发送事件都是配套的,但是如果我们仅仅想模拟向对手发送或者接受(单向事件)的时候 Scyther 工具就会提示错误,可以使用标签提前对事件进行标注,如下面:

send_!1(I ,I  LeakToAdversary );

事件申明在角色规范中建模特定的安全属性,例如下面的声明事件模型中 Ni 表示 秘密

claim (I,Secret ,Ni) ;

下面事件中的匹配事件中Y  由 hash (X,Y,R )替代,但是这种规则避免复制

var X : Nonce ;

var Y ;

recv(R,I,X);

match (Y,hash(X,I,R));

send(I,R,Y,{Y}sk(I) );

另外,说明匹配事件match(pt,m) ,存在一个 ∂使得  ∂pt=m才会执行,相反不匹配事件表示 mot match(pt,m)  不存在替代 ∂ 使得 ∂pt=m 成立才会执行

角色定义就是时间的序列声明,包括定义、发送、接受、或许和事件申明,而协议定义的在协议体内会用一系列的角色定义

6、使用scyther 建立协议安全模型的时需要掌握的技能

逻辑消息组件以及在协议中的预期功能、 消息结构 、消息流

7、使用Scyther形式化分析协议注意的关键步骤

协议中的逻辑消息组件和内部的功能(公钥和私钥,每次运行或者 不变的常量)

消息结构 : 配对  加密   签名  散列

消息流 顺序 , 涉及的事件

8、在做实验之前首先要弄懂scyther 的已经验证过得几个简单的例子,从中首先弄清楚 scyther 验证的  协议  Needham-Schroeder protocol  ,,协议有由角色定义,角色反过来由事件定义, scyther 输入文件中最为核心的是 协议的定义

role I {

fresh ni: Nonce ;

var nr:   Nonce;

send_1(I,R ,{I,ni}pk(R));

recv_2(R,I,{ni,nr}pk(I));

send_3(I,R, {nr}pk(R));

claim_i1(I,secret ,ni);

claim_i2(I,Secret,nr);

claim_i3(I,Niagree);

claim_i4(I,Nisynch);

}

role R{

var ni: Nonce;

fresh nr: Nonce ;

recv_1(I,R,{I,ni}pk(R) );

send_2(R,I,{ni,nr}pk(I));

recv_3(I,R,{nr}pk(R));

clamin_r1(R,Secret,ni);

claim_r2(R,Secret,nr);

claim_r3(R,Niagree);

claim_r4(R,Nisynch);

}

9、协议

// The protocol description
protocol ns3(I,R)
{
role I
{
fresh ni: Nonce;
var nr: Nonce;
send_1(I,R, {I,ni}pk(R) );
recv_2(R,I, {ni,nr}pk(I) );
claim(I,Running,R,ni,nr);
send_3(I,R, {nr}pk(R) );
claim_i1(I,Secret,ni);
claim_i2(I,Secret,nr);
claim_i3(I,Alive);
claim_i4(I,Weakagree);
claim_i5(I,Commit,R,ni,nr);
claim_i6(I,Niagree);
claim_i7(I,Nisynch);
}

role R
{
var ni: Nonce;
fresh nr: Nonce;
recv_1(I,R, {I,ni}pk(R) );

claim(R,Running,I,ni,nr);
send_2(R,I, {ni,nr}pk(I) );
recv_3(I,R, {nr}pk(R) );
claim_r1(R,Secret,ni);
claim_r2(R,Secret,nr);
claim_r3(R,Alive);
claim_r4(R,Weakagree);
claim_r5(R,Commit,I,ni,nr);
claim_r6(R,Niagree);
claim_r7(R,Nisynch);
    }
}

对上面的标签做一个说明,第三例表示唯一标识符,第四列表示标签。

Scyther spdl(比较准确的翻译)的更多相关文章

  1. App上架审核指南翻译

    App Store Review Guidelines APP审核指南:https://developer.apple.com/app-store/review/guidelines/ 本文是自主翻译 ...

  2. SqlServer中提示和报错信息的翻译

    有时候遇到SqlServer一些报错需要上网查找解决方法,一些比较生僻的问题汉语搜索往往得不到想要的,就要使用英文在外网搜索.之前都是自己尝试翻译,或者使用错误码,或者找个英文版的数据库重现问题.有时 ...

  3. 挑战中英实时语音翻译——Skype Translator 中文预览版登陆中国

    Translator 中文预览版登陆中国" title="挑战中英实时语音翻译--Skype Translator 中文预览版登陆中国"> 今天,我们正式宣布在中国 ...

  4. IIS7配置Gzip压缩 JS压强失败的原因

    开启配置HTTP压缩(GZip) 在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的.如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内 ...

  5. being词典案例分析

    一.调研评测: 1.软件bug: 1.输入空格分号回车之后并不给用户报错,说明他的异常处理机制有问题. 2.对于中文的很多口头语和方言,并不能给出翻译或者说,也并没有给出网络搜索后的结果. 3.添加生 ...

  6. iis7 压缩js文件和启用gzip压缩

    压缩js文件 打开IIS 7的配置文件:c:\windows\system32\inetsrv\config\applicationhost.config 在<staticContent loc ...

  7. aircrack-ng test

    Aircrack-ng工具包有很多工具,我用到的工具主要有以下几个: airmon-ng 处理网卡工作模式 airodump-ng 抓包 aircrack-ng 破解 aireplay-ng 发包,干 ...

  8. Google搜索质量评估员指南

    Google: 此文档是我们(谷歌)的一份搜索质量评估员指南,可作为搜索质量评估员的培训材料.其中主要介绍了一类名为“网址评分”的评分任务,此类任务要求评估员查看搜索查询与可能返回的相应结果.他们需要 ...

  9. WEKA使用教程(界面工具的用法)

    WEKA使用教程 目录 1. 简介2. 数据格式3.数据准备4. 关联规则(购物篮分析)5. 分类与回归6. 聚类分析 1. 简介 WEKA的全名是怀卡托智能分析环境(Waikato Environm ...

随机推荐

  1. Java实训作业

    1.编写程序:声明一个整型变量a,并赋初值5,在程序中判断a是奇数还是偶数,然后输出判断的结果. public class hello{ public static void main(String[ ...

  2. flink部署操作-flink standalone集群安装部署

    flink集群安装部署 standalone集群模式 必须依赖 必须的软件 JAVA_HOME配置 flink安装 配置flink 启动flink 添加Jobmanager/taskmanager 实 ...

  3. pytest 14 使用自定义标记mark

    标记失败用到的情况是,本身就知道这是失败的例子,所以,不用让他运行,直接跳过.或者是依赖于某个方法,某个方式失败的话,用例直接标记成失败. 标记失败有两种方法,一种是方法内部,一种是方法外部.内部用p ...

  4. (N叉树 DFS 递归 BFS) leetcode 559. Maximum Depth of N-ary Tree

    Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the longe ...

  5. 微信小程序授权登录

    目录 自定义授权页面 点击授权登录后出现微信自带的授权登录弹窗 <!--index.wxml--> <!-- 授权界面 --> <cover-view class='au ...

  6. 关于Mac 系统mysql 乱码问题

    这是由于客户端和服务端的编码没有同一 首先我们先在终端连接mysql  连接方法 mysql -u 用户名  -p  即可 然后输入你的密码 这里就不多说了 然后我们输入   show variabl ...

  7. Python解析xml文档实战案例

    xml文档 <?xml version="1.0" ?> <!DOCTYPE PubmedArticleSet PUBLIC "-//NLM//DTD ...

  8. 2019秋招Java面经(未完待续)

    2019秋招Java面经(凭记忆回忆, 可能不准) 随着我们从大三升到大四...秋招也开始了. 秋招进行的还比较顺利, 刚开始没几天, 我的秋招就结束了. 到现在我玩了差不多十多天了, 总想着总结一下 ...

  9. JavaScript 归纳

    MDN 本文以 NodeJS 为交互解释器实验 尽量遵循 ES6 标准 javascript 重点 1.javascript 是单线程,通过 EventLoop 实现模拟异步,其中包括宏任务,微任务 ...

  10. 072、一文搞懂各种Docker网络 (2019-04-17 周三)

    参考https://www.cnblogs.com/CloudMan6/p/7587532.html   前面各个小节我们学习了 Docker Overlay .Macvlan .Flannel.We ...