1、Scyther 适合分析什么样的协议

   首先协议分析工具并不是可以分析所有的协议,每种协议都有其自己适合的分析方法,并不都是可以使用形式化方法来分析。

目前协议分析方法: 模态逻辑分析(BAN逻辑,Bieber逻辑等)、定理证明分析(耗费资源)、模型检测分析。

Scyther适合分析协议的特征:

  • 参与协议的对象较少(列如:客户端,服务端,认证端)
  • 协议自身没有使用加密、认证、过程协商。而是依托第三方加密协议
  • 不支持及双线性对和的协议分析

下图是比较 形式化分析的工具性能的截图(基本上可以对自己要分析的协议有一个基本的判断之后,就可以选择使用什么样的工具来分析协议)

2、Scyther 如何分析一个协议

下面我简单举例一个单纯使用加密的的简单协议(A----->B之间的消息发送消息c,发送之前对消息单纯的使用hash函数加密 )

首先我么按照上面的描述形式化这个简单的列子(并申明收发双方之间可以接受到消息)------结果证明 我们形式化过程没有问题,接受者b 和发送者 a 可以实现消息的传递(双方认可)

下面我们对协议进行验证是否存在敌手攻击,即就是协议消息被敌手获取的漏洞,结果证明,即便是发送的时候使用了加密函数对消息加密,敌手仍然可以获取信息

(如图DY模型下输出两个攻击图)

3、Scytehr 的敌手模型

  Dolev-Yao模型的概念(参考资料-----《A Structured Operational Modelling of the Dolev-Yao Treat Model》)

强安全模型:敌手模型的攻击参数可以添加 随机数泄露、状态空间泄露、会话秘钥泄露等

Scyther 工具的一个好处就是 强安全模型的参数等都可以通过手动的设置选项来添加。

4、Scyther 的改进

对 Scyther的改进我们主要从两个方面入手,

一是:界面的汉化 分析界面中所有的涉及到按钮的标识的地方的代码全部使用 "#coding=utf-8" 或者“ #-*- coding:utf-8 -*-”  来编译  (具体的汉化过程不写了,下图是我调整了部分代码 还没有全部替换完 ),(看见国内一个博士汉化了 Scytehr-linux, Scyther-linux-Compromise其实汉化方法也是一样的)

二是:添加协议分析计时器的功能

(目前还没做完)

5、Scyther 输出的攻击轨迹图分析

Scyther输出的轨迹图包括两大类,一是协议分析的实例轨迹图,另一类是在敌手模型下输出的安全隐患的攻击轨迹图

先分析上面举的例子: 图片放小一点来看 ,   首先 我们在协议中声明了两个角色(分别表示客户端A--a和 服务端B---b),声明了常量 函数 hash 和 unhash 并且标明了 互为反函数

为了简单 我们只让 a 发送一个 使用 hash() 加密的 消息 c 给 b ,并且我们在安全属性声明 b可以获得 消息 c 承认接受到 。

