下面对 Needham-Schroeder 协议形式化分析 的攻击输出图 做一个解释:

Needham-Schroeder使用ns3表示, ns3 协议形式化描述结果如下:

/*
 * Needham-Schroeder protocol
 */

// The protocol description

protocol ns3(I,R)
{
    role I
    {
        fresh ni: Nonce;   
        var nr: Nonce;

send_1(I,R, {ni,I}pk(R) );
        recv_2(R,I, {ni,nr}pk(I) );
        claim(I,Running,R,ni,nr);
        send_3(I,R, {nr}pk(R) );

claim(I,Secret,ni);
        claim(I,Secret,nr);
        claim(I,Alive);
        claim(I,Weakagree);
        claim(I,Commit,R,ni,nr);
        claim(I,Niagree);
        claim(I,Nisynch);
    }    
    
    role R
    {
        var ni: Nonce;
        fresh nr: Nonce;

recv_1(I,R, {ni,I}pk(R) );
        claim(R,Running,I,ni,nr);
        send_2(R,I, {ni,nr}pk(I) );
        recv_3(I,R, {nr}pk(R) );

claim(R,Secret,ni);
        claim(R,Secret,nr);
        claim(R,Alive);
        claim(R,Weakagree);
        claim(R,Commit,I,ni,nr);
        claim(R,Niagree);
        claim(R,Nisynch);
    }
}
攻击输出图:

我们可以看到左边运行代理是 Agent1  代理 角色 R ,右边是运行代理是Agent2 代理  I 角色,代理Agent2 认为响应角色是信任的 Eve (所有的信息泄露,不能保证),除此之外运行的头部方框包含新生成变量值信息和局部变量 ,  每一次消息发送的时候,都会被攻击者获取,在这个例子中,因为攻击者知道代理 Eve的私钥 sk(Eve)  ,能够解密消息获得随机变量 ni#2的值,

