22、非对称密码学中的密钥交换技术解析

非对称密码学中的密钥交换技术解析

1. 密钥交换基础概念

在密钥交换协议中,保证会话密钥不被敌手获取至关重要。敌手针对(未认证的)密钥交换协议的优势定义为:若敌手能以概率((1/2 + ϵ))区分协议执行输出与从集合(K)中均匀随机选取的密钥,则其优势为(ϵ)。具体来说,敌手会得到协议参数和成功执行的记录,随机选择一个比特(b),若(b = 0),敌手得到协商的会话密钥;若(b = 1),敌手得到(K)中的随机值。敌手成功计算出(b)则获胜。

公钥加密在密钥交换协议中本应发挥重要作用,但密钥封装机制(KEM)更为灵活。公钥加密方案和公钥KEM在形式上是等价的,但使用KEM可避免对选定输入值进行加密,从而更高效。

2. 密钥封装机制(KEM)

KEM由四个算法组成:
- KEMSetup() :输出一组公共参数(cp)。
- KEMKeyGen(G, g) :以参数(cp)为输入,输出公钥和私钥对((pk, sk))。
- Encap(pk) :给定公钥(pk),输出密钥(k)和封装密钥(密文)(c)。
- Decap(sk, c) :给定私钥(sk)和封装密钥(c),输出密钥(k)。

正确性要求对于任何正确生成的密钥对((pk, sk)),若((k, c) ← Encap(pk)),则(k ← Decap(sk, c))。有时正确性无法保证,此时可关联一个概率。

3. KEM构建与示例

可以从KEM构建被动安全的密钥交换协议。若图9.2中使用的KEM是CPA安全的,则该协议是定义9.2意义下的安全未认证密钥交换协议。

3.1 Diffie - Hellman密钥交换

Diffie - Hellman协议是KEM用作密钥交换协议的最著名示例,其步骤如下:
- KEMSetup() :生成一个合适的乘法群(G),元素(g)的阶为(s)。
- KEMKeyGen(G, g) :随机选择(sk \stackrel{\$}{\leftarrow} Z_s),并设置(pk ← g^{sk})。
- Encap(pk) :随机选择(r \stackrel{\$}{\leftarrow} Z_s),输出(k = pkr)和(c = g^r)。
- Decap(sk, c) :设置(k = c^{sk})。

Diffie - Hellman广泛用于认证密钥交换,当(G)是(Z^ _p)(模素数(p)的非零整数)的子群或各种椭圆曲线群之一时,图9.2中导出的未认证密钥交换协议被认为是安全的。但量子计算机可利用Shor算法在(Z^ _p)和椭圆曲线群中高效找到离散对数,从而攻破该协议。因此,人们致力于寻找能抵抗量子计算能力敌手的KEM,如基于格的Saber和基于同源性的SIKE。

Diffie - Hellman协议有一个特殊性质,即Encap算法中生成的密文(c)与(pk)无关,这使得该协议可以一轮完成,双方在收到对方消息前就能计算各自的消息。而许多为后量子安全提出的KEM不具备此性质,协议需两轮完成。

3.2 未认证组密钥交换

为构建组密钥交换,需要适用于多方的Diffie - Hellman协议版本。Joux在2004年构建了一个三方版本,基于双线性对(\hat{e} : G × G → G_T),三方分别选择随机输入(a)、(b)和(c)并广播(g^a)、(g^b)和(g^c),知道其中一个输入就足以计算共享秘密值(\hat{e}(g, g)^{abc} = \hat{e}(g^a, g^b)^c = \hat{e}(g^a, g^c)^b = \hat{e}(g^b, g^c)^a)。将此思想扩展到任意数量的方需要合适的多线性映射,但目前尚未找到合适的映射。

有几种将Diffie - Hellman扩展到组设置的协议,如Burmester和Desmedt在1995年提出的协议,允许一组方在两轮内计算共享秘密(Z),且各方计算量几乎固定。Katz和Yung在2003年基于决策DH假设为该协议提供了针对被动敌手的安全证明。较新的示例是TreeKEM,旨在方便组内成员的添加和删除,且可基于任何KEM。

4. 认证密钥交换

前面讨论的协议仅对被动攻击者安全,因为忽略了认证。主动攻击者可参与协议运行,诚实方无法知道与哪个对等方共享会话密钥。为防范主动攻击者,各方需持有长期密钥,用于其他方对其进行认证。允许各方验证其他参与方身份的密钥交换协议称为认证密钥交换(AKE)协议。

长期密钥通常是由所有协议方信任的某个权威机构认证的公钥。在许多学术协议中,通常假设各方在需要时可获取公钥,但实际情况并非总是如此,这会对协议效率产生重大影响。也可将证书的安全性建模为协议的一部分,但这会使分析复杂化,学术论文中通常避免这样做。

