该文本将是无线电工程和控制系统部信息保护手册以及此培训代码中MIPT(GU)信息保护手册的重写章节之一。 完整的教程可在github上找到 (另请参阅草稿发行版 )。 我计划在中心上载新的“重要”文章,首先,收集有用的评论和意见,其次,为社区提供有关有用和有趣主题的更多概述材料。基本概念
为了成功实现任何信息保护目标,有必要参与保护多个实体的过程,这些实体将根据某些规则执行技术或组织操作,加密操作,相互交互,例如传输消息或验证彼此的身份。
此类操作的形式化是通过协议描述完成的。
协议 -一种分布式算法的描述,在此过程中,两个或多个参与者顺序执行某些操作并交换消息(此后,在此部分中,基于
[Cheremushkin:2009]给出定义)。
协议的参与者(受试者,当事人)不仅可以理解人员,还可以理解应用程序,人群或整个组织。 正式地,仅将参与者视为在协议中发挥积极作用的参与者。 尽管在创建和描述协议时,您也不应该忘记被动方面。 例如,被动密码分析器不是形式上正式的参与者,但是在开发许多协议时都考虑到了针对此类“非参与者”的保护。
该协议包括
循环 (英语
回合 )或
通过 (英语
通过 )。 周期是仅一个参与者的活动时间间隔。 除了第一个协议周期外,它通常从接收消息开始,到发送结束。
周期(或段落)由
步骤 (动作,英语
步骤,动作 )组成-协议参与者执行的特定已完成动作。 例如:
- 产生新的(随机)值;
- 函数值的计算;
- 验证证书,密钥,签名等;
- 接收和发送消息。
针对特定参与者的协议的过去或什至只是理论上描述的实现称为
会话 。 会话中的每个参与者都
扮演一个或多个
角色 。 在另一个协议会话中,参与者可以切换角色并执行完全不同的功能。
我们可以说该协议描述性地描述了协议中每个角色的行为规则。 会话是过去发生的协议实现的描述性描述(可能是理论上的)。
协议描述的示例。
- 具有发送者角色的参与者必须向具有接收者角色的参与者发送消息。
- 具有收件人角色的参与者必须从具有发送者角色的参与者接收消息。
协议会话描述的示例。
- 4月1日13:00,爱丽丝向鲍勃发送了一封邮件。
- 4月1日13:05,鲍勃收到了爱丽丝的来信。
受保护的协议或
安全协议将被称为提供至少一种保护功能的协议
[ISO:7498-2:1989] :
- 各方和数据源的身份验证,
- 访问控制
- 机密性
- 正直
- 无法拒绝发送或接收的事实。
如果将安全协议设计为执行密码系统的安全功能,或者在执行过程中使用了密码算法,则该协议将称为
密码协议。
协议记录
要记录与实施信息保护功能相关的协议,请不要使用“参与者具有“发件人”的作用”之类的表达,而应使用诸如“发送者”之类的简短符号来代替它们,或使用公认的
示例词 :Alice,Bob,Clara,Eva等。 e。使用以下协议。
- Alice,Bob(来自英语A,B )-发送者和接收者。
- 卡尔,克拉拉,查理(来自英语C )-平等的第三方。
- Eve(来自英语窃听者 )是一个被动的密码分析员。
- Mellory(来自英语malus)是一个活跃的密码分析员。
- 特伦特(来自英语信托 )是可信任的一方。
没有普遍接受的协议记录格式;它们在外观和描述完整性上都可以不同。 例如,这是最全面的Diffie-Hellman协议记录格式。
- 初步阶段。
- 通过1。
- 爱丽丝随机产生 一 。
- 爱丽丝计算 A = g a b m o d p 。
- 爱丽丝送鲍勃 。
- 通过2。
- 鲍勃从爱丽丝那里带走 。
- 鲍勃随机产生 b 。
- 鲍勃正在计算 B = g b b m o d p 。
- 鲍勃送爱丽丝 乙 。
- 鲍勃正在计算 s = A b b m o d p 。
- 通过2。
- 爱丽丝脱下鲍勃 乙 。
- 爱丽丝计算 s = B a b m o d p 。
- 协议的结果。
现在与相同协议的简短记录进行比较。
- A \到B : A = g a b m o d p
- B \到A : B = g b b m o d p
在简要记录,初始化和前提条件中,未传输数据的计算(在此示例中,省略了公共会话密钥)
s )以及所有检查。
在本教程中,我们将坚持使用中间记录格式。
- 爱丽丝产生 一 。
爱丽丝\到\左\ {A = g ^ a \ bmod p \右\} \到Bob爱丽丝\到\左\ {A = g ^ a \ bmod p \右\} \到Bob 。 - 鲍勃产生 b 。
鲍勃正在计算 s = A b b m o d p 。
鲍勃\到\左\ {B = g ^ b \ mod p \右\} \到爱丽丝鲍勃\到\左\ {B = g ^ b \ mod p \右\} \到爱丽丝 。 - 爱丽丝计算 s=Ba bmodp 。
我们还同意在活动密码分析员(Mellory)冒充合法用户时记录案件的规则。
beginarrayllllc(1)&A&\到M left(B right)&:&A=ga bmodp,(2)&M left(A right)&\到B&:&A∗=ga∗ bmodp,(3)&B&\到M left(A right)&:&B=gb bmodp,(4)&M\左(B\右)&\到A&:&B∗=gb∗ bmodp。\结束array
或通过为每个参与者分配单独的列。
\开始arraylllclllc(1)&A&\到&M\左(B right)&&&:&A=ga bmodp,(2)&&&M\左(A\右)&\到&B&:&A∗=ga∗ bmodp,(3)&&&M\左(A\右)&\获取&B&:&B=gb bmodp,(4)&A&\得到&M\左(B\右)&&&:&B∗=gb∗ bmodp。\结束array
为了减少描述并简化不同协议的比较,请使用以下约定来指定传输数据。
- , B , C 等 -协议参与者的标识符:分别为Alice,Bob和Clara。
- M (来自英文消息 )-原始格式的消息,即纯文本,与编码无关。 也就是说,在 M 源文本可以理解为文本或(例如)声音,或者已经是一定数量或唯一与该消息相对应的位数组。
- K (来自英文键 )-一些键。 在没有进一步阐述的情况下,它通常表示秘密会话密钥。
- KA -Alice和Trent之间的共享密钥(用于对称密码系统)。
- KA -爱丽丝的公钥(用于非对称密码系统)。
- EK\左(\点\右) (来自英语加密 )-在密钥上加密的数据 K 。
- EA\左(\点\右) , EB\左(\点\右) -分别在Alice和Bob的密钥上加密的数据。
- L (从英语的生存期开始 )-例如证书的生存期。
- SK\左(\点\右) (来自英文符号 )-公钥上的数据和相应的数字签名 K 。
- TA , TB (来自英语时间戳 )-各个参与者的时间戳。
- RA , RB (来自英语random )-各个参与者选择的随机数。
使用符号的例子。
- EKB(M) 或者只是 EB(M) -讯息 M 用鲍勃的密钥加密 KB 。
- SA(RA) -随机数 RA 由爱丽丝产生并由她签名。 也就是说,该消息将包含一个随机数(以纯文本形式)和该数字的电子签名。
- ST(A,KA,TT,L) -爱丽丝的标识符和密钥,该记录的时间戳和有效期,由受信任中心(Trent)的公钥共同签名。 实际上,这就是爱丽丝的钥匙证书 。
协议安全性
安全系统以及相应的安全协议可以执行各种安全功能。 其中许多功能或目标(英语
目标 )可以表述为对特定类型攻击的抵抗力。 最完整,最相关的是AVISPA项目(
互联网安全协议和应用程序的英语
自动验证 )
[AVISPA]文档中对这些目标的列表和解释,总结了各种IETF文档(
Internet工程任务组 )中的描述。 这些目标被认为是
形式化的 -也就是说,对于单个协议,有机会正式证明或反驳这些目标的实现。
- 身份验证(单向)。
英文 认证(单播) 。
- (G1)主题身份验证。
英文 实体认证(对等实体认证) 。
通过提交参与协议的第二方的证据和/或证书以及第二方实际参与协议的当前会话来保证协议的一侧。 通常是通过呈现只能由另一方生成的此类数据来完成的。 主题的身份验证意味着可以将接收到的数据明确地追溯到协议的主题,这意味着数据源的身份验证。 - (G2)消息身份验证。
英文 消息认证(数据来源认证) 。
确保接收到的消息或数据是某个主题在过去某个时间(通常是未指定的时间)创建的,并且不会损坏或篡改此数据。 但没有提供唯一性或及时性。 消息的身份验证意味着它们的完整性。 - (G3)重复保护。
英文 重播保护
当某方会记录一些消息并稍后播放消息(可能在另一个协议会话中)时,可以防止这种情况的发生,这将导致对该端的身份验证不正确。
- 发送到许多地址或连接到订阅/通知服务时进行身份验证。
英文 组播验证或通过订阅/通知服务 。
- (G4)收件人的显式身份验证。
英文 隐式目的认证 。
协议必须确保发送的消息仅对合法的收件人可读。 即,只有合法授权的参与者才能访问相关信息,多播消息或组通信会话。 包括具有非常动态成员资格的通讯组。 - (G5)源身份验证。
英文 源认证 。
合法接收者将能够验证信息或团体通信的来源和内容。 包括组内成员互不信任的情况。
- (G6)授权(由第三方信任)。
英文 授权(由受信任的第三方) 。
保证(根据协议)授权一个主体使用第三方受信任方访问另一资源的能力。 这意味着资源的所有者可能没有自己的访问列表(例如, 访问控制列表,ACL ),而是依赖于受信任方的访问列表 。 - 联合密钥生成。
英文 关键协议属性 。
- (G7)密钥验证。
英文 密钥认证 。
对实体之一的保证,只有合法用户才能访问特定的密钥。 - (G8)密钥的所有权证明。
英文 密钥确认(拥有的密钥证明) 。
对一个实体的保证,即另一个实体实际上拥有特定的秘密密钥(或获取该密钥所必需的信息)。 - (G9)完善的直接保密性。
英文 完善前向保密(PFS) 。
确保将来对主密钥的危害不会损害过去协议会话的会话密钥。 - (G10)生成新密钥。
英文 新密钥推导 。
保证为每个协议会话创建新的会话密钥。 - (G11)一个安全的机会,可以就安全设置达成一致。
英文 安全能力协商(抵抗降级和协商攻击的能力) 。
保证不仅是合法方有机会就安全参数达成一致,而且还保证了非法方面没有干预协议,也没有导致选择其首选的(可能是最弱的)安全参数。
- (G12)机密性。
英文 机密性(保密) 。
确保特定数据元素(正在传输的消息的一部分)对于攻击者仍然未知。 为此,不考虑会话密钥的安全性,密钥的身份验证或长期主密钥的可靠性。 - 匿名性。
英文 匿名性 。
- (G13)保护标识符免受监听(非连接性)。
英文 防止窃听者的身份保护 。
保证攻击者(窃听者)无法将主体的消息与他的真实身份联系起来。 - (G14)保护标识符免受其他方的攻击。
英文 同伴身份保护 。
确保通信参与者不能将主题的消息与真实的人联系起来,而只能将其与某个假名联系起来。
- (G15)对拒绝服务攻击的保护有限。
英文 (有限)拒绝服务(DoS)抵抗 。
确保该协议遵循某些原则,这些原则可以减少某些类别的拒绝服务攻击的可能性(使之复杂化)。 - (G16)发送者的不变性。
英文 发件人不变性 。
尽管对接收者而言,消息源的实际标识并不重要,但可以保证其中一方可以保证消息的源与开始通信的源相同。 - 不可辩驳。
英文 不可否认 。
- (G17)问责制。
英文 问责制 。
保证跟踪对象对对象行为的能力。 - (G18)原产地证明。
英文 原产地证明 。
保证消息来源的无可辩驳的证据。 - (G19)交货证明。
英文 交货证明 。
保证收到消息的事实的确凿证据。
- (G20)受保护的临时财产。
英文 安全时间属性 。
证明该系统处于一种状态这一事实的能力的保证,意味着该系统过去至少一次处于某个其他状态。 例如,获得对象对资源的访问权限意味着该对象过去一次成功为该访问权付费。
表中列出了各种协议实现的安全属性的示例。