通信事件 :发送事件指明一个发送消息,从上面的攻击图中可以看出,第一次发送发生在运行 2 的第一次发送事件,------》   send_1(Eve,{Agent#0, ni#2 }pk(Eve)),接受事件对应于消息的成功接受,在此次攻击中第一次接受事件 ,接收到的消息是:  recv_1(Agent#0,{Agent#0,ni#2}pk(Agent#1)) ,攻击者不能预测随机变量 ni#2的值,所以只能等待 运行 2 生成 ni#2之后,代理Agent1 才能接受到消息,

在攻击输出图中,红色箭头连线表示发送消息和接受消息不匹配,我们知道攻击者在发送的消息之后构造要接受的消息,因此他必须使用发送消息的信息来构造接收到的消息。

在攻击输出图中,黄色箭头表示消息以完全相同的方式发送和接受,代理不同意 消息任意的发送,因此他被标记为 "redirect"  因此攻击者必须重定向该消息。

在攻击输出图中,绿色箭头表示收到的消息和接受到的消息完全相同,表示两个代理之间 正常的通信

注意:如果接受事件没有传入箭头,表示接受术语可以从入侵者的初始知识生成,如果角色读取仅包含代理名称的原始消息,则入侵者可以从其初始知识生成该术语。

3、使用 Scyther command-line 工具验证

一般都是使用GUI,因为简便,在使用command-line 的使用 如果Linux 系统问题会出现很多问题。 我在使用dot工具渲染输出图形的时候 报错提示出现 语法错误。(应该是渲染工具的问题)

4、高级主题

Scyther攻击输出图的解释(之二)的更多相关文章

  1. Scyther GUI 攻击输出图的解释

    1.在声明事件的安全属性的时候也就是整个过程要验证的 对象: Scythe 的安全属性  分为下面几种: Secrecy: 表示数据传输过程中是安全的,即使通过不信任的网络传也不能被攻击者获得 SKR ...

  2. Android开发之异步具体解释(二)之AsyncTask

    请尊重他人的劳动成果,转载请注明出处:Android开发之异步具体解释(二)之AsyncTask http://blog.csdn.net/fengyuzhengfan/article/details ...

  3. c/c++ 图相关的函数(二维数组法)

    c/c++ 图相关的函数(二维数组法) 遍历图 插入顶点 添加顶点间的线 删除顶点 删除顶点间的线 摧毁图 取得与v顶点有连线的第一个顶点 取得与v1顶点,v1顶点之后的v2顶点的之后的有连线的第一个 ...

  4. Service具体解释(二):Service生命周期

    < Service具体解释(一):什么是Service> < Service具体解释(二):Service生命周期> <Service具体解释(三):Service的使用 ...

  5. C++高级进阶 第四季:const具体解释(二) 常量折叠

    一.文章来由 const具体解释之二 二.const 取代 #define const最初动机就是取代 #define. const 优于 #define: (1) #define没有类型检查,con ...

  6. Opencl API解释(二)

    欢迎关注,转载引用请注明 http://blog.csdn.net/leonwei/article/details/8909897 这里将更深入的说明一些OpenCL API的功能 1. 创建buff ...

  7. JMeter执行压测输出HTML图形化报表(二)

    命令行模式将jtl转成测试图表 注意此方法只使用jmeter3.0以后版本 第一种:在测试过程中将jtl转成测试报告(在jmeter的bin目录下执行) jmeter -n -t baidu_requ ...

  8. Sourcetree配置ssh密钥 - git图形化工具(二)

    这里主要介绍Sourcetree如何导入已经生成好的ssh私钥,如何生成ssh私钥自行百度. 如果Sourcetree没有配置ssh密钥,克隆时会提示如下错误: 仓库类型:这是一个无效的源路径/URL ...

  9. C++继承具体解释之二——派生类成员函数具体解释(函数隐藏、构造函数与兼容覆盖规则)

    在这一篇文章開始之前.我先解决一个问题. 在上一篇C++继承详解之中的一个--初探继承中,我提到了在派生类中能够定义一个与基类成员函数同名的函数,这样派生类中的函数就会覆盖掉基类的成员函数. 在谭浩强 ...

随机推荐

  1. (十三)Centos之压缩和解压缩

    一.常用压缩格式 常用压缩格式:.zip .gz .bz2 常用压缩格式:.tar.gz  .tar.bz2 二.zip格式压缩 压缩文件:zip压缩文件名 源文件 压缩目录:zip -r 压缩文件名 ...

  2. Vue-cli安装,创建Vue项目

    1.安装脚手架: npm install -g vue-cli 2.查看vue: vue 3.查看可以使用的模板: vue list 4.创建项目sell: vue init webpack sell ...

  3. ubuntu18.04下eclipse修改maven源为阿里源

    下载安装Java和Eclipse:https://www.cnblogs.com/zifeiy/p/9030111.html 然后命令行安装Maven(不是必须的): sudo apt-get ins ...

  4. GraphQL学习之原理篇

    前言 在上一篇文章基础篇中,我们介绍了GraphQL的语法以及类型系统,算是对GraphQL有个基本的认识.在这一篇中,我们将会介绍GraphQL的实现原理.说到原理,我们就不得不依托于GraphQL ...

  5. 心の壁 From EOE:Air / 真心为你

    https://www.bilibili.com/bangumi/media/md10272/ 真嗣:我问你. 凌波:什么? 真嗣:梦到底是什么呢? 凌波:梦? 真嗣:我不太明白什么是现实. 凌波:你 ...

  6. Direct2D 学习笔记 前言

    Direct2D模板程序网址:https://docs.microsoft.com/zh-cn/windows/win32/direct2d/direct2d-quickstart DirectX S ...

  7. 使用kubeadm部署K8S v1.17.0集群

    kubeadm部署K8S集群 安装前的准备 集群机器 172.22.34.34 K8S00 172.22.34.35 K8S01 172.22.34.36 K8S02 注意: 本文档中的 etcd . ...

  8. 【leetcode算法-简单】26. 删除排序数组中的重复项

    [题目描述] 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...

  9. 图解JS

    弱语言 数据类型 隐式转换 弱等于 严格等于 包装对象 字符串转为包装对象 类型检测 表达式 运算符 块 try...catch 对象结构 创建对象,原型链 属性读写 getter,setter 序列 ...

  10. django_视图相关

    使用通用视图(返回静态页面) from django.conf.urls.defaults import * from django.views.generic.simple import direc ...