更加安全的密钥生成方法Diffie-Hellman
更加安全的密钥生成方法Diffie-Hellman
之前我们谈到了密钥配送的问题,这个世界是如此的危险, 一不小心通信线路就会被监听,那么我们怎么在这种不安全的线路中传递密钥呢?
这里我们介绍一下Diffie-Hellman密钥交换算法。这个算法是由Whitfield Diffie和Martin Hellman在1976年共同发明的一种算法。
通过这个算法,双方只需要交换某些共同的信息就可以生成出共享的密钥。是不是很神奇?
我们看下具体的步骤:
上面的图就是Diffie-Hellman密钥交换算法,假如x要向y发送消息,如果采用上面的算法,那么需要如下几个步骤:
- 生成两个共享的质数 G 和P,并将这两个数在x和y中共享。
P是一个非常大的质数,而G是P的生成元(生成元的乘方结果和1~P-1中的数字是一一对应的)。
这两个数G和P不需要保密。被窃取也没关系。
- x生成一个随机数A,这个随机数只能x知道。A是一个1~P-2中的一个整数。
- y生成一个随机数B,这个随机数只能y知道。B是一个1~P-2中的一个整数。
- x将GA mod P的结果发给y,这个结果不用保密
- y将GB mod P的结果发给x,这个结果不用保密
- x使用步骤5的结果和随机数A计算最终的共享密钥(GB mod P)A mod P = GA*B mod P
- y使用步骤4的结果和随机数B计算最终的共享密钥(GA mod P)B mod P = GA*B mod P
我们可以看到6和7算出来的最终的密钥是一样的。
接下来,我们探讨下Diffie-Hellman算法的安全性:
在该算法中,暴露在外部的变量是P,G,GA mod P和GB mod P 这4个变量。
根据这四个变量来生成最终的GA*B mod P是非常困难的。
这个问题涉及到了离散对数问题,要解决是非常困难的。所以,我们可以相信Diffie-Hellman算法是非常安全的。
更多内容请访问 http://www.flydean.com/diffie-hellman/
更加安全的密钥生成方法Diffie-Hellman的更多相关文章
- 深入浅出Diffie–Hellman
一.作者 这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie).马丁·赫尔曼(Martin Edward Hellman)于1976年发表. 二.说明 它是一种安全协 ...
- 浅析Diffie–Hellman
一.作者 这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie).马丁·赫尔曼(Martin Edward Hellman)于1976年发表. 二.说明 它是一种安全协 ...
- 非对称加密技术里面,最近出现了一种奇葩的密钥生成技术,iFace人脸密钥技术
要说到非对称加密技术啊,得先说说对称加密技术 什么是对称加密技术 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密. 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称 ...
- SSL证书生成方法【转】
转自 SSL证书生成方法 - fyang的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/fyang2007/article/details/6180361 一般情况 ...
- Node.js 内置模块crypto加密模块(4) Diffie Hellman
Diffie-Hellman( DH ):密钥交换协议/算法 ( Diffie-Hellman Key Exchange/Agreement Algorithm ) 百科摘录: Diffie-Hell ...
- 详细分享TortoiseGit配置密钥的方法
详细分享TortoiseGit配置密钥的方法 TortoiseGit 使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥.使用命令ssh-keygen -C "邮箱地址&q ...
- 第十五个知识点:RSA-OAEP和ECIES的密钥生成,加密和解密
第十五个知识点:RSA-OAEP和ECIES的密钥生成,加密和解密 1.RSA-OAEP RSA-OAEP是RSA加密方案和OAEP填充方案的同时使用.现实世界中它们同时使用.(这里介绍的只是&quo ...
- RSA密钥生成与使用
RSA密钥生成与使用 openssl生成工具链接:http://pan.baidu.com/s/1c0v3UxE 密码:uv48 1. 打开openssl密钥生成软件打开 openssl 文件夹下的 ...
- SQL Server开发接口生成方法
为提高开发效率,生成固定格式的接口是必须的,以下以提供新增/修改/删除/读取接口为例: 以常见的表结构为例,特殊表结构可自己尝试去调整方法 主要通过系视图 sys.columns生成方法:为包含列的对 ...
随机推荐
- vi文本编辑器的学习
vi文本编辑器的启动与退出 启动:快捷键Ctrl+Alt+t进入终端, 在系统提示符($或#)的提示下,输入vi <文件名称>,可以自动载入你要编辑的文件或者新建一个文件. 退出:在指令模 ...
- Blazor入门笔记(3)-C#与JS交互
1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.前言 Bl ...
- 关于git你日常工作中会用到的一些东西
前言 git是一个版本控制工具, 版本控制主要的好处有三点: 从当前版本回退到任意版本 查看历史版本 对比两个版本差异 git 相关术语 repository 仓库 branch 分支 summary ...
- MyBatis 学习笔记(2)
1.执行SQL时传递多参数 如果 parameterType 使用 map 类型,即 parameterType="map",那么可以使用注解(@Param)方式传递参数,而最好不 ...
- DALI 48V驱动
DALI-CC-30W-48V技术手册 产品名称:DALI-CC-30W-48V 支持协议:IEC 62386-101:2018,IEC 62386-102:2018,IEC 62386-207:20 ...
- JAVABEAN的SCOPE属性(转载)
对于JSP 程序而言,使用JavaBeans 组件不仅可以封装许多信息,而且还可以将一些 数据处理的逻辑隐藏到JavaBeans 的内部,除此之外,我们还可以设定JavaBeans 的Scope ...
- 最近准备研读thinkphp源码,ctag派上用场了
本人习惯用vim编辑器,这里ctags配置vim很方便. #在ThinkPHP源码目录(假定为/server/thinkphp)执行: $ cd /server/thinkphp $ ctags -R ...
- 《操作系统》课程笔记(Ch01-导论)
Ch01 - 导论 操作系统的功能 用户视角:在乎使用方便,不在乎资源利用 系统视角:资源分配器.控制程序 计算机系统的运行 启动:利用固件(Firmware)中的引导程序(Bootstrap Pro ...
- 阿里云服务器扩展分区和文件系统_Linux数据盘
官方文档永远是最好的 https://help.aliyun.com/document_detail/25452.html?spm=a2c4g.11186623.6.786.5fde4656Ln6AO ...
- 3.K均值算法
一.概念 K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新 ...