Вы находитесь на странице: 1из 72

П1-АЛГОРИТМ ДИФФИ-ХЕЛЛМАНА (DH) ...........................................................

5
Идея протокола DH ................................................................................................... 5
Сведения из алгебры:................................................................................................ 5
Сведения из алгебры: ................................................................................................ 5
Сведения из алгебры: ................................................................................................ 5
Сведения из алгебры: ................................................................................................ 6
Пример ....................................................................................................................... 6
Базовый протокол DH ............................................................................................... 6
Атака «man in the middle» ......................................................................................... 7
Атака «man in the middle» ......................................................................................... 7
Проблемы реализации .............................................................................................. 8
Практические правила реализации .......................................................................... 8
Пример:...................................................................................................................... 9
Алгоритм Диффи — Хеллмана с тремя участниками ............................................ 9
П2-АЛГОРИТМ РША (Rivest, Shamir и Adleman) RSA .......................................... 11
Область применения ............................................................................................... 11
RSA и DH ................................................................................................................ 11
Лазейка для RSA ..................................................................................................... 11
Китайская теорема об остатках (Сунь Цзе 1 век д.н.э.) ........................................ 11
Доказательство. Единственность решения ............................................................ 11
Доказательство. Существование решения ............................................................. 12
Доказательство. Существование решения ............................................................. 12
RSA. Шифрование. ................................................................................................. 13
Генерация ключей ................................................................................................... 13
Шифрование. Расшифрование. .............................................................................. 13
Пример. Генерация ключей. ................................................................................... 14
Пример. Шифрование. ............................................................................................ 14
Пример. Расшифрование. ....................................................................................... 14
RSA. Электронная подпись. ................................................................................... 14
RSA. Создание электронной подписи.................................................................... 15
RSA. Проверка электронной подписи. .................................................................. 15
Проблемы использования RSA .............................................................................. 15
П3-ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ ............................................................... 16
Истинно случайные числа ...................................................................................... 16
Псевдослучайные числа ......................................................................................... 17
Проект Fortuna......................................................................................................... 18
1. Генератор ............................................................................................................. 18
2. Аккумулятор ...................................................................................................... 19
Источники энтропии ............................................................................................... 19
Пулы ........................................................................................................................ 20
Распределение событий между пулами ................................................................. 21
Время обработки события ..................................................................................... 22
3.Управление файлом начального числа .............................................................. 23
Первая загрузка ....................................................................................................... 24
Выбор случайных элементов ................................................................................. 24
П4-КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ, ранние протоколы согласования
ключей ........................................................................................................................ 27
Определения: ........................................................................................................... 27
Определения: ........................................................................................................... 27
Доверие. Стимул. Риски. ........................................................................................ 28
Доверие. Стимул. Риски. ........................................................................................ 28
Доверие в криптографических протоколах ........................................................... 28
Уровни криптографических протоколов ............................................................... 29
Классификация криптографических протоколов .................................................. 30
Классификация криптографических протоколов .................................................. 30
Классификация криптографических протоколов .................................................. 30
Классификация криптографических протоколов .................................................. 30
Свойства безопасности протоколов ....................................................................... 30
Свойства безопасности протоколов ....................................................................... 31
Свойства безопасности протоколов ....................................................................... 31
Свойства безопасности протоколов ....................................................................... 32
Свойства безопасности протоколов ....................................................................... 32
Атаки характерные для криптографических протоколов ..................................... 33
Атаки характерные для криптографических протоколов ..................................... 33
Протоколы распространения ключей на симметричных шифрах........................ 34
Основные обозначения в протоколах: ................................................................... 34
Протокол Wide-Mouth Frog (Лягушка с широким ртом) ...................................... 35
Недостатки протокола Wide-Mouth Frog ............................................................... 36
Атаки на Wide-Mouth Frog ..................................................................................... 36
Атаки на Wide-Mouth Frog ..................................................................................... 37
Протокол Нидхема—Шрёдера ............................................................................... 38
Недостатки протокола Нидхема—Шрёдера .......................................................... 38
П5-КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ. Протокол Отвея-Рииса. Квантовые
протоколы распределения ключей ........................................................................... 39
Протокол Отвея-Рииса ............................................................................................ 39
Протокол Отвея-Рииса ............................................................................................ 40
Квантовая криптография ........................................................................................ 40
Квантовый протокол распределения ключей BB84 .............................................. 41
Квантовый протокол распределения ключей BB84 .............................................. 42
Квантовый протокол BB84. Генерация ключей. ................................................... 42
Алиса инициатор. Генерация фотона .................................................................... 42
Злоумышленник ЕВА ............................................................................................. 43
Боб – легальный участник протокола. ................................................................... 43
Атака Евы Man-in-the-middle attack ....................................................................... 44
Атака Евы Man-in-the-middle attack ....................................................................... 45
Квантовые протоколы. Проблемы. ........................................................................ 45
Квантовая криптографии. Уязвимости. ................................................................. 46
П6-КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ. Kerberos. Часы в криптографии. .. 47
Протокол Kerberos .................................................................................................. 47
Основные концепции .............................................................................................. 47
2
Аутентификаторы ................................................................................................... 48
Пример:.................................................................................................................... 48
Управление ключами .............................................................................................. 49
Управление ключами .............................................................................................. 49
Управление ключами .............................................................................................. 50
Сеансовые мандаты ................................................................................................ 50
Сеансовые мандаты ................................................................................................ 51
Формальное описание ............................................................................................. 51
Часы ......................................................................................................................... 52
Часы в криптографии .............................................................................................. 52
Виды угроз. Перевод часов назад. ......................................................................... 53
Виды угроз. Остановка часов. ................................................................................ 53
Виды угроз. Перевод часов вперед. ....................................................................... 53
П7-КРИПТОГРАФИЧЕСКИЙ ПРОТОКОЛ SSL .................................................... 54
Общая информация о протоколе ............................................................................ 55
Атака отклика .......................................................................................................... 57
Атака протокола рукопожатия ............................................................................... 58
Раскрытие шифров .................................................................................................. 58
Атака на определенные коммуникационные сессии ............................................ 58
Злоумышленник посередине .................................................................................. 58
Обработка ошибок в протоколе SSL...................................................................... 59
П8-КРИПТОГРАФИЧЕСКИЙ ПРОТОКОЛ TLS .................................................... 60
Обмен ключами в протоколе TLS .......................................................................... 62
Протокол SET .......................................................................................................... 65
Преимущества использования SET: ...................................................................... 66
Недостатки использования SET: ............................................................................ 66
П9-СТЕГАНОГРАФИЯ ............................................................................................. 68
Применение стеганографии в IT ............................................................................ 68
Классификация стеганографии .............................................................................. 69
Классификация стегосистем................................................................................... 70
Алгоритмы и методы стеганографии: .................................................................... 71

3
ГОД ДЕНЬ МЕСЯЦ ТЕМА
ОСНОВНЫЕ ПОЛОЖЕНИЯ И ОПРЕДЕЛЕНИЯ
2021 9 СЕНТЯБРЬ
КРИПТОГРАФИИ
2021 11 ОКТЯБРЬ АРИФМЕТИЧЕСКОЕ КОДИРОВАНИЕ
СИСТЕМЫ ШИФРОВАНИЯ С ОТКРЫТЫМ И
2021 2 НОЯБРЬ
СЕКРЕТНЫМ КЛЮЧАМИ
СИСТЕМЫ ШИФРОВАНИЯ С ОТКРЫТЫМ И
2021 5 НОЯБРЬ
СЕКРЕТНЫМ КЛЮЧАМИ
ЭЛЕКТРОННАЯ ПОДПИСЬ. ОСНОВНЫЕ
2021 6 ДЕКАБРЬ
ОПРЕДЕЛЕНИЯ. ОБЗОР ФЗ N63 ОТ 06.04.2011
2021 18 ДЕКАБРЬ ИНФРАСТРУКТУРА ОТКРЫТЫХ КЛЮЧЕЙ
2022 14 ЯНВАРЬ АЛГОРИТМ ДИФФИ-ХЕЛЛМАНА (DH)
АЛГОРИТМ Райвеста-Шамира-Адлемана (Rivest, Shamir
2022 18 ЯНВАРЬ и Adleman) RSA

ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ


2022 24 ЯНВАРЬ

КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ, ранние


2022 9 ФЕВРАЛЬ протоколы согласования ключей

КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ. Протокол


2022 15 ФЕВРАЛЬ Отвея-Рииса. Квантовые протоколы распределения
ключей
КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ. Kerberos. Часы
2022 21 ФЕВРАЛЬ
в криптографии.
2022 1 МАРТ КРИПТОГРАФИЧЕСКИЙ ПРОТОКОЛ SSL
КРИПТОГРАФИЧЕСКИЙ ПРОТОКОЛ TLS
2022 11 МАРТ

2022 2 АПРЕЛЬ СТЕГАНОГРАФИЯ

Добавленные лекции выделены зеленым.

4
П1-АЛГОРИТМ ДИФФИ-ХЕЛЛМАНА (DH)
Идея протокола DH
Два человека, взаимодействующие друг с другом по небезопасному каналу
общения, могут договориться об использовании секретного ключа таким
образом, что они получат один и тот же ключ, не раскрывая его
злоумышленнику, который прослушивает канал общения.

Параметры алгоритма DH
В алгоритме DH р - большое простое число (2000-4000 бит).
Большинство вычислений в этой теме выполнены по моду р, что не всегда
будет указано явно.
Протокол DH использует Zр* - мультипликативную группу по модулю р
она включает в себя числа 1,…р-1, вместе с операцией умножения по модулю р).

Сведения из алгебры:
Выберем любой элемент группы g и рассмотрим числа 1,g,g2,g3, ... (по модулю
р).
Это бесконечная последовательность чисел. С другой стороны, количество
элементов группы Zр* конечно. По этой причине на каком-то этапе элементы
последовательности должны начать повторяться.

Предположим, что g i =g j где i < j. Поскольку мы можем выполнять деление по


модулю р, значит можем поделить каждую сторону этого равенства на gi, в
результате чего получим: 1 = gj-i.
Другими словами, существует число q := j - i, такое, что gq = 1(modp). Назовем
наименьшее положительное число q, для которого выполняется равенство gq = 1
(mod р), порядком (order) числа g.

Сведения из алгебры:
Последовательно возводя g в степень, мы можем получить следующие числа: 1,
g, g2 , ... , gq-l.
После этого элементы последовательности начнут повторяться, так как gq = 1.
Число g называют образующим элементом и говорят, что оно порождает
множество1, g, g2 , ... , gq-l.
Количество элементов, которое может быть представлено в виде степеней g, в
точности равно q, т.е. порядку числа g.

Сведения из алгебры:
Одно из свойств умножения по модулю р таково: существует по крайне, мере
одно число g, которое может породить все элементы группы Zр*.
Другими словами, существует по крайней мере одно g, для которого q = р – 1.

5
Таким образом, вместо того чтобы рассматривать группу Zр*как множество
чисел 1, ... ,р-1, мы можем представить ее и как множество 1, g, g2 , ... , gр-2.
Число g, порождающее все элементы группы, называется npuмитивным
элементом группы. (Другие значения g могут порождать множества меньших
размеров. )

Сведения из алгебры:
Для любого элемента g его порядок является делителем числа р-1. Это легко
показать.
Пусть g –это примитивный элемент группы, а h – какой-нибудь другой элемент.
Поскольку g порождает всю группу, существует такое х, что h = gx.
Теперь pаcсмотрим элементы множества, порожденного h. Это элементы 1, h, h2,
h3, ... , которые равны элементам 1, gх, g2x, g3x, ... соответственно. (Все
вычисления проводятся по модулю p).
Порядок h - это наименьшее число q, для которого hq = 1. Другими словами, это
наименьшeе число q, для которого gxq = 1. Для любого t значение gt = 1 тогда и
только тогда, когда t = O(modp - 1). Это выполняется тогда, когда q = (р-
1)/НОД(х,р-1). Отсюда очевидно, что q является делителем р -1.

Пример
Пусть р=7. Число g=3 является, примитивным элементом, потому что 1,g,g2, ...
, g5 = 1,3,2,6,4,5. (Все вычисления по модулю р. 30=1,31=3, 32=9mod7=2,
33=27mod7=6 и т.д.) q=6
Элемент h = 2 порождает подгруппу 1, h, h2 = 1,2,4, так как h3 = 23 mod 7 = 1.
Элемент h = 6 порождает подгруппу 1,6. Размеры этих подгрупп равны 3 и 2
соответственно.
Очевидно, оба этих числа являются делителями р - 1.

Базовый протокол DH
Р – порядок группы, простое число;
G – примитивный элемент группы – элементы открытого ключа

6
A – секретный ключ Алисы; В – секретный ключ Боба;
К= - общий секретный ключ.

Атака «man in the middle»

Атака «man in the middle»


Для пользователя А данный протокол выглядит точно так же, как настоящий
протокол Диффи– Хеллмана.
Пользователь А никак не сможет определить, что он общается со
злоумышленником Е, а не с пользователем Б.

7
Это же справедливо и по отношению к пользователю Б. Злоумышленник Е
сможет поддерживать видимость такого общения столько, сколько захочет. Все,
что требуется от злоумышленника Е, - это послушно пересылать сообщения,
отправленные пользователем А пользователю Б и наоборот.
Разумеется, злоумышленник Е должен расшифровывать сообщения, полученные
от пользователя А, который зашифровал их с помощью ключа k, а затем заново
зашифровывать эти сообщения с помощью ключа k', чтобы отослать
пользователю Б.
Аналогичные операции нужно проделывать и над трафиком, идущим в другом
направлении, однако больших усилий это не потребует.
Злоумышленник может читать сообщения и пересылать их, а может
модифицировать сообщения перед отправкой.

Проблемы реализации
Реализация протокола DH в защищенном виде крайне проблематична.
Например, если злоумышленник Е вмешивается в общение и заменяет оба
числа gх и gу единицей, у пользователей А и В оказывается ключ k = 1. В
результате мы получаем протокол согласования ключей, который безупречен во
всем, кроме одного: злоумышленник Е знает секретный ключ.
Еще одна распространенная проблема возникает тогда, когда образующий
элемент g не является примитивным элементом группы Zр*, а порождает лишь
небольшую подгруппу. Пусть порядок g равен одному миллиону. В этом случае
множество {1,g,g2, ... ,gq-l} содержит лишь миллион элементов. Поскольку в
этом множестве оказывается и ключ k, злоумышленник Е сможет легко перебрать
все варианты в поисках подходящего ключа. Очевидно, одно из требований
состоит в том, чтобы у числа g был более высокий порядок.
Отдельную проблему образуют подгруппы по модулю р. Пользователь B
может легко распознать атаку злоумышленника Е, заменившего gх на 1; для этого
достаточно лишь проверить соответствующее число. Но злоумышленник Е может
заменить gх числом h, имеющим низкий порядок. В этом случае ключ,
сгенерированный пользователем Б, будет принадлежать множеству,
порожденному элементом h. Поскольку количество элементов этого множества
невелико, злоумышленник Е сможет легко перебрать все значения, чтобы найти
k. (Разумеется, эта же атака может быть осуществлена и по отношению к
пользователю А.) По этой причине пользователям А и В необходимо проверять,
не порождают ли полученные ими числа подгрупп с малым количеством
элементов.

Практические правила реализации


Приведем несколько практических правил относительно того, как задать
подгруппу, которая будет применяться в протоколе DH.
Выберите в качестве q 256-битовое простое число. (Показатели степеней в
алгоритме DH могут подвергнуться атакам на основе коллизий, поэтому длина

8
всех показателей должна достигать минимум 256 бит, чтобы злоумышленнику
пришлось проделать не менее 2128 операций.)
Выберите в качестве р большое простое число вида Nq + 1 для некоторого
целого N.
Выберите случайное g, такое, что g≠1^gq = 1.
Любой участник общения, который получает описание подгруппы (p,q,g),
должен убедиться в следующем:
и р и q являются простыми числами, длина q составляет 256 бит, а длина р
достаточно велика;
число q является делителем числа (р - 1);
g !=(неравна) 1^gq = 1.

Пример:
Ева — криптоаналитик. Она читает пересылку Боба и Алисы, но не изменяет
содержимого их сообщений.
s = секретный ключ. s = 28
g = открытое простое число. g = 5
p = открытое простое число. p = 29
a = секретный ключ Алисы. a = 3
A = открытый ключ Алисы. A = ga mod p =9
b = секретный ключ Боба. b = 7
B = открытый ключ Боба. B = gb mod p = 28

Алгоритм Диффи — Хеллмана с тремя участниками


Стороны договариваются о параметрах алгоритма p и g

