基于离散对数问题的公钥密码体制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六节
基于离散对数问题的公钥密码体制
ElGamal密码体制
ElGamal公钥体制的安全性依赖于计算有限域上离散对数(discrete logarithm)的困难性。

因为用该体制加密的密文依赖于明文和加密者选取的随机数, 所以这种密码算法是非确定性的。

以有限乘法(或加法)群(G ,•)为数学环境,n 阶循环群为工具。

实例:乘法群(G , •),一个n 阶元素α∈G 和元素β∈<α>问题:找到惟一的整数a , 0 ≤a ≤n −1, 满足:αa =β
我们将这个整数记为log αβ。

离散对数问题
在密码学中主要应用离散对数问题的如下性质:求解离散对数是困难的,而其逆运算指数运算可以应用平方-乘的方法有效的计算出来。

换句话说,在相应的群G中,指数函数是单向函数。

ElGamal公钥密码体制
•第一个同时也是最著名的公钥密码体制。

•在ElGamal密码体制中,加密运算是随机的,因密文既依赖于明文x,又依赖于选择的随机数k,所以,对于同一个明文,会有许多(p−1个)可能的密文。

•ElGamal密码体制的加密算法有数据扩展。

设p 是一个素数,使得群*(,)⋅Z p
上的离散对数是难处理的。

*
α∈Z p 是*Z p 的一个本原元。

令***,==×Z Z Z p p p M C 。

定义
{(,,,)|(mod )}αββα=≡a
K p a p
其中1a p <−是随机选取的。

公开密钥为,p α和β。

α和p 可由一组用户共享。

私人密钥为a 。

如果用户A要对消息m进行加密, 先将m按照模p 进行分组,使每组都小于p(以下仍将m视为其中的一组)。

然后随机选取数x使gcd(x, p −1) =1。

计算
(mod )(mod )
αβ⎧≡⎨≡⋅⎩12x
x y p y m p 则密文
(,)(==1k c E m x y ,)2y 这里,密文是*p
Z 中元素对12(,)y y ,故密文的大小恰为明文
的两倍。

当用户B 收到用他的公钥加密的消息12(,)y y 时, 他用自已的私人密钥'
k a =计算: '(,)()(mod )−≡1
1221
a k D y y y y p (mod )(mod )
12x
x y p y m p αβ⎧≡⎨≡⋅⎩
因为
D k′(
E k(m, x)) ≡D k′(y1, y2) ≡mβx(αax)−1≡m mod p
所以用户B可以有效地解密任何用户用他的公开密钥加密的消息。

很显然,如果攻击者O 可以计算a = log αβ,那么ElGamal 公钥密码体制就是不安全的,因为那时O 可以像B 一样解密用该体制加密的密文。

因此,ElGamal 公钥密码体制安全的一个必要条件就是上的离散对数是难处理的。

*Z p
p 应选择的很大,且α应是模p 的本原元,p −1应该至少具有一个“较大”的素因子。

本节中,我们假设(G , •)是一个乘法群,α∈G 是一个n 阶元素,β∈<α >。

1. 穷举法:计算23,,,"ααα直到发现a
βα=。

需要O (n )的时间和O (1)的空间穷举搜索。

O (e lnn )指数时间
离散对数问题的算法
2. 列表法
预先计算出所有可能的值i α,并对有序对(,)αi
i 以第二个坐标排序列表,然后,给定β我们对存储的列表实施一个二分搜索,直到找到a 使得a βα=。

这需要O (1)的时间、O (n )步预计算和O (n )存储空间解决。

Shanks算法
构造两个数组(j, αm j), j= 0…m−1和(i, βα−i), i= 0…m−1把数组按第二作标排序,然后找到两个具有相同第二作标的对,使得
αm j=y =βα−i
αm j + i=β
logαβ=mj+i
因为logαβ≤m(m−1) +m−1=m2−1 ≤n−1,所以m取⎡n⎤。

这个算法运行时间为O(m) =O(n1/2),存储空间为O(m) =O(n1/2)。

设p 是一个素数,使得群⋅*
(Z ,)p
上的离散对数是难处理的。

*
∈Z p α是*Z p
的一个本原元。

设 β = αa
(mod p ),
那么
0 ≤ O (β) =1a p <−.
如果能求出a (mod(p −1)), 我们就得到了离散对数a = log α β
Pohlig-Hellman 算法

11i k
c i
i p q =−=∏ 这里(1)i q i k ≤≤是不同的素数. 因为p F 上离散对数log a αβ=模p −1唯一确定, 所以, 如果对每个(1)i i k ≤≤能计算出(mod )i c i
a q 。

