CTF RSA расшифровывается с использованием N, c, e - PullRequest
0 голосов
/ 28 марта 2020

Даю N, e, c следующим образом:

n = 35390004486354300347521848565413257959442624589297688131017877221807025004928966206454752329594506530598099849274956709610488234955109039874355077958460196991750855650029096905451

e = 65537

c = 34976328528100445602888072790831380493399287679380757676967266152942525578548886648293955777757882335796410272725253490310142371251759362170135820927390507970457244397459500624458

Я пробовал несколько способов его расшифровки, например factordb , yafu и даже нашел похожее вопрос , который был решен RsaCtfTool . Может быть, производительность моего P C отстой ... Кто-нибудь может помочь? Большое спасибо!

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

Спасибо за вашу помощь! Я знаю, как трудно вычислить большое целое число, но это большое число появилось в вопросе CTF. Так что я думаю, что должен быть какой-то метод, чтобы взломать его за ограниченное время. И, наконец, я нашел метод. Упомянутый выше N c e - это только половина информации, и еще половина информации, которую я получил путем sql -инъекции, и это N c1 e1. Таким образом, последний способ взломать это Common Modulus Attack. Так что я могу получить флаг, учитывая N e1 e2 c1 c2 без d1, d2 (N = d1 * d2) ... Спасибо, ребята, в любом случае!

0 голосов
/ 27 апреля 2020

Я пробовал с последней RsaCtfTool версией, и она работает:

python3 ./RsaCtfTool.py -n 3539000448635430034752184856541325795944262458929768813101787722180702500492896620645475232959450653059809984927495670961048
8234955109039874355077958460196991750855650029096905451 -e 65537 --uncipher 3497632852810044560288807279083138049339928767938075767696726615294252557854888664829395577775788
2335796410272725253490310142371251759362170135820927390507970457244397459500624458

[*] Testing key /tmp/tmpimxbt566.
[*] Performing londahl attack on /tmp/tmpimxbt566.
[*] Performing mersenne_primes attack on /tmp/tmpimxbt566.
[*] Performing cube_root attack on /tmp/tmpimxbt566.
[*] Performing pollard_p_1 attack on /tmp/tmpimxbt566.
[*] Performing smallfraction attack on /tmp/tmpimxbt566.

Results for /tmp/tmpimxbt566:

Unciphered data :
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00CISCN{XXXX_XX_X_XXXXX_XXXX}\n'

(спойлер: я - разработчик RsaCtfTool)

0 голосов
/ 01 апреля 2020

Производительность вашего P C здесь на самом деле не проблема. Ваш модуль n имеет 179 цифр (594 бита), что потребует очень длительного времени, чтобы рассчитать на один рабочий стол P C. В 2005 году понадобилось 15,2 года процессора , чтобы получить 176-диное число git. Для сравнения, вопрос, который вы связали с , имеет только 256-битный модуль, который можно взломать за несколько минут с помощью программного обеспечения, такого как msieve .

Единственный способ у вас есть шанс решить эту проблему, найдя короткий путь. Возможно, проблема содержит другие подсказки, которые вы пропустили. Или, возможно, он использует некорректную реализацию RSA. Для общего обзора уязвимостей в RSA, я бы предложил прочитать Двадцать лет атак на криптосистему RSA Дэна Бонэ.

...