Z语言学习——基于通讯案例

目录

1数据类型

2初始状态

3 Alice的消息发送

4 Bob接收与发送消息

5 Alice接收消息

6消息的增删改查

6.1 删除消息

6.2查询消息

6.3修改/增加消息

7定理证明——重要目的

案例背景:

(1)构建一个交互式的通讯方案;

(2)攻击者控制了所有的通讯信道,可以修改、拦截、转发信息;

(3)诚实主体为了保护个人隐私,所有信息加密;

(4)信息项可以增加、删除、查询、修改。

1数据类型

(1)基于非对称密码保护方案;

(2)包含了各种错误信息和消息项操作信息;

[Messages]

定义一个消息类型。

Agents ::= Alice | Bob | Evil

三个主体, Evil是攻击者

Keys ::= Alice_PK| Bob_PK| Evil_PK | Alice_SK | Bob_SK | Evil_SK | NULL

Alice_PK表示Alice有个公钥,Alice_SK表示Alice有个私钥,NULL表示消息可以明文传送。

Result ::= OK | NoSuchltem

传输结果,操作成功OK,某个消息不存在NoSuchltem

Command := Add | Del |  Query |  Modi

额外的选项,交易项的操作信息:增删改查

Check _M: Agents × Agents × Command × Messages × Keys

→Command × Messages × Keys

额外定义了一个函数,函数的输入是一个五元组(Agents × Agents X Command × Messages × Keys),函数的输出是一个命令,消息,和对应的一个密钥(Command × Messages × Keys

)。

Check_M=O

初始化:是初始化函数,因为所有的都是集合,所以要有初始值。

2初始状态

Evil_Agent攻击者的状态

Adversary_Knowledge:P(Agents × Agents × Command × Messages × Keys)

攻击者的知识集,给他刻画了某一种数据类型,P表示由集合(Agents × Agents × Command × Messages × Keys)产生的密集。

Adversary_Init: Keys→ Agents

输入的Keys,对应的是一个实体,因为函数是多对一的,一个实体可以拥有多个密钥,

Acversary_Init = {(Alice_PK,Alice),(Bob_PK,Bob).(Evil_PK,Evil).(Evil_SK,Evil)}

对于攻击者而言,有3个公钥PK,1个私钥SK。

Alice_Agent

Alice_Knowledge: P Messages

Alice_Init: Keys →Agents

Alice_Init = {(Alice_PK,Alice),(Bob_PK, Bob), (Evil_PK,Evil), (Alice_SK,Alice) }

Alice_Knowledge  = ∅

Bob_Agent(与Alice类似)

Bob_Knowledge: P Messages

Bob_Init: Keys → Agents

Bob_Init = {(Alice_PK,Alice).(Bob_PK. Bob),(Evil_PK.Evil),(Bob_SK,Bob)}

Bob_Knowledge = ∅

Init

Alice_Agent'

Bob_Agent'

Evil_Agent'

Adversary_Knowledge'=∅

