DH算法图解+数学证明
前几天和同事讨论IKE密钥交换流程时,提到了Diffie-Hellman交换。DH算法最主要的作用便是在不安全的网络上成功公共密钥(并未传输真实密钥)。但由于对于DH算法的数学原理则不清楚,因此私下对DH算法进行一个简单学习。
1. DH算法的交互流程:

- Alice和Bob都有一个只有自己知道的私钥,在特定规则(g, a, p)下生成自己的公钥A;
- Alice将自己的公钥A,连同g, p共同发给Bob
- Bob在收到Alice发送来的公钥A, g, p后,先使用相同的规则((g, a, p))生成自己的公钥B;在使用Alice的公钥A计算生成共享密钥K
- Bob将自己的公钥B发送给Alice即可。(Alice已经有g, p, 因此无需在发送)
- Alice在接收到Bob的公钥B后,使用相同的规则计算成功共享密钥K
至此,Alice 和 Bob便同时拥有了共享密钥K。此时由于各自的私钥a,b未在互联网上传播,因此即使存在窥探者Eve,他仅通过公开的A\B\g\p在短时间内无法破解出a,b,K。因此DH算法便可以在不安全的网络上协商出密钥,基于此构建安全的加密通道。
2. 疑问:Alice和Bob最后计算的K值一样吗?
对于DH整个交互流程来说,比较简单,基本都可以理解。但是忽然说最后的K值相等,这多少有点突然和难以置信,让人有点猝不及防。
书本上都是这样解释的:

所以Alice和Bob的共享密钥K是相同的。但是,总感觉没有get到要领和精髓。因为我不知道mod(求余)的运算规则,不知道如下等式是否成立???

因此半夜凌晨1点从刚暖热乎的被窝又爬了出来,想要证明下他们给的公式是否正确( 其实当成定理记住也就OK了,不过我嘛,还是爬起来了)。证明这个公式也很简单:将求余运算转换为加减乘除运算,然后利用二项式展开公式便可以得到答案。
至于为什么要将求余运算转换为加减乘除四则运算,原因是我不知道求余算法的规则,不然我也不需要多此一举了。
证明开始:
令:


则:
根据①②式可得:




将③带入上式可得:

使用二项式展开公式将 −∗ 展开,则有


从这个表达式可以看出,前a项(i∈[0,−1])每一项都是p的整数倍,因此求余运算时必定为0,因此:



这下好了,高兴的睡不着觉了。
DH算法图解+数学证明的更多相关文章
- SSL握手两大加密算法 : RAS算法 和 DH算法解析
写下此博客记录心得体会,如有不足之处请指正 先是手稿笔记 : 正文: 在Https协议中,Client端和Server端需要三个参数才能生成SessionKey来加密信息. 三个参数分别是 ...
- openswan中DH算法说明
Author : Email : vip_13031075266@163.com Date : 2021.01.11 Copyright : 未经同意不得 ...
- 信息加密之非对称加密DH算法
非对称加密算法是相对于对称加密算法来说的,对于对称加密算法请查阅之前的总结,今天为大家介绍一下DH算法,DH是一种密钥交换算法,接收方根据发送方加密时的密钥,生成接收方解密密钥.下面就一起来学习一下吧 ...
- <算法图解>读书笔记:第1章 算法简介
阅读书籍:[美]Aditya Bhargava◎著 袁国忠◎译.人民邮电出版社.<算法图解> 第1章 算法简介 1.2 二分查找 一般而言,对于包含n个元素的列表,用二分查找最多需要\(l ...
- [转]PLA算法总结及其证明
PLA算法总结及其证明 http://m.blog.csdn.net/article/details?id=45232891 分类: 机器学习 PLA(Perception Learning Algo ...
- Lengauer-Tarjan算法的相关证明
Lengauer-Tarjan算法的相关证明 0. 约定 为简单起见,下文中的路径均指简单路径(事实上非简单路径不会对结论造成影响). \(V\)代表图的点集,\(E\)代表图的边集,\(T\)代表图 ...
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技 ...
- 算法图解...pdf
电子书资源:算法图解 书籍简介 本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量.书中的前三章将帮助你打下基础,带你学习二分查找.大O表示法. ...
- 一个关于AdaBoost算法的简单证明
下载本文PDF格式(Academia.edu) 本文给出了机器学习中AdaBoost算法的一个简单初等证明,需要使用的数学工具为微积分-1. Adaboost is a powerful algori ...
随机推荐
- GoogleTest死亡测试的跨平台BUG
最近工作用到了GoogleTest来作单元测试,但是死亡测试的ASSERT_DEATH语句一直跑不通. GoogleTest会启动子进程来运行代码,并捕捉子进程的错误消息,这就是所谓的"死亡 ...
- 2021陕西省大学生网络安全技能大赛 Web ez_checkin
web ez_checkin 进去看了一会,啥也没找到,直接上dirsearch 扫到一个index.php~,打开看一看,是php审计 <?php error_reporting(0); in ...
- 背单词(AC自动机+线段树+dp+dfs序)
G. 背单词 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 给定一张包含N个单词的表,每个单词有个价值W.要求从中选出一个子序列使 ...
- 洛谷P3067题解
题面 首先,对于每个数,有三种状态:选入集合A,选入集合B,或者不选入集合.暴力枚举的时间复杂度是 \(O(n\times3^n)\) ,显然跑不过去. 因此考虑 \(\text{Meet in Mi ...
- Discuz ML RCE漏洞
1.漏洞描述 Discuz国际版漏洞存在于cookie的language可控并且没有严格过滤,导致可以远程代码执行. 2.产生原因:Discuz!ML 系统对cookie中的l接收的language参 ...
- RHCE_DAY04
sed流式编辑器 sed是一个非交互的文本编辑器,实现的功能跟vim相同,主要是对文件内容进行输出.删除.替换.复制.剪切.导入.导出等功能 命令格式1:前置命令 | sed [选项] '[指令]' ...
- 985硕艰难转行Android之路 加面经分享
个人情况介绍 本人为某末流985工科硕士,说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结果每次都阴差阳错,失之交臂,第一次因为那年目标院校大幅度提升初试线,导致差一分未过线,第二次换 ...
- ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
ABP框架的数据访问底层是基于EFCore(Entity Framework Core)的,是微软标志性且成熟的ORM,因此它本身是支持多种主流数据库MySQL,SqlServer,Oracle,SQ ...
- Configure Hosts with Puppet
According to "Pro Puppet" 2nd edition, Chapter 2, "Creating a Module to Manage SSH&qu ...
- JmoVxia
关于我 网名:季末微夏 英文:JmoVxia 签名:路漫漫其修远兮,吾将上下而求索 标签:iOS开发(ma)工程师(nong).技术爱好者 联系我 邮箱:JmoVxia@gmail.com Githu ...