zoukankan      html  css  js  c++  java
  • 第十一个知识点:DLP,CDH和DDH问题都是什么?

    第十一个知识点:DLP,CDH和DDH问题都是什么

    这是第11篇也是数学背景的第二篇.主要关注群操作如何被用于设计密码基础.

    就像你现在知道的那样,密码学经常依赖于'难问题'.这也就是说,如果我们假设对手不能在合适的时间内解决某个(数学)问题,那么我们设计的密码学协议的安全性就得到了证明.这篇推送介绍了安全证明中被广泛使用的三个这样的问题.对我来说很幸运,a)这只是群理论,不是计算机科学,同时b)两天前我参加了一个由Bristol Crypto研究员Susan Thomson主讲的客座讲座就是恰好这个话题的.(这就是说,下面的任何错误都应该归咎于她!)

    The Discrete Logarithm Problem(DLP)

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

    给定(G,g)(h = g^a),寻找(a).

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

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

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

    (3^3 = (3^2) imes3 equiv 2 imes3 = 6 otequiv 5: (mathrm{mod} : 7))

    (3^2 = 9 equiv 2 otequiv 5 : (mathrm{mod} : 7))

    (3^3 = (3^2) imes3 equiv 2 imes3 = 6 otequiv 5: (mathrm{mod} : 7))

    (3^4 = (3^3) imes3 equiv 6 imes3 = 18 equiv 4 otequiv 5: (mathrm{mod} : 7))

    (3^5 = (3^4) imes3 equiv 4 imes 3 = 12 equiv 5: (mathrm{mod} : 7))

    因此(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计算(g^a)在公共信道上发送给Bob,同时Bob也计算出(g^b)在公共信道上发送给Alice.
    • Alice和Bob都计算(g^{ab}=(g^a)^b=(g^b)^a)通过知道他们自己的随机的整数,这个生成的就是他们协商的密钥.

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

    给定(G,g,g^a,g^b),找出(g^{ab})

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

    The Decisional Diffie-Hellman Problem (DDH)

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

    给定(G,g,g^a,g^b)(T_x)使得(T_0)(G)中随机的一个元素,(T_1=g^{ab})同时(x)被随机均匀的从{0,1}中选择,找出x.

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

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

  • 相关阅读:
    java 基本数据类型的取值范围
    警惕自增的陷阱
    三元操作符的类型务必一致
    不要随便设置随机种子
    优先使用整形池
    IN、ANY、ALL与SOME
    第六章-序列:字符串、列表和元组 笔记
    第十二章-安全性
    第五章-数字 课后答案
    第十一章-约束、视图与事务
  • 原文地址:https://www.cnblogs.com/zhuowangy2k/p/11901028.html
Copyright © 2011-2022 走看看