我们可以得到线性同余方程组:
111
(mod ).......................(mod )k c c k k a x q a x q ⎧≡⎪⎨⎪≡⎩
由中国剩余定理可以计算出(mod(1))a p −.
(1) 假设q 是素数,先求
a (mod q c )= log αβ(mod q c ) = 10c i i i a q −=∑, 其中q 为素数,
n ≡ 0(mod q c ),且n ≡/ 0(mod q c +1)。

求解过程如下:我们可以有如下等式
a =
10c i i i a q −=∑+sq c
可以证明 βn /q = αa 0n /q (*)
所以当β已知时,可以通过计算γ = αn/q, γ2,….,直到对于某个i≤q−1,使得γi= β n/q,得到a0 = i (<q)。

设β0 = β , 递归定义对于0 ≤j ≤c−1
βj+1 = βα− (a0+a1q+…+a j q j) = βjα−a j q j
可以证明类似(*)结论:βj n/q j+1 = αa j n/q
所以可以用与上同样的方法,由βj 求得a j 。

这样我们就建立了一个计算链:
β = β0→a 0→β1→a 1→…. →βc −1 →a c -1。

从而完成
a (mod q c ) = log αβ(mod q c ) = 1
0c i i i a q −=∑
的求解。

(2) 再根据中国剩余定理求出a = logαβ(mod n)
算法的直接运算时间是O(cq),元素αn/q的阶数是q,所以每个i(i = logαn/qδ)可以用O(q) 时间计算,这样算法的复杂性可以降到O(c q)。

指数演算法
前面四个算法可以用于任何群, 指数演算法用于计算Z p*的离散对数的特殊情况, 其中p是素数, α是模p的本原元.
这个方法需要一个因子基. 因子基是由一些“小”素数组成的集合B. 假定B={p1, p2,… p B}.
第一步(预处理), 计算因子基中B个素数的离散对数 {logαp1, logαp2,…, logαp B}.
第二步, 利用这些因子基的离散对数, 计算所要求得离散对数,如下:
选择随机数s (1 ≤s ≤p−2), 计算γ≡βαs (mod p), 若能在因子基上分解γ, 则βαs≡p1c1 p2c2…p b cb(mod p)等价于logαβ + s ≡c1logαp1+….+ c b logαp b (mod p−1)

logαβ≡c1logαp1+….+ c b logαp b−s (mod p−1).
椭圆曲线密码体制
椭园曲线(Elliptic curve)理论是一个古老而深奥的数学分支,已有100多年的历史,一直作为一门纯理论学科被少数数学家掌握。

它被广大科技工作者了解要归功于20世纪80年代的两件重要的工作。

z Weil应用椭园曲线理论证明了著名的费尔马大定理.
z Neal Koblitz和ler把椭园曲线群引入公钥密码理论中,提出了椭园曲线公钥密码体制
(Elliptic Curves Cryptosystem, ECC),取得了公钥密码理论和应用的突破性进展。

20世纪90年代,最通用的公钥密码体制是RSA 公钥密码体制和Diffie-Hellman公钥交换算法。

其密钥长度一般为512比特。

1999年8月22日RSA-512被攻破,所以,这些公钥不得不被加长。

为了达到对称密钥128比特的安全水平,NIST推荐使用1024比特的RSA密钥。

显然,这种密钥长度的增长,对本来计算速度缓慢的RSA来说,无疑是雪上加霜。

实现了密钥效率的重大突破?
ECC的提出改变了这种状况,实现了密钥效率的重大突破,大有以强大的短密钥优势取代RSA成为新一代公钥标准(事实标准)之势。

因此,椭园曲线公钥密码体制的研究已越来越引起人们的广泛关注。

该公钥体制不仅在理论上有其独特的研究价值, 而且它的密钥长度短, 易于分配和贮存, 且所有用户都可选择同一个有限域F上不同的椭园曲线,使所有用户使用同样的硬件来完成运算。

椭园曲线密码体制是基于求解椭园曲线离散对数问题(ECDLP)的困难性。

一般认为160比特椭
上离园曲线上离散对数难解性,相当于1880比特Z
p
散对数难解性。

导致如此大差异的原因是,对椭圆曲线离散对数没有已知的指数演算攻击。

其结果,椭圆曲线密码在实际应用中越来越流行,在诸如无限装置和智能卡这些受限平台上的应用尤其如此。

这类平台的可用存储空间非常小。

由于椭圆曲线密码在实际应用中的重要性,椭圆曲线上的离散对数问题近年来受到极大的关注。

