Можно ли получить закрытый ключ RSA, зная открытый ключ и набор записей «оригинальные данные => зашифрованные данные»? - PullRequest
5 голосов
/ 17 апреля 2010

Я работаю над приложением, которое позволяет плагинам получать доступ к различным наборам функциональности, каждый плагин предоставляет «строку инициализации», которая устанавливает уровень доступа к различным функциям. Разработчики отправляют мне эти строки, и я шифрую их с помощью своего 1024-битного закрытого ключа RSA и отправляю закодированные данные обратно. При запуске мое приложение декодирует закодированные данные (закодированную строку инициализации), используя встроенный открытый ключ, и если «декодированные данные! = Строка инициализации», оно не запускается.

Итак, возможно ли использовать базу данных «строка инициализации» => «закодированная строка инициализации» (извлеченная из других плагинов), чтобы взломать мой закрытый ключ или сделать возможным его взлом в разумные сроки?

Ответы [ 3 ]

5 голосов
/ 17 апреля 2010

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

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

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

В любом случае для известных атак с открытым текстом обычно требуется много выборок (например, миллионы или миллиарды для DES ), так что это не так просто и для более слабых алгоритмов.

5 голосов
/ 19 апреля 2010

Когда вы говорите, что «шифруете с помощью закрытого ключа RSA», вы фактически не шифруете вещи. Это историческая путаница. То, что вы делаете, это цифровая подпись , которую плагин проверяет с помощью соответствующего открытого ключа. Путаница возникает из-за того, что при адекватном освещении подписи RSA можно рассматривать как своего рода «обратное шифрование», когда первым действует личный ключ. Однако он отличается некоторыми деталями (например, заполнением и использованием хэш-функции), что делает его совершенно другим, когда дело доходит до реализации.

Если вы используете правильную схему цифровой подписи RSA (например, одну из описанных в PKCS # 1 , раздел 8 "Схемы подписи с приложением") ) с достаточно большим ключом RSA (1024 бита или более), сгенерированным с помощью правильно реализованного алгоритма генерации ключа, , а затем не существует известного вычислительно выполнимого способа для злоумышленника использовать полученные подписи для того, чтобы подделать новые подписи (и, a fortiori , взломать закрытый ключ RSA). Никоим образом не доказано, что ваши подписи не помогают злоумышленнику, но 30-летние публичные исследования по этому вопросу не привели к такому нарушению.

Обратите внимание, однако, что детали использования, в частности заполнение (начальная часть, которая преобразует подлежащие подписи данные в большое число, которое может обработать математическое ядро ​​RSA), оказались деликатными; Многие предложенные способы заполнения были успешно атакованы. Заполнения PKCS # 1 находились под пристальным вниманием в течение достаточно долгого времени (два десятилетия для заполнения "v1.5") и до сих пор сопротивлялись всем таким попыткам. Семейство прокладок "ISO 9796" не очень хорошо, многие варианты были сломаны.

Если вы не вычисляете свои подписи в соответствии с устоявшимся стандартом (т. Е. PKCS # 1), то вы ищете проблему. Не делай этого. К счастью, большинство реализаций RSA (в криптографических библиотеках и языках / средах программирования) следуют PKCS # 1.

2 голосов
/ 17 апреля 2010

Весь смысл технологии открытого и закрытого ключей от RSA заключается в том, что очень трудно перевернуть.

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

...