暗码学之DH秘钥交流协议
DH秘钥交流协议简介
- 遍及咱们都以为公钥暗码体制是迪菲(W.Diffie)和赫尔曼(E.Hellman)发明的!
Diffie-Hellman:一种保证同享KEY安全穿越不安全网络的办法,它是OAKLEY的一个组成部分。Whitefield与Martin Hellman在1976年提出了一个美妙的密钥交流协议,称为Diffie-Hellman密钥交流 协议/算法 (Diffie-Hellman Key Exchange/Agreement Algorithm).这个机制的巧妙在于需求安全通信的两边能够用这个办法确认 对称密钥 。然后能够用这个密钥进行 加密和解密 。但是留意,这个密钥交流协议/算法只能用于密钥的交流,而不能进行音讯的加密和解密。两边确认要用的密钥后,要运用其他对称密钥操作加密算法完成加密和解密音讯。
DHKE 是最早的 公钥协议 之一,它答应两方安全地交流数据,因而有人嗅探两边之间的通信,交流的信息就能够泄露。
Oakley 协议是对Diffie-Hellman密钥交流算法的优化,它保留了后者的长处,同时克服了其弱点。
Diffie–Hellman (DH) 办法是 匿名密钥协商计划 :它答应彼此没有先验常识的两方共同树立 经过不安全通道 的同享密钥。
留意DHKE办法对嗅探进犯(数据阻拦)有抵抗力,但容易遭到man- 中间人进犯(进犯者隐秘中继并或许 改动两方之间的通信 )。
DH秘钥交流协议能够运用 离散对数(经典的 DHKE 算法)完成或运用 椭圆曲线加密([ECDH](en.wikipedia.org/wiki/Ellipt…
Diffie–Hellman Key Exchange 以下简称为 (DHKE)DH秘钥交流协议
经过混合色彩进行密钥交流引出DH秘钥交流思维
DH秘钥交流协议 与“经过混合色彩交流密钥”的概念非常相似,具有很好的视觉表现,简化了其了解。 这就是为什么咱们首先要解说怎么经过混色来交流隐秘色彩。
- 混色密钥交流计划的规划假设 条件:假如咱们有两种不同色彩的液体,咱们能够轻松地混合色彩并取得新的色彩,但反向操作几乎是不或许的:没有办法将色彩分开 混合色彩 康复到它们本来的色彩成分。
这是换色场景,过程如下:
- Alice 和 Bob,就不需求保密的恣意 开始(同享)色彩达到共同(例如 黄色)。
- Alice 和 Bob 别离挑选他们自己保留的隐秘色彩(例如 red 和 sea green)。
- 终究 Alice 和 Bob 将他们的隐秘色彩与他们共同同享的色彩混合在一起。 取得的混合色彩区域准备揭露交流(在咱们的比如中橙色和浅天蓝色)。
得到MIxed colors 之后的后续过程如下:
-
Alice 和 Bob 揭露交流混色。
- 咱们假设没有有用的办法从混合色彩中提取(分离)隐秘色彩,因而知道混合色彩的第三方无法泄漏隐秘色彩。
- 终究,Alice 和Bob 将他们从合作伙伴那里收到的色彩与他们自己的隐秘色彩混合在一起。
- 结果是终究色彩混合(黄棕色),与合作伙伴的色彩混合相同。
- 这个终究混色就是 安全交流的同享密钥 shared key。
假如第三方阻拦了色彩交流过程,那么他们在核算上很难确认隐秘色彩。
总结:
- Alice 和 Bob 具有协同共同的开始色彩,黄色
- Alice 和 Bob交流混合色彩,也就是 公钥
- Alice 和 Bob具有自己的私钥 红色和绿色
- Alice 和 Bob经过开始色彩混合私钥,得到公钥Mixed
- Alice 和 Bob交流公钥(Mixed)
- Alice 和 Bob 公钥+私钥=终究相同的Shared key同享秘钥
- Alice 和 Bob用 Shared key同享秘钥 todo something
DH秘钥交流协议根据类似的概念,但运用 离散对数(discrete logarithms) 和 模幂运算(modular exponentiations) 而不是色彩混合。
Diffie-Hellman 密钥交流 (DHKE) 协议
现在,让咱们解说一下 DHKE 协议是怎么作业的。
DHKE 背面的数学
DHKE 根据 (模幂运算)modular exponentiations 的一个简单属性:
-
(ga)b mod p = (gb)a mod p
-
其间 g、a、b 和 p 是正整数。
-
假如咱们有 A = ga mod p 和 B = gb mod p,咱们能够核算 gab mod p,不显现 a 或 b(称为 隐秘指数)。
-
在核算理论中,这些都不是能够找到隐秘指数的有用算法。 假如咱们有以下等式中的 m、g 和 p:
-
m = gs mod p
-
没有找到隐秘指数 s 的有用(快速)算法。 这被称为 离散对数问题 (DLP)。
离散对数问题 Discrete Logarithm Problem (DLP)
核算机科学中的离散对数问题 (DLP) 定义如下:
- 在暗码学中,许多算法依赖于 DLP 问题的核算难度 在精心挑选的组上,不存在有用的算法。
- 离散对数问题是指从已知的A, g, p,很难求得a,这儿的核算很难的关键是p是个很大的素数,比如1024-bit, 2048-bit, 3076-bit。
DHKE 协议
现在,在咱们熟悉了模幂的上述数学性质后,咱们准备解说DHKE协议。 这是它的作业原理:
让咱们解说一下这个密钥交流过程的实例:
- Alice 和 Bob 同意运用两个公共整数:modulus p 和 base g(其间 p 是 (质数)prime, g 是 原始根模 p)。
- 例如,让 p = 23 和 g = 5。
- 整数 g 和 p 是公共的,通常是源代码中的硬编码常量。
- Alice 挑选一个 隐秘整数 a(例如 a = 4),然后核算并向 Bob 发送数字 A = ga mod p。
- 数字A 是揭露的。 它是经过公共信道发送的,它的阻拦不能泄露隐秘指数a。
- 在咱们的比如中,咱们有:A = 54 mod 23 = 4。
- Bob 挑选一个 隐秘整数 b(例如 b = 3),然后核算并发送给 Alice 数字 B = gb mod p。
- 在咱们的比如中,咱们有:B = 53 mod 23 = 10
- Alice 核算 s = Ba mod p
- 在咱们的比如中:s = 104 mod 23 = 18
- Bob 核算 s = Ab mod p
- 在咱们的比如中:s = 43 mod 23 = 18
- Alice和Bob现在同享一个隐秘号码 s
- s = Ab mod p = Ba mod p = (ga)b mod p = (gb)a mod p = gab mod p = 18
- 同享密钥 s 无法从揭露可用的数字 A 和 B 核算,由于无法有用核算隐秘指数 a 和 b。
在最常见的 DHKE 完成中(遵从 RFC 3526),基数是 g = 2 和模数 p 是一个很大的 质数(1536 … 8192 位)。
DHKE 协议的安全性 Security of the DHKE Protocol
DHKE 协议根据 Diffie-Hellman 问题 的实际难度,它是核算机科学中众所周知的 DLP (离散对数问题),依然没有有用的算法存在。
DHKE 经过不安全的公共(可嗅探)通道(例如经过电缆或经过空气波传播的信号)交流非隐秘整数序列,但不会泄漏隐秘交流的同享私钥.
再次提示,DHKE 协议以其经典方式易遭到 [中间人进犯](en.wikipedia.org/wiki/Man-in… -middle_attack),黑客能够在其间阻拦和修正两边之间交流的音讯。
终究,请留意整数 g、p、a 和 p 通常是非常大的数字(1024、2048 或 4096 位乃至更大),这使得 蛮力进犯 毫无意义。
DHKE – Live Example
As live example, you can play with this online DHKE tool: www.irongeek.com/diffie-hell…
ECDH – 根据椭圆曲线的 Diffie-Hellman 密钥交流协议
The Elliptic-Curve Diffie–Hellman (ECDH) 是一种匿名密钥协商协议,答应两方(每方都有一个椭圆曲线公私密钥对)在不安全的通道上树立同享隐秘。
ECDH 是经典 DHKE 协议的变体,其间模幂核算被椭圆曲线核算替代,以进步安全性。 稍后咱们将具体解说 椭圆曲线暗码(ECC) 部分。
引用
-
Hellman_key_exchange
-
cryptobook.nakov.com
-
en.wikipedia.org/wiki/Man-in…
-
ECDH
-
DLP (离散对数问题 : en.wikipedia.org/wiki/Discre…