2015-09-30 4 views
0

Скажем, нам нужно зашифровать некоторые данные с помощью DES (или Triple DES). Если для IV используется 8 байт, установите значение «0» (т. Е. IV является постоянным байтом [], все установлены в 0x00), все в порядке? Или это то же самое, что использовать IV?Использование вектора инициализации в DES

ответ

0

Нехорошо. Любой жестко закодированный IV означает, что один и тот же обычный текст всегда будет шифровать один и тот же шифрованный текст. Это именно то, что предполагается предотвратить IV. Если вы используете режим, который позволяет использовать IV вообще, очень хороший подход состоит в том, чтобы случайным образом генерировать IV, использовать его в шифровании по всем блокам обычного текста, которые вы хотите зашифровать, а затем добавить IV, не зашифрованный в шифрованный текст ,

Многие люди беспокоятся: «Неужели потенциальный злоумышленник не увидит IV?» Ответ - да, но это не имеет значения. Только ключ должен быть секретным. IV не обязательно должен быть секретным, чтобы значительно повысить безопасность вашего шифрования. Однако он должен быть случайным.

Обратите внимание, что этого недостаточно, чтобы помешать активному атакующему. Но этого достаточно, чтобы помешать любому пассивному подслушивателю.

Редактировать: Хорошо, я объясню, почему это не остановит активного атакующего, насколько я помню атаку. Для этого объяснения я рассмотрю цепочку блоков шифрования (CBC), поскольку он так часто используется. Вам придется экстраполировать это объяснение на другие режимы. Таким образом, цепочка блоков шифрования XOR передает первый блок сообщения с IV, а затем шифрует этот блок, как это происходит в режиме ECB. Результатом этого шифрования является блок 1 шифрованного текста, но теперь он XORed с блоком 2 сообщения перед тем, как этот блок зашифрован. Этот результат XORed с блоком после него до конца.

Теперь, чтобы расшифровать, вы дешифруете первый блок шифрованного текста так же, как в режиме ECB, а затем вы XOR его с тем же IV, который используется для шифрования. Это дает простой текст, потому что в общей сложности вы зашифрованы и дешифрованы и XORed с IV дважды, и эти 2 XORs отменяют друг друга. Теперь вы берете блок 1 шифрованного текста (а не обычный текст, заметьте), а после дешифрования блока 2, XOR вывод с этим предыдущим блоком шифрованного текста.

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

Скажите, что Алиса отправляет этот номер счета Бобу, чтобы не потерять смысл объяснения среди деталей, представьте, что номер счета составляет ровно 10 десятичных цифр и поэтому помещается в один блок AES с несколько байтов дополнений. Она шифрует номер счета, на который она хочет отправить деньги, на: 1234567890, XOR выводит шифрование с помощью IV и отправляет номер счета зашифрованного номера и зашифрованного счета Бобу в банк для обработки.

Кроме того, Ева управляет маршрутизатором между Алисой и Бобом. Предполагая, что она знает, что Алиса планирует направить деньги на счет 1234567890 и сделать просвещенное предположение, что это содержимое зашифрованного блока, она может украсть провод.

Для этого она берет оригинальные IV и XORs с 1234567890. Затем она получает результат со своим собственным номером счета 4564564560. Она заменяет оригинальный IV этим окончательным выходом и, оставляя блок шифрованного текста нетронутым, вперед это на Боба. Боб расшифровывает блок и получает именно то, что он получил бы с исходным блоком шифрованного текста. Кроме того, когда он XORs с IV, он не получает 1234567890 с дополнением в качестве своего обычного текста; он получает 4564564560. Он передает деньги Еве в соответствии с инструкциями, которые он получил (но не те, которые посылала Алиса).

Такое же вмешательство возможно с более длинными сообщениями, если злоумышленник считает приемлемым какой-либо искаженный текст на стороне получателя. Я не буду объяснять, почему здесь, но должно быть очевидно, если вы подумаете об этом, что я могу сделать блок X расшифровкой для всего, что мне нравится, пока я могу правильно угадать оригинальный текст, и я в порядке с расшифровкой блока X-1 к случайному шуму.

Использование MAC (как некоторые из известных протоколов, таких как SSL, TLS, IPSec do) является одним из способов укрепить уязвимость исходного CBC для этой атаки. Часто рекомендуется использовать один из этих протоколов, если нет веской причины, по которой вы не можете этого сделать.

+0

Спасибо, это хорошее объяснение. Кроме того, можете ли вы сказать, почему этого недостаточно для активного злоумышленника? Пожалуйста, отредактируйте свой ответ, если сможете. – vish4071

+0

@ vish4071 редактировано. – WDS

+0

О, и для того, чтобы быть ясным, вышеупомянутая атака не является единственным единственным CBC уязвимым. Например, атака переигровки намного проще и потенциально так же вредна. Существует LOT для защиты от того, хочет ли человек реализовать свой собственный крипто. Легко ошибиться. – WDS

Смежные вопросы