- •Конспект лекций
- •Волгоград 2017 Рекомендуемая литература домашинные методы шифрования
- •История шифрования
- •Шифры замены
- •Шифр Цезаря
- •Шифр Цезаря с ключевым словом
- •Аффинная криптосистема
- •Шифр Полибия
- •Методы вскрытия одноалфавитных систем
- •Частотный анализ
- •Метод полосок
- •Многоалфавитные системы
- •Шифр Вернама
- •Шифр Виженера
- •Шифр c автоключом
- •Шифры перестановки
- •Простой столбцевой перестановочный шифр
- •Перестановочный шифр с ключевым словом
- •Комбинированное использование шифра перестановки и замены
- •Шифровальная машина «Энигма»
- •Системы блочного шифрования и симметричные шифры
- •Режимы шифрования блочных шифров
- •Алгоритм гост 28147-89
- •Простая замена
- •Выработка имитовставки к массиву данных
- •Особенности программной реализации гост 28147-89
- •Стандарт шифрования данных des (Data Encryption Standard)
- •Начальная перестановка
- •Преобразования ключа
- •Перестановка с расширением
- •Подстановка с помощью s-блоков
- •Перестановка с помощью p-блоков
- •Дешифрирование des
- •Режимы des
- •Однонаправленные функции
- •Однонаправленные хэш‑функции
- •Цифровые подписи
- •Алгоритм безопасного хэширования (Secure Hash Algorithm, sha) - скомпрометирован
- •Гост р 34.11‑94
- •Инфраструктура открытых ключей Основы инфраструктуры открытых ключей Идея криптографии с открытым ключом
- •Основные преимущества открытых ключей
- •Сертификат открытого ключа
- •Алгоритмы с открытыми ключами
- •Алгоритм цифровой подписи (digital signature algorithm, dsa)
- •Алгоритм цифровой подписи гост р 34.10-94
- •Система криптографической защиты в ос ms windows
- •Концепция криптопровайдера, интерфейс CryptoApi 1.0
- •Описание интерфейса CryptoApi 2.0
- •Варианты применения криптопровайдеров Защищенная файловая система (Encrypted File System).
- •Криптография при работе в сети.
- •Шифрование ip-трафика.
- •Защищенные соединения.
- •Шифрование и цифровая подпись сообщений электронной почты.
- •Подпись исполняемых модулей.
- •Обзор существующих отечественных криптопровайдеров России
- •Протокол tls/ssl
- •Элементы протокола Криптографические операции
- •Нмас и псевдослучайная функция
- •Протокол Записи
- •Состояния соединения
- •Фрагментация
- •Компрессия и декомпрессия
- •Защита полезной информации записи
- •Вычисление ключей
- •Протокол Рукопожатия
- •Протокол изменения шифрования
- •Криптографические вычисления
- •Архитектура семейства протоколов Ipsec
- •Обзор системы
- •Как работает iPsec
- •Где может размещаться iPsec
- •Безопасные Ассоциации
- •Базы данных безопасной ассоциации
- •Sa и Управление Ключом
- •Ручные технологии
- •Автоматические sa и Управление Ключом
- •Проблемы выполнения
Алгоритм гост 28147-89
Описание стандарта описано в документе «Алгоритм криптографического преобразования данных ГОСТ 28147-89». Помимо процедур шифрования, в документе описан алгоритм выработки имитовставки. Последняя является не чем иным, как криптографической контрольной комбинацией, то есть кодом, вырабатываемым из исходных данных с использованием секретного ключа с целью имитозащиты, или защиты данных от внесения в них несанкционированных изменений.
На различных шагах алгоритмов ГОСТа данные, которыми они оперируют, интерпретируются и используются различным образом. В некоторых случаях элементы данных обрабатываются как
массивы независимых битов,
в других случаях – как целое число без знака,
в третьих – как имеющий структуру сложный элемент, состоящий из нескольких более простых элементов.
Поэтому во избежание путаницы следует договориться об используемых обозначениях.
Элементы
данных в данной статье обозначаются
заглавными латинскими буквами с наклонным
начертанием (например, X).
Через |X|
обозначается
размер элемента данных X
в
битах. Таким образом, если интерпретировать
элемент данных X
как
целое неотрицательное число, можно
записать следующее неравенство: 0
X<2|X|.
Если элемент данных состоит из нескольких элементов меньшего размера, то этот факт обозначается следующим образом:
X = (X0,X1,…,Xn–1) =X0 ||X1 ||…||Xn–1.
Процедура объединения нескольких элементов данных в один называется конкатенацией данных и обозначается символом «||». Естественно, для размеров элементов данных должно выполняться следующее соотношение:
|X| = |X0| + |X1| +…+|Xn-1|.
При задании сложных элементов данных и операции конкатенации составляющие элементы данных перечисляются в порядке возрастания старшинства. Иными словами, если интерпретировать составной элемент и все входящие в него элементы данных как целые числа без знака, то можно записать следующее равенство:
(X0, X1,..., Xn-1) = X0|| X1 ||...|| Xn-1 = X0+ 2 |X0| (X1+ 2|X1| (...(Xn-2 + 2|Xn-2| Xn-1 )...)) (2.3)
В алгоритме элемент данных может интерпретироваться как массив отдельных битов, в этом случае биты обозначаем той же самой буквой, что и массив, но в строчном варианте, как показано на следующем примере:
X = (x0,x1,…,xn–1) = x0 +21·x1+…+2n–1·xn–1 (2.4)
Если над элементами данных выполняется некоторая операция, имеющая логический смысл, то предполагается, что данная операция выполняется над соответствующими битами элементов.
----------------------------------------------------------------------------------------------------
Если внимательно изучить оригинал ГОСТ 28147–89, можно заметить, что в нем содержится описание алгоритмов нескольких уровней. На самом верхнем находятся практические алгоритмы, предназначенные для шифрования массивов данных и выработки для них имитовставки. Все они опираются на три алгоритма низшего уровня, называемые в тексте ГОСТа циклами.
Далее условимся называть их базовыми циклами, чтобы отличать от всех прочих циклов. Они имеют следующие названия и обозначения, последние приведены в скобках и смысл их будет объяснен позже:
цикл зашифрования (32-З);
цикл расшифрования (32-Р);
цикл выработки имитовставки (16-З).
В свою очередь, каждый из базовых циклов представляет собой многократное повторение одной единственной процедуры, называемой для определенности далее в настоящей работе основным шагом криптопреобразования.
Таким образом, чтобы разобраться в ГОСТе, надо понять три следующие вещи:
а) что такое основной шаг криптопреобразования;
б) как из основных шагов складываются базовые циклы;
в) как из трех базовых циклов складываются все практические алгоритмы ГОСТа.
В ГОСТе ключевая информация состоит из двух структур данных: ключа и таблица замен. Ниже приведены основные характеристики ключевых структур ГОСТа.
Ключ является массивом из восьми 32-битовых элементов кода, обозначим символом K: K = {Ki} 0 i 7.
В ГОСТе элементы ключа используются без знака: 0 Ki 232. Таким образом, размер ключа составляет 32·8 = 256 бит или 32 байта.
Таблица замен может быть представлена в виде матрицы размера 8х16, содержащей 4- битовые элементы (числа от 0 до 15).
Строки таблицы замен называются узлами замен, они должны содержать различные значения, то есть 16 различных чисел от 0 до 15.
Обозначим таблицу замен символом
H: {Hi,j} 0 i 7, 0 j 15, 0 H 15,
Таким образом, общий объем таблицы замен равен: 8 узлов * 16 элементов/узел * 4 бита/элемент = 512 бит или 64 байта.
Основной шаг криптопреобразования обрабатывает 64-битный блок данных. Он использует 32-битовый блок - какой-либо элемент ключа. Схема алгоритма основного шага приведена на рисунке 2.1.
Ниже даны пояснения к алгоритму основного шага:
Шаг 0
Определяет исходные данные для основного шага криптопреобразования: N – преобразуемый 64-битовый блок данных, в ходе выполнения шага его младшая (N1) и старшая (N2) части обрабатываются как отдельные 32-битовые целые числа без знака. Таким образом, можно записать N=(N1,N2). X – 32-битовый элемент ключа;
Шаг 1
Сложение с ключом. Младшая половина преобразуемого блока складывается по модулю 232 с используемым на шаге элементом ключа S =(N1+X)mod232, результат передается на следующий шаг;
Шаг 2
Поблочная замена. 32-битовое значение S, полученное на предыдущем шаге, интерпретируется как массив из восьми 4-битовых блоков кода: S = (S0,S1,S2,S3,S4,S5,S6,S7). Далее значение каждого Si заменяется новым, которое выбирается по таблице замен следующим образом:
в качестве замены выбирается элемент из таблицы (номером строки), равным номеру заменяемого блока, и номером столбца, равным значению заменяемого блока как 4-битового целого неотрицательного числа.
Si= hi,Si
Теперь становится понятным размер таблицы замен: число строк в ней равно восьми, а число столбцов равно 24,т.е. шестнадцати.
Шаг 3
Циклический сдвиг на 11 бит влево. На схеме алгоритма сдвиг обозначен символом R11.
Шаг 4
Побитовое сложение : значение шага 3 старшей половиной N2 преобразуемого блока.
Шаг 5
Сдвиг по цепочке: младшая часть N1 сдвигается на место старшей N2, а на N1 место помещается результат выполнения предыдущего шага. Полученное значение возвращается как результат выполнения основного шага криптопреобразования.
Рис. 2.1. Схема основного шага криптопреобразования алгоритма ГОСТ 28147-89.
Алгоритмы зашифрования, расшифрования и «учета» в контрольной комбинации одного блока данных - основные базовые циклы ГОСТа. Базовые циклы заключаются в многократном выполнении основного шага с использованием разных частей ключа и отличаются друг от друга только числом повторения шага и порядком использования ключевых элементов.
1. Цикл зашифрования 32-З:
K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7,K7,K6,K5,K4,K3,K2,K1,K0.
2. Цикл расшифрования 32-Р (обратный порядок ключей 32-З):
K0,K1,K2,K3,K4,K5,K6,K7,K7,K6,K5,K4,K3,K2,K1,K0,K7,K6,K5,K4,K3,K2,K1,K0,K7,K6,K5,K4,K3,K2,K1,K0.
3. Цикл выработки имитовставки 16-З:
K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7.
Каждый из циклов имеет собственное буквенно-цифровое обозначение, соответствующее шаблону «n-X», где первый элемент обозначения (n), задает число повторений основного шага в цикле, а второй элемент обозначения (X), буква, задает порядок зашифрования («З») или расшифрования («Р») в использовании ключевых элементов.
Из сказанного вытекает одно интересное следствие: свойство цикла быть обратным другому циклу является взаимным, то есть цикл
Рис.
2.2.а Схема цикла зашифрования 32-З.
Рис. 2.2.а Схема цикла расшифрования
32-Р.
32-З является обратным по отношению к циклу 32-Р. Другими словами, зашифрование блока данных теоретически может быть выполнено с помощью цикла расшифрования, в этом случае расшифрование блока данных должно быть выполнено циклом зашифрования.
Из двух взаимно обратных циклов любой может быть использован для зашифрования, тогда второй должен быть использован для расшифрования данных, однако стандарт ГОСТ 28147‑89 закрепляет роли за циклами и не предоставляет пользователю права выбора в этом вопросе.
Цикл выработки имитовставки вдвое короче циклов шифрования, порядок использования ключевых элементов в нем такой же, как в первых 16 шагах цикла зашифрования.
Рис. 2.3. Схема цикла выработки имитовставки 16-З.
ГОСТ 28147-89 предусматривает три следующих режима шифрования данных:
простая замена,
гаммирование,
гаммирование с обратной связью,
и один дополнительный режим выработки имитовставки.
В любом из этих режимов данные обрабатываются блоками по 64 бита, на которые разбивается массив, подвергаемый криптографическому преобразованию, именно поэтому ГОСТ относится к блочным шифрам. Однако в двух режимах гаммирования есть возможность обработки неполного блока данных размером меньше 8 байт, что существенно при шифровании массивов данных с произвольным размером, который может быть не кратным 8 байтам. Прежде чем перейти к рассмотрению конкретных алгоритмов криптографических преобразований, необходимо пояснить обозначения, используемые на схемах:
Tо,Tш – массивы соответственно открытых и зашифрованных данных;
TiО . Ti Ш - i-тые по порядку 64-битовые блоки соответственно открытых и зашифрованных данных: Tо = (T1О , T2О , T3О ,… TnО , ), Tш = (T1 Ш, T2Ш , T3Ш ,… TnШ , ), 0 i n, последний блок может быть неполным;
n – число 64-битовых блоков в массиве данных;
ЦX – функция преобразования 64-битового блока данных по алгоритму базового цикла «X».
Теперь опишем основные режимы шифрования:
