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 ...
随机推荐
- Kubernetes StatefulSet
StatefulSet 简介 在Kubernetes中,Pod的管理对象RC.Deployment.DaemonSet和Job都是面向无状态的服务.但现实中有很多服务是有状态的,特别是一些复杂的中间件 ...
- Python进阶之面向对象
新式类与旧式类 区别: 在2.2版本之前所有的类都是旧式类,3.x版本已取消旧式类 旧式类一般的写法,不继承任何父类 class Person: def __init__(self, name): s ...
- [JAVA] maven 阿里云节点 settings.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...
- (idea maven)mybatis-generator步骤
1.新建一个maven项目,选择maven-archetype-webapp 点击next 2.项目名称,点击next 3.选择项目存放路径,然后点击finish 4.在main包下 添加包java和 ...
- python大道——博客目录
python基础 第一章 计算机基础 计算机基础 第二章 python基础语法 python入门 第三章 基础数据类型和文件操作 整型.布尔.字符串 列表.字典.集合 公共功能.小数据池 hash ...
- docker(四):集群swarm
docker使用入门(四):集群swarm swarm是一组位于同一集群且运行docker的机器,用户可以通过swarm manager向swarm输入命令,swarm中的机器可以是虚拟机也可以是物理 ...
- App开放接口API安全性之Token签名Sign的设计与实现
前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...
- zipkin的安装与搭建
下载与部署 jar中yaml文件配置 启动传入并参数 web界面 目录 zipkin是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪. 下载与部署 wget -O zipki ...
- 2.5_Database Interface ODBC数据源及案例
分类 用户数据源 用户创建的数据源,称为“用户数据源”.此时只有创建者才能使用,并且只能在所定义的机器上运行.任何用户都不能使用其他用户创建的用户数据源. 系统数据源 所有用户在Windows下以服务 ...
- 【洛谷 P5357】 【模板】AC自动机(二次加强版)(AC自动机,差分)
每次匹配都不停跳fail显然太慢了,于是在每个节点和fail指向的点连一条边,构成一棵树,在这棵树上差分一下就好了. AC自动机 就这个算法而言其实没用想象中那么难. #include <cst ...