密码学07——密码协议

Diffie-Hellman 密钥交换

Diffie-Hellman密钥交换协议

  • 密钥交换是实现安全通信的基础
    • 商用加密算法AES和DES需要在安全通信之前, 实现通信双方的密钥共享。
  • 密钥交换的方法:
    • 基于RSA的密钥交换;
    • 基于KDC技术 (Key Distributed Center,密钥分发中心);
    • Diffie-Hellman密钥交换(简称: DH算法);
    • 基于物理层的密钥交换。

DH算法是不安全信道下实现安全密钥共享的一种方法, 由 W. Diffie 和 M. Hellman 在1976年提出的第一个公开的公钥密码算法。

DH算法

![[DH算法.png]]

DH协议的例子

  • 假设素数 p=97,其基本元 g=5
  • 若用户A 和用户B 选取的随机数分别为:x=36;y=58
    • 用户A 计算:YA=536mod97=50mod97
    • 用户B 计算:YB=558mod97=44mod97
    • 用户A 计算密钥:K=4436mod97=75mod97
    • 用户B 计算密钥:K=5058mod97=75mod97

Diffie-Hellman密钥交换中的安全问题

安全性分析

  • 攻击者可利用的信息包括 素数p、本原元g、中间值 YAYB

  • 若攻击者想获取密钥 K ,就必须通过 YA=gxmodpYB=gymodp 计算 xy,这是一个离散对数求解问题

  • 因此,算法的安全性基于球离散对数的困难性

  • [?] 除了破获密钥外,攻击者还有其他的攻击方式吗?

DH算法存在的安全问题

  • 容易遭受阻塞攻击:因为幂运算是计算密集性的,当敌手发起大量的密钥请求,受攻击者将花费较大计算资源来做幂运算;
  • 容易遭受中间人攻击:敌手可分别冒充用户A和B中的一方,与另一方交换密钥(敌手就可以监听和传递A和B的秘密信息而不被发现)。

中间人攻

![[中间人攻击.png]]

课后调研

了解一下奥克利(Oakley)协议是什么?

奥克利协议(Oakley Protocol) 是一种用于 密钥交换 的加密协议,旨在为计算机网络中的通信双方提供安全的会话密钥交换。它由 Thomas M. (Todd) Oakley 在 1991 年提出,是 Diffie-Hellman 密钥交换协议 的一种改进方案,解决了基于 Diffie-Hellman 协议的某些安全性问题。

1. 背景

在早期的 Diffie-Hellman 密钥交换协议中,虽然协议能够实现两方安全地生成共享密钥,但它并未解决身份认证的问题,即协议本身并没有机制来验证参与方的身份,因此容易受到中间人攻击(Man-in-the-Middle Attack)。

为了解决这一问题,奥克利协议引入了一些改进,增强了安全性并且确保了通信双方的身份验证。奥克利协议的设计目标是确保密钥交换过程中的机密性、完整性和身份验证。

2. 奥克利协议的主要特点

奥克利协议的核心目标是为 Diffie-Hellman 密钥交换增加身份验证,从而抵御中间人攻击。它通过以下几个机制来实现:

2.1 身份验证

奥克利协议为密钥交换过程提供了身份验证机制。通过结合公钥加密和数字签名,确保通信双方能够验证对方的身份。这通常通过 数字证书公钥基础设施(PKI) 来实现。

2.2 防止中间人攻击

传统的 Diffie-Hellman 协议没有提供对通信方身份的验证,这就为中间人攻击留下了漏洞。奥克利协议通过引入身份认证,确保在密钥交换过程中双方都是经过验证的,从而防止中间人攻击。

2.3 使用多轮密钥交换

奥克利协议通过多轮交换过程增加了安全性,每轮交换都涉及到不同的密钥生成步骤。这样,即使某一轮密钥交换被破解,其他轮次的密钥交换仍然可以提供额外的安全保障。

2.4 保护机密性

奥克利协议使用了 加密算法哈希函数 来保护消息的机密性,确保通信双方交换的内容不会被第三方窃听或篡改。

3. 奥克利协议的工作原理

奥克利协议通常包含多个阶段,以下是一个大致的工作流程:

  1. 初始密钥交换(Diffie-Hellman)

    • 双方通过 Diffie-Hellman 协议交换公钥部分,生成共享的会话密钥。由于没有身份验证,仍然有可能受到中间人攻击。
  2. 身份验证

    • 通过使用公钥基础设施(PKI)和数字签名进行身份验证。每一方会向对方提供数字证书或公钥,使用这些信息验证对方的身份,确保密钥交换的合法性。
  3. 加密和哈希

    • 在交换密钥的过程中,消息内容被加密或哈希处理,以防止数据被窃取或篡改。
  4. 共享密钥生成

    • 双方通过 Diffie-Hellman 协议得到的共享密钥被用于加密后续的通信内容。
  5. 完成密钥交换

    • 一旦双方都完成身份验证并成功生成共享密钥,通信就可以开始了,使用该密钥加密后续的通信内容。