得到初始状态,初始状态Alice与Bob之间没有任何消息的传递(Alice_Knowledge  = ∅

,Bob_Knowledge = ∅),所以攻击者得不到任何信息,因此攻击者的知识集目前也是空的(Adversary_Knowledge'=∅)。

注意:Z规格中每一个schema本质上是由多个集合组成,每个集合上必须严格定义数据类型,因此Z规格是一种类型化系统;另外,对数据的操作则构成了多个命题。命题用于说明系统状态,后续将说明前件和后件的使用。

3 Alice的消息发送

Alice_send_Ml

Na: Messages

Na是一个随机数,定义为一个消息

M1!: Agents ×  Agents × Command × Messages ×  Keys

输出是M1

△Alice_Agent

△Evil_Agent

这里△表示如果Alice发送消息M1的话(Alice_send_Ml),会引起Alice_Agent和Evil_Agent的状态变化。

Na ∉ Alice_Knowledge

做一个判断,要发送的随机数Na不能属于Alice已有的知识集

Alice_Knowledge'= Alice_Knowledge ∪ {Na}

更新Alice知识集,增加Na

M1! = (Alice, Bob,Add,Na,Bob_PK)

输出M1用固定的表示(Alice, Bob,Add,Na,Bob_PK)

Adversary_Knowledge'= Adversary_Knowledge ∪  {M1!}

输出以后,攻击者会在知识集中增加M1的信息

4 Bob接收与发送消息

Bob receive Ml _send_M2

Bob收到M1同时发送M2

M1?: Agents × Agents × Command × Messages × Keys

?表示输入

M2!: Agents ×Agents × Command × Messages × Keys

!表示输出

Na,Nb: Messages

△Bob_Agent

△Evil_Agent

M1? ∈ dom Check_M

要检查一下M1是否属于Check_M函数的一个定义,属于证明才能通过。

(Bob_SK,Bob) ∈ Bob_Init

Bob要解密M1,所以需要一个私钥Bob_SK。

Check_M M1? =(Add,Na,Bob_PK)

利用函数Check_M判断M1,输入?是M1,输出是产出的结果判断,增加Add一个消息Na.

Bob_Knowledge'= Bob_Knowledge ∪ {Na,Nb}

接受方Bob知识集增加两个,Na 是Bob从密文中提取的,Nb是Bob自己产生的。

M2!=(Bob,Alice,Add,Nb,Alice_PK)

Adversary_Knowledge'= Adversary_Knowledge ∪ {M24}

5 Alice接收消息

大同小异了

6消息的增删改查

6.1 删除消息

Alice_And_Bob_Del

M?: Agents×Agents × Conmcd × Messcges ×Keys

reply!: Result

状态的反馈

X: Messcges

△Alice_Agent

△Bob_Agent

要求同时更新Alice和Bob两个实体状态。

M? ∈ dom Check_M

 Check_M M?=(Del,X,NULL)

逻辑与符号:可以省略,因为在Z规格中,每一行后面都会隐含一个and。这里只是为了增加可读性。

 X∈ Bob_Knowledge

 X∈Alice_Knowleclge

增加了额外的操作条件,此时前提条件有四个:判断M?属于Check_M定义域、M?中是否包含Del指令、消息X是否属于Alice知识集、消息X是否属于Bob知识集。

Alice_Knowledge'= Alice_Knowledge \ {X}

Bob_Knowledge'= Bob_Knowlecge \ {X}

上面的\就表示删除X

reply! = OK

 reply! = NoSuchItem

逻辑或符号

要写,表示产生了一个错误,当M不属于Check_M函数的定义,就返回没有信息项NoSuchItem

注意:Z规格中,系统的模型通常体现为一个LTS,即标签化的可变迁状态机。每一个状态的变迁有前提条件和后续条件。但是,Z规格的schema中并没有显示地说明哪些是前提条件,哪些是后续条件,需要用户自己甄别。

6.2查询消息

Alice_Or_Bob_Query

M?: Agents × Agents × Commcmnd × Messages × Keys

X: Messcges

resp!: Messcges

reply!: Result

ΞAlice_Agent

ΞBob_Agent

希腊字符Ξ:表示Alice和Bob的状态不会有任何的更改。仅仅是对消息的查询。

M?∈ dom Check_M

 Check_M M?=(Query,X,NULL)

判断M?是否属于Check_M定义域、M?中是否包含Query指令

X∈Alice_KnowledgeX∈ Bob_Knowledge

reply! = OK

resp!=X reply!= NoSuchItem

输出X,或如果输入不在Check_M函数中,输出没有的消息NoSuchItem

6.3修改/增加消息

Alice_Or_Bob_Modify

M_New? : Messciges

M_Old? : Agents × Agents  ×Conmand × Messcges × Keys

对于修改消息,输入有两个,新旧消息项

X: Messages

reply!: Result

△Alice_Agent

△Bob_Agent

M_Old? ∈ dom Check_M Check_M M_Old? =(Modi,X,NULLL)

判断旧消息项是否属于函数定义域,同时输出密文能把X找到。

X∈ Alice_Knowledge

X∈ Bob_Knowlecge

Alice_Knowledge'= Alice_Knowledge \ {X}∪{M_New?}

Bob_Knowleclge'= Bob_Knowledge \ {X}∪{M_New?}

reply! = OK reply! = NoStuchItem

7定理证明——重要目的

第一列Y表示没有语法错误,第二列Y表示没有逻辑错误。

重要目的:证明系统的安全性,或某些功能是否达到要求。

(1)初始状态中是否能够蕴含这三种实体

(2)Alice收到消息M2,是否从上面的系统中蕴含着Alice一定发送了消息M1

(3)Alice是否正确的得到了随机数Na和Nb,如果Alice收到M2,能否推出:

1)Na和Nb属于Alice知识集,2)Alice发送M1,3)Bob收到M1并发送M2

