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
4
П1-АЛГОРИТМ ДИФФИ-ХЕЛЛМАНА (DH)
Идея протокола DH
Два человека, взаимодействующие друг с другом по небезопасному каналу
общения, могут договориться об использовании секретного ключа таким
образом, что они получат один и тот же ключ, не раскрывая его
злоумышленнику, который прослушивает канал общения.
Параметры алгоритма DH
В алгоритме DH р - большое простое число (2000-4000 бит).
Большинство вычислений в этой теме выполнены по моду р, что не всегда
будет указано явно.
Протокол DH использует Zр* - мультипликативную группу по модулю р
она включает в себя числа 1,…р-1, вместе с операцией умножения по модулю р).
Сведения из алгебры:
Выберем любой элемент группы g и рассмотрим числа 1,g,g2,g3, ... (по модулю
р).
Это бесконечная последовательность чисел. С другой стороны, количество
элементов группы Zр* конечно. По этой причине на каком-то этапе элементы
последовательности должны начать повторяться.
Сведения из алгебры:
Последовательно возводя 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 – секретный ключ Алисы; В – секретный ключ Боба;
К= - общий секретный ключ.
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. (Разумеется, эта же атака может быть осуществлена и по отношению к
пользователю А.) По этой причине пользователям А и В необходимо проверять,
не порождают ли полученные ими числа подгрупп с малым количеством
элементов.
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
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 основан на использовании односторонней функции с лазейкой.
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.
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).
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.
Пример. Шифрование.
Т.к. в качестве 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) или «бал»
14
RSA. Создание электронной подписи.
Для сообщения m создается цифровая подпись s на основании секретного ключа
пользователя А s=SA(m)=md(modn);
Пара (m,s) передается пользователю В.
Задание по лекции
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 бит. Другими словами, чем больше
известно о значении, тем меньше его энтропия.
Несколько сложнее подсчитать энтропию для значений, не имеющих
равномерного вероятностного распределения. Наиболее распространенное
определение энтропии переменной Х формулируется следующим образом:
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 минут.
Первая загрузка
Когда генератор псевдослучайных чисел запускается в первый раз, ему
неоткуда взять данные для обновления своего состояния - ведь файла начального
числа еще не существует. Возьмем, например, только что купленный компьютер
с предустановленной операционной системой. Современные операционные
системы после установки генерируют несколько административных
криптографических ключей. Для этого им нужен генератор псевдослучайных
чисел. На новых компьютерах еще нет файла начального числа, поэтому
воспользоваться им мы не можем. Мы бы могли подождать, пока источники
энтропии не сгенерируют достаточно случайных событий для проведения одного
или нескольких обновлений, но это заняло бы слишком много времени. Кроме
того, мы не сможем определить, когда в системе наберется достаточно энтропии
для генерации хороших криптографических ключей.
Выбор решения зависит от специфики конкретного окружения, но без
предоставления начальной энтропии в любом случае не обойтись. Весьма
вероятно, что некоторые очень важные криптографические ключи будут
сгенерированы сразу же после установки операционной системы, когда
аккумулятор энтропии еще не успеет набрать достаточного количества
случайных событий, чтобы корректно обновить состояние генератора.
Пожалуй, наилучшим решением в данной ситуации было бы наличие
внешнего источника энтропии, который мог бы создать первый файл начального
числа.
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
Одним из самых мощных средств разработки криптографических протоколов
является параноидальная модель. Когда пользователь А принимает участие в
протоколе, он предполагает, что все другие участники общения объединились,
чтобы его обмануть.
Параноидальная модель является стандартной моделью поведения, на основе
которой разрабатываются все криптографические протоколы.
29
элементами данных. Первый элемент (дескриптор) идентифицирует текущее
поле, второй (длина) задает длину значения в закодированном виде, а третий
(значение) - это и есть фактические данные, которые должны быть закодированы.
Аутентификация (однонаправленная).
(G1) Аутентификация субъекта.
30
Гарантия для одной стороны протокола через представление доказательств и /
или учётных данных второй стороны, участвующей в протоколе, и того, что
вторая сторона действительно участвовала в текущем сеанса протокола. Обычно
делается через представления таких данных, которые могли быть сгенерированы
только второй стороной. Аутентификация субъекта подразумевает, что
полученные данные могут быть однозначно прослежены до субъекта протокола,
что подразумевает аутентификацию источника данных.
(G2) Аутентификация сообщения.
Гарантия того, что полученное сообщение или фрагмент данных были созданы
определённым субъектом в какое-то (обычно неуказанное) время в прошлом, и
что эти данные не были повреждены или подделаны. Но без предоставления
уникальности или своевременности. Аутентификация сообщений подразумевает
их целостность.
(G3) Защита от повтора.
Защита от ситуации, когда некоторая сторона запишет некоторое сообщение и
воспроизведёт его позднее (возможно — в другом сеансе протокола), что
приведёт к некорректной интерпретации данной стороны как
аутентифицированной.
31
Гарантия для одного из субъектов, что другой субъект действительно владеет
конкретным секретным ключом (либо информацией, необходимой для получения
такого ключа).
(G9) Совершенная прямая секретность.
Гарантия того, что компрометация мастер-ключей в будущем не приведёт к
компрометации сессионных ключей уже прошедших сеансов протокола.
(G10) Формирование новых ключей.
Гарантия возможности создать новые сессионные ключи для каждого сеанса
протокола.
(G11) Защищённая возможность договориться о параметрах безопасности.
Гарантия не только того, что легальные стороны имеют возможность
договориться о параметрах безопасности, но и того, что нелегальная сторона не
вмешалась в протокол и не привела к выбору предпочтительных ей (возможно —
наиболее слабых) параметров безопасности.
32
(G19) Доказательство доставки.
Гарантия неопровержимости доказательств факта получения сообщения.
(G20) Защищённое временное свойство.
Гарантия возможности доказать, что факт нахождения системы в одном из
состояний означает, что некогда в прошлом система хотя бы раз находилась в
некотором другом состоянии. Например, что получение субъектом доступа к
ресурсу означает, что некогда в прошлом субъект успешно оплатил данный
доступ.
33
Атака с неизвестным сеансовым ключом (UKS-атака, unknown key-share
attack)
Класс атак на протоколы с аутентификацией ключа, в которых злоумышленник
получает возможность доказать одной из сторон владение ключом (с помощью,
например, повтора сообщения из легального сеанса), хотя сам ключ
злоумышленник не знает. К такому классу атак уязвим, например, симметричный
протокол Нидхема-Шрёдера.
Большая часть решений состоит в том, что в сети выделяется один или несколько
доверенных центров T (Trent), которые владеют информацией о всех легальных
участниках сети и их ключах. Они же будут явно или неявно выступать одним из
участников протоколов по формированию сеансовых ключей.
Важным моментом при анализе решений данной задачи является то, что
сессионные ключи, вырабатываемые в конкретный момент времени, являются
менее надёжными, чем мастер-ключи, используемые для генерации сессионных.
В частности, нужно предполагать, что хотя злоумышленник не может получить
сессионный ключ во время общения абонентов, он может сделать это по
прошествии некоторого времени (дни, недели, месяцы). И хотя знание этого
сессионного ключа поможет злоумышленнику расшифровать старые сообщения,
он не должен иметь возможность организовать новую сессию с использованием
уже известного ему сессионного ключа.
34
Alice, Bob — легальные абоненты сети, для которых формируется общий
сеансовый ключ. Алиса является инициатором.
Trent — доверенный центр сети.
A, B — некоторые идентификаторы легальных абонентов Алисы и Боба
соответственно.
EA, EB — результат шифрования некоторого блока данных с использованием
секретных ключей легальных абонентов сети Алисы и Боба соответственно.
Такое шифрование могу осуществить либо сами легальные абоненты, либо
доверенный центр, которому известны все секретные ключи.
RA, RB, RT — случайные числа, генерируемые Алисой, Бобом и Трентом
соответственно.
TA, TB, TT— метки времени, генерируемые Алисой, Бобом и Трентом
соответственно.
K — секретный сеансовый ключ, получение которого и является одной из
целью протоколов.
35
Недостатки протокола Wide-Mouth Frog
Генератором ключа является инициирующий абонент. Если предположить, что
Боб — это сервер, предоставляющий некоторый сервис, а Алиса — это тонкий
клиент, запрашивающий данный сервис, получается, что задача генерации
надёжного сессионного ключа взваливается на плечи абонента с наименьшими
мощностями.
В протоколе общение с вызываемым абонентом происходит через доверенный
центр. Как следствие, второй абонент может стать мишенью для DDOS-атаки с
отражением (англ. distributed denial-of-service attack), когда злоумышленник будет
посылать пакеты на доверенный центр, а тот формировать новые пакеты и
посылать их абоненту. Если абонент подключён к нескольким сетям (с
несколькими доверенными центрами), это позволит злоумышленнику вывести
абонента из строя. Хотя защититься от подобной атаки достаточно просто,
настроив соответствующим образом доверенный центр.
36
При повторении шагов 3 и 5, по прошествии определенного времени наступит
расшифрование ключа K.
С точки зрения доверенного центра шаги 1, 3 и 5 являются корректными
пакетами, инициирующие общение абонентов между собой. Метки времени в них
корректны (если Ева будет успевать вовремя эти пакеты посылать). С
точки зрения легальных абонентов каждый из пакетов является приглашением
другого абонента начать общение. В результате произойдёт две вещи:
Каждый из абонентов будет уверен, что закончился протокол создания нового
сеансового ключа, что второй абонент успешно аутентифицировал себя перед
доверенным центром. И что для установления следующего сеанса связи будет
использоваться новый (на самом деле — старый) ключ K.
После того, как пройдёт время, нужное злоумышленнику Еве для взлома
сеансового ключа K, Ева сможет и читать всю переписку, проходящую между
абонентами, и успешно выдавать себя за обоих из абонентов.
37
общим сеансовым ключом абонентов K. Однако данная модификация приводит к
тому, что протокол теряет своё самое главное преимущество перед другими
протоколами — простоту.
Протокол Нидхема—Шрёдера
Первый абонент получает от доверенного центра специальный пакет, который он
без всякой модификации отправляет второму абоненту.
Задание к лекции:
Провести сравнительный анализ протоколов Wide-Mouth Frog и Нидхема— Шрёдера и записать в таблицу результат:
Протокол Отвея-Рииса
Симметричный протокол аутентификации и обмена ключами с использованием
доверенной стороны. Условия работы протокола:
Доверенный центр ТТР
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
генерации, а затем с нужной степенью достоверности измерить. Таким
параметром оказалась поляризация.
41
Квантовый протокол распределения ключей BB84
Алиса и Боб должны использовать:
квантовый канал связи;
классический канал связи.
Протокол состоит из трёх частей:
1. Передача и приём фотона по квантовому каналу связи от Алисы к Бобу;
2. Передача Бобом информации об использованных анализаторах;
3. Передача Алисой информации о совпадении выбранных анализаторов и
исходных поляризаций.
Злоумышленник ЕВА
1. Может уничтожить фотон с использованием Man-in-the-middle attack (в
результате ключ не будет сгенерирован и произойдет повторная генерация
фотона с задержкой по времени).
2. Ева может попытаться пропустить фотон через один из поляризаторов и
попробовать поймать фотон детектором. (Но у фотона четыре возможных
состояния, поэтому положение одного поляризатора и единственного детектора
не поможет Еве точно определить, какое из этих четырёх состояний принимает
фотон. А пропустить фотон через два детектора не получится. Во-первых, если
фотон прошёл вертикальный поляризатор, то какой бы исходной у него не была
поляризация («↖ », «↑», «↗ »), после поляризатора она станет вертикальной «↑»
(вторая составляющая «сотрётся»). Во-вторых, детектор, преобразуя фотон в
электрический сигнал, тем самым уничтожает его, что несколько затрудняет его
дальнейшие измерения).
43
и детектор. В случае наличия сигнала на детекторе он записывает единицу, в
случае отсутствия – ноль.
Т.о. Боб вводит новую случайную величину B (отражает выбор базиса
поляризации Бобом) и в результате измерений получает новую случайную
величину ХВ. Причём Бобу пока неизвестно, использовал ли он оригинальный
сигнал YA, переданный Алисой, или же подложный сигнал YE, переданный
Евой:
XB1 = f ( YA, B );
XB2 = f ( YE, B ).
Для тех фотонов, для которых Боб выбрал неправильный базис поляризации,
значения XB1 и XA будут представлять собой независимые случайные величины
(так как, например, при исходной диагональной поляризации фотона он пройдёт
и через вертикальную, и через горизонтальную щель с вероятностью 50%):
44
Боб должен угадать базис поляризации Евы (B = E)
45
Любые квантовые протоколы требуют оригинального дорогостоящего
оборудования.
Квантовые каналы связи это всегда физические каналы связи. У них
существует максимальная длина канала и определённый уровень ошибок.
Ни один квантовый протокол не может обходиться без дополнительного
классического канала связи. Для такого связи требуются как минимум такой же
уровень защиты, как и при использовании, например, криптографии с открытым
ключом.
Для всех протоколов особую проблему представляет не только доказательство
корректности, но и инженерная задача по реализации протокола. Например, не
существует простого способа создать ровно один фотон. Недогенерация фотонов
приводит, очевидно, к ошибкам передачи, а генерация дубля в том же временном
слоте — к возможностью его перехвата злоумышленником без создания помех в
канале.
46
Спектральная атака. Если фотоны созданы четырьмя разными фотодиодами,
они имеют разные спектральные характеристики. Атакующий может измерять
цвет фотона, а не его поляризацию.
Вопросы к лекции:
1. Перечислить достоинства и недостатки протокола Отвея-Рииса.
2. Перспективы развития квантовой криптографии в России.
Протокол 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
и той же транзакции и в каком порядке они выполнялись. Если часы различных
компьютеров хорошо синхронизированы и их показания не отклоняются (или
практически не отклоняются) друг от друга, наличие временных меток позволяет
соотносить события из различных журналов, находящихся на разных машинах.
Вопросы к лекции:
Что необходимо предпринять, чтобырешить проблему атаки на часы и быть
уверенным, что системное время не откланяется от нормы?
Какие решения данной проблемы существуют сегодня?
Передачу используют:
для различных сайтов;
для электронной почты;
для обмена сообщениями.
SSL — криптографический протокол, который обеспечивает безопасность связи.
Он использует асимметричную криптографию для аутентификации ключей
обмена, симметричное шифрование для сохранения конфиденциальности, коды
аутентификации сообщений для целостности сообщений. Протокол широко
54
используется для обмена мгновенными сообщениями и передачи голоса через IP,
в таких приложениях, как электронная почта, Интернет-факс и др.
установление SSL-сессии;
защита потока данных.
55
криптографических алгоритмах и формируют общий "секрет", на основе
которого создаются общие сеансовые ключи для последующей защиты
соединения. Этот этап называют также процедурой "рукопожатия".
Атака отклика
Злоумышленник записывает коммуникационную сессию между сервером и
клиентом. Позднее, он пытается установить соединение с сервером, воспроизводя
записанные сообщения клиента. Но 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] .
59
П8-КРИПТОГРАФИЧЕСКИЙ ПРОТОКОЛ TLS
60
При разработке были учтены и исправлены все ошибки предшественника. В
отличие от SSL новый протокол регулярно обновляется и продолжает развитие. В
настоящее время для защиты соединения применяется только TLS-протокол.
Поэтому, когда речь идёт о протоколе SSL, на самом деле подразумевается
протокол TLS.
TLS-протокол лежит в основе безопасного обмена информацией, но не
обеспечивает его сам по себе. Чтобы защищённое соединение состоялось, нужно
настроить одно из безопасных интернет-соединений, например — FTP (для
передачи и загрузки файлов), IMAP/POP3/SMTP (для почтовых протоколов) и
HTTPS (для интернет-страниц).
62
установленными симметричными ключами. Это необходимо для увеличения
быстродействия, так как криптография с открытым ключом требует значительно
больше вычислительной мощности.
Для обхода данной проблемы был разработан механизм «Session Ticket», который
устраняет необходимость сохранять данные каждого клиента на сервере. Если
клиент при первоначальной установке соединения указал, что он поддерживает
эту технологию, то в сервер в ходе TLS Handshake отправляет клиенту так
называемый Session Ticket – параметры сессии, зашифрованные закрытым
ключом сервера. При следующем возобновлении сессии, клиент вместе с
ClientHello отправляет имеющийся у него Session Ticket. Таким образом, сервер
избавлен от необходимости хранить данные о каждом соединении, но соединение
по-прежнему безопасно, так как Session Ticket зашифрован ключом, известным
только на сервере.
Сравнительная таблица
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.
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, но сам метод существует очень
давно.
Сообщение — внедряемое скрытным образом послание, которое
необходимо спрятать;
Контейнер (стегоконтейнер) — любой объект, используемый для тайного
внедрения сообщения;
Стегосистема — методы и средства, используемые для создания скрытого
канала для передачи информации;
Стегоканал — канал для передачи стегоконтейнера;
Ключ — ключ для получения скрытого содержания из контейнера
(используется не всегда).
68
коммуникация вредоносного ПО с командным центром, или новые модули
вредоносного ПО.
Классификация стеганографии
В конце 90-х годов выделилось несколько направлений стеганографии:
Классическая стеганография
Технологическая стеганография
Информационная стеганография
Лингвистическая стеганография
Компьютерная стеганография
Цифровая стеганография
В современной стеганографии, в целом, можно выделить в направления:
технологическую стеганографию и информационную стеганографию (рис. ).
69
Третьим видом условного письма является геометрическая форма. При ее
применении имеющие значение слова располагаются на странице в
определенных местах или в точках пересечения геометрической фигуры
заданного размера.
Классификация стегосистем
70
По аналогии с криптографическими системами, в стеганографии различают
системы с секретным ключом и системы с открытым ключом.
Встеганографической системе с секретным ключом используется один ключ,
который должен быть заранее известен абонентам до начала скрытого обмена
секретными сообщениями либо переслан по защищенному каналу. В
стегосистеме с открытым ключом для встраивания и извлечения тайного
сообщения используются разные ключи, причем вывести один ключ из другого с
помощью вычислений невозможно. Один из ключей (открытый) может
передаваться свободно по незащищенному каналу связи, а второй, секретный
ключ, — по защищенному каналу. Данная схема хорошо работает при взаимном
недоверии отправителя и получателя.
71
метод прыгающих частот: частота несущего сигнала меняется по
определенному псевдослучайному закону.
Метод оверлея — по сути не является настоящей стеганографией, основан на
том, что некоторые форматы содержат в заголовке размер данных, или же
обработчик этих форматов будет читать файл до маркера конца данных.
Примером такого метода является хорошо известный метод «rar-jpeg», который
основан на конкатенации графического файла в формате JREG и RAR-архива. ПО
для просмотра JPEG будет считывать информацию до границы, указанной в
заголовке файла, а RAR-архиватор откинет все, что находится до сигнатуры
«RAR!», которая обозначает начало архива. Таким образом, если такой файл
открыть в просмотрщике графических файлов — мы увидим картинку, а если в
RAR-архиваторе — содержимое RAR-архива.
72