1 安全协议概述

协议概念

  • 规定了一系列有序执行的步骤,必须依次执行

  • 有两个或两个以上的参与者

  • 有明确的目的,即需要完成什么目标,防范什么风险等

安全协议

定义:

  • 建立在密码算法基础上的一种高互通协议,它运行在计算机通信网或分布式系统中,为安全需求的各方提供一系列步骤,借助于密码算法来达到密钥分发、身份认证以及安全地实现网络通信或电子交易等目的

  • 密码算法是安全协议的基础和核心,安全协议是密码算法应用纽带和桥梁

  • 安全协议包括密码协议

分类:

  • 从协议实现的目的来看:

    • 密钥交换协议:用于完成会话密钥的建立,如DH
    • 认证协议:防止假冒、篡改、否认等攻击,实现身份认证、消息完整性认证、数据源和目标认证
      • 实体认证(身份认证)协议、数字签名协议
    • 认证密钥交换协议:结合认证协议和密钥交换协议,先对通信实体的身份进行认证,在认证成功的基础上,为下一步安全通信分发所使用的密钥
    • 安全电子支付和安全电子交易协议
    • 安全通信协议
    • 安全多方计算协议
  • 从安全协议与具体应用的关联性来看:

    • 基础安全协议:与应用无关,秘密共享协议、数字签名协议、身份识别协议、密钥交换协议、健忘传输协议和公平交换协议
    • 应用安全协议:与具体应用有关,X.509协议、

特点:

  • 一般协议设计:分析协议执行的正确性和协议执行的效率

  • 安全协议设计:还需要考虑安全需求和鲁棒性

  • 恶意参与者的存在是安全协议和一般通信协议的重要区别

安全模型:

  • 定义:主要包括协议参与者的类型、参与者之间的网络连接情况和协议攻击者的能力

协议参与者的角色类型:

  • 协议参与者:按协议要求参与协议执行,向协议提供输入,从协议中获得输出

  • 协议攻击者:一些“参与者”通过窃听或篡改报文的等方法“主动”参与到协议的执行过程

  • 可信第三方:协议参与者都信任的一个主体或一个组织

  • 仲裁者:使协议执行过程中发生的争端以公平合理的方式得到处理

参与者之间的网络连接情况:

  • 同步网络:协议参与者都有一个公共的全局的时钟

  • 非同步网络:不存在全局时钟,接收信息顺序不一定与发送顺序一致

  • 广播信道等

协议参与者诚实程度:

  • 诚实参与者:按协议要求参与协议执行,向协议提供输入,从协议中获得输出

  • 半诚实参与者:按协议要求执行,只是窃听或听取其他参与者在协议进行中的所有输入(被动攻击者/窃听者)

  • 恶意参与者:攻击者不仅窃听或获取诚实参与者在协议进行中的所有输入,还要控制参与者按自己设计的方式参与协议

    • 以破坏协议的正确执行或获取其他参与者的隐私输入为目的
    • 主动攻击者/byzantine攻击者

协议攻击者的能力:

  • 计算能力:

    • 无限计算能力,信息论安全
    • 只有概率多项式时间计算能力,PPT,密码学安全
  • 对通信网络的控制能力:

    • 安全信道:攻击者对于通信信道没有任何控制能力。诚实协议参与者之间的通信既不会被攻击者窃听,也不会被攻击者篡改
    • 认证信道(非安全信道):攻击者可窃听任意协议参与者之间的通信,但是不能篡改通信的内容
    • 未认证的信道:攻击者对于通信网络有完全控制权,不仅可窃听所有协议参与者之间的通信,还 可任意篡改通信的内容
  • 是否主动攻击

  • Dplev-Yao模型提供原则:永远不要低估攻击者的知识与能力

NSSK协议:在通信双方之间分配会话密钥

  1. AS:A,B,NaA\rightarrow S:A,B,N_a
  2. SA:{Na,B,Kab,{Kab,A}bs}KasS\rightarrow A:\set{N_a,B,K_{ab},\set{K_{ab},A}_{bs}}_{K_{as}}
  3. AB:{Kab,A}KbsA\rightarrow B:\set{K_{ab},A}_{K_{bs}}
  4. BA:{Nb}KabB\rightarrow A:\set{N_b}_{K_{ab}}
  5. AB:{Nb1}KabA\rightarrow B:\set{N_b-1}_{K_{ab}}
  • 1-3:主体A在认证服务器S的帮助下,进行会话密钥的分配

  • 4-5:使B相信A现在在线,但不能使B相信会话密钥是新鲜的

安全属性

目标:保证某些安全属性在协议执行完毕时能够得以体现

认证性:对抗假冒攻击

  • 确保身份,获取信任

  • 单向/双向认证

