ТЕМА 4. БЛОЧНЫЕ ШИФРЫ С СИММЕТРИЧНЫМ КЛЮЧОМ

advertisement
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
ТЕМА 4. БЛОЧНЫЕ ШИФРЫ С СИММЕТРИЧНЫМ КЛЮЧОМ
Цели и задачи изучения темы:
 сформировать представление о принципах построения алгоритма
шифрования по ГОСТ 28147– 89;
 ознакомить
с
основными
видами
и
криптопреобразований, применяемыми в алгоритме;
режимами
 познакомить с архитектурой аппаратно-программного комплекса
криптографической защиты данных и ограничения доступа к ним
КРИПТОН – 4/PCI, а также с входящими в его состав модулями
программного обеспечения;
 приобрести навыки практической работы с программным
средством КРИПТОН® Шифрование (архивное и сетевое
шифрование).
Оглавление:
4.1. Использование нелинейных операций для построения блочных шифров .............................1
4.2. Режим шифрования Электронная Кодовая Книга (ECB) .........................................................6
4.3. Режим шифрования со сцеплением блоков шифртекста (CBC)..............................................7
4.4. Режим шифрования с обратной связью по шифртексту (CFB) .............................................10
4.5. Режим шифрования с обратной связью по выходу (OFB) .....................................................12
4.1. Использование нелинейных операций для построения
блочных шифров
Алгоритмы симметричного шифрования различаются способом,
которым обрабатывается исходный текст. Возможно шифрование
блоками или шифрование потоком.
Блок текста рассматривается как неотрицательное
либо как несколько независимых неотрицательных целых
блока всегда выбирается равной степени числа два. В
блочных алгоритмов симметричного шифрования
следующие типы операций:
целое число,
чисел. Длина
большинстве
используются
Табличная подстановка, при которой группа битов
отображается в другую группу битов. Это так называемые S-box.

МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Перемещение, с помощью которого биты сообщения
переупорядочиваются.

Операция сложения по модулю 2, обозначаемая XOR или
знаком  .

Операция сложения по модулю 2 32 или по модулю 216 .

Циклический сдвиг на некоторое число битов.

Эти операции циклически повторяются в алгоритме, образуя так
называемые раунды. Входом каждого раунда является выход
предыдущего раунда и ключ, который получен по определенному
алгоритму из ключа шифрования K. Ключ раунда называется
подключом. Каждый алгоритм шифрования может быть представлен на
рис. 1 следующим образом:
Рис. 1. Структура алгоритма симметричного шифрования
Стандартизованный алгоритм шифрования должен быть применим
в различных приложениях:
Шифрование данных. Алгоритм должен быть эффективен
при шифровании файлов данных или большого потока данных.

Создание случайных чисел. Алгоритм должен быть
эффективен при создании определенного количества случайных
битов.

Хэширование.
Алгоритм
должен
эффективно
преобразовываться в одностороннюю хэш-функцию.

МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Стандартный алгоритм шифрования должен быть реализуем на
различных платформах, которые, соответственно, предъявляют
различные требования.
Алгоритм должен эффективно реализовываться на
специализированной аппаратуре, предназначенной для выполнения
шифрования/дешифрования.

Хотя для наиболее быстрых приложений всегда
используется специальная аппаратура, программные реализации
применяются чаще. Алгоритм должен допускать эффективную
программную реализацию на 32-битных процессорах.

Алгоритм должен работать на микроконтроллерах и других
процессорах среднего размера.

Должна существовать возможность реализации алгоритма
на смарт-картах, пусть даже с учетом жестких ограничений на
используемую память.

Алгоритм шифрования должен, по возможности, удовлетворять
некоторым дополнительным требованиям.
Алгоритм должен быть простым для написания кода,
чтобы минимизировать вероятность программных ошибок.

Алгоритм должен допускать любую случайную строку
битов нужной длины в качестве возможного ключа шифрования.

Алгоритм должен легко модифицироваться для различных
уровней безопасности и удовлетворять как минимальным, так и
максимальным требованиям.

Все операции с данными должны осуществляться над
блоками, кратными байту или 32-битному слову.

