密码学学习笔记(十八):Diffie–Hellman (DH) 密钥交换
DH算法是第一个密钥交换算法,也是第一个得到形式化描述的公钥密码算法。
群论
DH密钥交换算法基于数学中的群论,群论也是当今大多数公钥密码的基础。
要使集合及其运算成为一个群,需要满足以下性质:
- 封闭性:群中两个元素运算的结果仍是集合中的元素。比如,对于群中的两个元素a和b,a*b也是群中的元素。
- 结合律:多个元素同时进行运算时,可以按任何顺序执行运算。比如,对于群元素a,b和c,a(bc)和(ab)c运算得到的是相同的群元素。
- 单位元:群中有且仅有一个元素是单位元,单位元与群中任一元素运算时都不会改变该元素。例如,我们在乘法群中将单位元定义为1,那么对于任何群元素a,都有a*1=a。
- 逆元:群中的元素均有逆元,群元素及其逆元的运算结果等于单位元。所有的群元素都存在逆元。比如,对于任何群元素a,都存在一个逆元素
,使得
。
模乘
DH密钥交换算法使用模乘这种特殊运算。
模运算可以参考我之前写的博客
密码学学习笔记(七):Modular arithmetic - 模算数_kingofyb的博客-CSDN博客、
DH密钥交换
没有共享密钥的双方可以使用此协议建立共享密钥。
Alice随机挑选在里的a, 计算
mod p并将其发送给Bob。
Bob随机挑选在里的b, 计算
mod p并将其发送给Alice。
现在Alice知道a和所以她可以计算:
mod p
Bob知道b和所以他可以计算同样的S:
mod p
他们有一个共同的秘密𝑆 现在,可以使用KDF计算共享密钥。

密钥交换安全性
- 防窃听安全:
对手可以看到所有通信,并旨在区分密钥和随机密钥。在实践中,对手可能能够拦截和修改通信。比如中间人(MitM)攻击。 - 针对MitM攻击的安全性:
对手可以查看和修改(删除、添加、更改)通信,并旨在区分密钥和随机密钥

DH密钥交换安全性
根据DH密钥交换算法的工作原理,算法参与者需要协商一个素数p和群生成元g作为公共参数。素数p应该尽可能越大越好。由于DH密钥交换算法的安全性基于离散对数问题的困难性,因此对离散对数问题的最佳攻击直接影响到DH算法的安全性。在实践中,通常将p设置为2048比特的素数。
𝑔, 𝑝 是公开的,窃听者也会得到
对于大模量𝑝:
- 用
很难计算得出a或者b - 离散对数(DL)问题
- 用
很难计算得出
- 计算Diffie-Hellman(CDH)问题
- 用
更难计算得出随机值中的
- 决策Diffie-Hellman(DDH)问题
所以这两个短暂的秘密𝑎, 𝑏 以及最终共享的秘密𝑆 对于窃听者来说很难计算𝑆 “看起来很随意”
但是Diffie–Hellman不能保证身份验证,因此不能防止中间人攻击,因此Diffie–Hellman必须始终与身份验证机制一起使用
中间人对抗(Man In The Middle Attack)Diffie–Hellman
中间人(MitM)可以拦截和修改消息,向Alice假装自己是Bob,并向Bob假装自己是Alice
最后,Alice认为她正在与Bob分享一个秘密,Bob认为他正在与Alice分享一个机密,但两人都与密探分享了不同的秘密
如果Alice和Bob使用他们共享的秘密生成通信密钥,MitM可以读取所有内容

