Scyther工具的使用及Woo-Lam 协议分析

1 Scyther下载和安装

1.1 Scyther简介

Scyther是一种自动化的安全协议验证工具。Scyther可以验证无限制会话数和随机数的协议。Scyther可以表征协议,从而对所有可能的协议行为进行有限的表示。Scyther是在理想密码学假设下对安全协议进行形式分析的工具,其中假定所有密码功能都是完美的。除非对手知道解密密钥,否则对手不会从加密消息中学到任何东西。 该工具可用于发现协议构造方式引起的问题。这个问题通常是无法确定的,但是在实践中,许多协议可以被证明是正确的或可以发现攻击的。

1.2 Scythe下载安装

该工具支持Linux、Windows和Mac下的安装使用,下载地址:
https://people.cispa.io/cas.cremers/scyther/index.html
安装说明包含在可下载的Scyther存档中,scythe-manual.py是用户手册,Protocols文件夹里面是一些样例安全协议的代码,在进行协议分析时,当作参考。

1.3 Scyther输入语言语法

Scyther的输入语言大致基于类似于C / Java的语法。 该语言的主要目的是描述协议,该协议由一组角色定义。 角色又由一系列事件定义,其中大多数是表示术语发送或接收的事件。

Scyther输入文件中的核心元素是协议定义。最小的示例如下:

protocol ExampleProtocol(I,R) {
 role I { }; 
role R { }; 
};

在上面,我们通过在协议名称后的方括号中列出它们,定义了一个名为“ ExampleProtocol”的协议,该协议具有“ I”和“ R”两个角色。请注意,我们尚未定义这些角色的行为:此类行为在相应的角色I和角色R命令之后的大括号中定义,其他具体语法可以参照scyther-manual.pdf文件。

2 Scyther使用

2.1 协议分析基本过程

利用Scyther分析协议的基本过程如下:
1)首先需要分析具体的协议流程
2)然后抽象需要验证的安全属性,例如协议中的对象认证性、消息机密性、事件一致性等,并用语言描述出来。
3)运行scyther-gui.py文件,验证属性是否满足,查看运行结果,并对结果进行分析。

2.2 定义简单脚本并分析

在实验中,我们以Needham-Schroeder Public Key为例,对scyther进行协议的分析过程进行简单介绍:

图1 图 1
该协议使用默认的公用/专用密钥基础结构:代理A具有密钥对(pk(A),sk(A))。该协议具有两个角色:发起者角色I和响应者角色R。我们还添加了一行注释,该协议用语言描述如下:
在这里插入图片描述
脚本代码说明:
第11行创建角色I的随机数,第12行创建I收到的随机数
第14-17行:我们对协议的通信行为进行建模。 Needham-Schroeder有三个消息,发起者角色发送这些消息的第一个和最后一个。请注意send和recv关键字末尾的标签(例如1):这些标签仅用于保留消息序列图中连接箭头的信息。
第19-25行:我们添加了协议的安全性要求。没有此类声明,Scyther不知道需要检查什么。在这里,我们选择检查所生成和接收的随机数的保密性,并将检查非单应性协议和同步性

2.3 运行结果

使用Scyther工具验证该脚本为“
在这里插入图片描述
在这里插入图片描述

3 Woo-Lam协议分析

3.1 woo-lam PI3 协议简介

在密码术中,Woo–Lam指由Simon S. Lam和Thomas Woo 设计的各种计算机网络身份验证协议。该协议使两个通信方能够验证彼此的身份并交换会话密钥,并且涉及使用可信密钥分发中心(KDC)在各方之间进行协商。已经描述了对称密钥和公共密钥的变体。但是,这些协议存在各种安全漏洞,与替代的身份验证协议相比,部分协议被描述为效率低下。
Woo和Lam(1992)引入了一种协议,该协议向响应者B提供对协议发起者A的单向身份验证。该协议使用对称密钥加密和受信任的第三方服务器,A和B与之共享长期对称密钥。
在这里插入图片描述
图 5该协议如上面所示,其中{m} k表示使用密钥k加密的消息m,“,”表示连接运算符。密钥Kas和Kbs表示A和B与受信任服务器S共享的长期密钥。协议的目标是通过使用B产生的新鲜且不可预测的随机数Nb来认证A到B。
A通过将其身份发送给B来启动该协议。B通过发送一个新生成的随机数Nb进行答复。 A用密钥Kas加密Nb,然后将其发送回B。B用A的身份连接A的答复,然后用密钥Kbs对其进行加密,然后将其发送到服务器S。S将NB发送回以Kbs加密的B。 B将它从S收到的随机数与发送给A的随机数进行比较。如果它们匹配,则B可以保证协议的发起者实际上是协议第一步中要求的主体。

3.2 Woo-Lam协议的形式化描述

在这里插入图片描述

在这里插入图片描述

3.3 Woo-Lam PI3协议分析结果

在这里插入图片描述

在这里插入图片描述
根据上图,结果分析如下:
在这里插入图片描述
攻击显示入侵者Dave同时发起两次入站身份验证尝试,其中Dave也被视为其他任何常规参与者。Dave伪装成一个2‘中的Charlie,并保留另一个2中自己的身份Dave。Dave从Bob处获得了运行的随机数,并使用服务器密钥的随机数Nr进行加密,然后将其返回给Bob。当服务器返回随机数时,它导致Bob相信它已经对Charlie进行了身份验证,而Charlie甚至没有参与任何运行,攻击过程完成。通过以上攻击过程,证明了设计安全协议的难度,以及强调了对设计的协议进行形式化分析的重要性。

发布了15 篇原创文章 · 获赞 28 · 访问量 4850
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览