《A Graduate Course in Applied Cryptography》Chapter 21 Authenticated Key Exchange (1)

原文教材 与 参考资料:

 

        Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].

        该书项目地址(可以免费获取):http://toc.cryptobook.us/

        博客为对该书的学习笔记,并非原创知识,帮助理解,整理思路,将书上的知识点用自己的语言组织起来也是一种学习方法。

Authenticated Key Exchange

       可认证密钥交换技术,为一种密码学协议,在两方或者多方之间运行该协议,最终使得各方都安全的得到一个共识的会话秘钥(session key)。一般情况下,实现AKE协议往往需要假设存在一个可信第三方(TTP),初始情况下,各个参与方都需要和TTP来完成整个密钥交换协议,协议成功执行后,参与方将获得一个自身长期持有的秘钥,与一个用来和其他人通信的会话秘钥。TTP分为Offline 和 Online 两种,offline 即为下线之含义,执行完协议中基本的内容后,不在进一步与参与者进行交互,没有进一步的通信消息(包括输入、输出)。online的TTP即需要保持与各个参与方之间的持续通信,并且在线的TTP往往不需要公钥组件,仅仅使用对称加密即可。

Multiple user instacnes and freshness of keys

        一个AKE协议往往可以被运行多次,每个参与者都可运行该协议,我们期望每次运行完成AKE协议后都产生一个“新鲜”的秘钥。新鲜的概念保证了每次协议执行完成后产生的会话秘钥都是独立的互相没有联系的。

Security properties: an informal introduction

AKE协议中敌手的能力:

      1.敌手是消极的具备窃听通信的能力。

       2.参与者的CA证书是对所有人公开可见的。

       3.敌手是恶意的具备修改与劫持通信消息的能力。

       4.敌手可控制整个网络空间。

       5.敌手可以腐化其中的部分参与者(corrupt)并且存在合谋攻击的能力。

当两个参与者P与Q都是诚实的参与者,那么AKE协议运行完成后,两个参与方各自获得相同的会话秘钥,此时原则上需要满足下述两个安全属性:

Authenticity: 可认证性,例如Q作为参与方与P交互,Q必须确实相信且能够确定自己是与P达成的密钥交换并获得共享密钥。

Secrecy: 保密性,从敌手的角度看k和随机数应该是不可区分的,即使敌手从其他实例处看到了会话密钥,这保证了敌手不能从其他会话密钥处学习到关于本次会话密钥的任何有意义信息。

进一步,根据敌手的能力,定义了其他的几个安全属性,“静态安全”,“前向安全”,“HSM硬件安全”。

21.1 Identification and AKE

AKE 协议还可以被看成是身份认证的一种组件,简单的身份认证协议往往面临很多不安全因素,例如,“中间人攻击”,如下图所示:

P 和 Q 进行交互,如果没有认证的保障,那么敌手将会从中截取消息,进而冒充其另一个参与者与其他诚实方进行交互, 最终成功伪造会话密钥或者成为潜藏在网络中的恶意敌手。

21.2 An encryption-based protocol

Certificate authority: 证书机构,即我们常说的CA,CA是一个可信的第三方参与实体,其具有自己一对公钥和私钥。CA往往给其他系统参与者提供一个身份的证明,CA使用自己的私钥对参与者提交的(身份ID,公钥)元组进行签名,生成证书称作Cert. 其他人接受到这个证书后,即可信任该用户生成的身份与ID是绑定在一起的。(这里存在一个小问题,如果敌手伪装一个参与者并声称伪造身份与一个合法的公钥给CA,CA如果无法识别,亦可以对其颁发证书,这将导致潜在的攻击)

 定义AKE1协议如下:

    

这个协议非常简单,满足"static security"即,敌手不盗用参与者私钥的情况下是安全的,关于这个协议有一下的几个点需要注意:

1. 当用户运行这个协议,结果只有成功与失败,没有其他状态,即使挂起-超时也意味着失败。

2. 这个协议对于参与者P而言,可以在不知道对方身份的情况下运行,但是Q一旦收到协议的第一条消息就一定能够知道P的信息,P的身份在这里并无法隐藏,如果Q收到了消息,但是拒绝进行进一步交互,那么P此时仅有产生的随机数r被Q学习到。

3. 这个协议是非对等的,具体的执行情况取决于参与方具体扮演的角色。

4. 当这个协议由多用户并发执行时,无法对协议的路由转发机器的安全性做出假设。

Erasing ephemeral data

擦除临时数据,算法运行在计算机上,数据写在内存里,那么显然用户的长期私钥也一定是存在于内存中的,如果内存数据泄露必然导致毁灭性的灾难,幸运的是到目前为止,我们依然假设参与者私钥还是安全保存的。

Implicit authentication

暗示身份认证的,P在协议执行完成以后,一定能够确定这是Q与其通信,因为Q对c进行了签名,但是对于Q而却并不一定存在这样的保证,因为Q发送最后一条消息后,P并没有确认消息再发送,不过Q此时可以确认与其共享密钥k的参与者就是P。

21.2.1 Insecure variations

对于AKE1协议而言,还存在很多不安全的因素,在展开讨论AKE1方案的安全性前,我们首先对AKE1协议中的参数进行分析,我们按照消息流进行逐条的分析:

1.P 向 Q 发送消息对(r,CertP)。r 为P每次产生的会话随机数,有标记执行情况的功能,也是P建立会话密钥的内容时持有的部分信息。CertP为P的证书由CA颁发,由CA使用自己的签名私钥对P的公钥进行签名,证明P的信息和该公钥pk之间的关系。

2. c 由Q使用P的秘钥对共享密钥k、Q的ID进行加密,当P收到这条消息后使用自己的私钥sk进行解密,获得Q的身份信息与共享密钥。这里k为共享密钥,必须加密确保只有P能够获取(防止窃听敌手),签名s = sigQ(r,c,idP)这是参与方Q对密文c,随机数r,参与者P的承诺,意味着对本次产生的消息的绑定,即为将c和idP进行绑定,即为整个c密文是给参与方P的,在后边我们将看到如果这些参数被修改那么这个协议将不在安全。CertQ即为参与者Q的证书内容形式和P的证书一样。

Insecure variations of AKE1

下述关于AKE1的几个变种版本是不安全的,接下来我们这几个版本的协议进行分析与讨论:

变体1:对c不进行签名

如果对c不进行签名,那么意味着Q不对c做任何的承诺,如果c可以由任何人生成,因为你IdQ是公开的信息,所以敌手可以任意的加密自己生成的密钥,并作为一个恶意的中间参与者截获Q的第二轮交互信息,修改密文c之后,将新修改的密文c`连同签名信息发送给P,P依然可以通过该验证并自认为完成了密钥交换过程。但是,P实际获取到的是敌手伪造的密钥,Q仍然以为使用的是自己选择的密钥k。最终,敌手可以获取P的所有与Q的通信消息。

变体2:对r不进行签名

我们知道随机数r的作用是对协议的交互顺序与序列进行承诺,如果不对r进行签名,那么显然r在Q的计算过程也没有任何意义,所以r可以直接从通信协议中删除掉。那么Q给P发送的第一条消息,(c,s)将会被重复使用,k这次的会话完成后,敌手监听整个网络将获取的(c,s)重新发送给参与者P,那么敌手将很容易和P以k作为密钥建立会话过程。

变体3:不对idP进行签名

从协议中看,对idP进行签名的意义在于绑定IdP和r,c,如果不对IdP进行签名,那么P得到c 和 s后将无法确定到底是不是如他所期望的Q与自己的交互的。所以,在这中条件下,敌手的攻击行为也是显而易见的,敌手可以伪造一个身份和Q交互,敌手获取一个参数r之后雇佣一个被腐败的参与者R,将r和R的证书发送给Q,那么敌手则以R的身份与Q进行通信,但是P却认为自己仍然在和Q进行交互。这里要求敌手能够获取到P的公钥,并且能够腐化网络中的一个参与者向CA以P的公钥进行注册。

变体4:不加密idQ

如果不加密idQ,那么密文c将无法保证是从Q处获取的这导致敌手依然可以发起一个重放攻击,在一次正确的交互完成后,敌手获取c, 并在下一次的与P的交互中重复使用c, 那么敌手将可以使用这个重复的密钥继续通信。

变体5:使用加密 r 来代替加密 idQ

凡是IdQ被替换往往会产生身份绑定的问题,敌手可以截取Q发送的信息,然后使用假身份R和P进行交互,因为Q 给 P的消息中没有对idQ的签名了,特别是加密信息c,P将彻底无法确定与其通信的到底是谁。

变体6:CCA加密

此处是比较简单的,如果不使用CCA加密的话,密文存在延展性,这将直接导致敌手对密文c发起攻击。

总结:

       常见的有三种攻击方式:

       1. key recovery attack: 敌手直接有能力恢复出密钥。

       2. replay attack: 敌手能够使得用户继续使用之前用过的会话密钥。

       3. identity misbinding attack: 敌手作为一种中间人,使得两个参与方都相信是自己在和期望的人对话。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值