一 简介
离散对数被誉为当代密码学领域的三大基础之一。1976年,Diffifie和Hellman提出了一种密钥协商协议, 诞生了首个离散对数系统模型;8年后,ElGamal提出了基于离散对数系统的公钥加密和签名方法。这2项工作奠定了离散对数密码学基础。从那时起,围绕离散对数系统研究产生了不少成果,但无一例外都是上述工作的变形。本文首先阐述离散对数的基本概念,然后介绍基于离散对数的ElGamal的公钥加密方法和数字签名方法(DSA),希望为读者呈现离散对数的基本概念,以及其在密码学领域的应用方法。
二 离散对数基本概念
离散对数在数学领域是一个神奇的存在。
在实数域,对数x=logba表示b为底,目标数为a的幂x,换句话说,对数是求幂x的逆运算,使得bx=a。假设指数函数bk(k∈I)的所有元素组成群G,那么离散对数logba的值必定为整数k,满足 bk=a。可见,离散对数专指满足幂等条件的整数值,属于数论范畴。不失一般性,通过引入索引indr,可以得到一般形式的定义:
x=indra(mod m)
其中,r是基本根,m是模数,满足gcd(a,m) = 1(a和m互质)。
基于以上定义,引出离散对数问题,即:给定质数p和正整数g,知道y=gx(mod p)的值,求解x。这个问题的求解超过多项式时间,难度是相当大的;反过来,知道x,求解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)
离散密钥对产生算法:
离散对数加密
离散对数加密方法
设y为接收者的公钥,发送者利用y将明文m转换成密文c1,具体操作为:
其中k是发送者随机选区的随机数。同时,计算参数c2如下:
随后,发送者将(c1,c2)发给接收者,接收者用私钥x计算以下同余公式:
用上式除以c1,就可以计算出明文m。
基本ElGamal加密算法和解密算法分别描述如下:
窥探者要恢复明文m,须在已知公共域参数(p,q,g)和y的 前提下计算,这个任务也被成为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的取值范围, 好在根据欧拉定理,p的值是无限的。这也许是时至今日,科学家仍不断埋头搜索大质数的原因。注: 迄今为止,人类发现的最大质数是2282,589,933−1。
[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
标签:质数,离散,算法,参数,对数,密码学,mod 来源: https://blog.csdn.net/luoqiangok/article/details/105910191
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。