机密性:对抗被动攻击

  • 保护协议消息不被泄露给非授权拥有此消息的人

  • 最直接方法:加密

完整性:对抗主动攻击

  • 保护协议不被非法改变,删除和替代

  • 常用方法:封装、签名、

  • 加密消息的冗余

不可否认性:对抗主动攻击

  • 通过通信主体提供对方参与协议交换的证据以保证其合法利益不受侵害
  • 主体收集证据,以便事后能够向可信仲裁证明对方主体的确发送或接收了消息
  • 常用的方法是签名

公平性:

  • 保证协议的参与者不能单方面终止协议或获得有别于其他参与者的额外优势

匿名性:

  • 保证消息的发送者的身份不被泄露,即消息与消息发送者的身份不再绑定在一起

设计过程

  • 需求分析:

    • 明确协议模型、协议目的、协议安全需求

  • 需求定义:

    • 自然语言、形式化语言描述需求

  • 协议具体步骤设计

    • 如何通信、具体通信消息格式
  • 协议正确性分析

    • 协议执行完毕是否达成了协议目标

  • 协议安全性分析

    • 协议执行过程是否满足相应的安全需求

设计准则

消息独立完整性准则

消息前提准确原则

主体身份标识原则

加密目的明确性原则

签名含义清晰性原则

临时值使用原则

随机数使用原则

时间戳使用原则

密钥使用原则

安全性分析

目的:证明安全协议的执行过程满足安全需求定义

基本方法:

  • 可证明安全性理论与方法

  • 形式化分析理论与方法

  • 混合理论与方法

  • 零知识证明理论与方法

  • 安全多方计算理论与方法

认证协议

基本概念:

  • 认证协议是网络安全的一个重要组成部分,需要通过认证协议进行实体之间的认证、 在实体之间安全地分配密钥或其他各种秘密、确认发送和接受的消息的非否认性等。

认证:

  • 通信过程:一个实体(验证者)B验证了另一个实体(声称者、原告)A声称的某种属性

  • 验证消息某种声称属性:数据源认证/消息认证

  • 验证原告所声称的身份:实体认证

  • 攻击成功:攻击者E能够在不攻破密码算法的前提下,以未经授权且不被察觉的方式获得了某种信任或是破坏了某种密码服务。

    • 原因:认证协议存在设计上的缺陷,而不是密码算法的问题

临时值:保证消息的新鲜性,防止消息重放,具有唯一性

分类:

  • 基于对称密码的实体认证

  • 基于哈希函数的实体认证

  • 基于公钥密码的实体认证

  • 基于可信第三方的实体认证

NSPK协议:

  • 目的:通信双方安全地交换两个彼此独立的秘密

对认证协议的攻击

  • 消息重放攻击

  • 中间人攻击

  • 平行会话攻击

  • 反射攻击

  • 交错攻击

消息重放攻击及对策

定义:攻击者利用其消息再生能力生成诚实用户所期望的消息格式并重放,从而达到破坏协议安全性质的目的。

分类:

  • 消息来源:

    • 轮内攻击:对一个协议轮内的消息进行重放
    • 轮外攻击:对一个协议的不同轮次的消息进行重放
      • 不同轮次的执行时间是否重叠:交叉攻击(重叠)、典型重放攻击(无重叠)
  • 消息去向:

    • 偏转攻击:改变了消息的去向,使消息为非意定的主体接收(反射攻击、第三方攻击)
    • 直接攻击:消息的确发给了意定的接收方,但被延迟了

对策:保持消息新鲜性

  • 序列号机制

  • 时戳机制

  • 挑战-应答机制

密钥交换协议

基本概念

会话密钥:

  • 一般使用公钥密码或其他方法来确立一个适用于对称密码的共享密钥

  • 作用:消除会话密钥与已存在的(长期)共享密钥之间的相互影响

定义:建立这种仅用于一次会话的会话密钥机制

  • 通信双方(或多方)在一个公开的信道上通过相互传递某些信息来共同建立一个共享的秘密密钥。

两方DH密钥协商

中间人攻击:

  • 原因:不认证双方

端到端协议

  • 使用协议参与方的数字签名保证消息来源的真实性

  • 三段协议

MTI协议

  • 无需计算任何签名(隐式密钥认证)

  • 两段协议

ECMQV密钥交换

基于身份的密钥协商

  • 用户的公开身份信息:公钥

  • 绝大多数:基于双线性对技术

基于口令的协议

口令猜测攻击

  • 离线攻击:查询历史通信

  • 在线攻击:尝试口令——限制登录失败次数

直接口令

  • 除非在安全信道,否则不安全

使用单向函数

加盐单向函数

  • 提供随机性

无法抵抗链路层攻击者

  • 原因:传输内容固定

使用哈希链

  • 一次性口令

BAN逻辑

