Опубликован: 24.10.2016 | Доступ: свободный | Студентов: 1312 / 429 | Длительность: 21:30:00
Лекция 3:

Методы защиты информации в компьютерных системах и сетях

3.5. Криптосистемы с секретным ключом

3.5.1. Модель симметричной криптосистемы

В системе, показанной на рис. 3.11, в информационных отношениях принимают участие три действующих лица: отправитель (абонент А) и получатель информации (абонент В), а также противник W. Современные одноключевые криптосистемы предполагают использование взаимно обратных преобразований E и D блоков данных фиксированной длины. Для задания блочной криптосистемы необходимо определить:

  • числовые параметры криптоалгоритма - разрядность n шифруемых блоков данных, объем ключевой информации, размер раундового ключа, число раундов шифрования;
  • раундовую функцию F шифрования;
  • алгоритм получения раундовых ключей из исходного ключа K_{AB}.
Модель криптосистемы с секретным ключом

увеличить изображение
Рис. 3.11. Модель криптосистемы с секретным ключом

Задача абонента А заключается в том, чтобы передать получателю конфиденциальное сообщение M, состоящее из m блоков длины n, т.е.:

M = M_1 M_2, \ldots, M_i, \ldots M_m, i = 1, \ldots, m.

Задача абонента В заключается в том, чтобы, получив переданное сообщение

C = C_1 C_2, \ldots, C_i, \ldots, C_m, i = 1, \ldots, m,

понять его содержание. Для того чтобы только получатель мог прочитать посланное сообщение, отправитель преобразует открытый текст M с помощью функции зашифрования Е и секретного (известного только А и В) ключа K_{AB} в шифртекст C:

C = E (M) = K_{AB} \{M\},

который и поступает в канал связи. Получатель восстанавливает исходный текст сообщения с помощью функции расшифрования D и того же секретного ключа K_{AB}:

M = D (C) = K_{AB} \{C\}.

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

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

3.5.2. Классификация угроз противника. Основные свойства криптосистемы

Таким образом, имеют место три возможных типа угроз со стороны противника:

  • нарушение секретности информации - дешифрование (полное или частичное) переданного сообщения или получение информации о его сути;
  • нарушение целостности информации - внесение в сообщение искажений, которые законный получатель не смог бы обнаружить;
  • нарушение подлинности информации - формирование ложных сообщений, которые законный получатель В принял бы за подлинные, пришедшие от А.

Дешифрование переданного сообщения противником возможно в случае вычисления им секретного ключа либо нахождения алгоритма, функционально эквивалентного D и не требующего знания K_{AB}.

Соответственно задачей криптографа является обеспечение требуемого уровня секретности (криптостойкости) и аутентичности (имитостойкости) системы. Секретность - это защищенность криптосистемы от несанкционированного ознакомления с содержимым зашифрованных сообщений. Аутентичность - это защищенность криптографической системы от навязывания искаженных или фальсифицированных данных.

3.5.3. Классификация атак на криптосистему с секретным ключом

В симметричной криптосистеме различают пять уровней атак со стороны криптоаналитика:

  • атака на основе только шифротекста (ciphertext-only attack): противнику известны n шифротекстов, зашифрованных на одном и том же ключе K;
  • атака на основе известного (невыбранного) открытого текста (known-plaintext attack): противнику известны n шифротекстов, зашифрованных на одном и том же ключе K, а также соответствующие им открытые тексты;
  • атака на основе выбранного открытого текста (chosen-plaintext attack): противник может выбрать необходимое число открытых текстов и получить соответствующие им шифровки (при этом в случае простой атаки такого типа все открытые тексты могут быть выбраны до получения первой шифровки; в случае адаптивной атаки противник выбирает очередной открытый текст, зная шифровки всех предыдущих);
  • атака на основе выбранного шифротекста (chosen-ciphertext attack): противник может выбрать необходимое количество шифровок и получить соответствующие им открытые тексты (в случае простой атаки такого типа все шифровки должны быть выбраны до получения первого открытого текста; в случае адаптивной атаки противник выбирает очередную шифровку, зная открытые тексты всех предыдущих);
  • атака на основе выбранного текста (chosen-text attack): противник может атаковать криптосистему "с обеих сторон", т.е. выбирать шифровки и дешифровать их, а также выбирать открытые тексты и шифровать их (атака такого типа может быть простой, адаптивной, простой с одной стороны и адаптивной - с другой).

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

