第十一个知识点: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(mod\space 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)\times3 \equiv 2\times3 = 6 \not\equiv 5\: (\mathrm{mod} \: 7)\)

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

\(3^3 = (3^2)\times3 \equiv 2\times3 = 6 \not\equiv 5\: (\mathrm{mod} \: 7)\)

\(3^4 = (3^3)\times3 \equiv 6\times3 = 18 \equiv 4 \not\equiv 5\: (\mathrm{mod} \: 7)\)

\(3^5 = (3^4)\times3 \equiv 4\times 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\)的选择在做密码学的时候是十分重要的!

第十一个知识点:DLP,CDH和DDH问题都是什么?的更多相关文章

  1. 第五十一个知识点:什么是基于ID的加密的安全模型,然后描述一个IBE方案

    第五十一个知识点:什么是基于ID的加密的安全模型,然后描述一个IBE方案 在公钥密码学中,如果Alice想要给Bob发送一条消息,她需要Bob的公钥,一般来说公钥都很长,就像一个随机的字符串. 假设A ...

  2. 第三十一个知识点:Game Hopping证明

    第三十一个知识点:Game Hopping证明 关于安全证明, 目前主流的方法有安全归约证明 (由 single game 实现) 和 Game Hopping (由 game sequence 实现 ...

  3. 这些HTML、CSS知识点,面试和平时开发都需要 No1-No4

    系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7(知识 ...

  4. 这些HTML、CSS知识点,面试和平时开发都需要 No5-No7

    系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7(知识 ...

  5. 这些HTML、CSS知识点,面试和平时开发都需要 No8-No9

    系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7(知识 ...

  6. 这些HTML、CSS知识点,面试和平时开发都需要 No10-No11

    系列知识点汇总 1.基础篇 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5- ...

  7. 这些HTML、CSS知识点,面试和平时开发都需要 No8-No9(知识点:媒体操作、构建表单)

    系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7(知识 ...

  8. 这些HTML、CSS知识点,面试和平时开发都需要 No10-No11(知识点:表格操作、代码编写规则)

    系列知识点汇总 1.基础篇 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5- ...

  9. 这些HTML、CSS知识点,面试和平时开发都需要 No5-No7(知识点:文字设置、设置背景、数据列表)

    系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7(知识 ...

随机推荐

  1. day18定时任务

    day18定时任务 什么是定时任务 类似日常生活之中的闹钟:主要用于定时执行某些命令,达到定时处理数据的作用. 作用: 1.类似生活中使用的闹钟 2.可以自动完成操作命令 3.定时备份系统数据信息 定 ...

  2. Maven 学习第一步[转载]

    转载至:http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html 什么是 Maven?(摘自百度百科) Maven是Apache的一个 ...

  3. Docker学习(四)——Docker容器连接

    Docker容器连接     容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射. 下面我们来实现通过端口连接到一个docker容器. 1.网络端口映射    ...

  4. shell 截取字符串实例教程

    本节内容:shell字符串截取方法 1,去掉字符串最左边的字符 [root@jbxue ~]$ vi test.sh 1 STR="abcd" 2 STR=${STR#" ...

  5. Redis,Memcache,MongoDb的特点与区别

    Redis Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支 ...

  6. 【C/C++】C++ warning: control reaches end of non-void function return

    控制到达非void函数的结尾. 一些本应带有返回值的函内数到容达结尾后可能并没有返回任何值. 这时候,最好检查一下是否每个控制流都会有返回值. 我是ostream声明的时候没有写return out; ...

  7. ASP.NET管道模型简析

    我相信在第一次听到这个名词时,有的小伙伴会一脸懵,而且还有很多疑问,其实我在第一次接触这个概念时跟很多小伙伴一样一脸懵. 接下来我将以我自己的理解来讲述什么是管道模型. 什么是管道模型 首先有没有小伙 ...

  8. 用Navicat连接数据库-数据库连接(MySQL演示)

    用Navicat连接数据库-数据库连接(MySql演示) 已成功连接,连接方式步骤如下: 开始之前首先准备连接信息: [ 一般你可以自己去配置文件中找 或者 问连接过该数据库的人/所有者(负责人/同学 ...

  9. Apache log4j2-RCE 漏洞复现(CVE-2021-44228)

    Apache log4j2-RCE 漏洞复现 0x01 漏洞简介 Apache Log4j2是一个基于Java的日志记录工具.由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶 ...

  10. [Java Web 王者归来]读书笔记3

    第四章 JSP JSP基本语法 1 JSP中嵌入Java 代码 <% Java code %> 2 JSP中输出 <%= num %> 3 JSP 中的注释 <%-- - ...