我最近读了RSA密码体制,但现在我在密钥生成阶段感到困惑。根据欧拉定理,我们只有一个条件:
e.d = k.ϕ(N) +1
其中:
但有些文件规定了新的条件如下:
现在,我的问题是,为什么我应该满足这三个条件?
我认为第二个和第三个条件是为了确保"d"也是一个整数,因为d = (k.φ(N) + 1)/e
的存在。我说的对吗?
最后,我认为第一个条件是确保"d"足够大。我说的对吗?
发布于 2021-06-05 12:25:21
我为什么要满足这些?
e
应该是小的。有三个原因
\log e
大致成正比。e
限制为32位(或31位)。d
,这会破坏安全性。问题的最后一段是对的。注意,由于大多数历史原因,您还会发现e
不太小的建议。当然,e\le1
是个糟糕的主意。说到底,最常见和最不受反对的是e=F_4=2^{(2^4)}+1=65537
,其中F_4
是已知的最大的费马素数。
\gcd(\varphi(N),e)=1
。在这一点上,\varphi(N)
只在表示法上不同于\phi(N)
,或者在问题的"\phi(N)
等于(p-1)(q-1)
“中是\Phi(N)
。那是欧拉系数。\varphi(N)=(p-1)(q-1)
在N=p\cdot q
具有p
和q
不同素数的情况下仍然有效,当p
和q
足够随机地选择素数时,这种情况非常可能发生。
\gcd(\varphi(N),e)=1
是(整数) k
和d
存在的必要条件,例如e\cdot d=k\cdot\varphi(N)+1
。
e
应该是一个奇数。
除非p
或q
是2
,这将是个坏主意,这是从e\cdot d = k\cdot(p-1)(q-1)+1
那里得到的。
我认为第二和第三个条件是为了确保
d
也是一个整数,因为d=(k\cdot\varphi(N)+1)/e
的存在。
呃,没有。整数和位字符串是密码学中唯一的数据表示形式,在RSA中,它们通常在每个大端会议中被同化,所以一切都是整数。
k
与e\cdot d=k\cdot\varphi(N)+1
或(等效地) d=(k\cdot\varphi(N)+1)/e
存在时,可以注意到d\equiv e^{-1}\pmod{\varphi(N)}
,这意味着d
是模整数的乘法群\varphi(N)#qcStackCode#
中e
的逆(表示C64
的整数)。
https://crypto.stackexchange.com/questions/91414
复制相似问题