Атаки перечислены в порядке возрастания их силы. Различие в степени действенности, например, атак первых трех уровней можно показать на примере шифра простой (одноалфавитной) замены. При анализе на основе только шифротекста для раскрытия этого простейшего шифра требуется провести некоторую работу, аналогичную той, которую провели герои произведений Э. По ("Золотой жук") и А. Конан-Дойля ("Плящущие человечки"). В случае атаки на основе известного открытого текста раскрытие шифра становится тривиальным в особенности после того, как в открытых текстах встретятся большинство символов используемого алфавита. При атаке на основе выбранного открытого текста в случае использования английского алфавита шифр будет вскрыт сразу после получения шифровки K \{ABC, ..., XYZ\}.

3.5.4. Режимы использования блочных шифров

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

Наиболее очевидное решение задачи закрытия сообщений, состоящих из нескольких блоков, заключается в независимом шифровании каждого блока на одном и том же ключе K_{AB}. Данная классическая схема блочного шифрования, приведенная на рис. 3.12, известна под названием режима электронной кодовой книги (Electronic Code Book - ECB). В ГОСТ 28147-89 данный режим назван режимом простой замены.

Шифрование в режиме ECB

Рис. 3.12. Шифрование в режиме ECB

Режим имеет три существенных недостатка. Так как блоки шифруются независимо друг от друга, при зашифровании двух или более одинаковых блоков получаются одинаковые блоки шифротекста, и наоборот. Данное свойство режима ECB позволяет противнику делать выводы о тождественности тех блоков открытого текста, которым соответствуют одинаковые блоки шифротекста. В тех случаях, когда длина исходного сообщения не кратна n, возникает проблема дополнения последнего блока до нужного размера. Дополнение последнего неполного блока некоей фиксированной комбинацией битов в некоторых случаях может позволить противнику методом перебора определить этот неполный блок. И наконец, данный режим нечувствителен к выпадению или вставке целого числа блоков шифротекста.

Отмеченные недостатки ограничивают область использования режима ECB только шифрованием ключевой информации, объем которой обычно кратен n, при этом качественные ключи не могут содержать повторяющихся блоков. Применение режима ECB оправдано также в базах данных, когда требуется произвольный доступ для чтения/записи к различным полям.

Все остальные режимы реализуют комбинированные схемы шифрования (см. параграф 3.4) и обеспечивают зависимость каждого блока шифротекста не только от соответствующего блока открытого текста, но и от его номера. На рис. 3.13 показана схема шифрования в режиме сцепления блоков шифротекста (Ciphertext Block Chaining - CBC), где секретность n-разрядного блока С_0 (синхропосылки или вектора инициализации (IV - initialization vector)) не является обязательной.

Режим шифрования СВС: а - зашифрование, б - расшифрование

увеличить изображение
Рис. 3.13. Режим шифрования СВС: а - зашифрование, б - расшифрование

Отличительными особенностями режима CBC являются зависимость при зашифровании i-го блока шифротекста от всех предшествующих блоков открытого текста и зависимость при расшифровании каждого блока открытого текста M_i только от двух блоков M_{i–1} и M_i шифротекста. Первое свойство делает пригодным использование режима для решения задач контроля целостности информации. Второе свойство делает режим самосинхронизирующимся: одиночная ошибка при передаче (ошибка при передаче одного блока) может привести к неправильному расшифрованию только двух блоков. Как будет видно в дальнейшем, этот режим используется и в криптосистемах с открытым ключом в том случае, если размер шифруемого сообщения больше, чем размер блока.

Схема самосинхронизирующегося поточного режима блочного шифрования, обратная связь по шифротексту (Ciphertext Feedback - CFB), показана на рис. 3.14,

где S_0 - синхропосылка (начальное состояние элементов памяти генератора ПСП),
Q - элементы памяти генератора ПСП, разрядность блоков исходного текста t <= n.

Режим шифрования CFB: а - зашифрование, б - расшифрование

Рис. 3.14. Режим шифрования CFB: а - зашифрование, б - расшифрование

В ГОСТ 28147-89 аналогичный режим назван режимом гаммирования с обратной связью. Свойства данной схемы шифрования аналогичны режиму CBC: при зашифровании каждый блок шифротекста зависит от всего предшествующего ему открытого текста, при расшифровании отсутствует эффект "размножения" ошибок.

