离散对数密码学原理

2023-10-27

一 简介

离散对数被誉为当代密码学领域的三大基础之一。1976年,Diffifie和Hellman提出了一种密钥协商协议, 产生了首个离散对数系统模型;8年后,ElGamal提出了基于离散对数系统的公钥加密和签名方法,并奠定了离散对数密码学基础。从那时起,围绕离散对数系统产生了不少研究成果,本文阐述离散对数的基本概念,然后介绍基于离散对数的ElGamal的公钥加密方法和数字签名方法(DSA)。

二 离散对数基本概念

在实数域,对数 x = log ⁡ b a x=\log_b a x=logba表示b为底,目标数为a的幂x,换句话说,对数是求幂x的逆运算,使得 b x = a b^x=a bx=a。假设指数函数 b k ( k ∈ I ) b^k(k \in I) bk(kI)的所有元素组成群G,那么离散对数 l o g b a log_ba logba的值必定为整数k,满足 b k = a b^k=a bk=a。可见,离散对数专指满足幂等条件的整数值,属于数论范畴。不失一般性,通过引入索引 i n d r ind_r indr,可以得到一般形式的定义:
x = i n d r a ( m o d   m ) x=ind_r a(mod \space m) x=indra(mod m)
其中,r是基本根,m是模数,满足gcd(a,m) = 1(a和m互质)。
基于以上定义,引出离散对数问题,即:给定质数p和正整数g,知道 y = g x ( m o d   p ) y=g^x(mod\space p) y=gx(mod p)的值,求解x。这个问题的求解超过多项式时间,难度是相当大的;反过来,知道x,求解 y = g x ( m o d   p ) y=g^x(mod\space p) y=gx(mod p)的速度却相当快。用一句歌词“爱到尽头,覆水难收”来比喻,像极了泼出去的水,把水泼出去很容易,要将地上的水收回来,超级难!
离散对数加密系统正是利用了这一正反向求解难度不相同的原理。

三 基于离散对数的ElGamal的加密方法

离散对数系统的参数构成一个集合,称为与公共参数域(p,q,g),其中p是一个质数,q是p-1的分解质因数,具有阶数q(群元素的个数称为阶,若p是质数,阶为p-1)。

离散对数密钥的产生

设x为私钥,其值为整数,随机且均匀的从区域[1,q-1]中选取,y为公钥。参考前述定义,离散对数问题(DLP)可描述为给定公共参数域(p,q,g)和y,确定x的问题。具有以下关系:
在这里插入图片描述
离散对数参数域产生算法如下。

离散对数参数生成算法

输入:安全参数l(p的长度位数),t(q的长度位数).
输出:离散对数参数域(p,q,g)
1.选取长度位数为l的质数p,长度位数为t的质数q,确保q能够整除p-1;
2.选择基本根g,具有阶数q; 
   2.1 选择任意的整数h,范围在[1,p-1],计算 g = h^(p-1)/q ( mod p).
   2.2 如果 g=1,goto 2.1
3. 返回(p,q,g)   

一个栗子
这里举个栗子,作为对以上算法执行流程的复盘:设l 和 t 同为4,即p和q取值不大于15。假设选p为11,q为质数,且能整除11-1=10,因此q等于5。p,q一旦确定,接下来就可以求g了。 根据步骤2.1,g的取值范围在[1,10],我们从h=1开始逐个数遍历,计算
g = h ( p − 1 ) / q m o d    p = h 2 m o d    11 g=h^{(p-1)/q}\mod p=h^2\mod 11 g=h(p1)/qmodp=h2mod11
通过计算,依次得到这样一组数(h,g):( 1 , 1 ‾ \underline\bold{1,1} 11)(2,4) (3,9)(4,5)(5,3)(6,3)(7,5)(8,9)(9,4)( 10 , 1 ‾ \underline\bold{10,1} 101)。根据步骤2.2,只有第1组和第10组数(黑体下划线)的g=1,不满足选取要求。我们随机取g=3。

下面给出公钥y和私钥x的 产生算法

离散密钥对产生算法:

输入:离散对数公共域(p,q,g)
输出:(y,x)
1. 随机选取私钥x,范围在[1,q-1]
2. 计算 y = g^x mod p
3. 返回(y,x)。在这里插入代码片

继续前一个栗子
在[1,10]的范围内选取x=6,计算 y = 3 6 m o d    11 = 3 y=3^6\mod 11=3 y=36mod11=3,返回 ( x , y ) = ( 6 , 3 ) (x,y)=(6,3) (x,y)=(6,3)

离散对数加密

