Cryptography RSA私有指数的确定

Cryptography RSA私有指数的确定,cryptography,rsa,public-key-encryption,Cryptography,Rsa,Public Key Encryption,我的问题是关于RSA签名的 如果是RSA签名: 加密->y=x^d模n, 解密->x=y^e模块n x->原始消息 y->加密消息 n->模数(1024位) e->公共指数 d->私有指数 我知道x,y,n和e。知道了这些,我就可以确定d?否。否则私钥就没有用了。如果你能将n=p*q作为因子,那么d*e≡ 1(mod m),其中m=φ(n)=(p-1)*(q-1),(φ(m)是),在这种情况下,可以使用从e确定d。(对于某些k,d*e-k*m=1) 所有这些都很容易计算,除了因式分解(fac

我的问题是关于RSA签名的

如果是RSA签名:

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

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

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

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

如果你能将n=p*q作为因子,那么d*e≡ 1(mod m),其中m=φ(n)=(p-1)*(q-1),(φ(m)是),在这种情况下,可以使用从e确定d。(对于某些k,d*e-k*m=1)

所有这些都很容易计算,除了因式分解(factoring)之外,因式分解的设计非常困难,因此公钥加密是一种有用的技术,除非知道私钥,否则无法解密

所以,从实际意义上回答你的问题,不,你不能从公钥中导出私钥,除非你可以等待数百或数千年的CPU时间来计算n


公钥加密和解密是反向操作:

x=ye模n=(xd)e模n=xde模n=xkφ(n)+1模n=x*(xφ(n))k模n=x模n


其中(xφ(n))k=1模n,因为。

在两种情况下,答案是肯定的。一,某人。第二,有人在算法中插入了一个米奇,并说服签名者对x使用几个可能的特殊值中的一个

应用密码学第472页和第473页描述了两种这样的方案。我不完全理解他们在实践中是如何工作的。但解决方案是使用一个x,而这个x不能完全由想要确定d的人控制(也就是攻击者)


有几种方法可以做到这一点,它们都涉及散列x,以可预测的方式修改散列值以删除一些不需要的属性,然后对该值进行签名。建议使用的技术称为“填充”,尽管在实际的密码学中有一种非常优秀的技术不能算作填充方法。

+1,但我认为您的“数百或数千CPU年”可能夸大了1024位密钥。见(除其他地方外)。1024位在这一点上真的太小了……”例如,截至2007年5月,一个1039位的整数在11个月内使用400台计算机的特殊数字字段筛选中被分解”——这是367个CPU年,他们说这是一种特殊形式。。。所以我不认为我离得太远,这很公平。但你的措辞可能会让人觉得1024位的钥匙是“安全的”,而这些天它们根本不是这样的,至少根据专家的说法。我不同意。如果使用不适当的填充,则可能会出现几种类型的选定消息和选定密文攻击。这些攻击可用于伪造签名或解密密文。但是,这些攻击都不能用于查找私钥。