前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识补充1:密钥交换/协商机制

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

原创
作者头像
春风大魔王
修改2020-07-29 18:06:36
5.2K0
修改2020-07-29 18:06:36
举报
文章被收录于专栏:认证协议的形式化分析

密钥交换/协商机制

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

针对以下问题:

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年的没有进行查阅资料

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

方案原理:在通讯【之前】,通讯双方已经预先部署了若干个共享的密钥。为了标识多个密钥,给每一个密钥定义一个唯一的 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”或“字典猜解攻击”或“重放攻击”。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 密钥交换/协商机制
    • 1.有哪些密钥交换协议? 2.工作原理是什么?
      • 靠非对称加密算法
      • 依靠专门的密钥交换算法
      • 依靠通讯双方事先已经共享的“秘密”
    • 3.适应场景是什么?
      • 4.有哪些优、缺点?(侧重安全性),改进方案是什么?
      • Diffie–Hellman密钥交换协议
      • 椭圆加密算法(ECC)及基于“椭圆曲线”的 ECDH
      • 基于 PSK 的密钥协商
      相关产品与服务
      专用宿主机
      专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档