————————后面会学习软件Z-EVES:

Z-EVES 是专门为 Z 规范设计的,这使得它在处理 Z 语言时比一般的定理证明器更高效和精确。例如,支持 Z 规范的语法和语义检查。与其他形式化验证工具相比,Z-EVES 在处理 Z 语言时具有独特的优势和高效性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

眼见不一定为实之MySQL中的不可见字符

目录 前言 一、问题的由来 1、需求背景 2、数据表结构 二、定位问题 1、初步的问题 2、编码是否有问题 3、依然回到字符本身 三、深入字符本身 1、回归本质 2、数据库解决之道 3、代码层解决 四、总结 前言 在开始今天的博客内容之前,正在看博客的您先来…

Element-UI实现el-dialog弹框拖拽功能

在实际开发中,会发现有些系统,弹框是可以在浏览器的可见区域自由拖拽的,这极大方便用户的操作。但在查看Element-UI中弹框(el-dialog)组件的文档时,发现并未实现这一功能。不过也无须担心,vue中…

Day 28:2748. 美丽下标对的数目

Leetcode 2748. 美丽下标对的数目 给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length &#xff0c;如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 &#xff0c;则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。 返回…

Linux系统之ARP命令的基本使用

Linux系统之ARP命令的基本使用 一、ARP介绍二、ARP命令帮助2.1 ARP的help帮助信息2.2 ARP命令的帮助解释 三、ARP命令的基本使用3.1 查看ARP缓存3.2 显示详细信息3.3 添加静态arp映射3.4 删除指定主机的ARP条目3.5 从文件读取并添加条目3.6 清除ARP缓存 四、注意事项五、总结 一…

wins系统资源监视器任务管理器运行监控CPU、内存、磁盘、网络运行状态

目录 1.Windows系统资源监视器的详细介绍2.通过任务管理器打开资源监视器3.任务管理中总体观察观察cpu、pid、应用程序、I/O次数或者说读写字节数 4.观察CPU观察cpu核心数&#xff0c;以及哪些占用cpu频率过高 5.观察内存观察各个应用占用的内存大小和对应线程 6.观察磁盘活动观…

【前端技巧】css篇

利用counter实现计数器 counter-reset&#xff1a;为计数器设置名称&#xff0c;语法如下&#xff1a; counter-rese: <idntifier><integer>第一个参数为变量名称&#xff0c;第二个参数为初始值&#xff0c;默认为0 counter-increment&#xff1a;设置计数器增…

LabVIEW与3D相机开发高精度表面检测系统

使用LabVIEW与3D相机开发一个高精度表面检测系统。该系统能够实时获取三维图像&#xff0c;进行精细的表面分析&#xff0c;广泛应用于工业质量控制、自动化检测和科学研究等领域。通过真实案例&#xff0c;展示开发过程中的关键步骤、挑战及解决方案&#xff0c;确保系统的高性…

宕机了, redis如何保证数据不丢?

前言 如果有人问你&#xff1a;"你会把 Redis 用在什么业务场景下&#xff1f;" 我想你大概率会说&#xff1a;"我会把它当作缓存使用&#xff0c;因为它把后端数据库中的数据存储在内存中&#xff0c;然后直接从内存中读取数据&#xff0c;响应速度会非常快。…

【Linux从入门到放弃】进程地址空间

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《Linux从入门到放弃》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; 进…

如何更换OpenHarmony SDK API 10

