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