下图是 一个运行实例的轨迹图 首先Run 1 中 假设 Bob 是 a 的角色代理   , b 中 Alice是 角色代理  我们 发送Bob的公钥加密发送 消息 ,{hash(c#1)}   ,显示结果为 Alice承认 Bob发送给自己 信息。

这样就将运行实例1 (Run1 )d的轨迹图描述了出来。

下面我们 看攻击轨迹输出的图

6、Scyther 内部算法 Athena 的介绍

   Athena算法支持多协议的并行分析、 时序相关的协议、多秘钥设施(PKIs)模式化、多协议的多种攻击

具体的算法分析的参考资料:Cremers C J F , Mauw S . Operational Semantics of Security Protocols[C]// International Conference on Scenarios: Models. Springer-Verlag, 2005.

Athena算法的源码(点击下载)

scyther 使用 该算法对协议进行分析,如果在输入协议,划分成多个主题规格,调用该算法,如果能不能搭建出安全声明的反例,则输出OK 反之输出Fail

7、Scyther 形式化描述语言的SPDL的书写规范

规范部分参见之前的博客

8、Scytehr 工具为什么最好在Linux下使用

之前在Windows下配置使用 Scyther 结果不是理想,(Wind下的首先下载对应的版本,我是在 PY上加载的文件,配置好插件之后还是会提示问题,)

要安装支持的插件截图见下面: 报错的这个 包 目前无法安装 感觉应该是版本之前不兼容问题

大家如果要使用可以将wxpython离线之后 安装在试一试。

9、Scyther 版本 Scyther-linux 和 Scyther-linux-Compromise之间的差别在哪

两个版本之间的差别 : Compromise是之前的升级版,添加 了敌手的攻击模型---->强安全模型。

10、实现加密认证的协议本身分析为什么比较难,需要攻克什么样的问题

    TLS协议时很多协议依赖的加密认证协议,整个协议的认证过程和秘钥建立过程复杂,即便是分析清楚也要花费大量的时间。还有中间牵扯的算法要全部进行指定

13、抛开乙方加密协议我们如何快速分析甲方的协议

    可以参考  《OAuth2.0 协议的安全形式化分析》

14、Scyther工具的官方网站资料

https://people.cispa.io/cas.cremers/scyther/

15、 国内工业协议形式化分析存在的问题是什么

Scyther tool 入门的更多相关文章

  1. TLS1.3&TLS1.2形式化分析

    本博客是对下面博客连接上的原文进行梳理+自己在其他方面资料做个整理 https://blog.csdn.net/andylau00j/article/details/79269499 https:// ...

  2. MAT(Memory Analyzer Tool)工具入门介绍

    1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...

  3. MAT(Memory Analyzer Tool)工具入门介绍(转)

    1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...

  4. 【转】MAT(Memory Analyzer Tool)工具入门介绍

    1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...

  5. SDL 威胁建模工具入门 threat modeling tool

    http://msdn.microsoft.com/zh-cn/magazine/dd347831.aspx threat modeling tool 威胁建模工具 minifuzz 文件模糊工具 c ...

  6. UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏

    因为.NET的垃圾回收机制相当完善,通常情况下我们是不需要关心内存泄漏的.问题人一但傻起来,连自己都会害怕,几个页面跳啊跳的,内存蹭蹭的往上涨,拉都拉不住.这种时候我们就需要冷静下来,泡一杯热巧克力. ...

  7. [Intel Edison开发板] 02、Edison开发板入门

    一.前言 Start from the link: 开始学习的链接 上面链接是官网的教程,按照教程可以开发板入门: 其中第一步是了解开发板,涉及到如何组装.如何连线.一些主要的接口简单介绍等信息: 第 ...

  8. webpack入门——webpack的安装与使用

    一.简介 1.什么是webpack webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. ...

  9. [EF1]POCOs(Plain Old C# Object)Entity Framework 4.x: POCOs入门

    原文链接:http://www.cnblogs.com/hjzhang/archive/2011/05/18/2050530.html POCOs 是在Visual Studio 2010和ASP.N ...

随机推荐

  1. ISO/IEC 9899:2011 条款6——语言

    6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...

  2. Node add Test1

    root_group->addChild(node22); osg::Vec3f vec3f1 = node22->getBound().center(); osg::NodePathLi ...

  3. 解决IDEA中Lombok生成代码后提示错误的问题

    一.背景介绍 因为我们在使用Lombok的时候,Lombok为我们生成的代码是在字节码中(*.class),而不是在source code中,所以存在IDE提示Lombok生成的方法未定义的错误,导致 ...

  4. js object 添加键值

    第一种方法let obj ={"name":"tom","age":16}let key = "id";let valu ...

  5. [LeetCode] 340. Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串

    Given a string, find the length of the longest substring T that contains at most k distinct characte ...

  6. Kubernetes 服务质量 Qos 解析 - Pod 资源 requests 和 limits 如何配置?

    QoS是 Quality of Service 的缩写,即服务质量.为了实现资源被有效调度和分配的同时提高资源利用率,kubernetes针对不同服务质量的预期,通过 QoS(Quality of S ...

  7. C++中print和printf的区别

    print与printf的区别 1,print 中不能使用%s ,%d 或%c: 2,print 自动换行,printf 没有自动换行.

  8. 【转】Ubuntu环境搭建svn服务器

    记录一次使用Ubuntu环境搭建svn服务器的详细步骤 一.查看是否已经安装svn 命令:svn如果显示以下信息,说明已安装 二.卸载已安装的svn 命令:sudo apt-get remove -- ...

  9. 《十天学会 PHP》的重难点

    记录一下我在学习<十天学会 PHP>(第六版)的过程中的遇到的重难点,该课程是学习制作一个简单的留言板. 准备工作 XAMPP(Apache + MySQL + PHP + PERL) 是 ...

  10. list<Integer>,Integer[],int[]之间的互转(jdk1.8)

    偶然在开发过程中需要将int[] 转成 List<Integer>,采用了遍历的方式,写的代码实在太多. List<Integer> list = new ArrayList& ...