Algorithm RSA public exponent也在解密消息

Algorithm RSA public exponent也在解密消息,algorithm,rsa,Algorithm,Rsa,我正试图用我自己的数字设计出一个非常简单的RSA算法,但我似乎遇到了问题 我选择了质数13和17,给了我221的模φ(221)=12∗16=192 然后我选择了公共指数r=19,并使用扩展欧几里德算法找到了私有指数s=91。(19⋅91=1模192) 现在我将我的消息42加密为:42^19 mod 221=172。使用172^91 mod 221解密确实会返回42的原件。然而,如果我使用19作为指数(172^19 mod 221),我也会得到42,这显然不是应该发生的。我哪里出错了?乘以19两次

我正试图用我自己的数字设计出一个非常简单的
RSA
算法,但我似乎遇到了问题

我选择了质数13和17,给了我221的模<代码>φ(221)=12∗16=192 然后我选择了公共指数r=19,并使用扩展欧几里德算法找到了私有指数s=91。(19⋅91=1模192)


现在我将我的消息42加密为:
42^19 mod 221=172
。使用
172^91 mod 221
解密确实会返回42的原件。然而,如果我使用19作为指数(
172^19 mod 221
),我也会得到42,这显然不是应该发生的。我哪里出错了?

乘以19两次就是乘以19×19=169(模192)。问题是,为什么x169=x(mod 221)表示x=42,而x的其他值如此之多

让我们集中精力讨论这个问题。因为221=13×17,这个群有12×16=192个元素,它同构于C12×C16(其中Cn是n阶的循环群)

请注意,x169=x(模块221)相当于x168=1(模块221)。让我们定义f(x)=x168

  • 由于168=0(mod 12),f将C12中的每个元素映射到中性元素1
  • 由于168=8(mod 16),f将C16的所有偶数元素映射到中性元素1,这是组的一半
因此f(x)=1(模221)表示乘法群模221的一半

但是x169=x·x168,所以我们有x169=x(mod 221)作为乘法群的一半

检查不在乘法群中的模221的29个整数,我们发现其中21个整数的同余也成立。这可以进一步调查。因此,总的来说,超过一半(96+21=117)的消息是使用指数19“解密”的。

这是否意味着该RSA系统已损坏?我不这么认为;要看到公共指数可以解密一半的消息,您需要知道221的因式分解是13×17。攻击者也可以选择一个随机指数

更新:是否可以通过选择不同的公共指数来避免此问题

因为192=26×3,指数不能是2或3的倍数,所以它必须是e=6k±1。它的平方是e²=(6k±1)²=36k²±12k+1=12k(3k±1)+1。我们在呼叫案例中看到e²=1(mod 12)

  • 如果k=4j,e²=48j(12j±1)+1=1(模数16)
  • 如果k=4j+1,e²=(48j+12)(12j+3±1)+1=48j(12j+3±1)+144j+36±12+1=5∓对于e=6k+1,e²=1(16),对于e=6k-1,e²=9(16)
  • 如果k=4j+2,e²=(48j+24)(12j+6±1)+1=48j(12j+6±1)+288j+144±24+1=1±8=9(模数16)
  • 如果k=4j+3,e²=(48j+36)(12j+9±1)+1=48j(12j+9±1)+432j+324±36+1=5±4(mod 16),则e=6k+1E²=9(16)和e=6k-1E²=1(16)

因此,对于这个模数,没有比19更好的公共指数选择:使用公共指数解密将至少适用于一半的消息(当e²=9(16))并且在许多情况下适用于几乎所有的消息(当e²=1(16))时

只是巧合……当选择RSA的质数和指数时,你必须考虑对RSA的攻击。所以你应该选择正确的区间来避免这种类型的发生…
n^24==1(mod 221)
n
是偶数,而
91-19
恰好是24的倍数。我不完全确定如何避免这种情况——这是一个比这里更好的问题。如果你在那里提问,请链接到评论中的新问题-我想看看他们有什么要说的。我想你找到了
42
的答案=D永远不要低估42。>要知道公共指数可以解密一半的消息,您需要知道221的因式分解是13×17。也许我读错了,但是如果你知道一半的消息是用公共指数解密的,难道没有人能用公共指数解密一半的消息吗?如果你对密钥的选择是随机的,那么用公共密钥解密就像随机猜测密钥一样。@Joni:在RSA中,公共密钥的选择通常是固定的(通常是
3
),不是随机的。唯一随机的是构成模的两个素数。实际上,这两个素数都比公钥指数大得多,这意味着在现实世界的RSA中永远不会出现这个问题(呃..对吧?)@BlueRaja DannyPflughoeft True,在现实世界中,公共指数通常是固定值之一,并且不是随机选择的。如果指数小于sqrt(lcm(p-1,q-1)),则应用公共指数两次无法解密任何消息(除了0和1之外,微不足道)