Криптосхема Фейстеля. В начале 1970-х годов, сознавая
необходимость защиты электронной информации при передаче данных в
сетях ЭВМ (особенно транзакций при осуществлении денежных
переводов и передаче конфиденциальных финансовых данных),
компания International Business Machines (IBM) приступила к выполнению
собственной программы научных исследований, посвященных защите
информации в электронных сетях, в том числе и криптографии. В
результате этого развитие одной передовой технологии повлекло за
собой настоящую революцию в другой.
Команду разработчиков фирмы IBM, приступившую к исследованию
систем шифрования с симметричной схемой использования ключей,
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
возглавил доктор Хорст Фейстель, к тому времени уже ставший
известным криптографом.
Построение сложных криптографически стойких, но обратимых
преобразований представляет собой достаточно трудоемкую задачу.
Кроме того, практическая реализация обратимых преобразований обычно
содержит неэффективные алгоритмы, что существенно сказывается на
скорости шифрования. По этой причине Фейстель решил не искать
решение проблемы обратимого преобразования данных, а попытаться
найти схему шифрования, в которой такие преобразования не
применялись бы.
Идея использования операции "исключающее ИЛИ" возникла из
классических примеров систем шифрования, а именно из идеи
использования самого простого (с технической точки зрения) способа
шифрования - гаммирования. Стойкость такого способа, как известно,
зависит от свойств вырабатываемой гаммы. Следовательно, процесс
выработки гаммы - двоичной последовательности, которую затем
суммируют с открытым текстом, - является самым узким местом во всем
способе.
Фейстель разрешил проблему следующим образом. Изначально
выбирается размер блока данных, который будет зашифрован за одну
итерацию алгоритма шифрования. Обычно размер блока фиксирован и
не изменяется во время работы алгоритма над открытым текстом.
Выбрав достаточно большого размера блок данных, его делят, например,
пополам и затем работают с каждой из половин блока. Если размер
левой половины равен размеру правой, то такую архитектуру называют
классической (или сбалансированной) сетью (криптосхемой) Фейстеля.
Если же деление блока данных происходит не на равные части, то такой
алгоритм называют разбалансированной сетью Фейстеля.
Предложенная им схема шифрования легко может
продемонстрирована с помощью схемы шифрования (рис..2).
быть
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 2. Архитектура сети Фейстеля
На изображенной схеме буквами Li и Ri обозначены левая и правая
половинки исходных данных на i-м шаге последовательного
преобразования. Каждый такой целый шаг называют раундом
шифрования. Функция гаммирования обозначена через Fi, поскольку на
каждом раунде может быть использована своя собственная функция.
Ключ также имеет индекс i, но уже в силу того, что исходный ключ k
может быть преобразован некоторым образом (говорят, развернут) в
последовательность итерационных ключей либо подключей, то есть
ключей,
которые
используются
непосредственно
функцией
гаммирования.
Как видно из схемы, сначала с помощью функции гаммирования
вырабатывают
гамма-последовательность,
которая
зависит
от
итерационного ключа ki и правой половины данных. После этого левая
половина суммируется с полученной гаммой по модулю целого
положительного числа, например, по модулю два. Затем левая и правая
половины меняются местами. На этом один цикл шифрования
заканчивается. Поскольку за один раз обрабатывается только одна
половина данных, то желательно, чтобы общее число раундов было
кратно двум. В таком случае есть уверенность в том, что каждая из
половин блока входных данных будет обработана одинаковое число раз.
На схеме рис. 3 изображена сеть Фейстеля с четным числом раундов.
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 3. Сеть Фейстеля с несколькими раундами
Исходя из данного описания, преобразование данных одного
раунда можно представить с помощью двух формул, выражающих новые
значения левой и правой половин блока шифруемых данных:
Целью построения блочных шифров является не только создание
стойкого алгоритма защиты информации, но и такого, чтобы его
реализация была достаточно дешевой, а время работы как можно более
меньшим.
Естественным путем увеличения сложности анализа сетей
Фейстеля является следующий метод (использованный в алгоритме
ГОСТ 28147-89 - отечественном стандарте криптографического
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
преобразования данных). Для того, чтобы распространить влияние
функции F в одном раунде на выходные значения и на функцию
следующего раунда, к выходному значению F прибавляют по некоторому
модулю значение итерационного подключа для текущего раунда, а затем
полученное значение подают на вход функции F следующего раунда
шифрования. Такой способ организации сети ставит выходы
последующих раундов шифров в прямую зависимость от предыдущих,
что повышает криптостойкость шифра.
Количество раундов преобразования выбирается путем нахождения
компромисса между малой скоростью шифрования у шифра с большим
количеством раундов и простотой вскрытия шифра с малым их числом.
Этот показатель у шифра, построенного на сети Фейстеля, колеблется от
8 до 32 раундов. Впрочем, никто не возбраняет применять и 64, и 128
раундов. Все упирается лишь в вычислительные мощности
компьютерных систем. Единственное ограничение состоит в том, что
количество раундов должно быть четным. В таком случае обе половины и левая, и правая - будут обработаны одинаковое число раз и,
следовательно, не возникнет ситуации, когда одна половина данных
(например, четная), зашифровываемых 16-раундовым алгоритмом, в
действительности обработана восемью, а другая всего лишь семью
итерациями алгоритма.
4.2. Режим шифрования Электронная Кодовая Книга (ECB)
Под режимом шифрования здесь понимается такой алгоритм
применения блочного шифра, который при отправке сообщения позволяет
преобразовывать открытый текст в шифротекст, а после передачи этого
шифротекста по открытому каналу позволяет однозначно восстановить
первоначальный открытый текст. Как видно из определения, сам блочный
шифр теперь является лишь частью другого алгоритма – алгоритма
режима шифрования. Это обусловлено тем, что блочный шифр работает
только с отдельным блоком данных, в то время как алгоритм режима
шифрования имеет дело уже с целым сообщением, которое может
состоять из некоторого числа n блоков.
Более того, сообщение вообще «не обязано» состоять из блоков, в
том смысле, что это сообщение не всегда можно разбить на целое число n
блоков. В этом случае в разных режимах шифрования приходиться
дополнять сообщение различным количеством бит. Такое дополнение
почти неизбежно, но минимальная величина, к которой нужно "подтянуть"
длину сообщения различна для разных режимов шифрования и напрямую
зависит от длины порции сообщения с которой работает каждая итерация
алгоритма данного режима.
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Режим ECB является самым простым режимом шифрования, при котором
незашифрованный текст обрабатывается последовательно, блок за
блоком. Каждый блок шифруется, используя один и тот же ключ. Если
сообщение длиннее, чем длина блока соответствующего алгоритма, то
оно разбивается на блоки соответствующей длины, причем последний
блок дополняется в случае необходимости фиксированными значениями.
Блоки шифруются отдельно и независимо друг от друга, что
позволяет делать это параллельно. Это достоинство режима ECB и его
простота скрадываются двумя значительными недостатками.
Первый – это то, что длина сообщения должна быть кратна длине
блока входных данных блочного шифра, то есть всё сообщение либо
можно разбить на целое число таких блоков, либо необходимо каким-то
образом дополнить последний блок открытого сообщения не несущими
информацию данными.
Второй недостаток ещё более существенный. Поскольку при
зашифровании очередной блок шифротекста полностью определяется
только соответствующим блоком открытого текста и значением секретного
ключа K, то одинаковые блоки открытого текста будут преобразовываться
в этом режиме в одинаковые блоки шифротекста. А это иногда
нежелательно, так как может дать ключ к анализу содержания сообщения.
Например, если шифруются данные на жёстком диске, то пустое
пространство будет заполнено одинаковыми байтами, оставшимися там от
форматирования диска. Это означает, что по шифротексту можно будет
догадаться о размере полезной информации, находящейся, например, на
жестком диске компьютера. Вследствие этого, для сообщений большого
объема режим шифрования ECB считается небезопасным (при
криптоанализе противником данная закономерность будет обнаружена). В
таких случаях нужно применять другие режимы шифрования.
Режим шифрования ECB идеален для зашифрования небольшого
количества данных, например, для шифрования ключа сессии.
4.3. Режим шифрования со сцеплением блоков шифртекста (CBC)
Для преодоления недостатков ECB используют способ, при котором
одинаковые незашифрованные блоки преобразуются в различные
зашифрованные. Для этого в качестве входа алгоритма используется
результат применения операции XOR к текущему незашифрованному
блоку и предыдущему зашифрованному блоку (см. рис. 4).
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 4. Шифрование в режиме СВС
Рис. 5. Дешифрование в режиме СВС
Для получения первого блока зашифрованного сообщения используется
инициализационный вектор (IV), для которого выполняется операция XOR
с первым блоком незашифрованного сообщения.При дешифровании для
IV выполняется операция XOR с выходом дешифрирующего алгоритма
для получения первого блока незашифрованного текста. IV должен быть
известен как отправителю, так и получателю. Для максимальной
безопасности IV должен быть защищен так же, как ключ шифрования.
В режиме CBC при зашифровании каждая итерация алгоритма зависит
от результата предыдущей итерации, поэтому зашифрование сообщения
не поддаётся расспараллеливанию. Однако расшифрование (когда весь
шифротекст уже получен) можно выполнять параллельно и независимо
для всех блоков сообщения (см. рис. 5). Это дает значительный выигрыш
во времени при расшифровании сообщения.
В этом режиме стоит остановиться ещё на одной детали. Дело в том,
что последний блок шифротекста, который получается на выходе
алгоритма режима CBC зависит как от ключа блочного шифра и вектора
инициализации, так и (что важнее в данном случае) от всех бит отрытого
текста сообщения. Это означает, что этот последний блок шифротекста
можно использовать как идентификатор сообщения. Такой идентификатор
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
не даёт постороннему наблюдателю никакой информации о содержимом
всего сообщения в целом, но при этом практически однозначно
определяет содержательную часть сообщения. Более того, подделать этот
идентификатор без знания ключа шифрования K так же трудно, как и
правильно угадать сам ключ. Этот идентификатор широко используется
для аутентификации сообщений и отправителей и носит название MAC
(Message Authentication Code), в русскоязычной
4.4. Режим шифрования с обратной связью по шифртексту (CFB)
Блочный
алгоритм
шифрования
предназначен
для
шифрования блоков определенной длины. Однако можно
преобразовать блочный алгоритм в поточный
алгоритм
шифрования, используя режим СFВ (либо режим OFB). Поточный
алгоритм шифрования устраняет необходимость разбивать
сообщение на целое число блоков достаточно большой длины,
следовательно, он может работать в реальном времени. Таким
образом, если передается поток символов, каждый символ может
шифроваться и передаваться сразу, с использованием символьно
ориентированного режима блочного алгоритма шифрования.
Одним из преимуществ такого режима блочного алгоритма
шифрования является то, что зашифрованный текст будет той же
длины, что и исходный.
Будем считать, что блок данных, используемый для
передачи, состоит из J бит; обычным значением является J=8.
Как и в режиме CBC, здесь используется операция XOR для
предыдущего блока зашифрованного текста и следующего блока
незашифрованного
текста. Таким образом,
любой
блок
зашифрованного
текста
является
функцией
от
всего
предыдущего незашифрованного текста.
Рассмотрим процесс шифрования (см. рис. 6).
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 6. Шифрование в режиме СFВ
Входом функции шифрования является регистр сдвига,
который первоначально устанавливается в инициализационный
вектор IV. Для левых J битов выхода алгоритма выполняется
операция XOR с первыми J битами незашифрованного текста Р1
для получения первого блока зашифрованного текста С1. Кроме
того, содержимое регистра сдвигается влево на J битов, и С1
помещается в правые J битов этого регистра. Этот процесс
продолжается до тех пор, пока не будет зашифровано все
сообщение.
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 7. Дешифрование в режиме СFВ
При дешифровании (см. рис. 7) используется аналогичная
схема, за исключением того, что для блока получаемого
зашифрованного текста выполняется операция XOR с выходом
алгоритма для получения незашифрованного блока.
4.5. Режим шифрования с обратной связью по выходу (OFB)
Данный режим шифрования подобен режиму CFB. Разница
заключается в том, что выход алгоритма в режиме OFB подается обратно
в регистр, тогда как в режиме CFB в регистр подается результат
применения операции XOR к незашифрованному блоку и результату
алгоритма (см. рис. 8).
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 8. Шифрование в режиме OFB
Основное преимущество режима OFB состоит в том, что если при
передаче произошла ошибка, то она не распространяется на следующие
зашифрованные блоки, и тем самым сохраняется возможность
дешифрования последующих блоков. Например, если появляется
ошибочный бит в Сi, то это приведет только к невозможности
дешифрования
этого
блока
и
получения
Рi.
Дальнейшая
последовательность блоков будет расшифрована корректно. При
использовании режима CFB Сi подается в качестве входа в регистр и,
следовательно, является причиной последующего искажения потока.
Процесс дешифрования в режиме CFB представлен на рис. 9.
МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
Рис. 9. Дешифрование в режиме OFB
Недостаток режима OFB заключается в том, что он более уязвим к
атакам модификации потока сообщений, чем режим шифрования CFB.
Download