Заказно-независимые шифры - PullRequest
7 голосов
/ 06 июня 2011

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

То есть, если есть два ключа (или пары ключей) K1, K2, сообщение M и криптограмма C получается как (например) C=M*K1*K2 (где * обозначает шифрование), тогда сообщение M может быть получено любым из следующих способов: 1) M=C*K1*K2, 2) M=C*K2*K1 (здесь * обозначает расшифровку).

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

Ответы [ 3 ]

9 голосов
/ 06 июня 2011

Возьмите любой надежный блочный шифр (например, AES) и запустите его в Режим обратной связи на выходе или Режим счетчика .

Поскольку OFB и CTR по сути просто XOR скриптографический псевдослучайный поток, он будет иметь свойство, которое вы ищете.Просто убедитесь, что ваши K1 и K2 независимы .

Кроме того, поскольку OFB и CTR одобрены NIST (и широко используются) режимами блочного шифрования, они будут "криптографически стойкими", так какПока вы правильно их реализуете и используете надежный блочный шифр.

2 голосов
/ 08 июня 2011

То, что вы просите, известно как коммутативный шифр. Одним из применений таких шифров является трехпроходный протокол Шамира (который часто объясняется с помощью навесных замков).

Непонятно, что вы подразумеваете под "криптографически сильным". То есть одно требование, которое часто необходимо, состоит в том, что злоумышленник не может изучить сообщение, если он изучает шифрование сообщения с помощью K1, затем шифрование сообщения с помощью K2 и шифрование сообщения как с помощью K1, так и K2. Это требование очевидно в случае трехпроходного протокола Шамира.

Легко видеть, что потоковые шифры не удовлетворяют вышеуказанному требованию. Следовательно, было бы неверно называть потоковый шифр «криптографически сильным коммутативным шифром». Не менее легко нарушить вышеприведенные предположения и предложение Расмуса Фаберса (которое, я думаю, является конструкцией, предложенной Брюсом Шнайером для чего-то немного другого).

Сильные коммутативные шифры могут основываться, например, на модульном возведении в степень. Протокол Мэсси-Омура является отличным примером.

1 голос
/ 06 июня 2011

Если размер криптограммы не является проблемой, вы можете легко создать такой шифр на основе любого другого шифра:

Пусть первый шифровщик сгенерирует случайную битовую маску B1 размера> = M.Зашифруйте битовую маску с помощью оригинального шифра и ключа и передайте это шифрование вместе с B1 ^ M.

Аналогично, следующий шифровщик генерирует новую случайную битовую маску B2, шифрует ее своим ключом и передает обе зашифрованные битовые маскиB2^(B1^M).(и так далее для N шифровальщиков).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...