Scyther 协议形式化验证翻译 (第二章)
论文概述:$\alpha +\forall (\sum \oint_{3}^{4})$
第二章: 操作语义
在第二章中我提出了一种新的安全协议的模型,用于定义安全协议以及协议的行为,在明确的模型中执行协议,结果是基于角色的安全协议模型,该模型与并发协议的数量无关,该模型对协议分析做出了几个明确的假设,并允许例如:用于从协议描述中推导出入侵者知识,在协议模型中,安全属性被建模成本地声明事件,本章基于引文[65]。本章主要的贡献是开发了新的安全协议模型,用于描述协议和协议的行为,该模型提供了几个新颖功能。
第三章 : 安全属性
第三章扩展了第二章模型中的安全属性的定义,包括保密概念和现有认证属性的定义。我们通过开发一种强大的身份验证的概念(称为内射同步性)来扩展现有的身份验真属性集。同时我们给出了认证属性的层次结构,并给出了建立内射同步性严格的语法标准格式。我们应用这种正式的定义手动证明 Needham-Schroeder-Lowe协议的安全属性。本章基于引文[67,70,69,67] ,本章的主要贡献是包括现有的安全属性的定义,以及定义了一种更加强的认证属性称为同步性,这种新的身份验证属性通过层次结构与现有的身份认证属性相互关联,对于同步性,结果证明了关于内射性属性。
第四章: 验证
基于安全协议模型,第四章介绍了一种算法用于验证安全属性和寻找攻击。但也具有能够对协议进行完整表征的功能,这个算法在原型工具 Scyther中已经实现,该工具的性能是安全协议形式化分析的最新技术。我们使用该工具可以进行大量的协议形式化的安全分析。本章的主要贡献是改进基于现有验证算法,此处算法背后的概念是在安全模型中重新定义的。这导致算法的改进,作为负面的影响,新算法共享语义特征,例如能够验证新的身份验证属性 。我们在新算法的输出和现有表征概念之间建立了联系,该算法确保更进一步的终止机制算法。我们表明在绝大数情况之下,并没有降低有效性,该算法涉及启发式(此处),我们研究了几种替代方案,并研究了各自的效率,通过引入附加参数保障新算法的终止。并且调查了特定参数选择的后果。
第五章 :多协议攻击
在第五章中使用原型工具自动分析多个协议的并行执行,在这种情况下,像嵌入式系统,智能卡协议或者手机应用程序,发现了性攻击和安全实践结果, 本章基于引文[62] ,本章主要的理论贡献是定义了多协议攻击,实际的贡献是分析了大量协议的多协议攻击,以及随后发现的几种新的多协议攻击,两种模式是标识捕获在同一网络上执行的协议可能存在的问题。
第六章: 推广 NSL进行多方认证
第六章进一步讨论模型和工具应用,Needham-Schroeder-Lowe协议被推广到一系列多方认证协议。证明了协议秘密性的正确新,并给出了Needham-Schroeder-Lowe协议的广义版本,开发的协议可以作为多方同步协议的有效基础。参看引文[66]
本章的主要贡献包括多方同步协议概念和协议中最小消息数之间的链接。开发了一系列的多方认证协议。并绘制了参数化证明,证明了Needham-Schroeder-Lowe协议的广义版本的正确性。
最后 我们在第七章讨论了相关的工作,结束论文,并在第八章中介绍以后的工作。
下面是论文的详细内容:
第二章 内容: 操作语义

我们将会讨论这些方面的每一个,列出他们的变化点并作出适当的设计决策。当然每一个细分都是人为的,但是我们发现这里有助于增加结构和限制问题空间。提到字模型并不是一个独立的额实体,列如,协议规范利用提供的加密原语,并且如果入侵者控制网络(某些部分),则通信模型连接到入侵者模型。
协议规范:

