Skip to content

困难问题

出处说明

本文内容摘自外部资源,为方便学员快速学习相关前置数学知识而整理在一起。内容可能较原文有删减,仅保留本课程所需的前置内容,以便学员快速掌握必备知识。

原文链接:https://www.cnblogs.com/zhuowangy2k/p/11901028.html

就像你现在知道的那样,密码学经常依赖于'困难问题'。这也就是说,如果我们假设对手不能在合适的时间内解决某个(数学)问题,那么我们设计的密码学协议的安全性就得到了证明。本文介绍了安全证明中被广泛使用的三个这样的问题

The Discrete Logarithm Problem(DLP)

G为一个阿贝尔群(交换群).首先我们把G中的二元操作写成乘法*.对任何gG 和任何整数a>1ga表示ggg...g,其中g出现了a次.离散对数问题就是(DLP);

给定G,gh=ga,寻找a.

这里a就叫做h的以g为底的离散对数.

一个离散对数问题是难的吗?有时候是,有时候不是.作为反例,令G为加法下的整数.所以现在可以把群运算相加,而不是相乘.因此相同的步骤过后,使用相同的元素g,现在写成了g+g+...+g,这就是说现在这个表达式的和就是h,即h=ag.因此对a来说,仅仅需要用h除以g就可以计算出来.例如'找出以3为底18的离散对数'.我们仅仅需要用18除以3就可以得到a的值.我能够改变这个群运算变成模N的运算.这个问题不会更难.因为我们只需要去解ag=h(mod N),这个我们可以用多项式算法扩展欧几里得先算出g1(mod N),然后a=(g1mod N)h mod N.这不是一个好的安全密码原语.

另一方面,有限域内素数阶乘法下的群(在去掉0之后)即椭圆曲线群都被认为是难的.因为我们还不知道多项式时间的算法来在这些群中找到离散对数.举一个具体的例子,假设我问你'整数模7的乘法群中找到以3为底5的离散对数'.这意味着找到一个整数a,使得3a=5 mod 7.现在我们暴力枚举一下:

33=(32)×32×3=65(mod7)

32=925(mod7)

33=(32)×32×3=65(mod7)

34=(33)×36×3=1845(mod7)

35=(34)×34×3=125(mod7)

因此a=5.这样我们通过反复乘3得到了这种跳来跳去的方法最终获得了结果,这个会让你对DLP困难性有一个直观的认知.如果我们的模数远远大于 7,有成千上万的二进制位,甚至一台电脑要花费很多时间才能解决这个问题.尽管有次指数级的算法,但是没有证明不存在多项式时间内解决DLP的方法.

The Computational Diffie-Hellman Problem(CDH)

一个和DLP问题相关的问题是由Whit Diffie和Martin Hellman提出的两方协商密钥在公共信道上不会被窃取的问题:

  • Alice和Bob共同确定使用的循环群G,和生成元q
  • Alice选择一个随机的密钥整数a,Bob选择了一个随机的整数b
  • Alice计算ga在公共信道上发送给Bob,同时Bob也计算出gb在公共信道上发送给Alice.
  • Alice和Bob都计算gab=(ga)b=(gb)a通过知道他们自己的随机的整数,这个生成的就是他们协商的密钥.

现在gab是一个密钥能被用于Alice和Bob之间的对称加密.但是有一些人窃听了他们之间的交换获得了G,g,ga,gb.因此密钥取决于的这个问题,就叫做 计算DH问题(CDH).

给定G,g,ga,gb,找出gab

CDH是和DLP相关的,但是哪个更难呢?如果我能有效率的解决DLP,那么我就可以找出a,然后轻松的计算出gab就像Bob做的那样,因此我们就解决了CDH.所以我们说能解决DLP那么一定能解决CDH,这就是说DLP至少和CDH一样难.

The Decisional Diffie-Hellman Problem (DDH)

这是另一个离散对数的问题,用于证明难以区分的属性.假如说Alice和Bob执行如上所述的Diffie-Hellman密钥协议,那么G,g,ga,gb都是公共的,gab是密钥.直观上,DDH问题就是是否对手能够从随机的G中的元素区分出Alice和Bob的密钥gab.正是来说:

给定G,g,ga,gbTx使得T0G中随机的一个元素,T1=gab同时x被随机均匀的从{0,1}中选择,找出x.

如果对手能够解决DDH(输出正确的x的概率大于1/2).那么就是说G,ga,gb一定泄露了一些关于gab的信息,使得攻击者能把它从随机的元素中分辨出来,尽管不能直接计算出来.而且很明显,如果对手能解决CDH问题,那么它可以有效率的解决DDH,因为它已经可以得到gab的值.这意味着,CDH至少和DDH一样难.

这就是我们这篇中讨论的三个问题,我们给出了一个简明的证明对他们的困难性进行排序:DLP最难,然后是CDH,最后是DDH.就像我们看到的那样,DLP有时候是简单的,会让CDH和DDH都变简单.因此群G和生成元g的选择在做密码学的时候是十分重要的!