OpenHarmony社区已经发布OpenHarmony SDK API 10 beta版本&#xff0c;有些 Sample案例 也有需要API10。那么如何替换使用新的OpenHarmony SDK API 10呢&#xff1f;本文做个记录。 1、如何获取OpenHarmony SDK 1.1 每日构建流水线 可以从OpenHarmony每日构建站点获取最新的…

【网络安全的神秘世界】已解决Failed to start proxy service on 127.0.0.1:8080

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 解决burpsuite无法在 127.0.0.1&#xff1a;8080 上启动代理服务端口被占用以及抓不到本地包的问题 Burpsuite无法启动proxy…

定个小目标之刷LeetCode热题(25)

这道题采用的解法是桶排序&#xff0c;画草图如下 代码如下 //基于桶排序求解「前 K 个高频元素」 class Solution {public int[] topKFrequent(int[] nums, int k) {HashMap<Integer, Integer> map new HashMap();for (int num : nums) {if (map.containsKey(num)) {m…

【安防天下】模拟视频监控系统——模拟监控系统的构成视频采集设备

文章目录 1 模拟监控系统的构成2 视频采集设备2.1 摄像机相关技术2.1.1 摄像机的工作原理2.1.2 摄像机的分类2.1.3 摄像机的主要参数 2.2 镜头相关介绍2.2.1 镜头的主要分类2.2.2 镜头的主要参数 1 模拟监控系统的构成 模拟视频监控系统又称闭路电视监控系统&#xff0c; 一般…

htb_Blurry

端口扫描 80 按照教程注册安装clear ml 加载configuration的时候会报错 将json里的API&#xff0c;File Store的host都添加到/etc/hosts中 即可成功初始化 查找clear ml漏洞 发现一个cve-2024-24590 下面是一个利用脚本&#xff0c;但不能直接用 ClearML-vulnerability-…

好用的linux一键换源脚本

最近发现一个好用的linux一键换源脚本&#xff0c;记录一下 官方链接 大陆使用 bash <(curl -sSL https://linuxmirrors.cn/main.sh)# github地址 bash <(curl -sSL https://raw.githubusercontent.com/SuperManito/LinuxMirrors/main/ChangeMirrors.sh) # gitee地址 …

Linux基础命令大全(详解版)

Linux基础命令&#xff08;详解版&#xff09; 文章目录 Linux基础命令&#xff08;详解版&#xff09;1.Linux的目录结构**2.Linux路径的描述方式**3.Linux命令基础格式4.ls命令 隐藏文件、文件夹5.pwd命令6.cd命令 特殊路径符7.mkdir命令 文件操作命令8.touch命令9.cat命令10…

英伟达中国特供芯片降价背后:巨头与市场的较量

英伟达&#xff0c;这家曾经在人工智能芯片领域独领风骚的巨头&#xff0c;近期在中国市场遭遇了一些挑战。为了应对来自华为等中国本土企业的竞争&#xff0c;英伟达不得不采取降价策略&#xff0c;调整其专为中国市场打造的H20芯片价格&#xff0c;甚至低于华为的同类产品。这…

S级猫主食冻干测评出来了:希喂、K9、朗诺实测分享

对于许多宠物主人来说&#xff0c;一到挑选主食冻干就头疼。尽管主食冻干为猫咪带来的益处远超过普通猫粮&#xff0c;但其价格也相对较高。因此&#xff0c;许多宠物主人担心高价购买的主食冻干营养价值并不高。实际上&#xff0c;除了营养&#xff0c;安全性和配方也是选购时…

【K8s】专题五(5):Kubernetes 配置之热更新工具 Reloader

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本介绍 二、工作原理 三、部署方法 四、使用方法 一、基本介绍 Reloader 是一个用…

clickhouse学习笔记(四)库、表、分区相关DDL操作

目录 一、数据库操作 1、创建数据库 2、查询及选择数据库 3、删除数据库 二、数据表操作 1、创建表 2、删除表 3、基本操作 ①追加新字段 ②修改字段类型或默认值 ③修改字段注释 ④删除已有字段 ⑤移动数据表&#xff08;重命名&#xff09; ⑥清空表 三、默认值…