【密码学基础】Diffie-Hellman密钥交换协议

DH介绍

Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。
这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。
但是注意,这个密钥交换协议 只能用于密钥的交换,而不能进行消息的加密和解密。 双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。
这种秘钥交换技术的目的在于使两个用户安全的协商一个会话密钥。

DH密钥交换流程

  • 步骤1:Alice和Bob共同确定公开的大素数 P P P和一个整数 G G G,其中 G G G P P P的原根
  • 步骤2:Alice选取一个秘密整数 a a a作为私钥,然后对 a a a进行幂模计算,得到公钥 A A A A = G a m o d P A=G^a~\mathrm{mod}~P A=Ga mod P,然后将 A A A发给Bob
  • 步骤3:和Alice一样,Bob选取一个秘密整数 b b b作为私钥,然后对 b b b进行幂模计算,得到公钥 B B B B = G b m o d P B=G^b~\mathrm{mod}~P B=Gb mod P,然后将 B B B发给Alice【 A , B A, B A,B就是所谓的Diffie-Hellman公开值】
  • Alice计算密钥 K 1 = B a m o d P K_1=B^a~\mathrm{mod}~P K1=Ba mod P
  • 和Alice一样,Bob计算密钥 K 2 = A b m o d P K_2=A^b~\mathrm{mod}~P K2=Ab mod P
  • K 1 = B a m o d P = ( G b ) a m o d P = G a b m o d P , K 2 = A b m o d P = ( G a ) b m o d P = G a b m o d P K_1=B^a~\mathrm{mod}~P=(G^b)^a~\mathrm{mod}~P=G^{ab}~\mathrm{mod}~P, K_2=A^b~\mathrm{mod}~P=(G^a)^b~\mathrm{mod}~P=G^{ab}~\mathrm{mod}~P K1=Ba mod P=(Gb)a mod P=Gab mod P,K2=Ab mod P=(Ga)b mod P=Gab mod P,因此, K 1 = K 2 K_1=K_2 K1=K2 K 1 , K 2 K_1, K_2 K1,K2就是所谓的共享密钥】

在这里插入图片描述

安全性分析

对于幂模运算 c = b e m o d m c=b^e~\mathrm{mod}~m c=be mod m,只要给定 b , e , m b, e, m b,e,m,求模幂的过程是非常高效的。另一方面,当 m m m是大素数时,给定 b , c , m b, c, m b,c,m,求指数 e e e的过程是很难的【称为离散对数的难题】。这种单向函数的特性使模幂运算被多次用于密码算法中。

DH通信过程可见,只有 G , P , A , B G, P, A, B G,P,A,B会在传输,而 a , b a, b a,b是不会传输的。同时,因为离散对数的难解,当 G , P G, P G,P选的足够大时,通过 A , B A, B A,B分别推算 a , b a, b a,b是极其困难的。进而,破解出最终的对称密钥K也是极其困难的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试题(每天10题)-------连载(45)

Dubbo篇 1、Dubbo的服务调用流程 2、Dubbo支持那种协议,每种协议的应用场景,优缺点? dubbo: 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者。传输协议 TCP,…

Proteus仿真--射击小游戏仿真设计

本文介绍基于proteus射击小游戏仿真设计(完整仿真源文件及代码见文末链接) 仿真图如下 K1-K4为4个按键,用于上移、下移、确认等,模拟单机游戏 仿真运行视频 Proteus仿真--射击小游戏仿真设计 附完整Proteus仿真资料代码资料 …

ArcGIS界面显示分辨率调整

因为电脑显示分辨率的问题呢,ArcGIS的界面显示会字体显示不合适,出现模糊情况,这时候只需要做个简单的操作设置一下便可以解决! 1、右键ArcMap的快捷启动方式。 2、对应选择兼容性——>更高DPI设置——>勾选替代DPI缩放行为…

体系化学习运筹学基础算法的实践和总结

文章目录 引言目标设计目标实践文章汇总经验总结一则预告 引言 眨眼间已经12月了,眼看着2023年马上要过完了。 女朋友最近总说,工作以后感觉时间过的好快。事实上,我也是这么认为的。年纪越大,越会担心35岁危机的降临。所以&…

Xubuntu16.04系统中使用EDIMAX EW-7822UAC无线网卡开启5G自发AP

目录 1.关于 EDIMAX EW-7822UAC2.驱动安装3.查看无线网卡信息3.通过create_ap配置5G自发AP 1.关于 EDIMAX EW-7822UAC 官网介绍 https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/wireless_adapters_ac1200_dual-band/ew-7822uac/ 详细参数…

