ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:256.64KB ,
资源ID:11004370      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11004370.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(iSpin工具模型检测实验报告.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

iSpin工具模型检测实验报告.docx

1、iSpin工具模型检测实验报告基于iSpin工具的Needham-Schroeder共享密钥协议的模型检测分析 1 研究背景与验证环境介绍 1.1 研究背景与NS协议介绍 1.1.1研究背景密码协议是以密码学为基础的消息交换协议,其目的是在网络环境下提供各种安全问题,在密码协议分析中,它的条件定义为:小系统:参与协议运行的各主体都是唯一的(如一个发送者,一个响应者),作用也是唯一的,这些主体也都是诚实的,诚实即是它们严格按照协议规定并遵循自己的身份参与协议运行。为了便于理解,引入强安全性破坏的概念,即一个诚实的主体相信在协议运行中用到的一个值是仅他和另外诚实主体之间的共享密码,但入侵者知道这个

2、值。目前,对于模型检测技术分析密码协议,有以下已被证明的理论成果:只要对被分析的密码协议在小系统上进行强安全性破坏分析,就可以保证协议在任意系统上的安全性。这个理论结果极大地促进了模型检测技术在密码协议分析领域的应用,使密码协议形式化分析方法的主流从逻辑方法转向了模型检测。 1.1.2 NS协议介绍NS(Needham-Schroeder)协议是使用密钥分发中心KDC实现认证的经典协议,每一个主体A都有一个公钥,另一个主体也可以从公钥服务器上得到A的公钥,协议中的任何主体都可以用A的公钥加密产生加密信息,但只有A才能解开加密后的信息,下面给出它的一个简化协议表示如下: 消息1 A-B:A,Na

3、kb 消息2 B-A:Na,Nbka 消息3 A-B:Nbkb这里A是初始发送者,B是接受者,Na,Nb分别表示A和B的临时值消息1表示A选择了一个自己的临时值Na,通过从服务器上得到B的公钥kb后,发送给B。消息2表示B收到A的请求后,用自己的密钥解开消息,并从服务器上得到A的公钥,将自己的临时值和收到的A的临时值用A的公钥加密后返回给A。消息3表示A似乎可以确信它是在于B通信,因为只有B才能解开消息1获得Na,接下来即可互相传递信息了。1.2基于SPIN/Promela的验证环境SPIN是最强大的模型检测工具之一,也是迄今为止唯一获得ACM软件系统奖的模型检测工具 ,本文实验所用为SPIN

4、的(GUI)界面化工具iSPAN,Promela是SPIN的一种建模语言,在此不在赘述SPIN的背景与Promela语言的语法,主要介绍一下在windows下搭建环境的步骤:1 在官网下载cygwin软件(用于虚拟Linux环境),点击下载所有下载包,以免出错。 2 启动X server服务器(用于生成iSpin界面)3启动Ispin2、NS协议的Promela模型本协议属于两方(不含入侵者)参与的通信密码协议的SPIN模型,模型图如下:根据NS协议的消息描述,建立三个进程,分别为发送者Alice,接受者Bob,入侵者Intruder,消息的枚举类型mtype=ok,err,msg1,msg2

5、,msg3,keyA,keyB,keyI,agentA,agentB,agentI,nonceA,nonceB,nonceI;msg1,msg2,msg3为上述的消息1,消息2,消息3,keyA,keyB,keyI为三者的公钥,agentA,agentB,agentI分别代表三个通信主体,nonceA,nonceB,nonceI则为三者的临时值。定义的通信通道为会面点通道Chan network=0 of mtype,mtype,mtype,mtype,mtype,即同步通信的通道,通道中有5条内容,其中通道中第一条为消息号,第二条为响应者,后面为所发的信息。(1)主体A作为协议发起的初始者,

6、它的第一个通信动作是发送信息1,通信对象可以是B也可以是I,这是两个并发的通信动作,不确定地选择一个通信对象执行当他接到消息2后,A要检验消息2是否以他的公钥加密,并且检查消息中是否含有他发出的临时值nonceA,否则,A进程将处于阻塞状态,如果消息2中是他期望的值,就把消息3发给他的通信对象,并认为通信成功。(2)主体B的通信过程和A类似其通信动作含有二次接收和一次发送.(3)入侵者I不是固定地按照协议的步骤运行,目的是让SPIN发现协议中可能存在的攻击,我们描述入侵者I的动作是非常不确定的,让SPIN选择它们执行,比如I存在发送和接收两个不确定的动作,如果选择接收动作,则接下来是拦截或接收

7、一条信息,并将拦截的信息存储起来或者不存储;如果信息是以NonceI加密,则I可以解开并可以获得nonceA或nonceB,定义两个布尔变量knows_nonceA和如knows_nonceB表示是否知道这些临时值,如果选择发送动作,则入侵者I又有两个可选择的动作:重放一个拦截的数据包或者从已知的信息中构造一个新的数据包发出去,I作为冒充者,可冒充A的身份,以I(A)参与协议运行。3模型检测过程 3.1忽略强安全破坏性的验证 首先,为了验证协议的正确性,给出发送者和接受者的进程描述,以下为发送者进程和接受者进程的promela代码:active proctype Alice() mtype p

8、key,pnonce; mtype key,data1,data2,partnerA; mtype statusA;Release: do :if :partnerA=agentI;pkey=keyI; :partnerA=agentB;pkey=keyB; fi; network!msg1,partnerA,pkey,agentA,nonceA; network?msg2,agentA,key,data1,data2; if :(key=keyA)&(data1=nonceA)- pnonce=data2; network!msg3,partnerA,pkey,pnonce,0; statu

9、sA=ok; :else-goto Release; fi; od;active proctype Bob() mtype pkey,pnonce; mtype key,data1,data2; mtype key2,data3,data4; mtype partnerB; mtype statusB;progress: do :network?msg1,agentB,key,data1,data2- if :(key=keyB)&(data1=agentA)- partnerB=agentA; network!msg2,partnerB,keyA,data2,nonceB; :(key=ke

10、yB)&(data1=agentI)- partnerB=agentI; network!msg2,agentI,keyI,data2,nonceB; fi; network?msg3,agentB,key2,data3,data4; if :(key2=keyB)&(data3=nonceB)- statusB=ok; else-goto progress; fi; od;运行得到:一直都会在Alice与Bob之间通信,收发信息。根据本例,首先构造出线性时序逻辑LTL(linear temporal logic)公式,协议应该满足:ltl e1 (statusA=ok )& (statusB

11、=ok)- (partnerA=agentB)|(partnerA=agentA)注:(e1为公式名,公式含义为总有发送者和接受者验证通过后,最终发送者的对象必为接受者或者接受者的对象必为发送者)。点击verification进入验证,将use claim选项选上之后,输入公式验证,验证通过.3.2强安全破坏性的验证增加入侵者的进程 Intruder,并根据协议增加两个ltl公式:ltl e2 (statusA=ok)&(partnerA=agentB)-(!knows_nonceA) 注:公式含义为总有发送者验证通过且确定对象为B时就不会收到入侵者攻击ltl e3 (statusB=ok)&

12、(partnerB=agentA)-(!knows_nonceB)注:公式含义为总有接受者验证通过且确定对象为A时就不会收到入侵者攻击以下为入侵者进程promela代码:active proctype Intruder() mtype msg,recpt; mtype key,data1,data2; mtype key1,data3,data4; bool knows_nonceA,knows_nonceB; do :network?msg,_,key,data1,data2- if :key1=key;data3=data1;data4=data2; :skip; fi; if :(key

13、=keyI)- if :(data1=nonceA)|(data2=nonceA) -knows_nonceA=true; :(data1=nonceB)|(data2=nonceB) -knows_nonceB=true; :else-skip; fi; :else-skip; fi; if :msg=msg1; :msg=msg2; :msg=msg3; fi; if :recpt=agentA; :recpt=agentB; fi; if :skip :if :data3=agentA; :data3=agentB; :data3=agentI; :knows_nonceA-data3=

14、nonceA; :knows_nonceB-data3=nonceB; :data3=nonceI; fi; if :data4=nonceI; :knows_nonceA-data4=nonceA; :knows_nonceB-data4=nonceB; fi; if :key1=keyA; :key1=keyB; fi; fi; network!msg,recpt,key1,data3,data4; od; ltl e2 (statusA=ok)&(partnerA=agentB)-(!knows_nonceA) ltl e3 (statusB=ok)&(partnerB=agentA)-(!knows_nonceB)输入公式e1验证得到如下的错误:通过分析流程图,得到以下的攻击:(1).A-I:A,Na,ki,(2).I(A)-B:A,Nakb,(3).B-I(A):Na,Nbka(4).I-A:Na,Nbka,(5).A-I:Nbki,(6).I(A)-B:Nbkb,输入公式e2,e3得到同样的错误。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2