Атака JAVA RSAES-OAEP

#java #cryptography #encryption

#java #криптография #шифрование

Вопрос:

Мне нужно реализовать атаку RSAES-OAEP PKCS # 1 версии 1, используя исполняемый файл Oracle в unix и файл запроса в формате ASCII. Формат файла запроса ASCII является

 {n}
{e}
{c}
  

где N (целое число) представляет собой 1024-битный модуль, e (целое число) является общедоступным показателем, а c (an
строка октета) — это зашифрованный текст, соответствующий шифрованию RSAES-OAEP некоторого неизвестного
открытый текст m (строка октета) под открытым ключом (N, e). Обратите внимание, что открытым текстом является текст ASCII
(т.е. каждый октет является символом в кодировке ASCII), и что шифрование RSAES-OAEP будет
использовали SHA-1 в качестве хэш-функции и нулевой метки (т. е. во всех случаях меткой является октет
строка нулевой длины).
Исполняемый файл представляет оракул расшифровки RSAES-OAEP: при выполнении из BASH
оболочка, использующая команду

 bash$ ./ USER < USER . challenge
  

он пытается расшифровать зашифрованный текст, прочитанный из стандартного интерфейса, используя закрытый ключ (N, d). Обратите внимание, что N равно
считывается из stdin (т. Е. из вызова), но d (целое число) является встроенным частным показателем
в oracle (т. е. у вас нет к нему доступа).

Файл запроса выглядит следующим образом:

 99046A2DB3D185D6D2728E799D66AC44F10DDAEE1C0A1AC5D7F34F04EDE17B96A5B486D95D927AA9B58FC91865DBF3A1685141345CC31B92E13F06E8212BAB22529F7D06B503AAFEEB89800E12EABA50C3F3BBE86F5966A88CCCF5C843281F8B98DF97A3111458FCA89B8085A96AE68EAEBAE270831D41C956159B81D29503
80A3C4043F940BE6AC16B11A0A77016DBA96B0239311AF182DD70E214E07E7DF3523CE1E269B176A3AAA0BA8F02C59262F693D6A248F22F2D561ED7ECC3CB9ABD0FE7B7393FA0A16C4D07181EEF6E27D97F48B83B90C58F51FD40DCDA71EF5E3C3E97D1697DC8E26B694B5CAFE59E427B12EE82A93064C81AAB74431F3A735
57D808889DE1417235C790CB7742EB76E537F55FD49941EBC862681735733F8BB095EDBB3C0DA44AB8F1176E69A61BBD3F0D31EB997071758A5DD850730A1D171E9EC92788EBA358974CE521537EE4A809BF1607D04EFD4A407866970981B88F44D5260D25C9E8864D5FC2AFB2CB90994DD1934BCEA728B38A00D4712AE0EE
  

Есть идеи относительно того, как действовать для этой атаки?!

спасибо кому-нибудь, кто поможет мне в этом?!!!!!!!!!!

Комментарии:

1. blog.gdssecurity.com/labs/2011/6/2/…

Ответ №1:

Первое, что вы могли бы попробовать, это выяснить, можете ли вы применить атаку Дж. Мангера из статьи «Атака с использованием выбранного зашифрованного текста на RSA Optimal Asymmetric Encryption Padding (OAEP), стандартизированную в PKCS # 1 версии v2.0». Crypto 2001.

Это означает, что вам нужно выяснить, какого рода информацию вы можете получить от oracle. Т.е. Выберите два произвольных целых числа m0, m1 так, чтобы m1 было 1024-битным целым числом, меньшим n, а m0 имело длину 1023 или менее бит. Если вы передадите m0 ^ e mod n и m1 ^ e mod n в oracle, вы получите другой ответ? Если это так, то вы могли бы применить атаку, описанную в статье выше. В противном случае вам придется искать другой недостаток в оракуле дешифрования.


Другой подход, который может сработать, — попытаться изменить модуль n. Если oracle действительно считывает модуль из введенных пользователем данных, то, похоже, изменение модуля должно сработать, и атака становится довольно простой. У меня нет доступа к реализации oracle, поэтому я могу только догадываться, что может быть возможным. Если вы можете проверить для любого выбранного n’, c’, является ли c ‘ ^ d mod n’ допустимым открытым текстом в кодировке OAEP, то расшифровка исходного сообщения — это не все, что вы можете сделать, фактически вы также можете восстановить d и, следовательно, учесть исходный модуль RSA.

(Кроме того, это действительно была бы очень приятная головоломка, поэтому я не хочу портить удовольствие, давая пошаговую инструкцию о том, как ее решить.)

Комментарии:

1. Спасибо за ответ. На самом деле это курсовая работа. И мы должны реализовать атаку на RSA-OAEP и получить открытый текст. Если вы хотите, я могу предоставить вам oracle, и текст запроса уже есть в моем вопросе. И поверьте мне, для нас это не забава : D 😉