2016-05-12 6 views
-2

У меня есть программа, которая может шифровать и частично расшифровывать число с помощью алгоритма RSA-1024.Partial RSA Decrypter

Для шифрования:

C = M^e mod n

Но для дешифрования, результат будет по модулю 256:

partialM = (C^d mod n) % 256

Также я знаю e = 65537, d = constant, n = constant так не будет изменен после многократного прогонов программы.
Я хочу знать, возможно ли, если данный C найдет M. Если да, то как?

+0

Что вы подразумеваете под d = ct и n = ct? Это не имеет смысла: d не может быть таким же, как n. – TheGreatContini

+1

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это не вопрос программирования. Это может быть по теме на crypto.stackexchange.com. Даже там, вы ожидаете, что попытаетесь решить проблему самостоятельно. Один намек: воспользуйтесь мультипликативным свойством RSA. –

ответ

3

Да, это возможно, но не легко.

Существует известная атака против RSA, называемая наименее значительным битлом Oracle Attack. Короче говоря, если у вас есть черный ящик, вы можете запросить бит четности открытого текста для любого выбранного зашифрованного текста, вы сможете открыть полный текст.

Вы можете найти описание всей атаки in this question.

Подводя итог: вы не можете сломать шифр для одного известного зашифрованного текста - частичной пары открытого текста без доступа к оракулу. Однако вы никогда не должны раскрывать какие-либо биты открытого текста - знание одного бита для достаточного количества открытых текстов может нанести реальный ущерб.