Proverif工具的安装

2024-02-06 08:20
文章标签 工具 安装 proverif

本文主要是介绍Proverif工具的安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

@作者邮箱:caolei2000@snnu.edu.cn

密码学中协议形式化验证工具Proverif的安装与使用

首先准备依赖项和验证工具
1、Graphciz:是一款开源图形可视化软件。图形可视化是一种将结构信息表示为抽象图形和网络图的方法。它在网络、生物信息学、软件工程、数据库和网页设计、机器学习以及其他技术领域的可视化界面中有着重要的应用。
2、GTK:是为运行交互式仿真器证明协议。
3、Proverif:形式模型(即 Dolev-Yao 模型)中的自动加密协议验证器。

Graphciz的安装

下载地址:https://graphviz.org/download/

1、点击左侧项目栏中的Download —> 下翻找到Windows下载项 —> 选择最新版本graphviz-version (64-bit) EXE installer [sha256]

在这里插入图片描述

2、点击安装,途中选择为所有用户添加Path环境变量

在这里插入图片描述

3、检查是否安装成功

打开Cmd窗口,输入dot -version,如果出现以下内容,则表明安装成功。
在这里插入图片描述

安装GTK

下载地址:https://download.gnome.org/binaries/win32/gtk+/2.8/

1、下载解压到本地

点击gtk±2.8.10.zip下载
在这里插入图片描述

2、添加环境变量

右击此电脑—>属性—>高级系统设置—>环境变量—>在系统变量里找到Path双击—>新建—>将解压后的gtk\bin目录添加进去—>保存
在这里插入图片描述

安装Proverif工具

下载地址:https://bblanche.gitlabpages.inria.fr/proverif/
1、在Download中找到binary package ProVerif version 2.04, for Windows,点击下载并解压到本地。
2、准备一个测试用例:在 D:\proverifbin2.04\proverif2.04下新建一个test.txt文件,将以下代码(根据协议内容由Proverif语言编写)复制到文本文件中,修改文件后缀为.pv。