5. 非交互式密钥交换(NIKE)

最简单的AKE协议可能是仅使用长期密钥、不使用临时密钥的协议。若协议参与者可从某个目录(如认证公钥目录)获取长期密钥,则可实现无消息的非交互式协议。

NIKE协议由三个算法组成:
- NIKESetup() :输出一组公共参数(cp)。
- NIKEKeyGen(cp, ID) :以参数(cp)和身份(ID)为输入,输出公钥和私钥对((pk, sk))。
- NIKEkey(ID1, pk1, ID2, sk2) :给定公钥(pk1)和私钥(sk2),输出共享密钥(K)或失败符号。

NIKE协议的正确性要求(NIKEkey(ID1, pk1, ID2, sk2) = NIKEkey(ID2, pk2, ID1, sk1))。Diffie - Hellman协议可重铸为NIKE协议,NIKESetup()算法与定义9.4中的KEMSetup相同,NIKEKeyGen(cp, Ui)为方(Ui)生成私钥和公钥对((sk_i, g^{sk_i})),NIKEkey(U1, pk1, U2, sk2)为(g^{sk_1sk_2})。其他NIKE协议可基于因子分解和椭圆曲线对问题构建。

Freire等人对从任何NIKE到KEM的通用转换进行了形式分析,这种映射使用NIKEKeyGen(cp, ID)为Encap(pk)生成与(pk)无关的新密钥。一般情况下,不能直接将KEM用作NIKE协议,因为Encap(pk)生成的封装密钥可能依赖于(pk)。但在封装与接收方公钥无关的情况下(如Diffie - Hellman KEM),NIKE和KEM可互换。

6. AKE安全模型

目前有许多不同的认证密钥交换密码安全模型,多年来模型对安全性的要求越来越高,但许多模型不可比,没有严格的模型强度层次结构。

6.1 基于游戏的AKE模型

基于游戏的安全模型历史可追溯到1993年Bellare和Rogaway的论文,正式发表于1994年,该模型(BR93模型)为实体认证定义了单独的安全目标,保证协议运行中的接受方有一个特定、唯一的对等方参与该运行。但许多AKE协议不具备此性质,后续模型(如1995年Bellare和Rogaway的论文)去除了显式认证要求,只要求隐式认证,即一方接受会话密钥时,已知的对等方是唯一可能计算出相同会话密钥的方。

基于游戏的AKE安全定义可通过多种因素区分,最明显的是赋予敌手的能力(预言机)集合。允许敌手完全控制网络,模型通常包含一个对抗性查询(通常称为Send),允许敌手向一方的协议会话发送输入(可能为空)并观察会话执行当前协议步骤的响应。敌手可通过Send查询充当被动敌手观察良性协议运行,或充当主动敌手发送其能计算的任何消息。安全性通常通过Test查询定义,敌手选择一个目标会话进行攻击,接收该会话接受的会话密钥或随机密钥,若能区分这两种情况则获胜。

常见的对抗性查询如下表所示:
|查询|目的|模型|
| ---- | ---- | ---- |
|Send|向协议会话发送消息并观察响应|Bellare和Rogaway (1994)|
|Reveal|返回任何接受的会话密钥|Bellare和Rogaway (1994)|
|Corrupt|返回一方的长期私钥|Bellare和Rogaway (1995)|
|StateReveal|返回会话临时状态|Canetti和Krawczyk (2001)|
|EphemeralReveal|返回会话私有的临时密钥|LaMacchia等人 (2007)|
|Test|返回会话密钥或随机密钥|Bellare和Rogaway (1994)|

早期的密钥交换模型旨在捕获已知的针对现有协议的攻击,不同攻击类型对应不同的敌手能力:
- 已知密钥安全 :敌手可通过Reveal查询获取其他协议运行的会话密钥。
- 未知密钥共享 :敌手可通过Send查询向非预期方发送消息,使各方接受与预期不同的方的密钥。
- 前向保密性 :敌手可在目标会话完成后通过Corrupt查询获取长期密钥。
- 密钥泄露冒充 :敌手可在任何时候访问目标会话预期伙伴的长期密钥,进行冒充攻击,但仍可能无法赢得安全游戏。
- 后泄露安全性 :敌手可在目标会话前访问不断演变的特定方密钥,但若发生重新同步步骤,仍可能无法赢得安全游戏。

从LaMacchia等人在2007年提出的模型开始,人们努力定义最大安全性,即找到仍能保证安全的最强敌手。他们的eCK模型(Canetti和Krawczyk的CK模型的扩展)增加了一个查询,允许敌手获取临时会话秘密,如临时Diffie - Hellman私钥。只要不导致安全游戏的简单获胜,敌手可获取各方(包括目标会话中的各方)的临时或长期密钥。不幸的是,寻找最强安全模型或对模型进行部分排序的尝试尚未成功,Cremers在2011年表明CK模型(两个版本)和eCK模型不可比,一个协议在一个模型中安全,在另一个模型中可能不安全。