4. 奥克利协议与其他协议的比较

  • 与 Diffie-Hellman 协议的比较

    • Diffie-Hellman 协议的主要缺点是缺乏身份验证机制,因此容易受到中间人攻击。奥克利协议解决了这一问题,通过结合身份验证和多轮交换来加强安全性。
  • 与 SSL/TLS 协议的比较

    • SSL/TLS 协议使用类似的密钥交换方法,但在奥克利协议的基础上引入了更多的加密算法、身份验证和消息完整性检查。因此,SSL/TLS 协议在实际应用中更加复杂和完善,且在互联网通信中得到广泛应用。

5. 应用场景

奥克利协议作为密钥交换协议的核心之一,在很多安全协议中都有应用,尤其是 SSL/TLSIPsec 等协议。通过在密钥交换过程中增强身份验证,奥克利协议使得这些协议能够提供更加安全的通信通道。

6. 奥克利协议的总结

  • 奥克利协议为传统的 Diffie-Hellman 密钥交换 提供了改进,解决了身份验证和中间人攻击的问题。
  • 它通过结合 公钥加密数字签名多轮密钥交换 等机制,增强了安全性。
  • 奥克利协议在许多安全协议(如 SSL/TLS 和 IPsec)中得到了广泛应用,成为现代网络安全中不可或缺的一部分。

7. 奥克利协议与现代加密技术

今天的加密协议如 SSL/TLSIPsec 都在某种程度上借鉴了奥克利协议的理念,尤其是在密钥交换和身份验证方面。尽管奥克利协议本身并不是广泛应用的协议,但它为后来的许多加密通信协议奠定了基础,特别是在保障通信双方安全、身份验证和抵御中间人攻击等方面。

Shamir秘密共享

秘密共享的概念

  • 问题1:
    • 保险柜中存放有10个人的共有财产,要从保险柜中取出物品,必须有半数以上的人在场才可取出,半数以下则不行。如何构造锁的设计方案?
  • 问题2:
    • 导弹的发射控制、重要安保场所的通行检验,通常需要多人同时参与才能生效。因此,需要将秘密分给多人掌管,并且由一定掌管秘密的人数同时到场才能恢复秘密。方案如何设计?

秘密分割门限方案的定义

  • 秘密 s(通过某种方案)被分为 n 个部分,每个部分称为份额(share)影子(shadow),由一个参与者持有,使得
    • k 个或多于 k 个参与者所持有的部分信息可重构 s
    • 由少于k个参与者所持有的部分信息则无法重构s,称该方案为 (k,n) 秘密分割门限方案,k 称为门限值。少于 k 个参与者所持有的部分信息得不到s的任何信息称该门限方案是完善的。
  • ![[秘密分割门限方案.png]]

Shamir秘密共享方案

Shamir门限方案的构造思路

![[Shamir门限方案的构造思路.png]]

一般的,设 {(x1,y1),,(xk,yk)} 是平面上 k 个不同的点构成的点集,那么在平面上存在唯一的 k1 次多项式 f(x)=a0+a1x,+,ak1xk1 通过这 k 个点.

若把秘密 s 取做 f(0)n 个份额取做 f(i)(i=1,,n),那么利用其中任意 k 个份额可以重构 f(x),从而可以得到秘密 s.

  • [i] GF(q){0}表示的是 有限域 GF(q) 除去零元后的集合,通常称为 非零元素集合

Shamir门限方案

  • GF(q)为大素数 q 生成的有限域,其中 qn+1
  • 秘密 sGF(q){0} 上均匀选取的随机数,即 sGF(q){0}.
  • GF(q) 上构造一个k1 次多项式 f(x)=a0+a1x,+,ak1xk1,其中:a0=s,aiRGF(q){0}
  • n 个参与者 P1,,Pn,其中,P 的份额为 f(i)。任意 k 个参与者要得到秘密 s,可使用

{a0+a1(i1)++ak1(i1)k1=f(i1)a0+a1(ik)++ak1(i1)k1=f(ik)

由Lagrange插值公式:

(1)f(x)=j=1kf(ij)l=1ljkxilijil(modq)(2)s=(1)k1j=1kf(ij)l=1ljkilijil(modq)

Shamir门限方案的完善性

  • 如果 k1 个参与者想获得s,可构造k1个方程,有 k 个未知量。
  • 对任意 s0,设 f(0)=s0. 这样可以得到第 k 个方程,得到 f(x)
  • 对每个 s 都有唯一的多项式满足,所有由 k1 个份额得不到任何 s的信息。
  • 因此,该方案是完善的

例子:(3,5) 门限方案

k=3,n=5,q=19,s=11 随机选择系数 a1=2,a2=7

f(x)=7x2+2x+11mod19

计算可知:f(1)=1,f(2)=5,f(3)=4,f(4)=17,f(5)=6

若已知 f(2),f(3),f(5),由拉格朗日插值公式可知:

(3)f(x)=5(x3)(x5)(23)(25)+4(x2)(x5)(32)(35)+6(x2)(x3)(52)(53)(4)=7x2+2x+11

故,s=f(0)=11

或者,s=(1)31[53×5(23)(25)+42×5(32)(35)+62×3(52)(53)]=11

posted @   seveN1foR  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示