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.
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 入门的更多相关文章
- TLS1.3&TLS1.2形式化分析
本博客是对下面博客连接上的原文进行梳理+自己在其他方面资料做个整理 https://blog.csdn.net/andylau00j/article/details/79269499 https:// ...
- MAT(Memory Analyzer Tool)工具入门介绍
1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...
- MAT(Memory Analyzer Tool)工具入门介绍(转)
1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...
- 【转】MAT(Memory Analyzer Tool)工具入门介绍
1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...
- SDL 威胁建模工具入门 threat modeling tool
http://msdn.microsoft.com/zh-cn/magazine/dd347831.aspx threat modeling tool 威胁建模工具 minifuzz 文件模糊工具 c ...
- UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏
因为.NET的垃圾回收机制相当完善,通常情况下我们是不需要关心内存泄漏的.问题人一但傻起来,连自己都会害怕,几个页面跳啊跳的,内存蹭蹭的往上涨,拉都拉不住.这种时候我们就需要冷静下来,泡一杯热巧克力. ...
- [Intel Edison开发板] 02、Edison开发板入门
一.前言 Start from the link: 开始学习的链接 上面链接是官网的教程,按照教程可以开发板入门: 其中第一步是了解开发板,涉及到如何组装.如何连线.一些主要的接口简单介绍等信息: 第 ...
- webpack入门——webpack的安装与使用
一.简介 1.什么是webpack webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. ...
- [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 ...
随机推荐
- ISO/IEC 9899:2011 条款6——语言
6 语言 6.1 标记法 1.在本条款中所使用的语法标记法.语义类别(非终结符)用斜体字指示,而字面量单词以及字符集成员(终结符)用粗体字指示.跟在一个非终结符后面的冒号(:)引出其定义.在单独的行中 ...
- Node add Test1
root_group->addChild(node22); osg::Vec3f vec3f1 = node22->getBound().center(); osg::NodePathLi ...
- 解决IDEA中Lombok生成代码后提示错误的问题
一.背景介绍 因为我们在使用Lombok的时候,Lombok为我们生成的代码是在字节码中(*.class),而不是在source code中,所以存在IDE提示Lombok生成的方法未定义的错误,导致 ...
- js object 添加键值
第一种方法let obj ={"name":"tom","age":16}let key = "id";let valu ...
- [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 ...
- Kubernetes 服务质量 Qos 解析 - Pod 资源 requests 和 limits 如何配置?
QoS是 Quality of Service 的缩写,即服务质量.为了实现资源被有效调度和分配的同时提高资源利用率,kubernetes针对不同服务质量的预期,通过 QoS(Quality of S ...
- C++中print和printf的区别
print与printf的区别 1,print 中不能使用%s ,%d 或%c: 2,print 自动换行,printf 没有自动换行.
- 【转】Ubuntu环境搭建svn服务器
记录一次使用Ubuntu环境搭建svn服务器的详细步骤 一.查看是否已经安装svn 命令:svn如果显示以下信息,说明已安装 二.卸载已安装的svn 命令:sudo apt-get remove -- ...
- 《十天学会 PHP》的重难点
记录一下我在学习<十天学会 PHP>(第六版)的过程中的遇到的重难点,该课程是学习制作一个简单的留言板. 准备工作 XAMPP(Apache + MySQL + PHP + PERL) 是 ...
- list<Integer>,Integer[],int[]之间的互转(jdk1.8)
偶然在开发过程中需要将int[] 转成 List<Integer>,采用了遍历的方式,写的代码实在太多. List<Integer> list = new ArrayList& ...