密码分析实验一(ProVerif/HandShake Protocol/Needham-Schroeder Protocol)

实验要求:

ProVerif
配置 Proverif 环境
实验要求
根据实验手册,安装 proverif 环境
验证 hello.pv 文件
HandShake Protocol
实验要求
学习 proverif 手册 3.1-3.3 部分与实验手册
验证 ex_handshark.pv 文件,分析 proverif 的验证结果,说明存在的攻击手段根
proverif 的分析结果,尝试改进 ex_handshake 协议,解决中间人攻击
Needham-Schroeder Protocol
实验要求
学习 Needham-Schroeder 协议,了解其基本原理与协议流程
利用 proverif ,分析附件中的 Needham-Schroeder 密钥共享协议的三个变体,说
明各个协议变体存在的缺陷,尝试给出攻击方式
根据分析结果,结合 proverif 手册第五章内容,尝试解决协议存在的缺陷

(一)ProVerif

1.安装
ProVerif 组件依赖 :OCaml  graphviz
下列安装过程基于 ubuntu
OCaml:

sudo apt-get install ocaml
sudo apt-get install opam
graphviz :

sudo apt install graphviz

安装ProVerif:

到官网下载源码文件: http://proverif.inria.fr/   
解压:

tar -xzf proverif2.05.tar.gz

进入相应目录,安装Proverif:

cd ./proverif2.05
./build

-help参数可查看proverif可用:

2.验证hello.pv文件:

将hello.pv文件用proverif进行分析:

./proverif ./hello.pv

(二)HandShake Protocol

握手协议验证:
(* Symmetric Enc *) 
type key. 
fun senc(bitstring,key) : bitstring. 
reduc forall m:bitstring,k:key;sdec(senc(m,k),k) = m. 
(* Asymmetric Enc Structure *) 
type skey. 
type pkey. 
fun pk(skey): pkey. 
fun aenc(bitstring,pkey): bitstring. 
reduc forall m:bitstring,k:skey;adec(aenc(m,pk(k)),k) = m. 
(* Digital Signatures Structure *) 
type sskey. 
type spkey. 
fun spk(sskey): spkey. 
fun sign(bitstring,sskey) :bitstring. 
reduc forall m:bitstring,k:sskey;getmess(sign(m,k)) = m. 
reduc forall m:bitstring,k:sskey;checksign(sign(m,k),spk(k)) = m. 
(* HandShake Protocol *) 
free c:channel. 
free s:bitstring [private]. 
query attacker(s). 
let clientA(pkA:pkey,skA:skey,pkB:spkey) = 
out(c,pkA); 
in(c,x:bitstring); 
let y = adec(x,skA) in 
let (=pkB,k:key) = checksign(y,pkB) in 
out(c,senc(s,k)). 
let serverB(pkB:spkey,skB:sskey) = 
in(c,pkX:pkey); 
new k:key; 
out(c,aenc(sign((pkB,k),skB),pkX)); 
in(c,x:bitstring); 
let z = sdec(x,k) in 
0. 
process 
new skA:skey; 
new skB:sskey; 
let pkA = pk(skA) in out(c,pkA); 
let pkB = spk(skB) in out(c,pkB); 
( (!clientA(pkA,skA,pkB)) | (!serverB(pkB,skB)) )

将以上代码写入并保存为handshake.pv文件,具体操作如下:

sudo apt install vim
vim handshake

写入后进行验证:

分析ex_handshake.pv

(三)Needham-Schroeder Protocol

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值