Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 61
Воробьев Е.Г.
Криптографическая защита конфиденциальной информации и использование ЭЦП
учебно-методическое пособие
«Академия АЙ-ТИ»
2009
ОГЛАВЛЕНИЕ
[0.1] Основные понятия [0.2] 2. Классификация криптографических преобразований [0.3] 3. Шифрование с закрытым ключом [0.3.1] 3.1. Общая характеристика [0.3.2] 3.2. Алгоритмы шифрования DES и 3-DES [0.3.3] 3.3. Алгоритм шифрования AES [0.3.4] 3.4. Алгоритм шифрования и выработки ЭЦП по ГОСТ 28147-89 [0.4] 4. Шифрование с открытым ключом [0.4.1] 4.1. Общая характеристика [0.4.2] 4.2. Алгоритм RSA [0.4.3] 4.3. Алгоритм Диффи-Хеллмана [0.5] 5. Криптографические хэш-функции. Цифровая подпись [0.5.1] 5.1. Общая характеристика [0.5.2] 5.2. Стандарт вычисления аутентифицирующей комбинации HMAC [0.5.3] 5.3. Хэш-функция MD5 [0.5.4] 5.4. Хэш-функция SHA-1 [0.5.5] 5.5. Процедуры выработки цифровой подписи по ГОСТ [0.6] 6. Защита электронного документооборота с использованием ЭЦП [0.6.1] 6.1. Общая характеристика [0.6.2] 6.2. Федеральный закон № 1-ФЗ от 10.01.2002 г. "Об электронной цифровой подписи" [0.6.3] 6.3. Проблемы при использовании стандартов и нормативных документов, касающихся ЭЦП [0.7] 7. Технология виртуальных частных сетей [0.7.1] 7.1. Общие сведения [0.7.2] 7.2. Протокол IPSec [0.7.2.1] 7.2.1. Общая характеристика [0.7.2.2] 7.2.2. Протокол аутентификации AH [0.7.2.3] 7.2.3. Протокол шифрования ESP [0.7.2.4] 7.2.4. Согласование протоколов и управление ключами [0.7.3] 7.3. Протокол PPTP [0.8] 8. Примеры аппаратно-программных средств криптографической защиты [0.8.1] 8.1. Пакет PGP [0.8.2] 8.2. Пакет Криптон [0.8.3] 8.3. Система криптографической защиты информации "ВербаО" [0.8.4] 8.4. Программный комплекс "Inter-PRO" [0.8.5] 8.5. Библиотека криптографических преобразований "SSL-PRO" [0.8.6] 8.6. Средства защиты "Message-PRO" [0.8.7] 8.7. Криптопровайдер "Signal-COM CSP" [0.8.8] 8.8. Программно-аппаратный комплекс "Доверенный удостоверяющий центр" [0.8.9] 8.9. Удостоверяющий центр "Notary-PRO" |
1. Криптографические средства защиты информации
Слово "crypto" по гречески означает "тайна", таким образом дословно криптография это тайнопись или иными словами область знаний, относящаяся к способам такого преобразования информации, чтобы она стала недоступной для понимания сторонними лицами.
Со временем задачи криптографии расширились и в настоящее время можно сформулировать следующее определение.
Криптография это область знаний, связанная с решением таких проблем безопасности информации, как конфиденциальность, целостность, аутентификация и невозможность отказа сторон от авторства или присвоения авторства.
Суть перечисленных задач можно представить следующими определениями.
Обеспечение конфиденциальности решение проблемы защиты информации от ознакомления с ее содержанием со стороны лиц, не имеющих права доступа к ней.
Обеспечение целостности гарантирование невозможности несанкционированного или, по крайней мере, незаметного изменения информации, т.е. ее модификации, удаления или подмены.
Обеспечение аутентификации разработка методов подтверждения подлинности сторон, участвующих в информационном обмене, а также самой передаваемой информации.
Обеспечение невозможности отказа от авторства или присвоения авторства предотвращение возможности отказа субъектов информационного обмена от некоторых совершенных ими действий или приписывания им действий, которых они не совершали.
Изначально криптография была ориентирована на решение только первой задачи и поэтому до сих пор ассоциируется с процессом шифрования. Приведем еще несколько терминов.
Отправитель владелец информации, которую требуется защищенным образом передать другому лицу.
Получатель лицо, для которого предназначена информация, посылаемая отправителем.
Открытый текст исходная информация, предназначенная для передачи.
Шифртекст исходная информация, преобразованная к специальному виду, который делает ее недоступной для понимания лицами, для которых она не предназначена.
Шифрование процесс получения из открытого текста шифртекста.
Расшифрование процесс получения получателем сообщения из шифртекста открытого текста.
Шифр семейство обратимых преобразований, каждое из которых определяется некоторым параметром, называемым ключом, и которые применяются для выполнения шифрования и расшифрования.
Ключ компонент шифра, определяющий конкретный вид преобразования информации при шифровании или расшифровании.
Криптографический алгоритм преобразование, входящее в состав шифра и однозначно определяемое ключом.
Криптосистема (шифрсистема) совокупность двух криптографических алгоритмов: шифрования и расшифрования, применяемых для криптографической защиты информации, передаваемой между отправителем и получателем.
Дешифрование целенаправленный процесс получения из шифртекста открытого текста сторонним лицом, которому закрытая информация не предназначена и не известен ключ расшифрования.
Криптоаналитик лицо, выполняющее задачу дешифрования.
Критоаналаиз наука, касающаяся разработки методов вскрытия шифров, т.е. выполнения задач дешифрования.
Стойкость шифра способность шифра противостоять попыткам выполнения дешифрования зашифрованной с помощью него информации.
Криптология область знаний, объединяющая криптографию и криптоанализ.
Новые задачи, возникшие перед криптографией, ввели в обращение еще несколько терминов.
Криптографическая хэш-функция однонаправленное преобразование исходной информации в комбинацию символов (битов) фиксированной длины. Однонаправленность в данном случае предполагает, что обратное преобразование из комбинации символов в исходную информацию практически невозможно, т.е. не может быть выполнено за приемлемое время. Хэш-функции применяются для решения задач обеспечения целостности, аутентификации и обеспечения невозможности отказа от авторства или приписывания авторства.
Цифровая подпись комбинация символов (битов), формируемая обычно на основе некоторой ключевой последовательности и подписываемой информации, для однозначного определения отправителя информации, аутентификации самой информации и обеспечения невозможности отказа от авторства. Схема цифровой подписи предполагает наличие двух алгоритмов: формирования подписи и проверки подписи. Оба этих алгоритма основываются, как правило, на применении криптографических хэш-функций.
И хэш-функциям и цифровым подписям также приписывается свойство стойкости, т.е. способности противостоять попыткам, соответственно, обратного преобразования или подделки.
Рассмотрев основные криптографические термины, приведем краткую классификацию соответствующих преобразований.
Начнем при этом с исторически появившихся первыми преобразований шифрования, Отметим также, что аналогичным образом, в зависимости от входящих в их состав шифров, классифицируются и криптосистемы в целом.
1. По типу преобразования информации при шифровании различают:
Шифры замены используют замену фрагментов открытого текста (шифрвеличин) на некоторые другие эквивалентные фрагменты (шифробозначения).
Шифры перестановки используют перестановку фрагментов открытого текста без их замены.
Композиционные шифры используют последовательное применение нескольких шифров различных типов.
2. По связи между ключами шифрования и расшифрования шифры замены и соответствующие криптосистемы различают следующим образом:
Симметричные шифры в общем случае предполагают, что знание ключа шифрования позволяет легко найти ключ расшифрования. Обычно же для выполнения шифрования и расшифрования просто используется один и тот же ключ, который известен отправителю и получателю и хранится ими в секрете. Поэтому симметричные криптосистемы еще называют системами с закрытым ключом.
Асимметричные шифры предполагают, что знание ключа шифрования не позволяет (по крайней мере, за приемлемое время) найти ключ расшифрования. Обычно ключ шифрования является общедоступным, а ключ расшифрования известен только получателю информации и хранится им в секрете. Поэтому асимметричные криптосистемы еще называют системами с открытым ключом.
3. По возможности изменения криптографического алгоритма в процессе шифрования шифры замены подразделяют на:
Одноалфавитные или шифры простой замены каждая шифрвеличина заменяется шифробозначением по неизменному алгоритму.
Многоалфавитные каждая шифрвеличина может быть заменена шифробозначениями по нескольким алгоритмам, меняющимся по мере ее встречаемости в открытом тексте.
4. По минимальному размеру фрагмента открытого текста, обрабатываемого шифром замены за один проход, различают:
Потоковые шифры за один раз обрабатывается один символ.
Блочные шифры за один раз обрабатывается блок символов фиксированной длины.
5. По количеству возможных замен фрагментов открытого текста шифры замены делят на:
Однозначные каждая шифрвеличина может быть заменена только на одно шифробозначение.
Многозначные каждая шифрвеличина может быть заменена на одно из нескольких шифробозначений, как правило, для скрытия статистических свойств открытого текста.
6. По количеству возможных вариантов открытого текста, получаемых по шифртексту, шифры замена подразделяют на:
Равнозначные из шифртекста получается единственный вариант открытого текста.
Разнозначные из шифртекста получается несколько вариантов открытого текста.
Появившиеся позднее для выполнения новых задач защиты информации (проверка целостности, проверка подлинности, невозможность отказа от авторства и т.д.) криптографические хэш-функции и соответствующие процедуры выработки и проверки цифровой подписи также можно классифицировать как симметричные и асимметричные схемы:
Если и для выработки, и для проверки цифровой подписи некоторой информации используется один и тот же, естественно, хранящийся в секрете ключ, то такая схема называется симметричной. Как правило, такие схемы применяются для надежного обмена информацией в распределенных технических системах.
Если же для выработки цифровой подписи используется один ключ, как правило, секретный, и хранящийся у отправителя (владельца) подписываемой информации, а для ее проверки другой, как правило, открытый, передаваемый получателю информации, и при этом на основе открытого ключа за приемлемое время нельзя получить закрытый ключ, то такая система называется асимметричной. Такие схемы обычно используются в системах массового обслуживания и предоставления услуг. Например, банк или брокерская контора может передать своему клиенту секретный ключ для подписывания указаний по управлению своим счетом или активами в виде акций, а пользоваться оставшимся открытым ключом, чтобы проверять, действительно ли полученные указания поступили от клиента и поступили в неизменном виде.
Исторически первыми появились симметричные криптосистемы, которые предполагали наличие одного секретного ключа, известного только отправителю и получателю, с помощью которого производилось и шифрование, и расшифрование.
В настоящее время симметричные криптосистемы по объему шифруемого трафика преобладают над асимметричными по причине малой длины ключа, необходимой для обеспечения требуемой стойкости, и, как следствие, более высокого быстродействия.
К недостаткам закрытых систем относится сложность защищенного распространения и хранения самих секретных ключей.
Наиболее известные и широко применяемые сейчас алгоритмы шифрования с секретным ключом и их характеристики перечислены в табл. 9.1.
Таблица 9.1
Алгоритмы шифрования с закрытым ключом
Название |
Тип |
Размер блока, бит |
Размер ключа, бит |
Количество проходов |
DES |
блочный |
64 |
56 |
16 |
3-DES |
блочный |
64 |
168 |
48 |
AES |
блочный |
64, 96, 128 |
64, 96, 128 |
16 |
IDEA |
блочный |
64 |
128 |
8 |
Skipjack |
блочный |
64 |
80 |
32 |
RC2 |
блочный |
64 |
переменный |
н/д |
RC4 |
потоковый |
1 |
переменный |
н/д |
RC5 |
блочный |
32, 64, 128 |
до 2048 |
до 255 |
CAST |
блочный |
64 |
40-64 |
8 |
Blowfish |
блочный |
64 |
до 448 |
16 |
ГОСТ 28147-89 |
блочный |
64 |
256 |
32 |
За рубежом стандартом де-факто алгоритма шифрования является AES (Advanced Encryption Standard), принятый в 1998 году, а также 3DES, являющийся усовершенствованной версией предыдущего стандарта DES (Data Encryption Standard) 1976 года.
В Российской Федерации для целей шифрования установлен криптографический алгоритм ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования".
В последующих параграфах суть указанных алгоритмов рассматривается подробнее.
Американский алгоритм шифрования DES был разработан в 1976 году Национальным институтом стандартов и технологий (NIST) и опубликован в 1977 году. Само это событие стало беспрецедентным в мировой практике, поскольку, хотя всегда и предполагается, что криптоаналитику известен алгоритм шифрования, они обычно никогда не публиковались и хранились в секрете. Американские разработчики применили новый подход, заявив, что криптоанализ созданного алгоритма по сложности сопоставим с перебором всех 256 возможных ключей, поэтому его публикация гарантированно не влечет ослабления криптосистемы, и все желающие могут попытаться выявить недостатки предложенной схемы. Таким образом, дополнительно они обеспечили себе всемирное тестирование.
Алгоритм DES официально действовал в качестве стандарта с 1980 по 1998 год, когда производительность вычислительной техники достигла такого уровня, что перебор всех возможных ключей стал возможен за короткое время (например, распределив диапазоны ключей по тысячам компьютеров в сети Internet, можно добиться дешифрования в течение суток).
В связи с этим в 1997 году NIST объявил конкурс на создание нового стандарта AES (Advanced Encryption Standard), который завершился в 2000 году принятием нового стандарта на базе алгоритма Rijndael. В течение же переходного периода применялся алгоритм 3-DES, который использует ключ в три раза длиннее (168 бит) и заключается в следующем:
Таким образом, базовая процедура осталась неизменной, она лишь удлинилась, что позволило увеличить ключ до неприемлемой, с точки зрения тотального перебора, длины.
Сам алгоритм DES, как и многие блочные шифры замены, имеет четыре модификации:
В целом процесс шифрования включает следующие этапы:
Опишем их подробнее.
Подготовка преобразующих комбинаций.
1. В ключевой комбинации из 56 бит после каждых семи бит вставляется еще один, который дополняет предыдущие семь до нечетного количества единиц. Таким образом получается комбинация TK из 64 бит.
2. Комбинация TK подвергается перестановке для получения 56 бит:
57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 64 53 45 37 29
21 13 5 28 20 12 4
3. В полученной перестановке первые 28 бит объявляются как C0, а следующие 28 бит как D0.
4. Путем циклического сдвига влево соответствующих комбинаций с предыдущим номером генерируется по 16 комбинаций Ci и Di (i = 1 … 16). Так для получения C1 и D1 производят сдвиг C0 и D0, для C2 и D2 C1 и D1 и т.д. Количество сдвигаемых разрядов n зависит от номера комбинации и указано в табл. 9.2.
Таблица 9.2
i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
n |
1 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
5. На основе следующей перестановки соответствующих блоков CiDi генерируется 16 ключевых комбинаций Ki (i = 1 … 16) по 48 бит, которые и будут непосредственно использоваться при шифровании:
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Начальная перестановка блока открытого текста.
1. Очередной шифруемый блок открытого текста W из 64 бит переставляется для получения комбинации W' следующим образом:
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
2. Полученная комбинация W' представляется как комбинация первых своих 32 бит, обозначаемых L0, и следующих 32 бит, обозначаемых R0.
16 проходов преобразования Фейстеля.
Последовательным образом вычисляется по 16 комбинаций Li и Ri (i = 1 … 16) исходя из следующих соотношений (здесь xor побитное исключающее ИЛИ):
Li = Ri1; Ri = Li1 xor f(Ri1, Ki)
Конечная перестановка.
Полученная комбинация из 64 бит R16L16 подвергается перестановке, которая является обратной к начальной перестановке (т.е. биты возвращаются на исходное место):
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
Полученный таким образом блок из 64 бит и является шифртекстом.
Расшифрование шифртекста происходит по такому же алгоритму, только 16 обратных преобразований Фейстеля начинаются с комбинации R16L16 и выполняются по соотношениям:
Ri1 = Li; Li1 = Ri xor f(Li, Ki)
пока не будет получена комбинация L0R0, которая подвергается конечной перестановке, являющейся открытым текстом.
Саму суть алгоритма DES представляет функция шифрования f(X32, Y48). Рассмотрим алгоритм ее вычисления.
1. На вход функции поступает 32-битная комбинация данных X и 48битная ключевая комбинация Y.
2. Комбинация данных X расширяется до 48 бит по следующей схеме:
32 1 2 3 4 5
4 5 6 7 8 9
8 9 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 1
3. Над расширенной комбинацией X48 и ключевой комбинацией Y48 производится операция побитного исключающего ИЛИ:
B = X48 xor Y48
4. Комбинация B делится на 8 комбинаций по 6 бит:
B = B1B2B3B4B5B6B7B8
5. Для каждой комбинации Bi существует специальная таблица Si, состоящая из 4-х строк и 16-ти столбцов, пронумерованных, начиная с нуля. Каждый элемент представляет собой число от 0 до 15 (т.е. в двоичном виде 4 бита). На основе этих таблиц каждая комбинация Bi из 6-ти бит преобразуется в комбинацию B'i из 4-х бит, являющуюся каким-либо элементом таблицы Si. Элемент выбирается по следующему правилу: номер строки в таблице образуют крайние биты (левый и правый) комбинации Bi, а номер столбца внутренние четыре бита.
Например, B7 = 110010. Крайние биты здесь 10 (110010), значит номер строки равен 2. Внутренние биты 1001 (110010), значит номер столбца 9. Элемент выбирается из таблицы S7.
6. В результате получается комбинация из 32-х бит:
B' = B'1B'2B'3B'4B'5B'6B'7B'8
7. Комбинация B' подвергается следующей перестановке:
16 7 20 21
29 12 28 17
1 15 23 26
5 18 31 10
2 8 24 14
32 27 3 9
19 13 30 6
22 11 4 25
Эта перестановка и является блоком в 32 бита, который представляет результат работы функции шифрования.
Ниже приводятся все 8 таблиц перекодировки, которые не подлежат изменению при реализации алгоритма, поскольку именно они обеспечивают его нелинейность и высокую криптографическую стойкость.
S1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
S5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S7
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
S8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
К середине 1990-х годов стало очевидно, что 56 бит ключа при шифровании DES стало недостаточно, шифр весьма медленно работает в программных реализациях и был рассчитан на 4-х битные процессоры 1970-х годов. Поэтому в 1997 году NIST объявил о запуске программы по принятию нового криптостандарта AES (Advanced Encryption Standard). Основные требования к алгоритму AES: размер блока в 128 бит и возможность использования ключей размером 128, 192 и 256 бит.
В августе 1998 года прошла первая конференция кандидатов на AES, где были объявлены 15 принятых на конкурс алгоритмов. Одна из самых больших проблем при сравнении разнообразных алгоритмов это два конфликтующих между собой требования к конструкции шифра: стойкость и скорость. В течение 2-х лет специалисты комитета, исследуя самостоятельно и изучая публикации других исследователей, выбрали пять лучших представителей, прошедших во второй тур соревнования. Ими стали MARS, RC6, Rijndael, Serpent, TwoFish. Комплексный анализ всех достоинств и недостатков привёл к тому, что 2 октября 2000 года новым стандартом блочного шифрования в США был объявлен алгоритм Rijndael.
Алгоритм Rijndael создавался таким образом, чтобы с помощью него можно было шифровать блоки размером 128, 192 и 256 бит с использованием ключа размером 128, 192 и 256 бит. Ниже рассмотрен алгоритм, шифрующий данные блоками размером 128 бит с использованием ключа, соответственно, размером 128 бит. В целом алгоритм состоит из одного раунда инициализации и 10 раундов шифрования (количество раундов также зависит от размеров блока и ключа).
Раунд инициализации состоит из одной операции сложения входного текста с подключом (AddRoundKey). Первые 9 раундов шифрования включают в себя четыре операции каждый, которые выполняются в следующем порядке:
побайтовая замена с помощью S-таблицы (ByteSub);
сдвиг строк (ShiftRow);
умножение столбцов на матрицу M (MixColumn);
сложение с подключом (AddRoundKey).
И, наконец, последний, десятый раунд, состоит из трёх операций:
побайтовая замена;
сдвиг строк;
сложение с подключом.
Входной текст представляется в виде матрицы 4х4, в которой каждый элемент составляет один байт (т.е. всего 16 байт по 8 бит, итого 128 бит). Если входной текст B=B00B01B02B03B10B11B12B13B20B21B22B23B30B31B32B33, то коэффициенты при 8-ми битовых элементах обозначают позицию элемента в матрице. Все операции выполняются с этой матрицей. Аналогичным образом представляется и 128-ми битовый ключ.
Операция сложения текста с подключом представляет собой операцию XOR соответствующих элементов обеих матриц (AddRoundKey).
Операция побайтовой замены состоит в замене каждого элемента матрицы элементом из S-таблицы размером 16х16 (по аналогии с алгоритмом DES). Строка, в которой стоит элемент S-таблицы, определяется по первым четырём битам байта, а столбец по последним (ByteSub).
Сдвиг строк выполняется следующим образом: первая строка матрицы остаётся неизменной, во второй строке производится циклический сдвиг влево на один элемент, в третьей на два элемента, в четвёртой на три. Затем каждый столбец умножается на фиксированную матрицу М.
Подключи для каждого раунда, представляемые в виде матриц размером 4х4, считаются из подключа предыдущего раунда. Подключ первого раунда генерируется из ключа шифрования.
Первый столбец подключа вычисляется в три этапа:
1. Последний столбец подключа предыдущего раунда циклически сдвигается влево на один элемент.
2. Побайтовая замена элементов столбца по S-таблице происходит аналогичным образом, как и в тексте.
3. Результат суммируется с первым столбцом и столбцом фиксированной матрицы Rcon (номер столбца определяется по порядковому номеру раунда) с помощью операции исключающего или.
Остальные столбцы получаются применением операции XOR к предыдущему столбцу и столбцу предыдущего раунда с тем же номером, что и у вычисляемого.
Расшифрование по алгоритму Rijndael отличается от шифрования по четырём пунктам:
1. Побайтовая замена при расшифровании является инверсной к побайтовой замене при шифровании.
2. Сдвиг строк происходит в обратном направлении (вправо) на то же самое число элементов, что и при шифровании.
3. Подключи используются в обратном порядке, причём все за исключением первого и последнего умножаются справа на матрицу транспонированную матрице M.
4. При умножении текста на матрицу вместо матрицы M используется транспонированная к ней.
Основным преимуществом Rijndael является то, что алгоритм реализует нетрадиционную схему, отличную от схемы Фейстеля, используемой в большинстве симметричных блочных алгоритмов (см. табл. 9.1). Он обладает хорошим быстродействием на всех платформах от 8-битных до 64-битных, очень высоким потенциальным параллелизмом, минимальными требованиями к оперативной памяти. Процедуры шифрования и расшифрования отличаются достаточно сильно по сравнению с простым изменением порядка ключей. В дополнении к этому в алгоритме можно использовать разнообразные размеры ключа и блоков открытого текста, что также затрудняет процесс взлома.
Российский стандарт шифрования ГОСТ 28147-89 является более современным, чем DES и значительно более стойким, чем даже 3-DES и AES за счет применения более длинного ключа 256 бит и использования при шифровании блоков 32-х проходов (для ускорения преобразования некоторые авторы также предлагают использовать сокращенную версию на основе 64-бит ключа и 8 проходов).
Как и в случае с DES, стандартом предусмотрены четыре режима:
Процесс работы алгоритма в случае простого шифрования одного блока 64 бит выглядит следующим образом:
1. Ключевая комбинация из 256 бит делится на 8 частей по 32 бита:
KEY = k0k1k2k3k4k5k6k7
Если алгоритм применяется для шифрования блока в режиме простого шифрования, гаммирования с обратной связью или просто гаммирования, данный ключ преобразуется в расширенную последовательность из n = 32 частей по 32 бита:
KEY' = =
k0k1k2k3k4k5k6k7k0k1k2k3k4k5k6k7k0k1k2k3k4k5k6k7k7k6k5k4k3k2k1k0
Если же применяется режим выработки имитовставки, то ключ преобразуется в расширенную последовательность меньшей длины из n = 16 частей по 32 бита:
KEY' = = k0k1k2k3k4k5k6k7k0k1k2k3k4k5k6k7k0
2. Очередной блок открытого текста из 64 бит разделяется на две части по 32 бита: T = AB.
3. Внутри каждой из частей A и B происходит перестановка бит в обратном порядке, т.е. 1-й бит становится 32-м, 2-й бит становится 31-м и т.д. Таким образом, в вычислительных системах с архитектурой x86 восстанавливается "естественная" последовательность бит от младших к старшим "слева-направо" (в то время как в компьютерах следование бит от младшего к старшему идет справа-налево). В результате получаются комбинации A0 и B0.
4. Происходит n преобразований (32 или 16) в соответствии с правилами:
для i = 1 ... n:
Ai = f(Ai1 ) xor Bi1;
Bi = Ai1;
Здесь сложение по модулю 232, т.е. при переполнении слова в 32 бита, соответствующий разряд просто игнорируется.
5. Последние по счету комбинации меняются местами:
A32 = A31;
B32 = f(A31 k0) xor B31.
А затем происходит их обратная перестановка, т.е. их 1-е биты становятся 32-ми, 2-е биты становятся 31-ми и т.д. В результате получаются комбинации Aш и Bш.
6. Блок шифртекста является комбинацией AшBш.
Как и в случае с алгоритмом DES основная нагрузка при шифровании возложена на функцию шифрования f, которая, однако, в данном случае намного более проще и, соответственно, быстрее. Суть ее работы заключается в следующем:
1. На вход функции поступает комбинация из 32-х бит. Она разделяется на 8 частей по 4 бита:
B = B1B2B3B4B5B6B7B8
2. Для каждой комбинации Bi существует специальный вектор Si, состоящий из 16-ти элементов, пронумерованных, начиная с нуля. Каждый элемент представляет собой число от 0 до 15 (т.е. в двоичном виде 4 бита). На основе этих векторов каждая комбинация Bi заменяется на комбинацию B'i, являющуюся каким-либо элементом вектора Si. Элемент выбирается по следующему правилу: номер элемента равен значению Bi.
Например, B7 = 1100. Значит комбинация B'7 будет равна 12-му элементу вектора S7.
3. В результате получается комбинация из 32-х бит:
B' = B'1B'2B'3B'4B'5B'6B'7B'8
4. Комбинация B' циклически сдвигается влево на 11 разрядов, в результате чего и появляется 32-битное значение функции шифрования.
Таким образом, как и в DES, используется 8 специальных структур преобразования. Однако в российском стандарте они компактнее, и их содержание не оговаривается. Говорится только, что взаимодействующие стороны должны иметь одинаковые S-вектора и должны хранить их в секрете.
Для преодоления недостатков симметричных схем, связанных с трудностью распространения секретных ключей, в начале XX века были разработаны асимметричные схемы, самой известной из которых является RSA, названная по именам ее создателей (Rivest, Shamir, Adleman).
Любая схема с открытым ключом предполагает наличие двух ключей секретного и открытого. Причем должно выполняться условие, что текст, зашифрованный с помощью одного ключа, должен расшифровываться с помощью другого и наоборот. Причем преобразование шифрование/расшифрование может выполнятся в произвольном порядке.
Если обозначить Ek шифрование текста ключом k, а Dk расшифрование текста ключом k, и предположить, что открытым ключом является ko, а закрытым kc, то должны выполняться условия:
T = EkoDkc = DkcEko = EkcDko = DkoEkc
Причем первые два равенства используются, как правило, для выполнения собственно задач шифрования, а следующие два для реализации механизмов цифровой подписи и аутентификации.
Поскольку часть ключевой информации в схемах с открытым ключом является общеизвестной, стойкость этих криптосистем достигается значительным увеличением длины самих ключей. А это в свою очередь снижает быстродействие при шифровании/расшифровании.
Таким образом, достоинства и недостатки асимметричных и симметричных схем являются противоположными.
Вследствие этого схемы с открытым ключом используют, как правило, для защищенного обмена секретными ключами, которые используют симметричные схемы, обрабатывающие основной трафик, а также для аутентификации и создания цифровых подписей.
Ниже, в табл. 9.3, приведены эквивалентные размеры ключей для закрытых и открытых схем.
Таблица 9.3
Эквивалентные размеры ключей
Размер ключа симметричной схемы, бит |
Размер ключа асимметричной схемы, бит |
56 |
384 |
64 |
512 |
80 |
768 |
112 |
1792 |
128 |
2304 |
Классическая процедура обмена двух абонентов секретным ключом для последующего использования симметричной схемы состоит из следующих этапов:
Если обозначить процедуры шифрования и расшифрования, как EC и DC, где C имя соответствующего абонента, то передача сообщения w между сторонами A и B, описанная выше, будет выглядеть следующим образом:
Если же отправителю известен открытый ключ получателя, то он шифрует им свое сообщение, которое получатель может расшифровать только ему известным закрытым ключом. Такая схема широко применяется в системах массового обслуживания, когда клиентам передается открытый ключ организации, оказывающей им услуги. Таким образом, информацию клиентов может расшифровать только она, поскольку только ей известен секретный ключ расшифрования.
В основе вычислений, составляющих асимметричные алгоритмы шифрования, лежат операции с большими (длинной в сотни бит в машинном представлении) простыми числами. Таким образом, их стойкость основана на трудности поиска больших простых чисел и обратных преобразований с ними (например логарифмирования против возведения в степень и т.п.). Поэтому ключи в асимметричных системах или соответствующие коэффициенты преобразований меняются достаточно редко, по сравнению с секретными ключами симметричных схем, которые можно выбирать произвольно для каждого сеанса обмена, что также служит дополнительным преимуществом симметричных схем.
Рассмотрим теперь непосредственно наиболее известные алгоритмы шифрования с открытым ключом.
В основе стойкости алгоритма RSA лежит сложность задачи факторизации (разложения на простые множители) очень больших (сотни бит в двоичном представлении) чисел. Современное состояние алгоритмов факторизации позволяет решать эту задачу для чисел длиной до 430 бит. Исходя из этого, ключ длиной в 512 бит считается надежным для защиты данных сроком до 10 лет, в 1024 бита безусловно надежным.
Для выполнения преобразований над блоком данных выполняются следующие шаги:
1. Выбираются случайным образом два очень больших простых числа:
p и q
2. Вычисляется число n = pq.
3. Вычисляется функция Эйлера от числа n (n).
Функция Эйлера для произвольного натурального числа x равна количеству натуральных чисел, которые меньше него и взаимно просты с ним (т.е. их наибольшие общие делители равны 1). Исходя из теоремы Эйлера, в данном случае функция вычисляется достаточно просто:
(n) = (p1)(q1)
4. Случайным образом выбирается некоторое большое число d > 1, которое является взаимно простым с функцией Эйлера:
НОД(d, (n)) = 1
5. Вычисляется число e, которое удовлетворяет следующим условиям:
1 < e < (n); ed = 1(mod (n))
Числа n, e и d называются, соответственно, модулем, экспонентой шифрования и экспонентой расшифрования.
6. Выбирается размер i блока шифруемых данных. В двоичных разрядах он должен удовлетворять условию: 2i1 < n < 2i. А также для однозначного расшифрования требуется, чтобы значение любого шифруемого блока было строго меньше n.
7. Происходит шифрование сообщения w в шифртекст c по следующему правилу:
c = we mod n
8. Расшифрование происходит по формуле:
w = cd mod n
Открытый ключ в данном случае представляют числа n и e.
Закрытый ключ образуют числа p, q, (n) и d. Очевидно, что знание хотя бы одного из этих значений приводит к вычислению всех остальных.
Среди других известных алгоритмов шифрования с открытым ключом можно назвать алгоритм Эль-Гамаля и алгоритм Шамира, основанные на возведении в степень больших простых чисел, тогда как обратная процедура (логарифмирования) является крайне трудоемкой для злоумышленника.
Алгоритм Диффи-Хеллмана предназначен для выроботки общего секретного ключа абонентами, передающими его составляющие по открытым сетям связи. Поэтому он также относится к схемам передачи информации с открытым ключом.
Алгоритм предполагает наличие у обоих абонентов двух больших простых чисел g и n, значения которых согласуются заранее.
Далее каждый из абонентов генерирует большое число, являющееся секретным ключом: соответственно x и y.
В качестве открытого ключа абоненты обмениваются значениями, соответственно, gx modn и gy modn.
Далее каждый их абонентов возводит полученный открытый ключ в степень своего закрытого ключа:
(gx modn)y = (gy modn)x = gxy modn
В результате у обоих абонентов получается одинаковая секретная комбинация, становящаяся их общим секретным ключом.
Стойкость данной системы основана на том, что процедура логарифмирования модуля простого числа является крайне трудоемкой.
Новыми задачами криптографии в последнее время стали гарантирование целостности, аутентификация и обеспечение невозможности подделки авторства или отказа от него. Для их решения применяют механизмы хеширования и цифровой подписи.
Гарантирование целостности информации, т.е. фактически ее защита от модификации и подмены, реализуется путем хеширования. На вход криптографической хэш-функции поступает вся передаваемая информация, а на выходе получается комбинация фиксированной длины, которая будет претерпевать значительные изменения в случае, если в хешируемых данных хоть что-то изменится. На принимающей стороне повторяется хеширование полученной информации и сравниваются результаты. Если они совпадают, то информация считается не измененной в процессе доставки.
Простейшими видами хэш-функций в данном контексте являются широко применяемые в вычислительной технике контрольные суммы CRC16 и CRC32. За рубежом наиболее применяемыми в настоящее время хэш-функциями являются MD5 и SHA-1. В России применяются собственные алгоритмы: по ГОСТ 28147-89 в режиме имитовставки (см. выше), а также по ГОСТ Р 34.10-94 и пришедшего ему на смену ГОСТ Р 34.10-2001.
Аутентификация информации (невозможность подделки авторства) и невозможность отказа от авторства реализуются с использованием схемы с открытым ключом, либо хеширования с ключами и заключается в создании цифровой подписи. Отметим, что цифровая подпись одновременно обеспечивает и гарантию целостности информации.
Рассмотрим оба способа.
Исходными данными для цифровой подписи в случае применения схемы с открытым ключом является закрытый ключ отправителя и хэш передаваемой информации, речь о котором шла выше.
Отправитель шифрует хэш отправляемой информации своим закрытым ключом и направляет его вместе с информацией получателю (обычно в зашифрованном каким-либо способом виде). Использование в качестве шифруемых данных хэша в данном случае однозначно связывает информацию и цифровую подпись.
Получатель расшифровывает цифровую подпись открытым ключом отправителя. Вычисляет хэш-функцию от полученной информации и сравнивает оба значения. Их совпадение одновременно аутентифицирует и информацию, и отправителя.
Ведь в случае неавторизованного отправителя открытый ключ не подойдет для расшифрования хэш-функции. С другой стороны получатель не сможет подделать подпись, заявляя, что он получил какое-то нужное ему сообщение, поскольку он не знает секретного ключа отправителя. Отправитель также не сможет отказаться от авторства, поскольку успешное расшифрование хэша говорит об использовании именно его закрытого ключа при шифровании.
В случае применения хеширования с ключами решается только задача аутентификации отправителя и информации. Обеспечение невозможности отказа от авторства и присвоения авторства в данном случае не реализуется, поскольку используется общий секретный ключ, известный обоим абонентам.
Исходными данными здесь является сама информация и общий секретный ключ.
Информация хешируется с применением специальной процедуры, в результате чего значение хэша зависит от используемого ключа. На приемной стороне хеширование происходит снова и результаты сравниваются. Их совпадение говорит о том, что и информация не изменилась, и отправитель тот, за которого он себя выдает, поскольку секретный ключ известен только отправителю.
В качестве примеров вычисления цифровой подписи по схеме с открытым ключом можно привести рассмотренный выше алгоритм RSA, а также ГОСТ Р 34.10-94 и ГОСТ Р 34.10-2001.
Примерами выработки цифровой подписи с ключом являются режим выработки имитовставки по ГОСТ 28147-89, а также зарубежный стандарт вычисления аутентифицирующей комбинации Hash Message Authentication Codes (HMAC), использующий произвольные криптографические хэш-функции.
Функция HMAC описана в RFC 2104 и предполагает использование ключа длиной L байт и некоторой произвольной однонаправленной хэш-функции HASH, выходное значение которой также составляет L байт.
Для любой используемой хэш-функции предполагается, что она имеет единственный аргумент TEXT произвольной длины, разбиваемый на блоки по B байт (L < B), и некоторую инициализирующую последовательность INIT также длиной B байт. Таким образом, синтаксис хэш-функции принимает вид:
HASH(INIT, TEXT)
Значение аутентифицирующей комбинации вычисляется исходя из секретного ключа аутентификации AUTH и непосредственно данных DATA произвольной длины по следующему правилу:
HMAC = HASH(KEY1, HASH(KEY2, DATA))
Поясним это выражение.
Рекомендуемая длина ключа AUTH составляет L байт. Допускается и длина в диапазоне от L до B байт. Если же ключ длиннее B байт, то к нему применяется хэш-функция HASH и в качестве ключа уже используется полученная новая комбинация длиной L байт.
Далее ключ AUTH дополняется нулями до длины B байт, таким образом, получается некоторое значение TEMP, которое используется для вычисления инициализирующих комбинаций:
KEY1 = TEMP xor 0x5C(повторено B раз)
KEY2 = TEMP xor 0x36(повторено B раз)
Смысл применения инициирующей комбинации заключается в следующем.
Любая хэш-функция имеет свое внутреннее состояние. В начале работы функции ее состояние всегда одинаково и описано в стандарте на нее (см. ниже описание соответствующих алгоритмов). Чтобы усилить стойкость хеширования, перед поступлением на вход собственно данных, выполняется хеширование некоей инициализирующей последовательности, которое изменяет начальное состояние функции и вносит дополнительный элемент разнообразия. Таким образом, запись
HASH(INIT, TEXT)
в реальности преобразуется следующим образом:
HASH_INIT(INIT),
HASH(TEXT),
где HASH_INIT хэш-функция со стандартным начальным состоянием.
В заключении отметим, что полное обозначение процедуры вычисления аутентифицирующей комбинации складывается из названия алгоритма и используемой хэш-функции. Например, HMAC-MD5 или HMAC-SHA1. При этом предполагается, что длина комбинации определяется хэш-функцией (в данном случае 128 и 160 бит, соответственно). Иногда используются не все разряды результата, как правило, отбрасываются младшие биты. В этом случае в обозначение кода алгоритма аутентификации добавляют количество используемых разрядов. Например, наиболее часто используемыми являются алгоритмы HMAC-MD5-80 и HMAC-SHA1-96.
Функция MD5 (Message Digest 5) является последней модификацией целого семейства алгоритмов MD (MD2, MD4) и описана в RFC 1321.
Она получает на вход данные произвольной, в том числе и нулевой длины, а на выход выдает значение длиной 16 байт. Применительно к предыдущим обозначениям имеем, что L = 16 байт, а B = 64 байта.
Последовательность работы функции следующая.
1. Сообщение разбивается на блоки по 512 бит (64 байта). Длина последнего блока должна составлять 448 бит. Для этого неполный блок дополняется последовательностью, состоящей из одного единичного бита, за которым следуют нулевые биты. Дополнение также происходит и в случае, если последний блок имеет длину строго 448 байт (в этом случае добавляется одна 1 и 511 нулей).
2. Полученный последний блок из 448 бит дополняется еще 64 битами (до 512), в которых записана исходная длина сообщения в битах. Если исходная длина превышает величину 264, то берутся только последние 64 разряда этого числа. Причем в комбинации используется обратная перестановка. Т.е. первым идет младшее 32-разрядное слово, а затем старшее. В самих словах байты также идут в обратном порядке от младших к старшим (это связано с представлением чисел в процессорах Intel, на которые ориентирован алгоритм).
3. Внутреннее состояние функции инициализируется стандартными значениями (здесь младшие байты идут первыми):
A = 0x01234567
B = 0x89ABCDEF
С = 0xFEDCBA98
D = 0x76543210
Для дальнейших вычислений также используются четыре функции, выполняющие побитные операции:
F(X,Y,Z) = XY XZ
G(X,Y,Z) = XZ ZY
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X Z)
Кроме того, применяется специальная таблица T из 64-х элементов (от 1 до 64) по 32 бита, значения которых равны
T(i) = [4294967296*abs(sin(i))],
где [] означает целую часть числа, а i задается в радианах.
4. Исходное состояние функции меняется путем последовательной обработки блоков данных по 512 бит, которая выполняется на основе следующих соотношений.
Обозначим:
X(j) j-е слово из 32-х бит в блоке (т.е. от 0 до 15). Причем слово формируется с учетом порядка (сначала идут младшие байты);
N <<< s циклический сдвиг слова N на s бит влево;
сложение по модулю 232, т.е. при переполнении слова в 32 бита, соответствующий разряд просто игнорируется.
Текущее состояние функции сохраняется в буфере:
AA = A; BB = B; CC = C; DD = D.
После чего проводится пересчет состояний на базе 4-х последовательно выполняемых операций:
A = B ((A F(B,C,D) X(i1) T(j1)) <<< s1)
D = A ((D F(A,B,C) X(i2) T(j2)) <<< s2)
C = D ((C F(D,A,B) X(i3) T(j3)) <<< s3)
B = C ((B F(C,D,A) X(i4) T(j4)) <<< s4)
Каждая из приведенных строк выполняется 16 раз в соответствии с индексами, представленными в табл. 9.4.
Таблица 9.4
№ |
i1 |
j1 |
s1 |
i2 |
j2 |
s2 |
i3 |
j3 |
s3 |
i4 |
j4 |
s4 |
1 |
0 |
1 |
7 |
1 |
2 |
12 |
2 |
3 |
17 |
3 |
4 |
22 |
2 |
4 |
5 |
7 |
5 |
6 |
12 |
6 |
7 |
17 |
7 |
8 |
22 |
3 |
8 |
9 |
7 |
9 |
10 |
12 |
10 |
11 |
17 |
11 |
12 |
22 |
4 |
12 |
13 |
7 |
13 |
14 |
12 |
14 |
15 |
17 |
15 |
16 |
22 |
5 |
1 |
17 |
5 |
6 |
18 |
9 |
11 |
19 |
14 |
0 |
20 |
20 |
6 |
5 |
21 |
5 |
10 |
22 |
9 |
15 |
23 |
14 |
4 |
24 |
20 |
7 |
9 |
25 |
5 |
14 |
26 |
9 |
3 |
27 |
14 |
8 |
28 |
20 |
8 |
13 |
19 |
5 |
2 |
30 |
9 |
7 |
31 |
14 |
12 |
32 |
20 |
9 |
5 |
33 |
4 |
8 |
34 |
11 |
11 |
35 |
16 |
14 |
36 |
23 |
10 |
1 |
37 |
4 |
4 |
38 |
11 |
7 |
39 |
16 |
10 |
40 |
23 |
11 |
13 |
41 |
4 |
0 |
42 |
11 |
3 |
43 |
16 |
6 |
44 |
23 |
12 |
9 |
45 |
4 |
12 |
46 |
11 |
15 |
47 |
16 |
2 |
48 |
23 |
13 |
0 |
49 |
6 |
7 |
50 |
10 |
14 |
51 |
15 |
5 |
52 |
21 |
14 |
12 |
53 |
6 |
3 |
54 |
10 |
10 |
55 |
15 |
1 |
56 |
21 |
15 |
8 |
57 |
6 |
15 |
58 |
10 |
6 |
59 |
15 |
13 |
60 |
21 |
16 |
4 |
61 |
6 |
11 |
52 |
10 |
2 |
53 |
15 |
9 |
64 |
21 |
После преобразования вычисляется новое состояние хэш-функции:
A = A AA; B = B BB; C = C CC; D = D DD.
5. Когда обработка последнего блока завершится, результатом хеширования будет состояние функции. Причем в порядке возрастания значимости байты следуют так: A, B, C, D.
Функция SHA-1 (Security Hash Algorithm) является стандартом для выработки цифровой подписи в США и ряде других стран.
Она получает на вход данные произвольной, в том числе и нулевой длины, а на выход выдает значение длиной 20 байт. Применительно к предыдущим обозначениям имеем, что L = 20 байт, а B = 64 байта.
Последовательность работы функции следующая.
Шаги 1 и 2 работы функции идентичны функции MD5.
3. Внутреннее состояние функции инициализируется стандартными значениями (здесь младшие байты идут первыми):
H0 = 0x01234567 H1 = 0x89ABCDEF
H2 = 0xFEDCBA98 H3 = 0x76543210
H4 = 0xF0E1D2C3
Для дальнейших вычислений также используются три функции, выполняющие побитные операции:
F1(X,Y,Z) = XY XZ
F2(X,Y,Z) = X xor Y xor Z
F3(X,Y,Z) = XY XZ YZ
Кроме того, применяются четыре константы:
K1 = 0x5A827999; K2 = 0x6ED9EBA1;
K3 = 0x8F1BBCDC; K4 = 0xCA62C1D6.
4. Исходное состояние функции меняется путем последовательной обработки блоков данных по 512 бит, которая выполняется на основе следующих соотношений (пп. 4-6).
Обозначим:
Wj j-е слово из 32-х бит в блоке (т.е. от 0 до 15). Причем слово формируется с учетом порядка (сначала идут младшие байты);
N <<< s циклический сдвиг слова N на s бит влево;
сложение по модулю 232, т.е. при переполнении слова в 32 бита, соответствующий разряд просто игнорируется.
Текущее состояние функции переписывается для преобразований:
A = H0; B = H1; C = H2; D = H3; E = H4.
Вычисляются дополнительные 64 комбинации 32-х разрядных комбинаций:
Wi = (Wi3 xor Wi8 xor Wi14 xor Wi16) <<< 1; i = 16 … 79.
5. Для всех комбинаций Wi (i = 0 … 79) производятся последовательные вычисления:
T = (A <<< 5) F(B,C,D) E Wi K;
E = D; D = C; C = B <<< 30; B = A; A = T.
Причем для соответствующих номеров используются различные функции и константы, они указаны в табл. 9.5.
Таблица 9.5
Диапазон i |
Функция |
Константа |
00 … 19 |
F1 |
K1 |
20 … 39 |
F2 |
K2 |
40 … 59 |
F3 |
K3 |
60 … 79 |
F2 |
K4 |
6. После преобразования вычисляется новое состояние хэш-функции:
H0 = A H0; H1 = B H1; H2 = C H2;
H3 = D H3; H4 = E H4.
7. Когда обработка последнего блока завершится, результатом хеширования будет состояние функции. Причем в порядке возрастания значимости байты следуют так: H0, H1, H2, H3, H4.
Следует отметить, что схема выработки цифровой подписи по ГОСТ Р 34.10-94 во многом напоминает подпись по алгоритму RSA.
Для ее вычисления используются заранее известные (общедоступные) два больших простых числа p и q и дополнительное целое число a. Они должны удовлетворять следующим условиям:
р : 2509 < р < 2512 или 21020 < р < 21024;
q: простой делитель числа (р-1), который удовлетворяет условию:
2254 < q < 2256;
а: 1 < а < р-1, аq modp = 1.
Секретный ключ Х случайно выбирается из диапазона [1; q] и должен хранится в тайне.
Открытый ключ вычисляется по формуле: y = aX modp.
Процесс генерации подписи происходит по следующему алгоритму:
1. Вычисляется хэш-функция подписываемого сообщения m: h = H(m) (по ГОСТ Р 34.11-94).
2. Из диапазона [1; q] случайным образом выбирается значение К.
3. Вычисляется выражение:
r = (aК modp), r1 = r modq,
если r1 = 0, следует вернуться к п.2 и выработать другое значение К.
4. Вычисляется выражение:
S = (Х*r1 + К*h(m)) modp, S1 = S modq,
если S1 = 0, то вернуться к п.2.
5. Полученные значения r1 и S1 являются подписью сообщения m и передаются вместе с ним по каналам связи.
Проверка ЭЦП происходит по следующей схеме:
1. Проверяется выполнение условий 0<r<q, 0<S<q, и если хотя бы одно из условий нарушено, подпись отвергается.
2. Вычисляется хэш-функция проверяемого сообщения m: h = H(m) (по ГОСТ Р 34.11-94).
3. Вычисляются значения:
V = h(m)q-2 modp;
Z1 = S1 * V modp; Z2 = (q-Z1)*V modp;
U = ((aZ1 * yZ2) modp)) modq
4. Проверяется равенство: U = r1. Если оно выполняется, то подпись принимается.
Государственный стандарт РФ "Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи" (ГОСТ Р 34.10-2001) содержит описание процессов формирования и проверки ЭЦП, реализуемой с использованием операций группы точек эллиптической кривой, определенной над конечным простым полем.
Этот ГОСТ разработан вместо ГОСТ Р 34.10-94 и обеспечивает повышенную стойкость ЭЦП к несанкционированным изменениям. Стойкость ЭЦП основывается на сложности вычисления дискретного логарифма в группе точек эллиптической кривой, а также на стойкости используемой хэш-функции по ГОСТ Р 34.11-2001.
Стандарт рекомендуется к использованию в новых системах обработки информации, а также при модернизации действующих систем.
Последние два десятилетия характерны тем, что бумажные технологии обработки информации постепенно заменяются ее электронными аналогами. Однако защитных атрибутов, присущих бумажным документам: подписей, печатей, штампов, водяных знаков, специальной фактуры бумажной поверхности и т.д., электронные аналоги не имеют. Поэтому возникает задача защиты электронных документов.
К настоящему времени такой механизм уже разработан и получил название электронной цифровой подписи (ЭЦП).
Чаще всего ЭЦП используется для аутентификации текстов, передаваемых по телекоммуникационным каналам. В общем случае ЭЦП аналогична обычной рукописной подписи и обладает ее основными свойствами: удостоверяет, что подписанный тест исходит именно от лица, поставившего подпись, и не дает самому этому лицу возможности отказаться от обязательств, связанных с подписанным текстом. Кроме этого, ЭЦП должна зависеть от содержания подписываемого документа и времени его подписания. Она должна однозначно подтверждать, что только подписывающее лицо, и только оно, подписало электронный документ.
ЭЦП представляет собой небольшое количество дополнительной информации, передаваемой вместе с подписываемым текстом. Естественно, ЭЦП формируется с применением описанных выше исключительно стойких к взлому (не менее 50 лет на решение методом тотального перебора с использованием всей самой современной вычислительной техники) криптографических алгоритмов. При этом для формирования ЭЦП используется секретный ключ, а при ее проверке открытый ключ.
В настоящее время существует несколько методов построения ЭЦП:
1. Шифрование электронного документа (ЭД) на основе симметричных алгоритмов. В этой схеме кроме отправителя и получателя должен быть третий участник арбитр, пользующийся доверием обеих сторон. Авторизацией документа в данной схеме является зашифрование документа секретным ключом и передача его арбитру.
2. Использование асимметричных алгоритмов шифрования. Фактом подписания документа является его зашифрование на секретном ключе отправителя.
3. Обработка электронного документа с использованием хэшфункции и асимметричного алгоритма выработки подписи на секретном ключе отправителя.
4. Групповая подпись.
5. Неоспариваемая подпись.
6. Доверенная подпись.
Варианты 4-6 фактически повторяют предыдущие, их существование обусловлено разнообразием задач, решаемых с помощью технологий передачи и обработки ЭД. В частности, их можно использовать в тех случаях, когда не один, а несколько руководителей имеют право подписи тех или иных видов документов, или право подписи передано некоторому лицу.
Для подтверждения действительности открытого (несекретного, общего) ключа при использовании асимметричных схем применяют цифровые сертификаты. Так, цифровой сертификат в стандартном формате Х.509 должен включать следующие элементы:
1. Номер версии.
2. Серийный номер сертификата.
3. Эмитент информации об алгоритме.
4. Эмитент сертификата.
5. Дата начала и окончания действия сертификата.
6. Информацию об алгоритме общего ключа субъекта сертификата.
7. Подпись эмитирующей организации.
Несмотря на стойкость алгоритмов выработки и проверки ЭЦП с технической точки зрения в юридическом аспекте они нуждаются в нормативно-правовом закреплении. Для придания электронным документам, подписанным ЭЦП, той же юридической силы, что и бумажным, во многих странах принимаются специальные законы, закрепляющие как алгоритмы используемых криптографических преобразований, так и организационные и административные процедуры. В Российской Федерации таким нормативно-правовым актом стал Федеральный закон № 1-ФЗ от 10 января 2002 г. "Об электронной цифровой подписи".
Данный Закон обеспечивает правовые условия использования ЭЦП. В нем введены и описаны определения следующих терминов:
электронный документ (ЭД);
электронно-цифровая подпись (ЭЦП);
владелец сертификата ключа подписи;
средства ЭЦП;
сертификат ЭЦП;
закрытый ключ ЭЦП;
открытый ключ ЭЦП;
сертификат ключа подписи (СКП);
подтверждение подлинности ЭЦП в ЭД;
пользователь сертификата ключа подписи;
информационная система общего пользователя;
корпоративная ИС.
Здесь также определены условия, при которых ЭЦП в ЭД равнозначна собственноручной подписи в документе на бумажном носителе:
1. Сертификат ключа подписи, относящийся к этой ЭЦП, не утратил силу на момент проверки или на момент подписания ЭД (если дату подписания документа можно установить).
2. Подтверждена подлинность ЭЦП в ЭД.
3. ЭЦП используется в соответствии со сведениями, указанными в сертификате ключа подписи.
Для создания ключей ЭЦП должны использоваться только сертифицированные средства, прошедшие сертификацию в соответствии с законодательством РФ.
В отличие от ранее рассмотренного сертификата X.509, по Закону сертификат ключа ЭЦП должен содержать следующие сведения:
1. Уникальный регистрационный номер сертификата ключи подписи (СКП), даты начала и окончания срока действия СКП, находящегося в реестре удостоверяющего центра (УЦ).
2. Фамилия, имя и отчество владельца СКП или псевдоним владельца.
3. Открытый ключ ЭЦП.
4. Наименование средств ЭЦП, с которыми используется данный ключ.
5. Наименование и местонахождение удостоверяющего центра, выдавшего СКП.
6. Сведения об отношениях, при осуществлении которых ЭД с ЭЦП будет иметь юридическое значение.
Кроме того, в СКП могут указываться должность и местонахождение организации, квалификация владельца, а по заявлению в письменной форме и иные сведения, подтверждаемые соответствующими документами.
Сертификат ключа ЭЦП может принадлежать и выдаваться только физическому лицу.
СКП может быть выдан в форме документа на бумажном носителе (на бланке удостоверяющего центра с подписями и печатью). Если СКП выдается в электронной форме, то и подписывается он ЭЦП уполномоченного лица удостоверяющего центра.
По истечении срока хранения СКП он исключается из реестра СКП и переводится в режим архивного хранения со сроком хранения не менее 5 лет.
В качестве удостоверяющего центра (УЦ), выдающего СКП, может выступать только юридическое лицо, обладающее необходимыми материальными и финансовыми возможностями. Эти требования определяются Правительством РФ. Деятельность УЦ подлежит лицензированию в соответствии с законодательством РФ.
Удостоверяющий центр выполняет следующие функции:
1. Изготавливает СКП.
2. Создает ключи ЭЦП с гарантией сохранения в тайне закрытого ключа ЭЦП.
3. Приостанавливает и возобновляет действие СКП, а также аннулирует их.
4. Ведет реестр СКП, обеспечивает его актуальность и возможность свободного доступа к нему пользователей ИС.
5. Проверяет уникальность открытых ключей ЭЦП в реестре СКП и архиве удостоверяющего центра.
6. Выдает СКП в форме документов на бумажных носителях и (или) в форме ЭД с информацией об их действии.
7. Осуществляет по обращениям пользователей СКП подтверждение подлинности ЭЦП в ЭД в отношении выданных им СКП.
8. Предоставляет пользователям ИС иные, связанные с ЭЦП, услуги.
Изготовление СКП осуществляется на основе заявления пользователя ИС, в котором должны быть указаны необходимые сведения, используемые для идентификации владельца СКП и передачи ему сообщений. Заявление подписывается владельцем СКП. Все сведения, содержащиеся в заявлении, должны быть подтверждены соответствующими документами.
После получения заявления, УЦ изготавливает 2 экземпляра СКП, оформляет их на бумажных носителях с собственноручными подписями владельца СКП и уполномоченного лица УЦ, которые потом скрепляются печатью УЦ. Один экземпляр СКП выдается владельцу, а второй остается в УЦ. Эти же документы в виде ЭД оформляются и выдаются безвозмездно.
Уполномоченное лицо УЦ должно иметь соответствующие полномочия, оформленные федеральным органом исполнительной власти. Этот орган ведет единый государственный реестр СКП, которыми УЦ заверяют выдаваемые ими СКП.
Обязательства УЦ:
1. Вносить СКП в реестр.
2. Обеспечивать выдачу СКП обратившихся к ним пользователей ИС.
3. Приостанавливать действие СКП по обращению его владельца.
4. Уведомлять владельца СКП о фактах, которые стали известны УЦ и которые могут сказаться на возможности дальнейшего использования СКП.
5. Иные обязательства, установленные нормативными правовыми актами или соглашением сторон.
Обязательства владельца СКП:
1. Не использовать для ЭЦП открытые или закрытые ключи, если они используются или использовались ранее.
2. Хранить в тайне закрытый ключ ЭЦП.
3. Требовать приостановления действия СКП, если есть основания утверждать, что тайна закрытого ключа ЭЦП нарушена.
СКП аннулируется в следующих случаях:
1. По истечении срока его действия.
2. При утрате юридической силы сертификата ключа подписи.
3. По заявлению владельца СКП (в письменной форме).
4. В случае, если УЦ стало достоверно известно о прекращении действия документа, на основании которого был выдан СКП.
5. В иных, установленных нормативными актами случаях.
Деятельность УЦ, выдавшего СКП, может быть прекращена в порядке, установленном гражданским законодательством, а его функции, по согласованию с владельцами СКП, могут быть переданы другому УЦ, в противном случае, СКП аннулируются и передаются на хранение федеральному органу исполнительной власти.
Как отечественные, так и зарубежные стандарты описывают лишь процедуры выработки и проверки ЭЦП и хэш-функции. Вне их действия остаются такие вопросы как: распространение и генерация ключей; защита от НСД к ключевой информации и др. Поэтому зачастую продукты, реализующие один и тот же стандарт, несовместимы между собой. Следует также отметить, что стандарты описывают алгоритм математическим языком, в то время как пользователи сталкиваются уже с его реализацией. Однако при реализации алгоритма могут быть допущены различные ошибки, которые сводят на нет все достоинства алгоритма. Кроме того, эффективное применение систем ЭЦП зависит от их правильной эксплуатации. Например, хранение секретных ключей для генерации ЭЦП на доступном всем жестком диске позволяет злоумышленнику получить к ним доступ и в дальнейшем подделывать документы, подписанные на этих ключах.
Производители различных систем ЭЦП в России особое внимание уделяют математическим аспектам реализованных алгоритмов (криптостойкость, сколько лет уйдет на подделку и др.), но практиков эти вопросы волнуют мало. Тем более, что проверить правильность приводимых в документации выкладок способен только математик-криптограф. Пользователей, в первую очередь, интересуют следующие параметры системы ЭЦП:
1. Скорость.
2. Длина подписи.
3. Интеграция ЭЦП в принятую технологию обработки.
4. Механизм защиты от НСД.
5. Юридическая поддержка системы ЭЦП.
Скорость является одним из основных параметров, на который следует обращать внимание при выборе системы ЭЦП. Это особенно актуально в системах связи, в которых осуществляется очень интенсивный обмен данными и передаваемая информация должна защищаться от подделки.
Этот параметр слагается из следующих составляющих:
скорость генерации подписи;
скорость проверки подписи.
Параметр "скорость" существенно зависит от скорости выработки хэшфункции и типа ПК, на котором осуществляется генерация или проверка ЭЦП.
Длина подписи также является важным параметром, особенно для систем, в которых передается большое число сообщений малой длины. В этом случае использование российского стандарта для подписи всех данных неэффективно.
Вопросы интеграции приобретаемой системы ЭЦП в существующую технологию обработки информации также достаточно актуальны. Например, если в качестве средства отправки электронной почты используется Microsoft Outlook, то необходимо, чтобы система ЭЦП могла быть встроена в почтовую программу. Такую возможность предоставляют как российские, так и зарубежные производители ЭЦП. Если приобретаемая система ЭЦП не поддерживает используемое у заказчика ПО, то поставщик должен поставлять интерфейс прикладного программирования (API) для встраивания системы ЭЦП в систему заказчика.
Механизмы защиты от НСД должны предусматривать действия, выполняемые в случае компрометации ключей одного из пользователей. Кроме того, они должны позволять контролировать целостность как системы ЭЦП в целом, так и ее компонентов.
Юридическая поддержка при приобретении системы ЭЦП важна при изучении проекта договора об обмене электронными документами. Если та или иная компания предлагает обслуживание с применением системы ЭЦП, то в договоре должно быть предусмотрено решение следующих вопросов:
наличие процедуры урегулирования конфликтных ситуаций;
описание состава комиссии, расследующей возникающие конфликты;
ответственность сторон (в том числе и фирмы-разработчика).
Окончательный выбор системы ЭЦП должен осуществляться с анализом следующих дополнительных ее возможностей:
1. Постановка нескольких подписей под одним из документов и их выборочная проверка.
2. Хранение ЭЦП не только в подписываемом документе, но и в отдельном файле.
3. Возможность использования командной строки для работы с системой ЭЦП.
4. Возможность подписи и проверка группы файлов.
5. Постановка и проверка подписи под заданными фрагментами (полями) документа.
6. Выработка и проверка групповой подписи.
7. Совместное использование функций шифрования и ЭЦП.
8. Постановка подписи и ее проверка для участка ОП.
9. Архивация использованных ключей и др.
Использование ЭЦП позволяет значительно повысить надежность и сохранность передаваемых ЭД. Однако и при использовании ЭЦП используются различные способы атак.
Существует следующая классификация атак на схемы ЭЦП:
1. Атака с известным ключом.
2. Атака с известными сообщениями противник, кроме открытого ключа имеет и набор подписанных сообщений.
3. Простая атака с выбором подписанных сообщений противник имеет возможность выбирать сообщения, при этом открытый ключ он получает после выбора сообщения.
4. Направленная атака с выбором сообщения.
5. Адаптивная атака с выбором сообщения.
Каждая атака преследует определенную цель, которые можно разделить на несколько классов:
1. Полное раскрытие. Противник находит секретный ключ пользователя ЭЦП.
2. Универсальная подделка. Противник находит алгоритм, функционально аналогичный алгоритму генерации ЭЦП.
3. Селективная подделка. Подделка подписи под выбранным сообщением.
4. Экзистенциальная подделка. Подделка подписи хотя бы для одного случайно выбранного сообщения.
На практике применение ЭЦП позволяет выявить или предотвратить следующие действия нарушителя:
1. Отказ одного из авторов документа от своих действий.
2. Модификация принятого электронного документа.
3. Подделка документа.
4. Навязывание сообщений в процессе передачи противник перехватывает обмен сообщениями и модифицирует их.
5. Имитация передачи сообщения.
Также существуют нарушения, от которых невозможно оградить систему обмена сообщениями это повтор передачи сообщения и фальсификация времени отправления общения. Противодействие данным нарушениям может основываться на использовании временных вставок и строгом учете входящих сообщений.
Следует обратить внимание на то, что некоторые разработчики, несмотря на наличие в РФ государственных стандартов, пытаются разработать свои собственные алгоритмы, которые из-за низкой квалификации авторов не обладают свойствами алгоритмов, разработанных математиками-криптографами. Чаще всего в подобных алгоритмах периодически повторяются одни и те же значения случайных чисел, возможна генерация одинаковых хэш-функций и др. С определенной долей скептицизма следует относится к публикациям о модернизации существующих стандартов.
Много критики высказывается в настоящее время и по отношению к самому российскому закону об ЭЦП, поправки в который давно назрели. Наиболее спорными вопросами в регулировании сферы ЭЦП являются:
1. Неудобная процедура аннулирования сертификатов подписей при ликвидации выдавшего их удостоверяющего центра.
2. Неясности в синхронизации деятельности различных УЦ, поскольку возможны варианты, когда разные УЦ выдадут сертификаты с одинаковыми ключами подписей.
3. Неудобство в ограничении сферы действия того или иного сертификата, порождающего необходимость приобретения нового сертификата, например, при смене места работы.
4. Ограничение действенности самой ЭЦП датой действия сертификата на нее, тогда как было бы целесообразнее разработать механизм фиксации даты подписи документа, и именно ее привязывать к срокам действия сертификата при проверке действенности ЭЦП.
Виртуальные частные сети (Virtual Private Network VPN) получили широкое распространение в конце 90-х годов. В настоящее время они применяются главным образом в качестве альтернативы сетям удаленного доступа и международным сетям и являются одним из ярких применений криптографических средств защиты для обеспечения безопасности обмена информацией по общедоступным сетям передачи данных.
Основная причина появления и распространения VPN заключается в увеличении спроса на защищенный обмен информацией между филиалами компаний и фирм, расположенных по всему миру, с одной стороны, и в необходимости снижения затрат на пользование услугами связи с другой. VPN обладают относительно низкой стоимостью: компаниям дешевле воспользоваться услугами провайдеров Internet по созданию и независимому сопровождению распределенных корпоративных сетей, чем тратить деньги на построение собственных глобальных сетей.
Проблема защиты данных, передаваемых по глобальным IP-сетям, возникла давно. Первые средства защиты появились практически сразу после того, как уязвимость IP-сетей дала о себе знать на практике. Характерными примерами разработок в этой области могут служить PGP/Web-of-Trust для шифрования сообщений электронной почты, Secure Sockets Layer (SSL) для защиты Web-трафика, Secure SHell (SSH) для защиты сеансов telnet и процедур передачи файлов.
Общим недостатком подобных широко распространенных решений является их "привязанность" к определенному типу приложений, а значит, неспособность удовлетворить тем разнообразным требованиям к системам сетевой защиты, которые предъявляют крупные корпорации или Internet-провайдеры. Самый радикальный способ преодолеть указанное ограничение сводится к тому, чтобы строить систему защиты не для отдельных классов приложений, а для сети в целом. Применительно к IP-сетям это означает, что системы защиты должны действовать на сетевом и канальном уровнях модели OSI. Воплощением этой концепции и стали виртуальные частные сети.
Виртуальная частная сеть соединение, установленное между двумя или несколькими точками доступа в общедоступную часть Internet и защищенное от "прослушивания" и модификации с помощью криптографических средств шифрования и аутентификации.
Рис. 1. Структура виртуальной частной сети
Главная черта технологии VPN использование сети Internet в качестве магистрали для передачи корпоративного IP-трафика. Сети VPN решают задачи подключения корпоративного пользователя к удаленной сети и соединения нескольких ЛВС. Структура VPN включает в себя (рис. 1):
каналы глобальной сети, служащие инфраструктурой для передачи информации;
защищенные протоколы, описывающие процедуры шифрования информации, алгоритмы аутентификации и обмена ключами;
шлюзы VPN точки доступа в сеть, являющиеся границей между корпоративной и глобальной сетью и непосредственно реализующие обработку трафика.
Для объединения удаленных ЛВС в виртуальную сеть используются так называемые виртуальные выделенные каналы. Для организации подобных соединений применяется механизм туннелирования. Инициатор туннеля инкапсулирует пакеты локальной сети (в том числе пакеты немаршрутизируемых протоколов) в IP-пакеты, содержащие в заголовке адреса инициатора и терминатора туннеля. Терминатор туннеля извлекает исходный пакет. При этом решение проблемы конфиденциальности и целостности данных, которое не обеспечивается простым туннелированием, достигается применением шифрования.
Туннелирование метод передачи данных, используемый в основном в VPN, который заключается в том, что IP-пакеты, передаваемые в общедоступную сеть, полностью шифруются и заключаются как данные в обычные IP-пакеты, которые соответствующим образом обрабатываются и расшифровываются получателем.
Возможность построения VPN на оборудовании и ПО различных производителей достигается внедрением некоторого стандартного механизма, реализующего, помимо совместимости с глобальной сетью, аутентификацию пользователей, шифрование данных, распространение и генерацию ключей. Наиболее распространенными являются следующие протоколы:
С технической точки зрения в одной сети можно одновременно задействовать оба протокола, правда, скорее для обеспечения избыточности средств информационной защиты. Выбор PPTP оправдан в тех случаях, когда первостепенной является задача транспортировки трафика, отличного от IP. Если же главным требованием остается высокая гибкость и масштабируемость, предпочтение стоит отдать архитектуре IPSec.
Существуют различные варианты построения VPN. При выборе решения необходимо учитывать факторы производительности уже имеющихся средств, которые могут быть задействованы при построении VPN (например, маршрутизатора или брандмауэра) и объем денежных средств, выделенных на решение задачи. Опыт показывает, что для построения VPN лучше использовать специализированное оборудование, однако при ограниченных средствах можно обратить внимание на чисто программное решение.
Виртуальные частные сети можно строить на базе:
сетевой операционной системы;
маршрутизаторов;
брандмауэров;
специализированного программного обеспечения;
специализированного оборудования.
Рассмотрим коротко перечисленные способы.
Брандмауэры большинства производителей поддерживают туннелирование и шифрование данных. В основе лежит простое соображение: поскольку трафик проходит через брандмауэр, то почему бы его заодно не зашифровать. К программному обеспечению собственно брандмауэра добавляется модуль шифрования. Недостатком данного метода можно назвать зависимость производительности от аппаратного обеспечения, на котором работает брандмауэр. При использовании брандмауэров на базе ПК надо помнить, что подобное решение подходит только для небольших сетей с небольшим объемом передаваемой информации.
Аналогичный принцип использует другой способ построения VPN, предполагающий применение для создания защищенных каналов маршрутизаторов. Поскольку вся информация, исходящая из локальной сети, проходит через маршрутизатор, то целесообразно возложить на него и задачи шифрования.
Наиболее экономичным является подход к построению VPN, основанный на чисто программных решениях. При его реализации используется специализированное ПО, работающее на выделенном компьютере и в большинстве случаев выполняющее функции proxy-сервера. Компьютер с таким программным обеспечением может быть расположен за брандмауэром.
Решения на базе сетевой ОС рассмотрим на примере операционных систем Microsoft.
Для создания VPN в ОС Windows NT 4.0 Server Microsoft использует протокол PPTP, интегрированный в службу удаленного доступа RAS. В работе VPN на базе Windows NT используется база пользователей, хранящаяся в контроллере домена (PDC). При подключении к PPTP-серверу пользователь авторизуется по протоколам PAP, CHAP или MS-CHAP. Передаваемые пакеты инкапсулируются в пакеты GRE/PPTP. Для шифрования используется нестандартный протокол Microsoft Point-to-Point Encryption c 40- или 128-битным ключом, получаемым в момент установки соединения.
В новейшей ОС Windows 2000 Server Microsoft реализовала семейство протоколов IPSec, также использующее для авторизации сведения из базы данных пользователей Active Directory и структуры политики безопасности. Данное решение очень привлекательно для организаций, использующих Windows в качестве корпоративной ОС. Необходимо отметить, что стоимость такого решения значительно ниже стоимости прочих решений.
Вариант построения VPN на специальных устройствах, являющийся наиболее дорогостоящим, может быть использован в сетях, требующих высокой производительности.
7.2.1. Общая характеристика
Пользователь воспринимает сеть как надежно защищенную среду только в том случае, если он уверен, что его "собеседник" именно тот, за кого он себя выдает (аутентификация сторон), что передаваемые пакеты не просматриваются посторонними лицами (секретность связи) и что получаемые данные не подверглись изменению в процессе передачи (целостность данных). Все перечисленные задачи призван решать протокол IPSec.
Internet Protocol Security (IPSec) это комплект протоколов, касающихся вопросов шифрования, аутентификации и обеспечения защиты при транспортировке IP-пакетов.
Первоначально IPSec включал в себя 3 алгоритмо-независимые базовые спецификации, опубликованные в качестве RFC-документов: "Архитектура безопасности IP", "Аутентифицирующий заголовок (AH)", "Инкапсуляция зашифрованных данных (ESP)" (RFC 1825, 1826 и 1827). В ноябре 1998 года были предложены новые версии этих спецификаций, имеющие в настоящее время статус предварительных стандартов, это RFC2401 - RFC2412. В целом в IPSec входят 20 предложений по стандартам и 18 RFC, в том числе несколько алгоритмо-зависимых спецификаций, описывающих применение конкретных алгоритмов шифрования и аутентификации.
Таким образом, IPSec предоставляет возможность использования трех инструментальных средств защиты:
протокола аутентификации (Authentication Header, AH), который "привязывает" данные в составе пакета к своеобразной подписи, позволяющей удостовериться как в подлинности отправителя, так и в целостности принятых от него данных;
протокола Encapsulated Security Payload (ESP), отвечающего за шифрование содержимого отдельных пакетов (и даже некоторых IP-адресов, передаваемых в их составе);
протокола обмена ключами (Internet Key Exchange, IKE), который предназначен для согласования используемых алгоритмов аутентификации и шифрования, ключей и продолжительности их действия, а также для защищенного обмена ключами.
Программное обеспечение перечисленных протоколов, как уже было сказано, может функционировать на серверах или компьютерах конечных пользователей, но чаще его устанавливают на маршрутизаторах, брандмауэрах или специализированных устройствах, которые в архитектуре IPSec именуются шлюзами безопасности (security gateway).
Различают два режима использования протоколов IPSec транспортный и туннельный.
Транспортный режим используется для шифрования поля данных IP-пакета, содержащего протоколы транспортного уровня (TCP, UDP, ICMP), которое, в свою очередь, содержит информацию прикладных служб. Примером применения транспортного режима является передача электронной почты. Все промежуточные узлы на маршруте пакета от отправителя к получателю используют только открытую информацию сетевого уровня. Недостатком транспортного режима является отсутствие механизмов скрытия конкретных отправителя и получателя пакета, а также возможность проведения анализа трафика.
Туннельный режим предполагает шифрование всего IP-пакета и включение его в качестве данных в другой IP-пакет, который и направляется во внешнюю сеть. Этот режим применяется, как правило, при обмене информацией между удаленными сегментами распределенной корпоративной сети, когда необходимо полностью скрыть и информацию, и адресную структуру сегментов. Адресные поля "внешнего" пакета при этом заполняются шлюзом VPN организации (брандмауэром, маршрутизатором и т.д.) и в качестве получателя указывают на шлюз VPN той подсети, в которую направляется пакет. При получении пакета из внешней сети шлюз VPN расшифровывает изначальный IP-пакет и направляет его получателю.
Рассмотрим последовательно функции всех трех составляющих комплекта протоколов IPSec.
7.2.2. Протокол аутентификации AH
Протокол аутентификации AH (RFC 2402) предназначен для предотвращения реализации угроз нарушения целостности, т.е. модификации и подмены информации в IP-пакете, а также подмены IP-адреса отправителя. При этом скрытия внутренней структуры корпоративной сети не происходит, поскольку в заголовке пакета указываются реальные адреса и другие данные.
Реализация протокола достаточно проста и заключается в добавлении специального заголовка между стандартным заголовком IP-пакета и полем данных, т.е. заголовком пакета более высокого уровня (например, TCP).
Формат заголовка AH следующий:
В качестве алгоритма вычисления цифровой подписи может использоваться любая симметричная схема, основанная на применении однонаправленной хэш-функции от защищаемых данных и секретного ключа. Принимающая сторона повторно выполняет это преобразование для выявления несанкционированных изменений. При вычислении ICV на вход поступает весь пакет, но его изменяющиеся поля, заполнитель и само поле аутентификационных данных принимаются равными нулю. В качестве стандартного алгоритма вычисления аутентификационных данных выбран Hash Message Authentication Codes (HMAC, RFC 2104) с ключами и функциями хеширования SHA-1 (RFC 2404) и MD5 (RFC 1321, 2403), хотя производители аппаратного и программного обеспечения могут использовать и другие алгоритмы.
7.2.3. Протокол шифрования ESP
Протокол шифрования ESP (RFC 2406) предназначен не только для предотвращения угроз целостности, но и конфиденциальности за счет применения шифрования.
Как и в случае с AH, реализация протокола заключается в добавлении специального заголовка после стандартного заголовка IP-пакета с одновременным шифрованием поля данных этого пакета.
Формат заголовка ESP следующий:
Заметим, что зашифровываются только данные, описанные пунктами 3-6, собственно заголовком протокола являются поля 1 и 2, а поля 4-6 называют ESP-Trailer.
В качестве алгоритма шифрования допускается применение любого симметричного алгоритма (RFC 2451). Обязательным к реализации производителем является лишь DES-CBC (Cipher Block Chaining, RFC 2405) с 56-разрядным ключом. В настоящее время в связи с недостаточной его стойкостью стандартом де-факто становится Triple-DES с 168-разрядным ключом и более быстрый AES с ключом 128 бит.
Предусмотрена возможность использования протокола ESP только для выполнения аутентификации, без шифрования данных. Функционально, таким образом, он становится практически эквивалентным протоколу AH, это сделано для повышения общей гибкости системы IPSec. В этом случае говорят, что используется алгоритм шифрования Null (RFC 2410), который на самом деле заключается в том, что выходной шифртекст равен входному открытому тексту.
Для алгоритмов аутентификации предусмотрены те же соглашения и требования, что и в протоколе AH. Однако выполнение аутентификации для ESP и наличие соответствующего поля являются необязательными.
Заметим также, что даже при наличии аутентификации, в отличие от протокола AH, не происходит защиты полей заголовка IP. В случае применения режима туннелирования это не столь важно, однако в транспортном режиме становится существенным. Поэтому стандарт IPSec предусматривает как раздельное применение протоколов AH и EPS, так и их одновременное использование. В этом случае заголовок AH располагается перед заголовком ESP. Т.е. сначала работает протокол шифрования ESP, а затем полученный IP-пакет поступает на вход протокола аутентификации. Отметим, что параметры обоих протоколов при этом описываются разными записями в базах данных шлюзов VPN и идентифицируются различными SPI.
7.2.4. Согласование протоколов и управление ключами
Протоколы ESP и AH позволяют сделать реальностью важнейшие атрибуты защищенной передачи конфиденциальность связи, аутентификацию сторон и целостность данных. Между тем очевидно, что их функции потеряют всякую ценность в отсутствии мощной поддерживающей инфраструктуры, которая обеспечивала бы распределение ключей и согласование протоколов между участниками обмена.
Роль такой инфраструктуры в IPSec выполняет протокол Internet Key Exchange (IKE, RFC 2409), введенный в обращение в 1998 г.
Данный протокол является конкретизацией в системе IPSec общих стандартов обмена и генерации ключей, имеющих название ISAKMP/Oakley. Предполагается, что в системе протоколов IPSec может использоваться любая процедура обмена и генерации ключей, а также управления параметрами виртуальных каналов, которая удовлетворяет стандартам ISAKMP/Oakley. Однако к настоящему времени единственной реализованной и стандартизированной такой процедурой является IKE.
Протокол Internet Security Association and Key Management Protocol (ISAKMP, RFC 2408), был разработан в 1997 г. в Агентстве национальной безопасности США. Он позволяет согласовать алгоритмы шифрования и аутентификации, длину ключей, процедуру обмена ключами и другие необходимые параметры обмена.
В устаревших реализациях может использоваться протокол Simple Key Management for Internet Protocol (SKIP), выполняющий аналогичные задачи.
Протокол Oakley (RFC 2412) был предложен в том же году сотрудниками Университета штата Аризона и служит для непосредственного формирования и обмена ключами шифрования с использованием алгоритма ДиффиХеллмана (см. выше).
Основными понятиями, используемыми в инфраструктуре формирования и обмена ключами, являются:
Security Association (SA) выделенный защищенный виртуальный канал, однозначно идентифицируемый IP-адресом отправителя и индексом SPI, указывающим на запись с описанием всех параметров канала: алгоритма аутентификации протокола AH и его ключей, алгоритма шифрования, используемого протоколом ESP, и его ключей, наличия или отсутствия криптографической синхронизации, способов аутентификации партнеров и защиты сеанса обмена, частоты смены ключей и ряда других параметров.
Security Association Database (SAD) база данных виртуальных каналов SA, создаваемая на каждой стороне обмена. При этом отдельные записи SA создаются для каждого направления обмена и для каждого протокола. Например, для двустороннего обмена пакетами, использующего и протокол AH, и протокол ESP, потребуется четыре записи SA.
Security Policy Database (SPD) база данных политик безопасности, реализующая механизм управления защищенной передачей данных. В соответствии с правилами, указанными администратором сети, по значениям полей IP-пакета определяется, будет ли он отвергнут, обработан механизмами IPSec (при этом указывается SA, т.е. виртуальный канал) или обработан стандартным образом. Применение политик безопасности особенно эффективно при необходимости использования различных параметров защиты для различных приложений, например, Web-трафика и обращения к корпоративной базе данных.
Domain of Interpretation (DOI) область интерпретации, определяющая полную информацию о сервисах, терминах, алгоритмах и т.д., необходимых для построения системы защищенного обмена информацией в рамках протокола ISAKMP. Одной из областей интерпретации является IPSec-DOI, описывающая протоколы ESP, AH и IKE, т.е. конкретизирующая общие требования стандарта.
Объектом согласования при инициализации виртуального канала являются:
метод аутентификации;
алгоритм шифрования;
алгоритм хеширования;
длины и сроки использования ключей;
тип протокола защиты (ESP или AH);
информация о группах простых чисел, которые будут использоваться в алгоритме формирования общих ключей ДиффиХеллмана;
псевдослучайная функция, с помощью которой предстоит хешировать величины, используемые при обмене ключами (эта информация необязательна, и стандартно можно использовать алгоритм HMAC).
Весь процесс делится на две фазы:
Для обеих фаз предусмотрено по два способа установления соединения, в терминологии IKE называемых режимами.
Протокол IKE предписывает производителям обязательную реализацию для первой фазы основного режима (Main Mode) обмена и опционально агрессивного режима (Aggressive Mode), являющегося менее защищенным, но более быстродействующим.
Для второй фазы предусмотрены быстрый режим (Quick Mode), согласовывающий параметры основного SA, и режим новой группы (New Group Mode), оставленный для будущих применений с целью реализации виртуальных каналов между тремя и более узлами.
В обоих случаях применяется специальный формат данных, предусмотренный протоколом ISAKMP. Сами данные между узлами передаются в пакетах UDP по порту 500.
Заголовок пакета ISAKMP включает следующие поля:
После заголовка непосредственно следуют одно или несколько сообщений протокола. Все они имеют следующий формат:
Сейчас предусмотрено 15 типов сообщений, назначение которых станет понятно чуть позднее: SA, предложение создать виртуальный канал, передача параметров канала, обмен ключами, выбор алгоритма аутентификации, запрос/ответ сертификата, передача значения хэш-функции, цифровой подписи, случайного числа, сообщение об ошибке, удаление канала и т.д.
Данные в любом сообщении (например, параметры виртуального канала SA) передаются также в специальном формате:
Интерпретация кодов параметров происходит на основе области интерпретации DOI, которая также указывается в сообщении и должна поддерживаться производителем.
Перед началом процедуры обмена инициатор должен установить для себя следующие параметры:
Основной режим предусматривает передачу шести пакетов ISAKMP (за исключением повторных запросов и ошибок соединения):
1. Инициатор канала направляет другой стороне свой идентификатор (C_I), ситуацию и одно или несколько предложений по параметрам защищенного канала IKE SA.
2. Получатель направляет инициатору его идентификатор (C_I), свой идентификатор (C_R) и параметры принятого предложения по организации канала.
В соответствии с алгоритмом Диффи-Хеллмана инициатор и получатель генерируют открытый и закрытый ключи, а также случайные числа. Длина этих параметров уже является согласованной в результате описанного выше обмена пакетами.
Дальнейшая передача происходит в зависимости от согласованного алгоритма аутентификации, в качестве которого может использоваться: цифровая подпись, схема с открытым ключом, схема с предварительно согласованным ключом и др. Цель обмена в данном случае выработать ключ шифрования и аутентификации, которые будут использоваться во второй фазе.
3. Инициатор канала направляет другой стороне открытую часть своего ключа (KO_I) и случайное число (N_I).
4. Получатель канала направляет инициатору свой открытый ключ (KO_R) и свое случайное число (N_R).
В соответствии с алгоритмом Диффи-Хеллмана инициатор и получатель из своих закрытых ключей и открытых ключей собеседников генерируют одинаковый общий ключ шифрования KEY. Кроме того, они генерируют свои идентификаторы ID_I и ID_R, которые будут аутентифицировать дальнейшие сообщения.
С помощью псевдослучайной функции prf в зависимости от согласованного алгоритма аутентификации генерируется закрытый код аутентификации сообщений (AUTH) и ключ шифрования трафика (IK). Например, для цифровой подписи используются следующие соотношения:
T_KEY = prf(N_I | N_I, KEY)
TEMP = prf(T_KEY, KEY | C_I | C_R | 0000)
AUTH = prf(T_KEY, TEMP | KEY | C_I | C_R | 0001)
IK = prf(T_KEY, AUTH | KEY | C_I | C_R | 0002)
После этого инициатор и получатель генерируют свои цифровые подписи, которые аутентифицируют сгенерированные комбинации AUTH и IK:
SIG_I = prf(TEMP1, KO_I | KO_R | C_I | C_R | IKE SA | ID_I)
SIG_R = prf(TEMP1, KO_R | KO_I | C_R | C_I | IKE SA | ID_R)
Во всех формулах знак "|" означает конкатенацию.
5. Инициатор канала направляет получателю в зашифрованном с помощью ключа IK виде значения своего идентификатора ID_I и цифровой подписи SIG_I.
6. Получатель канала направляет инициатору в зашифрованном с помощью ключа IK виде значения своего идентификатора ID_R и цифровой подписи SIG_R.
Вместе с идентификаторами и подписями на последнем этапе также могут передаваться сертификаты сторон, полученные по одному из стандартов (например. X.509 или PGP Web in Trust).
После проверки цифровых подписей фаза 1 завершается и защищенный служебный виртуальный канал IKE SA для согласования параметров основного виртуального канала считается установленным.
Идентификация канала IKE SA при этом происходит по значениям комбинаций C_I и C_R. В рамках одного такого канала могут согласовываться параметры нескольких основных виртуальных соединений, каждый такой сеанс идентифицируется значением Message ID в заголовке пакета ISAKMP.
Агрессивный режим предусматривает передачу только трех пакетов ISAKMP:
1. Инициатор канала направляет другой стороне свой идентификатор (C_I), ситуацию и одно или несколько предложений по параметрам защищенного канала IKE SA, и, кроме того значения KO_I, N_I, ID_I.
2. Получатель направляет инициатору его идентификатор (C_I), свой идентификатор (C_R) и параметры принятого предложения по организации канала, а также значения KO_R, N_R, ID_R, SIG_R и, возможно, сертификат.
3. Инициатор канала направляет получателю свою подпись SIG_I и, возможно, сертификат.
После фазы 1 выполняется фаза 2 непосредственного установления виртуальных каналов, для связи двух абонентов через VPN. При этом вся информация в пакетах ISAKMP (за исключением общего заголовка) шифруется с применением согласованного алгоритма и ключа IK, а также аутентифицируется с использованием псевдослучайной функции и ключа AUTH. В фазе 2 передается три пакета (не считая повторных передач):
1. Инициатор виртуального канала вычисляет хэш-функцию HASH1 от передаваемых данных и помещает ее в качестве первого сообщения в пакет, далее следует идентификатор DOI, описание ситуации, предложение протокола (AH или ESP), идентификатор SPI и параметры канала, все вместе называемое SA, кроме того, передается случайное число N_I, и при необходимости открытая часть ключа в алгоритме Диффи-Хеллмана KO_I, идентификаторы приемника и источника ID_I и ID_R.
2. Приемник посылает в ответ вместе с хэшем HASH2 принятые параметры канала, случайное число N_R и при необходимости свой открытый ключ KO_R, идентификаторы приемника и источника ID_I и ID_R.
3. Инициатор подписывает сообщение хэш-функцией HASH3, после чего однонаправленный виртуальный канал считается установленным и готов к применению.
При этом хэш-функции вычисляются следующим образом:
HASH1 = prf(AUTH, M-ID | SA | N_I | KO_I | ID_I | ID_R )
HASH2 = prf(AUTH, M-ID | N_I | SA | N_R | KO_R | ID_I | ID_R)
HASH3 = prf(AUTH, 0000 | M-ID | N_I | N_R)
Ключ шифрования (для ESP) или аутентификации (для AH) вычисляется следующим образом.
Если обмена открытыми ключами не происходит:
GKEY = prf(IK, protocol | SPI | N_I | N_R)
Если происходит обмен открытыми ключами:
GKEY = prf(IK, KEY | protocol | SPI | N_I | N_R)
Если для выбранного алгоритма шифрования или аутентификации длины полученного ключа недостаточно, то он удлиняется следующим образом:
GKEY = K1 | K2 | K3 …
K1 = prf(IK, KEY | protocol | SPI | N_I | N_R)
K2 = prf(IK, K1 | KEY | protocol | SPI | N_I | N_R)
K3 = prf(IK, K2 | KEY | protocol | SPI | N_I | N_R)
…
В целом процедура согласования и генерации ключей является в IPSec наиболее сложной частью. Здесь мы рассмотрели лишь общие походы в ее организации. Описание в RFC является намного более обширным и сложным, поскольку предоставляет производителям очень большие возможности по использованию самых различных алгоритмов шифрования и хеширования.
Признано, что система IPSec является достаточно стойкой к атакам отказа в обслуживании, нарушения целостности и конфиденциальности для протоколов ESP и AH. Для протокола IKE оценки не столь однозначны. Для защиты от DoS атак в нем предусмотрены лишь идентификаторы cookie, в дополнение к которым рекомендуется использовать списки авторизованных IP-адресов. Атаки, связанные со сканированием, внедрением ложного объекта-посредника и т.п., также достаточно стабильно отражаются протоколом за счет сложной системы установления связи и аутентификации. Кроме того, предусмотрена целая система тайм-аутов и откатов к начальному состоянию при любом срыве в ходе установления соединения.
Сложность протокола предопределяет высокую стоимость его аппаратной поддержки или высокую производительность вычислительных средств, программно реализующих шлюз VPN.
Несмотря на успешную деятельность группы IETF IPSec Working Group, некоторые эксперты выражают большие сомнения в целесообразности выбора сетевого уровня модели OSI в качестве основы для системы защиты.
Главное преимущество подхода IETF заключается в том, что он не требует изменения приложений. Между тем довольно большое число прикладных программ, особенно работающих в реальном времени или ориентированных на многоадресную передачу, базируются на протоколе UDP, на который совсем не просто распространить механизмы защиты, предусмотренные в IPSec.
Еще большую проблему представляет сложность самой архитектуры IPSec, что может негативно сказываться на производительности, особенно в сетях с высокой интенсивностью трафика.
Отмеченные слабые стороны системы защиты на базе IPSec заставляют оппонентов данной технологии рассматривать другие средства обеспечения информационной безопасности. В качестве кандидатов на эту роль называются такие протоколы, как Secure Shell (SSH), Secure Sockets Layer (SSL), Transport Layer Security (TLS), Layer-2 Tunneling Protocol (L2TP) и Point-to-Point Tunneling Protocol (PPTP).
Наиболее распространенным среди перечисленных стал протокол Point-to-Point Tunneling Protocol (PPTP, RFC 2637), который является расширением протокола канального уровня PPP (RFC 1661), используемого, в частности, для передачи IP-трафика при доступе в Internet по коммутируемому соединению. Помимо программной поддержки, как и все остальные альтернативные решения, он получил и аппаратную реализацию и рассматривается, таким образом, в качестве базовой технологии для построения защищенных сетей VPN, альтернативной IPSec.
Наиболее известной является реализация PPTP, предложенная фирмой Microsoft в сотрудничестве с 3Com и Ascend Communications, которая даже предлагалаcь к стандартизации. Впоследствии компания Cisco предложила протокол Layer-2 Forwarding (L2F) с аналогичными функциями. Учитывая большое влияние указанных корпораций в сетевом мире и мире программного обеспечения, они в сотрудничестве разработали новую версию, получившую название Layer-2 Tunneling Protocol (L2TP), которая объединяет достоинства обеих разработок и уже подана в качестве заявки на стандартизацию.
Основное отличие PPTP и L2TP заключается в том, что пакеты управления PPTP инкапсулируются в пакеты TCP, а информационные пакеты в GRE, для L2TP используется инкапсуляция всех пакетов в пакеты UDP, что упрощает реализацию и аппаратную поддержку в брандмауэрах и других сетевых устройствах. Поэтому здесь мы рассмотрим лишь протокол PPTP.
Основным моментом в понимании принципов работы PPTP является четкое разграничение между функциями протокола и его реализацией.
По функциональному назначению протокол PPTP, как и PPP, относится ко второму уровню ЭМВОС, однако реализован он, как протокол уровня приложений. Это означает следующее.
Если необходимо связаться двум узлам в разных сегментах корпоративной сети и для связи требуется использовать сеть Internet, т.е. организовать через нее виртуальный защищенный канал, то с точки зрения этих узлов обмен организуется на втором уровне. Однако, когда пакеты доходят до шлюза Internet, как бы он ни был реализован, то они заключаются в качестве данных в пакеты протокола TCP/IP (если несут управляющую информацию о соединении) или GRE/IP (если несут собственно данные). На принимающей стороне шлюз Internet извлекает пакеты PPTP из стандартных пакетов стека TCP/IP и отправляет в сеть. Таким образом, происходит прозрачный обмен на втором уровне и одновременно обеспечивается защита данных от атак, свойственных сети Internet.
В терминологии PPTP процесс обмена информации строится по клиент-серверной архитектуре.
Клиентом в данном случае считается шлюз доступа в Internet, к которому непосредственно подключается пользователь через модем или другим образом по протоколу PPP. Этот шлюз обозначается PAC (PPTP Access Concentrator). Сервером считается сторона, "отвечающая" на запрос соединения и находящаяся "по другую сторону" сети Internet, т.е. тоже шлюз, но на входе целевой сети, которой и будет в случае успеха передан трафик PPP, инкапсулированный в протоколы Internet. Сервер имеет обозначение PNS (PPTP Network Server).
Таким образом, протокол PPTP описывает процедуры передачи произвольного PPP трафика через сеть Internet и работает на участке PACPNS.
Если же реализуется непосредственный обмен между модемами, например, пользователя и сервера RAS Windows NT, то этот сервер одновременно может выступать в роли и PAC, и PNS.
Рассмотрим теперь форматы сообщений протокола.
Как уже было сказано выше, различают два вида сообщений: управляющие, которые обеспечивают установление PPP соединения, и информационные, которые собственно и передают PPP трафик через сеть Internet.
Управляющие сообщения PPTP инкапсулируются в качестве данных в пакеты протокола TCP, причем соединение устанавливается по порту 1723.
Сообщения имеют следующий формат:
К управляющим сообщениям относятся сейчас 15 комбинаций: запрос/разрешение соединения, запрос/разрешение разрыва соединения, запрос/ответ сервера PPTP, запрос/разрешение входящего или исходящего звонка, ошибка связи и т.д. Для каждого из них предусмотрен свой формат, включающий всю необходимую информацию. Например, версию протокола PPP, скорость передачи, количество сеансов PPP, управляемых данной сессией управляющих сообщений, марки производителей оборудования, параметры передачи сигналов по линиям связи и т.д. Т.е. фактически происходит передача той информации, которая была бы необходима, если бы модемы обменивались напрямую.
Когда соединение PPP установлено, то его пакеты данных инкапсулируются в специализированный протокол Generic Routing Encapsulation (GRE, RFC 1701-1702), который был специально создан для инкапсуляции любых протоколов в IP-пакет. Для PPTP используется модифицированная версия этого протокола Enhanced GRE (RFC 2637).
Пакет при этом имеет следующий формат:
Заметим, что процедуры шифрования данных и распространения ключей не оговорены в стандарте PPTP и возлагаются на разработчиков систем защищенной передачи информации через сеть Internet. Поэтому можно сделать вывод, что протоколы PPTP и IPSec обладают противоположными достоинствами и недостатками.
С одной стороны, в IPSec подробно расписаны процедуры, связанные с аутентификацией, шифрованием и распространением ключей, но уровень ЭМВОС и сложность самого протокола считаются слишком высокими.
PPTP намного проще в реализации, но в нем не стандартизированы криптографические вопросы.
С технической точки зрения в одной сети можно одновременно задействовать оба протокола, правда, скорее для обеспечения избыточности средств информационной защиты. Выбор PPTP оправдан в тех случаях, когда первостепенной является задача транспортировки трафика, отличного от IP. Если же главным требованием остается высокая гибкость и масштабируемость, предпочтение стоит отдать архитектуре IPSec.
Пакет PGP (Pretty Good Privacy) (www.pgpi.org), без сомнений является на сегодня самым распространенным программным продуктом, позволяющим использовать современные надежные криптографические алгоритмы для защиты информации в персональных компьютерах.
К основным преимуществам данного пакета, выделяющим его среди других аналогичных продуктов следует отнести следующие:
1. Открытость. Исходный код всех версий программ PGP доступен в открытом виде. Любой эксперт может убедиться в том, что в программе эффективно реализованы криптоалгоритмы. Так как сам способ реализации известных алгоритмов был доступен специалистам, то открытость повлекла за собой и другое преимущество эффективность программного кода.
2. Стойкость. Для реализации основных функций использованы лучшие (по крайней мере на начало 90-х) из известных алгоритмов, при этом допуская использование достаточно большой длины ключа для надежной защиты данных.
3. Бесплатность. Готовые базовые продукты PGP (равно как и исходные тексты программ) доступны в Интернете, в частности, на официальном сайте PGP Inc. (www.pgpi.org).
4. Поддержка как централизованной (через серверы ключей) так и децентрализованной (через "сеть доверия") модели распределения открытых ключей.
5. Удобство программного интерфейса. PGP изначально создавался как продукт для широкого круга пользователей, поэтому освоение основных приемов работы отнимает всего несколько часов.
Существует также пакет GnuPG (www.gnupg.org) полная и свободно распространяемая замена для пакета PGP. Этот пакет использует патентованный алгоритм IDEA, и поэтому может быть использован без каких-нибудь ограничений. GnuPG соответствует стандарту RFC2440 (OpenPGP).
Пакет "КРИПТОН Подпись" (http://www.ancud.ru/crypto/crpodpis.htm) предназначен для использования инфраструктуры электронной цифровой подписи (ЭЦП) электронных документов.
Программы пакета КРИПТОН Подпись функционируют на стандартном ПК под управлением ОС Windows-95/98 или Windows NT 4.0.
В стандартной поставке для хранения файлов открытых ключей используются дискеты. Помимо дискет, пакет КРИПТОН Подпись дает возможность использования всех типов ключевых носителей (смарт-карт, электронных таблеток Touch Memory и др.), поддерживаемых текущей версией интерфейса SCAPI, входящего в поставку Crypton API v 2.2 и выше.
Система криптографической защиты информации (СКЗИ) "ВербаО" разработана Московским отделением Пензенского научно-исследовательского электротехнического института (МО ПНИЭМ, http://www.ntc.spb.ru/def/verbao.htm). СКЗИ "ВербаО" представляет собой программный комплекс, предназначенный для защиты информации при ее хранении на дисках и (или) передаче по каналам связи.
Система решает следующие задачи:
шифрование/расшифрование информации на уровне файлов;
генерация электронной цифровой подписи (ЭЦП);
проверка ЭЦП;
обнаружение искажений, вносимых злоумышленниками или вирусами в защищаемую информацию.
СКЗИ "ВербаО" может поставляться в двух вариантах:
в виде рабочего места;
в виде модулей, встраиваемых в ПО заказчика.
СКЗИ "ВербаО" в различных модификациях функционирует под управлением операционных систем MS DOS v5.0 и выше, Windows NT, UNIX (HP UX) на персональных ЭВМ, совместимых с IBM PC/AT. Требуемый объем оперативной памяти не более 155 Кбайт. Кроме того, необходим накопитель на гибком магнитном диске (НГМД).
Алгоритм шифрования выполнен в соответствии с требованиями ГОСТ 28147-89. Цифровая подпись выполнена в соответствии с требованиями ГОСТ Р 34.10-94. Функция хеширования выполнена в соответствии с требованиями ГОСТ Р 34.11-94. Ключи шифрования симметричные. Ключи для подписи асимметричные. При обработке информации на СКЗИ "ВербаО" обеспечивает следующие показатели при использовании ПЭВМ не ниже PC/AT 486:
1. Скорость шифрования 200 Кб/с или 520 Кб/с.
2. Скорость вычисления хэш-функции 120 Кб/с или 330 Кб/с.
3. Время формирования ЭЦП 0,3 с или 0,04 с.
4. Время проверки ЭЦП 0,7 с или 0,2 с.
СКЗИ "ВербаО" имеет сертификат ФАПСИ № 124-0264 от 10.04.99 г.
Комплекс "Inter-PRO" Предназначен для криптографической защиты информационных систем, построенных на базе Web-технологий.
Для защиты НТТР-трафика в "Inter-PRO" используются протоколы SSL и TLS, дополненные российскими криптографическими стандартами и возможностью формирования и проверки в режиме on-line цифровой подписи пользователя под электронной HTML-формой.
Прокси-технология, реализованная в комплексе "Inter-PRO", обеспечивает его независимость от применяемых типов Web-браузеров и Web-серверов, между которыми устанавливается защищенное взаимодействие через посредничество программных компонент комплекса "Inter-PRO Client" и "Inter-PRO Server".
Наиболее эффективно применение "Inter-PRO" в электронных платежных системах типа "Банк-Клиент", базирующихся на Web-технологиях и ориентированных на дистанционное обслуживание клиентов через Интернет, или в любых других системах, где необходимо авторизованное подтверждение запроса клиента на обслуживание (в системах электронной торговли, электронного страхования, платного информационного обслуживания и т.д.). При интеграции с такого рода системами "Inter-PRO" обеспечивает:
строгую аутентификацию клиента и сервера на основе цифровых сертификатов Х.509;
конфиденциальность и целостность информации, передаваемой по протоколу НТТР;
формирование и проверку в режиме on-line цифровых подписей HTMLформ;
фильтрацию трафика и разграничение доступа к ресурсам Web-сервера по параметрам цифровых сертификатов Х.509.
Основные характеристики "Inter-PRO":
соответствие требованиям Федерального Закона РФ № 1-ФЗ от 10.01.2002 "Об электронной цифровой подписи";
функционирование в операционных средах Windows 9x/Me/NT/2000/XP, Linux, FreeBSD, Solaris, SCO Open Server и др.;
использование сертификатов и списков отозванных сертификатов в формате ITU-T X.509 v3 и IETF RFS 3280;
поддержка российских и зарубежных криптографических алгоритмов:
ГОСТ Р 34.10-94, RSA;
ГОСТ Р 34.11-94, SHA-1, MD5;
ГОСТ 28147-89, DES, 3DES, RC2, RC4, IDEA;
наличие встроенной процедуры генерации ключей;
возможность хранения ключевой информации на различных носителях, включая USB Flash Hard Drive, eToken и Touch Memory;
полная прозрачность для приложений;
совместимость с различными прокси-серверами;
поддержка мобильных пользователей.
"Inter-PRO" выполнен с использованием средств криптографической защиты информации (СКЗИ):
"Крипто-КОМ 3.0" сертификаты ФАПСИ СФ/124-0476, СФ/124-0477 от 10.06.2001;
"Крипто-КОМ 3.1" сертификаты ФАПСИ СФ/114-0604, СФ/124-0605 от 21.04.2003.
Генерация ключей по ГОСТ Р 31.10-94 формата СКЗИ "Криптон-КОМ 3.0" обеспечивается программой "Admin-PKI@, а их сертификация удостоверяющим центром "Notary-PRO v.2" или "Microsoft Certification Authority" (при поддержке криптодрайвера "Signal-COM CSP").
Лицензия Гостехкомиссии России № 528. Лицензия ФСБ России № 4605. Лицензии ФАПСИ №№ ЛФ/2983, ЛФ/07-2984, ЛФ/07-2985, ЛФ/072986, ЛФ/07-2987.
Библиотека предназначена для разработчиков защищенных клиент-серверных приложений, обеспечивающих надежную криптографическую защиту потоков данных при их передаче по открытым каналам связи.
"SSL-PRO" реализует протоколы SSL и TLS, расширенные российскими алгоритмами шифрования и цифровой подписи, и обеспечивает:
строгую аутентификацию сервера и (опционально) клиента на основе цифровых сертификатов Х.509;
конфиденциальность и целостность передаваемых данных.
Основные характеристики "SSL-PRO":
поддержка протоколов SSL v3 и TLS v1 (RFC 2246);
поддержка сертификатов и списков отозванных сертификатов в формате ITU-T X.509 v3 и IEFT RFC 3280;
поддержка российских и зарубежных криптографических алгоритмов:
ГОСТ Р 34.10-94, RSA;
ГОСТ Р 34.11-94, SHA-1, MD5;
ГОСТ 28147-89, DES, RC4;
полная независимость от транспортного протокола; допускается использование любого надежного (не нарушающего последовательности передаваемых данных) способа передачи данных между взаимодействующими сторонами;
использование сертифицированного ФАПСИ программного датчика случайных чисел (ДСЧ);
возможность использования аппаратных ДСЧ;
функционирование в операционных средах Windows 9x/Me/NT/2000/XP, Linux, FreeBSD, Solaris, SCO Open Server и др.;
Библиотека "SSL-PRO" выполнена с использованием средств криптографической защиты информации (СКЗИ), аналогичных приведенным выше для системы "Inter-PRO".
Библиотека криптографических преобразований "Message-PRO" и одноименный исполняемый модуль, предназначены разработчикам приложений и систем защищенного электронного документооборота, требующих высокого уровня безопасности.
"Message-PRO" обеспечивает надежную криптографическую защиту сообщений произвольного формата, хранимых на компьютерах или передаваемых по открытым каналам связи.
Под криптографической защитой подразумеваются услуги: конфиденциальность, целостность и достоверность (авторства) информации. Конфиденциальность информации обеспечивается ее шифрованием, а достоверность и целостность электронной цифровой подписью (ЭЦП).
Для защиты в "Message-PRO" используется протокол CMS (RFC 3369).
Основные характеристики "Message-PRO":
соответствие требованиям Федерального Закона РФ № 1-Ф3 от 10.01.2002 "Об электронной цифровой подписи";
поддержка международных стандартов и цифровых сертификатов в формате ITUT X.509 v3 и IETF RFC 3280;
поддержка российских и зарубежных криптографических алгоритмов:
ГОСТ Р 34.10-94, ГОСТ Р 34.10-2001, RSA;
ГОСТ Р 34.11-94, SHA-1, MD5;
ГОСТ 28147-89;
возможность формирования нескольких ЭЦП под одним документом;
возможность формирования отсоединенных ЭЦП;
возможность многократного и многоадресного шифрования данных;
наличие процедуры генерации ключей;
возможность хранения ключевой информации на различных носителях, включая USB Flash Hard Drive, eToken и Touch Memory;
использование сертифицированного ФАПСИ программного датчика случайных чисел (ДСЧ);
возможность использования аппаратных ДСЧ, сертифицированных ФАПСИ;
функционирование в операционных средах Windows 9x/Me/NT/2000/XP, Linux, FreeBSD, Solaris, SCO Open Server и др.;
поставка как в виде исполняемого модуля, так и в виде библиотеки.
Реализует российские криптографические алгоритмы и обеспечивает к ним доступ из пользовательских приложений через стандартный криптографический интерфейс компании Microsoft CryptoAPI 2.0.
"Signal-COM CSP" выполнен в соответствии с технологией Cryptographic Service Provider (CSP), благодаря чему российские алгоритмы шифрования и ЭЦП могут использоваться в популярных и широко распространенных приложениях:
Microsoft Certification Authority;
Microsoft Outlook Express;
Microsoft Outlook;
Microsoft Authenticode;
The Bat!;
Secret Disk NG и др.
Основные характеристики "Signal-COM CSP":
поддержка международных стандартов и рекомендаций в области защиты информации (Х.509, PKIX, PKCS, CMS);
формирование и проверка ЭЦП в соответствии с ГОСТ Р 34.10-94;
выработка значения хэш-функции в соответствии с ГОСТ Р 34.11-94;
шифрование данных в соответствии с ГОСТ 28147-89;
формирование ключей шифрования и ЭЦП с помощью сертифицированного ФАПСИ программного датчика случайных чисел;
возможность использования аппаратных ДСЧ, сертифицированных ФАПСИ;
возможность хранения ключевой информации на различных носителях, включая eToken, Touch Memory и USB Flash Drive;
"Доверенный удостоверяющий центр" программно-аппаратный комплекс, разработанный совместно ФГУП "НТЦ "Атлас" и ООО "Крипто-Про" первый удостоверяющий центр, имеющий заключение ФСБ России, позволяющее использовать комплекс не только в корпоративных сетях, но и в общедоступных сетях (в том числе сети Интернет).
"Доверенный удостоверяющий центр" разработан с учетом положений Федерального закона № 1-ФЗ от 10.01.2002 г. "Об электронной цифровой подписи" и соответствует "Временным требованиям к информационной безопасности удостоверяющих центров" по классу защиты.
Удостоверяющий центр обладает устойчивостью к сетевым атакам за счет использования доверенной сертифицированной ФАПСИ (СФ/114-0625 от 16.06.2003 г.) операционной системы (ОС) "Атликс" (разработки ФГУП "НТЦ "Атлас") на базе ОС Linux и входящего в ее состав межсетевого экрана (СФ/525-0624 от 16.06.2003 г.).
В состав комплекса входят компоненты, обеспечивающие безопасную эксплуатацию удостоверяющего центра в публичных сетях:
центр сертификации;
центр регистрации;
сетевой справочник LDAP;
межсетевой экран;
аппаратный криптомодуль.
Безопасное хранение и использование закрытого ключа уполномоченного лица удостоверяющего центра обеспечивается за счет использования аппаратного криптомодуля, выполняющего все криптографические операции, в том числе по генерации ключа уполномоченного лица. Защита ключа уполномоченного лица удостоверяющего центра обеспечивается, в том числе с использованием "разделения секретов", то есть для активизации закрытого ключа одновременно необходимы три из пяти дополнительных закрытых ключей, хранящихся на процессорных картах РИК (российская интеллектуальная карта). Кроме этого, канал взаимодействия центра сертификации защищен и взаимодействие центра сертификации с криптомодулем возможно только после двусторонней криптографической аутентификации.
"Доверенный удостоверяющий центр" использует российские криптографические алгоритмы:
ГОСТ Р 34.10-94, ГОСТ Р 34.10-2001 для формирования и проверки ЭЦП;
ГОСТ 28147-89 для шифрования и имитозащиты;
ГОСТ Р 34.11-94 для хеширования данных.
Для формирования сертификатов открытых ключей используются форматы, определенные международными рекомендациями Х.509 v.3. и RFC 3280.
Для взаимодействия пользователя с удостоверяющим центром и взаимодействия компонент удостоверяющего центра между собой используются следующие протоколы (с учетом использования российских криптографических алгоритмов):
протокол SSL;
протокол PKCS#10 для представления запросов на сертификаты открытых ключей;
протокол CMP (RFC 2510 “Internet X.509 Public Key Infrastructure. Certificate Management Protocols”) для обеспечения взаимодействия пользователя и компонент удостоверяющего центра в части управления сертификатами открытых ключей;
протокол LDAP версии 3 для доступа к сетевому справочнику.
Основные характеристики удостоверяющего центра:
1. Изготовление до 1000 сертификатов открытых ключей в сутки.
2. Ведение реестра на 300 тыс. сертификатов открытых ключей.
3. Ведение архива на 2 млн. сертификатов открытых ключей.
4. Идентификация и аутентификация пользователей при локальном и сетевом доступе к компонентам УЦ.
5. Проверка целостности критичного к безопасному функционированию программного обеспечения при инициализации компонент комплекса.
6. Защита от несанкционированного доступа к функциям и информации компонент комплекса.
7. Разграничение доступа к компонентам и ресурсам комплекса на основе ролевой модели доступа.
8. Ввод защитных ключей закрытого ключа уполномоченного лица с ключевых носителей на российской интеллектуальной карте (РИК) "Оскар 1.1" по частям несколькими лицами с учетом ролевой модели доступа.
Предназначен для организации и администрирования одноранговых и иерархических систем управления ключевой информации в сетях конфиденциальной связи, построенных на базе открытого распределения криптографических ключей (PKI).
Удостоверяющий центр (УЦ) выполняет роль электронного нотариуса, заверяющего подлинность открытых ключей, что позволяет их владельцам пользоваться услугами защищенного взаимодействия без предварительной личной встречи.
Цифровая подпись администратора УЦ в составе сертификата обеспечивает достоверность и однозначность соответствия открытого ключа его владельцу.
УЦ "Notary-PRO" выполняет все необходимые функции по управлению цифровыми сертификатами открытых ключей в соответствии с рекомендациями ITU-T X.509 v.3 и IETF RFC 3280:
формирование ключей УЦ;
регистрация пользователей;
регистрация запросов на сертификацию открытых ключей;
формирование сертификатов открытых ключей;
ведение справочника сертификатов;
выпуск списков отозванных сертификатов.
Основные характеристики "Notary-PRO":
соответствие требованиям Федерального Закона РФ № 1-ФЗ от 10.01.2002 "Об электронной цифровой подписи";
поддержка международных стандартов и рекомендаций Х.509 v3, RFC 3280, RFC 3369, PKCS#7, PKCS#8, PKCS#10, PKCS#12;
возможность построения как одноуровневых, так и иерархических систем администрирования;
поддержка российских и зарубежных криптографических алгоритмов
ГОСТ Р 34.10-94, ГОСТ Р 34.10-2001, RSA;
ГОСТ Р 34.11-94, SHA-1, MD5;
совместимость по форматам запросов с MS Internet Explorer, Netscape Navigator/Communicator, Lotus Notes;
возможность организации взаимодействия с удаленными пользователями через Web-интерфейс (регистрация запросов, получение сертификатов и CRL);
возможность публикации сертификатов и CRL на серверах LDAP;
поддержка SQL-совместимых СУБД (MS SQL Server, Oracle);
возможность организации автоматической обработки запросов;
использование сертифицированного ФАПСИ программного датчика случайных чисел (ДСЧ);
возможность использования аппаратных ДСЧ, сертифицированных ФАПСИ;
аудит всех выполняемых операций;
удобный, интуитивно понятный графический интерфейс;
рекомендуемые операционные системы Windows NT/2000.
Инфраструктура УЦ "Notary-PRO" включает ряд опциональных компонент, расширяющих функциональные возможности центра:
"Notary-DIR" общедоступный сетевой справочник сертификатов, предназначен для публикации и сопровождения хранилища сертификатов пользователей, сертификатов УЦ и списков отозванных сертификатов; доступ к справочнику осуществляется по протоколу LDAP или через WEB-интерфейс; обеспечивается поиск сертификата по его реквизитам; функционирует под управлением Linux, FreeBSD, Solaris;
"Notary-PRO Web Pager" Web-приложение УЦ, реализующее интерактивное взаимодействие удаленных пользователей с "Notary-PRO" через Web-интерфейс; обеспечивает доставку запросов на сертификацию, передачу пользователям сформированных персональных сертификатов, сертификатов УЦ, списков отозванных сертификатов; оповещает пользователей об ошибках при регистрации запросов и сертификации;
"Notary-PRO/RA" модуль регистрации пользователей и запросов на сертификацию; при большом количестве запросов позволяет распределить работу по их обработке и регистрации между несколькими доверенными операторами администратора удостоверяющего центра;
УЦ "Notary-PRO" реализован с применением стандартных средств криптографической защиты информации (СКЗИ), сертифицированных ФАПСИ.
Сертификаты Х.905, выпускаемые УЦ "Notary-PRO" могут использоваться не только прикладными системами и криптографическими библиотеками разработки фирмы "Сигнал-КОМ" (Inter-PRO, Net-PRO, Mail-PRO, Message-PRO, File-PRO и др.), но и приложениями сторонних, в том числе зарубежных производителей.
На базе УЦ семейства "Notary-PRO", начиная с 1998 года, реализовано более 70 проектов различных PKI систем, обеспечивающих решение проблем информационной безопасности во многих коммерческих и финансовых структурах.