一、概念
安全协议(security protocol),又称密码协议。是以密码学为基础的消息交换协议,在网络中提供各种安全服务。(为解决网络中的现实问题、满足安全需求)
1.1 一些名词
那什么是协议呢?
协议:两个或两个以上的参与者采取一系列步骤以完成某向特定的任务。例如Internet中的IP、TCP协议。
HTTP协议:浏览器和服务器之间请求与响应。
IP协议:在网络中将数据从源地址传到目的地址。
协议的特点:
- 需要两个或以上参与者。
- 呈现为消息处理和消息交换交替进行的一系列步骤。
- 完成某项任务或达成共识。
当然协议还要其他的特点,在这里我概括成四个词:知情(每个人都了解、清楚所有步骤);履职(大家都同意并遵守);明确(必须清楚不误解);完整。
协议与算法:
算法就是解决特定问题的逻辑步骤或者规则。他们都要完成某种任务且高效,不一样的是,算法应用与协议中消息处理的环节,不同的消息处理方式要求不同的算法。协议是在这些算法的基础上提供满足安全性要求的方案。
可以这么理解,算法解决的是“做什么”、“怎么做”,协议完成的是“谁和谁做”、“交换信息”。
安全协议设计遵循的原则:
- 满足应用需求。(选举协议完成选举、拍卖协议完成拍卖)
- 满足安全需求。
- 简单高效。
1.2 协议运行环境中的角色
1、参与者
协议执行过程中的双方或者多方,我们通常称为发送方和接收方。参与者无关互相信任与否。
(双方通常称为Alice、Bob;三方还会加一个Carol。)
2、攻击者(敌手)
企图破坏安全性和正确性的人。
- 被动攻击者:只窃听、观察。称作Eve(半诚实模型)
- 主动攻击者:增删改消息。称作Mallory(恶意模型)
还有一种分类为内外部攻击者的分类。
3、可信第三方(TTP)
值得信任的第三方,在协议中无既得利益,对参与者无利害关系。说的都真、做的都对。其中仲裁者是一种特殊的TTP,用于解决纠纷,称作Trent。
画了一个简图:三方参与,被动攻击获取消息、主动攻击修改消息。TTP中的仲裁者解决纠纷。
二、常用的安全协议
1、密钥建立协议:在实体间建立共享的会话密钥(为会话加密)。借助可信服务器的:密钥分发协议。通过两个用户协商:密钥协商协议。
2、认证协议:对数据、实体标识的保证。数据起源认证确保数据完整真实;实体认证确保各方是合法的、授权的实体。主要防止假冒攻击。将认证和密钥建立协议结合在一起,是最普遍应用的安全协议。
3、电子商务协议:利用电子信息技术进行商务活动。交易双方利益不一致,最关注公平性。(选举、拍卖)
4、安全多方计算协议:保证分布式环境中各参与方以安全的方式来共同执行分布式的计算任务。基本要求是协议的正确性(每个人都应该得到正确的输出)和各参与方私有输入的私密性(每个人不能获知其他信息)。包括:电子现金协议、合同签署协议、匿名签署协议。
是否拥有可信第三方:
仲裁协议 | 有可信第三方 | 负责监督管理,保证参与方行为符合规定。分为非仲裁子协议(监督辅助)和仲裁子协议(处理冲突)。 |
自执行协议 | 没有可信第三方 | 协议一方能够检测到另一方是否进行了欺骗。 |
三、安全协议的安全性质
评估一个安全协议是否安全就是检查其所要达到的安全性质是否受到攻击者的破坏。主要有机密性、完整性、认证性、非否认性和公平性。
机密性 | 确保信息不暴露给未授权的实体或进程。非授权读是其破坏(加密) |
完整性 | 不增删改。非授权写是其破坏(封装和签名) |
认证性 | 对抗假冒攻击,用来确保身份,以便核查责任。 |
非否认性 | 收发双方均不可否认已经发生的事实。 |
公平性 | 保证各方在协议执行的任何阶段都处于平等的地位。要么各取所需,要么什么都得不到。 |
四、对安全协议的攻击
1、攻击者应具备的能力
- 可以窃听所有经过网络的消息
- 可以阻止截获所有经过网络的消息
- 可以存储所获得和自身创造的消息
- 可以根据存储的消息伪造消息并发送
- 可以作为合法的主体参与协议运行。
攻击者对网络有完全的控制权。
2、窃听
- 被动攻击(不影响合法用户通信)、破坏机密性
- 加密可以解决窃听攻击
(除此之外其他攻击都为主动攻击)
3、篡改
- 删除、修改、伪造、乱序、重放、插入。
- 主动攻击,破坏完整性
4、重放(先截获后重放)
将之前所截获的消息并在之后的协议中发送
重放的一些特例:
预重放:先预测后发送。(C窃听AB谈话,计算不出之间的会话密钥,只得到一部分有用信息。之后C利用之前获得的信息,与AB会话,诱导AB透露密钥或其他私密信息,从而计算出之前的会话密钥。
反射:攻击者将消息发回给消息的发送者。(假设AB已经共享一个密钥K,分别选择随机数和。协议的两个实体通过表明知道K来达到相互认证的目的。过程如下:
- A→B:{NA}k
- B→A:{NB}k,NA(此时A收到信息推断出消息来源于B,因为只有B知道K)
- A→B:NA
但是如果A参与并行协议运行,消息由2产生。攻击者C可以完成两次协议的执行,过程如下:
|
|
C在收到第一条消息之后,立即发起另一个与A的协议,接着就把A收到的消息反射给A。反射可以使C能够答应第一条消息,之后则可以成功的完成两个协议运行。实际上所有的加密处理由A进行,但A却相信是和C完成了两次协议运行。这种攻击常被称为“信使攻击”。
5、拒绝服务
攻击者阻止合法用户完成协议。(口令认证中,客户更新口令时攻击者发起,攻击造成口令不一致。)
6、类型攻击
攻击者将某一类消息域替换成其他的。(对于二进制,用户不知道收到的是否经过加密,利用这个将消息错误的解释成其他的)
Otway Ress协议:假冒B(1、4很像)
|
1. A→CB:M,A,B, {NA,M,A,B}Kas 4. CB→A:M, {NA,M,A,B}Kas |
抵抗方法:每次改变消息元素的顺序,确保每次密钥不同;在消息中添加认证数或消息域的类型信息。
7、密码分析
一般协议分析时不考虑算法本身的问题,但实际中需要注意一些像弱密钥的可能性之类的问题。
8、证书操纵
攻击者选择或更改证书信息来攻击协议运行。
A: g^a,x,Cert (A)
B: g^b,y,Cert (B)
- A→B:g^x,Cert(A)
- B→A:g^y,Cert(B)
- 双方计算共享密钥 K_AB = g^{ay+bx}
攻击者C选择一个随机数c,声明g^{ac}是他的公钥:
1. A→C_B:g^x,Cert(A)
1'. C→B:g^x,Cert(C)
2'. B→C:g^y,Cert(B)
2. C_B→A:g^{yc}→C,Cert(B)
9、协议交互
- 攻击者选择新的协议和已知协议交互产生新的漏洞
- 可能出现密钥用于多个协议
五、安全协议设计的困难性
- 安全目标本身的微妙性
- 协议运行环境的复杂性
- 攻击者模型的复杂性
- 安全协议本身有“高并发性”的特点
六、安全协议三大理论分析方法
安全多方计算 | 多个参与方在保护各自输入隐私的前提下,共同完成一个计算任务。计算结果可信且相同。即使有人恶意,也能保证在计算模型下保证结果可信。 |
形式化分析方法 | 使用数学和逻辑工具进行建模和分析,通过数学化表达来推理验证。 |
可证明安全性理论 | 计算计算复杂性理论的分析方法,通常依赖于一些公认的数学假设(数学难题)。 |
参考《安全协议》