【密码学】大整数分解问题和离散对数问题

news2024/11/15 12:03:23

        公钥密码体制的主要思想是通过一种非对称性,即正向计算简单,逆向计算复杂的加密算法设计,来解决安全通信。本文介绍两种在密码学领域内最为人所熟知、应用最为广泛的数学难题——大整数分解问题与离散对数问题

一、大整数分解问题

(1)问题的定义

        假设 𝑁 是一个合数,且 𝑁=𝑝×𝑞,其中 𝑝 和 𝑞 都是大于1的大质数(又叫素数)。大整数分解问题的目标是,仅给定 𝑁,找到 𝑝 和 𝑞。更一般地,问题是找到所有质数因子,而不仅仅局限于两个因子的情况。

【注】质数(Prime Number)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。换句话说,质数只能被1和它自身整除。例如,2、3、5、7、11、13等都是质数。

(2)非对称性的体现

  • 正向计算容易:找到两个大素数并计算它们的乘积是非常简单的。现代计算机可以迅速地找到这样的素数并对它们执行乘法操作。
  • 逆向计算困难:然而,给定𝑛来找出它的两个素数因子𝑝和𝑞是非常困难的。随着𝑛的位数增加,分解𝑛所需的计算资源呈指数级增长。当前的算法,在分解大整数时需要耗费大量的时间和计算能力,这使得在合理的时间内分解大整数变得不切实际。

(3)密钥生成与加解密简述

① 密钥生成算法

        随机选择两个大素数p和q;计算N = p * q;计算欧拉函数\varphi (N) = (p-1) \times (q-1);选择一个整数e,使得1 < e < φ(N),且e与φ(N)互质;计算d作为e关于φ(N)的模逆元,即找到d满足de ≡ 1 (mod φ(N));

  • 公钥是(N, e),其中N是模数,e是加密指数;
  • 私钥是(d, N),其中d是解密指数,N同样是模数。

② 加密算法

发送方使用接收方的公钥(N, e)对明文M进行加密,生成密文C

加密过程通常表示为 C = E(M)= M^e mod N

③ 解密算法

接收方使用自己的私钥(d, N)对密文C进行解密,恢复出明文M

解密过程表示为 M = D(C)=C^d mod N

以RSA为例

二、离散对数问题

(1)问题的定义

        给定一个有限域 G,以及该域中的一个生成元(或称为基)g一个元素 y,离散对数问题可以这样表述:

        对于任意给定的G中的非零元素,找到一个整数x,使得gx次方模上p 等于y,即 g^x mod \ p = y

        如果这样的 x 存在,则称 x 为 y 相对于基 g 的离散对数。这里的“离散”一词,是因为群G通常是一个离散集合,而不是连续的。

【注】G称为模 𝑝 的有限域,其中 𝑝 必须是一个素数。这样所有加法、减法、乘法和除法运算的结果都会被取模 𝑝 来确保结果仍然在这个有限域内。

(2)非对称性的体现

  • 正向计算容易:计算y=g^x mod \ p是非常直接且快速的,可以通过快速幂算法在多项式时间内完成。
  • 逆向计算困难:然而,给定𝑔和𝑦,找到𝑥是非常困难的,特别是在𝑝非常大的情况下。目前没有已知的多项式时间算法能够解决这个问题,尽管存在一些算法可以优化搜索过程,但当𝑝足够大时,这些算法仍然需要指数级的时间。

(3)密钥生成与加解密简述

① 密钥生成算法

以ElGamal加密算法为例。

  1. 选择一个大素数 p 、一个原根 g 和模 p。原根意味着 g 的所有幂次模 p 将遍历所有非零的模 p 的剩余类。

  2. 选择私钥 x,这是一个小于 p-1 的随机整数。

  3. 计算公钥 y,其中 y=g^x mod \ p

公钥是(p,g,y),而私钥是 x

② 加密算法

假设 Alice 想要向 Bob 发送一条消息 m,并且 Bob 的公钥是(p,g,y)

  1. 选择一个随机数 𝑘,其中 1<𝑘<𝑝−1

  2. 计算第一个加密分量 c_1 = g^k mod \ p

  3. 计算第二个加密分量 c_2 = m\cdot y^k mod \ p

