公钥加密系统与离散对数问题

news/2024/11/30 8:58:41/文章来源:https://www.cnblogs.com/Pizixsir-Math/p/18567292

概念 1 单向函数和陷门信息

单向函数是一种可逆函数,其正向计算容易,但反向计算却非常困难。
安全的公钥加密系统(Public Key Cryptosystem, 简称PKC)基于具有陷门的单向函数。陷门是一种辅助信息,利用它可以轻松计算单向函数的反函数。

“陷门”一词来源于物理或机械陷阱的概念:单向性:就像一个带有单向机关的门,可以轻松通过,但无法轻易逆转回来。陷门信息:如果掌握了打开机关的关键(即陷门信息),逆转就会变得简单。

公钥(或非对称)密码系统的密钥由两个部分组成:私钥 $ k_{\text{priv}} $ 和公钥 $ k_{\text{pub}} \(。在实际中,\) k_{\text{pub}} $ 通常通过某种密钥生成算法从 $ k_{\text{priv}} $ 计算得出。对于每一对公钥/私钥 $ (k_{\text{priv}}, k_{\text{pub}}) $,都存在一个加密算法 $ e_{k_{\text{pub}}} $ 和一个相应的解密算法 $ d_{k_{\text{priv}}} $。加密算法 $ e_{k_{\text{pub}}} $ 是公开的,并且计算简单。同样,解密算法 $ d_{k_{\text{priv}}} $ 对于持有私钥 $ k_{\text{priv}} $ 的人来说计算简单,但对于仅知道公钥 $ k_{\text{pub}} $ 的人来说则非常困难。

人们认为私钥 $ k_{\text{priv}} $ 是函数 $ e_{k_{\text{pub}}} $ 的陷门信息,因为没有陷门信息时,计算 $ e_{k_{\text{pub}}} $ 的逆函数非常困难,但有了陷门信息后,这一计算就变得简单。此外,特别需要注意的是,从 $ k_{\text{priv}} $ 创建 $ k_{\text{pub}} $ 所使用的函数本身必须难以逆向计算,因为 $ k_{\text{pub}} $ 是公开信息,而 $ k_{\text{priv}} $ 允许高效解密。

概念 2 离散对数问题

设 $ p $ 为一个(较大的)素数。由于有限域的乘法群 \(\mathbb{F}_p^*\) 是循环群,取循环群的生成元 \(g\),这意味着 $ \mathbb{F}_p $ 中的每个非零元素都等于 $ g $ 的某个幂次。换句话说,以下元素列表:

\[1, g, g^2, g^3, \dots, g^{p-2} \in \mathbb{F}_p^* \]

是 $ \mathbb{F}_p^* $ 的所有元素的一种排列。

设 $ g $ 是 $ \mathbb{F}_p $ 的一个本原根,且 $ h $ 是 $ \mathbb{F}_p $ 的一个非零元素。离散对数问题(DLP)的定义是找到一个指数 $ x $,使得

\[g^x \equiv h \pmod{p}.\tag{1} \]

我们称 $ x $ 为以 $ g $ 为底的$ h $ 的离散对数,记作 $ \log_g(h) $。

容易证明 \(\log_g(ab) = \log_g(a) + \log_g(b), \quad \forall a, b \in \mathbb{F}_p^*。\),而且由费马小定理可知因此, \(\log _g(h) \pm p-1\) 仍然满足式 \((1)\),所以 \(\log _g(h)\) 通常是在 \(\mathbb{Z}/(p-1)\mathbb{Z}\) 上定义的。离散对数 \(\log _g\) 是一个从乘法群 \(\mathbb{F}_p^*\) 到加法群 \(\mathbb{Z} /(p-1) \mathbb{Z}\) 的群同构。

Diffie–Hellman 密钥交换的思想和算法以及安全性分析

Diffie–Hellman 密钥交换算法解决了以下难题:

问题:
Alice 和 Bob 想要共享一个密钥来用于对称加密,但他们的通信渠道不安全。任何信息交换都会被窃听者 Eve 观察到。在这种情况下,Alice 和 Bob 如何共享一个密钥而不让 Eve 获取它?

解决方法:
Diffie 和 Hellman 利用有限域 $ \mathbb{F}_p^* $ 上离散对数问题的困难性提供了一种可能的解决方案。