9
Стороны, Алиса, Боб и Кэрол генерируют свои ключи — a, b и c
соответственно.
Алиса вычисляет ga и посылает его Бобу
Боб вычисляет (ga)b = gab и посылает его Кэрол
Кэрол вычисляет (gab)c = gabc и получает тем самым общий секретный ключ
Боб вычисляет gb и посылает его Кэрол
Кэрол вычисляет (gb)c = gbc и посылает его Алисе
Алиса вычисляет (gbc)a = gbca = gabc — общий секретный ключ
Кэрол вычисляет gc и посылает его Алисе
Алиса вычисляет (gc)a = gca и посылает его Бобу
Боб вычисляет (gca)b = gcab = gabc и также получает общий секретный ключ.
Если кто-то будет прослушивать канал связи, то он сможет увидеть ga, gb, gc,
gab, gac, и gbc, но при этом не сможет воспроизвести gabc используя любые
комбинации этих чисел. Все вычисления производятся по модулю р. В общем
случае количество участников может быть произвольным.

Задание
Найти ключи (открытый пользователя А, открытый пользователя В и общий
секретный ключ) для следующих параметров алгоритма DH:
p=19 (простое число по модулю которого производятся вычисления);
g=7 (примитивный элемент);
a=5 (секретный ключ пользователя А);
b=4 (секретный ключ пользователя В).

10
П2-АЛГОРИТМ РША (Rivest, Shamir и Adleman) RSA

Область применения
Шифрование;
Цифровое подписывание.

RSA и DH
Алгоритм RSA во многом схож с алгоритмом Диффи-Хеллмана.
Принципиальное различие:
Алгоритм DH основан на использовании односторонней функции;
Алгоритм RSA основан на использовании односторонней функции с лазейкой.

Лазейка для RSA


Вычисления производятся по модулю составного числа n=p*q, где p и q-
простые числа;
Зная публично известные n и e, мы можем найти me(mod n) по заданному m, но
не наоборот. При этом, зная, как n раскладывается на множители; выполнить
обратную операцию очень легко. Разложение числа n на множители и есть
"лазейка".
(Если мы знаем эту информацию, то можем легко
выполнить обратное действие, а если не знаем, то
не можем).

Китайская теорема об остатках (Сунь Цзе 1 век д.н.э.)


Числа по модулю n — это 0,1,..., n — 1. Они не образуют конечное поле, как в
том случае, если бы n было простым числом. Математики обозначают это
множество чисел как Zn и называют его кольцом.

Для каждого х из Zn можно легко вычислить пару (хmodp, хmodq). Китайская


теорема об остатках утверждает, что можно выполнить и обратную операцию:
зная пару (xmodp, xmodq), можно восстановить исходное значение х.

Доказательство. Единственность решения


Для упрощения записи введем обозначение (а, b):= (х mod p, x mod q). Вначале
покажем, что восстановление исходного значения х вообще возможно, а затем
приведем алгоритм его вычисления.
Чтобы вычислить х по заданным (а, b), следует убедиться, что в Zn не существует
второго такого числа х', для которого х' mod р = а и х' mod q = b. В противном

11
случае и x и х' привели бы к появлению одной и той же пары (а, b), и ни один
алгоритм не смог бы распознать, какое из этих значений является исходным.

Пусть d:= х — х' — это разность чисел, которым соответствует одна и же пара (а,
b). Имеем (d mod р) = (х — х') mod р = (х mod р) — (х'mod p)= =а—а = О, а
следовательно, d кратно р.
Аналогичным образом получаем, что d кратно q.
Отсюда следует, что d является кратным НОК(р, q), так как НОК это, наименьшее
общее кратное. Поскольку p и q — это неодинаковые простые числа, HОK(p, q) =
pq =n, а значит, х — х' кратно n.

Но и x и x' лежат в диапазоне 0,1,... ,n — 1, поэтому разность х - х', кратная n,


находится в диапазоне: —n + 1,..., n — 1. Единственным возможным значением
такой разности, кратным n, является х—х' = 0, или х = х'. Это доказывает, что для
любой заданной пары (а, b) существует не более одного х, удовлетворяющего
условиям теоремы. Остается лишь найти значение х.

Доказательство. Существование решения


Самым удобным способом вычисления х является формула Гарнера: х = (((а -
b)(q-1 mod p)) mod p) * q + b (*).
Здесь множитель (q-1 mod p) — это константа, которая зависит только от p и q.
Мы можем выполнять деление по модулю р, а значит, и вычислять (1/qmodp), что
является всего лишь другой формой записи выражения (q-1 modp).

Вначале покажем, что х находится в диапазоне 0,... ,n — 1.


Очевидно, x ≥ 0 .
Обозначим за t выражение (((a-b)(q-1 mod p)) mod p). Значение t должно
попадать в диапазон 0,…,р — 1, так как является результатом вычисления по
модулю р.
Если t ≤ p — 1, тогда tq ≤ (p — l)q и х = tq + b(из (*)) ≤ (p — l)q + (q — 1) = pq —
1 = n— 1.
Очевидно, значение х действительно находится в диапазоне 0,..., n — 1.

Доказательство. Существование решения


Теперь покажем, что найденное значение х дает правильный результат и
gо модулю р, и по модулю q.

x mod q= ((((a-b)(q-1 mod p)) mod p)* q + b)mod q=(К*q + b)mod q =


= b mod q=b.
Выражение (((a — b)(q-1 mod p)) mod p), которое умножается на q — это
некотopoe целое число К, но при выполнении операций по модулю q любое
кратное q можно отбросить.

12
х mod р = ((((а - b)(q-1 mod p)) mod p)* q + b) mod p = (((a – b) q-1)* q + b) mod p =
((a - b)(q-1 *q) + b) mod p =((a — b) + b) mod p = amod p=a. Избавляемся от
нескольких лишних операторов по mod p, изменяем порядок умножения и
замечаем, что (q-1 *q) = l(mod p).

Таким образом формула Гарнера дает результат х, который лежит в нужном


диапазоне и для которого (а, b)=(хmodp ,хmodq). Поскольку мы уже знаем,
что такое решение может быть только одно, результат формулы Гарнера
полностью решает китайскую теорему остатках.

RSA. Шифрование.

Генерация ключей
Выбираются два разных случайных простых числа р и q (порядка 1024 бит
каждое) и вычисляется n=pq;
Вычисляется число t = НОК(р-l,q-1);
Выбирается целое число e взаимно простое с t и вычисляется число d такое, что
ed=1(mod t);
Пара (n, e) образует открытый ключ.
Значения (р, q, t, d) образуют закрытый ключ и сохраняются в секрете
человеком, который сгенерировал ключ RSA.

Шифрование. Расшифрование.
Чтобы зашифровать сообщение m, отправитель генерирует шифрованный текст
с:=me(mod n).
Чтобы расшифровать шифрованный текст с, получатель вычисляет cd(mod n).
Это эквивалентно значению
(me)d(modn)=med(modn)=mkt+1(modn)=(mt)k*m(mod)=m(mod n),
где k - некое целое число, которое всегда существует.

13
Таким образом, получатель может расшифровать шифрованный текст mе, чтобы
получить открытый текст m.

Пример. Генерация ключей.


Выберем р=3 и q=11.
Определим n=3*11=33.
Найдем (р-1)*(q-1)=20. Следовательно в качестве e выберем любое число,
которое является взаимно простым с числом 20, например e=3.
Выберем число d. В качестве такого числа может быть взято любое число, для
которого выполняется равенство
(d*3)mod 20=1, например d=7.
Пара (33, 3) образует открытый ключ.
Значения (3, 11, 20, 7) образуют закрытый ключ

Пример. Шифрование.
Т.к. в качестве n было взято число 33, можем шифровать буквы русского
алфавита производя вычисления по модулю 33. Зашифруем слово «бал»,
переведем буквы в соответствующие числовые значения (2,1,13)
C1=(2^3)mod33=8mod33=8;
C2=(1^3)mod33=1mod33=1;
C3=(13^3)mod33=2197mod33=19.
Зашифрованное слово (8,1,12) или «жас»

Пример. Расшифрование.
Зашифрованное слово (8,1,19) или «жас»
M1=(8^7)mod33=2097152mod33=2,
M2=(1^7)mod33=1mod33=1,
M3=(19^7)mod33=893871739mod33=13.
Расшифрованное слово (2,1,13) или «бал»

RSA. Электронная подпись.

14
RSA. Создание электронной подписи.
Для сообщения m создается цифровая подпись s на основании секретного ключа
пользователя А s=SA(m)=md(modn);
Пара (m,s) передается пользователю В.

RSA. Проверка электронной подписи.


Применить открытый ключ пользователя А к паре (m,s)
m‘=PA(s)=se(modn);
Проверить подлинность подписи сравнив m и m‘.
Если m=m‘ – верификация проходит успешно.

Проблемы использования RSA


