我的问题是关于RSA签名。
如果是RSA签名:
加密 - > y = x ^ d mod n, 解密 - > x = y ^ e mod n
我知道x,y,n和e。了解这些可以确定d?
答案 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)
没有。否则私钥就没用了。