第九讲 离散对数
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x im j,这意味着 ( m ) i j。 这就给出
如下计算 x的方法。
2.2 小步大步算法(续)
算 法 1小步大步法 输入:生成元的阶 p 1和元 。 输出: 离散对数 x= log 。 (1) 设置m
p 1 。
(2) 建立一个条目为( j, j )的表, 这里 0 j m。以条目中 的第2项对表排序。 (3) 计算 m 和设置 。 (4) For i from 0 to m 1 do thefollowing: (4.1) 检查 是否为表中某个第 2项 。 (4.2) 如果 j, 则 return( x = i m + j)。 (4.3) 设置 · m。
2 计算离散对数
2.1 穷举搜索
最为简单的求解 DLP的方法是连续计算 0,
1, 2, . . . ,直到得到。这一方法需要 O( p 1) 次乘法,这里 p 1是的阶,因此,当 p取
足够大的值时,这不是 有效方法(这恰好是密 码关注的情形)。
2.2 小步大步算法
令m = p 1 ,这里p 1 是 的阶。小步大步 算法是对穷举搜索方法 在效率和存储之间的 平衡,它的基础是以下 事实。如果 = x,则 我们可以写 x=i m +j,这里 0 i, j m。因此,
2.2 小步大步算法(续)
例 子 2 令p=113 。 = 3 是阶为p 1 = 112 的生成元。考虑 = 57。 计算离散对数 log3 57的过程如下。 (1) 设置m
112 = 11。
(2) 建立一个表,条目是( j, α j (mod p)), 这里0 j 11 ,以条目的 第2项排列表: j 0 1 8 2 5 9 3 3 j (mod113) 1 3 7 9 17 21 27 7 6 10 4 40 51 63 81
2.3 Pollard的Rho算法
模p的群可以被分成 3个规模基本相等的集合 S1,S 2,和S3, 且元落在哪个集合容易 确定。需要对集合的确 定加以关注, 例如, 1 x1,x2, . . . 序列和 S 2。定义如下群元x0 = 1, xi,如果xi S1 2 xi+1 f ( xi ) xi ,如果xi S 2 x ,如果x S i i 3 这里i 0。这一 群元序列按顺序定义了 两个整数序列a0,a1, a2, . . . ,和 b0,b1, b2, . . .,满足xi ai bi,这里i 0。 因此, 有a0 0, b0 0,和
2.3 Pollard的Rho算法(续)
评述. (1) 计算离散对数的P ollard 的rho算法是一个随机算法, 平 均运行时间与小步大步 算法 相当,但是相对小步大 步算 法存储需求可以忽略。 (2) 算 法 2 很少情况会以失败结束 ,此外,计算过程也可 以在 [1 ,p 2]区间随机选择整数a0和b0并以 x0 = a0 b0 为起点。
2.3 Pollard的Rho算法(续)
算 法 2P ollard 的rho算法 输入: 阶为p 1的生成元和元。 输出: 离散对数x= log 。 (1) 设置 x0 1,a0 0, b0 0。 (2) For i 1, 2, . . . do thefollowing: (2.1)使用以前计算了的值 xi 1, ai 1,bi 1,和 x2i 2,a2i 2, b2i 2, 利用前面提到的方程来 计算xi, ai,bi,和x2i,a2i, b2i。 (2.2)如果 xi x2i, 则做如下步骤: 设定 r bi b2i mod( p 1)。 如果 r 0,则算法以失败告终; 否则,计算 x r 1 (a2i ai )mod( p 1)并 return(x)。
2.3 Pollard的Rho算法(续)
i 1 2 3 4 5 6 7 8 9 10 12 13 14 xi 228 279 92 184 205 14 28 256 152 304 121 12 144 ai 0 0 0 1 1 1 2 2 2 3 3 61 6 12 bi 1 2 4 4 5 6 6 7 8 8 9 8 19 x2i 279 184 14 256 304 121 144 235 72 14 256 304 121 a2i 0 1 1 2 3 6 12 48 48 96 97 98 5 10 b2i 2 4 6 7 8 18 38 152 154 118 119 120 51 104
2.2 小步大步算法(续)
评述. 算法1 需要存储 O( p 1) 个群元。表需要 O( p 1)次乘法来建立和 O( p 1 lg p 1)次 比较来排序。建立这个 表以后,步骤(4)需要 O( p 1)次乘法和O( p 1)次查表完成算法。 假定一次乘法需要的时 间多于 lg p 1次比较 需要的时间,那么我们 可以得出算 法 1 需要的 运行时间的明确结论, 也就是小步大步算法 需要O( p 1) 次乘法。
(2) For i from1 to r do thefollowing: (计算xi = l0 + l1 pi lei1 piei 1,这里xi x (mod piei )) (2.1) (简化符号) 设定 q pi 和 e ei。 (2.2) 设定 1 和 l1 0。 (2.3) 计算 ( p 1) /q。 (2.4) (计算l j ) For j from0 to e 1 do thefollowing: 计算
26 216 2 26 9 (mod11) 。
事 实 2DLP的困难性与生成元无关 。 令 和为 有限乘法群Z 上的两个生成元,令
* p
Z 。令x = log , y = log ,和 z = log ,
* p
则 = ( ) 。 结果是x z y mod ( p 1),
2.3 Pollard的Rho算法 (续)
ai,如果xi S1 bi 1,如果xi S1 ai+1 2 ai, 如果xi S 2 和bi+1 2 bi,如果xi S 2 , a 1,如果x S b ,如果x S i 3 i 3 i i 这里i 0。我们可以看到要是两 个群元 xi 和x2i 满足 xi x2i,就有 ai bi a2i b2i,因此, bi b2i a2i ai。 对最后式子两边取以 为底的对数得到 (bi b2i ) · log ≡ (a2i ai ) mod ( p 1)。 假定 bi 方程通常可以有效的确 定离散 b2i mod( p 1), 对数log 。
( p 1)/2 1(mod p )。
因此,
( p 1)/2 x( p 1) / 2 (1) x (mod p )。
如果 ( p 1)/2 1, 则 x是偶数; 否则,x是奇数。 例 子 4假定我们试图解2 x 9(mod11)。 由于
( p 1)/2 95 1(mod11) ,
11 372
38 144
2.4 Pohlig-Hellman算法
事 实 3令为有限乘法群Z * p的生成元,并假定
x, 0 x p 1。
我们可以很容易得到x的最后一比特。 注意 ( ( p 1)/2 ) 2 ( p 1) 1(mod p ),因此 ( p 1)/2 1(mod p )。然而, p 1被ho算法(续)
* 例 子 3 元 2 是乘法群Z 383 阶为n = 191 的子群。假定 * 228 。对Z 383 上的元的分类依据规则 :如果x 1 (mod3),
则x S1;如果x 0 (mod3),则x S 2;如果x 2 (mod3), 则x S3。我们可以计算出 算法2 第2步每一次迭代过程x, ai, bi,x2i, a2i,和b2i的值。 注意x14 = x28 = 144 。最后, 计算 r (b14 b28 ) (mod191) 125 , r 1 1251 (mod191)= 136 , 和r 1 (a28 a14 )(mod191) 110 。因此, log2 228 110 。
(3) 计算 1 31 (mod113) 38,接着计算 m 3811 (mod113) 58。 (4) 对于 i = 0, 1, 2, . . . ,连续计算 = mi (mod113) 直到有一个 值与表中第2行的某个元相等。这一 过程如下: i 0 1 2 3 4 5 6 7 8 9 57 · 58i (mod113) 57 29 100 37 112 55 26 39 2 3 最后,由于 mi 3 1, 100,因此,离散对数为 log3 57 = 100 。
令s为一个整数。有 log ( ) (log + log ) mod ( p 1) 和 log ( s ) s log ( ) mod ( p 1)。
* 例 子 1令p = 11 。 = 2是有限乘法群Z11 上的一个生成元。 * 由于 26 9 (mod11) ,在有限乘法群 Z11 上 log2 9 = 6 。 当然,
x y z y
和 log (log ) (log ) mod(p 1),这里
1
(log ,p 1) 1。 这意味着任何可以计算 以为底数的离散对数算 法同样可以用来计算任 意其它底数的离散对数。
定 义 2 一般离散对数问题(GDLP) 定义如下:给定任 何一个阶为n的有限循环群 G,和其上的生成元 ,以 及元 G,找到整数x, 0 x n 1,满足 x = 。 评述. 一个更一般的GDLP形式可以表述为:给定 一 个有限群G和元, G,找到整数x满足 x = , 这里假定存在。在这种 表述下,没有要求 G是循环群, 也没有要求是G的生成元。这一问题通 常比GDLP更 难于解决。
在 RSA 密码算法中,我们看到如何利用 分解的困难性产生有用的密码系统。另 一个数论问题,称为离散对数问题,也 有相似的应用。Diffie认为离散对数问题 来源于Gill的提示。离散对数问题是公钥 密码学的又一个重要公开困难问题。
本讲提要
离散对数 计算离散对数 ElGamal公钥加密算法 比特承诺
我们可以判定x必为偶数。事实上, x 6。
2.4 Pohlig-Hellman算法(续)
算 法 3P ohlig- Hellman 算法 输入:一个阶为 p 1的生成元和一个元 。 输出: 离散对数x = log 。
e2 (1)找到素数分解p 1 = p1e1 p2 prer ,这里ei 1。
1 离散对数
定 义 1 离散对数问题 (DLP ) 定义如下:给定一个素 数p,
* 有限乘法群Z * 上一个生成元 和一个元 β Z p p,找到整
数x, 0 x p 2,满足 x (mod p),写为x log ( )。
* 事 实 1令是有限乘法群 Z* 上一个生成元, , Z p p。