除了对抗性查询,任何AKE安全模型的关键要素是指定何时以及以何种组合进行查询。例如,可能不允许对目标会话进行EphemeralReveal查询并对目标会话的所有者进行Corrupt查询。Cremers和Feltz在2012年引入的新鲜度谓词对这一概念进行了广义表述,他们给出的AKE安全通用模型如下:
1. 生成系统参数。
2. 只要新鲜度谓词(F)成立,敌手可访问查询集合(Q)。
3. 敌手通过Test查询指定一个目标会话。
4. 只要(F)继续成立,敌手再次可访问查询集合(Q)。
5. 敌手输出对步骤3中得到的是真实密钥还是随机密钥的猜测,猜测正确则获胜。

这个表述可用于指定大多数已知的基于游戏的安全模型。

6.2 前向保密性的类型

前向保密性指若一方被攻破,只要会话密钥在攻破发生前被接受,任何会话密钥应保持安全。最强的定义允许敌手在会话密钥被接受后攻破所有方,但有些协议可能只容忍有限的攻破。一种重要情况是基于身份的协议,其中密钥生成中心(KGC)可找到所有用户的私钥,基于身份的AKE协议可能在KGC被攻破时仍提供KGC前向保密性。

弱前向保密性是一种重要类型,其中敌手在目标会话运行期间不允许活跃。许多著名的两消息协议仅实现了这种较弱的前向保密性,导致一种误解,认为没有两消息协议能实现完全前向保密性。实际上,许多两消息协议可通过签名或MAC对各方进行显式认证来实现完全前向保密性。在许多情况下,弱前向保密性可能足够,因为具有弱前向保密性的协议可通过添加额外消息确认双方能够计算会话密钥转换为具有完全前向保密性的协议。

6.3 ACCE模型

基于游戏的AKE安全定义的一个后果是敌手永远不允许看到实际使用的会话密钥,因为这可能被用作预言机来区分会话密钥和随机密钥。当密钥交换在使用协商密钥的单独会话之前完成时,这不会造成问题,但在现实世界协议中并非总是如此,在允许早期数据的0 - RTT协议中可能无法实现。这种形式安全目标与现实的不匹配长期阻碍了对最广泛使用的实用密钥交换协议TLS的安全证明。

2012年,Jager等人引入了认证和保密通道建立(ACCE)模型,专门用于证明TLS 1.2握手协议的安全性。ACCE模型考虑了密钥交换与会话密钥用于对交换的应用数据进行认证加密的结合,反映了TLS等协议的实际使用情况。后续工作进一步发展了该模型以考虑其他约束,Dowling等人在2020年提出了灵活的ACCE(fACCE)模型,并用于分析Noise框架等灵活协议套件。

6.4 隐私属性

虽然隐私通常不是密钥交换的主要目标,但在增强隐私规定方面已有大量工作。两个具体目标是可否认性和匿名性,可否认性允许协议方合理否认参与了某个协议运行,匿名性则隐藏参与方的身份。若敌手不是相关协议运行的参与者,这两个属性在非正式意义上很容易实现。例如,许多协议中交换的消息是随机值(一旦协议参数选定),仅从消息本身无法关联任何身份。

当敌手是协议中的一方时,实现隐私很困难。对于可否认性和匿名性,有几种不同的定义和相应的协议构造。在客户端 - 服务器场景中,可能仅为客户端提供匿名性才有意义,一般策略是客户端通过加密其所有消息来隐藏其身份。

综上所述,密钥交换技术在密码学中至关重要,不同的密钥交换协议和安全模型适用于不同的场景和安全需求。随着技术的发展,如量子计算的出现,对密钥交换技术的安全性提出了新的挑战,需要不断研究和开发新的协议和模型来应对这些挑战。同时,隐私属性也逐渐成为密钥交换技术中不可忽视的一部分,为用户提供更安全、更私密的通信环境。

非对称密码学中的密钥交换技术解析

7. 不同密钥交换技术总结与对比

为了更清晰地了解各种密钥交换技术的特点,我们对上述介绍的几种技术进行总结与对比。

