【proverif】proverif的语法-各种密码原语的介绍和具体编码

proverif-系列文章目录

  1. 【proverif】proverif的下载安装和初使用
  2. 【proverif】proverif的语法-解决中间人攻击-代码详解
  3. 【proverif】proverif的语法2-各种密码原语的编码 (本文)


前言

在官方文档中,给出了部分密码原语(例如:对称加密、非对称加密等)的详细编码例子,接下来我们可以通过学习官方例子代码,从而进行仿写并编写出自己需要的协议编码。
官网页数很多,而纵观全网关于proverif的相关学习资料很少,这看似是一块很难啃的骨头,但是没关系,再多的讲解资料都不如官方的使用手册来的详细。所以现在我们已经拿到寻宝图的真经,跟着本博客猪一起遨游proverif的知识海。


铺垫知识

  1. 声明:
  • type(定义类型) :用户可以使用 type 定义自定义类型。如定义密钥类型 key,使用type key即可。
  • free(自由名称声明):在一个输入文件中出现的所有自由名称必须使用free进行声明,并且可以通过增加 private 标志来声明该自由名称为秘密的。语法为:free n:t [private],如声明一个 bitstring类型的自由名称 n,可以通过以下语句实现:free n:bitstring
  • fun(构造函数):构造函数主要用于建立加密协议所使用的建模原语,如:单项哈希函数、加密和数字签名等。构造函数通过 fun 定义。语法为:fun f(t1,...,tn) : t.fun enc(bitstring, key):bitstring 意味着定义一个名为 enc 的构造函数,该函数的输入有两个参数,分别为 bitstring类型和key类型,输出为bitstring类型。
  • reduc(析构函数):密码学原语之间的关系是通过析构函数进行捕获的。直接从字面意思看不是很好理解,我们可以结合前面的知识,通过定义一个完整的对称加密协议来理解。
  1. 宏机制:主要提供了功能宏和进程宏。这里主要讲解功能宏。包含不止一个构造函数或析构函数应用程序的术语会重复多次。ProVerif提供了一种宏机制,以便定义表示该术语的函数符号并避免重复。
  2. or fail: 每个参数的类型之后,允许用户在某些参数失败的情况下控制函数宏的行为。果存在or fail并且参数失败,则将失败值传递给函数宏,该函数宏可能会捕获它并返回一些非失败结果。
letfun f(x1:t1 [or fail]...,xj:tj [or fail])=M.
  1. 宏机制的应用:非对称加密
type skey.
type pkey.
type coins.
(*格式:fun 函数名(参赛类型):输出参数的类型*)
fun pk(skey):pkey.*公钥生成*)
fun internal_aenc(bitstring,pkey,coins):bitstring. (*加密函数*)

reduc 
	forall m:bitstring,k:skey,r:coins;*参数名:类型*adec(internal_aenc(m,pk
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值