Четкая математическая структура (если пользователь А подпишет цифровой
подписью два сообщения – m1 и m2, пользователь Б сможет вычислить, какой
должна быть подпись пользователя А для сообщения m3:= m1m2(modn);
Шифрование сообщения малого (<n) размера (если при возведении в степень e
символ сообщения принимает значение <n, то для его обратного преобразования
достаточно выполнить извлечение корня степени e, вычисления по модулю не
производится, что облегчает задачу злоумышленника);
Необходимость применять в качестве ключей шифрования и ЭП не
пересекающиеся множества;
Атаки основанные на методах решения полиномиальных уравнений по модулю
n.

Задание по лекции
1. Записать открытый и закрытый ключи алгоритма RSA, если
р=2;
q=13;
e=5.
2. Зашифровать (и расшифровать) с помощью алгоритма RSA слово «cake»
используя английский алфавит и ключи из п.1.

15
П3-ГЕНЕРАЦИЯ СЛУЧАЙНЫХ ЧИСЕЛ
Чтобы сгенерировать ключ, нам нужен генератор случайных чисел (RNG).
Генерация действительно хорошей случайно­сти - неотъемлемая и к тому же
наиболее сложная часть многих криптогра­фических операций.
С неформальной точки зрения случайность можно определить как
непредсказуемость значений данных, для злоумышленника, даже если тот
предпримет активные шаги для борьбы со случайностью,
Мера случайности называется энтроnией. Если у нас есть 32-битовое слово,
которое выбирается совершенно случайным образом, значит, оно имеет 32 бита
энтропии. Если же 32-битовое слово может принимать только четыре значения,
вероятность появления каждого из которых составляет 25%, тогда это слово
обладает лишь двумя битами энтропии. Энтропия показывает не количество битов
в значении, а то, насколько вы не уверены в этом значении. Энтропию можно
представить в качестве среднего числа битов, необходимых для того, чтобы задать
значение при использовании идеального алгоритма сжатия. Обратите внима­ние,
что энтропия значения зависит от того, сколько вы знаете об этом значе­нии.
Случайное 32-битовое слово обладает 32 битами энтропии. Теперь пред­положим,
что о значении этого слова точно известно следующее: 18 бит слова равны 0, а 14
бит - 1. Таким требованиям удовлетворяют около 228,8 значе­ний, а следовательно,
энтропия слова будет составлять лишь 28,8 бит. Дру­гими словами, чем больше
известно о значении, тем меньше его энтропия.
Несколько сложнее подсчитать энтропию для значений, не имеющих
равномерного вероятностного распределения. Наиболее распространенное
определение энтропии переменной Х формулируется следующим образом:

Н(Х):= - ∑P(X = x)log2P(X = х),


х
где Р(Х = х) - вероятность того, что переменная Х принимает значение х. Именно
на это определение ссылаются математики, когда говорят об энтропии. В
математике существует еще несколько определений энтропии; выбор того или
иного определения зависит от того, чем занимается конкрет­ный ученый. И не
путайте нашу энтропию с понятием энтропии в физике, где этот термин касается
термодинамики.

Истинно случайные числа


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

16
Звуки, вызываемые при нажатии клавиш, можно записать на микрофон, что
позволяет определить точное время нажатия каждой клавиши.
Некоторые современные компьютеры обладают встроенными генераторами
истинно случайных чисел. Это, несомненно, дает им значительное преимущества
перед использованием отдельных генераторов, поскольку существенно затрудняет
проведение некоторых типов атак. Тем не менее, такай генератор случайных
чисел, все еще будет доступен операционной системе, поэтому для получения
безопасных данных приложение должно ей полностью доверять.
Помимо сложности получения истинно случайных данных, существует еще
несколько проблем их использования на практике. Во-первых, они не всегда
доступны. Если случайные числа генерируются на основе времени нажатия
клавиш, вы не получите никаких данных, когда пользователь вдруг прекратит
печатать. Еще одна схожая проблема связана с тем, что объем истинно случайных
данных всегда ограничен. Если вам понадобится большое количе­ство случайных
данных, придется подождать, пока они будут сгенерированны, что совершенно
неприемлемо для многих приложений.
Вторая проблема состоит в том, что источники истинно случайных данных­,
такие, как физические генераторы случайных чисел, могут сломаться и отказать.
Иногда поведение генератора может стать предсказуемым. По­скольку генераторы
истинно случайных чисел довольно замысловаты, они могут выходить из строя
гораздо чаще, чем классические компоненты ком­пьютера. Если ваша система
напрямую зависит от генератора истинно слу­чайных чисел, вам крупно не
повезет в случае отказа последнего.
И наконец, третья проблема - это сложность оценки энтропии, которая может
быть извлечена из конкретного физического события. Если только в качестве
генератора случайных чисел не используется выделенное, специ­ально
спроектированное для этого оборудование, определить количество полу­чаемой
энтропии будет крайне сложно.
Псевдослучайные числа
Альтернативой истинно случайным числам являются так называемые
псевдослучайные числа. В действительности псевдослучайные числа вообще не
являются случайными. Они вычисляются с помощью детерминированного
алгоритма на основе некоторого начального числа. Зная начальное число, можно
предсказать все последующие псевдослучайные числа. Класси­ческие генераторы
псевдослучайных чисел никак не защищены от умного злоумышленника. Они
разрабатыва­лись для устранения статистических искажений, а вовсе не для того,
чтобы отражать атаки. Мы должны исходить из предположения, что наш
противник знает алгоритм, используемый для генерации случайных чисел. Может
ли злоумышленник, зная несколько псевдослучайных чисел, сгенерированных
алгоритмом, предугадать некоторые биты будущих (или прошлых) случай
значений? Для большинства классических генераторов псевдослучайных чисел,
да. Для криптографических генераторов псевдослучайных чисел это
недопустимо.

17
В контексте криптографической системы к генераторам псевдослучайных
чисел предъявляются гораздо более строгие требования. Даже если
злоумышленник знает целый ряд случайных чисел, созданных генератором, не
должно быть возможности предугадать какую-либо информацию об остальных,
случайных числах. Мы называем такой генератор псевдослучайных чисел
криптографически сильным. С ними мы и будем иметь дело.
Истинно случайные числа будут использоваться нами только для того, чтобы
получить начальное число, подающееся на вход генератора псевдослучайных
чисел. После того как у нас появится начальное число, генератор может
произвести на свет любое нужное количество случайных (а точнее
псевдослучайных) чисел. При необходимости мы можем прибавлять истинно
случайные числа к начальному числу генератора псевдослучайных чисел, это
гарантирует, что выходные данные последнего никогда не станут полностью
предсказуемыми, даже если злоумышленник каким-либо образом узнал начальное
число.
Любое слабое место генератора истинно случайных чисел моментально
приведет к потере безопасности. С другой стороны, если использовать истинно
случайные числа только для того, чтобы получить начальное число для генератора
псевдослучайных чисел, можно позволить себе гораздо более придирчиво
выбирать источники энтропии, что, безусловно, повышает наши шансы на
создание действительно безопасной системы.

Проект Fortuna
Оставшаяся часть этой темы в основном посвящена рассмотрению деталей
ГПСЧ Fortuna.
Fortuna состоит из трех частей. Генератор принимает на вход начальное число
фиксированной длины и выдает произвольное количество псевдослу­чайных
данных. Аккумулятор собирает и накапливает энтропию из различ­ных
источников, а также время от времени изменяет начальное число генера­тора. И,
наконец, система управления файлом начального числа гарантирует, что
генератор сможет производить случайные данные даже непосредственно после
перезагрузки компьютера.
1. Генератор
Генератор преобразует некоторое состояние фиксированной длины в
выходные данные произвольной длины. В качестве генератора мы будем
использовать АЕS - подобный блочный шифр. Можно выбрать любой, - AES,
Serpent или Twofish. Внутрен­нее состояние генератора включает в себя 256-
битовый ключ блочного шифра и 128-битовый счетчик.
По своей сути генератор - это всего лишь блочный шифр, работающий в
режиме счетчика. Напомним, что режим счетчика или CTR генерирует случайный
поток данных, которые мы будем использовать в качестве вы­ходных. Для
повышения безопасности добавим к режиму работы блочного шифра еще
несколько усовершенствований.
18
Если пользователь или приложение запрашивает случайные данные,
ге­нератор запускает свой алгоритм и производит псевдослучайные данные.
Те­перь предположим, что злоумышленнику удается раскрыть состояние
гене­ратора после выполнения очередного запроса. Было бы хорошо, если бы это
не дискредитировало предыдущие результаты, выданные генератором, для этого
после выполнения каждого запроса будем генерировать еще 256 бит
псевдослучайных данных и использовать их в качестве нового ключа
шиф­рования. Старый ключ при этом уничтожается, чтобы исключить любую
возможность утечки информации о предыдущих запросах.
Чтобы сгенерированные данные обладали статистической случайностью, не
следует генерировать слишком много данных одновременно. Действительно, в
истинно случайных данных значения блоков могут периодически повторяться, в
то время как выходные данные режима счетчика никогда не содержат
повторяющихся блоков. Существует несколько способов решения этой проблемы.
Например, можно использовать только половину каждого блока шифрованного
текста, что практически устранит статистическое отклонение от истинно
случайной последовательности блоков самое простое, что можно сделать в данной
ситуации, - это ограничить количество байтов случайных данных, которые могут
выдаваться в ответ на один запрос. Это значительно затруднит выявление
статистического отклонения от истинно случайной последовательности.
Генератор Fortuna является криптографически сильным генератором
псевдослучайных чисел в том смысле, что он преобразует начальное число в
псевдослучайную строку произвольной длины. Скорость работы генератора
Fortuna практически равна скорости работы используемого блочного шифра.
2. Аккумулятор
Аккумулятор собирает истинно случайные данные из различных источников
энтропии и применяет их для обновления начального числа генератора

Источники энтропии
Предположим, что в нашем окружении находится, несколько источников
энтропии. Каждый источник может генерировать события, содержащие
энтропию, в любой момент времени. Нас не интересует то, что конкретно будет
использоваться в качестве источников энтропии, достаточно, чтобы как
минимум один источник генерировал данные, которые не будут предсказуемыми
для злоумышленника. Поскольку мы не знаем, как именно будет действовать
злоумышленник, имеет смысл превращать в источники энтропии все данные,
которые будто бы не являются предсказуемыми. В частности, в качестве
неплохих источников случайных данных можно порекомендовать время нажатия
клавиш, время перемещения и щелчков мыши, а также откликов жестких дисков
и принтеров. Не страшно, если злоумышленник сможет предсказать или
скопировать данные из некоторых источников; достаточно, чтобы он не мог
этого сделать для всех источников сразу.

19
Идентифицировать каждый источник мы будем с помощью его уникального
номера, находящегося в диапазоне от О до 255. Данные каждого события
представляют собой короткую последовательность, байтов. Источники энтропии
должны включать в себя только те данные событий, которые невозможно
предсказать.
Мы будем выполнять конкатенацию событий, собранных из различных
источников. Чтобы гарантировать, что строка, полученная в результате подобной
конкатенации, будет кодировать события уникальным образом, ее нужно жестко
структурировать. Каждое событие кодируется тремя или более байтами данных.
Первый содержит номер источника случайных данных; второй количество
дополнительных байтов данных; следующие байты содержат данные,
полученные от источника.
Пулы
Чтобы обновить начальное число генератора, события нужно накапли­вать в
пуле. Последний должен быть достаточно большим для того, чтобы
злоумышленник не смог перебрать возможные значения содержащихся в пу­ле
событий. Обновление начального числа с помощью "достаточно большого" пула
случайных событий сделает бессмысленной всю ту информацию о состо­янии
генератора, которой мог обладать злоумышленник. К сожалению, неизвестно,
сколько событий нужно накопить в пуле, прежде чем обновлять начальное число
генератора. Fortuna поступает следующим образом.
У нас есть 32 пула: РО, ... ,Р31. Теоретически каждый пул содержит стро­ку
байтов неограниченной длины. На практике же все обстоит немного по-другому.
Полученная строка будет использоваться лишь в качестве входных данных для
функции хэширования. По этой причине реализациям ГПСЧ Fortuna не нужно
сохранять строку неограниченной длины - они могут под­считывать хэш-код
строки по мере накопления данных в пуле.
Каждый источник энтропии распределяет свои случайные события меж­ду
пулами по циклическому принципу. Это гарантирует, что энтропия, полу­ченная
от каждого источника, будет распределена между пулами более или менее
равномерно. Каждое случайное событие, попавшее в тот или инойй пул,
присоединяется к строке, которая уже содержится в этом пуле.
Мы будем обновлять начальное число генератора каждый раз, когда объем
содержимого пула РО станет достаточно большим. Процедуры обновления
начального числа будут пронумерованы как 1, 2, 3, ... В зависимости от номера
обновления r в процесс обновления включаются один или более пулов. Пул Pi
участвует в обновлении, если 2i является делителем r. Таким образом, пул Р0
будет участвовать в каждом обновлении, пул Р1 - в каждом втором об­новлении,
пул Р2 - в каждом четвертом обновлении и Т.П. После того как пул принял
участие в обновлении, его содержимое сбрасывается и заменяется пустой
строкой.
Описанная система способна, автоматически адаптироваться к конкретной
ситуации. Если злоумышленник практически ничего не знает об источниках
случайных данных, он не сможет предсказать содержимое пула Р0 при

20
следующем обновлении. Но что, если злоумышленник имеет много информации
об источниках энтропии или же сам периодически генерирует ложные события?
В этом случае он, вероятно, знает о содержимом пула Р 0 достаточно, для того
чтобы предсказать новое состояние генератора на основе его старого состояния и
выходных данных. Тем не менее, когда в обновлении будет, участвовать пул Р 1,
он будет содержать в два раза больше данных, не предсказуемых для
злоумышленника, пул Р2 - в четыре раза больше непредсказуемых данных и т.п ..
Таким образом, если хотя бы один источник случайных событий не является
предсказуемым для злоумышленника, то независимо от количества событий,
которые генерирует сам злоумышленник или о которых у него его есть
информация, у нас всегда будет пул, содержащий достаточно энтропии для
отражения атаки.
Скорость восстановления системы после раскрытия злоумышленник,
формации о внутреннем состоянии генератора зависит от интенсивности, с
которой энтропия (являющаяся таковой и для злоумышленника) поступает в
пулы.
Распределение событий между пулами
Поступающие события должны каким-то образом распределяться между
пулами. Заниматься распределением событий мог бы и сам аккумулятор, но это
опасно по следующей причине. Нам понадобится реализовать функцию, которая
будет передавать события аккумулятору. Вполне вероятно, к этой же функции
сможет обращаться и злоумышленник. Последний может выполнять
дополнительные вызовы функции каждый раз при генерации "настоящего"
события, тем самым влияя на выбор пула, в который должно было бы поступить
следующее "настоящее" событие. Если злоумышленнику удастся собрать все
"настоящие" события в пуле Р0, то система пулов станет неэффективной и
злоумышленник сможет осуществлять атаки на один пул. Если же все настоящие
события окажутся собранными в пуле Р31, то они вообще никогда не будут
использованы.
Наше решение состоит в том, чтобы каждый источник энтропии передавал
вместе с событием и номер пула, в который следует поместить это событие. В
этом случае, чтобы повлиять на распределение событий, злоумышленнику
потребовался бы доступ к памяти программы, которая генерирует событие.
Аккумулятор мог бы осуществлять проверку того, в правильном ли порядке
каждый источник энтропии распределяет свои события между пулами. Как
должен вести себя аккумулятор, если такая проверка выявит нарушения. Если
весь ГПСЧ выполняется как пользовательский процесс, он мог бы сгенерировать
непоправимую ошибку и завершить выполнение программы. Но зачем же лишать
систему генератора псевдослучайных чисел только из-за неправильного
поведения одного источника энтропии? Если же ГПСЧ является частью ядра
операционной системы, ситуация становится еще сложнее. Лучшее, что смогли
придумать на данный момент, - это "на­казать" драйвер задержкой в
предоставлении процессорного времени. Если проверка распределения событий

21
выявит нарушения, аккумулятор может за­держать выполнение соответствующего
драйвера примерно на одну секунду.
Подобную идею тоже нельзя назвать полезной. Напомним: мы разрешили
источнику событий самому определять номера пулов, так как предположили, что
злоумышленник может осуществлять ложные обращения к аккумулято­ру,
используя поддельные события. Если это случится и аккумулятор выпол­нит
проверку порядка распределения событий, за плохое поведение злоумыш­ленника
будет наказан ни в чем не повинный генератор настоящих событий. Наше
заключение таково: аккумулятору не стоит проверять порядок распре­деления
событий, поскольку даже в случае обнаружения нарушений он не сможет сделать
что-нибудь полезное. Каждый источник энтропии отвечает за распределение
своих событий между пулами по циклическому принци­пу. Если же работа
какого-нибудь источника будет нарушена, мы потеряем энтропию,
предоставляемую этим источником (чего мы, собственно, и ожи­дали), но этим
все и ограничится.
Время обработки события
Желательно ограничить количество вычислений, которые могут выпол­няться
при передаче события аккумулятору. Большинство событий являются
временными и генерируются драйверами реального времени. Драйверам не нужен
аккумулятор, который слишком долго обрабатывает события.
Существует определенный минимальный объем вычислений, необходи­мый
для обработки каждого события. В частности, нам нужно присоединить данные
события к содержимому выбранного пула. Конечно, мы не собира­емся хранить в
памяти всю строку пула, так как ее длина потенциально не ограничена. Вместо
этого, мы выделим каждому пулу небольшой буфер па­мяти, и будем
подсчитывать частичный хэш-код строки по мере заполнения буфера. Это и есть
минимальный объем вычислений, которые необходимо выполнить для обработки
события.
Мы отложим обновление начального числа до тех пор, пока пользователь не
запросит случайные данные. Как только это произойдет, аккумулятор выполнит
обновление начального числа непосредственно перед генерацией случайных
данных. Применение подобной схемы позволяет хотя бы немного сместить
вычислительную нагрузку с генераторов событий на пользователей случайных
данных. И это вполне справедливо – ведь случайные данные нужны именно
пользователям, которые ради такой цели могут и подождать.
Чтобы обновление начального числа выполнялось непосредственно перед
обработкой запроса на получение случайных данных, необходимо
инкапсулировать генератор. Другими словами, генератор будет скрыт, чтобы его
нельзя, было вызвать напрямую. Для этого в аккумулятор будет включена
функция RANDOMDATA с таким же интерфейсом, как и у
PSEUDORANDOMDATA. Это защитит систему от пользователей, пытающихся
вызвать генератор напрямую и тем самым пропустить процесс обновления.
Разумеется, пользователи все еще могут создать собственные экземпляры
генератора для каких-то своих целей.

22
Типичная функция хэширования наподобие SHAd-256 обрабатывает
входящие сообщения, разбивая их на блоки фиксированного размера. Если будем
обрабатывать строку пула по мере накопления в буфере каждого следующего
блока, обработка события ограничится не более чем хэшированием одного блока.
Для повышения эффективности работы, можно увеличить размер буфера
пула. В этом случае перед применением операции хэширования в буфере будет
накапливаться больше данных. Это позволяет сократить общее количество
необходимого процессорного времени, но вместе с тем, увеличивает
максимальное время добавления нового события к пулу.
3.Управление файлом начального числа
Наш ГПСЧ умеет собирать энтропию и генерировать случайные данные после
первого обновления случайного числа. Тем не менее, если мы перезагрузим
компьютер, придется подождать, пока источники энтропии сгенерируют
достаточно случайных событий для выполнения первого обновления. Кроме того,
у нас нет гарантий, что состояние генератора после первого обновлен не будет
предсказуемым для злоумышленника.
Для решения этой проблемы можно использовать файл начального числа. Он
представляет собой отдельный файл, содержащий достаточное количество
энтропии и не доступный никому, кроме ГПСЧ. После перезагрузки компьютера
ГПСЧ считывает файл начального числа и использует его содержимое в качестве
энтропии для перевода генератора в состояние, не предсказуемое для
злоумышленника. Конечно же, сразу после этого содержимое файла начального
числа должно быть заменено новыми данными.
Проблема состоит в том, что после перезагрузки компьютера файл начального
числа считыва­ется функцией UPDATESEEDFILE, которая применяет
содержимое файла для обновления состояния генератора. Предположим,
злоумышленник запраши­вает у генератора случайные данные до того, как
функция UPDATESEEDFILE успеет перезаписать файл начального числа.
Получив от генератора затребо­ванные случайные данные, злоумышленник тут же
перезагружает компьютер, так и не дав функции UPDATESEEDFILE перезаписать
файл. В резуль­тате при следующей перезагрузке компьютера функция считает из
файла начального числа те же самые данные, что и в прошлый раз, и обновит с их
помощью состояние генератора. Теперь предположим, что случайные данные,
понадобятся какому-нибудь пользователю, который тоже запросит их еще до
перезаписи файла начального числа. Ничего не подозревающий пользователь
получит от генератора те же самые случайные данные, что и злоумышленник. Это
нарушает секретность случайных данных. Поскольку случайные данные часто
используются для генерации криптографических ключей, описанная проблема
далеко не безобидна.
Разработчик должен гарантировать, что файл начального числа будет
сохраняться в секрете. Кроме того, все операции обновления файла начального
числа должны быть атомарными.
Файл начального числа должен считываться и обновляться после каждой
перезагрузки компьютера. Одно из очевидных решений - перезаписывать файл

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

Первая загрузка
Когда генератор псевдослучайных чисел запускается в первый раз, ему
неоткуда взять данные для обновления своего состояния - ведь файла начального
числа еще не существует. Возьмем, например, только что купленный компьютер
с предустановленной операционной системой. Современные операционные
системы после установки генерируют несколько административных
криптографических ключей. Для этого им нужен генератор псевдослучайных
чисел. На новых компьютерах еще нет файла начального числа, поэтому
воспользоваться им мы не можем. Мы бы могли подождать, пока источники
энтропии не сгенерируют достаточно случайных событий для проведения одного
или нескольких обновлений, но это заняло бы слишком много времени. Кроме
того, мы не сможем определить, когда в системе наберется достаточно энтропии
для генерации хороших криптографических ключей.
Выбор решения зависит от специфики конкрет­ного окружения, но без
предоставления начальной энтропии в любом случае не обойтись. Весьма
вероятно, что некоторые очень важные криптографи­ческие ключи будут
сгенерированы сразу же после установки операционной системы, когда
аккумулятор энтропии еще не успеет набрать достаточного количества
случайных событий, чтобы корректно обновить состояние гене­ратора.
Пожалуй, наилучшим решением в данной ситуации было бы наличие
внешнего источника энтропии, который мог бы создать первый файл начального
числа.

Выбор случайных элементов


Наш генератор выдает последовательности случайных байтов. Иногда это
именно то, что нужно. Существуют, однако, ситуации, когда нам требуется
выбрать случайный элемент из множества элементов. Правильное выполнение
этой задачи требует определенного внимания.
Когда мы выбираем случайный элемент, то неявно предполагаем, что этот
элемент выбирается равновероятным случайным образом из заданного
множества элементов (если только не указано другого вероятностного
распределения). Это означает, что возможность выбора каждого элемента должна
обладать в точности одной и той же вероятностью. Реализовать данное условие в
программном обеспечении намного сложнее, чем кажется на первый взгляд.
Пусть n - это число элементов множества, из которого требуется выбрать
случайный элемент. В дальнейшем будем говорить только о том, как выбрать
случайный элемент из диапазона 0; 1, ... , n - 1.

24
Если n = 0, тогда у нас вообще нет элементов, и мы получаем простую
ошибку. Если n = 1, у нас нет вариантов выбора и мы вновь получаем простой
случай. Если n = 2k, мы можем просто получить от генератора k бит случайных
данных и интерпретировать их как простое число в диапазоне 0, ... ,n-1.
Полученное число будет случайным и выбранным равновероятным образом.
(Возможно, вам придется получить от генератора целое количество байт и
отбросить несколько бит последнего байта, чтобы оставшееся число бит
равнялось k, но реализовать такую схему очень просто.)
Что делать, если n не является степенью двух? Некоторые программы
выбирают случайное 32-битовое число и подсчитывают его значение по модулю
n. К сожалению, использование данного алгоритма приводит к смещению
результирующего распределения вероятностей. В качестве примера рассмотрим
n=5 и определим m :=[232 /5]. Если мы равновероятным образом выберем
случайное 32-битовое число и подсчитаем его значение по модулю 5, то каждое
из чисел 1, 2, 3 и 4 будет встречаться с вероятностью m/232, а число 0 - с
вероятностью (m + 1) /232. В данном случае отклонение от равномерного
распределения вероятностей невелико, однако оно может быть и значитель­ным.
Чтобы правильно выбрать случайное число из произвольного диапазона,
следует воспользоваться методом проб и ошибок. Например, чтобы
сгенери­ровать случайное число в диапазоне 0, ... ,4, мы вначале генерируем
слу­чайное число в диапазоне 0, ... ,7. Последняя операция возможна, поскольку 8
является степенью двух. Если полученное число окажется больше или рав­но 5,
мы отбросим его и выберем новое число в диапазоне 0, ... ,7. Так будет
продолжаться до тех пор, пока полученное случайное число не попадет в
же­лаемый диапазон 0, ... ,4. Другими словами, мы генерируем случайное число,
состоящее из нужного количества бит, и отбрасываем все неподходящие числа.
Ниже приведено более формальное описание того, как следует выбирать
случайное число из диапазона 0, ... , n - 1 для n ≥ 2.
1.Пусть k - наименьшее целое число, для которого 2k ≥n.
2. Воспользуйтесь генератором псевдослучайных чисел, чтобы получить k-
битовое случайное число К.Это число будет находиться в диапазоне 0, ...
,2k- 1. Возможно, вам придется сгенерировать целое число байт и отбросить
часть последнего байта, но это несложно реализовать.
3.Если К ≥ n, вернитесь к шагу 2.
4. Число К является требующимся результатом.
Описанный алгоритм может оказаться не совсем эффективным. В худшем
случае нам придется от6росить примерно половину попыток, поэтому
попро­буем немного улучшить предложенное решение. Вернемся к примеру с n =
5. Поскольку 232 - 1 делится на 5, мы можем выбрать случайное число из
диа­пазона 0, ... ,232 - 2 и подсчитать значение полученного числа по модулю 5.
Чтобы выбрать число из диапазона 0, ... ,232 - 2, мы снова воспользуемся
"неэффективным" методом проб и ошибок, однако на сей раз вероятность того,
что полученное случайное число придется отбросить, очень мала.
25
Общее правило состоит в том, чтобы выбрать удобное k, для которого 2k ≥ n.
Определим q := [2k /n]. Вначале выберем случайное число r в диапа­зоне 0,..., nq -
1, используя метод проб и ошибок. Когда подходящее r будет найдено,
окончательный результат подсчитывается как (r mod n).
Мы не знаем другого способа сгенерировать равномерно распределенные
случайные числа, размер которых в битах не является степенью двух, кроме
отбрасывания от полученного результата нескольких случайных битов. Это не
проблема. При наличии современного генератора псевдослучайных чисел
проблем с нехваткой случайных битов быть не должно.

26
П4-КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ, ранние протоколы
согласования ключей

Определения:
Протокол — описание распределённого алгоритма, в процессе выполнения
которого два или более участников последовательно выполняют определённые
действия и обмениваются сообщениями;
Под субъектом протокола понимают не только людей, но и приложения,
группы людей или организации(формально участниками считают только тех, кто
выполняет активную роль в рамках протокола, однако многие протоколы
разрабатываются с учётом защиты от «пассивных» криптоаналитиков);
Протокол состоит из циклов (round) или проходов (pass). Цикл — временной
интервал активности только одного участника. За исключением самого первого
цикла протокола, обычно начинается приёмом сообщения, а заканчивается —
отправкой;
Цикл состоит из шагов (step) — конкретных законченных действий,
выполняемых участником протокола. Например:
генерация нового случайного значения;
вычисление значений функции;
проверка сертификатов, ключей, подписей, и др.;
приём и отправка сообщений.
Прошедшая в прошлом реализация протокола для конкретных участников
называется сеансом. Каждый участник в рамках сеанса выполняет одну или
несколько ролей. В другом сеансе протокола участники могут поменяться ролями
и выполнять уже совсем другие функции (В протоколах с тремя и более
участниками, один и тот же человек может исполнять несколько ролей
одновременно.).

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

27
Если защищённый протокол предназначен для выполнения функций
безопасности криптографической системы, или если в процессе его
исполнения используются криптографические алгоритмы, то такой протокол
будем называть криптографическим.

Доверие. Стимул. Риски.


Доверие - это фундаментальная основа, на которой строятся взаимоотношения с
другими субъектами.
Существует несколько источников доверия:
Этика. Влияние этики на наше общество огромно. Хотя очень немногие ведут
себя этично абсолютно во всех ситуациях, однако большинство людей
оплачивают свои покупки, даже если их можно легко украсть.
Репутация. Зачастую угроза широкой огласки каких-то неблаговидных
поступков стимулирует вести себя должным образом.
Закон. Цивилизованные страны обладают хорошо развитой правовой
инфраструктурой, которая поддерживает возбуждение судебных исков и
наказание субъектов, ведущих себя неправомерно. Это вынуждает субъектов
вести себя в соответствии с законом.
Угроза физической расправы. Еще одним стимулом правильно поведения
является страх перед физической расправой, которой может подвергнуться
недобросовестный субъект, пойманный своими партнерами.
Взаимно-гарантированное уничтожение. Это термин времен “холодной
войны". В более мягких формах он означает угрозу нанести вред и себе, и второй
стороне. Довольно часто в ситуации взаимно-гарантированного уничтожения
оказываются две компании, которые возбуждают встречные иски о нарушении
патентов.

Доверие. Стимул. Риски.


Понятие доверия нельзя рассматривать однозначно: либо доверять, либо нет.
Вопрос о доверии должен звучать: “Вы доверяете Субъекту А в вопросе Х?".

Доверие является фундаментальной основой любого бизнеса, однако обычно


выражается в форме риска. Риск можно рассматривать как противоположность
доверию. Всевозможные виды рисков подвергают оцениванию, сравнению и
страхованию.

Доверие в криптографических протоколах


Назначение криптографических протоколов состоит в минимизации объема
доверия, необходимого для взаимодействия участников. Это означает
минимизацию не только количества людей, которые должны доверять друг другу,
но и необходимого уровня этого доверия.

28
Одним из самых мощных средств разработки криптографических протоколов
является параноидальная модель. Когда пользователь А принимает участие в
протоколе, он предполагает, что все другие участники общения объединились,
чтобы его обмануть.
Параноидальная модель является стандартной моделью поведения, на основе
которой разрабатываются все криптографические протоколы.

Уровни криптографических протоколов


Как и при работе с коммуникационными протоколами, функциональность
криптографических протоколов может быть разбита на несколько уровней.
Каждый уровень функционирует поверх предыдущего.
1. Транспортный уровень
Для криптографов транспортный уровень – это лежащая в основе протокола
коммуникационная система, которая позволяет его участникам
взаимодействовать друг с другом, в частности отправлять строки байтов одним
участником протокола другому участнику.
2. Идентификация протоколов и сообщений
Следующий уровень обеспечивает идентификацию протоколов и сообщений.
Получая сообщение, мы хотим знать, какому протоколу оно принадлежит и что
это за сообщение в рамках данного протокола.
Идентификатор протокола обычно состоит из двух частей. Первая - это
информация о версии, которая предусматривает возможность будущих
обновлений. Вторая часть указывает, какому конкретно криптографическому
протоколу принадлежит сообщение. Например, в системе электронных платежей
могут применятся отдельные протоколы для снятия денег, оплаты, возврата и т.д.
Идентификатор протокола помогает избежать путаницы между сообщениями,
принадлежащими разным протоколам. Данный уровень не обеспечивает никакой
защиты от активных фальсификаторов; вместо этого он позволяет обнаруживать
случайные ошибки.
3. Кодирование и анализ сообщений.
Следующим уровнем является кодирование. Каждый элемент данных сообщения
должен быть преобразован в последовательность байтов.
Одним из наиболее важных моментов данной проблемы является синтаксический
анализ. Получатель должен иметь возможность проанализировать сообщение,
чтобы преобразовать его из последовательности байтов обратно в набор полей
данных. Такой анализ не должен зависеть от контекстной информации.
Поле фиксированной длины, одинаковое для всех версий протокола, легко
поддается анализу. Мы знаем, какой в точности должна быть длина этого поля.
Проблемы начинаются тогда, когда размер или значение поля зависят от
некоторой контекстной информации, такой, как более ранние сообщения,
отправленные в рамках соответствующего протокола. Это открывает массу
возможностей для злоумышленников.
Для кодирования полей хорошо использовать кодировку TLV (Tag-Length-Value -
дескриптор-длина-значение). Согласно ей каждое поле кодируется тремя

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

Классификация криптографических протоколов


Классификация по числу участников протокола:
двусторонний,
трёхсторонний и т. п.,
многосторонний.

Классификация криптографических протоколов


Классификация по числу передаваемых сообщений:
интерактивный (с наличием взаимного обмена сообщениями);
неинтерактивный (с однократной передачей сообщений).

Классификация криптографических протоколов


Классификация по используемым криптографическим системам:
на основе только симметричных криптосистем;
на основе в том числе асимметричных криптосистем.

Классификация криптографических протоколов


Классификация по типам участников:
одноранговый, когда все участники могут выполнять любые роли в рамках
протокола;
с доверенным посредником, когда в протоколе всегда участвует третья
доверенная сторона;
с доверенным арбитром, когда в протоколе может участвовать третья
доверенная сторона, если остальные участники не пришли к согласию.

Свойства безопасности протоколов


Защищённая система и, соответственно, защищённый протокол могут выполнять
разные функции безопасности. Многие из этих функций можно сформулировать
как устойчивость к определённому классу атак. Наиболее полным и актуальным
считается перечисление и толкование этих целей в документе проекта AVISPA
(Automated Validation of Internet Security Protocols and Applications),
суммирующим описания из различных документов IETF. Данные цели принято
считать формализируемыми — то есть такими, что для отдельных протоколов
есть возможность формально доказать или опровергнуть достижение этих целей.

Аутентификация (однонаправленная).
(G1) Аутентификация субъекта.

30
Гарантия для одной стороны протокола через представление доказательств и /
или учётных данных второй стороны, участвующей в протоколе, и того, что
вторая сторона действительно участвовала в текущем сеанса протокола. Обычно
делается через представления таких данных, которые могли быть сгенерированы
только второй стороной. Аутентификация субъекта подразумевает, что
полученные данные могут быть однозначно прослежены до субъекта протокола,
что подразумевает аутентификацию источника данных.
(G2) Аутентификация сообщения.
Гарантия того, что полученное сообщение или фрагмент данных были созданы
определённым субъектом в какое-то (обычно неуказанное) время в прошлом, и
что эти данные не были повреждены или подделаны. Но без предоставления
уникальности или своевременности. Аутентификация сообщений подразумевает
их целостность.
(G3) Защита от повтора.
Защита от ситуации, когда некоторая сторона запишет некоторое сообщение и
воспроизведёт его позднее (возможно — в другом сеансе протокола), что
приведёт к некорректной интерпретации данной стороны как
аутентифицированной.

Свойства безопасности протоколов


Аутентификация при рассылке по многим адресам или при подключении к
службе подписки/уведомления.
(G4) Явная аутентификация получателя.
Протокол должен гарантировать, что отправленное сообщение доступно для
чтения только легальным получателям. То есть только легальные авторизованные
участники будут иметь доступ к актуальной информации, многоадресному
сообщению или сеансу групповой связи.
(G5) Аутентификация источника.
Легальные получатели смогут аутентифицировать источник и содержание
информации или группового общения. Включает случаи, когда члены группы не
доверяют друг другу.
(G6) Авторизация (третьей доверенной стороной).
Гарантия возможности авторизовать (в терминах протокола) одного субъекта на
доступ к ресурсу другого с помощью третьей доверенной стороны.
Подразумевает, что владелец ресурса может не иметь собственных списков
доступа и полагается на таковые у доверенной стороны.

Свойства безопасности протоколов


Совместная генерация ключа.
(G7) Аутентификация ключа.
Гарантия для одного из субъектов, что только легальные пользователи могут
получить доступ к конкретному секретному ключу.
(G8) Подтверждение владения ключом.

31
Гарантия для одного из субъектов, что другой субъект действительно владеет
конкретным секретным ключом (либо информацией, необходимой для получения
такого ключа).
(G9) Совершенная прямая секретность.
Гарантия того, что компрометация мастер-ключей в будущем не приведёт к
компрометации сессионных ключей уже прошедших сеансов протокола.
(G10) Формирование новых ключей.
Гарантия возможности создать новые сессионные ключи для каждого сеанса
протокола.
(G11) Защищённая возможность договориться о параметрах безопасности.
Гарантия не только того, что легальные стороны имеют возможность
договориться о параметрах безопасности, но и того, что нелегальная сторона не
вмешалась в протокол и не привела к выбору предпочтительных ей (возможно —
наиболее слабых) параметров безопасности.

Свойства безопасности протоколов


(G12) Конфиденциальность (секретность).
Гарантия, что конкретный элемент данных (часть передаваемого сообщения)
остаётся неизвестным для злоумышленника. В данной цели не рассматривается
секретность сеансового ключа, проверка подлинности ключа или надёжность
долговременных мастер-ключей.
Анонимность.
(G13) Защита идентификаторов от прослушивания (несвязываемость).
Гарантия, что злоумышленник (подслушивающий) не состоянии связать обмен
сообщениями субъектом с его реальной личностью.
(G14) Защита идентификаторов от других участников.
Гарантия, что участник переписки не в состоянии связать обмен сообщениями
субъекта с реальной личностью, но только с некоторым псевдонимом.
(G15) Ограниченная защита от атак отказа в обслуживании.
Гарантия, что протокол следует определённым принципам, уменьшающих
вероятность (усложняющих использование) отдельных классов атак отказа в
обслуживании.
(G16) Неизменность отправителя.
Гарантия для одной из сторон, что источник сообщения остался таким же, как
тот, который начал общение, хотя фактическая идентификация источника не
важна для получателя.

Свойства безопасности протоколов


Неотрекаемость.
(G17) Подотчётность.
Гарантия возможности отслеживания действий субъектов над объектами.
(G18) Доказательство происхождения.
Гарантия неопровержимости доказательств источника сообщения.

32
(G19) Доказательство доставки.
Гарантия неопровержимости доказательств факта получения сообщения.
(G20) Защищённое временное свойство.
Гарантия возможности доказать, что факт нахождения системы в одном из
состояний означает, что некогда в прошлом система хотя бы раз находилась в
некотором другом состоянии. Например, что получение субъектом доступа к
ресурсу означает, что некогда в прошлом субъект успешно оплатил данный
доступ.

Атаки характерные для криптографических протоколов


Атака считается успешной, если нарушено хотя бы одно из заявленных свойств
протокола.
«Атака посередине» (man-in-the-middle)
Класс атак, в котором злоумышленник ретранслирует и, при необходимости,
изменяет все сообщения, проходящие между двумя и более участниками
протокола, причём последние не знают о существовании злоумышленника,
считая, что общаются непосредственно друг с другом. К данной атаке уязвимы
все протоколы, которые не реализуют взаимную аутентификацию сторон (цель
G1). Классическим примером атаки данного класса является атака на протокол
Диффи—Хеллмана.
Атака с повторной передачей (Replay)
Класс атак, в котором злоумышленник записывает все сообщения, проходящие в
одном сеансе протокола, а далее повторяет их в новом, выдавая себя за одного из
участников первого сеанса. Примерами протоколов, к которым применима
данная атака, являются протоколы Ву-Лама и бесключевой протокол Шамира.
Атака подмены типа (TF-атаки, type flaw attack)
Класс атак, в котором злоумышленник используя переданное в легальном сеансе
протокола сообщение конструирует новое, передавая его на другом проходе
(раунде) протокола под видом сообщения другого типа (с другим
предназначением). К таким атакам уязвимы, например, протоколы Wide-Mouth
Frog, Деннинга—Сако, Yahalom и Отвей—Рииса.

Атаки характерные для криптографических протоколов


Атака с параллельными сеансами (PS-атака, parallel-session attack)
Класс атак, в котором злоумышленник инициирует несколько одновременных
сеансов протокола с целью использования сообщений из одного сеанса в другом.
Примером протокола, уязвимого к данному классу атак, является симметричный
вариант Нидхема—Шрёдера.
Атака с известным сеансовым ключом (KN-атака, known-key attack)
Классы атак, в которых злоумышленник получает доступ к временным секретам,
используемых в протоколах (например, новым сеансовым ключам), после чего
может обеспечить, например, аутентификацию или хотя бы установление сессии
от имени одной из сторон протокола.

33
Атака с неизвестным сеансовым ключом (UKS-атака, unknown key-share
attack)
Класс атак на протоколы с аутентификацией ключа, в которых злоумышленник
получает возможность доказать одной из сторон владение ключом (с помощью,
например, повтора сообщения из легального сеанса), хотя сам ключ
злоумышленник не знает. К такому классу атак уязвим, например, симметричный
протокол Нидхема-Шрёдера.

Протоколы распространения ключей на симметричных шифрах


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

В результате работы протокола между двумя абонентами должны быть


сформирован секретный сессионный ключ.
Успешное окончание работы протокола распространение ключей должно
означать успешную взаимную аутентификацию абонентов. Не должно возникать
такой ситуации, что протокол успешно завершился с точки зрения одной из
сторон, а вторая сторона при этом представлена злоумышленником.
К участию в работе протокола должны допускаться только легальные
пользователи сети. Внешний пользователь не должен иметь возможность
получить общий сессионный ключ с кем-либо из абонентов.
Добавление нового абонента в сеть (или исключение из неё) не должно
требовать уведомления всех участников сети.

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

Основные обозначения в протоколах:

34
Alice, Bob — легальные абоненты сети, для которых формируется общий
сеансовый ключ. Алиса является инициатором.
Trent — доверенный центр сети.
A, B — некоторые идентификаторы легальных абонентов Алисы и Боба
соответственно.
EA, EB — результат шифрования некоторого блока данных с использованием
секретных ключей легальных абонентов сети Алисы и Боба соответственно.
Такое шифрование могу осуществить либо сами легальные абоненты, либо
доверенный центр, которому известны все секретные ключи.
RA, RB, RT — случайные числа, генерируемые Алисой, Бобом и Трентом
соответственно.
TA, TB, TT— метки времени, генерируемые Алисой, Бобом и Трентом
соответственно.
K — секретный сеансовый ключ, получение которого и является одной из
целью протоколов.

Протокол Wide-Mouth Frog (Лягушка с широким ртом)


Протокол Wide-Mouth Frog является, самым простым протоколом с доверенным
центром.
Протокол состоит из следующих шагов:
1. Алиса генерирует новый сеансовый ключ K и отправляет его вместе с меткой
времени, идентификатором Боба и своим незашифрованным идентификатором
доверенному центру:
Alice→{A, EA(TA,B,K)}→Trent
2. Доверенный центр, используя полученный незашифрованный идентификатор
A, находит у себя в базе данных легальных абонентов секретный ключ Алисы и
расшифровывает им пакет данных. Проверяет метку времени (что пакет не очень
старый). Далее он отправляет похожий пакет данных Бобу, зашифрованный его
секретным ключом:
Trent→{EB(TT,A,K)}→Bob
Боб, кроме расшифрования пакета, также проверяет метку времени доверенного
центра. По окончании протокола у Алисы и Боба есть общий сеансовый ключ K.

Схема взаимодействия абонентов и довереного центра в протоколе Wide-Mouth


Frog

35
Недостатки протокола Wide-Mouth Frog
Генератором ключа является инициирующий абонент. Если предположить, что
Боб — это сервер, предоставляющий некоторый сервис, а Алиса — это тонкий
клиент, запрашивающий данный сервис, получается, что задача генерации
надёжного сессионного ключа взваливается на плечи абонента с наименьшими
мощностями.
В протоколе общение с вызываемым абонентом происходит через доверенный
центр. Как следствие, второй абонент может стать мишенью для DDOS-атаки с
отражением (англ. distributed denial-of-service attack), когда злоумышленник будет
посылать пакеты на доверенный центр, а тот формировать новые пакеты и
посылать их абоненту. Если абонент подключён к нескольким сетям (с
несколькими доверенными центрами), это позволит злоумышленнику вывести
абонента из строя. Хотя защититься от подобной атаки достаточно просто,
настроив соответствующим образом доверенный центр.

Атаки на Wide-Mouth Frog


1. В 1995 году Рос Андерсон и Роджер Нидхем предложили вариант атаки на
протокол, при котором злоумышленник (Ева) может бесконечно продлевать срок
действия конкретного сеансового ключа. Идея атаки в том, что после окончания
протокола злоумышленник будет посылать доверенному центру назад его же
пакеты, дополняя их идентификаторами якобы инициирующего абонента.

36
При повторении шагов 3 и 5, по прошествии определенного времени наступит
расшифрование ключа K.
С точки зрения доверенного центра шаги 1, 3 и 5 являются корректными
пакетами, инициирующие общение абонентов между собой. Метки времени в них
корректны (если Ева будет успевать вовремя эти пакеты посылать). С
точки зрения легальных абонентов каждый из пакетов является приглашением
другого абонента начать общение. В результате произойдёт две вещи:
Каждый из абонентов будет уверен, что закончился протокол создания нового
сеансового ключа, что второй абонент успешно аутентифицировал себя перед
доверенным центром. И что для установления следующего сеанса связи будет
использоваться новый (на самом деле — старый) ключ K.
После того, как пройдёт время, нужное злоумышленнику Еве для взлома
сеансового ключа K, Ева сможет и читать всю переписку, проходящую между
абонентами, и успешно выдавать себя за обоих из абонентов.

Атаки на Wide-Mouth Frog


2. Атака 1997 года Гэвина Лоу проще в реализации. В результате этой атаки Боб
уверен, что Алиса аутентифицировала себя перед доверенным центром и хочет
начать второй сеанс общения. Что, конечно, не является правдой, так как второй
сеанс инициирован злоумышленником.

В той же работе Лоу предложил модификацию протокола, вводящую явную


взаимную аутентификацию абонентов с помощью случайной метки RB и
проверки, что Алиса может расшифровать пакет с меткой, зашифрованной

37
общим сеансовым ключом абонентов K. Однако данная модификация приводит к
тому, что протокол теряет своё самое главное преимущество перед другими
протоколами — простоту.

Протокол Нидхема—Шрёдера
Первый абонент получает от доверенного центра специальный пакет, который он
без всякой модификации отправляет второму абоненту.

Схема взаимодействия абонентов и довереного центра в протоколе Нидхема—


Шрёдера

Недостатки протокола Нидхема—Шрёдера


Протокол обеспечивает двустороннюю аутентификацию сторон и защиту
от атак с повторной передачей (replay attack) с помощью введения случайных
меток RA и RB. Действительно, без знания ключа злоумышленник не сможет
выдать себя за Алису перед Бобом (так как не сможет расшифровать пакет с
38
зашифрованной меткой RB). Однако, поскольку сессионный ключ не может
считаться надёжным длительное время, если злоумышленник сумеет в какой-то
момент времени получить ранее использованный сессионный ключ K, он сможет
убедить Боба, что он является Алисой, и что это новый сессионный ключ. Для
этого ему понадобится переданный ранее по открытому каналу пакет из пункта 3
протокола.
Относительно мелкий недостаток протокола состоит ещё и в том, что во
втором пакете доверенный центр в зашифрованном виде передаёт то, что в
третьем шаге пересылается по открытому каналу (ЕB(K,A)).

Задание к лекции:
Провести сравнительный анализ протоколов Wide-Mouth Frog и Нидхема— Шрёдера и записать в таблицу результат:

П5-КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ. Протокол Отвея-


Рииса. Квантовые протоколы распределения ключей

Протокол Отвея-Рииса
Симметричный протокол аутентификации и обмена ключами с использованием
доверенной стороны. Условия работы протокола:
Доверенный центр ТТР
2 пользователя: Алиса и Боб, которые получили от ТТР – соответствующие
совместные секретные ключи КAS и KBS
Алиса передает сообщение M, выбирает случайное число NA, Боб выбирает
случайное число NB.

39
Протокол Отвея-Рииса
1. Алиса формирует сообщение для Боба, в котором открытым текстом передает
M, A, B, а также те же самые M, A, B с NA, зашифрованные общим с ТТР ключом
КAS.
M, A, B, КAS(NA, M, A, B)
2. Боб получает сообщение, вторую часть которого он расшифровать не может,
добавляет в него еще одну строчку, которую шифрует ключом EB и отправляет
ТТР.
M, A, B, КAS(NA, M, A, B), КBS(NB, M, A, B).
3. Доверенный центр ТТР, зная оба ключа, может расшифровать сообщения
Алисы и Боба. Теперь его цель — подтвердить, что он — ТТР и сформировать
ключ КAB для дальнейшего общения Алисы и Боба.
4. Доверенный центр ТТР генерирует ключ КAB и посылает Бобу сообщение.
M, КAS(NA, КAB), КBS(NB, КAB).
5. Первую часть, зашифрованную ключом Алисы, Боб расшифровать не может, а
вторую часть расшифровывает и, считав уникальное число NB, удостоверяется,
что сообщение пришло от ТТР. Затем принимает сгенерированный ключ КAB.
Теперь Боб готов к общению с Алисой, осталось только доставить ей ключ. Боб
отправляет Алисе первую часть сообщения от ТТР.
M, КAS(NA, КAB)
Алиса принимает сообщение, удостоверяется, что оно от ТТР (считав
уникальное число NA), и считывает ключ КAB.
Алиса и Боб готовы к общению.

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

В качестве квантовой частицы для передачи информации решили использовать


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

40
генерации, а затем с нужной степенью достоверности измерить. Таким
параметром оказалась поляризация.

Квантовый протокол распределения ключей BB84


Сильно упрощая, поляризацию можно рассматривать как ориентацию фотона в
пространстве. Фотон может быть поляризован под углами 0, 45, 90, 135 градусов.
С помощью измерения у фотона можно различить только два взаимно
перпендикулярных состояния или базиса:

базис «плюс» — фотон поляризован вертикально или горизонтально;


базис «крест» — фотон поляризован под углами 45 или 135 градусов.

Отличить горизонтальный фотон от фотона, поляризованного под углом 45


градусов, невозможно. Эти свойства фотона легли в основу протокола квантового
распределения ключей BB84, разработанного Чарльзом Беннетом и Жилем
Брассардом. Информация при его применении передаётся через поляризованные
фотоны, в качестве нуля или единицы используется направление поляризации.
Защищённость системы гарантирует принцип неопределённости Гейзенберга, в
соответствии с которым две квантовые величины не могут быть одновременно
измерены с необходимой точностью: чем точнее измеряется одна характеристика
частицы, тем менее точно можно измерить вторую. Таким образом, если кто-то
попробует перехватить ключ во время его передачи, легитимные пользователи
узнают об этом.

41
Квантовый протокол распределения ключей BB84
Алиса и Боб должны использовать:
квантовый канал связи;
классический канал связи.
Протокол состоит из трёх частей:
1. Передача и приём фотона по квантовому каналу связи от Алисы к Бобу;
2. Передача Бобом информации об использованных анализаторах;
3. Передача Алисой информации о совпадении выбранных анализаторов и
исходных поляризаций.

Квантовый протокол BB84. Генерация ключей.


В соответствии с протоколом BB84 секретный ключ генерируется следующим
образом:
1. Алиса формирует случайную последовательность битов, кодируя эту
информацию с помощью соответствующих поляризаций фотонов и передаёт их
Бобу, используя случайно выбранную последовательность базисов (крест или
плюс).
2. Боб случайным образом измеряет состояние каждого принятого фотона,
используя случайно выбранный базис.
3. Для каждого фотона Боб по открытому каналу сообщает Алисе, в каком базисе
измерял состояние фотона, сохраняя сам результат измерения в секрете.
4. Алиса по открытому каналу сообщает Бобу, какие измерения нужно считать
правильными. Это те случаи, для которых базисы передачи и измерения совпали.
5. Результат измерений с совпавшими базисами переводится в биты, из которых и
формируется ключ.

Если Ева попытается перехватить секретный ключ, ей нужно будет измерить


поляризацию фотонов. Не зная правильного базиса для каждого измерения, Ева
получит неверные данные, а поляризация фотона изменится. Эту ошибку сразу
заметят и Алиса, и Боб.

Алиса инициатор. Генерация фотона


42
В первой части протокола с точки зрения физика-экспериментатора Алиса берёт
единичный фотон и поляризует под одним из четырёх углов: 0, 45, 90 или 135.
Будем говорить, что Алиса сначала выбрала базис поляризации («+» или «×»), а
затем выбрала в этом базисе одно из двух направлений поляризации:

0 («→») или 90 («↑») в первом базисе;


45 («↗ ») или 135 («↖ ») во втором базисе.

Поскольку четыре выбранных Алисой возможных исходных состояния не


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

С точки зрения специалиста по теории информации можем считать, что у Алиса


использует две независимые случайные величины XA и A с энтропией по 1 бит
каждый, чтобы получить новую случайную величину YA=XA+A, передаваемую
в канал связи.
H(A) = 1 бит, выбор базиса поляризации («+» или «×»)
H(X) = 1 бит, само сообщение, выбор одного из двух направлений поляризации в
базисе.
H(YA) = H(X) + H(A) = 2 бит, посылаемое сообщение.

Злоумышленник ЕВА
1. Может уничтожить фотон с использованием Man-in-the-middle attack (в
результате ключ не будет сгенерирован и произойдет повторная генерация
фотона с задержкой по времени).
2. Ева может попытаться пропустить фотон через один из поляризаторов и
попробовать поймать фотон детектором. (Но у фотона четыре возможных
состояния, поэтому положение одного поляризатора и единственного детектора
не поможет Еве точно определить, какое из этих четырёх состояний принимает
фотон. А пропустить фотон через два детектора не получится. Во-первых, если
фотон прошёл вертикальный поляризатор, то какой бы исходной у него не была
поляризация («↖ », «↑», «↗ »), после поляризатора она станет вертикальной «↑»
(вторая составляющая «сотрётся»). Во-вторых, детектор, преобразуя фотон в
электрический сигнал, тем самым уничтожает его, что несколько затрудняет его
дальнейшие измерения).

Боб – легальный участник протокола.


Боб случайным образом выбирает ортогональную пару направлений
поляризации («+» либо «×») и ставит на пути фотона поляризатор («↑» или «↖ »)

43
и детектор. В случае наличия сигнала на детекторе он записывает единицу, в
случае отсутствия – ноль.
Т.о. Боб вводит новую случайную величину B (отражает выбор базиса
поляризации Бобом) и в результате измерений получает новую случайную
величину ХВ. Причём Бобу пока неизвестно, использовал ли он оригинальный
сигнал YA, переданный Алисой, или же подложный сигнал YE, переданный
Евой:

XB1 = f ( YA, B );
XB2 = f ( YE, B ).

Далее Боб сообщает по открытому общедоступному классическому каналу


связи, какие именно базисы поляризации использовались, а Алиса указывает,
какие из них совпали с изначально выбранными. При этом сами измеренные
значения (прошёл фотон через поляризатор или нет) Боб оставляет в секрете.
Таким образом, Алиса и Боб публикуют значения сгенерированных ими
случайных величин A и B. Примерно в половине случаев эти значения совпадут
(когда Алиса подтверждает правильность выбора базиса поляризации).
Для тех фотонов, у которых значения A и B совпали, совпадут и значения XA и
XB1. То есть

H ( XB1 | XA; A ≠ B ) = 0 бит


I ( XB1; XA | A ≠ B ) = 1 бит

Для тех фотонов, для которых Боб выбрал неправильный базис поляризации,
значения XB1 и XA будут представлять собой независимые случайные величины
(так как, например, при исходной диагональной поляризации фотона он пройдёт
и через вертикальную, и через горизонтальную щель с вероятностью 50%):

H ( XB1 | XA; A ≠ B ) = 1 бит


I ( XB1; XA | A ≠ B ) = 0 бит

Атака Евы Man-in-the-middle attack


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

Как и прежде, Боб отправляет Алисе выбранные базисы поляризации (значения


B), а Алиса указывает, какие из них совпали с выбранными ею значениями A.
Но теперь, для того, чтобы Боб получил корректное значение XB2 (XB2 = XA),
должны быть выполнены все следующие условия для каждого фотона:

Ева должна угадать базис поляризации Алисы (E = A)

44
Боб должен угадать базис поляризации Евы (B = E)

Пусть Алиса использовала диагональную поляризацию «×»:

Атака Евы Man-in-the-middle attack


При этом Боб и Алиса будут уверены, что в первом и третьем случае (которые
с их точки зрения ничем не отличаются), Боб корректно восстановил
поляризацию фотонов. Так как все эти строки равновероятны, то получается, что
у Боба и Алисы после выбора только фотонов с “угаданным” базисами (как они
уверены) только половина поляризаций (значений XA и XB2) будет совпадать.
При этом Ева будет эти значения знать. Количество известных Еве бит “общей”
последовательности и доля ошибок в ней находятся в линейной зависимости от
количества перехваченных Евой бит.

Вне зависимости от наличия или отсутствия Евы Алиса и Боб вынуждены


использовать заранее согласованную процедуру исправления ошибок.
Используемый код коррекции ошибок, с одной стороны, должен исправлять
ошибки, вызванные физическими особенностями квантового канала. Но с другой
стороны, если код будет исправлять слишком много ошибок, то он скроет от нас
потенциальный факт наличия Евы.
Интересен также вариант, когда Ева может изменять информацию
передаваемую не только по оптическому, но и по классическому каналам связи. В
этом случае многое зависит от того, в какую сторону (от чьего имени) Ева может
подделывать сообщения. В самом негативном сценарии, когда Ева может выдать
себя и за Алису, и за Боба, будет иметь место полноценная Man-in-the-middle
attack, от которой невозможно защититься никаким способом, если не
использовать дополнительные защищённые каналы связи, или не основываться
на информации, переданной заранее.

Квантовые протоколы. Проблемы.

45
Любые квантовые протоколы требуют оригинального дорогостоящего
оборудования.
Квантовые каналы связи это всегда физические каналы связи. У них
существует максимальная длина канала и определённый уровень ошибок.
Ни один квантовый протокол не может обходиться без дополнительного
классического канала связи. Для такого связи требуются как минимум такой же
уровень защиты, как и при использовании, например, криптографии с открытым
ключом.
Для всех протоколов особую проблему представляет не только доказательство
корректности, но и инженерная задача по реализации протокола. Например, не
существует простого способа создать ровно один фотон. Недогенерация фотонов
приводит, очевидно, к ошибкам передачи, а генерация дубля в том же временном
слоте — к возможностью его перехвата злоумышленником без создания помех в
канале.

Квантовая криптографии. Уязвимости.


Атака с помощью светоделителя — заключается в сканировании и
расщеплении импульсов на две части и анализе каждой из частей в одном из двух
базисов.

Атака «Троянский конь» заключается в сканировании импульса через


оптический мультиплексор по направлению к стороне-отправителю или стороне-
получателю. Импульс делится на две части для синхронности детектирования и
поступает на схему декодирования, при этом искажения передающихся фотонов
не происходит.

Когерентные атаки, которые базируются на тактике ретрансляции. Атакующий


перехватывает фотоны отправителя, измеряет их состояние, а затем отправляет
получателю псевдофотоны в измеренных состояниях.

Некогерентные атаки, при которых фотоны отправителя перехватываются и


перепутываются с группой передаваемых одиночных фотонов. Затем состояние
группы измеряется и изменённые данные отправляются получателю.

Атака с ослеплением лавинных фотодетекторов, которую разработала


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

Атака с разделением фотонов. Заключается в обнаружении в импульсе более


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

46
Спектральная атака. Если фотоны созданы четырьмя разными фотодиодами,
они имеют разные спектральные характеристики. Атакующий может измерять
цвет фотона, а не его поляризацию.

Атака на случайные числа. Если отправитель использует псевдослучайный


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

Вопросы к лекции:
1. Перечислить достоинства и недостатки протокола Отвея-Рииса.
2. Перспективы развития квантовой криптографии в России.

П6-КРИПТОГРАФИЧЕСКИЕ ПРОТОКОЛЫ. Kerberos. Часы в


криптографии.

Протокол Kerberos
Сетевой протокол аутентификации клиента и сервера перед установлением
связи между ними, причём в протоколе учтён тот факт, что начальный обмен
информацией между клиентом и сервером происходит в незащищенной среде, а
передаваемые пакеты могут быть перехвачены и модифицированы.

Основные концепции
Основная концепция протокола Kerberos — если есть секрет, известный только
двоим, то любой из его хранителей может удостовериться, что имеет дело со
своим напарником. Для этого ему достаточно проверить, знает ли его собеседник
общий секрет. Пример. Допустим, пользователь А часто посылает сообщения
Пользователю В, который использует содержащуюся в них информацию только
тогда, когда абсолютно уверен в том, что она поступила именно от Пользователя
А. Чтобы никто не смог подделать письма, они договорились между собой о
пароле, который знают только они вдвоём. Если из сообщения можно будет
заключить, что отправитель знает пароль, то получатель может с уверенностью
сказать, что сообщение отправил Пользователь А. Каким образом пользователи
показывают знание пароля? Можно просто включить его в текст сообщения,
например, после подписи. Но пользователи не могут быть уверены, что никто
другой не читает их письма. Почта передаётся по сети, в которой работают и

47
другие пользователи, а среди них может быть Злоумышленник. Чтобы пароль
оставался секретом, о нём нельзя говорить открыто, нужно лишь дать
собеседнику знать, что пароль известен отправителю.
Протокол Kerberos решает эту проблему средствами криптографии с
секретным ключом. Вместо того, чтобы сообщать друг другу пароль, участники
сеанса связи обмениваются криптографическим ключом, знание которого
подтверждает личность собеседника. Но чтобы такая технология оказалась
работоспособной, необходимо, чтобы общий ключ был симметричным, т.е., он
должен обеспечивать как шифрование, так и дешифрование информации. Тогда
один из участников использует его для шифрования данных, а другой с помощью
этого ключа извлекает их.

Аутентификаторы
Для начала работы протокола аутентификации с секретным ключом необходимо,
чтобы пользователь А инициировал общение. Он предъявляет аутентификатор
(authenticator) в виде набора данных, зашифрованного секретным ключом.
Получив аутенитификатор, получатель расшифровывает его и проверяет
полученную информацию, чтобы убедиться в успешности дешифрования.
Может случиться, что пользователь захочет провести взаимную аутентификацию.
В этом случае используется тот же самый протокол, но с некоторыми
изменениями и в обратном порядке. Теперь получатель извлекает из исходного
аутентификатора часть информации, а затем шифрует её, превращая в новый
аутентификатор, и передаёт обратно отправителю. Тот, в свою очередь,
расшифровывает информацию и сравнивает её с исходной. Если всё совпадает —
значит, получатель знает секретный ключ.

Пример:
Алиса посылает Бобу сообщение, содержащее её имя в открытом виде и
аутентификатор, зашифрованный с помощью секретного ключа. В протоколе
аутентификации такое сообщение представляет собой структуру данных с двумя
полями. Первое поле содержит имя, второе поле — текущее время на рабочей
станции Алисы.
Боб получает сообщение и видит, что оно пришло от кого-то, кто называет себя
Алисой. Он использует секретный ключ и дешифрует время отправления
сообщения. Задача Боба сильно упрощается, если его компьютер работает
синхронно с компьютером Алисы, в этом случае Боб может сравнить
расшифрованное время со временем на своих часах, и, если разница составит
более пяти минут, он откажется признавать подлинность аутентификатора. Если
же время оказывается в пределах допустимого отклонения, то можно с большой
долей уверенности предположить, что аутентификатор поступил именно от
Алисы.
Боб шифрует время из сообщения Алисы и включает его в собственное
сообщение, которое отправляет Алисе. Т.о. Боб возвращает Алисе не всю

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

Управление ключами
Основная проблема Алисы и Боба из предыдущего примера – выбор общего
секретного ключа. Если каждому клиенту для поддержания связи с каждой
службой требуется индивидуальный ключ, и такой же ключ нужен каждой
службе для каждого клиента, то острой становится проблема обмена ключами.
Необходимость хранения и защиты такого множества ключей на огромном
количестве компьютеров создаёт невероятный риск для всей системы
безопасности. Само название протокола Kerberos говорит о том, как здесь решена
проблема управления ключами. Кербер (или Цербер) — персонаж классической
греческой мифологии. Этот свирепый пёс о трёх головах, по поверьям греков,
охраняет врата подземного царства мёртвых. Трём головам Кербера в протоколе
Kerberos соответствуют три участника безопасной связи: клиент, сервер и
доверенный посредник между ними. Роль посредника здесь играет так
называемый центр распределения ключей Key Distribution Center, KDC. KDC
представляет собой службу, работающую на физически защищённом сервере.
Она ведёт базу данных с информацией об учётных записях всех главных
абонентов безопасности своей области. Вместе с информацией о каждом
абоненте безопасности в базе данных KDC сохраняется криптографический
ключ, известный только этому абоненту и службе KDC. Этот ключ, который
называют долговременным, используется для связи пользователя системы
безопасности с центром распределения ключей. В большинстве практических
реализаций протокола Kerberos долговременные ключи генерируются на основе
пароля пользователя, указываемого при входе в систему.

Управление ключами
Когда клиенту нужно обратиться к серверу, он прежде всего направляет запрос в
центр KDC, который в ответ направляет каждому участнику предстоящего сеанса
копии уникального сеансового ключа (session key), действующие в течение
короткого времени. Назначение этих ключей — проведение аутентификации
клиента и сервера. Копия сеансового ключа, пересылаемая на сервер, шифруется
с помощью долговременного ключа этого сервера, а направляемая клиенту —
долговременного ключа данного клиента.

49
Управление ключами
Теоретически, для выполнения функций доверенного посредника центру KDC
достаточно направить сеансовые ключи непосредственно абонентам
безопасности, как показано на предыдущем слайде. Однако на практике
реализовать такую схему чрезвычайно сложно. Прежде всего, серверу пришлось
бы сохранять свою копию сеансового ключа в памяти до тех пор, пока клиент не
свяжется с ним. А ведь сервер обслуживает не одного клиента, поэтому ему
нужно хранить пароли всех клиентов, которые могут потребовать его внимания.
В таких условиях управление ключами требует значительной затраты серверных
ресурсов, что ограничивает масштабируемость системы. Нельзя забывать и о
превратностях сетевого трафика. Они могут привести к тому, что запрос от
клиента, уже получившего сеансовый пароль, поступит на сервер раньше, чем
сообщение KDC с этим паролем. В результате серверу придется повременить с
ответом до тех пор, пока он не получит свою копию сеансового пароля. То есть,
нужно будет сохранить состояния сервера, а это накладывает на его ресурсы еще
одно тяжкое бремя. Поэтому на практике применяется другая схема управления
паролями, которая делает протокол Kerberos гораздо более эффективным.

Сеансовые мандаты
В ответ на запрос клиента, который намерен подключиться к серверу, служба
KDC направляет обе копии сеансового ключа клиенту. Сообщение,
предназначенное клиенту, шифруется посредством долговременного ключа,
общего для данного клиента и KDC, а сеансовый ключ для сервера вместе с
информацией о клиенте вкладывается в блок данных, получивший название
сеансового мандата (session ticket). Затем сеансовый мандат целиком шифруется с
помощью долговременного ключа, который знают только служба KDC и данный
сервер. После этого вся ответственность за обработку мандата, несущего в себе
шифрованный сеансовый ключ, возлагается на клиента, который должен
доставить его на сервер.

50
Сеансовые мандаты
Функции службы KDC ограничиваются генерацией мандата.
Получив ответ KDC, клиент извлекает из него мандат и свою копию
сеансового ключа, которые помещает в безопасное хранилище (оно располагается
не на диске, а в оперативной памяти). Когда возникает необходимость связаться с
сервером, клиент посылает ему сообщение, состоящее из мандата, который по-
прежнему зашифрован с применением долговременного ключа этого сервера, и
собственного аутентификатора, зашифрованного посредством сеансового ключа.
Этот мандат в комбинации с аутентификатором как раз и составляет
удостоверение, по которому сервер определяет "личность" клиента.
Сервер, получив "удостоверение личности" клиента, прежде всего с помощью
своего секретного ключа расшифровывает сеансовый мандат и извлекает из него
сеансовый ключ, который затем использует для дешифрования аутентификатора
клиента. Клиент может потребовать у сервера проведения взаимной
аутентификации. В этом случае сервер с помощью своей копии сеансового ключа
шифрует метку времени из аутентификатора клиента и в таком виде пересылает
ее клиенту в качестве собственного аутентификатора.
У клиента исчезает необходимость обращаться к центру KDC перед каждым
сеансом связи с конкретным сервером. Сеансовые мандаты можно использовать
многократно. На случай же их хищения устанавливается срок годности мандата,
который KDC указывает в самой структуре данных. Это время определяется
политикой Kerberos для конкретной области. Обычно срок годности мандатов не
превышает восьми часов, то есть, стандартной продолжительности одного сеанса
работы в сети. Когда пользователь отключается от нее, кэш-память
удостоверений обнуляется и все сеансовые мандаты вместе с сеансовыми
ключами уничтожаются.

Формальное описание
1. Алиса направляет доверенной стороне KDC свой идентификатор и Боба:
{A;В}
2. KDC генерирует два сообщения:
Первое включает метку времени TD, время жизни ключа L,сеансовый ключ для
Алисы и Боба KAB и идентификатор Боба B. Это сообщение шифруется общим
ключом Алисы и KDC.
ЕА(TD, L, KAB, В)

51
Второе включает метку времени TD, время жизни ключа L,сеансовый ключ для
Алисы и Боба KAB и идентификатор Алисы А. Это сообщение шифруется общим
ключом Боба и KDC.
ЕВ(TD, L, KAB, А)
Оба сообщения пересылаются Алисе.
3. Алиса генерирует сообщение из собственного идентификатора А и метки TD,
шифрует его ключом KAB и отправляет его Бобу вместе со втором сообщением
от KDC.
КАВ(TD, А)
ЕВ(TD, L, KAB, А)
4. Боб расшифровывает ключом ЕВ второе сообщение и получает KAB, который
позволяет расшифровать первое сообщение и получить аутентификатор Алисы, а
также продолжить процесс обмена сообщениями с Алисой на основании общего
секретного сеансового ключа.

Часы
В криптографии часы имеют несколько областей применения:
Функции управления ключами часто привязаны к предельным срокам.
Текущее время может быть использовано в качестве уникального значения.
Текущее время может быть использовано для упорядочения событий.

Часы в криптографии
Довольно часто требуется ограничить срок действия документа. Стандартный
способ ограничить срок действия цифрового документа - включить время
истечения срока действия в сам документ. Но, чтобы проверить, не истек ли срок
действия документа, необходимо знать текущее время.
Еще одной удобной особенностью текущего времени является возможность
применять его в качестве уникального значения в рамках одного компьютера,
например для создания оказии в режимах работы блочных шифров. Важным
свойством оказии является то, что никакое ее значение не используется дважды,
что и обеспечивают часы.
Монотонность. Время, как известно, всегда идет вперед, оно никогда не
останавливается и не обращает свой ход вспять. Это весьма полезное свойство
применяется в некоторых криптографических протоколах. Включив текущее
время в криптографический протокол, мы мешаем злоумышленнику пересылать
старые сообщения, сгенерированные в рамках предыдущих сеансов работы
протокола, под видом новых.
Еще одной важной областью применения часов является аудит и ведение
журналов. В любой системе управления транзакциями очень важно вести журнал
всего происшедшего. Если в системе когда-нибудь возникнет спорная ситуация,
журналы аудита позволят отследить точную последовательность происшедших
событий. В каждую запись о событии очень важно включать точное время; не
имея временной метки, сложно определить, какие события принадлежали к одной

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

Виды угроз. Перевод часов назад.


Предположим, злоумышленнику удалась перевести часы на какое-нибудь
произвольное время в прошлом. Эта может повлечь за собой caмыe разные
неприятности. Компьютер ошибочно предполагает, что находится в прошлом.
Если злоумышленник имел доступ к определенным данным, но сейчас срок
действия этого доступа истек, компьютер, часы которого показывают
неправильное время, может предоставить злоумышленнику доступ к важным
данным. Эта проблема возникает всякий раз, когда у пользователя отбирают
какие-нибудь права доступа.
Еще одна проблема, касающаяся перевода часов назад, свойственна
финансовым системам. В подобных системах очень важно знать правильное
время выполнения транзакции, поскольку расчеты процентов дают разные
результаты в зависимости от того, когда была выполнена транзакция. Вы можете
убедить компьютер вашего банка в том, что осуществленный несколько минут
назад электронный платеж на самом деле произошел на шесть месяцев раньше.
Это бы избавило вас от уплаты процентов за целых шесть месяцев.

Виды угроз. Остановка часов.


Каждый разработчик живет с инстинктивным пониманием того, что время не
стоит на месте. Но, если часы останавливаются, время будто бы замирает.
Многие процессы не будут завершены, а многие системы начнут вести себя
непредсказуемо.
Наиболее простые проблемы, вызываемые остановкой часов, – это ошибки
наподобие неправильного указания времени в отчетах и журналах ayдита. Точное
время транзакции может иметь большие финансовые последствия и отправка
официального документа с неправильной датой и временем может привести к
серьезным осложнениям.

Виды угроз. Перевод часов вперед.


Перевод часов вперед заставляет компьютер думать, что он живет в будущем.
Это приводит к появлению множества простых атак типа "отказ в
обслуживании". Если часы будут переведены на четыре года вперед, все
транзакции с участием кредитных карточек будут неожиданно отклонены, так как
карточки окажутся недействительными. Вы также не сможете заказать
авиабилеты через Internet, поскольку расписания полетов на четыре года вперед
еще не существует.
Существуют и прямые угрозы безопасности, связанные с переводом часов
вперед. Довольно часто определенные данные должны храниться в секрете до
53
заданного момента времени, в автоматизированной системе перевод часов вперед
позволяет получить доступ к таким данным.

Вопросы к лекции:
Что необходимо предпринять, чтобырешить проблему атаки на часы и быть
уверенным, что системное время не откланяется от нормы?
Какие решения данной проблемы существуют сегодня?

П7-КРИПТОГРАФИЧЕСКИЙ ПРОТОКОЛ SSL


Тема 20 Криптографический протакол SSL
SSL — Secure Socket Layer, уровень защищенных сокетов.
TLS — Transport Layer Security, безопасность транспортного уровня.
SSL является более ранней системой, TLS появился позднее и он основан на
спецификации SSL 3.0, разработанной компанией Netscape Communications.

Задача у этих протоколов одна — обеспечение защищенной передачи данных


между двумя компьютерами в сети Интернет.

Передачу используют:
для различных сайтов;
для электронной почты;
для обмена сообщениями.
SSL — криптографический протокол, который обеспечивает безопасность связи.
Он использует асимметричную криптографию для аутентификации ключей
обмена, симметричное шифрование для сохранения конфиденциальности, коды
аутентификации сообщений для целостности сообщений. Протокол широко
54
используется для обмена мгновенными сообщениями и передачи голоса через IP,
в таких приложениях, как электронная почта, Интернет-факс и др.

Общая информация о протоколе


Один из подходов к решению проблемы безопасности в Интернете был
предложен компанией Netscape Communications. Ею был разработан протокол
SSL (Secure Sockets Layer) защищенного обмена информацией между клиентом и
сервером. SSL требует применения надежного транспортного протокола
(например, TCP). Протокол SSL предназначен для решения традиционных задач
обеспечения защиты информационного взаимодействия, которые в среде
клиент/сервер интерпретируются следующим образом:

пользователь, подключаясь к серверу, должен быть уверен, что он


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

после установления соединения между сервером и клиентом весь


информационный поток между ними должен быть защищен от
несанкционированного доступа;

при обмене информацией стороны должны быть уверены в отсутствии


случайных или умышленных искажений при ее передаче. Протокол SSL
позволяет серверу и клиенту перед началом информационного взаимодействия
аутентифицировать друг друга, согласовать алгоритм шифрования и
сформировать общие криптографические ключи. С этой целью протокол
использует двухключевые криптосистемы, в частности RSA.
Конфиденциальность информации, передаваемой по установленному
защищенному соединению, обеспечивается путем шифрования потока данных на
сформированном общем ключе с использованием симметричных
криптографических алгоритмов (например, RC4_128, RC4_40, RC2_128, RC2_40,
DES40 и др.), а контроль целостности передаваемых блоков данных - за счет
использования так называемых кодов аутентификации сообщений (Message
Autentification Code, MAC), вычисляемых с помощью хеш-функций (в частности,
MD5). Протокол SSL включает в себя два этапа взаимодействия сторон
защищаемого соединения:

установление SSL-сессии;
защита потока данных.

На этапе установления SSL-сессии осуществляется аутентификация сервера и


(опционально) клиента, стороны договариваются об используемых

55
криптографических алгоритмах и формируют общий "секрет", на основе
которого создаются общие сеансовые ключи для последующей защиты
соединения. Этот этап называют также процедурой "рукопожатия".

На втором этапе (защита потока данных) информационные сообщения


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

Приемная сторона производит обратные действия: дешифрование, проверку кода


аутентификации сообщения, сборку сообщений, передачу на прикладной
уровень.

Преимуществом SSL является то, что он независим от прикладного протокола.


Протоколы приложения, такие как HTTP, FTP, TELNET и т.д. могут работать
поверх протокола SSL совершенно прозрачно. Протокол SSL может
согласовывать алгоритм шифрования и ключ сессии, а также аутентифицировать
сервер до того как приложение примет или передаст первый байт данных. Все
протокольные прикладные данные передаются зашифрованными с гарантией
конфиденциальности. Протокол SSL предоставляет "безопасный канал", который
имеет три основные свойства:
канал является частным [шифрование используется для всех сообщений
после простого диалога, который служит для определения секретного ключа]
канал аутентифицирован [серверная сторона диалога всегда
аутентифицируется, в то время как клиентская аутентифицируется опционно]
канал надежен [транспортировка сообщений включает в себя проверку
целостности (с привлечением MAC)]. SSL поддерживает 3 типа аутентификации:
аутентификация обеих сторон (клиент — сервер),
аутентификация сервера с неаутентифицированным клиентом,
полная анонимность.
Если сервер аутентифицирован, то его сообщение о сертификации должно
обеспечить верную сертификационную цепочку, ведущую к приемлемому центру
сертификации. Проще говоря, аутентифицированный клиент должен
предоставить допустимый сертификат серверу. Каждая сторона отвечает за
проверку того, что сертификат другой стороны еще не истек и не был отменен.
Всякий раз, когда сервер аутентифицируется, канал устойчив (безопасен) к
попытке перехвата данных между веб-сервером и браузером, но полностью
анонимная сессия по своей сути уязвима к такой атаке.
Анонимный сервер не может аутентифицировать клиента. Главная цель процесса
обмена ключами — это создание секрета клиента (pre_master_secret), известного
только клиенту и серверу. Секрет (pre_master_secret) используется для создания
общего секрета (master_secret). Общий секрет необходим для того чтобы создать
сообщение для проверки сертификата, ключей шифрования, секрета MAC
(message authentication code) и сообщения «finished». Отсылая сообщение
«finished», стороны указывают, что они знают верный секрет (pre_master_secret).
56
Анонимный обмен ключами Полностью анонимная сессия может быть
установлена при использовании алгоритма RSA или Диффи-Хеллмана для
создания ключей обмена. В случае использования RSA клиент шифрует секрет
(pre_master_secret) с помощью открытого ключа несертифицированного сервера.
Открытый ключ клиент узнает из сообщения обмена ключами от сервера.
Результат посылается в сообщении обмена ключами от клиента. Поскольку
перехватчик не знает закрытого ключа сервера, то ему будет невозможно
расшифровать секрет (pre_master_secret). При использовании алгоритма Диффи-
Хеллмана открытые параметры сервера содержатся в сообщении обмена
ключами от сервера, и клиенту посылают в сообщении обмена ключами.
Перехватчик, который не знает приватных значений, не сможет найти секрет
(pre_master_secret). Безопасность Существует ряд атак, которые могут быть
предприняты против протокола SSL. Однако SSL устойчив к этим атакам, при
условии, что пользователь использует только доверенные сервера для обработки
информации. SSL 2.0 уязвима в некоторых ситуациях:[22]
1. Идентичные криптографические ключи используются для аутентификации
и шифрования сообщений,
2. SSL 2.0 имеет слабую MAC конструкцию, которая использует MD5 хэш-
функцию с секретом префикса, что делает его уязвимым для атак,
3. SSL 2.0 не имеет никакой защиты для протокола рукопожатия, то есть атака
типа злоумышленник посередине (man-in- the-middle) могут остаться
незамеченными,
4. SSL 2.0 использует закрытие TCP соединения, чтобы указать конец данных.
Это означает что возможна следующая атака: злоумышленник просто
подделывает TCP FIN, оставив получателя без сообщения о конце передачи
данных (в SSL 3.0 эту ошибку исправили)
5. SSL 2.0 предполагает наличие единой службы поддержки и
фиксированного домена, что идет вразрез со стандартной функцией
виртуального хостинга на веб-серверах. SSL 2.0 по умолчанию отключена в
браузерах, начиная с Internet Explorer 7,[23] Mozilla Firefox 2,[24] Opera
9.5,[25] и Safari. TLS имеет целый ряд мер безопасности. С точки зрения
безопасности, SSL 3.0 следует считать менее надежным, чем TLS 1.0. В
SSL 3.0 есть слабые моменты. К примеру, половина мастер-ключа (master
key), которая устанавливается, полностью зависит от хэш-функции MD5,
которая не является устойчивой к коллизиям и, следовательно, не считается
безопасной. [26]

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

57
большое количество сессий и попытаться подобрать «верную» сессию,
основываясь на коде nonce, который послал сервер в сообщение Server_Hello. Но
коды nonce SSL имеют, по меньшей мере, длину 128 бит, а значит,
злоумышленнику необходимо записать кодов nonce, чтобы получить вероятность
угадывания 50 %. Но достаточно большое число, что делает эти атаки
бессмысленными.
Атака протокола рукопожатия
Злоумышленник может попытаться повлиять на обмен рукопожатиями для того,
чтобы стороны выбрали разные алгоритмы шифрования, а не те, что они
выбирают обычно. Из-за того, что многие реализации поддерживают
экспортированное шифрование, а некоторые даже 0-шифрование или MAC-
алгоритм, эти атаки представляют большой интерес. Для такой атаки
злоумышленнику необходимо быстро подменить одно или более сообщений
рукопожатия. Если это происходит, то клиент и сервер вычислят различные
значения хэшей сообщения рукопожатия. В результате чего стороны не примут
друг от друга сообщения "finished". Без знания секрета злоумышленник не
сможет исправить сообщение "finished", поэтому атака может быть обнаружена.
Раскрытие шифров
Как известно, SSL зависит от различных криптографических параметров.
Шифрование с открытым ключом RSA необходимо для пересылки ключей и
аутентификации сервера/клиента. Однако в качестве шифра используются
различные криптографические алгоритмы. Таким образом, если осуществить
успешную атаку на эти алгоритмы, то SSL не может уже считаться безопасным.
Атака на определенные коммуникационные сессии
производится записью сессии, и потом, в течение долгого времени подбирается
ключ сессии или ключ RSA. Из-за того, что большинство SSL-сайтов не
используют алгоритмы со свойством perfect forward secrecy (PFS)[34],
злоумышленник записавший зашифрованные сессии, сможет их прочитать после
того как получит приватный ключ RSA.
Злоумышленник посередине
Также известна как MitM (Man-in-the-Middle) атака. Предполагает участие трех
сторон: сервера, клиента и злоумышленника, находящегося между ними. В
данной ситуации злоумышленник может перехватывать все сообщения, которые
следуют в обоих направлениях, и подменять их. Злоумышленник представляется
сервером для клиента и клиентом для сервера. В случае обмена ключами по
алгоритму Диффи-Хелмана данная атака является эффективной, так как
целостность принимаемой информации и ее источник проверить невозможно.
Однако такая атака практически невозможна при использовании протокола
SSL[35], так как для проверки подлинности источника (обычно сервера)
используются сертификаты, заверенные центром сертификации[36] .

Атака будет успешной, если:


58
Сервер не имеет подписанного сертификата.
Клиент не проверяет сертификат сервера.
Пользователь игнорирует сообщение об отсутствии подписи сертификата
центром сертификации или сообщение о несовпадении сертификата с
кэшированным[37]

Данный вид атаки можно встретить в крупных организациях, использующих


межсетевые экраны с возможностью работы в режиме SSL Interception proxy[38],
например Forefront TMG компании Microsoft. В данном случае "злоумышленник"
находится на границе сети организации и производит подмену оригинального
сертификата своим. Данная атака становится возможной благодаря добавлению
на клиентские компьютеры в список доверенных корневых центров сертификата,
используемого в данном экране.[39] Подобная процедура добавления может
производиться прозрачно для пользователя за счет работы корпоративных
пользователей в среде Active Directory. Данное средство может использоваться
как для контроля за передаваемой информацией, так и в целях похищения
личных данных, передаваемых с помощью защищенного соединения HTTPS.

Наиболее спорным становится вопрос информированности пользователя о


возможности перехвата данных, т.к. в случае подмены корневого сертификата
никаких сообщений безопасности выводиться не будет и пользователь будет
ожидать конфиденциальности передаваемых данных. Кроме того, при
использовании Forefront TMG в качестве SSL-прокси возникает возможность
проведения второй MitM-атаки на стороне интернета, т.к. оригинальный
сертификат не будет передан пользователю, а Forefront TMG
может быть настроен на прием и последующую подмену самоподписанных или
отозванных сертификатов. Для защиты от подобной атаки необходимо
полностью запретить работу с веб-серверами, чьи сертификаты содержат какие-
либо ошибки, что безусловно приведет к невозможности работы по протоколу
HTTPS со множеством сайтов.
Обработка ошибок в протоколе SSL
В протоколе SSL обработка ошибок очень проста. Когда ошибка обнаружена, тот,
кто её обнаружил, посылает об этом сообщение своему партнёру. Неустранимые
ошибки требуют от сервера и клиента разрыва соединения.

59
П8-КРИПТОГРАФИЧЕСКИЙ ПРОТОКОЛ TLS

В основе функционирования интернета лежит работа различных протоколов


(TCP, IP и других). Все они работают сообща и каждый из них выполняет
конкретную функцию. В 1995 году был внедрён SSL (англ. Secure Sockets Layer)
— криптографический протокол, обеспечивающий безопасную связь между
пользователем и сервером. Благодаря его работе можно было безопасно
передавать информацию или обмениваться данными. Однако в 2014 году в его
работе обнаружили уязвимости. И на основе SSL 3.0 был разработан новый
стандарт — TLS.

Протокол TLS (англ. Transport Layer Security) — криптографический протокол,


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

60
При разработке были учтены и исправлены все ошибки предшественника. В
отличие от SSL новый протокол регулярно обновляется и продолжает развитие. В
настоящее время для защиты соединения применяется только TLS-протокол.
Поэтому, когда речь идёт о протоколе SSL, на самом деле подразумевается
протокол TLS.
TLS-протокол лежит в основе безопасного обмена информацией, но не
обеспечивает его сам по себе. Чтобы защищённое соединение состоялось, нужно
настроить одно из безопасных интернет-соединений, например — FTP (для
передачи и загрузки файлов), IMAP/POP3/SMTP (для почтовых протоколов) и
HTTPS (для интернет-страниц).

Протокол TLS обеспечивает защиту в три этапа:


Handshake,
False Start,
Chain of trust.

На этапе TLS Handshake (рукопожатие) происходит согласование параметров


соединения (версии протокола, способа шифрования и соединения) между
клиентом и сервером. Для этого используется обмен ключами по алгоритму RSA:
Для каждой такой проверки требуется большое количество вычислительных
ресурсов. Чтобы не устанавливать новое соединение и не проверять сертификат
повторно каждую транзакцию, была разработана процедура TLS False Start.

Разберём подробнее каждый шаг данной процедуры:


1. Так как TLS работает над TCP, для начала между клиентом и сервером
устанавливается TCP-соединение.
2. После установки TCP, клиент посылает на сервер спецификацию в виде
обычного текста (а именно версию протокола, которую он хочет использовать,
поддерживаемые методы шифрования, etc).
3. Сервер утверждает версию используемого протокола, выбирает способ
шифрования из предоставленного списка, прикрепляет свой сертификат и
отправляет ответ клиенту (при желании сервер может так же запросить
клиентский сертификат).
4. Версия протокола и способ шифрования на данном моменте считаются
утверждёнными, клиент проверяет присланный сертификат и инициирует либо
RSA, либо обмен ключами по Диффи-Хеллману, в зависимости от установленных
параметров.
5. Сервер обрабатывает присланное клиентом сообщение, сверяет MAC, и
отправляет клиенту заключительное (‘Finished’) сообщение в зашифрованном
виде.
6. Клиент расшифровывает полученное сообщение, сверяет MAC, и если всё
хорошо, то соединение считается установленным и начинается обмен данными
приложений.
61
Ясно, что установление соединения TLS является, вообще говоря, длительным и
трудоёмким процессом, поэтому в стандарте TLS есть несколько оптимизаций. В
частности, имеется процедура под названием “abbreviated handshake”, которая
позволяет использовать ранее согласованные параметры для восстановления
соединения (естественно, если клиент и сервер устанавливали TLS-соединение в
прошлом). Данную процедура рассмотрена подробнее в пункте «Возобновление
сессии».

Также имеется дополнительное расширение процедуры Handshake, которое имеет


название TLS False Start. Это расширение позволяет клиенту и серверу начать
обмен зашифрованными данными сразу после установления метода шифрования,
что сокращает установление соединения на одну итерацию сообщений. Об этом
подробнее рассказано в пункте “TLS False Start”.
Обмен ключами в протоколе TLS
По различным историческим и коммерческим причинам чаще всего в TLS
используется обмен ключами по алгоритму RSA: клиент генерирует
симметричный ключ, подписывает его с помощью открытого ключа сервера и
отправляет его на сервер. В свою очередь, на сервере ключ клиента
расшифровывается с помощью закрытого ключа. После этого обмен ключами
объявляется завершённым. Данный алгоритм имеет один недостаток: эта же пара
отрытого и закрытого ключей используется и для аутентификации сервера.
Соответственно, если злоумышленник получает доступ к закрытому ключу
сервера, он может расшифровать весь сеанс связи. Более того, злоумышленник
может попросту записать весь сеанс связи в зашифрованном варианте и занять
расшифровкой потом, когда удастся получить закрытый ключ сервера. В то же
время, обмен ключами Диффи-Хеллмана представляется более защищённым, так
как установленный симметричный ключ никогда не покидает клиента или
сервера и, соответственно, не может быть перехвачен злоумышленником, даже
если тот знает закрытый ключ сервера. На этом основана служба снижения риска
компрометации прошлых сеансов связи: для каждого нового сеанса связи
создаётся новый, так называемый «временный» симметричный ключ.
Соответственно, даже в худшем случае (если злоумышленнику известен
закрытый ключ сервера), злоумышленник может лишь получить ключи от
будущих сессий, но не расшифровать ранее записанные.

На текущий момент, все браузеры при установке соединения TLS отдают


предпочтение именно сочетанию алгоритма Диффи-Хеллмана и использованию
временных ключей для повышения безопасности соединения.

Следует ещё раз отметить, что шифрование с открытым ключом используется


только в процедуре TLS Handshake во время первоначальной настройки
соединения. После настройки туннеля в дело вступает симметричная
криптография, и общение в пределах текущей сессии зашифровано именно

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

Для обхода данной проблемы был разработан механизм «Session Ticket», который
устраняет необходимость сохранять данные каждого клиента на сервере. Если
клиент при первоначальной установке соединения указал, что он поддерживает
эту технологию, то в сервер в ходе TLS Handshake отправляет клиенту так
называемый Session Ticket – параметры сессии, зашифрованные закрытым
ключом сервера. При следующем возобновлении сессии, клиент вместе с
ClientHello отправляет имеющийся у него Session Ticket. Таким образом, сервер
избавлен от необходимости хранить данные о каждом соединении, но соединение
по-прежнему безопасно, так как Session Ticket зашифрован ключом, известным
только на сервере.

TLS False Start (фальстарт) — процедура возобновления сессии. Если транзакции


выполняются в пределах одной запущенной сессии, данный этап позволяет
пропустить процедуру Handshake. Протокол повторно использует те данные,
которые уже были обработаны и подтверждены в начале сессии. При этом каждая
сессия имеет свой срок жизни. Как только срок сессии истекает, с помощью TLS
Handshake запускается новая сессия.

Технология возобновления сессии бесспорно повышает производительность


протокола и снижает вычислительные затраты, однако она не применима в
первоначальном соединении с сервером, или в случае, когда предыдущая сессия
уже истекла. Важно отметить, что TLS False Start никак не изменяет процедуру
TLS Handshake. Он основан на предположении, что в тот момент, когда клиент и
сервер уже знают о параметрах соединения и симметричных ключах, данные
приложений уже могут быть отправлены, а все необходимые проверки можно
провести параллельно. В результате соединение готово к использованию на одну
итерацию обмена сообщениями раньше. Также обязательная процедура TLS-
соединения — TLS Chain of trust (цепочка доверия). Она отвечает за
аутентификацию между клиентом и сервером. «Цепочка доверия» работает на
основе регулярной проверки подлинности — соответствия сертификатов
стандартам Сертификационных центров, которые их выдают. Подлинность
сертификата регулярно проверяется в течение сессии. Если обнаружится, что
сертификат скомпрометирован (то есть данные под его защитой были
перехвачены), данные будут отозваны, транзакция не состоится и сессия будет
прервана.
Таким образом, при передаче данных сначала вызывается процедура Handshake
или False Start, которая согласовывает параметры, а затем Chain of trust, которая
обеспечивает аутентификацию TLS Chain of trust
Аутентификация является неотъемлемой частью каждого TLS соединения.
Рассмотрим простейший процесс аутентификации между Алисой и Бобом:
1. И Алиса, и Боб генерируют собственные открытые и закрытые ключи.
63
2. Алиса и Боб обмениваются открытыми ключами.
3. Алиса генерирует сообщение, шифрует его своим закрытым ключом и
отправляет Бобу.
4. Боб использует полученный от Алисы ключ, чтобы расшифровать сообщение и
таким образом проверяет подлинность полученного сообщения.

Очевидно, что данная схема построена на доверии между Алисой и Бобом.


Предполагается, что обмен открытыми ключами произошёл, например, при
личной встрече, и, таким образом, Алиса уверена, что получила ключ
непосредственно от Боба, а Боб, в свою очередь, уверен, что получил открытый
ключ Алисы.
В протоколе TLS данные цепи доверия основаны на сертификатах подлинности,
предоставляемых специальными органами, называемыми центрами
сертификации (CA – certificate authorities). Центры сертификации производят
проверки и, если выданный сертификат скомпрометирован, то данный
сертификат отзывается. Из выданных сертификатов складывается уже
рассмотренная цепочка доверия. Корнем её является так называемый “Root CA
certificate” – сертификат, подписанный крупным центром, доверие к которому
неоспоримо.

Сравнительная таблица

64
Протокол SET
Secure Electronic Transaction (SET, Безопасные электронные транзакции) — это
стандартизированный протокол для проведения операций по
кредитной/банковской карте через небезопасные сети (например Интернет). SET
это не сама платежная система, а набор правил и протоколов безопасности
(цифровых сертификатов, криптографических технологий) для аутентификации
осуществляемых транзакций. Это позволяет пользователям безопасно
использовать кредитные/банковские карты в открытой сети. Однако, SET не
обрела популярности. Протокол SET (Secure Electronic Transaction) был
разработан консорциумом во главе с Visa и Master Card. Официальной датой
рождения стандарта SET является 1 февраля 1996 г. В этот день Visa International
и MasterCard International совместно с рядом технологических компаний
(включая IBM, GlobeSet) объявили о разработке единого открытого стандарта
защищенных Интернет-расчетов. SET представляет собой набор протоколов,
предназначенных для использования другими приложениями (такими, как Web-
браузер). Он был рекомендован как стандарт обработки транзакций, связанный с
расчетами за покупки по кредитным картам в Интернет. В основе системы
безопасности, используемой SET, лежат стандартные криптографические
65
алгоритмы DES (Data Encryption Standard — стандарт шифрования данных) и
RSA (Rivest-Shamir-Adleman — алгоритм цифровой подписи Райвеста-Шамира-
Адлемана). Инфраструктура SET построена в соответствии с инфраструктурой
открытого ключа (Public Key Infrastructure, PKI) на базе сертификатов,
соответствующих ISO-стандарту X.509.

Протокол SET не привязан ни к HTTP, ни к Web-коммерции. Его можно


использовать с самыми различными протоколами. SET шифрует сами сообщения,
а не канал связи, как, например. SSL. Оригинальный протокол SET
подразумевает следующую схему взаимодействия между участниками процесса
платежа в Интернете. Владелец карточки и магазин устанавливают у себя
программное обеспечение - Cardholder Wallet и Merchant Server соответственно.
Эквайер должен установить себе Payment Gateway. Всем участникам необходимо
получить Certificate Authority так называемые сертификаты, которые
используются для формирования цифровых подписей и шифрования данных. Для
этого участники запрашивают и получают сертификаты от сертифицирующих
организаций (SETCo). SET-сертификат Интернет-Магазина содержит
идентификационные параметры торговой точки. SET-сертификат Покупателя –
это электронный документ, который содержит зашифрованные параметры
платежной карты (её номер, имя владельца и т. д.).

Чтобы однозначно идентифицировать друг друга, все участники системы должны


обменяться цифровыми SET-сертификатами. Интернет-Магазин предъявляет
свой сертификат в качестве удостоверения. Покупатель в свою очередь также
предъявляет SET-сертификат. Эта процедура заменяет ввод данных о кредитной
карте и, следовательно, обеспечивает защиту информации о карте от
злоумышленников. При этом очень важно, что номер карточки остается скрытым
от магазина. Тем самым ставится заслон на пути хакеров и недобросовестных
администраторов Интернет-магазинов, ворующих номера карточек.
Преимущества использования SET:
продавцы защищены от покупок с помощью неавторизованной платежной
карточки и от отказа от покупки; продавцы видят только информацию о
приобретаемых предметах, но не данные о счете клиента банки защищены от
неавторизованных покупок; банки видят только информацию о лицевом счете
клиента, но не информацию о покупаемых товарах. клиенты не пострадают от
перехвата номера кредитки и от покупки у несуществующих продавцов.
Недостатки использования SET:
Дороговизна решения и высокие эксплуатационные расходы Внедрение защиты с
помощью протокола SET весьма сложное дело, влекущее за собой существенные
изменения в уже работающем программном обеспечении магазинов и эквайеров.
Очень существенный минус в том, что владельцу карточки требуется установить
на свой компьютер довольно сложный в настройке Cardholder Wallet.
Оригинальный SET предполагает, что все участники платежа в Интернете

66
(владелец карточки, магазин, банк-эквайер) получили в Certificate Authority так
называемые сертификаты, что существенно усложняет процедуру покупки и
приводит к удорожанию транзакций. Стандарт MIA SET - это несколько
упрощенный вариант протокола SET (Secure Electronic Transaction).
Полноценное использование SET-технологий, предполагает наличие SET-
сертификатов у всех участников сделки. Но существует также упрощённый
вариант – технология MIA SET, которая также признана международными
платёжными систeмами. MIA SET предполагает, что владельцу карточки и
магазину не нужно устанавливать у себя сложного программного обеспечения.
Фактически, Cardholder Wallet перекочевывает на сервер эмитента, а Merchant
Server – на сервер эквайера. Эмитент и эквайер обмениваются между собой по
SET от имени владельца карточки и магазина. Эмитент при этом может на свое
усмотрение использовать любые средства идентификации владельца карточки
(пароль, смарт-карта и т.д.). Это же правило распространяется и на эквайера при
идентификации магазина. Благодаря этому MIA SET более прост во внедрении и
эксплуатации чем традиционный SET.

Важно отметить, что Visa объявила о том, что некогда популярный протокол SET
уже не отвечает современным требованиям безопасности и должен быть замещен
более совершенными системами, такими как — Verified by Visa, работающий на
основе протокола 3D Secure и Secure Payment Application (SPA) от MasterCard.

67
П9-СТЕГАНОГРАФИЯ
Стеганография (от греч. στεγανός — скрытый + γράφω — пишу; буквально
«тайнопись») — наука, позволяющая спрятать передаваемые данные в некотором
контейнере, таким образом скрыв сам факт передачи информации. В отличие от
криптографии, которая скрывает содержимое тайного сообщения, стеганография
скрывает сам факт его существования. Впервые понятие стеганографии было
введено в 1499, но сам метод существует очень
давно.
Сообщение — внедряемое скрытным образом послание, которое
необходимо спрятать;
Контейнер (стегоконтейнер) — любой объект, используемый для тайного
внедрения сообщения;
Стегосистема — методы и средства, используемые для создания скрытого
канала для передачи информации;
Стегоканал — канал для передачи стегоконтейнера;
Ключ — ключ для получения скрытого содержания из контейнера
(используется не всегда).

Объект, в котором содержится секретная информация, называется


стегоконтейнером. Примером стегоконтейнера может быть конверт с секретным
сообщением под почтовой маркой. В информационной безопасности под
стеганографией понимают цифровую или компьютерную стеганографию, при
которой секретные данные записываются в служебные области памяти, скрытые
поля документов или файлы мультимедиа.
Применение стеганографии в IT
Стеганографию используют в следующих целях:
Защита интеллектуальной собственности от нелегального копирования.
Спрятанная в медиафайлах информация позволяет определить их
происхождение.
Защита конфиденциальных данных. Стеганография позволяет скрывать
чувствительные данные внутри файлов с открытой информацией, а также
внедрять в секретные документы метки, по которым системы типа DLP смогут
обнаружить и пресечь попытку кражи.

В течение всего ХХ века активно развивалась как стеганография, так и наука об


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

68
коммуникация вредоносного ПО с командным центром, или новые модули
вредоносного ПО.
Классификация стеганографии
В конце 90-х годов выделилось несколько направлений стеганографии:
Классическая стеганография
Технологическая стеганография
Информационная стеганография
Лингвистическая стеганография
Компьютерная стеганография
Цифровая стеганография
В современной стеганографии, в целом, можно выделить в направления:
технологическую стеганографию и информационную стеганографию (рис. ).

К информационной стеганографии можно отнести методы лингвистической и


компьютерной стеганографии. Лингвистические методы стеганографии
подразделяются на две основные категории: условное письмо и семаграммы.

Существуют три вида условного письма: жаргонный код, пустышечный


шифр и геометрическая система.

В жаргонном коде внешне безобидное слово имеет совершенно другое реальное


значение, а текст составляется так, чтобы выглядеть как можно более невинно и
правдоподобно.

При применении пустышечного шифра в тексте имеют значение лишь некоторые


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

69
Третьим видом условного письма является геометрическая форма. При ее
применении имеющие значение слова располагаются на странице в
определенных местах или в точках пересечения геометрической фигуры
заданного размера.

Вторую категорию лингвистических методов составляют семаграммы — тайные


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

В рамках компьютерной стеганографии рассматриваются вопросы,


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

Существуют определенные отличия между технологиями цифровых водяных


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

При использовании методов компьютерной стеганографии должны учитываться


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

Классификация стегосистем

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

Учитывая все многообразие стеганографических систем, сведем их к следующим


типам: безключевым стегосистемам, системам с секретным ключом, системам с
открытым ключом и смешанным стегосистемам.
Алгоритмы и методы стеганографии:
LSB-стеганография (сообщение скрывается в младших битах (возможно
использование одного или нескольких младших бит) контейнера. Чем меньше
бит задействовано, тем меньше артефактов получает оригинальный контейнер
после внедрения.
Метод, основанный на сокрытии данных в коэффициентах дискретного
косинусного преобразования (далее ДКП) — разновидность предыдущего
метода, которая активно используется, например, при внедрении сообщения в
контейнер формата JPEG. При прочих равных, такой контейнер имеет несколько
меньшую емкость чем в предыдущем методе, в том числе за счет того, что
коэффициенты «0» и «1» остаются неизменными — внедрение сообщения в них
невозможно.
Метод сокрытия информации при помощи младших бит палитры— этот метод
по сути является вариантом общего метода LSB, но информация встраивается не
в наименее значащие биты контейнера, а в наименее значащие биты палитры,
очевидный недостаток такого метода — низкая емкость контейнера.
Метод сокрытия информации в служебных полях формата — довольно
простой метод, основанный на использовании служебных полей заголовка
контейнера для хранения сообщения. Очевидные минусы — низкая емкость
контейнера и возможность обнаружения внедренных данных при помощи
обычных программ для просмотра изображения (которые иногда позволяют
видеть содержимое служебных полей).
Метод встраивания сообщения — заключается в том, что сообщение
встраивается в контейнер, затем при помощи схемы, известной обеим сторонам,
извлекается. Можно встроить несколько сообщений в один контейнер, при
условии, что способы их внедрения ортогональны.
Широкополосные методы, которые подразделяются на:
метод псевдослучайной последовательности; используется секретный сигнал,
который моделируется псевдослучайным сигналом.

71
метод прыгающих частот: частота несущего сигнала меняется по
определенному псевдослучайному закону.
Метод оверлея — по сути не является настоящей стеганографией, основан на
том, что некоторые форматы содержат в заголовке размер данных, или же
обработчик этих форматов будет читать файл до маркера конца данных.
Примером такого метода является хорошо известный метод «rar-jpeg», который
основан на конкатенации графического файла в формате JREG и RAR-архива. ПО
для просмотра JPEG будет считывать информацию до границы, указанной в
заголовке файла, а RAR-архиватор откинет все, что находится до сигнатуры
«RAR!», которая обозначает начало архива. Таким образом, если такой файл
открыть в просмотрщике графических файлов — мы увидим картинку, а если в
RAR-архиваторе — содержимое RAR-архива.

Очевидные минусы такого подхода заключаются в том, что оверлей,


добавленный к контейнеру, легко выделяем при визуальном исследовании такого
файла.

В этой статье мы рассматриваем только методы сокрытия информации в


графических контейнерах и в сетевых пакетах, но область применения
стеганографии значительно шире. Почему авторы вредоносного ПО все активней
используют стеганографию в своих разработках? Мы видим три главные
причины:
Это позволяет им скрыть сам факт загрузки/выгрузки данных, а не только сами
данные;
Помогает обойти DPI-системы, что актуально в корпоративных сетях;
Использование стеганографии может позволить обойти проверку в AntiAPT-
продуктах, поскольку последние не могут обрабатывать все графические файлы
(их слишком много в корпоративных сетях, а алгоритмы анализа довольно
дорогие). Для конечного пользователя детектирование стегоконтейнера может
быть нетривиальной задачей.

72

Вам также может понравиться