下面对 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. java cpu 使用率100%

    --宝典开始 top :查看 进程 ,选CPU使用率高的 获取进程ID,pid top -Hp pid:查看线程,选CPU使用率高的 获取线程ID,threadid printf "%X\n ...

  2. Java使用Apache Commons Exec运行本地命令行命令

    首先在pom.xml中添加Apache Commons Exec的Maven坐标: <!-- https://mvnrepository.com/artifact/org.apache.comm ...

  3. iOS-宏定义

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnoAAAPCCAYAAADvRHWgAAAAAXNSR0IArs4c6QAAAZ1pVFh0WE1MOm ...

  4. linux下无法启动webdriver问题

    linux下无法启动webdriver问题: 查看是否有足够多的webdriver进程: ps -ef | grep chromedriver kill -9 `ps -ef |grepchromed ...

  5. Linux配置代理IP

    Linux配置代理IP: vim /etc/profile http_proxy=http://username:password@ip:port/ https_proxy=http://userna ...

  6. 《Hadoop》大数据技术开发实战学习笔记(二)

    搭建Hadoop 2.x分布式集群 1.Hadoop集群角色分配 2.上传Hadoop并解压 在centos01中,将安装文件上传到/opt/softwares/目录,然后解压安装文件到/opt/mo ...

  7. leetcode1277 Count Square Submatrices with All Ones

    思路: 使用动态规划,dp[i][j]表示以(i, j)作为右下角的最大的全1矩阵的边长. 实现: class Solution { public: int countSquares(vector&l ...

  8. Bandicam录制三大神器之一

    链接: http://pan.baidu.com/s/1bnDIUOv 密码: etge

  9. c# 中对于每次修改的程序 都必须重新手动生成 才能编译的问题

    问题描述:原来用VS2017,升级了VS2019,发现修改了Winform界面,F5运行竟然还是原来的界面 问题解决: 需要修改两个地方 工具>> 选项>> 项目和解决方案&g ...

  10. Zuul 源码的分析

    Zuul 就是个网关,过滤所有数据, 和Eureka的区别就是,前者或过滤数据,一般进行权限拦截,后者进行请求的转发,只是链接. Zuul包含了对请求的路由和过滤两个最主要的功能: 使用 注解@Ena ...