决策 Diffie-Hellman DDH 和 CDH

密码学中的 Diffie-Hellman 问题有几种变体:计算问题 (CDH) 和决策问题 (DDH)。这篇文章将解释两者,并举例说明前者如何困难而后者如何简单。

迪菲-赫尔曼问题
Diffie-Hellman 问题是针对阿贝尔群制定的。我们想到的主要群是非零整数以大素数 p为模的乘法群。但我们从更普遍的角度开始,因为迪菲-赫尔曼问题对于某些群体来说比其他群体更难,正如我们将在下面看到的。

设 g 为群的生成元。当我们将群运算想象为乘法时,这意味着群中的每个元素都是 g的幂。

计算迪菲-赫尔曼问题
设 a 和 b 是两个整数。给定 g a 和 g b,CDH 问题是计算 g ab。请注意,指数是 ab 而不是 a + b。后者很简单:只需将 g a和 g b相乘即可。

为了计算 g ab 我们需要知道 a 或 b,但我们没有给出。求解任一指数都是离散对数问题,这对于某些组来说是不切实际的。

可以想象,有一种方法可以在不解决离散对数问题的情况下解决CDH,但是,此时,对CDH最有效的攻击是计算离散对数。

迪菲-赫尔曼密钥交换
Diffie-Hellman 密钥交换取决于 CDH 是一个难题的假设。

假设 Alice 和 Bob 都同意生成器 g,并分别选择私钥 a 和 b 。Alice 发送 Bob  g a  ,Bob 发送 Alice  g b。这不会泄露他们的私钥,因为离散对数问题(据信是)很难。现在,双方都计算 g ab 并将其用作共享密钥。Alice  通过 g b的a 次方 计算g ab,Bob  通过 g a的b 次方 计算g ab。

如果有人拦截了 Alice 和 Bob 之间的交换,他们将拥有 g a和 g b 并想要计算 g ab。这就是CDH。

当处理以大素数 p为模的整数时,如果 p -1 具有大因子,例如当 p  – 1 = 2 q 对于素数 q时,CDH 会很困难。如果 p -1 只有很小的因子,即如果 p -1 是“平滑的”,那么离散对数问题可以通过 Silver-Pohlig-Hellman 算法来处理 [1]。如果 p 很大并且 p -1 具有很大的质因数,据我们目前所知,CDH 是困难的。

决策迪菲-赫尔曼问题
DDH 问题也从 g a 和 g b的知识开始。但是,它不是要求计算 g ab,而是询问 对于随机选择的 c  ,是否可以以 优于 0.5 的概率区分g ab 和 g c 。

显然,DDH 比 CDH 弱,因为如果我们能够解决 CDH,我们就可以确定地知道 DDH 问题的答案。尽管如此,DDH 问题被认为对某些群体来说是困难的,例如某些椭圆曲线,但对其他群体来说则不然,如下所示。

乘法群 Mod  p的 DDH
假设我们正在处理以素数p为模的非零整数乘法群 。使用勒让德符号(即使对于非常大的数字也可以进行计算),您可以确定 g a 是否是平方 mod  p,当且仅当 a 为偶数时才会发生这种情况。因此,通过计算g a  mod  p的勒让德符号 ,我们知道a的奇偶性 。同理,我们可以求出b的奇偶性 。因此,我们知道 ab的奇偶性。如果 ab 是奇数但 g c 是平方 mod  p,我们知道 DDH 问题的答案是否定的。类似地,如果 ab 是偶数但 g c 不是平方 mod  p,我们也知道 DDH 问题的答案是否定的。

由于一半的正整数 mod  p 是平方,因此我们可以通过上面的奇偶校验参数在一半的情况下确定地回答 DDH 问题。如果我们的平价论证没有结论,我们就必须猜测。所以,总的来说,我们能够以 0.75 的概率正确回答 DDH 问题。

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

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

相关文章

WordPress(安装比子主题文件)zibll-7.5.1

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、新建网站二、配置ssl三.配置伪静态四.上传文件五.添加本地访问前言 提示:这里可以添加本文要记录的大概内容: 首先,我们要先理解什么是授权原理。 原理就是我们大家运营网站,点击授权…

三轴加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据

三轴加速度计LIS2DW12开发.2--轮基于中断信号获取加速度数据 概述视频教学样品申请生成STM32CUBEMX串口配置IIC配置CS和SA0设置INT1设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置开启INT1中断设置传感器的量程配置过滤器链配置电源模式设置输出数据速率中断判断加速…

Android framework定制1-->用户无操作一段时间,自动播放客户提供的视频,用户操作后退出播放

在PowerManagerService.java中监听用户操作,10秒无操作则打开预置的apk播放视频,直接上代码: --- a/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.javab/frameworks/base/services/core/java/com/andr…

Mac卸载、安装Python

卸载 说明 对于删除 Python,我们首先要知道其具体都安装了什么,实际上,在安装 Python 时,其自动生成: Python framework,即 Python 框架;Python 应用目录;指向 Python 的连接。 …

网络冗余保护技术的研究与实现