形式化分析技术

  • 逻辑方法:BAN

  • 形式化分析方法

  • 模型检测方法

  • 定理证明方法

基本概念

BAN逻辑只在抽象层次上讨论认证协议的安全性,而不考虑其具体实现的安全缺陷和因加密体制而引发的协议缺陷。

BAN缺陷

基本假设:主题假设存在问题

理想化过程存在问题

缺乏完备性

缺乏定义良好的、确切的语义

电子商务协议

SSL协议

  • 基于传输层的通用安全协议。

SET协议

  • 主要位于应用层,对网络其他各层也有涉及。

可证明安全的协议证明

比特承诺协议

基本思想:A发送给B一个证明,用来向B做出承诺;承诺的内容是一个比特(0或1)

  • 承诺者Alice向接收者Bob承诺一个消息,承诺过程要求,Alice向Bob承诺时,Bob不可能获得关于被承诺消息的任何信息;

  • 经过一段时间后,Alice能够向Bob证实她所承诺的消息,但是Alice无法欺骗Bob。

  • A为承诺者;B为验证者

定义:

  • 比特承诺方案是由两方参与、分为两个阶段执行的协议,满足隐藏性和绑定性

阶段:

  • 承诺阶段:发送方A选择一个要承诺的比特b(0或1), 并把能表示该比特的消息c送给B。

  • 打开阶段:A把打开承诺的消息d和b发送给B。B用d打开c并验证b是否是A承诺的比特

安全比特承诺方案的安全性质

  • 隐藏性:第1阶段结束时,B得不到A承诺的比特b的值。即使一个不诚实的接收方也要满足 这个条件。一个承诺方案是完善隐蔽的,若B不能从c中获取关于比特b的任何有用信息

  • 绑定性:给定第1阶段的交互信息,B只能接受一个合法的承诺。即A不能在打开承诺阶段改变自己承诺的比特。

  • 如果一个比特承诺协议的绑定性(或隐藏性)的成立依赖于某个计算困难性假设,则是计算上绑定的(或计算隐藏的);如果不依赖于任何计算困难性假设,则是信息论绑定的(或信息论隐藏的)。

与公钥签名的对比

  • 相似:绑定性,c可验证b

  • 不同:

    • 比特承诺不可公开验证,需要承诺者额外给出信息

    • 对验证者不公平

常见比特承诺协议

使用对称加密函数

  • BA:RB\rightarrow A:R

  • AB:Ek(R,b)A\rightarrow B:E_k(R,b)

  • AB:KA\rightarrow B:K

  • B解密验证b和R

使用单项散列函数

  • A:R1,R2A:R_1,R_2

  • AB:H(R1,R2,b),R1A\rightarrow B:H(R_1,R_2,b),R_1

  • AB:(R1,R2,b)A\rightarrow B:(R_1,R_2,b)

  • B验证H,并将其及R1R_1和之前比较

使用伪随机数发生器

  • AB:c=G(s)+bRA\rightarrow B:c=G(s)+bR

  • AB:s,bA\rightarrow B:s,b

  • B验证c

Pederson承诺协议

  • AB:c=gryb mod pA\rightarrow B:c=g^ry^b~mod~p

  • AB:b,rA\rightarrow B:b,r

  • B验证c

秘密共享

基本思想:把密钥分发给多个人共同持有

门限方案:假设秘密𝐾 被分割成 𝑛 个子信息,每一个子信息称为份额(Share)(或者称为子密钥),由一个参与者持有,使得

  • 由 t 个或者大于t个参与者所持有的份额可重构K;

  • 由少于t个参与者所持有的份额无法重构K 。 称这种方案为(t,n)−秘密分享门限方案,其中 t称为方案的门限值。

秘密分享阶段:

  • 份额分发:秘密𝐾 被分割成若干份额,然后分发给各个用户

  • 秘密重构:希望重构秘密的用户数量达到门限值以上时,便能够 重建秘密𝐾 。

强健性

  • 暴露一个份额或多至m-1个份额不会危及密钥, 且少于m-1个用户不可能共谋得到密钥,同时若一个份 额被丢失或损坏,还可恢复密钥。

缺点:

  • 秘密分发阶段:若分发中心不诚实,它可以使分发的碎片不是要分享的秘密的组成 部分,从而使碎片的持有者即使全都汇集在一起也无法恢复秘密。

  • 秘密重构阶段:如果参与者𝑃没有使用正确的碎片 𝑠 ,而是使用一个随机值,那么最终重构出来的 𝑠 将没有任何意义。 若𝑃是唯一一个没有使用正确碎片的参与者,那么他能够使用其他 𝑡 − 1个参与者的正 确碎片计算出被分享的真正秘密。

改进:

  • 可验证秘密共享:增加对秘密碎片的承诺

