Scyther tool 入门

☆樱花仙子☆ 提交于 2021-02-13 16:42:49

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、 国内工业协议形式化分析存在的问题是什么

      

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!