JAVA RSAES-OAEP攻击

时间:2011-05-04 20:34:46

标签: java cryptography encryption

我需要使用unix可执行oracle和ASCII格式质询文件来实施RSAES-OAEP PKCS#1 V2.1攻击。挑战ASCII文件的格式是

{n}
{e}
{c}

其中N(整数)是1024位模数,e(整数)是公共指数和c(an octet string)是对应于某些未知的RSAES-OAEP加密的密文 公钥(N,e)下的明文m(八位字符串)。请注意,明文是ASCII文本 (即,每个八位字节是ASCII编码字符),并且RSAES-OAEP加密将 使用SHA-1作为散列函数和空标签(即,在所有情况下标签都是八位字节 长度为零的字符串)。 可执行文件代表RSAES-OAEP解密oracle:从BASH执行时 shell使用命令

bash$ ./ USER < USER . challenge

它尝试使用私钥(N,d)解密从stdin读取的密文。注意N是 从stdin读取(即从挑战中读取),但d(整数)是嵌入的私有指数 进入oracle(即你无法访问它)。

挑战文件如下:

99046A2DB3D185D6D2728E799D66AC44F10DDAEE1C0A1AC5D7F34F04EDE17B96A5B486D95D927AA9B58FC91865DBF3A1685141345CC31B92E13F06E8212BAB22529F7D06B503AAFEEB89800E12EABA50C3F3BBE86F5966A88CCCF5C843281F8B98DF97A3111458FCA89B8085A96AE68EAEBAE270831D41C956159B81D29503
80A3C4043F940BE6AC16B11A0A77016DBA96B0239311AF182DD70E214E07E7DF3523CE1E269B176A3AAA0BA8F02C59262F693D6A248F22F2D561ED7ECC3CB9ABD0FE7B7393FA0A16C4D07181EEF6E27D97F48B83B90C58F51FD40DCDA71EF5E3C3E97D1697DC8E26B694B5CAFE59E427B12EE82A93064C81AAB74431F3A735
57D808889DE1417235C790CB7742EB76E537F55FD49941EBC862681735733F8BB095EDBB3C0DA44AB8F1176E69A61BBD3F0D31EB997071758A5DD850730A1D171E9EC92788EBA358974CE521537EE4A809BF1607D04EFD4A407866970981B88F44D5260D25C9E8864D5FC2AFB2CB90994DD1934BCEA728B38A00D4712AE0EE

关于如何进行此次攻击的任何想法?!

感谢 有人引导我这个吗?!!!!!!!!!!

1 个答案:

答案 0 :(得分:3)

你可以尝试的第一件事是找出你是否可以应用攻击 J. Manger的论文“对RSA最优非对称加密的选择密文攻击” 填充(OAEP)在PKCS#1 v2.0中标准化。“Crypto 2001。

这意味着你必须找出你可以从oracle获得什么样的信息。 即选择两个任意整数m0,m1,使得m1是小于n的1024位整数 并且m0的长度为1023或更少。如果你将m0 ^ e mod n和m1 ^ e mod n传递给oracle,你会得到不同的响应吗?如果是这样,那么您可以在上面的论文中应用攻击。否则你将不得不在解密oracle中搜索另一个漏洞。


可能有效的另一种方法是尝试修改模数n。如果oracle真的从用户提供的输入读取模数,那么看起来修改模数应该起作用并且攻击变得非常容易。我无法访问oracle的实现,因此我只能猜测可能的内容。如果你可以检查任何选择 n',c'是否c'^ d mod n'是一个有效的OAEP编码明文,那么你解密原始信息并不是你所能做到的,实际上你也可以恢复d并因此考虑原始RSA模数。

(此外,这确实是一个非常好的谜题,所以我不想通过给予破坏乐趣 一步一步地了解如何解决它。)