Python开发运维:Python项目发布到K8S集群

目录 一、实验 1.Python项目发布到K8S集群 一、实验 1.Python项目发布到K8S集群 (1)获取应用程序代码 #把hello-python.tar.gz压缩包上传到k8s控制节点master1的root下,手动解压 tar zxvf hello-python.tar.gz (2&#xff0…

【Linux】进程周边001之进程概念

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.基本概念 2.描述进程-PCB…

LeetCode5.最长回文子串

昨天和之前打比赛的队友聊天,他说他面百度面到这道算法题,然后他用暴力法解的,面试官让他优化他没优化出来,这道题我之前没写过,我就想看看我能不能用效率高一点的方法把它做出来,我一开始就在想用递归或者…

设计CPU功能的数字电路

实验目的(1)熟悉Multisim 电路仿真软件的操作界面和功能; (2)掌握逻辑电路综合设计,并采用仿真软件进行仿真。 实验内容1.试设计一个简易CPU功能的数字电路,实验至少要求采用4个74HC/HCT194作为4个存储单元(可以预先对存储单元存储数据),74HC283作为计算单元。请实现…

多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-CNN-…

idea本地调试hadoop 遇到的几个问题

1.DEA对MapReduce的toString调用报错:Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc 解决方法:关闭 IDEA 中的启用“ tostring() ”对象视图 2.代码和hdfs路径都对的情况下,程序…

架构设计系列之基础:初探软件架构设计

11 月开始突发奇想,想把自己在公司内部做的技术培训、平时的技术总结等等的内容分享出来,于是就开通了一个 Wechat 订阅号(灸哥漫谈),开始同步发送内容。 今天(12 月 10 日)也同步在 CSDN 上开通…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《面向微电网群的云储能经济-低碳-可靠多目标优化配置方法》

这篇文章的标题涵盖了以下关键信息: 面向微电网群:研究的重点是微电网群,这可能指的是多个微电网系统的集合,而不仅仅是一个单独的微电网。微电网是指由分布式能源资源、储能系统和智能控制组成的小型电力系统,通常能够…

实现加盐加密方法以及java nio中基于MappedByteBuffer操作大文件

自己实现 传统MD5可通过彩虹表暴力破解, 加盐加密算法是一种常用的密码保护方法,它将一个随机字符串(盐)添加到原始密码中,然后再进行加密处理。 1. 每次调用方法产生一个唯一盐值(UUID )密码…

UDS诊断 10服务

文章目录 简介诊断会话切换请求和响应1、请求2、子功能3、肯定响应4、否定响应5、特殊的NRC 为什么划分不同会话报文示例UDS中常用 NRC参考 简介 10服务,即 Diagnostic Session Control(诊断会话控制)服务用于启用服务器中的不同诊断会话&am…

(四) python门面模式

文章目录 4.1 结构型设计模式4.1.1 简介4.1.2 常见的几种结构型设计模式 4.2 理解门面设计模式4.2.1 门面设计模式概述4.2.2 门面设计模式的作用 4.3 UML类图4.3.1 门面4.3.2 系统4.3.3 客户端 4.4 门面模式的代码实现4.4.1 场景:4.4.2 python实现 4.5 原理&#xf…

渲染(iOS渲染过程解析)

渲染 渲染原理 一个硬核硬件科普视频 CPU和GPU CPU(Central Processing Unit):现代计算机整个系统的运算核心、控制核心,适合串行计算。GPU(Graphics Processing Unit):可进行绘图运算工作的…

安防音频接口选型的高性能国产芯片分析

在人工智能兴起之后,安防市场就成为了其全球最大的市场,也是成功落地的最主要场景之一。对于安防应用而言,智慧摄像头、智慧交通、智慧城市等概念的不断涌现,对于芯片产业催生出海量需求。今天,我将为大家梳理GLOBALCH…

Linux——缓冲区与实现C库的fopen,fwrite,fclose

目录 一.缓冲区 1缓冲区的概念 2.缓冲区存在的意义 3.缓冲区刷新策略 4.什么是刷新? C语言的缓冲区在哪里? ​编辑 仿写C库里的fopen,fclose,fwrite。 mystdio.h mystdio.c main.c(向文件中写入20次msg) 一.缓冲区 1…

b站pwn的学习总结

写的很乱 1.c语言的运行过程 了解了c语言需要经过以上2个过程(编译和汇编),才能让机器按指令运行。机器只能听得懂机器码,所以要“汇编”。 那问题就来了,“编译”这个动作有啥用,c语言这种高级语言&…