Схема синхронного поточного режима блочного шифрования, обратной связи по выходу (Output Feedback - OFB), показана на рис. 3.15. Эта схема может рассматриваться как частный случай схемы щифрования информации методом гаммирования, приведенной выше на рис. 3.9. Гамма шифра снимается с выходов генератора ПСП, реализованного на основе регистра разрядности n, в цепи обратной связи которого используется функция зашифрования E. Последовательность g = g_1 g_2 \ldots g_i \ldots g_m не зависит от открытого текста, и поэтому всякий раз при фиксированных K_{AB} и S_0 будет вырабатываться одна и та же гамма. Данный факт требует при шифровании на одном ключе двух различных массивов данных использовать различные синхропосылки.

Режим шифрования OFB:  а - зашифрование, б - расшифрование

Рис. 3.15. Режим шифрования OFB: а - зашифрование, б - расшифрование

При синхронном поточном шифровании в режиме счетчика (Counter Mode) генератор ПСП имеет ярко выраженную двухступенчатую структуру, что видно из схемы, приведенной на рис. 3.16.

Режим шифрования Counter: а - зашифрование, б - расшифрование

Рис. 3.16. Режим шифрования Counter: а - зашифрование, б - расшифрование

Первая ступень - это либо n-разрядный счетчик, изменения состояния которого задаются формулой S_i = S_{i – 1} + 1, либо генератор n-разрядных кодов, единственное требование к которому - максимально возможный период выходной последовательности. Каждый n-разрядный двоичный набор с выхода счетчика или генератора кодов первой ступени поступает на вход функции зашифрования E, результатом действия которой становится очередной элемент гаммы:

g_i = E (S_{i – 1}) = K_{AB} {S_{i – 1}}.

Так же как и в режимах CFB и OFB, для обратимости процедур шифрования при зашифровании и расшифровании должна использоваться одна и та же синхропосылка.

В ГОСТ 28147-89 аналогичный режим называется режимом гаммирования.

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

  • при зашифровании и расшифровании используется одна и та же функция E;
  • любой элемент (бит, байт, блок и т.п.) информационной последовательности шифруется независимо от других;
  • изменение любого бита шифротекста на противоположное значение приводит после расшифрования к аналогичному изменению соответствующего бита открытого текста;
  • повторное наложение той же гаммы g на зашифрованную последовательность С дает на выходе исходную последовательность M;
  • шифрование нулевой последовательности дает на выходе гамму;
  • если известны две последовательности С ^{(1)} и С ^{(2)}, зашифрованные с использованием одной и той же гаммы, и известна последовательность M ^{(1)}, то последовательность M ^{(2)} может быть легко вычислена по формуле

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

Режим счетчика следует признать более качественным, чем режим OFB, учитывая что во втором случае криптостойкая функция E, используемая в цепи обратной связи генератора ПСП, вовсе не гарантирует максимально возможный период гаммы. Кроме того, если в режиме счетчика при реализации алгоритма Е, не используемого в цепи обратной связи генератора ПСП, возникает случайное искажение информации, то при этом искажается только один элемент гаммы, а значит, неправильно расшифровывается только один соответствующий блок.

Приведенные пять режимов использования блочных шифров являются наиболее распространенными. Более того, первые четыре из них в свое время были официально утверждены Национальным бюро стандартов (NBS) США в качестве режимов использования алгоритма DES.

3.5.5. Стандарт криптографической защиты AES-128

Лучшим на сегодняшний день можно признать блочный шифр Rijndael, который в 2001 г. победил в открытом международном конкурсе на принятие нового американского стандарта AES (Аdvanced Encryption Standard). AES заменил морально устаревший (в первую очередь из-за низкой разрядности ключа и неэффективной реализации на современных платформах) DES.

На рис. 3.17 показана схема функции зашифрования AES-128.

Функция зашифрования шифра AES-128

увеличить изображение
Рис. 3.17. Функция зашифрования шифра AES-128

Разрядность блока данных AES-128 равна 128 битам, число раундов преобразования равно 10. Функция E построена с использованием новой архитектуры "квадрат". Промежуточные результаты преобразований, выполняемых в рамках криптоалгоритма AES-128, называются состояниями. Состояние и раундовые ключи шифрования можно представить в виде квадратного массива байтов, имеющего четыре строки и четыре столбца. Разрядность исходного секретного ключа, из которого формируются раундовые ключи, равна 128.