算法步骤:

  1. 公开参数选择:
    Alice 和 Bob 共同选择一个大的素数 $ p $ 和一个模 $ p $ 的非零整数 $ g $,并将 $ p $ 和 $ g $ 作为公开信息。例如,他们可以将这些值发布在各自的网站上。因此,Eve 也能获取这些值。

    为了更高的安全性,通常要求所选择的 $ g $ 的阶为有限域 $ \mathbb{F}_p^* $ 中的一个大素数。

  2. 私钥选择:

    • Alice 随机选择一个私密整数 $ a $(称为 Alice 的私钥),并对任何人保密。
    • Bob 随机选择一个私密整数 $ b $(称为 Bob 的私钥),也对任何人保密。
  3. 计算公钥:

    • Alice 计算 $ A \equiv g^a \pmod{p} $ 并将 $ A $ 发送给 Bob。
    • Bob 计算 $ B \equiv g^b \pmod{p} $ 并将 $ B $ 发送给 Alice。

    Eve 通过监听通信渠道可以获得 $ A $ 和 $ B $ 的值。

  4. 计算共享密钥:

    • Alice 使用 Bob 发送的 $ B $ 和自己的私钥 $ a $ 计算 $ K_A \equiv B^a \pmod{p} $。
    • Bob 使用 Alice 发送的 $ A $ 和自己的私钥 $ b $ 计算 $ K_B \equiv A^b \pmod{p} $。

    实际上,计算结果 $ K_A $ 和 $ K_B $ 是相同的,因为:

    \[K_A \equiv B^a \equiv (g^b)^a \equiv g^{ba} \equiv g^{ab} \equiv (g^a)^b \equiv A^b \equiv K_B \pmod{p}. \]

  5. 最终结果:
    Alice 和 Bob 共享的密钥 $ K \equiv g^{ab} \pmod{p} $ 成为后续对称加密的密钥。
    由于 Eve 仅能观察到 $ p \(、\) g \(、\) A $ 和 $ B $,但无法高效地计算 $ a $ 或 $ b $,因此她无法获得共享密钥 $ K $。


Diffie–Hellman 密钥交换算法总结:

步骤 Alice 的操作 Bob 的操作 Eve 的可见信息
1 选择 $ a $,计算 $ A \equiv g^a \pmod{p} $ 选择 $ b $,计算 $ B \equiv g^b \pmod{p} $ $ p, g $
2 发送 $ A $ 发送 $ B $ $ A, B $
3 计算 $ K_A \equiv B^a \pmod{p} $ 计算 $ K_B \equiv A^b \pmod{p} $ 无法计算共享密钥 $ K $

最终,Alice 和 Bob 共享的密钥是 $ K\equiv K_A \equiv K_B \equiv g^{ab} \pmod{p} $。

注意,这种方法仅能实现密钥的秘密共享,而不是信息的秘密传输,因为在过程执行完毕之前 Alice 和 Bob 并不能事先确定所共享的具体密钥。


由于 Diffie–Hellman 密钥交换算法的安全性依赖于离散对数问题(DLP)的困难性,以下是对其安全性的详细分析:

Eve 的挑战(DHP 问题):

  • 已知信息:
    $ g, p, A = g^a \mod p, B = g^b \mod p $
    Eve 需要计算 Alice 和 Bob 的共享密钥 $ g^{ab} \mod p $。

  • 方法 1:解决 DLP
    如果 Eve 能高效解决离散对数问题(DLP),她可以从 $ A = g^a \mod p $ 或 $ B = g^b \mod p $ 推导出 $ a $ 或 $ b $。接着,她可以轻松计算共享密钥 $ g^{ab} \mod p $。

  • 问题所在:
    实际上,Eve 不需要完整地解决 DLP 来计算共享密钥。她面临的问题被定义为 Diffie–Hellman 问题(DHP),这是一个可能更简单的计算任务。


Diffie–Hellman 问题(DHP)的定义:

问题描述:
设 $ p $ 为素数,$ g $ 为整数。已知 $ g^a \mod p $ 和 $ g^b \mod p $,计算 $ g^{ab} \mod p $。


DHP 与 DLP 的关系:

  • DHP 不难于 DLP:
    如果 Eve 能高效解决 DLP,她可以推导出 $ a $ 和 $ b $,然后轻松计算 $ g^{ab} \mod p $。因此,DHP 的难度不超过 DLP。

  • DHP 是否等价于 DLP:
    假设 Eve 有一个高效解决 DHP 的算法,问题是她是否可以利用该算法同样高效地解决 DLP。
    当前结论: 尚不清楚。换句话说,目前没有证据表明 DHP 与 DLP 在计算复杂性上是等价的。


实际安全性:

  • 当前的安全标准建议选择:

    • $ p $ 为一个大约 1000 位的素数(即 $ p \approx 2^{1000} $)。
    • $ g $ 为 $ \mathbb{F}_p^* $ 中一个阶为大素数(大约为 $ p/2 $)的元素。
  • 这些选择使得:

    • 暴力破解 DHPDLP 的计算成本极高
    • 即使 Eve 使用现代计算能力,也无法在合理的时间内解决这些问题。
  • 然而,DLP 和 DHP 之间的复杂性关系仍未完全确定,这是一项重要的研究课题,决定了 Diffie–Hellman 算法的长期安全性。