一切准备就绪,我们现在获得了一组离散对数公有域 ( p , q , g ) = ( 11 , 5 , 3 ) (p,q,g)=(11,5,3) (p,q,g)=(11,5,3),还在此基础上创建了一个公私钥对 ( x , y ) = ( 6 , 3 ) (x,y)=(6,3) (x,y)=(6,3)。离散对数加密的基础就建立起来了。下面轮到我们年轻英俊的主角刘英俊出场了。刘英俊和美如花因为仙界诅咒,一直得不到凡间的祝福。地下恋情得以为继,促使男主人公在不公开恋情的同时,还和女主维系着剪不断理还乱的"亲情“和”友情“。那么怎么向如花传递爱的信号呢?
某日,英俊向如花发了一条信息:“爱到尽头,覆水难收”,为了避开邪恶的损友和多情的闺蜜,他用事先约定的数字密码发送:2406(爱死你了),3344(生生世世)。
设y为如花的提供的公钥,英俊利用y将明文m(24063344)转换成密文c1,具体操作为:
在这里插入图片描述
其中k=2是英俊随机挑选的随机数。计算的结果是 c 1 = 24063344 × ( 3 2 m o d    11 ) = 216 , 570 , 096 c_1=24063344 \times (3^2\mod 11)=216,570,096 c1=24063344×32mod11=216570096
同时,计算参数c2如下:
在这里插入图片描述
结果是 c 2 = 3 2 m o d    11 = 9 c_2=3^2\mod11=9 c2=32mod11=9。随后,英俊将(c1,c2)=(216570096, 9)发给如花。如花用珍藏的私钥x=5计算以下同余公式:
在这里插入图片描述
得到 c 2 = 9 6 m o d    11 = 531441 m o d    11 = 9 c_2=9^6\mod11=531441\mod11=9 c2=96mod11=531441mod11=9。再用 c 2 = 9 c_2=9 c2=9除以c1,就可以计算出明文 m = 216570096 ÷ 9 = 2406 , 3344 m=216570096\div9=2406,3344 m=216570096÷9=2406,3344
下面是具体的证明。
在这里插入图片描述
基本ElGamal加密算法和解密算法分别描述如下:

基础ElGamal加密算法
在这里插入图片描述
基础ElGamal解密算法
在这里插入图片描述

美如花回信“爱你在心口难开”,用同样的方式将信息传递英俊。显然,邪恶损友要恢复明文m,须在已知公共域参数(p,q,g)和y的 前提下计算x,难度之大,足以使2人百年好合,白头偕老。这个任务也被成为Diffie-Hellman问题(DHP)。

四 基于离散对数的ElGamal数字签名

数字签名算法(DSA)是美国标准委员会(NIST)于1991年提出的,被指定为美国联邦信息处理标准(FIPS186)。为了进一步描述数字签名算法,假设签名者具有密钥x,他从整数区间[1,q-1]随机选取整数k,计算如下参数:
在这里插入图片描述
其中h=H(m)是用哈希函数计算的消息摘要。签名者对明文m的签名表示为(r,s)。为验证签名的真实性, 校验者需要根据(r,s)并计算上面公式。然而,校验者没有获得签名者的私钥x和随机数k,自然无法按照公式验签。因此, 需要对上面的公式做一下变形:
在这里插入图片描述
将k带入:
在这里插入图片描述
得到:
在这里插入图片描述
再根据公钥y的定义:
在这里插入图片描述
推导出:
在这里插入图片描述
验证者因此可以通过上式对T进行校验。
离散对数系统签名算法
在这里插入图片描述
离散对数验签的算法在这里插入图片描述

五 总结

离散对数系统建立在有限循环群的基础上,为了增加系统的安全性,人们千方百计扩大质数p的取值范围, 迄今为止,人类发现的已知最大质数是 2 82 , 589 , 933 − 1 2^{82,589,933} − 1 282,589,9331。然而根据欧拉定理,p的值是无穷的。也许通过不断探索,科学家才能够发现迄今算力需要上亿年才能分解的超大型整数。

[1]: Darrel Hankerson (Author), Alfred J. Menezes (Author), Scott Vanstone (Author),Guide to Elliptic Curve Cryptography,book,Springer Professional Computing,2003。
[2]: https://en.wikipedia.org/wiki/Discrete_logarithm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

离散对数密码学原理 的相关文章

