RSA: шифрование сообщения с использованием нескольких ключей - PullRequest
5 голосов
/ 09 июня 2010

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

РЕДАКТИРОВАТЬ: Несколько уточнений:

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

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

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

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

Ответы [ 5 ]

5 голосов
/ 09 июня 2010

Нет .

Мы не можем проводить мысленные эксперименты в отношении криптографии. Вам советуют придерживаться узкого пути, по которому идут эксперты.

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

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

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

1 голос
/ 09 июня 2010

Нет.

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

0 голосов

Составление шифров

Скажем, у вас есть функция шифрования 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, если вы шифруете каждый второй блок другим ключом из набора из двух ключей, атакующий может расшифровать только те блоки, для которых у него есть ключ.

0 голосов
/ 10 июня 2010

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

0 голосов
/ 09 июня 2010

Да!

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

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

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

...