加密后的消息是(c1, c2)

③ 解密算法

Bob 收到加密消息后(c1, c2),使用他的私钥 x 来解密:

  1. 计算中间值 s = c_1^x \ mod \ p

  2. 计算消息 m = c_2 \cdot s^{-1} \ mod \ p

这里的 s^{-1}是指 𝑠 在模 𝑝 下的乘法逆元,也就是说,找到一个数 𝑧,使得s \cdot z \equiv 1 \ mod \ p

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

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

相关文章

通过Umijs从0到1搭建一个React项目

有一阵时间没写react了&#xff0c;今天通过umi搭建一个demo项目复习一下react&#xff1b;umi是一个可扩展的企业级前端应用框架&#xff0c;在react市场中还是比较火的一个框架。 Umi官方文档&#xff1a;Umi 介绍 (umijs.org) 一、构建项目。 1、安装包管理工具。 官方推…

使用Go编写的持续下行测速脚本,快速消耗流量且不伤硬盘

介绍 使用go语言编写的持续下行测速脚本,可用于任意平台使用,通过指定URL清单文本文件自动遍历测速,支持多线程,支持多平台 特性 轻量级,无依赖采用内存进行缓存数据,不占用磁盘(如果内存较小请使用gcd项目)&#xff0c;最大程度减少磁盘IO,保护硬盘寿命可自定义最大下载文件…

海外路人采访:提高了广告推广的曝光率-华媒舍

在当今社交媒体和网络广告的世界中&#xff0c;我们经常会听到关于火爆推广的故事&#xff0c;但人们对其背后的机制却知之甚少。本文将通过采访七位路人的经历&#xff0c;揭示这些火爆推广背后的秘密&#xff0c;帮助读者更好地理解和应对这一现象。 路人一&#xff1a;微博热…

vue中el-table单元格复制功能

一、单页面中使用 1.在el-table上绑定单击事件 cell-click“copyText” 或双击事件 cell-dblclick“copyText” 注&#xff1a;cell-dblclick函数有四个参数&#xff0c;分别是row, column, cell, event&#xff1b; row&#xff1a;可看到被其操作单元格所在行的所有的数据&…

前端八股文 对事件循环的理解

对事件循环的理解 思维导图 图示 实际案例的执行过程 总结

网页UI:想让页面更加精致,我来偷偷告诉你7个细节

采用合适的配色方案&#xff1a; 选择一套合适的配色方案&#xff0c;搭配主题色和辅助色&#xff0c;以及不同色调的阴影和渐变效果&#xff0c;可以让网页UI更加丰富、有层次感。 使用合适的字体&#xff1a; 选择适合网页风格的字体&#xff0c;如清晰易读的无衬线字体&a…

typora 两边太宽,设置宽度

步骤&#xff1a; 查看目前使用主题类型 文件 —> 偏好设置 —> 外观 —> 打开主题文件夹 修改对应的主题&#xff1a;max-width

基于 TI AM62 测试 QtWayland 部署

By Toradex秦海 1). 简介 目前主流的 ARM 平台嵌入式 Linux BSP 的显示后端基本都已经从 X11 升级到了 Wayland&#xff0c; 而常用的 Wayland Compositor - Weston 对于 Linux 下常用的 Qt 图形界面开发框架的一些 Plugin (比如 Qt VirtualKeyboard) 的配合并不完善&#xf…

深度学习模型分布式训练

单机单卡训练 单机多卡训练 使用torch.nn.DataParallel方式&#xff0c;修改简单&#xff0c;但单进程效率慢 使用DDP方式&#xff0c;多进程效率高&#xff0c;推荐 多机多卡 模型并行 示例&#xff1a;

基础架构服务API:降低成本,提升业务效益

基础架构服务API的应用可以显著降低企业的成本&#xff0c;并提升业务效益。通过使用这些API&#xff0c;企业可以充分利用云计算、自动化部署和资源管理等功能&#xff0c;从而减少了传统基础设施所需的大量投资和维护成本。这些API还提供了弹性扩展和自动化功能&#xff0c;使…