随机推荐

  • C语言---栈(详解)---数据结构

    如果要拿数据要先拿最上面的 不允许跳过第一个 拿第二个 先重定义类型 意义前几篇都要讲 就不再赘述 实现栈要用到的头文件 结构体 top是记录栈中现有多少个数据 并且top一直处于栈顶 capacity就是容量大小 如果大于容量大小 那么我
  • 企业电子招标采购系统源码Spring Cloud + Spring Boot + MybatisPlus + Redis + Layui + 前后端分离 + 二次开发

    功能描述 1 门户管理 所有用户可在门户页面查看所有的公告信息及相关的通知信息 主要板块包含 招标公告 非招标公告 系统通知 政策法规 2 立项管理 企业用户可对需要采购的项目进行立项申请 并提交审批 查看所有的立项信息 主要功能包含 招标
  • 最强自动化测试框架Playwright(34)CDPSession

    在 Playwright 中 CDPSession 类是用于与浏览器的 Chrome DevTools Protocol CDP 会话进行交互的对象 CDP 是与Chromium浏览器通信的底层协议 它提供了许多与浏览器进行交互和控制的功能
  • 电动机三相绕组的星形接线法和三角形接线法

    三相异步电动机的定子绕组由U V W三相绕组组成 这三相绕组有6个接线端 它们与接线盒的6个接线柱连接 在接线盒上 可以通过将不同的接线柱短接 来将三相异步电动机定子绕组接成星形或三角形 图1 三相异步电动机接线盒 1 星形接线法 要将定子
  • FutureTask源码解析(详细)

    FutureTask源码解析 详细 首先futuretask实现了Runablefuture接口 此接口声明了run方法 而Runablefuture接口继承了runable和future接口 future接口定义了某些方法比如get获取结
  • listener模式

    监听者模式 一个listenerCenter 每个listener 对不同的传入参数做不同的事情 把这些listener加入Center列表 然后Center执行做什么事情 调用响应的listener执行事情 我只需要让center 广播消
  • 『学Vue2+Vue3』生命周期、工程化开发入门、综合案例-小兔仙首页

    day03 一 今日目标 1 生命周期 生命周期介绍 生命周期的四个阶段 生命周期钩子 声明周期案例 2 综合案例 小黑记账清单 列表渲染 添加 删除 饼图渲染 3 工程化开发入门 工程化开发和脚手架 项目运行流程 组件化 组件注册 4 综
  • 蓝牙Mesh协议三 设备配网

    前言 蓝牙Mesh配网就是通过配网器配置未配网设备 将未配网设备加入网络中 使其成为蓝牙mesh网络的节点 配网数据中包括分发网络密钥 network key 元素单播地址 unicast address 和IV Index 为了提高配网效
  • nmap基础使用

    nmap Nmap包含四项基本功能 主机发现 Host Discovery 端口扫描 Port Scanning 版本侦测 Version Detection 操作系统侦测 Operating System Detection 而这四项功能
  • el-form表单中el-form-item嵌套表格嵌套表单校验

  • spss对数据进行聚类分析(系统聚类法和k-均值聚类法)和判别分析(费歇尔和贝叶斯)。

    为了方便大家理解 以三道题为例 实现聚类分析和判别分析的演示 1 为了研究世界各国森林 草原资源的分布规律 共抽取了21个国家的数据 每个国家4项指标 原始数据见下表 试用该原始数据对国别进行系统聚类和K 均值聚类 分3类 分析 国别 森林
  • 文章发布系统的设计与实现

    摘 要 随着计算机技术的迅速发展 网络正以一种前所未有的冲击力影响着人类的生产和生活 网络的快速发展 颠覆了传统的信息传播方式 冲破了传统的时间 空间的局限性 继而引发了人类阅读方式的变革 现如今 网络阅读已成为一种新的时尚 在这种趋势下
  • ESP8266 WIFI模块实现远程wifi控制

    http www geek workshop com thread 11266 1 1 html http bbs elecfans com forum php mod viewthread tid 536464 http www extr
  • Ubuntu18.04.6 配置固定ip、ssh登录、root账号

    上文讲解了如何下载安装ubuntu https blog csdn net weixin 47491957 article details 128839639 ubuntu在安装完成后 是不能进行ssh登录 且没有root账号 本文带来如何
  • 深入剖析 Python 最常用数据结构:列表(List) & 元组(Tuple)

    1 定义 列表和元组 都是一个可以放置任意数据类型的有序集合 在大多数编程语言中 集合内元素的数据类型必须保持一致 但在 Python 的列表与元组中 没有这个约束 示例 列表 List Tom 22 33 tony 元组 Tuple Ch
  • 网易新闻的api

    一些新闻的api 一 网易 http c m 163 com nc article headline T1348647853363 0 40 html 头条 http c 3g 163 com nc article list T146728
  • 浏览器网页被劫持

    你是否遇到过网页被劫持 正常打开却发现 这种情况能容忍吗 能忍但是没必要 首先打开浏览器网页被劫持不要慌 浏览器右键打开属性 你会发现目标 后面 这里多了一个网址 把它干掉你会发现 大无语事件发生了 好家伙 想直接干掉这个还没权限 右键属性
  • 桌面图标有蓝色阴影终极解决方法

    桌面图标有蓝色阴影 桌面图标背景出现蓝色阴影是怎么回事呢 通常情况下桌面图标变成蓝色背景是由于一些错误的设置而导致的 虽然它不影响系统的正常运行 但是看起来总是不舒服的 网上也有很多处理桌面图标背景出现蓝色阴影的方法 但大都不太全面 引起这
  • Android 手机影音 开发过程记录(四)

    前一篇已经将视频播放页面的布局弄好了 这一篇主要来处理播放页面的各种逻辑 播放 暂停 上 下一个视频 音量 进度 逻辑比较多 一点一点贴代码 顶部布局的逻辑 显示系统时间 时间是一秒一秒更新的 所以可以通过循环发消息的方法来更新系统时间 相
  • 离散对数密码学原理

    一 简介 离散对数被誉为当代密码学领域的三大基础之一 1976年 Diffifie和Hellman提出了一种密钥协商协议 产生了首个离散对数系统模型 8年后 ElGamal提出了基于离散对数系统的公钥加密和签名方法 并奠定了离散对数密码学基