摘要 .现在网络服务的安全性和可靠性变的越来越重要,如果网络中的网关设备出现问题,将会导致网络不能提供正常的服务。本文利用集群技术一一虚拟路由冗余协议(virtualRouterRedundaneyprotoeol,简称VRRP)来实现网关的高可用性,使得在一台网关设备宕机时,另外一个备份网关会及时…

mazing是什么软件?为什么选择iMazing

说起iOS设备管理工具,可能大家还有点陌生,其实就是Apple公司开发的移动设备,因其的操作系统是独特的iOS系统,所以又叫iOS设备。比如大家都在用的iPhone手机,就是这样类型的一个设备。 mazing是什么软件? iMazing是一…

【Linux】Ubuntu添加root用户

在Ubuntu中,默认情况下是禁用了root用户的登录。如果仍然想要启用root用户,并设置root用户的密码,应按照以下步骤进行操作: 一、输入sudo passwd root设置root用户密码 二、切换root用户 sudo -i su root 这两条命令均可却换至…

Rust语言入门教程(十) - Trait与泛型

Trait 与泛型 欢迎使用并贡献我的开源webhook工具: https://github.com/owenchenxy/rusthook/什么是Trait 在Rust中,没有类继承,或者说没有结构体的继承。但是,大多数的面向对象的语言都是有继承特性的,那Rust还算是一门面向对象的语言吗?实际上没有一个普适的定义来判断…

前端入门(四)Ajax、Promise异步、Axios通信、vue-router路由、组件库

文章目录 AjaxAjax特点 Promise 异步编程(缺)Promise基本使用状态 - PromiseState结果 - PromiseResult AxiosVue中使用AxiosAxios请求方式getpostput和patchdelete并发请求 Vue路由 - vue-router单页面Web应用(single page web application&…

Android HCI日志分析案例2

案例1--蓝牙音箱电量用完后,配对一直失败,提示PIN码不正确 基于MTK平台,通过MTKLogger开启保存HCI日志 问题定位分析 Android日志查看logcat 搜索到关键log 01-20 10:07:55.403760 978 1075 V bt_stack: [VERBOSE2:btm_inq.cc(2032)] …

编程实战:类C语法的编译型脚本解释器(三)

系列入口: 编程实战:类C语法的编译型脚本解释器(系列)-CSDN博客 本文讲解插件(自定义函数)的接口。 一、插件接口 //插件struct CPlugin{string plugin_name;Variable::types plugin_return_type;CPlugin(…

Stream

什么是Stream? 也叫Stream流,是jdk8开始新增的一套API,可以用来操作集合或者数组的数据 优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或数组中的数据&am…

高防服务器的工作原理_Maizyun

随着互联网的快速发展,网络安全问题日益突出。高防服务器作为一种有效的网络安全防御手段,广泛应用于各种网络环境中。本文将详细介绍高防服务器的工作原理,帮助大家更好地理解其作用和优势。 一、高防服务器概述 高防服务器主要是指能够提…

详解Spring工厂是如何获取Aop中的代理对象的

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

Ext4文件系统解析(一)

1、前言 熟悉Linux操作系统的都应该或多或少的了解或者使用过Ext4文件系统。 接下来,会简单介绍Ext4文件系统的一些特性和工作原理。 2、常用概念 在介绍Ext文件系统之前,先简单描述一些相关概念。 块(Block):Ext文件系统存储分配的基本单…

【探索Linux】—— 强大的命令行工具 P.19(多线程 | 线程的概念 | 线程控制 | 分离线程)

阅读导航 引言一、 Linux线程概念1. 什么是线程2. 线程的概念3. 线程与进程的区别4. 线程异常 二、Linux线程控制1. POSIX线程库2. 创建线程 pthread_create() 函数(1)头文件(2)函数原型(3)参数解释&#x…

Spring MVC学习随笔-控制器(Controller)开发详解:控制器跳转与作用域(一)

学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 第五章、SpringMVC控制器开发详解 三 5.1 核心要点 3.流程跳转 5.2 JavaWeb中流程跳转的核心回顾 5.2.1 JavaWeb中流程跳转的核…

[传智杯 #3 初赛] 课程报名

题目描述 传智播客推出了一款课程,并进行了一次促销活动。具体来说就是,课程的初始定价为 v 元;每报名 m 个学员,课程的定价就要提升 a 元。由于课程能够容纳的学生有限,因此报名到 n 人的时候就停止报名。 现在老师…

20231202_python练习_b站视频爬取(selenium浏览器模拟登录版)

首先手工登录一次获取cookies,然后进行数据保存 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By import time import json# 创建Chrome浏览器对象 chrome_opt webdriver.Ch…

网络入门---网络编程初步认识和实践

目录标题 前言准备工作udpserver.hpp成员变量构造函数初始化函数(socket,bind)start函数(recvfrom) udpServer.ccudpClient.hpp构造函数初始化函数run函数(sendto) udpClient.cc测试 前言 在上一篇文章中我们初步的认识了端口号的作用,ip地址和MAC地址在网络通信时…