Рейтинг:2

Помогите с вопросом RSA CTF

флаг cn

Я пытаюсь решить проблему CTF, связанную с шифрованием RSA.

Я могу запустить двоичный код задачи, который будет считывать флаг из файла, флаг будет соответствовать следующему регулярному выражению:

AB1234C\{[0-9a-f]{32}\}\n

Таким образом, общий размер флага составляет 42 байта, включая новую строку.

Затем флаг дополняется случайным заполнением до 128 байтов.

Я могу выбрать публичный показатель e, если e>1. Двоичный файл будет генерировать случайный 2048-битный модуль, используя функцию python. Crypto.PublicKey.RSA.generate (биты = 2048)

Двоичный файл распечатает модуль, а также зашифрованный текст зашифрованного дополненного флага.

Я могу запустить двоичный файл несколько раз, модуль и заполнение будут разными для каждого запуска.

Я думал, что это может быть связано с атакой Хастада, но, похоже, это работает только для линейного заполнения, а атака с коротким блоком Копперсмита работает только в том случае, если у вас есть два сообщения со случайным заполнением, но зашифрованным с одним и тем же модулем, которого у меня здесь нет из-за тот факт, что каждый раз, когда я запускаю двоичный файл, генерируется другой модуль.

Я все еще новичок, когда дело доходит до криптографии, поэтому я мог ошибаться в этих атаках и, возможно, упустил что-то очевидное.

Я считаю, что уязвимость может быть связана с размером заполнения, поскольку дополненное сообщение составляет только половину длины модуля.

Мне не обязательно нужно решение, а просто толчок в правильном направлении. Спасибо.

jdkleuver avatar
флаг cn
Этот вопрос кажется связанным https://crypto.stackexchange.com/questions/80087/short-padding-known-prefix-rsa-attack Но ответ на этот вопрос, похоже, не поможет, потому что он основан на двух зашифрованных текстах, созданных с одинаковым модулем.
fgrieu avatar
флаг ng
Будучи CTF, вопрос граничит с темой, и, возможно, на него ответят подсказками. Тем не менее: без указанного способа повторного использования модуля и 22 байтов случайного заполнения я не могу придумать решение. Я бы посмотрел на код, выполняющий заполнение, чтобы убедиться, что он соответствует рекламе; и в коде, выполняющем генерацию, чтобы увидеть, использует ли он указанный $e$ (извлечение кода в вопросе этого не делает).
jdkleuver avatar
флаг cn
Я не могу поделиться исходным кодом, так как это частный CTF, но я могу подтвердить, что когда модуль генерируется, он не передает значение e в качестве аргумента, передается только битовый аргумент.
Рейтинг:2
флаг my

Это CTF, поэтому я просто дал подсказку.

Я могу выбрать публичный показатель e, если e>1

Можем ли мы выбрать $е$ что делает это легко из одного запроса? Рассмотреть возможность:

... до 128 байт

Двоичный файл будет генерировать случайный 2048-битный модуль

fgrieu avatar
флаг ng
Но это не РСА! :-) И если `Crypto.PublicKey.RSA.generate` каким-то образом передается с использованием $e$ (как и должно быть), то этого не должно произойти. Определенно стоит проверить.
jdkleuver avatar
флаг cn
Могу подтвердить, что `Crypto.PublicKey.RSA.generate` не передается с использованием e, так что я думаю, вы что-то там поняли. Единственный аргумент — «биты», поэтому значение e, сгенерированное Python, игнорируется, используется только n.
jdkleuver avatar
флаг cn
То, на что вы намекали этим ответом, на самом деле было предполагаемым решением автора CTF.
Рейтинг:0
флаг cn

Поэтому, прочитав комментарий @fgrieu, я снова посмотрел на схему заполнения и понял, что на самом деле она детерминирована, а не случайна, как я думал. Я только что решил это, используя атаку Хастада, так что на самом деле это была слабость заполнения. Приношу свои извинения за некорректно сформулированный вопрос.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.