все лекции
.pdfОтправитель А |
Получатель В |
||
Сообщение m |
kAsecret |
|
|
|
|
kApublic |
|
h |
|
V |
|
|
|
|
|
|
|
s* = V(m, s, kApublict) |
|
Хеш-образ h(m) |
|
Сравнение |
Подпись |
|
|
||
|
|
|
признаётся |
S |
|
Хеш-образ h(m) |
|
|
|
|
|
s = S(m, kAsecret) |
h |
|
|
|
|
s = S(m, kAsecret) |
|
Конкатенация m и s |
|
|
|
|
|
|
|
|
|
Конкатенация m и s |
Рисунок 7.1 – Классическая схема создания и проверки электронной
подписи
В российском стандарте цифровой подписи ранее использовалась разрабо-
танная отечественными криптографами ХЭШ-ФУНКЦИЯ (256 бит) стандарта ГОСТ Р 34.11–94 (в основе алгоритм блочного шифрования по ГОСТ 28147–89).
Этот стандарт определяет алгоритм и ПРОЦЕДУРУ ВЫЧИСЛЕНИЯ ХЭШФУНКЦИИ ДЛЯ ЛЮБОЙ ПОСЛЕДОВАТЕЛЬНОСТИ двоичных символов, кото-
рые применяются в криптографических методах обработки и защиты информации, в
том числе применялся для реализации процедур электронной подписи (ЭЦП) при передаче, обработке и хранении информации в автоматизированных системах.
**************** ОКОНЧАНИЕ БЛОК-1 ******************
*************************************************
5
******************** НАЧАЛО БЛОК-2 ********************
С 1 января 2013 года в РФ введён стандарт хэш-функции на
ГОСТ Р 34.11-2012 (полное название: «ГОСТ Р 34.11-2012. Информационная технология.
Криптографическая защита информации. Функция хэширования») – действующий россий-
ский криптографический стандарт, определяющий алгоритм и процедуру вычисле-
ния хэш-функции. Стандарт разработан «Центром защиты информации и специальной связи» ФСБ России с участием ОАО «ИнфоТеКС».
Размер хэша: 256 или 512 бит. Размер блока входных данных 512
бит.
Стандарт определяет алгоритм и процедуру вычисления хэш-функции для последовательности символов. Этот стандарт разработан и введён в качестве замены устаревшему стандарту ГОСТ Р 34.11-94. Название хэш-функции – «Стрибог» – часто используется вместо официального названия стандарта.
Отличительные особенности по сравнению со старым стандартом
следующие:
– в ГОСТ Р 34.11-2012 размер блоков сообщения и внутреннего со-
стояния хэш-функции составляет 512 бит против 256 бит в ГОСТ Р
34.11-1994;
–новый стандарт определяет две функции хэширования с длинами
хэш-кода 256 и 512 бит, в то время как в старом стандарте длина хэш-кода может быть только 256 бит. Возможность вариации выходного хэша может быть полезна в случае встроенных реализаций с ограниченными ресурсами, или наличия ка- ких-то дополнительных требований в области криптографии;
–основное отличие современной хэш-функции от старой – функ-
ция сжатия. В ГОСТ Р 34.11-2012 используется функции сжатия в основе кото-
рой лежат три преобразования.
1 Нелинейное биективное преобразование (обозначается S). Нелинейная биекция: 512 бит аргумента рассматриваются как массив из 64 байт, каждый из которых заменяется по заданной стандартом таблице подстановки.
6
2 Перестановка байт (обозначается P). P – переупорядочивание байт. Байты аргумента меняются местами по определённому в стандарте порядку.
3 Линейное преобразование (обозначается L). L – аргумент рассматривается как 8 штук 64-битных векторов, каждый из которых
заменяется результатом умножения на определённую стандартом матрицу 64×64.
В ГОСТ Р 34.11-1994 используется функция сжатия, основанная на симметричном блочном шифре ГОСТ Р 28147-89, также эта функция использует операции перемешивания;
– при вычислении новой хэш-функции, если размер сообщения не кра-
тен размеру обрабатываемого блока (для современного стандарта – 512
бит, для старого стандарта – 256 бит), то такой блок дополняется вектором
(00 … 01). При вычислении старой хэш-функции неполный блок дополняется значением (00 … 0). Считается, что дополнение (00 … 01) лучше, чем (00 … 0) с криптографической точки зрения;
– в стандарте ГОСТ Р 34.11-2012 значение инициализационного
(начального) вектора фиксировано и определено: для хэш-функции с раз-
мером выходного хэша 512 бит это вектор (00 … 0), для хэш-функции с размером выходного хэш-кода 256 бит – (000000010 … 100000001) (все байты равны
1).
Алгоритм построен на основе подстановочно-перестановочных
сетей (SP-сеть – Substitution permutation network) (не сеть Фейстеля).
SP-сети обрабатывают за один раунд целиком шифруемый блок
[18].
Обработка данных сводится, в основном, к заменам, когда, например,
фрагмент входного значения заменяется другим фрагментом в соответствии с таблицей замен, которая может зависеть от значения клю-
ча Ki, и перестановкам, зависящим от ключа Ki (рисунок 7.2).
7
Рисунок 7.2 – Вид SP-сети
Важным параметром блочного шифра является то, как выбирается ключ,
который будет использовать на каждом раунде. В блочном шифре, ис-
пользуемом в ГОСТ Р 34.11-2012, ключи (К1, К2, ..., К13) для каждого из 13-
ти раундов генерируются с помощью самой функции шифрования.
В данном стандарте используются следующие константы и функции:
С1, С2, ..., С12 – итерационные константы, которые являются 512 битовыми векторами. Их значения можно посмотреть в соответствующем разделе стандарта.
X – побитовый XOR (суммирование «по модулю 2»);
512
[+] – сложение «по модулю 2 »; MSBs(A) – получение S бит вектора A;
A||B – объединение (конкатенация) двух векторов A и В.
Алгоритм работы функции хэширования ГОСТ Р 34.11-2012
Под хэш-функцией H понимается зависящее от инициализационного вектора
IV отображение, сопоставляющее строке бит произвольной длины хэш-код фикси-
рованной длины n. Для определения хэш-функции необходимы описание процедуры инициализации, алгоритма вычисления функции сжатия и итеративной процеду-
8
ры вычисления значения хэш-функции.
Данный стандарт определяет две функции хэширования – «Стрибог-256» и «Стрибог-512» – с длинами хэш-кода 256 и 512 бит соответственно.
1 Входное сообщение разбивается на блоки фиксированного размера, для сообщений размером не кратным длине блока используется дополнение.
2 Начальное внутреннее состояние хэш-функции обновляется последовательной обработкой блоков сообщения – функцией сжатия
(g).
3 Параллельно с этим вычисляются число обработанных бит N и
контрольная сумма блоков , рисунок 9.3.
4 После всех блоков сообщения функция сжатия g обрабатывает блок с общей длиной сообщения и блок с контрольной суммой для завершения вычисления значения хэш-функции. Размер блоков сообще-
ния и внутреннего состояния хэш-функции составляет 512 бит.
Для целей представления длины сообщения и контрольной суммы блоков данные блока рассматриваются как числа по модулю 2512.
9
Рисунок 9.3 – Схема функции хэширования
Фактически, функция хэширования состоит из трёх стадий работы.
1 Инициализация – задаются начальные параметры для вектора функции хэширования IV.
2 Усечение сообщения – если сообщение более 512 бит, то выполняются t определённых шагов для того, чтобы сообщение было не более 512 бит.
3 Вычисление хэш – на выходе получаем сообщение h.
Описание функции хэширования.
В основу хэш-функции положена итерационная конструкция Меркла-Дамгарда с использованием MD-усиления. Под MD-усилением понимается дополнение неполного блока при вычислении хэш-функции до полного путем добавления вектора (0 … 01) такой длины, чтобы получился полный блок. Из дополнительных элементов нужно отметить следующие:
а) завершающее преобразование, которое заключается в том, что функция сжатия применяется к контрольной сумме всех блоков сообщения по модулю 2512;
б) при вычислении хэш-кода на каждой итерации применяются разные функции сжатия. Можно сказать, что функция сжатия зависит от номера итерации.
Описанные выше решения позволяют противостоять многим известным атакам.
Кратко описание хэш-функции ГОСТ Р 34.11 – 2012 можно представить следующим об-
разом.
На вход хэш-функции подается сообщение произвольного размера.
Далее сообщение разбивается на блоки по 512 бит, если размер сообщения не кратен 512,
то оно дополняется необходимым количеством бит.
Потом итерационно используется функции сжатия, в результате действия которой обнов-
ляется внутреннее состояние хэш-функции.
Также вычисляется контрольная сумма блоков и число обработанных бит. Когда обра-
ботаны все блоки исходного сообщения, производятся еще два вычисления:
1)обработка функцией сжатия блока с общей длиной сообщения;
2)обработка функцией сжатия блока с контрольной суммой.
Это и завершает вычисление хэш-функции.
Функция сжатия (g). В хэш-функции важным элементом является функ-
ция сжатия. В ГОСТ Р 34.11-2012 функция сжатия основана на конструкции Миагучи-Пренели.
На рисунке 9.4 приведена схема конструкции Миагучи-Пренели,
в которой:
h, m – вектора, поступающие на вход функции сжатия; g(h, m) – результат функции сжатия;
F – блочный шифр с длиной блока и ключа 512 бит. В качестве блочного шифра в хэш-функции ГОСТ Р 34.11-2012 взят XSPL-шифр. Этот
10
шифр состоит из следующих преобразований.
1 Сложение «по модулю 2».
2 Преобразование «замены» или «подстановки». Обозначается S-
преобразование.
3Преобразование «перестановки». Обозначено P-преобразование.
4Линейное преобразование. Обозначено L-преобразование.
Математически функция сжатия g описывается:
gN(h, m) = E(LPS(h N), m) h m, h,m F2512
где E(K, m) = X[K13 ] ∏ |
; |
Ki = LPS(Ki-1 Ci-1 ), |
K1 = K, i {2,...,13}. |
Основное отличие хэш-функции Стрибог от своего предшественника – функция сжатия. Её основная операция состоит из трёх преобразований: подстановки на байтах, транспонирования матрицы байт и умножения 64-битных векторов на матрицу 64×64 в GF(2).
Рисунок 9.4 – Функция сжатия
11
В функции Е используется только результат преобразования LPS и побитовое «исключающее ИЛИ» над 512-битными блоками.
Вместе со сложением «по модулю 2512», они составляют полный набор операций, использующихся в данной хэш-функции.
Функция Е показана на рисунке 9.5.
Рисунок 9.5 – Функция Е
Перестановка байт задаётся в стандарте, и представить это можно как таблица замены, рисунок 9.6.
12
Рисунок 9.6 – Блок замен
9.3 Типовые схемы идентификации и аутентификации пользователя
Первая из типовых схем – «С ОБЪЕКТОМ-ЭТАЛОНОМ» [1]:
в системе создаётся объект–эталон Ei (используя идентификатор
IDi и аутентификатор Ki) для идентификации и аутентификации поль-
зователя.
Структура объекта–эталона приведена в таблице 7.1.
Таблица 7.1 Структура объекта–эталона
|
|
|
|
|
|
|
|
|
|
|
|
|
Информация для аутентифика- |
|
||
|
|
|
|
|
|
|
Информация |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
ции |
|
|
|||
|
Номер поль- |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
для идентифи- |
|
||||||||||||
|
|
|
|
|
|
|
|
Ei = F(IDi, Ki) |
||||||||
|
|
зователя |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
кации |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
Ki – аутентификатор |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||||
|
1 |
|
|
|
|
|
ID1 |
|
|
E1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
||||||
|
2 |
|
|
|
|
|
ID2 |
|
|
E2 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
|
|
|
… |
… |
… |
|
|
|
N |
IDn |
En |
|
|
|
Здесь Ei = F(IDi, Ki), где F – функция, обладающая свойством «невосстановимости» значения аутентификатора Ki по Ei и IDi.
Невосстановимость Ki оценивается по пороговой трудоемкости
Т0 решения задачи восстановления аутентифицирующей информа-
ции Ki по Ei и IDi.
Так как для пары Ki и Kj возможно совпадения значений Е, то ве-
роятность ложной аутентификации не должна быть больше некоторо-
го порогового значения Р0.
На практике задают Т0 = 1020 1030, Р0 = 10–7 10–9.
Протокол идентификации и аутентификации следующий:
а) пользователь предъявляет свой идентификатор ID;
б) если ID = IDi, то пользователь i прошёл идентификацию;
в) субъект аутентификации запрашивает у пользователя его
аутентификатор Кi;
д) субъект аутентификации вычисляет значение Yi = F(IDi, Ki);
е) субъект аутентификации сравнивает значения Yi и Ei, и при сов-
падении пользователь аутентифицирован в системе: информация о нем
передается в программные модули, использующие ключи пользователей (систе-
му шифрования, разграничения доступа, и т. п.).
Вторая типовая схема – «С МОДИФИЦИРОВАННЫМ ОБЪЕКТОМ–ЭТАЛОНОМ»: в системе также создаётся объект–
эталон, таблица 7.2.
14