技术类型 特点 安全性 效率 适用场景
未认证密钥交换(基于KEM) 可构建被动安全协议,部分协议易被量子计算机破解 对被动攻击者安全 相对较高,避免不必要加密 对主动攻击防范要求不高的场景
Diffie - Hellman密钥交换 广泛应用,有特殊一轮完成特性,但受量子计算威胁 传统环境较安全,量子环境不安全 较高 认证密钥交换构建
未认证组密钥交换 适用于多方,有不同协议实现 部分协议有安全证明 不同协议效率不同 多方通信场景
认证密钥交换(AKE) 防范主动攻击,需长期密钥认证 较高 受公钥获取等因素影响 对主动攻击防范要求高的场景
非交互式密钥交换(NIKE) 仅用长期密钥,部分可与KEM互换 依赖具体构造 较高 对交互性要求低的场景

从上述表格可以看出,不同的密钥交换技术在安全性、效率和适用场景上各有优劣。在实际应用中,需要根据具体的需求和环境来选择合适的技术。

8. 密钥交换技术的流程与关系

为了更好地理解各种密钥交换技术之间的关系和流程,下面给出一个mermaid格式的流程图:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B{是否需要认证?}:::decision
    B -->|否| C(未认证密钥交换):::process
    C --> D{是否多方?}:::decision
    D -->|否| E(Diffie - Hellman密钥交换):::process
    D -->|是| F(未认证组密钥交换):::process
    B -->|是| G(认证密钥交换 - AKE):::process
    G --> H{是否非交互?}:::decision
    H -->|是| I(非交互式密钥交换 - NIKE):::process
    H -->|否| J(其他AKE协议):::process
    E --> K{是否考虑量子安全?}:::decision
    K -->|是| L(量子安全KEM):::process
    K -->|否| M(传统KEM):::process
    F --> N(选择合适组密钥协议):::process
    I --> O{KEM与NIKE是否可互换?}:::decision
    O -->|是| P(可互换协议):::process
    O -->|否| Q(不可互换协议):::process
    L --> R(应用于量子环境):::process
    M --> S(应用于传统环境):::process
    N --> T(多方通信应用):::process
    P --> U(灵活应用):::process
    Q --> V(按规则应用):::process
    J --> W(常规认证应用):::process
    R --> X([结束]):::startend
    S --> X
    T --> X
    U --> X
    V --> X
    W --> X

这个流程图展示了在不同需求下如何选择合适的密钥交换技术。首先判断是否需要认证,若不需要则考虑是单方还是多方情况;若需要认证则进一步判断是否为非交互式。对于Diffie - Hellman密钥交换,还需考虑量子安全因素。通过这个流程,可以更清晰地根据实际情况选择合适的技术。

9. 密钥交换技术的未来发展趋势

随着技术的不断发展,密钥交换技术也面临着新的挑战和机遇,未来可能呈现以下发展趋势:

9.1 量子抗性

量子计算机的出现对现有的密钥交换技术构成了巨大威胁,如Diffie - Hellman协议等容易被量子计算机破解。因此,研究和开发具有量子抗性的密钥交换协议将是未来的重要方向。目前已经有一些基于格、同源性等的KEM被提出作为候选方案,但还需要进一步的研究和完善,以确保其在实际应用中的安全性和效率。

9.2 隐私增强

随着人们对隐私保护意识的提高,密钥交换技术中的隐私属性将变得越来越重要。未来的协议可能会更加注重可否认性和匿名性的实现,为用户提供更安全、更私密的通信环境。例如,在客户端 - 服务器场景中,可能会有更多的协议专门为客户端提供匿名性保护。

9.3 标准化与兼容性

随着密钥交换技术的多样化,不同协议之间的兼容性和标准化问题将变得突出。为了确保不同系统之间能够顺利进行密钥交换,需要制定统一的标准和规范。同时,协议的设计也需要考虑与现有系统的兼容性,以便能够平滑过渡和集成。

9.4 效率提升

在保证安全性的前提下,提高密钥交换协议的效率也是未来的发展方向之一。这包括减少协议的通信轮数、降低计算复杂度等。例如,研究如何在不影响安全性的情况下,让协议能够更快地完成密钥交换过程,以满足实时性要求较高的应用场景。

10. 总结

密钥交换技术是密码学中不可或缺的一部分,它为安全通信提供了基础保障。本文介绍了多种密钥交换技术,包括未认证密钥交换、Diffie - Hellman密钥交换、未认证组密钥交换、认证密钥交换和非交互式密钥交换等。同时,还讨论了不同的安全模型,如基于游戏的模型、ACCE模型等,以及密钥交换技术中的隐私属性。

不同的密钥交换技术和安全模型适用于不同的场景和安全需求。在实际应用中,需要根据具体情况选择合适的技术和模型。随着技术的发展,量子计算等新挑战的出现,密钥交换技术也需要不断创新和发展,以适应新的安全需求。未来,量子抗性、隐私增强、标准化与兼容性以及效率提升将是密钥交换技术发展的重要方向。

总之,密钥交换技术的研究和应用将不断推动密码学的发展,为人们提供更安全、更高效、更私密的通信环境。

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值