总结:Diffie–Hellman 算法的安全性主要依赖于 DHP 的计算难度,而 DHP 不难于 DLP。尽管解决 DHP 并不需要完整解决 DLP,但尚未明确两者是否是同等难度的计算问题。这是 Diffie–Hellman 算法安全性研究的一个核心问题。

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

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

相关文章

ljnljn小站上线啦

站内设有多个Web靶场以及Cyberchef,欢迎大家前来遛遛~ 地址:http://8.130.110.67/

周末基于 .NET 9 + K8S 写了个 MockHttp

MockHTTP MockHTTP 可以将现有HTTP转换成GET请求,设置cron定时调用,自定义代码去格式化数据,通知到你的邮箱里。 比如每天早上时自动获取博客园文章列表,天气下雨时通知,各类签到等 Request 创建一个请求 可以使用VSCode或VS,创建一个.http文件 POST https://www.wdora.c…

CentOS7.9无图形桌面安装chromedriver、chrome、drissionpage

由于centos7 停止维护,在安装google浏览器就因为版本和下载源的问题走了不少弯路,踩了一些坑。 原操作: sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmyum install google-chrome-stable_current_x86_64.rpm出现错误缺少glibc_2.…

轻松掌控:免越狱iOS设备的群控与单控功能详解

在当今的数字化时代,高效管理多台iOS设备成为企业和个人用户的一项重要需求。无论是为了提高团队协作效率,还是为了执行大规模的营销活动,免越狱的iOS设备群控与单控功能都提供了强大且安全的解决方案。本章将详细介绍如何利用这些功能,轻松实现对多台iOS设备的有效管理。免…

详解“日切”原理

探索支付领域的奥秘,深入了解日切的复杂世界。在这篇文章将带我们穿越历史的长河,从早期的钱庄货币到现代银行体系,全面解析日切的演变、挑战和实现模式。我想很多人都不陌生,但日切究竟是如何实现的,日切前后及过程中都发生了什么,需要做哪些事情;不同的年代、不同的机…

Windows Server 2025激活教程

Windows Server 如何把评估版升级改为正式版本并激活微软官方并不提供server系统的正式版本,只提供测试的评估版本,那么我们怎么修改为正式版本呢?1.确认版本开始————运行————CMD(管理员模式)cmd命令页面输入:winver 会弹出版本页面 查看具体为数据中心版还是标准…

《花100块做个摸鱼小网站! 》第十篇—响应式布局适配PC端和移动端

⭐️基础链接导航⭐️ 服务器 → ☁️ 阿里云活动地址 看样例 → 🐟 摸鱼小网站地址 学代码 → 💻 源码库地址一、前言 大家好呀,我是summo,小网站一直有个问题,就是PC端的样式和移动端的样式是两套,并且不能根据显示屏的大小进行动态化布局,如果PC端屏幕非常小就是这…

HCIA-09 VLAN原理与配置

主要介绍了虚拟局域网 (VLAN)的相关技术知识,包括:VLAN的作用,VLAN的标识及划分,VLAN的数据交互,VLAN的实际规划和应用,以及VLAN的相关基本配置。 通过VLAN技术,可以将物理的局域网划分成多个广播域,实现同一VLAN内的网络设备可以直接进行二层通信,不同VLAN内的设备不…

vxe-modal 实现窗口拖拽调整宽高

vxe-modal 实现窗口拖拽调整宽高 官网:https://vxeui.com<template><div><vxe-button content="点击弹出" @click="showPopup = true"></vxe-button><vxe-modal v-model="showPopup" title="标题1" :widt…

Tarjan学习笔记

强连通分量,缩点算法:Tarjan 代码及模板 强连通图:有向图,任意两点有路径 强连通分量:有向图,强连通子图数量 前置知识:dfs树(dfs序构成的树) 成分: 1.树边:dfs树上的边 (以下三种边是dfs树上没有但原图上有的边) 2.前向边:dfs树的祖先到儿子的边。 3.返祖边(后…

Mysql 数据库并发事物导致ABA问题排查解决

问题描述 一个更新计费参数接口,按钮连点导致数据未更新问题。 背景 接口内容逻辑,在一个事物内,先保存更新计费参数,再根据计费参数,重新计算费用,并刷新计费单,结算单,支付单等单据金额信息。按理来讲,这个接口是具备幂等性的,因为即便多次更新,也只是重新计算一遍…

工程化开发谷歌插件到底有爽

工程化开发谷歌插件到底有爽谷歌插件开发本质上就是写一些 html + js + css谷歌开发心得吧 manifest.json 文件{"manifest_version": 3,"name": "发布助手","version": "3.0","description": "前端资源监测&…