第三十五个知识点:给针对ECDLP问题的Pollard rho,Pollard "Kangaroo",parallel Pollard rho攻击的一个粗略的描述
第三十五个知识点:给针对ECDLP问题的Pollard rho,Pollard "Kangaroo",parallel Pollard rho攻击的一个粗略的描述
我们的目标是对任意一个有限循环阿贝尔群\(G\),解决离散对数问题\(h = g^x\)。问题进行详细描述,给定一个循环群\(G = <g>\),\(G\)的阶是素数\(p\),给定\(G\)中元素\(h\),我们需要找到这样的\(x\)使得\(h = g^x\)成立。我们使用上一篇中的方法进行计算时,时间复杂度是\(O(\sqrt{n})\),但是这个算法也需要\(O(\sqrt{p})\)的时间复杂度。因此,我们对使用使用更小的空间有了需求。这个任务被算法[1]实现了。
1.Pollard's Rho Algorithm
让\(f:S \rightarrow S\)是一个\(S\)到它自身的映射。\(S\)的大小是\(n\)。对于一个随机的值\(x_0 \in S\),对于每个\(i \ge 0\),我们计算\(x_{i+1} = f(x_i)\)。对于每一步来说\(x_{i+1} = f(x_i)\)都是一个确定的函数,我们就得到了一个确定的随机序列\(x_0,x_1,x_2...\)。
因为\(S\)是有限的,我们最终会得到\(x_i=x_j\)因此\(x_{i+1} = f(x_i) = f(x_j) = x_{j+1}\)。因此,序列\(x_0,x_1,x_2...\)将变成一个循环。我们的目标是在上述的序列中找到一个碰撞,就是找到\(i,j\)使得\(i \neq j\)并且\(x_i = x_j\)。
为了寻找一个碰撞,我们使用Floyd's发现算法,给定\((x_1,x_2)\),我们计算\((x_2,x_4)\),然后是\((x_3,x_6)\)等等。例如给定\((x_i,x_{2i})\),我们就可以计算\((x_{i+1},x_{2i+2}) = (f(x_i),f(f(x_{2i}))))\)。当我们发现的时候我们有\(x_m = x_{2m}\)。此时\(m = O(\sqrt{n})\)。(这里计算出来的是当\(f\)为完全随机函数而算出的时间复杂度。)
对于离散对数问题,我们将群\(S\)人为划分成三个组\(S_1,S_2,S_3\)。我们假设\(1 \in S_2\),然后定义下面的随机序列
\begin{aligned}
Q+R_i,R_i \in S_1 \\
2R_i,R_i \in S_2\\
P+R_i,R_i \in S_3
\end{aligned}
\right.\]
\begin{aligned}
a_i,R_i \in S_1 \\
2a_i \mod N ,R_i \in S_2 \\
a_i + 1, R_i \in S_3
\end{aligned}
\right.\]
\begin{aligned}
b_i+1,R_i \in S_1 \\
2b_i \mod N ,R_i \in S_2 \\
b_i, R_i \in S_3
\end{aligned}
\right.\]
然后我们初始化参数\((x_0,a_0,b_0)=(1,0,0)\),我们知道对所有的\(i\),我们有\(log_g(x_i)=a_i+b_i\),\(log_g(h)=a_i+b_ix\)。使用Floyd's算法,我们能找到\(x_m = x_{2m}\)。这样我们就计算出了\(x = \frac{a_{2m}-a_m}{b_m-b_{2m} \mod n}\)。
我们精确的计算,如果\(f\)是完全随机的,那么时间复杂度的期望是\(O(\sqrt{n})\)。
2.Pollard's Kangaroo Method
Pollard's Kangaroo 算法和Rho算法类似,但是它更适合我们知道\(x\)在一定范围,即\(x \in [a,b]\)。
让w = b-a是区间的长度。我们定义一个集合\(S = \{s_0,...s_{k-1}\}\)是一个非降序的序列。这意味着m的值在\(N = \sqrt{w}\)附近。我们通常选择\(s_i = 2^i,0\le i <k\)。因此\(m = 2^k/k,k = 1/2*log_2(m)\)。群被分成了k个子集。我们定义一个随机的序列\(x_{i+1} = x_ig^{s_j},x_i \in S_i\)。
我们计算出确定的随机序列,从\(g_0 = g^b\)
[1] http://www.cs.bris.ac.uk/~nigel/Crypto_Book/book.ps (pages 208 - 214)
第三十五个知识点:给针对ECDLP问题的Pollard rho,Pollard "Kangaroo",parallel Pollard rho攻击的一个粗略的描述的更多相关文章
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- Python进阶(三十五)-Fiddler命令行和HTTP断点调试
Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的se ...
- NeHe OpenGL教程 第三十五课:播放AVI
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!
JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...
- Java进阶(三十五)java int与integer的区别
Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...
- Gradle 1.12用户指南翻译——第三十五章. Sonar 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关
开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...
- “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
随机推荐
- java类加载、对象创建过程
类加载过程: 1, JVM会先去方法区中找有没有相应类的.class存在.如果有,就直接使用:如果没有,则把相关类的.class加载到方法区 2, 在.class加载到方法区时,会分为两部分加载:先加 ...
- JavaScript中var与let的异同点
var是JavaScript刚出现时就存在的变量声明关键字,而let作为ES6才出现的变量声明关键字,无疑两者之间存在着很大的区别.那么具体有哪些区别呢? 1.作用域表现形式不同,var是函数作用域, ...
- absurd, abundant
absurd How: absolutely, completely, clearly, faintly, manifestly, obviously, patently, quite, rather ...
- How To Call An Ambulance
How to Talk to the Emergency Dispatcher [minutesmatter.upmc稻糠亩] How To Call An Ambulance [askambulan ...
- 转 序列化Serializable和Parcelable的区别详解
什么是序列化,为什么要进行序列化 答:对象要进行传输(如:activity 与activity间 ,网络间 进程间等等).存储到本地就必须进行序列化 . 这种可传输的状态就是序列化. 怎么序列化??两 ...
- 虚机扩大容量与vm减少所占容量
Linux的虚拟机碎片整理 sudo dd if=/dev/zero of=/free bs=1M sudo rm -f /free 镜像压缩 移动镜像 VBoxManage internalcomm ...
- Springboot,SSM及SSH的概念、优点、区别及缺点
Springboot的概念: 是提供的全新框架,使用来简化Spring的初始搭建和开发过程,使用了特定的方式来进行配置,让开发人员不在需要定义样板化的配置.此框架不需要配置xml,依赖于像MAVEN这 ...
- scrapy爬取招聘网站,items转换成dict遇到的问题
pipelines代码 1 import json 2 3 class TencentJsonPipeline(object): 4 def __init__(self): 5 self.file = ...
- C++内存管理:new / delete 和 cookie
new 和 delete C++的内存申请和释放是通过 new 和 delete 实现的, 而new 和 delete 其实就是通过 malloc 和 free 实现的. new 申请内存分为三个步骤 ...
- IDE常用插件
IDE 常用插件集合 :