• Scyther tool 入门


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

          

  • 相关阅读:
    WPF杂难解 图片模糊的暂时解决方案
    wpf学习笔记 NotifyPropertyChanged实现数据变化自动更新UI
    WPF杂难解 粘贴板复制GIF图片时丢失透明背景
    WPF杂难解 RichTextBox粘贴图片地址处理,并保存的问题
    wpf学习笔记 依赖属性
    WPF杂难解 中文字体显示模糊
    雪花型,支架型,和桥型 的区别
    BI工具对比
    关于javac不是内部命令的解决办法
    转载 android listview getview() 反复调用
  • 原文地址:https://www.cnblogs.com/xinxianquan/p/11398445.html
Copyright © 2020-2023  润新知