Linux系统学习 —— 计算机基础(笔记篇)

一、电脑硬件 电脑硬件由输入&#xff0c;控制计算&#xff0c;输出三部分组成。 输入部分包括键鼠&#xff0c;读卡器&#xff08;外部接口&#xff09;&#xff0c;扫描仪&#xff08;打印机的扫描仪&#xff09;。计算控制部分包括CPU &#xff0c; 内存&#xff0c;硬盘&…

【Unity2D 2022:NPC】制作任务系统

一、接受任务 1. 编辑NPC对话脚本&#xff1a; &#xff08;1&#xff09;创建静态布尔变量用来判断ruby是否接受到任务 public class NPCDialog : MonoBehaviour {// 创建全局变量用来判断ruby是否接到任务public static bool receiveTask false; } &#xff08;2&#xff…

EtherCAT笔记(六)—— 分布时钟之一

目录 1. 分布时钟的功能 2. 分布时钟涉及到的概念 2.1 系统时间 2.2 参考时钟 & 从时钟 2.3 主站时钟 2.4 本地时钟 2.4.1 本地时钟的初始偏移量 2.4.2 本地时钟的时钟漂移 2.5 本地系统时间 2.6 传输延时 人们理解知识的一个阻碍就是那些从没见过的概念和这些概念的随意使…

Apache Doris:下一代实时数据仓库

Apache Doris&#xff1a;下一代实时数据仓库 概念架构设计快速的原因——其性能的架构设计、特性和机制基于成本的优化器面向列的数据库的快速点查询数据摄取数据更新服务可用性和数据可靠性跨集群复制多租户管理便于使用半结构化数据分析据仓一体分层存储 词条诞生 概念 Apa…

在攻防演练中遇到的一个“有马蜂的蜜罐”

在攻防演练中遇到的一个“有马蜂的蜜罐” 有趣的结论&#xff0c;请一路看到文章结尾 在前几天的攻防演练中&#xff0c;我跟队友的气氛氛围都很好&#xff0c;有说有笑&#xff0c;恐怕也是全场话最多、笑最多的队伍了。 也是因为我们遇到了许多相当有趣的事情&#xff0c;其…

usbserver工程师手记(二)设置定时任务

概述 部分银行ukey 长时间不使用后会导致休眠&#xff0c;出现虽然有连接&#xff0c;但是读不到证书&#xff0c;可以用定时重置端口的办法&#xff0c;调用接口 http://ip/usb_server/reset_port,参数为 {"port":"B5-1-2","vid_pid":"09…

2023年高教杯数学建模2023B题解析(仅从代码角度出发)

前言 最近博主正在和队友准备九月的数学建模,在做往年的题目&#xff0c;博主主要是负责数据处理&#xff0c;运算以及可视化&#xff0c;这里分享一下自己部分的工作,相关题目以及下面所涉及的代码后续我会作为资源上传 问题求解 第一题 第一题的思路主要如下&#xff1a;…

【雷达原理】数字波束形成(DBF)

目录 一、数字波束形成1.1 DBF原理1.2 工程应用实现方式1.2.1 预先存储权矢量1.2.2 利用DFT/FFT实现DBF 二、DBF应用2.1 通道间相干积累2.2 测量目标角度 三、MATLAB代码 一、数字波束形成 数字波束形成&#xff08;Digital Beam Forming&#xff0c;DBF) 技术&#xff0c;是针…

大数据Spark--核心编程

文章目录 IDEA 配置Spark环境增加scala插件创建Maven项目&#xff0c;配置pom.xml配置log4j.properties Spark 三大数据结构RDDRDD概念核心属性执行原理基础编程RDD创建RDD 并行度与分区RDD转换算子Value类型双Value类型Key - Value类型reduceByKey和groupByKey的区别&#xff…

为什么说java只要还是泛型擦除,就不要吹自己高性能?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;关于“Java只要还是泛型擦除…