Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 227
Текст из файла (страница 227)
Ким, напротив, — любимица босса, что всем известно. Лесли может получить доступ к файлу после того как он будет зашифрован, но до того как он будет отослан в банк. Может ли Лесли исправить ситуацию, имея доступ только к зашифрованному файлу7 В данном случае это очень просто, Все, что нужно сделать Лесли, — это скопировать зашифрованный блок 12 (содержащий премию Ким) и заменить им блок 4 (содержащий премию Лесли). Даже не зная содержимого блока 12, Лесли может рассчитывать на значительно более веселое Рождество.
(Скопировать зашифрованный блок 8 тоже можно, но вероятность, что зто будет обнаружено, выше; кроме того, Лесли, в общем-то, не жадная). Режим сцепления блоков шиФра Чтобы противостоять атакам подобного типа, все блочные шифры можно модернизировать таким образом, чтобы замена одного блока вызывала повреждение других блоков открытого текста после их расшифровки, превращая эти блоки (начиная с модифицированного места) в мусор. Один из таких способов — сцепление блоков шифра.
При этом методе, показанном на рнс. 8.10, каждый блок открытого текста перед зашифровкой складывается по модулю 2 с предыдущим Уже зашифрованным блоком. При этом одинаковым блокам открытого текста уже не соответствуют одинаковые блоки зашифрованного текста. Таким образом, шифр перестает быть большим моноалфавитным подстановочным шифром.
Пер- Алгоритмы с симметричным криптографическим ключом 343 вый блок складывается по модулю 2 со случайным вектором инициализации, 1тг (1п(т(а1)хас(оп '»гестог), передаваемым вместе с зашифрованным текстом, РО Р, Р2 Рз Вектор инициализации ифратор Сз С» С2 Сз СО С» С2 Сз Дешифратор Вектор инициализации Сложение Ра Р» Р2 Рз по модулю 2 б Рис. В.10. Сцепление зашифрованных блоков: шифрование (а); дешифрация (б) Рассмотрим работу сцепления блоков шифра на примере рис. 8.10. Начнем с вычисления С, = Е(Рз ХОг Л'). Затем мы вычислим С, = Е(Р, ХОРх С,) и т. д. Расшифровка производится по формуле Р, = Лг ХОК Е)(Сз), и т.
д. Обратите внимание на то, что блок 1 является функцией всех блоков открытого текста с 0 по 1 — 1, поэтому один и тот же исходный блок текста преобразуется в разные зашифрованные блоки в зависимости от нх расположения. При использовании такого способа шифрования преобразование, произведенное Лесли, приведет к появлению двух блоков чепухи, начиная с поля премии Лесли. Для сообразительного офицера службы безопасности эта странность может послужить подсказкой в последующем расследовании. Сцепление блоков шифра также обладает тем достоинством, что усложняет криптоанализ, так как одни и те же блоки открытого текста преобразуются в разные зашифрованные блоки.
Именно по этой причине и применяется описанный метод. Режим шифрованной обратной связи Однако у метода сцепления блоков шифра есть и недостаток, заключающийся в том, что прежде чем может начаться шифрование или дешифрация, должен появиться целый 64-битовый блок данных. Для пользователей интерактивных терминалов, набирающих строки короче восьми символов и ждущих ответа, такой 844 Глава 8, Безопасность в сетях метод не подходит, Для побайтового шифрования может применяться режим шифрованной обратной связи с использованием (тройного) ОЕЯ, как показано на рис. 8.11. Для стандарта АЕЯ идея остается той же самой, только используется 128-разрядный сдвиговый регггстр.
На рисунке мы видим состояние шифрующей машины после того, как байты с О по 9 уже зашифрованы и посланы. Когда прибывает десятый байт открытого текста, как показано на рис. 8.11, а, алгоритм ПЕЗ обрабатывает 64-разрядный сдвиговый регистр, чтобы произвести 64-разрядный зашифрованный блок. Самый левый байт этого зашифрованного текста извлекается и складывается по модулю 2 с Рьг Этот байт передается по линии. Затем сдвиговый регистр сдвигается влево на 8 разрядов. При этом байт С, извлекается с левого конца регистра, а байт См вставляется в него на освободившееся место справа от С .
Обратите внимание на то, что содержимое сдвигового регистра зависит от всей предыстории открытого текста, так что повторяющиеся фрагменты исходного текста будут кодироваться каждый раз по-разному. Как и для метода сцепленных блоков шифра, для начала шифрования этим методом требуется вектор инициализации. 64-рвзрядный сдвиговый регистр 64-разрядный сдвиговый регистр Р10 С10 поженив по модулю 2 в б Рис.
8.11. Режим шифрованной обратной связи (в); обратная связь по выходу (б) При использовании режима шифрованной обратной связи дешифрация аналогична шифрованию. В частности, содержимое сдвигового регистра шифруелгся, а не дешифруелгся, поэтому байт, который складывается по модулю 2 с С„ для получения Рьв равен тому байту, который складывается по модулю 2 с Р„ длЯ полУчениЯ Сни Пока содеРжимое двУх сдвиговых РегистРов идентично, дешифрация выполняется корректно. Это показано на рис. 8.11, б.
Проблемы с режимом шифрованной обратной связи начинаются, когда при передаче шифрованного таким способом текста один бит случайно инвертируется. При этом испорченными окажутся 8 байтов, расшифровываемые в то время, когда поврежденный байт находится в сдвиговом регистре. Когда поврежденный байт покинет сдвиговый регистр, на выходе опять станет расшифровывать- Алгоритмы с симметричным криптографическим ключом В4В ся правильный открытый текст. Таким образом, результат инверсии одного бита оказывается относительно локализованным и не портит всего остатка сооб- щения. Режим группового шифра Тем не менее, существуют приложения, в которых один испорченный при передаче бит приводит к порче 64 бит открытого текста, а это многовато. Для таких приложений существует четвертый вариант„называемый режимом группового (потокового) шифра.
Суть его заключается в том, что выходной блок получается шифрацией вектора инициализации с использованием ключа. Затем этот выходной блок снова шифруется с использованием ключа, в результате чего получается второй выходной блок. Для получения третьего блока шифруется второй блок, и т. д, Последовательность (произвольной длины) выходных блоков, называемая ключевым потоком, воспринимается как одноразовый блокнот и складывается по модулю 2 с открытым текстом.
В результате получается шифрованный текст, как показано на рис. 8.12, а. Обратите внимание: вектор инициализации используется только на первом шаге. После этого шифруются выходные блоки. Кроме того, ключевой поток не зависит от данных, поэтому он в случае необходимости может быть вычислен заранее и совершенно не чувствителен к ошибкам передачи. Процесс дешифрации показан на рис.
8.12, б. Дешифрация осуществляется путем генерации точно такого же ключевого потока на принимающей стороне. Поскольку он зависит только от вектора инициализации и ключа, ошибки передачи шифрованного текста на него не влияют, Таким образом, ошибка в одном бите передаваемого шифра приводит к ошибке только одного бита расшифрованного текста. Вектор инициализации Вектор инициапивации шифрования шифрОвания Ключ й поток й поток ткрытый текст Открытый текст нфрованный ШиФрованный текст текст Рис.
ВЛ2. Групповой шифр: шифрование (в); дешифрация (о) Важно никогда не использовать одну и ту же пару ключ — вектор инициализации в одном и том же групповом шифре, поскольку при этом всякий раз будет получаться одинаковый ключевой поток. Повторное использование ключевого потока может привести к неприятному эффекту взлома шифра при помощи многократного использования ключевого потока. Допустим, блок открытого текста р, шнфруется с помощью ключевого потока, в результате чего получается сумма а46 Глава В. Безопасность в сетях по модулю 2 Р, и Ко. Затем берется второй блок открытого текста, Яо, и шифру- ется тем же ключевым потоком (получаем Д ХОВ К,).
Криптоаналитик, перехвативший оба блока шифрованного текста, может просто сложить их вместе по модулю 2 и получить в результате Р, ХОВ Я„убирая тем самым ключ. Теперь у него есть сумма по модулю 2 двух блоков открытого текста. Если один из них известен (или его можно угадать), найти второй — не проблема, В любом случае, взломать сумму по модулю 2 двух блоков открытого текста можно, используя статистические свойства сообщения. Скажем, если передается английский текст, то наиболее часто встречающейся буквой в потоке будет «е», и т.
д, Короче говоря, имея сумму по модулю 2 двух частей открытого текста, взломщик с высокой вероятностью сможет вычислить обе части. Режим счетчика Все режимы, кроме электронного шифроблокнота, обладают одним и тем же неприятным свойством: доступ к произвольной части зашифрованных данных невозможен, Допустим, например, что файл передается по сети и затем сохраняется на диске в зашифрованном виде.
Так иногда делают, если принимающий компьютер представляет собой ноутбук, который может быть украден. Хранить все важные данные в зашифрованном виде действительно полезно: риск утечки секретной информации в случае попадания аппаратуры в руки «нехорошим дядям» резко снижается. Однако доступ к дискам зачастую бывает необходимо осушествлять в произвольном порядке.
Особенно это касается файлов баз данных. Если файл зашифрован в режиме сцепления блоков, придется вначале дешифровать все блоки, предшествующие нужному. Согласитесь, такой способ работы несколько неудобен. По этой причине был введен еще один режим шифрования — режим счетчика. Он показан на рис. 8.13. Здесь открытый текст не шифруется напрямую. Вместо этого шнфруется вектор инициализации плюс некоторая константа, а уже получающийся в результате шифр складывается по модулю 2 с открытым текстом. Сдвигаясь на 1 по вектору инициализации прн шифрации каждого нового блока, можно легко получить способ дешифрации любого места файла. При этом нет необходимости расшифровывать все предшествующие блоки.
Вектор инициализации Вектор Вектор Вектор инициализации + 1 инициализации + 2 инициализации + 3 Блок шифрования Ро Рз Со Сз Сз Рис. 6.13. Шифрование в режиме счетчика Алгоритмы с симметричным криптографическим ключом 947 Несмотря на то что режим счетчика весьма полезен, у него есть один существенный недостаток, который стоит упомянуть. Допустим, уже использовавший ся однажды ключ К будет использован повторно (с друп!м открытым текстом, но с тем же вектором инициализации), и взломщик захватит весь шифрованный текст, который был послан в обоих случаях. Ключевые потоки остаются неизменными, в итоге возникает риск взлома за счет повторного использования ключевого потока (тот же эффект, на который мы уже указывали, обсуждая режим группового шифра).