前几天和同事讨论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算法图解+数学证明的更多相关文章

  1. SSL握手两大加密算法 : RAS算法 和 DH算法解析

    写下此博客记录心得体会,如有不足之处请指正   先是手稿笔记 :  正文:   在Https协议中,Client端和Server端需要三个参数才能生成SessionKey来加密信息. 三个参数分别是 ...

  2. openswan中DH算法说明

    Author       : Email         : vip_13031075266@163.com Date          : 2021.01.11 Copyright : 未经同意不得 ...

  3. 信息加密之非对称加密DH算法

    非对称加密算法是相对于对称加密算法来说的,对于对称加密算法请查阅之前的总结,今天为大家介绍一下DH算法,DH是一种密钥交换算法,接收方根据发送方加密时的密钥,生成接收方解密密钥.下面就一起来学习一下吧 ...

  4. <算法图解>读书笔记:第1章 算法简介

    阅读书籍:[美]Aditya Bhargava◎著 袁国忠◎译.人民邮电出版社.<算法图解> 第1章 算法简介 1.2 二分查找 一般而言,对于包含n个元素的列表,用二分查找最多需要\(l ...

  5. [转]PLA算法总结及其证明

    PLA算法总结及其证明 http://m.blog.csdn.net/article/details?id=45232891 分类: 机器学习 PLA(Perception Learning Algo ...

  6. Lengauer-Tarjan算法的相关证明

    Lengauer-Tarjan算法的相关证明 0. 约定 为简单起见,下文中的路径均指简单路径(事实上非简单路径不会对结论造成影响). \(V\)代表图的点集,\(E\)代表图的边集,\(T\)代表图 ...

  7. 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网

    任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用  c.分布式算法的实现 d.数据存储技 ...

  8. 算法图解...pdf

    电子书资源:算法图解 书籍简介   本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量.书中的前三章将帮助你打下基础,带你学习二分查找.大O表示法. ...

  9. 一个关于AdaBoost算法的简单证明

    下载本文PDF格式(Academia.edu) 本文给出了机器学习中AdaBoost算法的一个简单初等证明,需要使用的数学工具为微积分-1. Adaboost is a powerful algori ...

随机推荐

  1. GoogleTest死亡测试的跨平台BUG

    最近工作用到了GoogleTest来作单元测试,但是死亡测试的ASSERT_DEATH语句一直跑不通. GoogleTest会启动子进程来运行代码,并捕捉子进程的错误消息,这就是所谓的"死亡 ...

  2. 2021陕西省大学生网络安全技能大赛 Web ez_checkin

    web ez_checkin 进去看了一会,啥也没找到,直接上dirsearch 扫到一个index.php~,打开看一看,是php审计 <?php error_reporting(0); in ...

  3. 背单词(AC自动机+线段树+dp+dfs序)

    G. 背单词 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较   题目描述 给定一张包含N个单词的表,每个单词有个价值W.要求从中选出一个子序列使 ...

  4. 洛谷P3067题解

    题面 首先,对于每个数,有三种状态:选入集合A,选入集合B,或者不选入集合.暴力枚举的时间复杂度是 \(O(n\times3^n)\) ,显然跑不过去. 因此考虑 \(\text{Meet in Mi ...

  5. Discuz ML RCE漏洞

    1.漏洞描述 Discuz国际版漏洞存在于cookie的language可控并且没有严格过滤,导致可以远程代码执行. 2.产生原因:Discuz!ML 系统对cookie中的l接收的language参 ...

  6. RHCE_DAY04

    sed流式编辑器 sed是一个非交互的文本编辑器,实现的功能跟vim相同,主要是对文件内容进行输出.删除.替换.复制.剪切.导入.导出等功能 命令格式1:前置命令 | sed [选项] '[指令]' ...

  7. 985硕艰难转行Android之路 加面经分享

    个人情况介绍 本人为某末流985工科硕士,说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结果每次都阴差阳错,失之交臂,第一次因为那年目标院校大幅度提升初试线,导致差一分未过线,第二次换 ...

  8. ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理

    ABP框架的数据访问底层是基于EFCore(Entity Framework Core)的,是微软标志性且成熟的ORM,因此它本身是支持多种主流数据库MySQL,SqlServer,Oracle,SQ ...

  9. Configure Hosts with Puppet

    According to "Pro Puppet" 2nd edition, Chapter 2, "Creating a Module to Manage SSH&qu ...

  10. JmoVxia

    关于我 网名:季末微夏 英文:JmoVxia 签名:路漫漫其修远兮,吾将上下而求索 标签:iOS开发(ma)工程师(nong).技术爱好者 联系我 邮箱:JmoVxia@gmail.com Githu ...