RSA: Шифрование сообщения с использованием нескольких ключей

StackOverflow https://stackoverflow.com/questions/3003261

Вопрос

Можно ли получить дополнительную безопасность путем шифрования сообщения, используя 2 или более ключей RSA?

РЕДАКТИРОВАТЬ: Несколько разъяснений:

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

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

Следует предположить, что получение только части сообщения приемлемо.

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

Это было полезно?

Решение

Нет.

Если ключ A скомпрометируется, чем зашифрован A + B, будет защищать от компромисса, но за пределами этого особого случая вы не получаете дополнительной выгоды.

Другие советы

Нет.

Небезопасно делать мыслительные эксперименты относительно криптографии. Вам рекомендуется ездить на пути к пути, тронутым экспертами.

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

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

Квантовая криптография - я упоминаю это только как захватывающие, вам не нужно фактически это на ваш выбор - обещает интересные вещи для ключей: ключи RSA будут уничтожены Шоралгоритм, но симметричные клавиши (МороверS) будет только пополам (128-бит будет уравновешены до 64-бит, поэтому будет треснут). Есть, конечно, дебаты о том, могут ли такие квантовые машины реализованы и т. Д. :)

Сочиняя шифры

Скажем, у вас есть функция шифрования E(M, K), куда M это открытое текстовое сообщение и K это ключ. Сказать, что никакие известные уязвимости не существуют в E.

Вы генерируете два полностью не связан ключи K1 а также K2.

Гарантируется, что если вы сочините их в форме E(E(M, K1), K2), это невозможно на самом деле терять безопасность таким образом. Если оно было можно потерять безопасность от шифрования E(M, K1), будь это с K2 или любой другой ключ, то шифр сломан, потому что злоумышленник может просто сделать E(E(M, K1), KF) куда KF Есть ли какие-либо ключ, атакующий желает выбрать.

Для получения дополнительной информации см. здесь.

Шифрование каждого второго блока с другим ключом

Последствия здесь очевидны. Предполагая, что вы используете правильно составленные криптографические примитивы с обоими encryption function:key Комбинации, если вы зашифруете каждый второй блок с другим ключом из набора двух клавиш, злоумышленник может только расшифровать блоки, для которых у него есть ключ.

Да!

Но не используйте необработанное шифрование. Используйте схему шифрования RSA. Вместо повторной обработки зашифрованного сообщения со вторым ключом, что могло бы ослабить EXPET (я не знаю), используйте общий секретный алгоритм, чтобы разделить свой секрет в два. Общий секретный алгоритм позволяет разделить секрет в n штуки и гарантирует, что если злоумышленник удается получить N-1 штуки, он ничего не знает в секрете. Так что не просто разделить секрет в два.

Вы можете иметь более 2 ключей RSA. Еще одним мощным свойством общего секретного алгоритма является то, что можно распространить секрет над N штук и требует только M штук, причем M меньше, чем n, чтобы восстановить секрет. Это делает секретное восстановление более устойчивым к потере предметов.

Посмотрите здесь для получения дополнительной информации об общем секрете: http://en.wikipedia.org/wiki/shared_secret.

В дополнение к данным ответам он также просто не работает, если вы не делаете исправления. Очень просто один из модулей должен быть больше другого. Если вы выполняете RSA MOD, более широкий модуль MODULUS и MOD, меньший последний, вы теряете информацию и не можете гарантировать успешное расшифровку. Очевидный патч - всегда зашифровать с меньшим модулем первым. Конечно, вы должны выполнить дешифрование в обратном порядке. Еще один простой патч выбирает модули, которые очень близко в размере, так что вероятность того, что вы столкнулись с зашифрованным текстом, который не может быть уникально расшифрован, исчезает малым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top