协议分类
没有普遍接受的安全协议分类。 但是,可以区分一组对协议进行分类的
客观且明确的特征。
- 按协议参与者人数分类:
- 按发送的消息数分类:
- 交互式的(存在相互消息传递);
- 非交互式(具有一次性消息传递),通常称为“ 方案” 。 定义并不完全完整。 任何方案都涉及至少两个阶段。 在第一个初步阶段,受信中心在对等参与者之间分发一些信息。 在第二阶段(特定的协议会话),参与者交换此信息,接收原始秘密或新的秘密会话密钥。 此外,信息交流可以在两个以上的参与者之间进行。 但是,在相互交换信息之后,不需要额外的通行证即可实现该计划的目标。
- 按通过次数(回合)分类:
- 通过使用的密码系统分类:
- 按受保护协议属性分类:
- (G1)提供或不提供协议第一,第二方面的认证等;
- (G2)是否提供消息身份验证;
- (G3)提供或不提供重复保护;
- 等
- 按参加者类型分类:
- 对等,即所有参与者都可以在协议中扮演任何角色;
- 当协议中始终涉及第三方受信任方时,与受信任的中介机构联系;
- 如果其他参与者未达成协议,则在与受信任的仲裁者进行协商时,当第三方受信任方可以参与协议时。
还可以基于协议的主观评估来引入客观性较低和明确的分类。
- 根据协议目的分类:
- ...确保诚信
- ...经过数字签名
- ...识别
- ...隐私
- ...密钥分配,
- ...等
- 所执行功能的“完整性”分类:
- 原语,被用作构建应用协议的基本组成部分;
- 中级
- 应用,旨在解决实际问题。
按目的分类也可以按为其开发的协议的受保护属性重新表示为分类。 在这种情况下,有必要突出显示“基本属性”(例如,G10-新密钥的形成),其余大部分归因于其他属性(例如,G7-密钥认证和G8-密钥所有权确认)。 根据协议的目的,确定哪些属性是“基本的”和哪些属性是“附加的”会在分类中造成歧义。 如果协议的所有属性都称为“基本”,那么这样的分类将变得过于详细。
由于不能将单个协议称为完全“应用”的事实,因此对执行功能的“完整性”进行分类是有问题的。 任何协议本身仅是特定信息(或组织)系统的一部分,该系统仅执行用户所需的功能。 但是,我们可以说单个协议(例如TLS)是比协议(例如Diffie-Hellman)更高级别的协议,因为后者经常充当同一TLS协议的组成部分。
协议攻击
协议的受保护属性可以在协议的创建者自己声明它们时声明(并且通常会提供各种参数来支持执行这些功能),并且在系统的创建者依靠某个协议来实现保护的属性时就可以隐含。对安全协议的攻击是一种尝试分析协议消息和/或执行该协议未预料到的违反协议声明或隐含属性的操作。 (使用了[Cheremushkin:2009]的修改定义。不同之处在于Cheryomushkin在其定义中并未描述“协议故障”是什么,并且留下了模棱两可的违规案例,例如G9 / PFS和G20 / STP属性。)如果违反了协议的声明或隐含属性中的至少一个,则表示攻击成功。如果成功对隐含属性进行了攻击,我们将阐明对某些系统中使用协议的攻击是成功的。当然,这不是协议本身的缺陷,而是系统作者对协议(或其设置)的错误选择。协议攻击有多种类型。许多攻击都有一些通用原则,这使区分攻击类别成为可能,从而简化了对整个攻击类别具有抵抗力的协议的分析和开发。- MitM « »
. man-in-the-middle attack
, , , , , , , . , ( G1). —. - Replay
. replay attack
, , , , . , , - . - TF
. type flaw attack
, , () ( ). , , Wide-Mouth Frog, —, Yahalom —. - PS
. parallel-session attack
, . , , —. - STS
. short-term secret attack - KN
. known-key attack
, , (, ), , , . - UKS
. unknown key-share attack
, ( , , ), . , , -.
重要的是要注意,除非另有说明,否则在加密协议(非特定系统)的分析框架中,将假定所有使用的加密原语的强度。例如,假设使用特定密码协议的会话中生成的会话密钥进行安全的信息交换时,攻击者将没有足够的资源和时间通过对使用的密码或具有抗密码性的哈希函数的攻击来获取此会话密钥。另一方面,应该假定攻击者将在一段时间(不过,比通信会话本身更长的时间)之后在协议会话的框架内获得的会话密钥(攻击类STS和KN)将获得。而且,经过更长的时间,攻击者将可以访问“主”密钥-长期使用密钥,因此应开发带有会话密钥的协议,包括G9 / PFS属性。(以下各节描述了特定的协议。)参考文献
后记
作者将对文本的事实和其他评论表示感谢。
演示文稿和文字很大程度上是根据Cheryomushkin的出色演讲准备的(上面的链接)。