为了激励实现有效的离散对数算法,Certicon公司发出了一系列的“挑战”。

109上的椭最近解决得比较困难的挑战是定义在F
2
圆曲线离散对数算法。

这个挑战称为ECC2K-108,他联合了40个国家的9500台计算机于2000年4月解决的。

花费的时间大约是解决名为RSA-512的RSA挑战所花费的50倍。

模素数的椭圆曲线
定义 6.1 设p > 3是素数。

a, b∈Z p且是满足4a2 +27b3 ≠ 0 (mod p)的常量。

Z p上的同余方程y2 = x3+ax+b (mod p)的所有解(x , y)∈Z p×Z p,加上一个无穷远点O,共同构成一个Z p上的非奇异椭圆曲线。

假设E是一个非奇异椭圆曲线。

在E上定义一个模p 的二元运算,使其成为一个阿贝尔群。

这个二元运算通常用加法表示。

无穷远点O将是一个单位元。

椭园曲线可以定义在任意有限域上,但我们感兴趣的ECC主要是基于(其中p为素数)和特征为2的有限域F(m≥1)。

我们将描述这两种有限域上的椭园曲线密码2m
体制,先从
Z上的椭园曲线密码体制开始。

p
定义6.2 设p 是一个大于3的素数, Z p 上的椭园曲线()Z p E 由同余式
23
(mod )y x ax b p =++ 的解(,)Z Z p p x y ∈×的集合和一个被称为无穷远的特
殊点O 组成。

其中,Z p a b ∈是满足(mod )324270a b p +≡
/的常数。

在一条确定的椭园曲线上定义加法运算(记为“+”)如下:
()Z p E
假设P = (x 1, y 1), Q = (x 2, y 2)∈E (Z p )。

如果x 2 = x 1,y 2 = −y 1,则P Q O +=; 否则(,)33P Q x y +=。

λ2
312x x x =−−, ()3131y x x y λ=−− 其中λ满足:P Q ≠时, ()();λ1
2121y y x x −=−−
P = Q 时,()()λ2
11132x a y −=+。

对所有的()Z p P E ∈, 定义P O O P P +=+=。

E(Z p)在上述定义的运算下形成一个阿贝尔群(E,+), 单位元为无穷远点。

证明E(Z p)在上述定义下形成一个阿贝尔群除结合律的证明比较难以外, 阿贝尔群必须满足的其它条件都很容易直接验证。

由于群运算是加法, 群中任何元α= (x, y)的逆元应是−α= (x,−y)。

问题:椭圆曲线密码体制的优势
是什么?
例6.3.1 设E(Z
)是Z11上的椭园曲线y2=x3+x+6。

11
为了确定E(Z
) 中点, 我们对每一个x∈Z11, 计算x3+x+6,
11
然后对y解方程y2=x3+x+6。

并不是对每个x∈Z11, y2= x3+x+6都有解。

若上式有解, 那么我们用如下明显的公。

式计算模p的二次剩余的平方根,结果见书P
203
±z(11+1)/4(mod 11) ≡±z3(mod 11)
这样,E(Z
)上共有13个点,即(2,7), (2,4), (3,5),
11
(3,6), (5,2), (5,9), (7,2), (7,9), (8,3), (8,8), (10,2), (10,9)和无穷远点O。

因为任意素数阶的群是循环群,所以E同构于Z13,且任何非无穷远点都是E的生成元。

假如我们取生成元α= (2,7), 则我们可以计算出E (Z 11)中任何元素,即α的“幂”(因为群的运算是加法,可以写成α的数乘)。

例如,我们为了计算2α= (x 3, y 3), 需要先计算
λ= (3×22+1)(2×7)−1(mod 11)
= 2×3−1(mod 11)
= 2×4 = 8P ≠ Q 时,1
2121()();y y x x −=−−λ P = Q 时,2111(3)(2)x a y −=+λ
于是
x3=(82−2 −2) (mod 11) = 5
y3=(8×(2 −5) −7) (mod 11) = 2
即2α= (5, 2)。

x3= λ2−x1−x2
y3= λ(x1−x3)−
y1
下一个乘积是
3α= 2α+α=(5, 2) + (2, 7) = (x3′, y3′).
再次计算λ如下:
λ= (7 −2)(2 −5)−1 (mod 11)
= 5×8−1 (mod 11) = 5×7(mod 11) = 2于是
′= (22−5 −2) (mod 11) = 8
x
3
y
′= (2×(5 −8) −2) (mod 11) = 3
3
即3α= (8, 3).。

相关文档
最新文档