RSA私人指数确定

时间:2011-06-11 14:27:43

标签: cryptography rsa public-key-encryption

我的问题是关于RSA签名。

如果是RSA签名:

加密 - > y = x ^ d mod n, 解密 - > x = y ^ e mod n

  • x - >原始信息
  • y - >加密消息
  • n - >模数(1024位)
  • e - >公众指数
  • d - >私人指数

我知道x,y,n和e。了解这些可以确定d?

3 个答案:

答案 0 :(得分:2)

如果你可以因子n = p * q,那么d *e≡1(mod m)其中m =φ(n)=(p-1)*(q-1),(φ(m)是{ {3}})在这种情况下,您可以使用Euler's totient function来确定来自e的d。 (对于某些k,d * e - k * m = 1)

所有这些都非常容易计算,除了因子设计,其设计难以处理,因此公钥加密是一种有用的技术,除非您知道私钥,否则无法解密。

因此,要在实际意义上回答您的问题,不,您不能从公钥中获取私钥,除非您可以等待数百或数千个CPU年数来计算n。


公钥加密和解密是逆操作:

x = y e mod n =(x d e mod n = x de mod n = x kφ(n)+1 mod n = x *(x φ(n) k mod n = x mod n

其中(x φ(n) k = 1 mod n,因为extended Euclidean algorithm

答案 1 :(得分:2)

在两个条件下答案是肯定的。一,有人因素第二,有人将算法滑入米奇并说服签名者使用x中几种可能的特殊值之一。

Applied Cryptography第472和473页描述了两种这样的方案。我并不完全清楚他们在实践中会如何运作。但解决方案是使用一个不能完全由想要确定d的人(也就是攻击者)控制的x。

有几种方法可以做到这一点,它们都涉及哈希x,以可预测的方式摆弄哈希的值以删除一些不需要的属性,然后签署该值。这样做的推荐技术称为“填充”,尽管有一种非常出色的技术不能算作填充方法,可以在Practical Cryptography中找到。

答案 2 :(得分:1)

没有。否则私钥就没用了。