Рейтинг:0

Возможна ли утечка закрытого ключа RSA, если я подпишу и расшифрую?

флаг id

Возможна ли утечка данных закрытого ключа, если злоумышленник контролирует запрос на подпись?

Все знают $N$ и $Е$ потому что они общедоступны.

Мой сервер предназначен для расшифровки входящего запроса, который зашифрован открытым ключом.

Сделайте знак и для расшифрованных данных, у которых SHA-2 возвращает знак RSA для этих данных.

Возможно ли, что злоумышленник может узнать мой закрытый ключ?

Я тестирую это в моей местной мастерской в ​​образовательных целях.

Я использую зашифрованное сообщение с открытым ключом PKCS#1 для входящего запроса; данные расшифровываются моим закрытым ключом и имеют SHA-2, поэтому я просто подписываю и возвращаю обратно подписанные данные клиенту.

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

Генерация пары сообщений и ключей:

сообщение = struct.pack('>IIII', 0, 0, 0, 1)
(pub, priv) = rsa.newkeys(512) // только для примера, я знаю, что никто не использует 512 бит

Входящий запрос:

зашифровано = pkcs1.encrypt (сообщение, публикация) 

Операции сервера:

расшифровано = pkcs1.decrypt (зашифровано, приватно)
подпись = pkcs1.sign (расшифровано, priv, 'SHA-256')

и вернуть ответ.

fgrieu avatar
флаг ng
Оставлены ли в стороне атаки по побочным каналам (тайминг, анализ мощности и т. д.)? Можно ли предположить, что закрытый ключ $(N,D)$ используется только для вычисления функции $X\mapsto X^D\bmod N$? Если да для обоих: нет известного способа утечки (или рабочего) закрытого ключа. Но, возможно, вы также заинтересованы в том, чтобы сервер был взломан для расшифровки или подписи, могут быть атаки, позволяющие это сделать. Самостоятельно: поясните пожалуйста. Используйте «подпись», когда имеется в виду часть данных, и «подписать» для действия по созданию подписи. Что хэшируется с помощью SHA2? Как именно используется результат? Используют ли шифрование и подпись заполнение?
rockymaster avatar
флаг id
Я обновил свой вопрос и добавил образец.
fgrieu avatar
флаг ng
Остается много возможностей для улучшения формы: _"создайте знак и для расшифрованных данных, которые имеют SHA2, верните знак rsa для этих данных"_ -> _подпишите расшифрованные данные с дополнением, используя SHA2, и верните соответствующую подпись_; код [форматирование] (https://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks), возможно, [Mathjax] (https://crypto.meta.stackexchange.com /а/1070/555). И не хватает важного: считается ли атака по сторонним каналам (время, анализ мощности и т. д.) на криптографические библиотеки Python действительными атаками? Это может привести к «утечке данных закрытого ключа».
Рейтинг:1
флаг ng

Из примера видно, что шифрование и подпись используют некоторые режимы заполнения в ПККС#1; вероятно RSAES-PKCS1-v1_5 для шифрования и RSASSA-PKCS1-v1_5 с SHA-256 для подписи.

Возможна ли утечка данных закрытого ключа?

Насколько мы знаем, нет, то что он расшифровал сообщение и подписал его тем же ключом не может утечка данных закрытого ключа. Это не зависит от точных схем заполнения, используемых для шифрования и подписи: мы просто не знаем, каким образом любое использование закрытого ключа RSA $(н,д)$ ограничивается вычислениями $x\mapsto x^d\bmod n$ в черном ящике без боковых каналов можно утечка данных закрытого ключа.

Среди подобных вещей, которые могут произойти:

  • Реализация может привести к утечке закрытого ключа по побочному каналу; например, приземленная троянская программа, работающая на платформе, или Дифференциальный анализ мощности. Есть много других побочных каналов, которых следует опасаться.
  • Реализация расшифровки RSAES-PKCS1-v1_5 может быть среди многие из них уязвимы для некоторых вариантов атаки Блейхенбахера. Это могло бы позволить превратить сервер в оракула, который позволяет (при достаточном количестве запросов) вычислять функцию $x\mapsto x^d\bmod n$ для произвольного $х$, давая (очень медленный) эквивалент знания закрытого ключа злоумышленнику, который может связаться с сервером.

Некорректно с академической точки зрения использовать одну и ту же пару открытого и закрытого ключей для шифрования и подписи, но с четырьмя режимами шифрования и подписи в ПККС#1 он не позволяет проводить какие-либо известные атаки. Самыми слабыми очевидными звеньями в цепочке безопасности являются

  • Сама функциональность сервера: он позволяет получить подпись всего, что укладывается в ограничение по размеру для шифрования (117 байт).
  • 512-битный модуль, который можно факторизовать (это уже было возможно в 20 веке).
  • Использование расшифровки RSAES-PKCS1-v1_5 для неаутентифицированного зашифрованного текста из открытого доступа.

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

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