ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

DH算法

2022-03-06 12:33:39  阅读:337  来源: 互联网

标签:Mallory DH Alice 秘钥 算法 Bob mod


本文仅作为个人笔记,方便复习
参考链接:
https://blog.csdn.net/nice_wen/article/details/87996526
https://www.cnblogs.com/qcblog/p/9016704.html

概述

Diffie-Hellman密钥协商算法主要解决秘钥配送问题,本身并非用来加密用的;该算法其背后有对应数学理论做支撑,简单来讲就是构造一个复杂的计算难题,使得对该问题的求解在现实的时间内无法快速有效的求解(_computationally infeasible _)。
理解Diffie-Hellman密钥协商的原理并不困难,只需要一点数论方面的知识既可以理解,主要会用到简单的模算术运算、本原根、费马小定理、离散对数等基础数论的知识。

从何而来

DH密钥协商算法在1976年在Whitfield Diffie和Martin Hellman两人合著的论文_New Directions in Cryptography_(Section Ⅲ PUBLIC KEY CRYPTOGRAPHY)中被作为一种公开秘钥分发系统(public key distribution system)被提出来。
在该论文中实际上提出了一些在当时很有创新性的思想。原论文重点讨论两个话题:
(1)在公网通道上如何进行安全的秘钥分派
(2)认证(可以细分为消息认证和用户认证)
为了解决第一个问题,原文提出两种方法:公钥加密系统(public key cryptosystem)和秘钥分发系统(public key distribution system)。对于公钥加密系统,原文只是勾画了一种比较抽象的公钥加密系统的概念模型,重点是加解密采用不同的秘钥,并总结了该系统应该满足的一些特性,相当于是一种思想实验,并没有给出具体的算法实现途径,但这在当时应该来说已经足够吸引人。后来RSA三人组(Ron Rivest、Adi Shamir 和 Leonard Adleman)受此启发,经过许多轮失败的尝试后,于第二年在论文“_A Method for Obtaining Digital Signatures and Public-Key Cryptosystems”_中提出了切实可行且很具体的公钥加密算法--RSA公钥加密算法。而对于秘钥分发系统,就是本文的DH秘钥协商算法

数论基础

离散对数问题

假设a、p均为素数,则有以下等式:

{ a^1 mod p, a^2 mod p, ..., a^(p-1) mod p } = {1, 2, ... , p-1 } {} 表示集合

对于任意一个数 x,若 0 < x < p,则必定存在唯一的 y 使得 x = a^y mod p,其中 0 < y < p。当p很大时,很难求出y,所以它能做为DH秘钥交换的基础。

求模公式:((a^x mod p)^y) mod p = a^xy mod p
证明如下:

假设 a^x = mp + n,其中0<n<p,则
C = ((a^x mod p)^y) mod p
= ((mp+n) mod p)^y mod p
= (n mod p)^y mod p
= n^y mod p
= (mp+n)^y mod p
= a^xy mod p

本原根

如果使得a^m≡1 mod n成立的最小正幂m满足m=φ(n),则称a是n的本原根

例如:3是17的本原根,φ(17) = 16,3^16 = 1 mod 17成立,实际上3,5,6,7,10,11,12,14都是17的本原根

算法流程及原理

image-20220306121139037
假设Alice和Bob希望在不安全的网络环境中协商一个对称密钥进行通信,那么可按如下步骤进行:

1、首先Alice保存自己的私钥a(随机数),Bob也保存自己的私钥b(随机数)
2、Alice计算 A = g^a mod p,并将g,p,A发给Bob
3、Bob计算 B = g^b mod p,然后将B发给Alice
4、Alice得到对称密钥K = B^a mod p = (g^b mod p)^a mod p = g^ab mod p
5、Bob同样得到对称密钥K = A^b mod p = (g^a mod p)^b mod p = g^ab mod p

从此,Alice和Bob得到同样的密钥进行通信,那么窃听者Eve能否破解秘钥呢?首先要知道Eve能够得知哪些信息,显然Eve能够窃听到的信息只能有p,g,A,B。现在的问题是Eve能够通过以上信息计算出K吗?要计算K需要知道a或者b。
以计算a为例,Eve能根据条件g^a mod p=A,计算出A吗?实际上当p是大质数的时候,这是相当困难的,这就是离散对数问题。实际上在论文发表的当时,计算该问题的最有效的算法的时间复杂度大约是O(√p)。也正是求解该问题在计算上的困难程度保证了DH算法的安全性。如果能够找到对数时间复杂度的算法,那么该算法即容易被攻破。

存在的问题

是否DH秘钥协商算法就一定安全呢?应该说也不是,因为存在一种伪装者攻击(或者称为中间人攻击)能够对这种秘钥协商算法构成威胁。
假设秘钥协商过程中,在Alice和Bob中间有一个称为Mallory的主动攻击者,他能够截获Alice和Bob的消息并伪造假消息,考虑如下情况。

1)Alice和Bob已经共享一个素数p及其该素数p的本原根g,当然Mallory监听到报文也得知了这两个消息。
2)此时Alice计算A=g^a mod p,然而在将A发送给Bob的过程中被Mallory拦截,Mallory自己选定一个随机数S,计算S=g^s mod p,然后将S发送给了Bob。
3)同时Bob计算B=g^b mod p,然而在将B发送给Alice的过程中被Mallory拦截,Mallory自己选定一个随机数T,计算T=g^t mod p,然后将T发送给了Alice。

由于通讯消息被替换,Alice计算出的秘钥实际上是Alice和Mallory之间协商秘钥:;Bob计算出的秘钥实际上是Bob与Mallory之间协商的秘钥:。如果之后Alice和Bob用他们计算出的秘钥加密任何信息,Mallory截获之后都能够解密得到明文,而且Mallory完全可以伪装成Alice或者Bob给对方发消息。

标签:Mallory,DH,Alice,秘钥,算法,Bob,mod
来源: https://www.cnblogs.com/cyrui/p/15971307.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有