type element. (*element in finite field or group*)
type attribute.
free Sec:channel [private].		(*secure channel*)
free Pub:channel.			(*public channel*)(*-------Names & Variables-------*)
(*elements of cyclic group*)
const g:element.
const g2:element.(*1 . master public key*)
free Tpub:element.(*2. VehicleA & attributes & Each vehicle identity contains four attributes *)
free WA:bitstring.
free deltaA1:attribute.
free deltaA2:attribute.
free deltaA3:attribute.(*3. VehicleB & attributes*)
free WB:bitstring.
free deltaB1:attribute.
free deltaB2:attribute.
free deltaB3:attribute.(*4. master secret key*)
free y:element [private].(*5. vehicles' private key*)
free DA:element [private].
free dA:element [private].
free DB:element [private].
free dB:element [private].(*6. session key*)
free sessionKey:bitstring [private].
free sessionKey':bitstring [private].(*-------Constructors, Destructors & Equations------*)
fun identityCompose(attribute,attribute,attribute):bitstring.
fun H1(bitstring,bitstring):element.
fun H3(bitstring,bitstring,element,element,element):bitstring.fun concat(element,element,element):element.
fun pairing(element,element):element.  (*Pairing operation:e(g,g)*)
fun Mult(element,element):element.  (*Multiplication in group: G×G*)
fun Add(element,element):element.	 (*Addition*)
fun Powzn(element,element):element. 	(*g^s:Powzn(g,s)*)
fun T(attribute):element.
fun Attrcheck(bitstring,element,element,element,element,element,bitstring):element.
fun q1(attribute):element.
fun q2(attribute):element.
fun Negative(element):element.
equation forall a:element; Negative(Negative(a))=a.
(*Event*)
event beginVehicleA(bitstring).
event endVehicleA(bitstring).
event beginVehicleB(bitstring).
event endVehicleB(bitstring).(*Queries*)
query attacker(sessionKey).
query attacker(sessionKey').
query id:bitstring; inj-event (endVehicleA(id)) ==> inj-event(beginVehicleA(id)).
query id:bitstring; inj-event (endVehicleB(id)) ==> inj-event(beginVehicleB(id)).(*Processes*)
(*KGC Processes*)
let VehicleAReg=in(Sec,(deltaA1:attribute,deltaA2:attribute,deltaA3:attribute));let WA = identityCompose(deltaA1,deltaA2,deltaA3) innew rA1:element;new rA2:element;new rA3:element;let DA = concat(	Mult(Powzn(g2,q1(deltaA1)),Powzn(T(deltaA1),rA1)),Mult(Powzn(g2,q1(deltaA2)),Powzn(T(deltaA2),rA2)),Mult(Powzn(g2,q1(deltaA2)),Powzn(T(deltaA2),rA2))	) inlet dA = concat(	Powzn(g,Negative(rA1)),Powzn(g,Negative(rA1)),Powzn(g,Negative(rA1))	) in out(Sec,(WA,DA,dA));0.let VehicleBReg=in(Sec,(deltaB1:attribute,deltaB2:attribute,deltaB3:attribute));let WB = identityCompose(deltaB1,deltaB2,deltaB3) innew rB1:element;new rB2:element;new rB3:element;let DB = concat(	Mult(Powzn(g2,q2(deltaB1)),Powzn(T(deltaB1),rB1)),Mult(Powzn(g2,q2(deltaB2)),Powzn(T(deltaB2),rB2)),Mult(Powzn(g2,q2(deltaB2)),Powzn(T(deltaB2),rB2))	) inlet dB = concat(	Powzn(g,Negative(rB1)),Powzn(g,Negative(rB1)),Powzn(g,Negative(rB1))	) in out(Sec,(WB,DB,dB));0.
let KGC=VehicleAReg | VehicleBReg.(*VehicleA Processes*)
let VehicleA=(*Registration*)out(Sec,(deltaA1,deltaA2,deltaA3));in(Sec,(WA:bitstring,DA:element,dA:element));(*Login & Authentication*)event beginVehicleA(WA);new alphaA:element;new betaA:element;new sA:element;new TA:bitstring;let A0 = H1(WA,TA) inlet A1 = Add(alphaA,Mult(betaA,A0)) inlet MA = Mult(Mult(DA,Powzn(g,sA)),Powzn(g2,Negative(alphaA))) inlet NA = dA inlet ZA = Powzn(g2,betaA) in let CA = Mult(Powzn(g,Negative(sA)),Powzn(g2,Negative(betaA))) inout(Pub,(WA,A1,MA,NA,CA,ZA,TA));in(Pub,(WB:bitstring,B1:element,MB:element,NB:element,CB:element,ZB:element,TB:bitstring));let verifyResultA = Attrcheck(WB,B1,MB,NB,CB,ZB,TB) inif(verifyResultA = Tpub) thenlet SK = H3(WA,WB,ZA,ZB,Powzn(ZB,betaA)) inevent endVehicleA(WA)else 0.
(*VehicleB Processes*)
let VehicleB=(*Registration*)out(Sec,(deltaB1,deltaB2,deltaB3));in(Sec,(WB:bitstring,DB:element,dB:element));(*login & Authentication*)event beginVehicleB(WB);in(Pub,(WA:bitstring,A1:element,MA:element,NA:element,CA:element,ZA:element,TA:bitstring));let verifyResultB = Attrcheck(WA,A1,MA,NA,CA,ZA,TA) inif(verifyResultB = Tpub) thennew alphaB:element;new betaB:element;new sB:element;new TB:bitstring;let B0 = H1(WB,TB) inlet B1 = Add(alphaB,Mult(betaB,B0)) inlet MB = Mult(Mult(DB,Powzn(g,sB)),Powzn(g2,Negative(alphaB))) inlet NB = dB inlet ZB = Powzn(g2,betaB) in let CB = Mult(Powzn(g,Negative(sB)),Powzn(g2,Negative(betaB))) inlet sessionKey' = H3(WA,WB,ZA,ZB,Powzn(ZA,betaB)) inout(Pub,(WB,B1,MB,NB,CB,ZB,TB));event endVehicleB(WB)else 0.(*Processes Replication*)
process 
(!VehicleA | !VehicleB | !KGC)

3、Win+R 打开cmd窗口,输入cd D:\proverifbin2.04\proverif2.04切换到Proverif文件目录下,输入Proverif test.pv.
在这里插入图片描述
如果输出这些内容,到这里就已经成功安装Proverif工具了!!!!

官方文档:

Proverif手册,提取码:0m9j

参考链接:

[1]https://blog.csdn.net/weixin_43863334/article/details/110006348?
[2]https://blog.csdn.net/IYLlove/article/details/123336598

这篇关于Proverif工具的安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/wadacxA/article/details/133384101
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/683688

相关文章

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是