Повтор блока

Более серьезной проблемой режима ECB является то, что враг может изменить шифрованные сообщения, не зная ключа или даже алгоритма, чтобы обмануть предполагаемого получателя. Впервые эта проблемы была рассмотрена в [291].

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

Банк 1: Передача 1.5 блока

Банк 2: Прием 1.5 блока

Имя вкладчика 6 блоков

Счет вкладчика 2 блока

Сумма вклада 1 блок

Блок соответствует 8-байтному блоку шифрования. Сообщения шифруются с помощью некоторого блочного алгоритма в режиме ECB.

Мэллори, который подслушивает линию связи между банками, банком Алисы и банком Боба, может использовать эту информацию для обогащения. Сначала, он программирует свой компьютер для записи всех шифрованных сообщений из банка Алисы в банк Боба. Затем, он переводит $100 из банка Алисы на свой счет в банк Боба. Позже, он повторяет эту операцию еще раз. С помощью своего компьютера он проверяет записанные сообщения, разыскивая пару идентичных сообщений. Этими сообщениями являются те сообщения, которыми он переводит $100 на свой счет. Если он находит несколько пар одинаковых сообщений (что больше похоже на реальную жизнь), он делает еще один денежный перевод и записывает результат. В конце концов он сможет выделить сообщение, которым был проведен именно его перевод.

Теперь он может отправить это сообщение по каналу связи, когда захочет. Каждое сообщение приведет к зачислению на его счет в банке Боба еще $100. Когда оба банка сверят свои переводы (возможно в конце дня), они обнаружат переводы-призраки, но если Мэллори достаточно умен, он уже сбежит в какую-нибудь банановую республику без договора об экстрадиции, прихватив с собой деньги. И скорее всего он использует суммы несколько больше $100 и провернет операцию сразу для нескольких банков.

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

Метка даты/времени 1 блок

Банк 1: Передача 1.5 блока

Банк 2: Прием 1.5 блока

Имя вкладчика 6 блоков

Счет вкладчика 2 блока

Сумма вклада 1 блок

В такой системе два идентичных сообщения будут легко обнаружены. Тем не менее, с помощью метода, называемого повтором блока, Мэллори все же сможет обогатиться. На Рис. -2 показано, что Мэллори может собрать восемь блоков шифротекста, соответствующих его имени и номеру счета: блоки с 5 по 12. В этот момент уместно дьявольски рассмеяться, ведь Мэллори уже в полной готовности.

[image]

Рис. -2. Блоки шифрования в записи приведенного примера.

Он перехватывает сообщения из банка Алисы в банк Боба и заменяет блоки с 5 по 12 сообщения байтами , соответствующими его имени и номеру счета. Затем он посылает измененные сообщения в банк Боба. Ему не нужно знать, кто был отправителем денег, ему даже не нужно знать переводимую сумму (хотя он может связать подправленное сообщение с соответствующим увеличением своего счета и определить блоки, соответствующие определенным денежным суммам). Он просто изменяет имя и номер счета на свои собственные и следит за ростом своих доходов. (Я помню, что Мэллори надо быть осторожным, чтобы не модифицировать сообщение о снятии денег, но предположим на минутку, что у этих сообщений другая длина или иной отличительный признак.)

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

Банки могут минимизировать эту проблему, часто меняя свои ключи, но это означает только, что Мэллори придется действовать побыстрее. Однако, добавление MAC также решит проблему. Несмотря на это рассматриваемая проблема фундаментальна для режима ECB. Мэллори удалять, повторять или заменять блоки по своему усмотрению. Решением является способ, называемый сцеплением.