(十)Diffie-Hellman协议

Diffie-Hellman协议

简称DH,是一种公钥分发方案,该协议允许双方通过交换窃听者可见的信息来建立共享秘密。

前提知识:离散对数问题(DLP)

DLP问题就是给定某个群中的元素g,在已知的x和g^y=x条件下,尝试反解出未知数y,其中p是一个素数。DLP被称为离散的,是因为处理的是整数,而不是非连续的实数。

Diffie-Hellman(DH)函数

DH函数通常与表示为的群一起工作。这些群由非零整数模质数p构成。另一个公共参数是基数g。所有算术运算均以p为模进行。

DH函数涉及两个通信方从Zp*群中随机选择的两个私有值,表示为a和b。甲方通过私有值a计算公共值A=g^a mod p。A发送给乙方。乙方私有值b计算公共值B=g^b mod p,B发给甲方。DH将对方的公共值与己方的私有值相结合,计算:A^b=(g^a)^b=g^(ab)和B^a=(g^b)^a=g^(ba)=g^(ab)。得到的两个值相等,将其传递给密钥派生函数(KDF),以生成一个或多个共享对称密钥。KDF是一种哈希函数,它将返回具有所需密钥长度的随机字符串。

为了确保最高的安全性,安全的DH参数中的质数p应当满足(p-1)/2,且也为质数。

Diffie-Hellman问题

计算Diffie-Hellman问题(CDH)

指仅给定公共值A=g^a和B=g^b而不提供任何秘密值a或b来计算共享秘密g^(ab)的问题。

决策Diffie-Hellman问题(DDH) 

假设在给定g^a和g^b的2048比特值的情况下,攻击者可以计算g^(ab)的前32比特,但是他们无法计算所有2048比特。尽管CDH不会被攻破,因为32比特不足以完全恢复g^(ab),但攻击者仍会学到一些有关共享秘密的知识,这可能仍会使他们可以损害应用程序的安全性。为确保攻击者无法了解有关共享秘密的任何信息,只需将该值与随机的群元素区分开即可,这就像使密文与随机字符串无法区分开时的加密方案一样安全。形式化这种直觉的计算问题称为决策Diffie-Hellman问题。

给定g^a、g^b以及某个随机数c,在g^(ab)和g^c中二选一(两个概率均为1/2),DDH问题确定g^ab(与g^a和g^b对应的共享秘密)是否被选中。攻击者不能有效解决DDH的假设称为决策Diffie-Hellman假设。

密钥协商协议

Diffie-Hellman问题旨在建立安全的密钥协商协议——通过共享秘密实现双方或多方网络通信的安全。这个秘密会生成一个或多个会话密钥,即对称密钥,用于加密和认证在会话持续过程内交换的信息 

非DH密钥协商协议 

例如3G和4G电信标准中用于在SIM卡和电信运营商之间建立通信的协议 。该协议通常被称为身份验证密钥协议(AKA),它不使用Diffie-Hellman函数,仅使用对称密钥操作,原理如下图所示。

密钥协商协议的攻击模型

密钥协商协议中存在不同的安全性概念,并且根据协议泄露的信息,有三种主要的攻击模型。从最弱到最强,分别是:窃听、数据泄露和攻破。

窃听(eavesdroper):攻击者观察到正在运行密钥协商协议的两个合法方之间交换的消息,并且可以记录、修改、删除或注入消息。为了防止窃听,密钥协议协商不得泄露有关已建立的共享秘密的任何信息。

数据泄露(data leak):在此模型中,攻击者从一个或多个协议执行中获取会话密钥和所有临时机密(例如,先前讨论的电信协议示例中的SK),但不是长期机密(例如,同一协议中的K)。

攻破(breach):在此模型中,攻击者了解一个或多个参与方的长期密钥。一旦发生攻破,安全性将不复存在,因为攻击者可以在协议的后续会话中模拟一方或双方。但是攻击者还是不能从获得密钥之前执行的会话中恢复秘密(不能知道过去)。

密钥协商协议的安全目标

认证:每一方应该都能够认证另一方。即,该协议应允许相互认证。当协议对双方进行身份验证时,就会发生身份验证密钥协议(AKA)。

密钥控制:任何一方都无权选择最终的共享秘密或将其限制在特定子集中(共享秘密指定双方都要参与)。3G/4G密钥协商协议缺少此条,运营商可以选择R的值来完全确定最终的共享密钥。

前向保密:这可以确保即使暴露了所有长期密钥,即使攻击者记录了所有先前的执行情况或能够注入或修改来自先前执行的消息,也无法计算出该协议先前执行的共享秘密(不能知道过去)。前向保密协议可确保即使您必须将设备及其秘密传递给某个机构或他人,他们也无法解密您之前的加密通信。(3G/4G密钥协商协议不提供前向保密性。)

抵抗密钥泄露模拟(resistance to key-compromise impersonation,KCI):当攻击者攻破了一方的长期密钥并能够使用它来模仿另一方时,就会发生KCI。例如,由于双方共享相同的密钥K,因此3G/4G密钥协商协议允许进行一般的密钥泄露模拟。密钥协商协议理想情况下应防止此类攻击。 

Diffie-Hellman协议

匿名Diffie-Hellman协议 

不经过身份验证;参与者不能验证任何一方的身份,并且任何一方都不持有长期密钥。A不能向B证明自己是A,反之亦然。

以Alice和Bob双方为例,匿名Diffie–Hellman中,每一方都选择一个随机值(Alice为a,Bob为b)用作私钥,并将对应的公钥发送给另一方。

 中间人攻击

可以通过中间人攻击攻破匿名Diffie-Hellman协议,攻击者可截获A,装作Alice,截获B,装作Bob,这样中间人和Alice、Bob各共享一对秘密,攻击者从Alice处得到加密消息,用与Alice的共享秘密解密之后,换成另一个消息用与Bob的共享秘密加密发送给Bob。

含身份验证的Diffie-Hellman协议

含身份验证的Diffie-Hellman旨在解决可能影响匿名DH的中间人攻击。含身份验证的DH为双方提供了私钥和公钥,从而允许Alice和Bob签名他们的消息,以此阻止Eve顶替他们发送消息。签名不是用DH函数计算的,而是使用RSA-PSS之类的公钥签名方案。这样Eve就无法伪造消息了。

下图为含身份验证的Diffie-Hellman协议的工作图,可以看出在发送公共值过程中双方都带了自己的签名,签名无效则不会计算公共秘密。

它实现了防窃听和密钥控制、前向保密安全目标,但有可能会被重放攻击击破。

Menezes–Qu–Vanstone(MQV)协议 

MQV是Diffie–Hellman的极致,它比含身份验证的DH安全得多。

MQV密钥不是签名密钥:MQV中使用的密钥由私有指数x和公共值g^x组成。

下图说明了MOV的操作。

x和y是Alice和Bob各自的长期私钥,而X和Y是它们的公钥。

虽然MOV很安全,但由于曾经的专利限制和难于实现等问题,不如含身份验证的Diffie-Hellman协议使用的多。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值