之前一直在怀疑我是不是因为对CPN Tools的原理结构还是不够理解,对Petri网的还没有弄清楚,越往后面看这种质疑越来越严重。 之前说CPN Tools在对称和非对称算法中不能形式化的问题,后续看到的文献,虽然有对加解密做出示例,但是文献中并没有将如何加密和解密过程形式化,而是定义攻击者初始知识的解密函数,函数功能只能按照 case :k   其中k指代公钥,而函数输出是私钥。其实函数的功能相当于写了一对密钥对 (Pk,Sk),所以说并没有将 一个消息如何加密输出,和密文如何解密表达出来。这样 对协议中存在的对称和非对称加密算法就不能形式化。 内蒙古大学 [1] 关于CPN Tools协议分析这方面的的论文也没有真正定义如何实现对称和非对称算法。

1、ML 简单颜色集的定义

CPN ML 提供这些简单颜色集: Unit、 Boolean、Integer、String 、Enumerated、  Index (在CPN Tools中颜色集属性关键字是小写)

unit 颜色集包含单个元素:

colset name =unit [with new_unit]       如果没有token 名,与颜色集名字重合。在之前的博客中写过的灰姑娘例子中可以这样定义:

colset p=unit with pumpkin;          colset c= unit with Cinderella;    colset m=uint with mouse;

boolean颜色集定义:  其值为  true  或者  false :

colset name =bool [with (new_fale, new_true)]  选择的名字可以是 true 或者 false 。yes或者 no

colset Answer= bool with (no,yes);

Integers 颜色集定义: 是整形数字不是小数点。

colset name=int [with int-exp1... -exp3....   int.....int-expn] 将选择的数字限定在 定义的数字间隔之间。

colset Dozen= int with 1..12;  跟随整形变量的计算操作包括“ +    -   div    mod     abs   Int.min     Int.max ”

String 颜色集定义:定义字符串序列可由ASCII字符序列指定。用引号引起来。

colset name =string [with  string-exp1........string-exp2]   [and int-exp1....int-exp2]  指定字符的范围

colset LowerString =with "a"...."z";   附加在String颜色集的操作运算包括 :   -表示级联 , String.size  ,substring

Enumerated 颜色集定义 :在声明中显示标识符

colset name =with id0 | id1 | ....idn;

colset g=with rice | wheat | oat;

Indexed 颜色集定义: 索引标识由索引标识符和说明值组成序列

colset PH =index ph with 1..5;

colset  FR= index fork with 1..5;

2、ML复合颜色集的定义

复合颜色集是简单颜色集的组合。CPN 提供的复合颜色集有 : products ,records  , unions, lists, subsets, aliases

其中 lists 和  unions两种 复合颜色集很少用到。

Products 和 records 两种颜色集都表示笛卡尔积的数据范围,不同之处在于 product 颜色集的组件没有名字,而record颜色集组件由自己的名字。

product 颜色集定义:

colset name = product name1*name2*.......namen;

(v1,v2......vn) 在 1<=i<=n之间 vi的类型为 namei   ,提取第 i 个 product 声明的元素操作为:----> # i name

record 颜色集定义:

colset name = record id1:name1 * id2:name2 *........*idn:namen;

{id1=v1,    id2=v2, ..... idn=vn}   vi 是namei 类型的对应的值。 for 1<=i<=n .提取第 i record颜色集中的值操作: # idi name

在之前的博客中写过定义 EtherNet帧结构的颜色集定义, EtherNet帧结构构成: Source address     、 destination address 、 data 。我们定义MAC地址为integer颜色 ,帧数据为string 颜色集

colset MAC= int;

colset DATA=string;

colset frame =product MAC*MAC*DATA;

colset frame1= record src:MAC *dst:MAC *d:DATA

这里我们也就能看出 product 和 record复合颜色集之间的差异 。EtherNet帧使用了两种定义的方式,在实例化的时候也是不同的。如果是使用 frame   则值  X=(2,4,“Hello”)  , 相同的值在frame1中的表达方式是 x1={src=2,dst=4,  d="Hello"}

提取 frame颜色集中的目标地址操作:    #2 x

提取frame1颜色集中的目标地址操作:   # dst  x1

alias 颜色集定义:别名颜色集合之前的的颜色集有相同的属性和值

colset name =name0

定义变量和常数:

变量是一个标识符,其值在模拟执行的时候可以改变,在Petri网中的元素铭文:

var id1 , id2  ..... idn:Cs_name ;   其中  idi 是标识符, Cs_name 是是之前定义的颜色集。我们可以这样定义 如下:

var f1,f2: frame;

var f3, f4:frame1;

将申明的值绑定到标识符上:   使用  val id=exp;  其中 id是标识符  exp 是 CPN ML表达式, 表示一个值绑定到一个表示符上,例如:

val CheckFrame= (3,5,“Ping”);

val   ResponseFramel={src=5,   dst=3,  d="OK"} ;

函数的定义: CPN Tools中 只有逻辑函数,没有更进一步的复杂运算函数。 直到目前为止我查阅的文献中没有关于CPN Toll三可以形式化复杂函数,像 加解密哈数和 协议中出现的对称和非对称算法。

新限制变量是输出弧上的变量,没有绑定到输入弧和门卫上,当模型执行的时候分配一个随机值

函数  ran 生成衣蛾随机值,应用在大型颜色集中,

CPN Tools还提供特殊的随机数分布函数,像我们比较熟悉的伯努利分布函数,二项式分布函数,指数分布函数,爱尔朗分布函数,泊松分布函数等,那么这些特殊的函数这里不再讲了。