Рассеивающие и перемешивающие свойства шифра иллюстрирует рис. 3.18, из которого видно, что два раунда обеспечивают полное рассеивание и перемешивание информации.

Рассеивание и перемешивание информации в AES-128

увеличить изображение
Рис. 3.18. Рассеивание и перемешивание информации в AES-128

В состав раунда AES-128 входят следующие преобразования:

  • побайтовая замена байтов состояния с использованием фиксированной таблицы замен размером 8 x 256 (SubBytes);
  • побайтовый циклический сдвиг строк результата - i-я строка сдвигается на i байтов влево, i = 0, ..., 3 (ShiftRows);
  • перемешивание столбцов результата (MixColumns);
  • поразрядное сложение по модулю 2 (XOR) результата с раундовым ключом (AddRoundKey).

10-й раунд отличается от остальных - в нем отсутствует предпоследняя операция.

Основные особенности AES-128:

  • новая архитектура "Квадрат", обеспечивающая быстрое рассеивание и перемешивание информации, при этом за один раунд преобразованию подвергается весь входной блок;
  • байт-ориентированная структура, удобная для реализация на 8-разрядных микроконтроллерах (МК);
  • все раундовые преобразования суть операции в конечных полях, допускающие эффективную аппаратную и программную реализацию на различных платформах.

3.5.6. Поточный шифр RC4

В отличие от блочных шифров, функции E которых, как уже отмечалось, строятся по итерационному принципу, при проектировании поточных шифров используется огромное множество приемов и методов, классифицировать которые очень сложно. Однако можно выделить следующие:

  • работа по принципу stop-and-go;
  • перемешивание двух ПСП под управлением третьей;
  • многоступенчатая структура;
  • использование S-блоков с изменяющейся в процессе работы таблицей замен;
  • использование блоков пространственного сжатия информации;
  • использование в качестве строительных блоков генераторов, функционирующих в конечных полях.

Одним из лучших поточных шифров является RC4 - шифр с переменным размером ключа, разработанный Р. Ривестом. Криптоалгоритм работает в режиме OFB, т.е. поток ключевой информации не зависит от открытого текста. Используется 8-разрядный счетчик Q1 и 8-разрядный регистр Q2 и 8-разрядный блок замены (S-блок), таблица замен имеет размерность 8 x 256 и является перестановкой (зависящей от ключа) двоичных чисел от 0 до 255. Таблица формируется по оригинальному алгоритму, принимающему на входе произвольное количество байтов (до 256 включительно) в качестве ключа b_0, b_1, b_2, \ldots, b_{r – 1} и формирующему на выходе перемешанную таблицу замен. Схема генератора дана на рис. 3.19.

Схема генератора ПСП RC4

Рис. 3.19. Схема генератора ПСП RC4

Рассмотрим алгоритм работы 8-разрядного генератора ПСП RC4, иными словами, процедуру генерации очередного байта гаммы. Допустим S (i) и g - содержимое ячейки с адресом i таблицы замен S-блока и очередной байт гаммы.

Один шаг работы генератора ПСП RC4 (формирование очередного байта ПСП):

  • такт работы счетчика: Q1 = (Q1 + 1) mod 2^8;
  • такт работы регистра: Q2 = (Q2 + S (Q1) mod 2^8;
  • ячейки таблицы замен S-блока с адресами Q1 и Q2 обмениваются своим содержимым: S (Q1) <-> S (Q2);
  • вычисление суммы содержимого ячеек таблицы замен S-блока с адресами Q1 и Q2: T = (S (Q1) + S (Q2)) mod 2^8;
  • считывание содержимого ячейки таблицы замен S-блока с адресом Т в качестве выходного байта - очередного элемента гаммы: g = S (T).

Таблица замен S-блока медленно изменяется при использовании, при этом счетчик Q1 обеспечивает изменение каждого элемента таблицы, а Q2 гарантирует, что элементы таблицы изменяются случайным образом.

Алгоритм инициализации таблицы замен S-блока.

  1. Запись в каждую ячейку таблицы замен S-блока ее собственного адреса:

  2. Заполнение байтами ключа другой 256-байтовой таблицы:

  3. Инициализация индекса j : j = 0.
  4. Перемешивание таблицы замен S-блока: