基础知识补充1:密钥交换/协商机制

2020-07-29 18:06:36 浏览数 (1)

密钥交换/协商机制

密钥协商这一概念也得以提出。一方面它能为参与者提供身份认证,另一方面,也能与参与者协商并共享会话密钥。

针对以下问题:

1.有哪些密钥交换协议? 2.工作原理是什么?

靠非对称加密算法

原理:拿到公钥的一方先生成随机的会话密钥,然后利用公钥加密它;再把加密结果发给对方,对方用私钥解密;于是双方都得到了会话密钥。

举例:RSA算法应用于密钥交换。

依靠专门的密钥交换算法

原理:利用正向计算共享秘密简单、逆向求解私钥困难的思路。

举例:DH 算法及其变种

依靠通讯双方事先已经共享的“秘密”

原理:既然双方已经有共享的秘密(这个“秘密”可能已经是一个密钥,也可能只是某个密码/password),只需要根据某种生成算法,就可以让双方产生相同的密钥(并且密钥长度可以任意指定)

举例:PSK 和 SRP

3.适应场景是什么?

4.有哪些优、缺点?(侧重安全性),改进方案是什么?


Diffie–Hellman密钥交换协议

简介:Diffie–Hellman(以下简称DH)密钥交换是一个特殊的交换密钥的方法。它是密码学领域内最早付诸实践的密钥交换方法之一。DH可以让双方在完全缺乏对方(私有)信息的前提条件下通过不安全的信道达成一个共享的密钥。此密钥用于对后续信息交换进行对称加密。

优势:

应用场景:

安全依据:计算离散对数(Discrete Logarithm Problem,DLP)的困难程度

方案原理:Alice和Bob想共有一个密钥,用于对称加密。但是他们之间的通信渠道是不安全的。所有经过此渠道的信息均会被敌对方:Eve看到。哪他们要如何交换信息,才能不让Eve知道这个密钥呢?

方案要求:q是一个很大的素数(如1024bit),而且(q-1)/2也是个素数。

存在问题:

  • 安全方面:不能防护中间人攻击。
  • 计算开销方面:

改进方案:增加A、B的身份认证过程。DH需要与其它签名算法(比如RSA、DSA、ECDSA)配合——靠签名算法帮忙来进行身份认证。当 DH 与 RSA 配合使用,称之为“DH-RSA”,与 DSA 配合则称为“DH-DSA”

改进方案:

1. 客户端先连上服务端

2. 服务端生成一个随机数 s 作为自己的私钥,然后根据算法参数计算出公钥 S(算法参数通常是固定的)

3. 服务端使用某种签名算法把“算法参数(模数p,基数g)和服务端公钥S”作为一个整体进行签名

4. 服务端把“算法参数(模数p,基数g)、服务端公钥S、签名”发送给客户端

5. 客户端收到后验证签名是否有效

6. 客户端生成一个随机数 c 作为自己的私钥,然后根据算法参数计算出公钥 C

7. 客户端把 C 发送给服务端

8. 客户端和服务端(根据上述 DH 算法)各自计算出 k 作为会话密钥


椭圆加密算法(ECC)及基于“椭圆曲线”的 ECDH

简介:椭圆加密算法(ECC)是一种公钥加密算法,最初由Koblitz和Miller两人于1985年提出。DH 算法有一个变种,称之为 ECDH(全称是“Elliptic Curve Diffie-Hellman”)

优势:

椭圆加密算法的优势:1.使用更小的密钥,提供更高的安全;2.处理速度快,在私钥的加密解密速度上,ECC 算法比 RSA、DSA 速度更快,存储空间占用小,带宽要求低。

ECDH优势:ECDH依赖的是——求解“椭圆曲线离散对数问题”的困难。ECDH的数学原理比DH更复杂。

应用场景:比特币钱包公钥的生成使用了椭圆曲线算法。

安全依据:椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。

方案原理:

椭圆加密—普通椭圆加密

(1)Alice向Bob发送点G。点G被Eve知道也没关系。

(2)Alice生成随机数a。这个数没有必要告诉Bob,也不能让Eve知道。将a称为Alice的私钥。

(3)Bob生成随机数b。这个数没有必要告诉Alice,也不能让Eve知道。将b称为Bob的私钥。

(4)Alice向Bob发送aG。点aG被Eve知道也没有关系,他是Alice的公钥。

(5)Bob向Alice发送bG。点bG被Eve知道也没有关系,他是Bob的公钥。

(6)Alice对Bob发送的点bG计算其在椭圆曲线上a倍的点。Alice在椭圆曲线上计算a(bG)=abG,它就是Alice和Bob的共享密钥。

(7)Bob对Alice发送的点aG计算其在椭圆曲线上b倍的点。Bob在椭圆曲线上计算b(aG)=abG,它就是Alice和Bob的共享密钥。

椭圆加密—椭圆曲线对称加密方案

该方法主要采用Diffie-Hellman密钥交换算法,使用非对称密钥进行对称加解密。下面是获取共享对称密钥的过程:

(1)Alice向Bob发送点G。点G被Eve知道也没关系。

(2)Alice生成随机数a。这个数没有必要告诉Bob,也不能让Eve知道。将a称为Alice的私钥。

(3)Bob生成随机数b。这个数没有必要告诉Alice,也不能让Eve知道。将b称为Bob的私钥。

(4)Alice向Bob发送aG。点aG被Eve知道也没有关系,他是Alice的公钥。

(5)Bob向Alice发送bG。点bG被Eve知道也没有关系,他是Bob的公钥。

(6)Alice对Bob发送的点bG计算其在椭圆曲线上a倍的点。Alice在椭圆曲线上计算a(bG)=abG,它就是Alice和Bob的共享密钥。

(7)Bob对Alice发送的点aG计算其在椭圆曲线上b倍的点。Bob在椭圆曲线上计算b(aG)=abG,它就是Alice和Bob的共享密钥。

方案要求:

存在问题:

  • 安全方面:1.ECDH 跟 DH 一样,也是【无认证】的。同样需要跟其它签名算法(比如 RSA、DSA、ECDSA)配合;2. DH 和 ECDH,其密钥是持久的(静态的)。也就是说,通讯双方生成各自的密钥之后,就长时间用下去。这么干当然比较省事儿(节约性能),但是存在某种安全隐患——无法做到“前向保密”。
  • 计算开销方面:

改进方案:


基于 PSK 的密钥协商

简介:PSK是“Pre-Shared Key”的缩写。顾名思义,就是【预先】让通讯双方共享一些密钥(通常是【对称加密】的密钥)。所谓的【预先】,就是说,这些密钥在TLS连接尚未建立之前,就已经部署在通讯双方的系统内了。

优势:1. 不需要依赖公钥体系,不需要部属CA证书。2.不需要涉及非对称加密,TLS协议握手(初始化)时的性能好于前述的RSA和DH。

应用场景:标准是05年的没有进行查阅资料

PSK-rfc4279.pdf

安全依据:共享密钥是预部署的。

方案原理:在通讯【之前】,通讯双方已经预先部署了若干个共享的密钥。为了标识多个密钥,给每一个密钥定义一个唯一的 ID协商的过程很简单:客户端把自己选好的密钥的 ID 告诉服务端。如果服务端在自己的密钥池子中找到这个ID,就用对应的密钥与客户端通讯;否则就报错并中断连接。

方案要求:

存在问题:

  • 安全方面:1.安全风险交付给服务端密钥池子的安全防护上了。2.假冒身份会一直阻塞通讯。
  • 计算开销方面:

改进方案:

PSK 与 RSA 具有某种相似性——既可以用来搞“密钥协商”,也可以用来搞“身份认证”。所以,PSK 可以跟 DH(及其变种)进行组合。例如:DHE-PSK、ECDHE-PSK

补充:基于SRP的密钥协商,SRP是洋文“Secure Remote Password”的缩写。这个算法有点类似于刚才提到的 PSK——只不过client/server双方共享的是比较人性化的密码(password)而不是密钥(key)。该算法采用了一些机制(salt、随机数)来防范“嗅探/sniffer”或“字典猜解攻击”或“重放攻击”。

0 人点赞