好现在我们就论文中出现的 如何将客户端和服务端之间选择密钥材料参数算法进行建模。

文献资料:

[1]白云莉. 基于CP-nets模型的安全协议形式化方法研究[D]. 2014.

CPNtools协议建模安全分析--ML语言之颜色集定义(六)的更多相关文章

  1. CPNtools 模拟工具适合分析什么样的协议

    最近梳理和CPNtools和Scyther之间的性能和差别.方便后面整理使用 1.库所的托肯值是什么? 托肯值也叫作令牌, 即网络系统中的资源,托肯的数目值代表了网络赋予的资源大小.在一个活的网络系统 ...

  2. 预测分析建模 Python与R语言实现

    预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...

  3. 《C专家编程》第三章——分析C语言的声明

    前面一章我们已经说过C语言存在的一些问题和它晦涩的地方,让我们对这门神奇的语言有了更深的了解.现在这一章则集中精力来讨论C语言的声明,分为三块,首先是说明C语言声明晦涩难懂的原因和声明是如何形成的,其 ...

  4. C++写一个简单的解析器(分析C语言)

    该方案实现了一个分析C语言的词法分析+解析. 注意: 1.简单语法,部分秕.它可以在本文法的基础上进行扩展,此过程使用自上而下LL(1)语法. 2.自己主动能达到求First 集和 Follow 集. ...

  5. 基于Spark和SparkSQL的NetFlow流量的初步分析——scala语言

    基于Spark和SparkSQL的NetFlow流量的初步分析--scala语言 标签: NetFlow Spark SparkSQL 本文主要是介绍如何使用Spark做一些简单的NetFlow数据的 ...

  6. 【Wyn Enterprise BI知识库】 认识多维数据建模与分析 ZT

    与业务系统类似,商业智能的基础是数据.但是,因为关注的重点不同,业务系统的数据使用方式和商业智能系统有较大差别.本文主要介绍的就是如何理解商业智能所需的多维数据模型和多维数据分析. 数据立方体 多维数 ...

  7. 以杨辉三角为例,从内存角度简单分析C语言中的动态二维数组

    学C语言,一定绕不过指针这一大难关,而指针最让人头疼的就是各种指向关系,一阶的指针还比较容易掌握,但一旦阶数一高,就很容易理不清楚其中的指向关系,现在我将通过杨辉三角为例,我会用四种方法从内存的角度简 ...

  8. 32 Profiling Go Programs 分析go语言项目

    Profiling Go Programs  分析go语言项目 24 June 2011 At Scala Days 2011, Robert Hundt presented a paper titl ...

  9. 网络协议图形化分析工具EtherApe

    网络协议图形化分析工具EtherApe   在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kal ...

  10. 协议解析Bug分析

    协议解析Bug分析 源自邮件协议RPC(远程过程调用)处理的Request请求数据包的bug.        一.Bug描写叙述 腾讯收购的Foxmailclient能够作为outlookclient ...

随机推荐

  1. 小白学k8s(2)理解flannel网络

    理解flannel网络 简介 Kubernetes中的网络 flannel 总结 参考 理解flannel网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简 ...

  2. Go语言的100个错误使用场景(一)|代码和项目组织

    目录 前言 1. Go: Simple to learn but hard to master 1.1 Go 语言概述 1.2 简单不等于容易 1.3 使用 Go 的100个错误 2. Code an ...

  3. MiniRBT中文小型预训练模型:结合了全词掩码技术和两段式知识蒸馏技术,加快推理速度

    MiniRBT中文小型预训练模型:结合了全词掩码(Whole Word Masking)技术和两段式知识蒸馏(Knowledge Distillation)技术,加快推理速度 在自然语言处理领域中,预 ...

  4. MySQL【五】与python交互

    1.安装pymysql 安装pymysql pip install pymysql 2.游标(cursor)的使用 cursor,就是一个标识,用来标识数据可以理解成数组中的下标  . 一.声明一个游 ...

  5. win10 局域网共享文件创建方法

    win10 局域网共享文件创建方法 1.先在桌面文件夹,我命名为"xxxx",然后将文件放在该文件里. 2.右击共享文件夹,找到属性选项,点击"属性".再点击& ...

  6. 【Trento】遥感图像数据集提供下载

    遥感图像处理学习(11)之Trento数据集 前言 遥感系列第11篇.遥感图像处理方向的学习者可以参考或者复刻 本文初编辑于2024年1月18日 2024年1月25日搬运至本人博客园平台 最近在复现论 ...

  7. VB6的WindowsXP控件引擎 - 开源研究系列文章

    这几天翻了一下原来VB6的代码,将一些有用的代码进行了整理,然后将这些代码记录下来,开源出来,让需要的朋友能够进行代码复用. 这次介绍的是一个VB6的WindowXP的控件引擎代码,主要是在程序启动的 ...

  8. 官方实锤!AMD真的已经有了大小核:不搞Intel那一套

    Intel 12代酷睿开始引入大小核混合架构,多核跑分提升立竿见影,在游戏.渲染等场景中也有很好的辅助作用,但因为大核心.小核心基于完全不同的架构,需要复杂的系统.软件调度配合,也直接导致失去了AVX ...

  9. 使用easyexcel导入62个字段,十万加行数的excel

    使用easyexcel导入62个字段,十万加行数的excel 1️⃣ 准备工作 1. 版本对应 在easyexcel官网的常见问题栏中往下滑找到 2. 下载jar包 maven项目不想多说,在pom. ...

  10. NC20313 [SDOI2008]仪仗队

    题目链接 题目 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练. 仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队 ...