安全多方计算(MPC)

定义

  • 指在无可信第三方情况下,多个参与方协同计算一个约定函数,且保证每一方仅获取自己的计算结果,无法通过计算过程中的交互数据推测出其他任意一方的输入和输出数据(除非函数本身可以由自己的输入推测出其他参与方的输入和输出)

特性

正确性:

  • 多方计算参与各方通过约定安全多方计算协议发起计算任务并进行协同计算, 运算数据结果具备正确性。

隐私性:

  • 安全多方计算首要的目的是各参与方在协作计算时如何对隐私数据进行保护, 即在计算过程中必须保证各方私密输入独立,计算时不泄露任何本地数据。

去中心化:

  • 安全多方计算中,各参与方地位平等,不存在任何有特权的参与方或第三方,提供一种去中心化的计算模式。

同态加密

基本概念:

指满足密文同态运算性质的加密算法,即 数据经过同态加密之后,对密文进行特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算,实现数据的“可算不可见”

分类

全同态加密:支持对密文进行任意形式的计算

半同态加密/部分同态加密:支持对密文进行部分形式的计算

  • 如果加密算法同时满足加法同态性和乘法同态性,则可称其满足全同态性

  • 全同态存在效率低等问题,实际应用中的同态加密算法多选取半同态加密(如加法同态)

常见同态加密算法

乘法同态加密算法:

  • RSA

  • ElGamal

加法同态加密算法

  • Pailler算法

有限全同态加密算法

  • Boneh-Goh-Nissim方案:一种基于双线性映射的公钥密码方案

同态加密应用

  • 云计算

  • 区块链

  • 联邦学习

TLS协议

基本概念

  • TLS:传输层安全协议,位于 TCP/IP 协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端安全服务,它使客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。

  • 工作在传输层,与应用层协议无关

  • 运行在TLS协议上的HTTP协议被称作HTTPS

宗旨

  • 为通信双方提供安全可靠的通信协议服务,在通信双方间建立一个传输层安全通道

目标:

加密安全:

  • TLS应用于双方之间建立安全连接,通过加密,签名,数据摘要保障信息安全

互操作性:

  • 程序员在不清楚TLS协议的情况下,只要对端代码符合RFC标准的情况下都可以实现互操作

可扩展性:

  • 在必要时可以通过扩展机制添加新的公钥和机密方法,避免创建新协议

相对效率:

  • 加密需要占用大量CPU,尤其是公钥操作。TLS协议握手完成后,通过对称密钥加密数据。 TLS还集成了会话缓存方案,减少需要从头建立连接的情况。

核心步骤:

  • 认证

  • 密钥协商

  • 数据加密

功能:

  • 基于PKI的身份认证

  • 基于混合加密算法的数据加密

  • RSA算法协商密钥,并进行对称加密

  • 基于数字签名的数据完整性

保障安全性的机制:

  • 认证:能够对服务器或连接各端的客户机和服务器进行认证。

    • 使用消息认证码 (MAC)来保证数据完整性。
  • 保密:能够对信息进行加密,只有交流信息的双方才能访问并理解加密信息。

    • 使用对称加密来保证通信保密性,
  • 完整性:可以防止信息内容在未经检测的情况下被修改,接收方可以确信他们收到的是无法进行修改的信息。

    • 使用 PKI 在建立连接时对通信双方进行身份认证。

TLS对话

连接对话

  • 客户机和服务器交换证书并就安全参数进行磋商。

  • 如果客户机接受服务器的证书,就会建立一个主密钥,这个主密钥被用来对随后进行的通信进行加密。

应用对话

  • 客户机和服务器之间可以安全地传递信息。

TLS协议结构

下层:TLS记录层协议:

  • 为TLS上层子协议,为传送提供分片、 消息加密及加密后传输,同时对接收到的数据进行验证、解密、重新组装,然后提交给高层的应用层;

  • 为TLS连接提供:机密性、报文完整性

上层:TLS握手层协议

  • 包含:握手协议、警报协议、应用数据协议、(change_cipher_spec)

  • 为TLS连接提供:认证性

算法套件

格式:TLS_密钥交换算法_身份认证算法_WITH_对称加密算法_消息摘要算法

例:TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,密钥交换算法是DHE,身份认证 算法是RSA,对称加密算法是AES_256_CBC,消息摘要算法是SHA256,由于RSA又可以用于 加密也可以用于身份认证,因此密钥交换算法使用RSA时,只写一个RSA,比如 TLS_RSA_WITH_AES_256_CBC_SHA256

DHE/ECDEHE

  • 通过引入动态随机数,具有前向保密的DH/ECDH算法

AEAD

  • 带有辅助数据的认证加密

RTT

  • TLS1.2:2-RTT

  • TLS1.3:1-RTT