密钥协商这一概念也得以提出。一方面它能为参与者提供身份认证,另一方面,也能与参与者协商并共享会话密钥。
针对以下问题:
原理:拿到公钥的一方先生成随机的会话密钥,然后利用公钥加密它;再把加密结果发给对方,对方用私钥解密;于是双方都得到了会话密钥。
举例:RSA算法应用于密钥交换。
原理:利用正向计算共享秘密简单、逆向求解私钥困难的思路。
举例:DH 算法及其变种
原理:既然双方已经有共享的秘密(这个“秘密”可能已经是一个密钥,也可能只是某个密码/password),只需要根据某种生成算法,就可以让双方产生相同的密钥(并且密钥长度可以任意指定)
举例:PSK 和 SRP
简介: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)是一种公钥加密算法,最初由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的共享密钥。
方案要求:
存在问题:
改进方案:
简介:PSK是“Pre-Shared Key”的缩写。顾名思义,就是【预先】让通讯双方共享一些密钥(通常是【对称加密】的密钥)。所谓的【预先】,就是说,这些密钥在TLS连接尚未建立之前,就已经部署在通讯双方的系统内了。
优势:1. 不需要依赖公钥体系,不需要部属CA证书。2.不需要涉及非对称加密,TLS协议握手(初始化)时的性能好于前述的RSA和DH。
应用场景:标准是05年的没有进行查阅资料
安全依据:共享密钥是预部署的。
方案原理:在通讯【之前】,通讯双方已经预先部署了若干个共享的密钥。为了标识多个密钥,给每一个密钥定义一个唯一的 ID协商的过程很简单:客户端把自己选好的密钥的 ID 告诉服务端。如果服务端在自己的密钥池子中找到这个ID,就用对应的密钥与客户端通讯;否则就报错并中断连接。
方案要求:
存在问题:
改进方案:
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 删除。