Ролевая модель безопасности
Ролевая модель безопасности появилась как результат развития дискреционной модели. Однако она обладает новыми по отношению к исходной модели свойствами: управление доступом в ней осуществляется как на основе определения прав доступа для ролей, так и путем сопоставления ролей пользователям и установки правил, регламентирующих использование ролей во время сеансов.
В ролевой модели понятие «субъект» замещается понятиями «пользователь» и «роль» [5]. Пользователь – человек, работающий с системой и выполняющий определенные служебные обязанности. Роль – это активно действующая в системе абстрактная сущность, с которой связан набор полномочий, необходимых для выполнения определенной деятельности. Подобное разделение хорошо отражает особенности деятельности различных организаций, что привело к распространению ролевых политик безопасности. При этом, как один пользователь может быть авторизован администратором на выполнение одной или нескольких ролей, так и одна роль может быть сопоставлена одному или нескольким пользователям.
При использовании ролевой политики, управление доступом осуществляется в две стадии:
- для каждой роли указывается набор полномочий (разрешений на
доступ к различным объектам системы);
- каждому пользователю сопоставляется список доступных ему
ролей.
При определении ролевой политики безопасности используются следующие множества:
U –множество пользователей; R –множество ролей;
P –множество полномочий(разрешений)на доступ к объектамсистемы;
S – множество сеансов работы пользователя с системой.
Как уже отмечалось выше, ролям сопоставляются полномочия, а пользователям – роли. Это задается путем определения следующих множеств:
PA P R –определяет множество полномочий,установленных ролям (для наглядности условно может быть представлено в виде матрицы доступа);
UA U R –устанавливает соответствие между пользователями и доступными им ролями.
Рассмотрим процесс определения прав доступа для пользователя, открывшего сеанс работы с системой (в рамках одного сеанса работает только один пользователь). Правила управления доступом задаются с помощью следующих функций:
user : S U –для каждого сеанса s S эта функция определяетпользователя, который осуществляет этот сеанс работы с системой: user(s) u | u U ;
roles –для каждого сеанса s S данная функция определяетподмножество ролей, которые могут быть одновременно доступны пользователю в ходе этого сеанса: roles(s) {ri | (user (s),ri ) UA};
permissions : S P –для каждого сеанса s S эта функция задает набор доступных в нем полномочий, который определяется путем объединения полномочий всех ролей, задействованных в этом се-
ансе: permissions(s) r roles(s){pi | ( pi , r) PA}.
В качестве критерия безопасности ролевой модели используется следующее правило: система считается безопасной, если любой пользователь системы, работающий в сеансе s S , может осуществлять действия, требующие полномочия p P только в том случае, если p permissions(s).
Существует несколько разновидностей ролевых моделей управления доступом, различающихся видом функций user , roles и permissions ,а также ограничениями,накладываемыми на множества
PA и UA .
В частности, может определяться иерархическая организация ролей, при которой роли организуются в иерархии, и каждая роль на-следует полномочия всех подчиненных ей ролей.
Могут быть определены взаимоисключающие роли (т. е. такие роли, которые не могут быть одновременно назначены одному пользователю). Также может вводиться ограничение на одновременное использование ролей в рамках одной сессии, количественные ограничения при назначении ролей и полномочий, может производиться группировка ролей и полномочий.
1.5 Процесс построения и оценки системы обеспечения безопасности. Стандарт ISO/IEC 15408
Одним из наиболее распространенных современных стандартов в области информационной безопасности является международный стандарт ISO/IEC 15408. Он был разработан на основе стандарта «Общие критерии безопасности информационных технологий» вер.2.1. В 2002 году этот стандарт был принят в России как ГОСТ Р ИСО/МЭК 15408-2002 «Информационная технология. Методы обеспечения безопасности. Критерии оценки безопасности информационных технологий» [4], часто называемый в литературе «Общие критерии».
Стандарт разработан таким образом, чтобы удовлетворить потребности трех групп специалистов: разработчиков, экспертов по сертификации и пользователей объекта оценки. Под объектом оценки (ОО) в стандарте понимаются «подлежащие оценке продукт информационных технологий (ИТ) или система с руководствами администратора и пользователя». К таким объектам относятся, например, операционные системы, прикладные программы, информационные системы и т. д. Ранее, в разделе 1.2 пособия рассматривалась определяемая стандартом взаимосвязь высокоуровневых понятий в области информационной безопасности (Рисунок 1.1).
«Общие критерии» предусматривают наличие двух типов требований безопасности – функциональных и доверия. Функциональные требования относятся к сервисам безопасности, таким как управление доступом, аудит и т. д. Требования доверия к безопасности относятся к технологии разработки, тестированию, анализу уязвимостей, поставке, сопровождению, эксплуатационной документации и т. д.
Описание обоих типов требований выполнено в едином стиле: они организованы в иерархию «класс – семейство – компонент – элемент». Термин «класс» используется для наиболее общей группировки требований безопасности, а элемент – самый нижний, неделимый уровень требований безопасности. В стандарте выделены 11 классов функциональных требований:
- аудит безопасности;
- связь (передача данных);
- криптографическая поддержка (криптографическая защита);
- защита данных пользователя;
- идентификация и аутентификация;
- управление безопасностью;
- приватность (конфиденциальность);
- защита функций безопасности объекта;
- использование ресурсов;
- доступ к объекту оценки;
- доверенный маршрут/канал.
Основные структуры, определяемые «Общими критериями» – это профиль защиты и задание по безопасности. Профиль защиты – это независимая от реализации совокупность требований безопасности для некоторой категории ОО, отвечающая специфическим запросам потребителя. Профиль состоит из компонентов или пакетов функциональных требований и одного из уровней гарантированности. Структура профиля защиты представлена на рисунке 1.2.
Профиль определяет «модель» системы безопасности или отдельного ее модуля. Количество профилей потенциально не ограничено, они разрабатываются для разных областей применения (например, профиль «Специализированные средства защиты от несанкционированного доступа к конфиденциальной информации»).
Профиль защиты служит основой для создания задания по безопасности, которое можно рассматривать как технический проект для разработки ОО. Задание по безопасности может включать требования одного или нескольких профилей защиты. Оно описывает также уровень функциональных возможностей средств и механизмов защиты, реализованных в ОО, и приводит обоснование степени их адекватности.
По результатам проводимых оценок, создаются каталоги сертифицированных профилей защиты и продуктов (операционных систем, средств защиты информации и т. д.), которые затем используются при оценке других объектов.
Рисунок 1.2 - Структура профиля защит
ОСНОВЫ КРИПТОГРАФИИ
Основные понятия. Классификация шифров
Исторически криптография (в переводе с греческого – «тайнопись») зародилась как способ скрытой передачи сообщений без сокрытия самого факта их передачи [6]. Для этой цели сообщение, написанное с использованием какого-либо общепринятого языка, преобразовывалось под управлением дополнительной информации, называемой ключом. Результат преобразования, называемый криптограммой,содержит исходную информацию в полном объеме,однакопоследовательность знаков в нем внешне представляется случайной и не позволяет восстановить исходную информацию без знания ключа. Процедура преобразования называется шифрованием, обратного преобразования – расшифровыванием.
Сейчас криптографией принято называть науку о математических методах обеспечения конфиденциальности и аутентичности (целостности и подлинности) информации. Задачей исследования методов преодоления криптографической защиты занимается криптоанализ.Для обозначения совокупности криптографии и криптоанализаиспользуется термин «криптология».
Несмотря на то, что шифры применялись еще до нашей эры, как научное направление современная криптография относительно молода. Одной из важнейших работ в данной области является статья Клода Шеннона (Claude Shannon) «Теория связи в секретных системах», опубликованная в открытой печати в 1949 году. На рисунке 2.1 изображена предложенная Шенноном схема секретной системы [7].
На стороне отправителя имеются два источника информации – источник сообщений и источник ключей. Источник ключей выбирает из множества всех возможных ключей один ключ K, который будет использоваться в этот раз. Ключ передается отправителю и получателю сообщения таким образом, что его невозможно перехватит
Шифровальщик | |||||||||||
противника | |||||||||||
Источник | M | Шифровальщик: | C | Шифровальщик: | M | ||||||
сообщений | FK | FK-1 | |||||||||
к сообщению
Рисунок 2.1 – Схема секретной системы
В связи с тем, что получатель должен иметь возможность вос-становить сообщение M из криптограммы C при известном ключе K, отображение FK должно иметь единственное обратное отображение FK-1,такое что:
MFk1C . | (2.1) |
Секретная система (или в современной терминологии– шифр)определяется как семейство однозначно обратимых отображений множества возможных сообщений во множество криптограмм. Выбор ключа K определяет, какой именно элемент – Fk – будет использоваться. Предполагается, что противнику известна используемая система, т. е. семейство отображений {Fi|i=1..N} и вероятности выбора различных ключей. Однако он не знает, какой именно ключ выбран, и остальные возможные ключи столь же важны для него, как и истинный.
Процесс расшифровывания сообщения для легального получателя информации состоит в применении криптографического отображения, обратного по отношению к отображению, использованному при шифровании.
Процесс расшифровки для противника представляет собой попытку определить сообщение (или конкретный ключ), имея в распоряжении только криптограмму и априорные вероятности различных ключей и сообщений.
Существуют шифры, для которых любой объем перехваченной информации недостаточен для того, чтобы найти шифрующее отображение. Шифры такого типа называются безусловно стойкими. Иными словами, безусловно стойкими являются такие шифры, для которых криптоаналитик (даже если он обладает бесконечными вы-числительными ресурсами) не может улучшить оценку исходного сообщения М на основе знания криптограммы С по сравнению с оценкой при неизвестной криптограмме.
Шифры другого типа характеризуются тем, что при определен-ном объеме перехваченных данных определить ключ (или расшифровать сообщение без знания ключа) становится теоретически возможно. Минимальный объем криптограммы, для которого существует единственное решение криптоаналитической задачи, называется интервалом единственности.Однако,для криптоаналитика,обладающего ограниченными вычислительными ресурсами, вероятность найти это решение за время, в течение которого информация представляет ценность, чрезвычайно мала. Шифры такого типа называются условно стойкими.Их стойкость основана на высокой вычислительнойсложности «взлома» шифра. Большинство применяемых сейчас шифров относятся к этому типу.
Доказано, что безусловно стойкие шифры существуют. Но для их построения необходимо использовать равновероятный случайный
ключ, имеющий длину, равную длине сообщения. При соблюдении этого условия сама процедура преобразования может быть достаточно простой.
Рассмотрим следующий пример. Пусть нужно передать сообщение M, представленное в двоичной кодировке. Вероятность того, что очередной символ сообщения будет 1, равна q, 0 – (1 - q). Крипто-грамма получается путем побитного сложения по модулю 2 (т. е. сложения без переноса старшего разряда) сообщения с бесконечным, случайным, равномерно распределенным ключом K:
СMK | (2.2) |
Подобное преобразование также называют гаммированием, а ключ K – ключевой гаммой. Найдем вероятность того, что очередной символ криптограммы будет равен 1. Это произойдет, если в исходном сообщении соответствующий символ равен 0, а в ключе – 1, или в сообщении – 1, в ключе – 0. Эти пары событий взаимоисключающие, так что следует применить формулу сложения вероятностей:
p(C1)(1q)0,5q0,50,5 . | (2.3) |
Таким образом, вероятность появления в криптограмме единицы не зависит от статистических свойств исходного сообщения. И анализируя криптограмму, нарушитель не сможет получить дополнительной информации об исходном сообщении. Надо отметить, что подобными свойствами обладает только случайный бесконечный равномерно распределенный ключ. Если вероятность появления в ключе единицы отлична от 0,5, то q в формуле (2.4) не удастся исключить из результата.
Рассмотрим, какими же свойствами должен обладать хороший шифр. Во-первых, шифрование и расшифровывание должно осуществляться достаточно быстро в тех условиях, в которых применяется шифр (с использованием ЭВМ, при шифровании вручную и т. п.). Во-вторых, шифр должен надежно защищать сообщение, т. е. быть стой-ким к раскрытию.
Криптостойкость –стойкость шифра к раскрытию методамикриптоанализа. Она определяется вычислительной сложностью алго-ритмов, применяемых для атаки на шифр. Вычислительная сложность измеряется временной и емкостной сложностями [8].
Для определения сложности алгоритма с конкретной задачей связывается число, называемое размером задачи, которое характеризует количество входных данных. Например, для задачи умножения чисел размером может быть длина наибольшего из сомножителей.
Временная сложность (или просто сложность) –это время,затрачиваемое алгоритмом для решения задачи, рассматриваемое как функция от размера задачи. Нередко сложность измеряют количеством некоторых элементарных операций. Емкостная сложность – объем памяти, необходимой для хранения полученных в ходе работы данных, как функция от размера задачи.
Очень важное требование к стойкому шифру было сформулировано в XIX веке голландским криптографом Огюстом Керкгоффсом (Auguste Kerckhoffs). В соответствии с ним, при оценке надежности шифрования необходимо предполагать, что противник знает все об используемой системе шифрования, кроме применяемых ключей. Данное правило отражает важный принцип организации защиты ин-формации: защищенность системы не должна зависеть от секретности долговременных элементов (т. е. таких элементов, которые невозможно было бы быстро изменить в случае утечки секретной информации).
Существует несколько обобщенных постановок задачи криптоанализа. Все они формулируются в предположении, что криптоаналитику известны применяемый алгоритм шифрования и полученные криптограммы. Могут рассматриваться:
- атака при наличии только известной криптограммы;
- атака при наличии известного фрагмента открытого текста. В этом случае, криптоаналитик имеет доступ к криптограммам, а также
к соответствующим некоторым из них исходным сообщениям. Задача – определить использующийся при шифровании ключ или расшифровать все остальные сообщения. Разновидность данного класса атак – атака с возможностью выбора открытого текста (когда криптоаналитик может навязать текст для шифрования и получить соответствующую ему криптограмму);
- атаки, использующие особенности реализации аппаратных шифраторов. В частности, может анализироваться тепловое и электромагнитное излучение от устройств, распространение ошибок после однократного воздействия на аппаратуру (по цепи электропитания или иным образом) и т. д.;
- атака методом полного перебора множества возможных ключей. Данная атака также называется «атака методом грубой силы»
(англ. «brut force»).
Виды шифров
Рассмотрим классификации шифров по разным признакам. По типу преобразований шифры можно разделить на следующие группы:
- шифры замены (подстановки);
- шифры перестановки;
- шифры гаммирования;
- шифры на основе аналитических преобразований.
При этом надо учитывать, что некоторые современные шифры совместно используют преобразования различных типов.
Шифры замены (подстановки):преобразование заключается втом, что символы шифруемого текста заменяются символами того или иного алфавита (алфавита криптограммы) в соответствии с зара-нее обусловленной схемой замены.
Подстановки разделяются на одноалфавитные и многоалфавитные.В первом случае,определенному символу алфавита исходно-го сообщения всегда ставится в соответствие один и тот же символ алфавита криптограммы. Один из наиболее известных шифров данного класса – шифр Цезаря. В нем каждая буква алфавита заменялась наследующую через одну после нее. В случае русского алфавита, «а» меняется на «в», «б» на «г» и т. д. Алфавит «замыкался», поэтому «я» надо было заменять на «б». В качестве ключа в данном случае выступает число, на которое надо «сдвигать» символ алфавита, в нашем примере – 2. К достоинству таких шифров относится простота преобразования. Но они легко взламываются путем сравнения частоты появления различных символов в естественном языке и криптограмме.
При использовании многоалфавитных подстановок, учитываются дополнительные параметры (например, положение преобразуемого символа в тексте) и в зависимости от них символ исходного алфавита может заменяться на один из нескольких символов алфавита шифртекста. Например, нечетные символы сообщения заменяются по од-ному правилу, четные – по другому.
Шифры перестановок:шифрование заключается в том,чтосимволы исходного текста переставляются по определенному правилу в пределах блока этого текста. При достаточной длине блока и сложном, неповторяющемся порядке перестановки, можно достичь приемлемой стойкости шифра.
Шифрование гаммированием заключается в том, что символы шифруемого текста складываются с символами некоторой случайной последовательности, называемой гаммой шифра или ключевой гаммой. Стойкость шифрования определяется длиной (периодом) неповторяющейся части гаммы шифра, а также сложностью предугадыва-ния следующих элементов гаммы по предыдущим.
Шифрование аналитическими преобразованиями подразумевает использование аналитического правила (формулы) по которому преобразуется текст.
По типу использования ключей шифры делятся на:
- симметричные, использующие для шифрования и расшифровывания информации один и тот же ключ;
- асимметричные, использующие для шифрования и расшифровывания два различных ключа. Данный тип шифров будет подробно рассматриваться в разделе 2.4.
По размеру преобразуемого блока шифры делятся на блочные и потоковые.
Блочные шифры осуществляют преобразование информацииблоками фиксированной длины. Если длина шифруемого сообщения некратна размеру блока, то его добавляют до нужной длины последовательностью специального вида. Например, это может быть последовательность 100…0. После расшифровки, последний блок просматривают справа налево и отбрасывают «хвост» до первой единицы включительно. Чтобы подобное дополнение было применимо во всех случаях, если сообщение кратно длине блока, в его конец надо доба-вить целый блок указанного вида.
Потоковые шифры предназначены для преобразования сообщения поэлементно (элементом может быть бит, символ и т. п.). Примером такого вида шифров являются шифры гаммирования.
Симметричные шифры
Схема Фейстеля
Современные блочные шифры часто строятся на базе многократного повторения некоторого набора операций преобразования, называемых раундом шифрования.
В каждом раунде используется некоторая часть ключа, называемая раундовым ключом. Порядок генерации и использования раундовых ключей называется расписанием использования ключа шифрования.
В общем виде подобное итеративное преобразование может быть описано следующей формулой (2.4):
BiE(Bi1, Ki ) , | (2.4) |
где E – раундовая функция шифрования, Bi – выходной блок, Bi 1 – входной блок для i -го раунда, Ki – ключ, используемый на i -м раунде; i 1 N , где N – число раундов. Преобразование E должно быть обратимо. Пусть D – раундовая функция дешифрования. Тогда раунд обратного преобразования описывает формула (2.5):
BiD(Bi1, KNi1) | (2.5) |
Здесь надо обратить внимание на расписание | использования |
ключей в случае прямого и обратного преобразования.
Для разработки итерационных блочных шифров широко используется схема, предложенная в начале 1970-х годов Хорстом Фейстелем (Horst Feistel). Данная схема, также называемая сетью Фейстеля, приведена на рисунке 2.1. Ее достоинство заключается в том, что она позволяет использовать любые (в том числе необратимые) функции F для реализации обратимых шифрующих преобразований.
Рисунок 2.2 - Прямое преобразование по схеме Фейстеля
Входной блок сообщения разбивается на два равных по длине полублока: левый – L и правый – R.
Прямое преобразование осуществляется в соответствии со следующими соотношениями:
Li Ri 1 ,
RiLi1F (Ri1, Ki ) , | (2.6) |
где – операция побитного сложения по модулю 2 (в табл.2.1 приведено ее определение). Тогда исходный блок данных – это L0 | R0 , а LN | RN –это выходной блок данных.
Таблица 2.1
Операция сложения по модулю 2
X | Y | XY | ||||||||
Рисунок 2.3 - Обратное преобразование по схеме Фейстеля
Как видно из таблицы 2.1, для всех возможных значений операндов выполняется соотношение: (X Y) Y=X. Именно это свойство и позволяет при преобразовании использовать в числе прочих необратимые функции F и, несмотря на это, иметь возможность провести обратное преобразование. Обратное преобразование по схеме Фейстеля представлено на рисунке 2.3 и описывается формулами:
Ri Li 1,
LiRi 1F(Li 1, KN i 1). | (2.7) |
Шифр DES
Алгоритм шифрования DES (от англ. «Data Encryption Standard») был опубликован в 1977 году и предназначался для защиты важной, но несекретной информации в государственных и коммерческих организациях США. Реализованные в нем идеи были во многом позаимствованы в более ранней разработке корпорации IBM – шифре «Люцифер» (а как раз в IBM работал Хорст Фейстель, автор рассмотренной в предыдущем параграфе схемы). Но для своего времени «Люцифер» был слишком сложным и его реализации отличались низким быстродействием.
Шифр DES является блочным – преобразования в нем проводятся блоками по 64 бита. Ключ также 64-битный, но значащими являются только 56 бит – каждый 8-й разряд использовался для контроля четности (шифр разрабатывался тогда, когда аппаратура была не слишком надежной и подобные проверки были необходимы). Обобщенная схема алгоритма представлена на рисунке 2.4.
Конечная перестановка – IP-1 – является обратной по отношению к начальной – IP. Задающие их таблицы жестко определены стандартом (таблицы можно узнать из официального описания стандарта, также они приводятся, например в [9]).
Раунды шифрования стоятся в соответствии с рассмотренной ранее схемой Фейстеля (Рисунок 2.2). Шифрование производится в 16 раундов. Схема раундовой функции F представлена на рисунке 2.5.
Исходный текст | ||
Перестановка IP | ||
16 раундов | Шифрование | ключ |
Перестановка IP-1 |
Криптограмма
Рисунок 2.4 - Обобщенная схема шифра DES
Рисунок 2.5 - Схема раундовой функции шифра DES
Сначала 32-битный правый полублок преобразуемого текста расширяется до 48 бит с помощью функции расширения E. Эта функция производит дублирование и перестановку некоторых элементов блока. В таблице 2.2 показано, как эта функция работает. После расширения в первых позициях полученного 48-битного блока будут стоять 32-й, 1-й и т. д. биты входного блока.
Таблица 2.2
Функция E – расширение блока
После расширения, полученный 48-разрядный блок складывается побитно по модулю 2 с раундовым ключом Ki, схема генерации которого будет рассмотрена несколько ниже.
Далее производится подстановка по таблицам S1, …, S8, в результате которой каждому 6-разрядному входному значению ставится в соответствие 4-разрядное выходное. Таким образом, получив на входе 48 бит, на выходе – снова имеем 32. Si представляет собой таблицу с 16-ю столбцами и 4-мя строками, содержащую 4-битные элементы. Таблицы подстановки, также как и перестановки, четко определены стандартом.
Пусть на вход подстановки подается 6-разрядный блок B=b1b2…b6.Тогда совокупность старшего и младшего разрядов b1b6 будет указывать номер строки, а четырехбитное значение b2b3b4b5 – номер столбца. Из ячейки на пересечении найденных строки и столбца будет браться выходное значение подстановки. Полученный соединением выходных значений подстановок S1, …, S8 32-битный блок подвергается перестановке P, порядок которой также строго определен в стандарте.
Рассмотрим теперь порядок формирования раундовых ключей на основе секретного. В общем виде алгоритм представлен на рисунке 2.6.
Рисунок 2.6 - Вычисление раундовых ключей
Как было ранее отмечено, секретный ключ шифра DES имеет длину 64 бита, но каждый 8-й предназначается для контроля четности, поэтому эффективная длина ключа – 56 бит. Функция PC1 (сокращение «PC» от англ. «Permuted Choice» – выбор с перестановкой) осуществляет перестановку элементов исходного блока, отбрасывая
8-й, 16-й и т. д. биты. После перестановки полученный блок делится на полублоки C0 и D0 длиной 28 бит каждый.
В зависимости от номера шага, полублоки Ci и Di независимо друг от друга преобразуются путем циклического сдвига влево на одну или две позиции (сдвиг на одну позицию производится на 1, 2, 9 и 16-м шагах, в остальных случаях – сдвиг на две позиции). Функция PC2 преобразует блок Ci|Di,переставляя элементы и отбирая48бит,которые и формируют раундовый ключ шифрования Ki (i=1…16).
Для того, чтобы иметь возможность использовать шифр DES для решения различных криптографических задач, определены 4 режима его работы:
- электронная кодовая книга (англ. «Electronic Code Book» –
ECB);
- сцепление блоков шифра (англ. «Cipher Block Chaining» –
CBC);
- обратная связь по шифртексту (англ. «Cipher FeedBack» –
CFB);
- обратная связь по выходу (англ. «Output FeedBack» – OFB).
При использовании режима ECB, защищаемое сообщение разбивают на 64-битные блоки Mi. Каждый такой блок шифруют независимо от других, с использованием одного и того же ключа шифрования (Рисунок 2.7). При расшифровывании криптограммы Ci также преоб-разуют независимо.
Достоинством данного режима является простота его реализации. Главный недостаток режима ECB заключается в том, что если в исходном сообщении есть повторяющиеся блоки, то и значения соответствующих блоков криптограммы будет совпадать. А это даст криптоаналитику противника дополнительную информацию о содержании сообщения. Поэтому режим ECB рекомендуют использовать для защиты небольших объемов данных (например, криптографических ключей), где вероятность появления совпадающих блоков сообщения невелика.
Рисунок 2.7 - Шифрование (а) и расшифровывание (б) в режиме ECB
Указанного выше недостатка лишен режим CBC. Исходное сообщение, как и в предыдущем случае, разбивается на блоки Mi по 64 бита. Первый блок складывается побитно по модулю 2 с 64-битным блоком, называемым инициализирующим вектором – IV, который известен обеим сторонам взаимодействия, периодически ими меняется и держится в секрете от других. Блок исходного сообщения M2 модифицируется с использованием блока криптограммы C1 и т. д. Аналогичные действия производятся при расшифровывании. Схема преобразования представлена на рисунке 2.8
Рисунок 2.8 - Шифрование (а) и расшифровывание (б) в режиме CB
Режим CBC используется для шифрования больших сообщений. Как легко заметить, последний блок криптограммы зависит от инициализирующего вектора, каждого бита открытого текста и значения секретного ключа. Поэтому его можно использовать для контроля целостности и аутентификации сообщений, задавая ему фиксированное значение и проверяя его после расшифровки.
Режим CFB используется в тех случаях,когда длина преобразуемого блока отличается от 64 бит. Пусть необходимо зашифровать сообщение, считываемое последовательно блоками по r бит, где 1 ≤ r ≤ 64. Для построения преобразования используется сдвиговый регистр I, куда на 1-м шаге преобразования помещается инициализирующий вектор IV. Схема преобразования представлена на рисунке 2.9.
Преобразуемое сообщение M разбито на блоки по r бит, обозначаемые на рисунке Mj. Блок криптограммы Cj будет равен Mj сложенному побитно по модулю 2 с r старшими битами зашифрованного на j-м шаге блока. Шифруемое значение Ij получается путем сдвига предыдущего блока Ij-1 влево на r позиций и записи блока криптограммы Сj-1 в младшие позиции.
При расшифровывании сдвиговый регистр также инициализируется значением IV. Для того, чтобы получить ту же последовательность вспомогательных значений Oj, что и при шифровании, здесь также используется DES шифрование (а не расшифровывание, как например, при обратном преобразовании в режиме CBC).
Режим OFB также позволяет шифровать блоки,меньшие подлине, чем 64 бита. Его схема представлена на Рисунок 2.10. Аналогично режиму CFB сдвиговый регистр сначала содержит значение инициализирующего вектора. Есть два варианта модификации его значения. На рисунке представлен вариант с полной заменой на j-м шаге содержимого сдвигового регистра вспомогательным значением Oj-1. Второй вариант построения схемы предполагает, как и в случае CFB, сдвиг Ij-1 влево на r разрядов и запись в младшие разряды сдвигового регистра старших r разрядов Oj-1. При использовании режима OFB важно для каждого сеанса шифрования данных использовать новое начальное состояние сдвигового регистра (его можно передавать, в том числе, и открытым тек-стом). Связано это с тем, в режимах OFB и CFB генерируется псевдо-случайная последовательность чисел, которая накладывается на блоки открытого текста. В случае использования режима OFB, если дважды используется один и тот же инициализирующий вектор и ключ шифрования, то и генерируемые последовательности будут совпадать.
Некоторое время шифр DES считался достаточно безопасным. Но по мере развития вычислительной техники, короткий 56-битный ключ привел к тому, что атака путем полного перебора ключевого множества стала относительно легко реализуемой. Чтобы увеличить стойкость алгоритма и в то же время сохранить существующие наработки (в виде программных и аппаратных реализаций алгоритма), было использовано многократное шифрование.
Сначала было предложено использовать повторное шифрование на разных ключах. Обозначим шифрование на ключе k как Ek, а расшифровывание как Dk. Тогда предлагаемая схема прямого преобразования описывалась как С=Ek2(Ek1(M)), обратного – M=Dk1(Dk2(C)). Однако впоследствии было доказано, что из-за того, что два раза используется одно и то же преобразование, против подобной схемы может быть успешно применена атака «встреча посередине». Ее суть заключается в том, что если хранить в памяти большой объем предвычислений (расчет криптограммы для всех возможных значений ключа), то можно взломать приведенную выше схему двукратного шифрования за 2n+1 попыток (вместо 22n как было бы при удвоении длины ключа).
Более надежной оказалась схема, включающая шифрование, расшифровывание и повторное шифрование на различных ключах. Данный шифр получил название Triple DES.
Использование в шифре Triple DES различных ключей и преобразований (шифрование и расшифровывание) позволяет противостоять атаке «встреча посередине». В первом случае, выбор ключей производится так, как показано в верхней части рисунка: сначала производится шифрование на ключе K1, далее – расшифровывание на ключе K2, после – шифрование на ключе K1. Суммарная длина ключа – 112 бит. Более надежной считается схема с использованием в третьем преобразовании еще одного ключа – K3 (изображена в нижней части рисунка). Тогда суммарный ключ будет длиной 168 бит.
За счет более высокой надежности в настоящее время шифр Triple DES используется чаще, чем шифр DES.
Шифр ГОСТ 28147-89
Данный алгоритм симметричного шифрования был разработан в
СССР и в качестве стандарта утвержден в 1989 году. Он считается достаточно стойким и широко используется в России теми предпри-ятиями и организациями, которым, в силу особенностей сферы их деятельности, необходимо применять сертифицированные средства криптографической защиты данных (это государственные и военные структуры, организации банковской сферы и т. д.).
Этот шифр преобразует сообщение 64-битными блоками, преобразование осуществляется в соответствии со схемой Фейстеля в 32 раунда, размер ключа – 256 бит. Алгоритм предусматривает 4 режима работы:
- шифрование данных в режиме простой замены (аналог режима
ECB для шифра DES);
- шифрование данных в режиме гаммирования (аналог режима
OFB для шифра DES);
- шифрование данных в режиме гаммирования с обратной связью;
- выработка имитовставки.
Ниже будет рассмотрен режим простой замены, являющийся основой для построения других режимов. Схема раунда шифрования приведена на рисунке 2.9.
Рисунок 2.9 - Схема раунда алгоритма ГОСТ 28147-89
Преобразование производится в следующем порядке. Правый полублок Ri-1 складывается по модулю 232 (сложение 32-разрядных двоичных значений без переноса старшего разряда) с раундовым ключом Kj. Далее выполняется подстановка, задаваемая таблицами S0,…, S7,и полученное значение преобразуется с помощью циклического сдвига влево на 11 позиций. После этого выполняется побитное сложение по модулю 2 с левым полублоком Li-1 и перестановка полу-блоков.
Расписание использования раундовых ключей формируется следующим образом. 256-битный секретный ключ K представляется в виде сцепления 8-ми 32-битных подключей K=K7|K6|K5|K4|K3|K2|K1|K0. На первом раунде берется 0-й подключ, на втором – 1-й и т. д., на 9-м раунде опять используется 0-й подключ, на 24-м – 7-й, а вот на 25-м раунде преобразования вновь используется 7-й и далее ключи используются в обратном порядке. Иными словами, номер раундового ключа j зависит от номера раунда i следующим образом:
j (i 1) mod 8 для 1 i 24 ,
j(32i) mod 8для | 25i32 . | (2.8) |
Подстановка проводится после разбиения входного значения на 4-битные подблоки. После того как правый полублок R был сложен с раундовым подключем, он разбивается на 8 частей R=R7|R6|R5|R4|R3|R2|R1|R0.Таблица подстановок Si представляет собойвектор с 16-ю 4-битовыми элементами. Из нее берется элемент, номер которого совпадает со значением Ri, пришедшим на вход подстановки. Надо отметить, что значения таблиц подстановки не определены стандартом, как это сделано, например, в шифре DES. В то же время, стойкость алгоритма существенно зависит от их правильного выбора.
Считается, что конкретные значения этих таблиц должны храниться в секрете и это своеобразные ключевые элементы, которые являются общими для всей организации или подразделения и редко из-меняются.
По сравнению с шифром DES у ГОСТ 28147-89 есть следующие достоинства:
- существенно более длинный ключ (256 бит против 56 у шифра DES), атака на который путем полного перебора ключевого множест-ва на данный момент представляется невыполнимой;
- простое расписание использования ключа, что упрощает реа-лизацию алгоритма и повышает скорость вычислений.
2.2.4 Шифр Blowfish
Шифр Blowfish был разработан известным американским крип-тографом Брюсом Шнейером (Bruce Schneier) в 1993 году. Алгоритм ориентирован на программную реализацию на 32-разрядных микропроцессорах. Его отличают высокая скорость и криптостойкость. Также в качестве отличительной особенности можно назвать возможность использовать ключ переменной длины. Шифр блочный, размер входного блока равен 64 битам. Преобразование блока выполняется в 16 раундов (есть версия с 111-ю раундами). Ключ переменной длины, максимально 448 бит.
До начала шифрования или расшифровывания данных производится расширение ключа. В результате, на базе секретного ключа получают расширенный, который представляет собой массив из 18 раундовых ключей K1, …, K18 (размерность Ki 32 бита) и матрицу подстановок Q c 4-мя строками, 256-ю столбцами и 32-битными элементами.
Q(1) | Q(1) | ||||
Q(2) | Q(2) | ||||
Q = | . | (2.9) | |||
Q(3) | Q(3) | ||||
Q(4) | Q(4) | ||||
Данная матрица используется для задания нелинейной функции шифрующего преобразования F(X), где X – 32-битный аргумент. X