作为本章的一个运行示例,我们使用简版的Neeedham-Schroeder协议来自参考文献[145] 简称为 NS 协议,在本篇论文中我们使用消息序列图(MSC)来说明安全协议和攻击,MSC是ITU标准化的协议规范语言[105]. 图2.1 包括NS协议的MSC ,发起者 “i” 同时拥有私钥 sk(i) 和 响应者 的公钥 pk(r) ,对称的,响应者 r 拥有自己的私钥 sk(r) 和发起者的公钥 pk(i),我们使用秘钥 k 加密消息 m ,记作 {/m/}k 。发起者 i 首先创建一个随机变量 ni ,使用方框指明,然后 将她的名字 i 和 ni 一起发送,使用公钥 pk(r) 加密,对于响应者 r ,接受到之后,响应者生成一个新的随机变量 nr ,连着之前接受到的变量 ni ,使用公钥 pk(i) 进行加密 ,一起发送给 发起者 i 。发起者在反过来解密消息,解密出 nr 并使用公钥 pk(r) 加密发送给 响应者 r 。安全声明使用六边形表示,发起者和响应者都声称认证属性 ni-synch成立,将在第三章中详细的介绍安全声明事件。
协议规范定义了代理之间信息术语的交换,要注意的是,协议规范中出现的术语和稍后定义执行的模型不同,这里我们定义了角色术语,在协议规范中使用。
2.2.1 角色术语
我们首先解释一些术语的基本术语,像 常量、角色和变量。下面我们添加配对和元组结构为角色术语集 为角色描述中使用。
定义 2.1 (基本术语集) 我们定义用于构造角色的基本术语集合
- var ,定义一个变量用于接收和存储消息
- const , 表示为角色的每个实例化新生成的常量,因此被认为是局部常量,
- Role ,表示 角色
- Func ,表示函数名
在表 2.1 中 在下面将展示这些集合的一些典型元素,如本论文中全文使用。
定义 2.2 (角色术语) 我们定义一组角色术语作为角色术语集,使用构造函数进行扩展以进行配对和加密,我们假设配对是右相关的。
来自函数集的函数被认为是全局函数,并且必须尊重所有的额方面,注意没有术语 f 表示函数 f 的形式,当我们想要参考函数 f 的时候,(在定义域 X ),我们使用 f 作为 {f(x)| x ∈X} 的简写。
如果全局常量出现在协议中, 我们将他建模为 arity zero的函数(元数 0),使用术语加密术语,只能解密过相同的术语(用于对称加密)或者反向秘钥(用于非对称加密)进行解密。为了确定解密一个术语需要知道哪个术语,我们定义一个函数,该函数为任何角色术语产生逆。
我们要求 是他自己的逆, 比如
整片论文中,我们假设 pk 和 sk 函数元数为 1 ,映射到非对称秘钥。 比方说 ,特别是 我们使用 pk表示代理的公钥,使用 sk 表示代理的私钥。
例子 2.3(签名): 我们建立角色 R的私钥模型 sk (R) 和其逆,公钥 pk(R) ,使用公钥 pk对消息 m 加密建模 ,对消息进行签名不直接对应着用秘钥进行加密,相反,所谓的消息摘要加密,与之一起发送的消息,为了正确使用私钥 sk(R) 建模消息 m 签名。我们引进哈希函数 h ,签名 m 的结果术语是
。
其他的术语 rt 被认为是对称秘钥,我们有 ,除非另外说明。这样,虽然我们对两种加密都是用符号 { / / } , 应用加密类型可以从使用的秘钥派生,请注意,我们,明确允许组合秘钥。比如 在
,我们转向描述协议的行为,我们将协议描述成为角色集,而角色集又由角色事件组成。
定义 2。4 (角色事件):我们使用两个新的集定义角色事件集,标签 Label 和安全声明 Claims ,解释如下:
事件 表示由绑定到R的代理发送消息 rt ,用于绑定到代理 R',同样
表示由绑定到 R' 的代理接受消息 rt ,显示是由绑定到 R的代理发送的。事件
表示 代理 R执行此事件时期望安全目标 c 和可选参数一起保持。声明事件时基于本地的声明,这就意味着只是关注 角色 R ,其他的 角色并不期望。本章的详细安全声明的概念将在第三正讨论。
角色事件集设置在协议描述级别包含协议中执行的所有操作,我们区分协议事件通过发送、读取、声明。虽然也可以包括其他的协议事件,列如模拟角色内部的活动,但是这里我们不这么做。发送事件协议、读取时间协议、声明事件协议。已经满足于我们大多数目的需求。我们将局部常量(如:nonce)的生成保持为隐式的,并假设局部常量的生成发生在事假中的第一次出现之前。需要标记的事件的标签
来消除协议规范中相同事件的类似出现的歧义,这些标签的第二个用途是表达响应的发送事假和接受事件之间的关系,我们将在下一章中看到。对于这些属于条款,我们引入了一个允许我们识别术语部分的运算符。
定义 2.5 (子运算符): 子运算符 $\sqsubseteq $ 归纳总结如下:
子术语运算符$\sqsubseteq $ 识别术语的字句,其中包括用于加密的术语的秘钥,注意的是 f (rt) 形式的术语没有适当的子术语,因为被认为是非组合术语。除了接受和发送术语,角色规范描述执行角色所需要的初始知识,这个初始知识是一组术语组。
定义 2.6 (角色知识): 我们将角色知识集RoleKnow 定义为不包含变量作为子项的所有角色术语的集合:
$RoleKnow=P({rt\epsilon RoleTerm | \forall {rt}' :{rt}'\sqsubseteq rt\Rightarrow {rt}'\notin Var})$

以上角色的描述遵循第十二页 图12 ,选取左边的轴和其关联的事件,注意我们必须澄清术语中的哪些结构是变量(因为在接受消息时会收到值)和哪些是常数(因为是基于角色本身决定的)因此我们认为, i, R ∈ Role , ni ∈ Const ,sk pk ∈ Func . $pk(i)^{-1}=sk(i)$ , $pk(r)^{-1}=sk(r)$ . 1,2,3,4 ∈ Label , V ∈ Var
Scyther 协议形式化验证翻译 (第二章)的更多相关文章
- Gradle2.0用户指南翻译——第二章. 概述
翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc本文翻译所在分支:https://github.com/msdx/gradledoc/tree/2 ...
- ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章 ASM instance(1)
第二章 ASM INSTANCE ASM的类型,例如可以: 10g后ORACLE instance 类型增加了一个ASM种类.参数INSTANCE_TYPE=ASM进行设置. ASM实例启动命令: ...
- Scyther-Semantics and verification of Security Protocol 翻译 (第二章 2.2.2----2.3)
2.2.2 事件顺序 协议中的每个角色对应于事件列表,换句话说, 在属于角色 R 的协议事件集上施加结构,总的排序表示为 $ \prec $ , 如此任何角色 R∈Role 和 $\varepsil ...
- Learning Scrapy 中文版翻译 第二章
为了从网页中提取信息,你有必要对网页的结构做一些了解.我们将快速学习HMTL,HTML数状结构以及用XPath在网页上提取信息 HTML, DOM树结构以及XPath 让我们花一点时间来了解当用户在浏 ...
- ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章ASM Instance(4)完
ASM安全 这个小节主要描写叙述与ASM相关的各种安全配置话题,像 配置ASM须要的userids.groupids:ASM权限如 SYSOPER,SYSDBA和新的SYSASM权限,最后还有ASM ...
- brent ozar的sqlserver dba训练课程翻译——第二章:手动恢复数据库
备份的唯一原因 备份的唯一原因是我们可以还原 当我第一次成为sqlserver数据库管理员,只要备份工作都能成功运行,我就会觉得一切都很好.我会查看sqlserver代理,保证那些作业都在运行,然 ...
- 协议形式化分析Scyther 资料整理
1.性能分析 目前来说形式化的分析已经成为安全协议的一种很流行的方法,但是每种工具都用其不同适合的协议,Scyther软件是一种形式化分析工具,极大的促进了协议的分析和设计,scyther工具在运行界 ...
- 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
随机推荐
- docker 安装minio
1.拉取镜像 docker pull minio/minio 2.运行容器 docker run -d -p 9000:9000 --name=minio --restart=always -e &q ...
- Webpack4+实现原理
目录 webpack4核心基础 1.webpack开篇 2.webpack配置文件 3.webpack配置文件注意点 4.webpack-sourcemap 5.webpack-file-loader ...
- 离线生成双语字幕,一键生成中英双语字幕,基于AI大模型,ModelScope
制作双语字幕的方案网上有很多,林林总总,不一而足.制作双语字幕的原理也极其简单,无非就是人声背景音分离.语音转文字.文字翻译,最后就是字幕文件的合并,但美中不足之处这些环节中需要接口api的参与,比如 ...
- gym.spaces中找不到prng解决方案
gym.spaces中找不到prng解决方案 在运行飞桨MADDPG问题是遇到模型无法导入不存的的问题: ModuleNotFoundError: No module named 'multiagen ...
- C++11之函数对象
目录 1.使用场景 2.函数对象 3.std::bind 4.总结 1.使用场景 在没有C++11的时候,我们通常使用回调函数来完成某些特定的功能,使用回调函数就需要先声明函数指针 示例: typed ...
- 2022 JuiceFS 社区用户调研结果出炉
为了使 JuiceFS 的发展更贴合用户的真实需求,我们在三周前向社区发出了一份调研问卷.此次调研面向已经将 JuiceFS 应用于生产环境的用户,了解其在应用 JuiceFS 前和使用中的体验与评价 ...
- Azure - 机器学习:创建机器学习所需资源,配置工作区
本文中你可以创建使用 Azure 机器学习所需的资源,包含工作区和计算实例. 关注TechLead,分享AI全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复 ...
- SpringMVC关于@RequestBody加与不加的区别
SpringMVC关于@RequestBody加与不加的区别 前两天在做项目的时候遇到了这样一个问题,小组成员为了方便做接口测试,给Controller控制器上加了@RequestBody注解,但是前 ...
- Python树与树算法
Python树与树算法 树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>=1)个有限节点组成一个具 ...
- .NET周刊【2月第1期 2024-02-04】
祝大家新年快乐,龙年大吉~ 国内文章 C#/.NET/.NET Core优秀项目和框架2024年1月简报 https://www.cnblogs.com/Can-daydayup/p/18000401 ...