相关文章:
密码学学习笔记(十八):Diffie–Hellman (DH) 密钥交换
DH算法是第一个密钥交换算法,也是第一个得到形式化描述的公钥密码算法。 群论 DH密钥交换算法基于数学中的群论,群论也是当今大多数公钥密码的基础。 要使集合及其运算成为一个群,需要满足以下性质: 封闭性:群中两…...
Linux —— 进程间通信(管道)
目录 一,进程间通信 二,管道 匿名管道 命名管道 一,进程间通信 进程间通信(IPC,InterProcess Communication),即在不同进程之间进行信息的传播或交换;由于一般进程用户地址空间是…...
python常用
环境配置 conda Conda自动补全 在终端激活conda环境的时候按tab不能自动补全activate和环境名。安装后可用tab进行补全。 安装 conda-bash-completion 插件:GitHub 安装方法: conda install -c conda-forge conda-bash-completion常用命令 #创建虚拟…...
jeecg如何创建报表并配置到菜单中
当使用jeecg创建单表之后,需要进行报表显示,并把报表配置到菜单中,该如何操作呢?下面进行详细讲解。这里以课程表这张表为例进行讲解。 一.表单创建完成,并配置好菜单栏。具体步骤略,如下图: 二.创建积木报表 1.左侧边栏展开低代码开发菜单,进入报表设计器栏目 2.进…...
Servlet+JDBC实战开发书店项目讲解第12讲:会员管理功能
ServletJDBC实战开发书店项目讲解第12讲:会员管理功能 实现思路: 显示会员列表: 创建一个管理页面,用于显示所有会员的信息。在后端,创建一个Servlet来处理显示会员列表的请求。在该Servlet中,通过JDBC从数…...
java面向对象——继承以及super关键字
继承的概念 1. 被继承的类称为父类(超类),继承父类的类都称为子类(派生类) 2. 继承是指一个对象直接使用另一个对象的属性和方法,但是能继承非私有的属性和方法;(1) 构造方法不能被继承。(2) 但…...
[机缘参悟-101] :IT人 - 遵从世界本源的样子,不带个人情感、道德、认知倾向,接纳一切,你就拥有无限的力量
目录 道的本义 如来的本义 观音的本义 无为而治本质是顺势而为 儒家的本质 感悟: 道的本义本质:天地的力量和运行规律 "天地以万物为刍狗"是出自《道德经》第五十章的一句话。在这句话中,"天地"指的是宇宙&#x…...
C++--深度理解智能指针
PS:智能指针简单应用看这里 http://t.csdn.cn/qN7IK 1.智能指针的介绍 在C中,智能指针有三个版本,分别为: auto_ptr unique_ptr shared_ptr 这三个版本的智能指针中,shared_ptr最为完善,auto_ptr基本上没有太大用…...
Spring Boot使用MySQL的默认连接池
笔者在近期秋招面试的时候被问到了这个问题,现在简单梳理一下便于后期重新回顾,并加深记忆。 Spring Boot 默认使用的数据库连接池是 HikariCP(开源库地址)。 HikariCP 是目前性能最好的连接池之一,它具有高度的性能、可靠性和可扩展性&…...
conda使用教程
Conda介绍 conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理和环境管理。包管理与pip的使用方法类似似,环境管理则是允许用户方便滴安装不同版本的python环境并在不同环境之间快速地切换。 conda的设计理念 conda将几乎所有…...
什么是LLM大语言模型?
什么是LLM大语言模型? 大语言模型(英文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练࿰…...
jenkins同一jar包部署到多台服务器
文章目录 安装插件配置ssh服务构建完成后执行 没有部署过可以跟这个下面的步骤先部署一遍,我这篇主要讲jenkins同一jar包部署到多台服务器 【Jenkins】部署Springboot项目https://blog.csdn.net/qq_39017153/article/details/131901613 安装插件 Publish Over SSH 这…...
(四)Doceke安装MySQL镜像+Docker启动MySQL容器
Doceke安装MySQL镜像/Docker启动MySQL容器 一、doceke安装MySQL镜像 切换到root用户,su root 。 1、启动Docker 启动:sudo systemctl start docker 停止:systemctl stop docker 重启:systemctl restart docker 查看docker运行…...
Android Studio:Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
原项目使用jdk8,升级gradle后出现的该问题。 java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7at org.codehaus.groovy.vmplugin.VMPluginFactory.<clinit>(VMPluginFactory.java:43)at org.codehaus.gro…...
Spring Clould 搜索技术 - elasticsearch
视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) 初识ES-什么是elasticsearch(P77,P78) 1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能…...
android核绑定cpuset配置与检测进程所在核cpuset方法
一、开机阶段 开机有如下阶段。抛开开机动画需要的audio、surfaceflinger等进程,大部分android程序是在/data分区加载完整以后开始加载。所以cpuset的配置可以在 post-fs-data之后。注意,init.rc的不同阶段脚本都可能覆盖前面配置的cpuset。配置好检查与…...
Lnton羚通关于如何使用nanoPC-T4 安装OpenCV?
nanoPC-T4 安装 OpenCV Note: OpenCV has been pre-installed in FriendlyCore/FriendlyDesktop (Version after 201905) and does not require manual installation. Please download the latest FriendlyCore/FriendlyDesktop Image file from the following URL: http://do…...
内存泄漏:前端开发者的噩梦——内存泄露的原因及排查
在前端开发中,内存泄漏是一个常见但令人头疼的问题。它会导致应用程序变得缓慢,不稳定,最终可能崩溃。本文将介绍内存泄漏的概念、常见泄漏原因以及如何排查和预防内存泄漏。 什么是内存泄漏? 内存泄漏是指应用程序中的内存被错…...
高效使用ChatGPT之ChatGPT客户端
ChatGPT客户端,支持Mac, Windows, and Linux 下载地址见文章结尾 软件截图 Windows: Mac: 说明 chatgpt桌面版,相比于网页版的chatgpt,最大的特色是支持历史聊天对话记录导出,且支持三种格式:PNG、PDF、…...
【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据
【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据 文章目录 【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C 存储爬取的QQ音乐歌单数据前言出现的背景一、TDSQL-C数据库是什么?二、TDSQL-C 的特点三、TDSQL-C的应用场景四、基于TD…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
