Подтвердить что ты не робот

Какая лучшая ядерная ракетная криптосистема?

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

plain_text=decrypt(Key1 XOR key2,ciper_text,IV)

plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)

(Предположим, что AES-256-CBC с блоком CMAC, если это важно для вас.)

4b9b3361

Ответ 1

XORing два случайно сгенерированных ключа вместе, чтобы получить окончательный секрет, безусловно, безопасен. Общая форма этого называется " секретный обмен ', и есть безопасные алгоритмы, которые позволяют вам генерировать схемы" m n", где вы генерируете n акций, и любого m достаточно, чтобы вывести исходный ключ.

Самая известная схема Shamir Secret Sharing и включает в себя создание случайного полинома степени m-1 с ключом в качестве константы, затем выборки он в n местах и ​​дает их отдельным лицам в качестве ключевых акций.

Ответ 2

При помощи XORing ключей вы гарантируете, что каждый бит в Key1 может быть изменен каждым отдельным битом в Key2 (и наоборот). Это означает, что держатель Key1 не имеет возможности вычислять либо Key2, либо результат XORing Key1/Key2.

Другой способ заявить об этом заключается в том, что держатель Key1 должен будет принудительно принудительно использовать каждую возможную комбинацию бит для исчерпания доступного пространства ключей. Тот факт, что он уже держит один из ключей, ему совсем не помогает.

Существуют и другие способы объединения двух ключей вместе, но простой XOR - это все, что требуется, когда ключи имеют одинаковую длину.

Ответ 3

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

  • каждый человек никогда не видит ключа другого человека.

В конце концов вы хотите избежать того, что один человек просто выбирает случайный зашифрованный текст, притворяется, что это только что вошло, видит ключ другого человека, а затем замечает, что зашифрованный текст должен быть обманом. Это требование делает дешифрование с параметром 1 сложным. Поскольку вы используете MAC, вы, вероятно, также захотите, чтобы

  • оба человека убеждены, что дешифрованное сообщение является законным.

Это, по-видимому, исключает вариант 2. В конце концов, как владелец Key2 знает, что владелец Key1 расшифровал правильность и не просто заменил законный открытый текст одним из его вариантов.

Я должен признать, что я не знаю хорошего решения для описываемого вами сценария. Потенциальная схема может выглядеть так: Зашифрованный текст - это набор c1, c2, d1, d2, где

c1 = EncryptAndMAC (Key1, Share1)

d1 = MAC (Key2, hash (Share1))

c2 = EncryptAndMAC (Key2, Share2)

d2 = MAC (Key1, Share2)

message = Share1 XOR Share2

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

Ответ 4

Второй вариант:

plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)

не соответствует требованию, что обе стороны должны использовать свои ключи одновременно. Ключ2 должен использоваться до Key1, но как только это произойдет, первая сторона (обладатель Key1) может подождать, чтобы расшифровать до момента ее выбора, оставив второго участника вне цикла. Это может быть или не быть проблемой для приложения.

Как указывает цитата Cocowalla Schneier, XOR работает, если только одна из сторон не может получить объединенный ключ (дешифратор может сохранить этот секрет), а другой ключ имеет другие цели. Если ключи не являются статистически независимыми, скорость XOR означает, что шаг комбинации клавиш уязвим для управляемого грубого принуждения (decrypt все еще является узким местом). Если ключи независимы, то нет необходимости определять какой-либо частичный ключ, а также не знать, что один частичный ключ помогает понять объединенный ключ, поэтому атака грубой силы может также нацеливаться на объединенный ключ и игнорировать части. Как говорится в кафе, вычисление другого частичного ключа является спорным, потому что для этого требуется комбинированный ключ; Кроме того, вы можете выстрелить только один раз. Если один ключ используется только в сочетании с другим ключом (и мы не используем пароли для разных систем, верно?), XOR безопасен.

Существует несколько криптографических систем, которые позволяют клавишам k-out-of-n расшифровывать сообщение при одновременном использовании, но я не могу вспомнить термин для них с верхней части головы, а моя копия Applied Cryptography не под рукой.

Изменить: благодаря Cocowalla, название схемы - "(m, n) пороговая схема". В качестве наглядного примера читайте "" Визуальная криптография и сегментация сложности бит-плоскостей " Даниэля Столеру, опубликованного в Докбе. Визуальная криптография была создана Наором и Шамиром и представлена ​​на EUROCRYPT '94 (согласно Дуг Стинсон).

В Википедии перечислены еще несколько примеров секретный обмен k-out-of-n: использование n точек, где секрет - k- 1 градусный многочлен; используя k k-гиперплоскости, где секрет является точкой пересечения.

Ответ 5

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

Кроме этого: в зависимости от алгоритма шифрования, имеющего половину ключа XOR'ed, можно получить часть полного ключа, значительно ослабив защиту.

Затем снова IANAC:)

Ответ 6

XOR'ing ключей, в то время как упрощенный метод, возможно, не самый лучший. Я не думаю, что полученный ключ был бы достаточно случайным - если кто-то с ключом 1 смог получить полученный ключ, он может получить ключ 2.

Чтобы добавить дополнительную сложность в микс, возможно, что-то одноразовая панель будет хорошим планом. Вероятно, не рекомендуется повторно использовать ключи для такой системы:)

Здесь пример повторного использования ключей вызвал проблемы:

http://en.wikipedia.org/wiki/Venona_project

UPDATE

Я просто сдул пыль с моей копии Брюса Шнайера, отличную "Прикладная криптография" , и посмотрел раздел 3.6 "Секретное разделение". Это другой сценарий, но он предполагает, что просто клавиши XOR'ing с сообщением безопасны:

Вот протокол, в котором Трент может разделить сообщение между Алисой и Бобом:

(1) Trent генерирует строку случайного бита, R, такую ​​же длину, как и сообщение, M.

(2) Trent XORs M с R для генерации S.

M ⊕ R = S

(3) Трент дает R к Алисе и S к Бобу.

Заметим, что он ничего не говорит о том, может ли это быть пригодным для охраны системы запуска ракет;)