
- •1.1. Базовая терминология. Основные алгоритмы шифрования
- •1.2. Цифровые подписи, криптографические хэш-функции и генераторы случайных чисел
- •1.3. Шифровальный алгоритм. Симметричные криптоалгоритмы
- •1.4. Криптоанализ и атаки на криптосистемы. Функции криптосистем и алгоритмы создания цепочек
- •1.5. Методы рандомизации сообщений
- •1.6. Архивация. Транспортное кодирование
- •1.7. Асимметричные криптоалгоритмы
- •2.1. Хеши
- •2.2. Области применения хэш-функций
- •2.3. Шифрование в каналах связи компьютерной сети
- •2.4. Шифрование файлов
- •2.5. Аппаратное и программное шифрование
- •3. Криптосистемы с открытым ключом
- •3.1. Предыстория и основные идеи
- •3.2. Первая система с открытым ключом - система Диффи-Хеллмана
- •3.3. Элементы теории чисел.
- •3.4. Шифр Шамира
- •3.5. Шифр Эль-Гамаля
- •3.6. Односторонняя функция с «лазейкой» и шифр rsa
- •4. Электронная, или цифровая подпись
- •4.1. Электронная подпись rsa
- •5. Современные шифры секретным ключом
- •5.1. Блоковые шифры
- •5.3. Основные режимы функционирования блоковых шифров
- •5.4. Потоковые шифры
- •5.5. Криптографические хеш-функции
- •6. Сетевая безопасность
- •6.1. Сервера
- •6.2. Рабочие станции
- •6.3. Среда передачи информации
- •6.4. Узлы коммутации сетей
- •6.5. Уровни сетевых атак согласно модели osi
- •7. Программное обеспечение и информационная безопасность
- •7.1. Операционные системы
- •7.2. Прикладные программы
- •7.3. Ошибки, приводящие к возможности атак на информацию
- •7.4. Основные положения по разработке программного обеспечения
3.2. Первая система с открытым ключом - система Диффи-Хеллмана
Для удобства дальнейшего изложения назовем условного противника Евой, а отправителя и получателя сообщений соответственно Алисой и Бобом.
Эта криптосистема была
открыта в середине 70-х годов американскими
учеными Диффи (Whitfield
Diffie)
и Хеллманом (Martm
Hellman)
и привела к настоящей революции в
криптографии и ее практических
применениях. Это первая система, которая
позволяла защищать информацию без
использования секретных ключей,
передаваемых по защищенным каналам.
Для того чтобы продемонстрировать одну
из схем применения таких систем,
рассмотрим сеть связи с N
пользователями, где
N -
большое число. Пусть мы хотим организовать
секретную связь для каждой пары из них.
Если мы будем использовать обычную
систему распределения секретных ключей,
то каждая пара абонентов должна быть
снабжена своим секретным ключом, т.е.
всего потребуется
ключей.
Пусть строится система связи для абонентов А,В,С,….У каждого абонента есть своя секретная и открытая информация. Для организации этой системы выбирается большое простое число р и некоторое число g, 1<g<р-1, такое, что все числа из множества {1,2,…,р-1} могут быть представлены как различные степени g mod p (известны различные подходы для нахождения таких чисел g, один из них будет представлен ниже). Числа р и g известны всем абонентам.
Абоненты выбирают большие числа Ха , Хв, Хс, которые хранят в секрете (обычно такой выбор рекомендуется проводить случайно, используя датчики случайных чисел). Каждый абонент вычисляет соответствующее число Y, которое открыто передается другим абонентам,
(3.9)
В результате получаем следующую таблицу.
Таблица 3.2
Ключи пользователей в системе Диффи—Хеллмана
Абонент |
Секретный ключ |
Открытый ключ |
А В С |
ХА ХB Хс |
YA Yb Yc |
Допустим, абонент А решил организовать сеанс связи с В, при этом обоим абонентам доступна открытая информация из табл. 3.2. Абонент А сообщает В по открытому каналу, что он хочет передать ему сообщение. Затем абонент А вычисляет величину
ZAB
= (YB)
mod
p
(3.10)
(никто другой кроме А этого сделать не может, так как число Ха секретно). В свою очередь, абонент В вычисляет число
ZBA
= (Ya)
mod
p.
(3.11)
Утверждение 3.2. Zab = Zba
Доказательство. Действительно,
Zab
=
(YB)
mod
p = (g
)
mod p
= g
mod
p
= (YA)
mod p
= ZBA.
(Здесь первое равенство следует из (3.10), второе и четвертое - из (3.9), последнее - из (3.11).).
Отметим главные свойства системы:
1) абоненты А и В получили одно и то же число Z = ZAB — ZBA , которое не передавалось по открытой линии связи;
2) Ева не знает секретных чисел ХA, ХB,, поэтому не может вычислить число ZAB (вообще говоря, она могла бы попытаться найти секретное число ХA по YB ), однако при больших р это практически невозможно (требуются миллионы лет)).
Абоненты А и В могут использовать ZAB в качестве секретного ключа для шифрования и дешифрования данных. Таким же образом любая пара абонентов может вычислить секретный ключ, известный только им.
Остановимся теперь на упомянутой выше задаче выбора числа g. При произвольно заданном р она может оказаться трудной задачей, связанной с разложением на простые множители числа р-1. Дело в том, что для обеспечения высокой стойкости рассмотренной системы число р-1 должно обязательно содержать большой простой множитель (в противном случае алгоритм Полига-Хеллмана быстро вычисляет дискретный логарифм). Поэтому часто рекомендуют использовать следующий подход. Простое число р выбирается таким, чтобы выполнялось равенство
p=2q+1,
где q - также простое число. Тогда в качестве g можно взять любое число, для которого справедливы неравенства
1<g<р-1
и gq
mod
р
1.