/
Author: Столлингс В.
Tags: информационная безопасность компьютерные сети криптография шифрование защита информации
Year: 2001
Text
Оглавлений 5
Предисловие 19
ГЛАВА I. Введение 25
ЧАСТЬ I. ТРАДИЦИОННОЕ ШИФРОВАНИЕ 47
ГЛАВА 2. Традиционное шифрование: классические методы 48
ГЛАВА 3 Традиционное шифрование: современные методы 80
ГЛАВА 4 Традиционное шифрование: алгоритмы 135
ГЛАВА 5. Традиционное шифрование и конфиденциальность 177
ЧАСТЬ II. ШИФРОВАНИЕ С ОТКРЫТЫМ КЛЮЧОМ И ФУНКЦИИ
ХЭШИРОВАНИЯ 213
ГЛАВА 6. Криптография с открытым ключом 214
ГЛАВА 7. Введение в теорию чисел 266
ГЛАВА 8 Аутентификация сообщений и функции хэширования 296
ГЛАВА 9. Алгоритмы хэширования ,334
I ГЛАВА 10. Цифровые подписи и протоколы аутентификации 365
ЧАСТЬ III. ПРАКТИКА СЕТЕВОЙ ЗАЩИТЫ 391
ГЛАВА 11. Приложения аутентификации 392
ГЛАВА 12. Защита электронной почты 428
ГЛАВА 13. Защита на уровне IP 481
ГЛАВА 14. Зашита Web 531
ЧАСТЬ IV. ЗАЩИТА СИСТЕМ 571
ГЛАВА 15. Нарушители и вирусы 572
ГЛАВА 16. Брандмауэры 620
ПРИЛОЖЕНИЕ А. Проекты для курса по криптографии и защите сетей 640
Словарь терминов , 643
Сокращения 648
Список литературы 650
Предметный указатель 664
Содержание
г
Предисловие 19
Цель книги 20
Кому адресована книга 20
Структура книги 20
Internet-поддержка для преподавателей и студентов 21
Проекты практических работ по криптографии и защите сетей 21
Что нового во втором издании 22
Благодарности 24
ГЛАВА 1 Введение 25
1.1, Нарушения, механизмы и службы защиты 28
Сервисные службы 29
Механизмы защиты 31
Нарушения 31
1.2. Нарушения защиты 32
Пассивные нарушения 34
\ Активные нарушения 34
1.3. Сервисные службы защиты 36
Конфиденциальность Зв
Аутентификация 36
Целостность 37
Невозможность отречения 37
Управление доступом 38
Доступность 38
1.4. Модель зашиты сети 38
1.5. Обзор содержания книги 41
Традиционное шифрование: классические методы 41
Традиционное шифрование- современные методы и алгоритмы 41
Традиционное шифрование и конфиденциальность 41
Криптография с открытым ключом 41
Введение в теорию чисел 42
Аутентификация и функции хэширования 42
Цифровые подписи и протоколы аутентификации 42
Приложевия аутентификаций 42
Защита электронной почты 43
Зашита на уровне IP 43
Зашита Web 43
Нарушители и вирусы ----- •.•; - 43
Брандмауэры ;Hi :•,•»;г». а 44
16. Рекомендуемые источники дополнительной информации 44
Дополнение 1А. Ресурсы Internet и Web 44
Web-узлы данной книги 44
Другие Web-узлы 45
Группы новостей USENET 45
ЧАСТЬ I. ТРАДИЦИОННОЕ ШИФРОВАНИЕ 47
ГЛАВА 2. Традиционное шифрование: классические методы 48
2.1. Модель традиционного шифрования 49
Криптография 51
Криптоанализ 51
2.2. Стеганография 55
2.3. Классическая техника шифрования 57
Применение подстановок 57
V Применение перестановок 72
Барабанные шифровальные машины 73
2.4. Рекомендуемые источники дополнительной информации 75
2.5. Задачи 76
ГЛАВА 3. Традиционное шифрование: современные методы 80
* 3.1. Упрощенный DES 81
Общие сведения 81
Вычисление ключей S-DES 83
Шифрование S-DES 84
Анализ S-DES 87
Связь с DES 88
3.2. Принципы блочного шифрования 89
Поточные и блочные шифры 89
Предпосылки создания шифра Файстеля 89
Шифр Файстеля 92
3.3. Стандарт шифрования данных (DES) 99
Шифрование DES J01
Дешифрование DES 107
3.4. Надежность DES 109
Использование 56 битовых ключей 110
Внутренняя структура алгоритма DES 112
\ 3.5. Дифференциальный и линейный криптоанализ 112
Дифференциальный криптоанализ 112
Линейный криптоанализ 115
3.6. Принципы построения блочных шифров 116
Критерии, лежащие в основе конструкции JDES 116
Число раундов шифрования 117
Вид функции F 118
Алгоритм вычисления ключей u Яг-«Ф синь 121
ХЧГЧ ГГТДТ»ПЪ* А ГЖТАГТЛ
7
3.7. Режимы работы блочных шифров 121
Режим электронной шифровальной книги 121
Режим сцепления шифрованных блоков 122
Режим шифрованной обратной связи 125
Режим обратной связи по выходу 126
3 8. Рекомендуемые источники дополнительной информации 128
3.9. Задачи 129
Приложение ЗА. Бент-функции 132
ГЛАВА 4. Традиционное шифрование алгоритмы 135
4.1. "'Тройной” DES 135
“Двойной'' DRS 136
“Тройной” DES с двумя ключами 138
“Тройной” DES с тремя ключами 141
4,2 Международный алгоритм шифрования данных (IDEA) 142
Внутренняя структура алгоритма 142
Шифрование IDEA 146
Дешифрование IDEA 149
4.3. Blowfish 153
Вычисление пол ключей и S-матриц 154
Шифрование и дешифрование 155
Обсуждение 157
4.4. RC5 159
Параметры RC5 159
Развертывание ключа 160
Шифрование 162
Дешифрование 162
Режимы RC5 163
4.5. CAST-128 164
Шифрование OAST-128 165
Матрицы подстановки 166
Вычисление подключей 166
Обсуждение „ 167
4.6. RC2 169
Разворачивание ключа 169
Шифрование 170
4.7. Характеристики лучших симметричных блочных шифров 171
4.8. Задачи 173
ГЛАВА 5. Традиционное шифрование и юкфиденциальяосгь 177
5.1. Размещение функции шифрования 178
Потенциальные возможности для нарушений защиты 178
Канальное шифрование и сквозное шифрование 180
/ 5.2. Конфиденциальная передача данных 187
Использование кавального шифрования 187
Использование сквозного шифрования 188
8
СОДЕРЖАНИЕ
5.3. Распределение ключей 188
Сценарий распределения ключей 191
Управление иерархией ключей 193
Продолжительность использования сеансового ключа 193
Прозрачная схема управления ключами 194
Децентрализованное управление ключами 195
Управление использованием ключей 196
’ 5.4. Генерирование случайных чисел 198
Использование случайных чисел 199
Источники случайных чисел 200
Генераторы псевдослучайных чисел 201
Криптографически генерируемые случайные числа 203
Генератор BBS 205
5.5. Рекомендуемые источники дополнительной информации 207
5.6. Задачи 208
ЧАСТЬ II ШИФРОВАНИЕ С ОТКРЫТЫМ КЛЮЧОМ И ФУНКЦИИ
ХЭШИРОВАНИЯ 213
ГЛАВА 6 Криптография с открытым ключом 214
6.1. Принципы построения криптосистем с открытым ключом 216
Криптосистемы с открытым ключом 217
Применение криптосистем с открытым ключом 222
Условия применения методов криптографии с открытым ключом 223
Криптоанализ схем шифрования с открытым ключом 225
6.2. Алгоритм RSA 225
Описание алгоритма 226
Вычислительные аспекты 229
Защищенность алгоритма RSA 232
6.3. Управление ключами 236
Распределение открытых ключей 237
Распределение секретных ключей с помощью системы с открытым
ключом 242
6.4. Обмен ключами по схеме Диффи-Хеллмана * 245
6.5. Криптография с использованием эллиптических кривых 248
Эллиптические кривые 249
Эллиптические кривые над конечными полями 250
Эллиптические кривые и криптография 252
Ьезопагнкть кригт'-граФии с использованием ...глиптических кривых 254
6.6. Рекомендуемые источники дополнительной информации 255
6.7. Задачи 256
Дополнение 6А. Сложность алгоритмов 262
ГЛАВА 7. Введение в теорию чисел 266
7.1. Простые и взаимно простые числа 267
Делители 267
Простые числа чт ««.o' 267
СОДЕРЖАНИЕ
0
Взаимно простые числа 269
7.2. Арифметика в классах вычетов 270
Операции арифметики в классах вычетов 271
Свойства арифметики в классах вычетов 273
7.3. Теоремы Ферма и Эйлера 275
Теорема Ферма 275
Функция Эйлера 277
Теорема Эйлера 278
7.4. Как проверить, является ли число простым 279
7.5. Алгоритм Евклида 281
Поиск наибольшего общего делителя 281
Вычисление мультипликативного обратного 283
7.6. Китайская теорема об остатках 284
7.7. Дискретные логарифмы 286
Степень целого числа по модулю л 286
Индексы 288
Вычисление дискретных логарифмов 290
7.8. Рекомендуемые источники дополнительной информации 291
7.9. Задачи 292
ГЛАВА 8. Аутентификация сообщений и функции хэширования 296
*V 8.1. Требования аутентификации 297
8.2. Функции аутентификации 298
Шифрование сообщения 298
Код аутентичности сообщения 305
Функция хэширования 307
\ 8.3. Коды аутентичности сообщений 311
Необходимые свойства кодов аутентичности сообщений 311
Коды аутентичности сообщений на основе DES 314
' 8.4. Функции хэширования 314
Требования, предъявляемые к функции хэширования 315
Простые функции. хэширования 316
Атаки, в основе которых лежит парадокс задачи о днях рождения 319
Метод сцепления блоков 320
8.5. Зашита функций хэширования ... 322
Атаки с перебором всех вариантов 322
Криптоанализ 324
8-6. Рекомендуемые источники дополнительной информации 326
8.7. Задачи 327
Дополнение 8А. Математическое обоснование атак ... 328
Связанная проблема 328
Парадокс задачи о днях рождения 329
Одно полезное неравенство 330
Общий случай 330
Пересечение двух множеств 332
10
СОДЕРЖАНИЕ
ГЛАВА 9 Алгоритмы хэширования ••уот-..n 334
9.1. Алгоритм MD5 вычисления профиля сообщения 335
Логика MD5 335
Функция сжатия MD5 339
MD4 341
Стойкость M.D5 344
9 2. Защищенный алгоритм хэширования (SHA) 345
Логика SHA-1 345
Функция сжатия SHA-1 347
Сравнительный анализ SHA-1 и МЬ5 349
9.3. RTPEMD-160 350
Логика RTPEMD-160 , 351
Функция сжатия RIPEMD-160 353
Конструктивные решения RIPEMD-160 г , 355
Сравнение с MD5 и SHA-1 357
9.4. НМАС 358
Цели разоаботки НМАС 359
Алгоритм НМАС 36и
Защищенность НМАС 302
9.5. Задачи 363
ГЛАВА 10. Цифровые подписи и протоколы аутентификации 365
\ 10.1. Цифровые подписи 365
Требования 365
Непосредственная цифровая подпись Зв 7
Арбитражная цифровая подпись 308
10.2. Протоколы аутентификации 370
Взаимная аутентификация 370
Односторонняя аутентификация 378
10.3. Стандарт цифровой подписи 380
Подход DSS 380
Атгоритм цифровой подписи 381
10.4. Рекомендуемые источники дополнительной информации 384
10.5. Задачи 384
Дополнение 10А. Обоснование алгоритма цифровой подписи 388
ЧАСТЬ III. ПРАКТИКА СЕТЕВОЙ ЗАЩИТЫ 391
ГЛАВА 11. Приложения аутентификации 392
11.1. Kerberos 392
Цели разработки 393
Kerberos версии 4 395
Kerberos версии 5 405
11.2. Служба аутентификации X 509 413
Сертификаты 413
Процедуры аутентификации 418
Версия 3 стандарта Х.509 420
СОДЕРЖАНИЕ
11
11-3, Рекомендуемые источники Дополнительной информации 423
11.4. Задачи 423
Дополнение 11А. Методы шифрования Kerberos 425
Преобразование паролей в ключи 425
Режим распространения сцепления шифрованных блоков 420
ГЛАВА 12. Защита электронной почты 428
12.1. PGP 429
Обозначения 430
Описание работы системы 130
Криптографические ключи и связки ключей 436
Управление открытыми ключами 444
12.2. S/M1ME 451
RFC 822 451
Многоцелевые расширения электронной почты 452
Функциональные возможности S/M1ME 480
Сообщения S, MIME 463
Обработка сертификатов в S/M1ME 467
Сервис усовершенствованной защиты 469
12.3. Рекомендуемые источники дополнительной информации 471
12.4. Задачи 471
Дополнение 12А. Сжатие данных с помощью ZIP 472
Алгоритм сжатия 473
Алгоритм декомпрессии 474
Дополнение 12Б. Преобразование в формат radix-64 475
Дополнение 12В. Генерирование случайных чисел PGP 477
Истинно случайные числа 478
Псевдослучайные числа 478
ГЛАВА 13. Защита иа уровне IP 481
13.1. Обзор возможностей защиты на уровне 1Р 482
Области применения IPSec 482
Преимущества IPSec 483
Приложения маршрутизации “ 484
13.2. Архитектура зашиты на уровне IP 485
Документы IPSec 485
Сервис IPSec 487
Защищенные связи 487
Транспортный и туннельный режимы 490
13.3. Заголовок аутентификации 492
Сервис защиты от воспроизведения 493
Код контроля целостности 494
Транспортный и туннельный режимы 495
13.4 Включающий защиту полезный груз 497
Формат ESP 498
Шифрование и алгоритмы аутентификации 498
Использование заполнителя 499
12
СОДЕРЖА! И?!
Транспортный, и туннельный режимы 499
13.5. Комбинация защищенных связей 503
Аутентификация плюс конфиденциальность 504
Основные тииы комбинации защищенных связей 505
13.6. Управление ключами 507
Протокол Oakley определения ключей 508
Протокол ISAK М Р 512
13.7. Рекомендуемые источники дополнительной информации 520
13.8. Задачи 520
Дополнение 13А. Протоколы межсетевого взаимодействия 521
Роль протокола межсетевого взаимодействия 521
IPv4 524
IPv6 526
ГЛАВА 14. Защита Web 531
14.1. Проблемы защиты Web 531
Угрозы нарушения защиты Web 532
Способы защиты потока данных в Web 534
14.2. Протоколы SSL и TLS 535
Архитектура SSL 535
Протокол записи SSL 537
Протокол изменения параметров шифрования 540
Протокол извещения 540
Протокол квитирования 542
Криптографические вычисления 548
Защита транспортного уровня 550
14.3. Протокол защищенных электронных транзакций (SET) 555
Общие сведения о SET 556
Дуальная подпись 560
Обработка платежа 562
14.4. Рекомендуемые источники дополнительной информации 569
14.5. Задачи 569
ЧАСТЬ IV. ЗАЩИТА СИСТЕМ 571
ГЛАВА 15. Нарушители и вирусы 572
15.1. Нарушители 573
Методика вторжения 575
Защита паролей. 577
Стратегии выбора пароля ‘ 583
Обнаружение нарушителей 588
15.2. Вирусы и угрозы, связанные с вирусами 602
Вредоносные программы 602
Природа вирусов 607
Типы вирусов 610
Макровирусы 611
Антивирусная защита 613
Перспективные методы антивирусной защиты 614
16.3. Рекомендуемые ист очники дополнительной информации 617
15.4. Задачи 618
ГЛАВА 16 Брандмауэры 620
16 1. Принципы разработки брандмауэров 620
Характеристики брандмауэров 622
Типы брандмауэров 623
Конфигурации брандмауэров 630
16.2. Высоконадежные системы 632
Управление доступом к данным 633
Идея использования высоконадежных систем 635
Защита от "троянских коней’* 637
16.3. Рекомендуемые источники дополнительной информации 639
16.4. Задачи 639
ПРИ ЛОЖЕНИЕ А. Проекты для курса по криптографии и защите сетей 640
А.1. Исследовательские проекты 641
А.2. Проекты по программированию 641
А.З. Задания по изучению/реферированию литературы 642
Словарь терминов 643
Сокращения 648
Список литературы 650
Предметный указатель 664
14
СОДЕРЖАНИЕ
^гЯЕ-ggj?Mb1ir^W<1 W «Г..-—-JU- rf. -.>, „..л*«jew-wsfcu л« Лвадн-аьлна
ТГкнигеъ^ьямаСТо^^нгса^рипто^аф1^и
безопасность сетей: принципы и практика"
Как гласит легенда, древние греки, пытаясь освободить похищенную царицу,
спрятались в большой деревянной фигуре коня. Любопытные защитники Трои
сами втащили коня в свой город, где и были разбиты в жестокой схватке не-
ожиданно появившимися воинами. Эта древняя история, ставшая притчей, по-
вторялась веками как одна из основных схем сюжетных построений. Менялись
персонажи, действия, историческая обстановка, но схема проявляла универсаль-
ную устойчивость. Писатели и философы, к своему удивлению, стали замечать,
что мифы обладают загадочной способностью повторяться. В наши дни мифоло-
гические сюжеты перекочевали в мир безмолвных электронных коммуникаций.
'Троянский конь” — название широкого класса полезных или кажущихся по-
лезными программ, содержащих секретный код, выполнение которого ведет к
нежелательным и даже разрушительным последствиям.
В настоящее время в концепции информационные технологии акцент сме-
стился на понятие информация. Современное киберпространство становится ме-
стом драматической интеллектуальной битвы, в которой сталкиваются корпора-
тивные интересы многочисленных групп и отдельных личностей. В логическом
мире электронных коммуникаций создаются величайшие интеллектуальные ше-
девры и изощренные средства для их уничтожения Сама информация превра-
щается в объект, на защиту которого направлены основные усилия и ресурсы
многомиллионной армии математиков, программистов, электронщиков и инже-
неров. Методы защиты информации динамически развиваются, усложняются и
постепенно оформляются в отдельную отрасль информационно-
коммуникационных технологий. Разобраться во всех тонкостях методологии за-
щиты информации не так просто даже подготовленному специалисту. Поэтому
особую ценность имеют учебники, в которых методически продуманно излагают-
ся основные достижения теории и практики защиты информации. К такой кате-
гории книг относится рассматриваемая монография известного американского
специалиста Вильяма Столлингса иКриптография и безопасность сетей: принци-
пы и практика”.
В книге в доступной форме излагаются основные средства и методы, исполь-
зуемые в системах защиты компьютерных сетей. Главным достоинством книги
является простота изложения сложных вещей. Основное внимание уделяется не
деталям, а концепциям. Для объяснения рассматриваемых алгоритмов автор
применяет наглядные схемы и диаграммы. В книге поднимается широкий
спектр вопросов, модели угроз в коммуникационных сетях и меры по предот-
вращению попыток реализации этих угроз, симметричное шифрование, крипто-
графия с открытыми ключами, хэш функции, практические вопросы сетевой
безопасности.
Одним из самых удачных методических достижений автора, на наш взгляд,
служит изложение американского стандарта шифрования DES (Data Encrypuon
Standard). История DES начинается с проекта Люцифер фирмы IBM 60-х годов.
О КНИГЕ
13
С 1977 года алгоритм DES был принят в качестве федерального стандарта США
для коммерческих приложений. Данный алгоритм является эволюционным раз-
витием идей роторных машин типа ENIGMA, применяемых немецкой армией во
время второй мировой войны. DES — сложный алгоритм, обеспечивающий мно-
гоступенчатое блочное преобразование 64 битов исходной информации с ис-
пользованием 16 подключей длиной в 48 битов, получаемых, в свою очередь,
преобразованиями из начального ключа длиной в 56 битов Изложение DES как
отдельной схемы требует рассмотрения многочисленных мелких деталей, кото-
рые усложняют понимание общей идеи. Автор начинает рассмотрение DES с уп-
рощенного примера алгоритма, работающего толью, с 8-битовыми блоками
входной информации и 10-битовым начальным ключом. Понимание такого при-
мера не требует особых усилий. Затем DES преподносится как очевидное обоб-
щение упрощенного варианта. Так же просто описаны схемы алгоритмов двой-
ного и тройного DES, рассматриваемых как каскадное соединение блоков DES.
Алгоритм DES сыграл значительную роль в развитии симметричного шифрова-
ния. Многолетние усилия криптоаналитиков, умноженные на мощность совре-
менных компьютерных комплексов, привели к теоретическому факту уязвимо-
сти DES относительно некоторых типов криптоатак с известными входными и
выходными блоками Поэтому с 2001 года в США одобрен новый стандарт шиф-
рования AES. (American Encryption Standard). Без сомнения, в следующих изда
ниях этой книги новый стандарт получит должное освещение,
В книге можно найти описание и других популярных блочных алгоритмов,
таких как, например, Blowfish, CAST-128.
Криптография с ключами общего доступа (public-key cryptography) — одно из
самых выдающихся достижений компьютерной науки прошлого столетия. Уди-
вительно просто было показано, как можно обеспечить защищенность переда-
ваемой информации, не используя при этом никаких средств секретности ком-
муникационных каналов Парадигма криптографии с ключами общего доступа
основана не на секретности всех ключей участников коммуникационного процес-
са, а на вычислительной невозможности для противника, обладающего даже
самыми мощными суперкомпьютерами, определения секретных параметров по
заданному открытому ключу. Это направление, начало которому положено в се-
редине 70-х годов двадцатого столетия, бурно развивается и стимулирует разви-
тие новых методов алгебры, теории чисел, теории вероятности, сложности алго-
ритмов и квантовых вычислений.
Автор книги стремится сосредоточить внимание читателя на основных прин-
ципиальных схемах защиты с ключами общего доступа и способах их криптоа-
нализа, К настоящему моменту имеется достаточно много литературы, посвя-
щенной этому вопросу. Но и здесь автору удается преподнести материал в фор-
ме. допускающей быстрое и легкое усвоение. Кроме того, автор освещает
некоторые малоизвестные полезные факты, отсутствующие в учебной литерату-
ре. Например, интересно описание временных атак на схемы типа RSA. В этих
атаках отслеживается время выполнения вычислительных операций, по кото-
рому восстанавливаются секретные параметры Ситуация аналогична той, когда
взломщик прослушивает замок сейфа или по длительности набора цифр телефо-
на определяет номер.
16
О КНИГЕ
Безупречно излагаются методы сетевой безопасности, включая протоколы
Kerberos, Х5«9. v3, PGP, S/MIME, SSL/TLS, SET. К настоящему моменту рэзрабо
тано большое количество сетевых протоколов, обеспечивающих аутентификацию
пользователей и безопасные обмены, оставшихся за рамками монографии. Но по-
нимание принципа работы такого представителя этого семейства, как алгоритм
Kerberos, позволит без труда разобраться в любом другом подобном алгоритме.
Прочтения этой книги будет вполне достаточно для подготовки к конкретной
работе в области защиты сетевых коммуникаций. Для многих она послужит
стимулом к дальнейшему изучению многочисленных криптоалгоритмов и мето-
дов их реализации. Для некоторых читателей эта книга определит их интересы
на многие годы успешной профессиональной работы.
Профессор Анатолий Анисимов
Антигоне, никогда
не сдающейся,
никогда не надоедающей
и всегда мудрой.
Предисловие
— Эта связь, если позволите предположить, сэр, о действи
темности может быть более прочной, чем кажется на первый
взгляд Кто-тп, похоже, пытается использовать эффект бабоч
ки. Если вы позволите...
— Но какое это может иметь значение сейчас, Дживз? Неуже-
ли вы не понимаете, что семейное счастье мистера Литтла
висит на волоске?
— Связи имеют значение всегда, сэр.
П. Г Вудхиуе (PG Wodehouse.). Very Good, Jeevesl
X Ч ейчас, когда повсюду используются электронные
I средства связи, в эпоху вирусов и хакеров, элек-
тронного подслушивания и электронного мошенни-
чества, вопросы безопасности, без сомнения, не мо1ут оста-
ваться чем-то второстепенным. Жизненная важность темы
этой книги определяется двумя ясно обозначенными сего-
дня тенденциями. Во-первых, вследствие лавинообразного
распространения компьютерных систем и их взаимодейст-
вия посредством сетей наблюдается все большая завися
мость как организаций, так и отдельных людей от инфор-
мации, пересылаемой по сети и хранящейся в таких систе-
мах. Это, в свою очередь, заставляет осознать необходи-
мость защиты данных и ресурсов от возможности несанк
ционированного доступа, важность использования специ-
альных средств для обеспечения достоверности получаемых
данных и сообщений, а также зашиты систем от сетевых
атак. Во-вторых, криптографию и защиту сетей сегодня
уже можно рассматривать как вполне сформировавшиеся
дисциплины, на основе которых могут разрабатываться и
уже созданы реальные законченные приложения, обеспечи-
вающие сетевую зашиту.
Цель книги|
Эта Егнигя ставит своей целью предложить систематический обзор теоретиче-
ских основ криптографии и ее практических приложений в области защиты се-
тей. В первых двух частях книги основное внимание уделяется возможностям
защиты сетей, вследствие чего материал соответствующих глав представляет со-
бой обзор основных из применяемых сегодня технологий криптографии и защи-
ты сетей, в рамках которого предлагаются и базовые теоретические результаты,
служащие основой этих технологий. Последующие части книги посвящены
практическому использованию средств защиты сетей, а именно реальным при-
ложениям, применяемым для обеспечения сетевой защиты.
Тема этой книги, а значит, и материал всей книги в целом, базируется на ря-
де важных дисциплин. В частности, оценить важность ряда представ теняых в
этой книге методов невозможно без понимания основ теории чисел и некоторых
принципов теории вероятностей. Тем не менее, автором была предпринята по-
пытка сделать книгу самодостаточной. Книга не только содержит необходимые
формулировки основных математических результатов, требующихся для ее по-
нимания, но и предоставляет читателю объяснения смысла этих результатов на
интуитивном уровне. Такой вспомогательный материал предлагается по мере не-
обходимости, что помогает читателю убедиться в обязательности его освоения.
Кому адресована книга
Книга предназначена как для академической, так и для профессиональной
аудитории. Как учебник эта киша может выступать в качестве основы курса по
криптографии и защите сетей для студентов, изучающих информатику, вычис-
лительную технику или электротехнику. Книга также может служить базовым
справочным пособием и подходит для самостоятельного изучения предмета.
Структура книги
Книга состоит из четырех частей.
I Традиционное шифрование. Подробное рассмотрение алгоритмов традици-
онного шифрования и принципов их построения, включая использование
традиционного шифрования как средства обеспечения конфиденциальности.
II . Шифрование с открытым ключом и функции хэширования. Подробное
описание алгоритмов шифрования с открытым ключом и принципов их
построения. Здесь же рассматривается использование кодов аутентифика-
ции сообщений и функций хэширования, а также цифровых подписей и
сертификатов открытых ключей-
111 .Практика сетевой защиты. Речь идет об основных современных средствах
защиты сетей и обеспечивающих такую защиту приложениях, в том числе о
Kerberos, сертификатах X.509v3, PGP, S/MIME, IP Security, SSL/TLS и SET.
IV .Защита систем. В заключительной части поднимаются вопросы защиты
системного уровня, включая проблемы защиты от нарушителей и вирусов,
вопросы использования брандмауэров и высоконадежных систем.
20
ПРЕДИСЛОВИЕ
Более подробное описание структуры материала книги по главам вы найдете
в конце главы 1. Кроме того, в книге имеется достаточно обширный словарь
терминов, список используемых, аббревиатур и список литературы. В конце мно-
гих глав читателю предлагаются упражнения и проблемы для самостоятельного
анализа, а также ссылки на другие источники информации для дальнейшего
изучения материала
Internet-поддержка для преподавателей и студентов
В Internet имеется соответствующая этой книге Web-страница, созданная в по-
мощь преподавателям и студентам. Здесь вы найдете ссылки на другие полезные
Web-страницы, оригиналы рисунков книги в формате PDF (Adobe Acrobat) и ин-
формацию о том, как добавить свой адрес в соответствующий книге список рас-
сылки Internet. Адрес страницы http://www.shore.net/~ws/Security2e.hlml.
Соответствующий книге список рассылки предназначен для того, чтобы исполь-
зующие книгу преподаватели могли обмениваться информацией, пожеланиями и
задавать друг другу и автору книги вопросы по освещаемой в книге теме. Если в
книге обнаружатся опечатки или ошибки, список соответствующих исправлений
будет размешен по адресу http://www.shore.net/~ws.
проекты практических работ по криптографии и
защите сетей 4
Многие преподаватели считают важным компонентом курсов по криптогра-
фии и защите сетей организацию занятий по применению полученных студента-
ми теоретических знаний на практике. Эта книга предлагает совершенно ориги-
нальную методику дополнения теоретических знаний практическими. Рекомен-
дации преподавателям содержат не только инструкции о том, как разработать
план и организовать такие практические занятия, но и вполне готовые планы
практических заданий, темы которых охватывают широкий диапазон освещен-
ных в книге вопросов. Среди предлагаемых проектов стоит назвать следующие.
Исследовательские проекты. Задания для учащихся, предлагающие про-
вести исследование по конкретным вопросам в Internet и подготовить со-
ответствующий обзор,
Проекты по программированию. Задания по программированию, для вы-
полнения которых можно использовать любой подходящий язык програм-
мирования на любой аппаратной платформе, практически реализующие
решения конкретных проблем.
Задания по изучешпо/реферированню литературы. Списки опубликован-
ных статей, для каждой главы в отдельности, которые можно предложить
учащимся для реферирования с целью углубленного изучения предмета.
Подробности вы найдете в приложении А.
21
ПРЕДИСЛОВИЕ
?Т?Я?овог^воТторомиз3^1Н|Я
За четыре года, прошедших со времени выхода первого издания книги, в об-
ласти криптографии и защиты сетей появился ряд Нчвых идей, вызвавших соот-
ветствующие изменения. В этом новом издании автор постарался учесть все та-
кие изменения, чтобы книга по-прежнему представляла собой широкий и доста-
точна полный обзор по рассматриваемой теме. Перед тем как вносить изменения
в текст, первое издание этой книги было предложено на рецензию ряду профес-
соров, специализирующихся на обучении данному предмету. В результате во
многих случаях изложение материала стало более кратким и ясным, а иллюст-
рации — более совершенными. Был добавлен также ряд новых, прошедших
“испытание временем” практических задач ао рассматриваемой теме.
Самое очевидное изменение отражено в самом заглавии книги — теперь она
называется Криптография и защита сетей, подчеркивая главенствующую роль
алгоритмов криптографии в защите сетей. Компоновка материала книги также
претерпела изменения с тем, чтобы она стала более логичной как с точки зрения
преподавания, так и с точки зрения самостоятельного изучения материала.
Кроме чисто организационных преобразований, призванных улучшить педа-
гогический аспект книги и доступность ее материала читателю, был внесен ряд
изменений и по сути.
Добавлено описание блочных шифров. Три раздела, посвященных струк-
туре блочных шифров, принципам разработки блочных шифров и отличи-
тельным особенностям новейших, самых совершенных шифров этого типа,
значительно усилили материал по традиционным методам шифрования.
Включен анализ ряда дополнительных алгоритмов традиционного шиф-
рования Вы получите представление о новейших алгоритмах, используе-
мых во многих коммерческих программных продуктах и признанных
стандартами в Internet, включая такие алгоритмы, как Blowfish, RC5 и
CAST 128.
а Добавлено описание методов криптографии, основанных на теории эл-
липтических кривых. Такие методы шифрования становятся важной аль-
тернативой RSA и алгоритма Диффи-Хеллмана в области шифрования с
открытым ключом.
Расширен обзор результатов теории чисел. Этот материал занимает теперь
целую главу и включает ряд примеров, раскрывающих суть этой абстракт-
ной темы.
Добавлена информация о хэш-кодах к их применении для создания кодов ау-
тентичности сообщений. Вашему вниманию предложен обзор принципов раз-
работки и защиты функций хэширования и кодов аутентичности сообщений.
Включен обзор ряда дополнительных алгоритмов хэширования и вычис-
ления кодов аутентичности сообщений. Книга теперь содержит анализ но-
вейших алгоритмов, используемых многими коммерческими программны-
22
ПРЕДИСЛОВИЕ
ми продуктами и признанных стандартами в Internet, включая такие ал-
горитмы, как RIPEMD-160 и НМАС.
Расширено описание сертификатов Х.509 и добавлено описание X.509v3.
Сертификаты Х.509 открытых ключей, в частности версии 3, сегодня
предлагаются многими современными программными продуктами и при-
знаны стандартами в Internet.
а Добавлены сведения о S/MIME. S/MIME на сегодня является коммерче-
ским стандартом безопасного обмена электронными сообщениями.
• Включена, глава о защите IP. IPSec представляет собой набор стандартов
для создания защищенных виртуальных частных сетей и защищенного
сквозного обмена данными в Internet. .vA г
• Добавлена глава о защите Web. Защита Web представляет собой один из
важнейших разделов сетевой безопасности, стимулировавший начало мно-
гих новых исследований. В этой главе рассмотрены следующие два глав-
ных стандарта защиты Web
• Протокол SSL (Secure Socket Layer — протокол защищенных сокетов)
и протокол TLS (Transport Layer Security — протокол защиты транс-
портного уровня). В области защиты Web протокол SSL является сего
дня стандартом де-факто, поддерживаемым практически всеми броузе-
рами и серверами, но в последнее время все более широкое признание
как стандарт Internet завоевывает TLS, постепенно вытесняющий SSL.
• Протокол SET (Secure Electronic Transactions — протокол защищен-
ных электронных транзакций). Рост объемов продаж через Internet
свидетельствует о все большей популярности стандарта SET как стан-
дарта безопасности коммерческих сделок.
Добавлена глава о брандмауэрах. Брандмауэры служат для защиты кор-
поративных сетей, подключенных к Internet.
• Предложен дополнительный материал в помощь преподавателям. Руково-
дство для преподавателей, как и прежде, включает решения всех предла-
гаемых в книге задач. Кроме того, включены ряд примеров практических
заданий для учащихся и рекомендации по разработке таких заданий, как
уже упоминалось выше.
Другие изменения.
• Добавлен новый раздел о бент-функциях, которые используются при
построении S-матриц (матриц кодирования) в алгоритмах традиционно-
го шифрования.
• В списки рекомендуемой литературы почти всех глав добавлены ссылки
на Web-страницы, содержащие информацию, которая может оказаться
полезной для лучшего понимания изучаемого материала.
• Добавлены десятки новых задач для самостоятельного решения
23
ПРЕДИСЛОВИЕ
Благодарности-
В этой книге не остались без внимания многочисленные рекомендации экс-
пертов, специалистов в соответствующих областях знаний, потративших массу
своего драгоценного времени на рецензирование книги. Среди тех, кто критиче-
ски прочитал весь или почти весь текст первого издания, Шивакумар Састри
(Shivakumar Sastry) из Rockwell Automation, Алан Шерман (Alan Sherman) из
Университета округа Балтимор штага Мэриленд, Том Данигэн (Tom Dunigan) из
Университета штата Теннеси, Дэн Бонех (Dan Boneh) из Станфордского универ-
ситета и Сашил Джаджодиа (Sushil Jajodia) из Университета Джорджа Мэйсона.
Кроме того, я чрезвычайно признателен за критические рекомендации таких
гуру в своих областях, как Роя Райвест (Ron Rivest) из МТИ (RC5 и MD5), Тим
Мэтьюс (Tun Mathews) из RSA Data Security (S/M1ME), Брюс Шнайер (Bruce
Schneier) из Counterpane Systems (Blowfish), Карлайл Адамс (Carlisle Adams) из
Entrust Technologies (CAST и бент-функпии), Альфред Менезес (Alfred Menezes)
из Университета Ватерлоо (криптография на основе теории эллиптических кри-
вых), Терри Риттер из Ritter Software Engineering (бент-функции), Вильям Дж.
Саттон (William G. Sutton), редактор и издатель журнала Cryptogram
(классические методы шифрования), Авил Рубин (Aviel Rubin) из AT&T Labs
(теория чисел), Барт Пренил (Bart Preneel) из Католического университета
г. Левен (Katholieke Universiteit Leuven) (R1PEMD-160), Майкл Марковиц
(Michael Markowitz) из Information Securitv Corporation (SHA и DSS), Сюдзя Лай
(Xuejia Lai) из R3 Security Engineering AG (IDEA), Дон Дэвис (Don Davis) из
Openvision Technologies (Kerberos), Стив Кент (Steve Kent) (X.5U9), Фил Цим-
мерман (Phil Zimmermann) из Boulder Software Engineering (PGP) и Эд Шейфер
(Ed Schaefer) из Университета Санта-Клара (упрощенный DES).
При составлении руководства для преподавателей свои проекты представили
следующие специалисты: Хеннинг Шульцринне (Henning Schulzrinne) из Уни-
верситета округа Колумбия, Сетин Кайя Кок (Cetin Kaya Кос) из Университета
штата Орегон и Дэвид Бэленсон (David Balenson) из Trusted Information Systems
и Университета Джорджа Вашингтона.
Я хотел бы поблагодарить также тех, кто предложил включить в книгу свои
задачи для самостоятельного решения. Это Люк О'Коннор (Luke O'Connor), Джо-
зеф Касмисс (Joseph Kusmiss) из MITRE, Карл Элиссон (Carl Ellison) из Stratus,
Шунмугавел Раджатинам (Shunmugavel Rajarathinam) и Джозеф Вискоц (Jozef
Vyskoc). Предложенные ими задачи достойны самого Шерлока Холмса.
Имея таких квалифицированных помощников, мне самому делать почти ни-
чего не пришлось. Тем не менее, я с гордостью признаюсь, что все эпиграфы и
цитаты для книги я подобрал сам, без всякой помощи.
24
ПРЕДИСЛОВИЕ
ГЛАВА 1
Введение
В своей совокупности вопросы выбора места, времени и уровня
надежности, которые должны рассматриваться как валовые
элементы теории обороны, делают ладану ее изложения очень
сложной. Поэтому не так просто даже решить, с чего такое
изложение начать
Карл Клаузевиц. О войне
Военное искусство учит нас. полагаться не на то, что против
ник. возможно, не появится, а на нашу готовность встретить
его; полагаться не на то, что он не нападет, а, скорее, на то,
что мы сделали свою позицию неприступной.
Сунь-Цзы. Военное искусство. (The Art of War)
а последние десятилетия толкование термина инфор-
мационная безопасность претерпело два значитель-
ных изменения. До широкого распространения обо-
рудования, предназначенного для автоматизированной об-
работки данных, -защита информации, которую организа-
ция считала важной, обеспечивалась в основном с помощью
физических и административных мер. Физические меры
включали, например, использование снабженного замком
массивного сейфа, в котором хранились важные документы.
Административные меры сводились к проверке личных дел
персонала при приеме на работу.
С появлением и распространением компьютеров и средств
автоматизированной обработки информации возникла потреб-
ность в автоматизированных средствах защиты файлов и дру-
гой хранимой компьютерами информации. Особенно остро потребность в средствах
защиты ощущается в многопользовательских системах, таких как системы с разде-
лением времени, а также в системах, к которым можно получить доступ по обыч-
ным телефонным линиям связи или открытым компьютерным сетям. Поэтому для
описания совокупности методов и средств, предназначенных для зашиты данных и
противодействию хакерам, стал применяться термин компьютерная безопасность.
Второе крупное изменение, повлиявшее на формирование нового подхода к во-
просу о безопасности, произошло в результате появления распределенных систем
обработки данных и использования сетей и коммуникационного оборудования для
обмена данными между пользователями терминалов и центральными компьюте-
рами В этой связи возникла потребность в обеспечении защиты сети, по которой
передаются данные. Здесь следует отметить, что термин сетевая безопасность
подразумевает не одну, отдельно взятую локальную сеть, а некоторую совокуп-
ность сетей предприятий, правительственных учреждений и учебных заведений,
связанных между собой в объединенную сеть обработки данных (internet1).
Между этими двумя формами безопасности — компьютерной и сетевой —
вряд ли можнс провести четкую границу. Например, одним из самых широко
известных типов вмешательства в работу информационной системы является
компьютерный вирус. Вирус может вноситься ь систему как физически, напри-
мер с дискеты, с которой он считывается и попадает в компьютер, так и через
объединенную сеть. Но как бы то ни было, после заражения компьютерной сис-
темы вирусом для его идентификации и удаления приходится использовать ло-
кальные средства компьютерной безопасности.
Данная книга посвящена в основном вопросам защиты и безопасности пере-
дачи информации в объединенных сетях, методам сдерживания, обнаружения и
предотвращения возможных нарушений защиты, а также ликвидации негатив-
ных последствий таких нарушений. Это самая общая формулировка, которая ох-
ватывает ряд различных аспектов. Чтобы дать вам более точное представление о
круге вопросов, поднимаемых в данной книге, рассмотрим следующие примеры
нарушений защиты при передаче данных в сети.
1. Пользователь А передает файл пользователю Б Файл содержит важную
информацию (например, пароль), которая должна быть защищена от раз-
глашения. Пользователь В, не обладающий правом чтения этого файла,
может, отслеживая передаваемые данные, получить копию этого файла в
свое распоряжение.
2. Сетевой администратор Г передает сообщение компьютеру Д, находящему-
ся под управлением этот администратора. Сообщение предписывает ком-
пьютеру Д обновить файл с учетными записями и привилегиями пользова-
телей, которым дается разрешение работать с этим компьютером. Пользо-
ватель Е перехватывает сообщение, меняет его содержимое по своему
усмотрению, а затем пересылает сообщение компьютеру Д, который вос-
1 Термин internet используется я«ми как имя нарицательное, когда речь идет о некогорой со-
вокупности связанных друг с другом локальных сетей. Примером такой совокупности локаль-
ных сетей может быть, например, внутренняя сеть корпорации. А привычная всем сеть
Internet оказывается одним из возможных средств, на основе которых организация может
строить свою сеть internet.
26
ГЛАВА 1 ВВЕДЕНИЕ
принимает модифицированный пользователем Е файл как сообщение, ис-
ходящее от администратора Г, и поэтому вносит соответствующие интере-
сам пользователя Е изменения в таблицу прав доступа.
3. Вместо того чтобы перехватывать сообщение, пользователь Е составляет
собственное сообщение нужного ему содержания и передает его компьюте-
ру Д, маскируя его таким образом, будто оно пришло от администрато-
ра Г. Компьютер Д принимает сообщение как исходящее от администрато-
ра Г и автоматически обновляет файл с таблицей прав доступа.
4. Служащий увольняется из-за дисциплинарного проступка. Менеджер по
персоналу отправляет сообщение серверу с требованием удалить учетную
запись уволенного служащего. После удаления сервер отправляет уведом-
ление в личный файл служащего для подтверждения выполненной опера-
ции. Служащий может перехватить это сообщение и задержать его на
срок, достаточный для того, чтобы в последний раз подключиться к серве-
ру и получить важную информацию. После этого сообщение пересылается,
операция удаления завершается и менеджеру отправляется подтвержде-
ние. Такие действия, выполненные служащим во время последнего сеанса
работы, могут остаться незамеченными достаточно долго
5. Клиент отправляет своему биржевому брокеру сообщение с указанием о
проведении ряда биржевых операций. После падения курсов акций, при-
обретенных для клиента брокером, клиент отказывается от того, что от-
правлял такое сообщение.
Данный перечень далеко не является исчерпывающим, но он достаточно хо-
рошо иллюстрирует, насколько широк диапазон угроз безопасности передачи
информации в сети
Безопасность работы в объединенной сети — предмет настолько увлекатель-
ный. насколько и сложный. Б подтверждение этому можно привести следующие
аргументы
1. Обеспечение безопасности коммуникаций и обмена информацией в сети —
это не такое простое дело, как может показаться на первый взгляд. Основ-
ные требования к обеспечению безопасности передачи информации выте-
кают из обычных соображений здравого смысла и могут быть представле-
ны четырьмя говорящими сами за себя терминами: конфиденциальность,
аутентификация, отсутствие искажений и сохранение целостности. ,
Однако для достаточно глубокого понимания используемых при этом га-
рантирующих безопасность средств требуется значительно больше, чем
простой здравый смысл, поскольку механизмы реализации этих требова-
ний на практике, могут иметь весьма сложную теоретическую подоплеку.
2. Разрабатывая тот или иной механизм или алгоритм защиты, следует обя-
зательно рассмотреть и возможные контрмеры Во многих случаях, чтобы
выявить ускользнувшие от внимания разработчика недостатки и слабые
места системы защиты, нужно взглянуть на проблему с точки зрения про-
тивоположной стороны.
3. Исходя из п.2, процедуры, используемые как те или иные средства защиты,
как правило, не должны основываться только на интуиции. Из самого суще-
1.1. НАРУШЕНИЯ, МЕХАНИЗМЫ И СЛУЖБЫ ЗАЩИТЫ
27
z ствования средств зашиты совсем не следует, что они являются необходимыми
1 во всей их сложности. Применение средств защиты может иметь смысл только
? в контексте существования реального противодействия защите.
4. Имея уже разработанную систему мер обеспечения безопасности, следует
решить, где и когда эти меры применять. Это касается как физического
места применения (например, выбора точки сети, в которой обязательно
нужно применить определенные средства защиты), так и места примене-
ния в логической цепи обеспечения безопасности (например, выбора уров
ня или уровней протокола передачи информации, такого как TCP/IP, на
которых эти средства защиты следует применить).
5. Средства защиты, как правило, представляют собой нечто большее, чем
определенный алгоритм или протокол. Они обычно требуют, чтобы какая-
то часть информации всех заинтересованных в обеспечении безопасности
сторон всегда оставалась секретной (например, была ключом шифра), что
влечет за собой потребность разработки методики создания, распределения
и защиты такой секретной информации. При этом следует также учиты-
вать ограничения используемых протоколов передачи данных, которые
могут вносить дополнительные сложности в задачу разработки механизма
зашиты. Например, если механизм защиты предполагает безусловные ог-
раничения на время передачи сообщения от отправителя получателю, то
любой протокол передачи данных или сеть, допускающие непостоянные и
непредсказуемые задержки, мо1ут сделать такие ограничения практически
бессмысленными.
Таким образом, система обеспечения безопасности представляет собой пред-
мет для глубоких размышлений. Данная глава содержит общий обзор составных
частей этого предмета, которые формируют структуру оставшейся части книги.
Мы начнем с описания типов нарушений защиты, которые, собственно, и обу-
словливают разработку механизмов защиты и создания соответствующих средств
их применения. Затем мы рассмотрим общую модель, охватывающую все такие
средства обеспечения безопасности вместе с их механизмами.
1.1. Нарушения, механизмы и службы защиты
Чтобы понять истинные потребности организации в средствах защиты, а
также оценить и выбрать необходимые средства и систему мер безопасности из
всего имеющегося многообразия мер, менеджеру, отвечающему за обеспечение
безопасности, желательно принять некоторый систематический подход, в рамках
которого можно было бы сформулировать необходимые требования к средствам
защиты и выявить характеристики средств, призванных удовлетворить эти тре-
бования Один из таких подходов состоит в рассмотрении следующих трех ас
пектов защиты информации.
Нарушение защиты. Любое действие, компрометирующее безопасность
хранения и использования принадлежащей организации информации.
Механизм зашиты. Механизм обнаружения и предотвращения нарушений
защиты, а также ликвидации последствий таких нарушений.
28
ГЛАВА 1. ВВЕДЕНИЕ
• Сервисная служба защиты. Сервисная служба, задачей которой является
повышение уровня безопасности систем обработки данных и обмена при-
надлежащей организации информацией. Такие службы предназначены для
противодействия попыткам нарушения защиты на основе использования
одного или сразу нескольких механизмов защиты.
Сервисные службы
По поводу приведенных выше аспектом проблемы обеспечения безопасности
уместно сделать несколько замечаний, но мы рассмотрим эти аспекты в порядке,
обратном тому, в котором они сформулированы. Функции службы защиты мож-
но сравнить с действиями, обычно выполняемыми с реальными документами.
Многие сферы человеческой деятельности, даже такие разные, как коммерция,
внешнеполитические связи, военные операции, личная жизнь и тому подобное,
связаны с использованием документов и обеспечением целостности и достоверно-
сти этих документов каждой из участвующих в обмене информацией сторон До-
кументы обычно скрепляются подписью и помечаются датой, они могут требо-
вать защиты от разглашения, перлюстрации или уничтожения, нотариального
или свидетельского заверения, регистрации или лицензирования и т.д.
С тех пор как использование информационных систем стало жизненно необ-
ходимым для ведения .многих дел, электронная информация взяла на себя роль,
которая традиционно отводилась бумажным документам. Соответственно, те
операции, которые ранее выполнялись при обработке бумажных документов, те-
перь должны выполняться и в отношении документов, существующих в элек-
тронном виде. Однако электронные документы имеют несколько иные, особые
свойства, в результате чего задача выполнения с ними операций, являвшихся
ранее совсем простыми, становится сегодня нетривиальной.
1. В подавляющем большинстве случаев довольно просто отличить ориги-
нальный документ от его ксерокопии. Но электронный документ — это
просто последовательность битов, поэтому нет никакого различия между
'"оригиналом” и любой из его копий.
2. Изменение бумажного документа, как правило, оставляет следы физическо-
го воздействия на этот документ. Например, использование ластика делает
бумагу в месте трения более тонкой или менее гладкой по сравнению с ос-
тальными участками листа. Изменение битов в памяти компьютера или в
потоке передаваемых данных не оставляет никаких физических следов.
3. Процесс заверения физического документа выражается в физических ха-
рактеристиках этого документа (например, в индивидуальности почерка
подписавшего документ лица или в особенностях оттиска печати нотариу-
са). Любое же подтверждение аутентичности электронного документа
должно базироваться на некотором внутреннем доказательстве, заключен-
ном в самой получаемой информации.
В табл. 11 приведен список некоторых из традиционно выполняемых с бу-
мажными документами операций: аналогичные действия требуются и при работе
с электронными документами и сообщениями. Этот список можно рассматривать
как список функций, которые желательно иметь в любой системе, обеспечиваю-
щей защиту данных.
1 1. НАРУШЕНИЯ, МЕХАНИЗМЫ И СЛУЖБЫ ЗАЩИТЫ
Эи
Перечень функций, приведенный в табл. 1.1, слишком длинен и вряд ли мо-
жет служить основой для создания какой-либо реальной системы обеспечения
безопасности. В действительности исследовательские и проектные работы в об-
ласти защиты компьютерных систем и сетей обычно сосредоточиваются на соз-
дании всего трех-четырех основных средств защиты, выполняющих различные
функции, необходимые для создания достаточно надежной системы безопасно-
сти. Один из практически полезных наборов функций, которые должны обеспе-
чиваться соответствующими средствами защиты, выглядит следующим образом/
Конфиденциальность. Гарантия доступа к хранящейся в компьютерной
системе и пересылаемой по каналам связи информации только тем субъек-
там, которые имеют на это право. Доступ в данном случае может означать
возможность распечатать информацию, вывести ее на экран или как-то
иначе ознакомиться с ней. включая даже возможность выявить сам факт
существования информационного объекта.
Таблица 1.1. Некоторые из функций, обеспечивающих общую целостность
информации [SIMM92b]
Идентификация Подтверждение (индоссамент)
Авторизация Ограничение доступа
Лицензирование и/или сертификация Проверка правильности
Подпись Указание, времени создания
Освидетельствование (нотариальное заверение) и Аутентификация
1 Согласова нность Утверждение
Ответствен ноеть Указание авторства
Подтверждение получения Регистрация
Сертификация происхождения и/или поступления Одобрение/неодобревие
Конфиденциальность (секретность)
Аутентификация. Гарантия надежной идентификации источника сообще-
ния или электронного документа, а также гарантии, того, что источник не
является поддельным.
Целостность. Гарантия возможности модификации содержащейся в ком
пьютерной системе и пересылаемой по канолам связи информации только
теми субъектами, которые имеют на это право Модификация в данном
случае может означать операции записи, изменения, изменения состояния,
удаления, создания, задержки или повторного воспроизведения передавае-
мых сообщений.
2
В литературе по безопасности нет единого мнения по поводу используемой терминологии.
Например, термин “целостность" (integrity) иногда служит для обозначения всей совокупности
аспектов обеспечения защиты информации, а термин “аутентификация” (authentication) может
обозначать идентификацию вместе со всеми функциями, отнесенными в панком списке к сред-
ствам обеспечения целостности.
30
ГЛАВА 1. ВВЕДЕНИЕ
Невозможность отречения. Обеспечение невозможности отказа от факта
передачи сообщения ни отправителю, ни получателю.
Управление доступом. Обеспечение возможности контроля доступа к ин-
формационным ресурсам либо самой владеющей ресурсами системой, либо
системой, которой эти ресурсы предоставляются.
Доступность. Обеспечение авторизованным субъектам возможности досту-
па к хранящейся в компьютерной системе информации в любое время при
первой необходимости.
Механизмы защиты
Не существует единого механизма, который мог бы предоставить в наше распо-
ряжение все только что перечисленные средства или выполнять все функции, при-
веденные в табл. 1.1. По мере чтения этой книги вы увидите, что на практике для
достижения целей безопасности используются самые разнообразные механизмы.
Сейчас целесообразно лишь подчеркнуть, что В основе большинства механизмов
защиты лежат методы криптографии. Шифрование или близкое к шифрованию
преобразование информации являются наиболее распространенными методами за-<
щиты данных Поэтому в нашей книге мы сконцентрируем внимание на принци-
пах разработки, использования и управления применением таких методов.
Нарушения
Как ясно показал Дж. Симмонс (G. J. Simmons) в работе [SIMM92aJ, защита
информации сводится к недопущению нарушений или, если это не удается, к .
обнаружению нарушений в несущих информацию системах, независимо от того,
что из себя представляет собственно информация.
Таблица 1.2. Побудительные мотивы нарушений [SIMM92b]
1. Несанкционированный доступ к информации (т.е. нарушение секретности или
тайны личности)
2. Представление себя в качестве другого лица, чтобы избежать ответственности
(т.е. обязательств) либо чтобы использовать правь другого лица с целью
а) отправки фальсифицировав ной информации;
б> модификации имеющейся информации;
в) несанкционированного доступа с помощью фальсифицированных идентифика-
ционных данных;
г) фальсифицированной авторизации транзакций или их подтверждения
3. Уклонение нарушителя от ответственности за созданную им информацию
4. Заявление нарушителя о том, что полученная информация создана не им, а кем-
то другим (т.е. фальсификация источника или ответственности)
5. Заявление нарушителя и том, что им (в определенное время) была отправлена
информация получателю, когда на самом деле информация им отправлена ве бы
ла (или была отправлена в другое время)
1. НАРУШЕНИЯ, МЕХАНИЗМЫ И СЛУЖБЫ ЗАЩИТЫ
31
Окончание табл. 1.2
6. Отрицание факта получения в действительности информации или же искажение
сведений о времени ее получения
7. Расширение полномочий злоумышленника (например, «а получение доступа, соз-
дание информации, ее рассылку и т.п.)
8. Несанкционированное изменение полномочий других пользователей (создание
учетных записей пользователей, oi-раничение или расширение имеющихся у них
полномочий и т.п.)
9 Сокрытие наличия некоторой информации (тайный контакт) в другой информа-
ции (открытый контакт)
10. Внедрение в линию связи между другими пользователями в качестве активного
(неявного) ретранслятора
11. Слежение за тем, к какой информации (источники, файлы и т.п.), кем и в какое
время осуществляется доступ, даже если сама информация остается недоступной
(т.е- анализ потоки данных, передаваемых по коммуникационным каналам к ба-
зам данным, программному обеспечению и т.п.)
12. Комерометания работы протокола обеспечения целостности информации с помо-
щью разглашения сведений, которые (по этому протоколу) должны были хра-
ниться нарушителем в секрете
13. Изменение функций программного обеспечения, обычно с помощью добавления
вызова скрытых функций
14. Провоцирование других на нарушение протокола путем предоставления непра-
вильной информации
15. Подрыв доверия к протоколу путем искусственного создания ситуаций, приводя-
щих к явным отказам системы
16. Создание препятствий взаимодействию других пользователей, например путем
скрытого вмешательства, заставляющего систему прекратить легальный сеанс
связи как нелегальный
В табл. 1.2 перечислены примеры самых очевидных нарушений, которых
часто наблюдаются в тех или иных реальных жизненных ситуациях. Эти нару-
шения представляют краткий перечень типов атак, которым так или иначе при-
ходится противостоять практически всем организациям или отдельным лицам.
Природа атак на принадлежащую организации информацию зависит от многих
обстоятельств. К счастью, посмотрев на проблему со стороны возможностей на-
рушителя, мы получаем вполне обозримую классификацию этих атаки по типам.
Этому вопросу и посвящен следующий раздел.
1.2. Нарушения защиты
Попытки нарушения защиты компьютерной системы или сети .лучше всего
классифицировать, рассматривая функции компьютерной системы как объекта,
предоставляющего информацию. В общем случае мы имеем дело с потоком ин-
формации от некоторого источника, например из файла или области памяти, к
32
ГЛАВА 1. ВВЕДЕНИЕ
адресату информации, например в другой файл или непосредственно к пользова-
телю Нормальный поток информации схематически изображен на рис. 1.1(a).
Остальные части рис. 1.1 представляют следующие четыре типа атак
(нарушений нормального потока информации).
Источник Адресат
информации информации
(а) Нормальный поток
Рис. 1.1. Угрозы безопасности
Разъединение. Ресурс системы уничтожается или становится недоступным
либо непригодным к использованию. При этом нарушается доступность
информации. Примерами такого типа нарушений могут служить вывод из
гтроя оборудования (такого как жесткий диск), обрыв линий связи или
разрушение системы управления файлами.
Перехват. К ресурсу открывается несанкционированный доступ. При этом
нарушается конфиденциальность информации. Получившим несанкциони-
рованный доступ нарушителем может быть физическое лицо, программа
или компьютер. Пиимерами такого типа нарушений могут служить под-
ключение к кабелю связи с целью перехвата данных и незаконное копиро-
вание файлов или программ.
• Модификация. К ресурсу не только открывается несанкционированный
доступ, но нарушитель еще и изменяет этот ресурс. При этом нарушается
целостность информации. Примерами такого типа нарушений могут слу-
жить изменение значений в файле данных, модификация программы с це-
2. НАРУШЕНИЯ ЗАШИТЫ
33
лью изменения ее функций или характеристик, изменение содержимого
передаваемого по сети сообщения и др
Фальсификация. В систему злоумышленником вносится подложный объ-
ект. При этом нарушается аутентичность информации. Примерами такого
типа нарушений могут служить отправка поддельных сообщений по сети
или добавление записей в файл.
Кроме того, заслуживает внимания классификация нарушений в терминах
пассивных и активных атак (рис. 1.2)3
Пассивные нарушения
Пассивные нарушения защиты (пассивные атаки) носят характер перехвата, или
мониторинга, передаваемых данных. Целью нарушителя в этом случае является по-
лучение передаваемой информации. Пассивные нарушения можно условно разделить
на две группы: раскрытие содержимою сообщений и анализ потока данных.
Нго такое раскрытие содержимого сообщений, пояснять не нужно. Телефон-
ный разговор, сообщение электронной почты или пересылаемый файл могут со-
держать важную или конфиденциальную информацию. Было бы желательно,
чтобы с передаваемой информацией не могли ознакомиться те, кому эта инфор-
мация не предназначена.
Второй тип пассивных нарушений — анализ потока данных — более изощрен.
Предположим, что мы используем такой способ маскировки содержимого сообще
ний или других передаваемых данных, что нарушитель, даже по.тучив сообщение
в свое распоряжение, не имеет возможности извлечь содержащуюся в этом сооб-
щении информацию. Чаще всего для маскировки содержимого применяется шиф-
рование. Но даже если шифрование вполне наде.жно скрывает содержимое, у на-
рушителя все еще остается возможность наблюдать характерные признаки переда-
ваемых сообщений. Например, можн^ обнаружить и идентифицировать
отправителя и используемые для отправки сообщений узлы, отследить частоту об-
мена сообщениями и их длину. Такая информация может оказаться ьесьма полез-
ной при попытках определения причин и сути наблюдаемого обмена данными
Пассивные нарушения защиты обнаружить очень трудно, поскольку они не
предполагают каких-либо изменений данных. Но нарушения такого типа вполне
реально предупредить. Поэтому в случае пассивных нарушений зашиты акцент
необходимо делать на их предупреждении, а не обнаружении.
Активные нарушения
Вторым типом нарушений защиты являются активные нарушения (активные
атаки). Эти нарушения связаны с изменением потока данных либо с созданием
фальшивых потоков и могут быть разделены на четыре группы: имитация, вос-
произведение, модификация сообщений и помехи в обслуживании.
3
Для классификации атак в данном разделе принят подход, предложенный Стивом Кентом
(Steve Kent) [KENT77J. Эта классификация не потеряла актуальности и по сей день и по-
прежнему составляет основу большинства описаний нарушений защиты.
34
ГЛАВА 1. ВВЕДЕНИЕ
Раскрытие содержимого сообщений Анализ потока данных
Прерывание
(нарушение
доступности)
Модификация
(нарушение
целостности)
Фальсификация
(нарушение
аутентичности)
Рис 1.2. Активные и пассивные угрозы безопасности сети
Имитация означает попытку одного объекта выдать себя за другой. Обычно ими-
тация выполняется вместе с попыткой активного нарушения какого-нибудь другого
типа. Например, перехватив поток данных аутентификации, которыми обменивают-
ся системы, нарушитель может затем воспроизвести реальную последовательность
аутентификации. что позволяет объекту с ограниченными полномочиями расширить
свои полномочия, имитировав объект, имеющий более широкие полномочия.
Воспроизведение представляет собой пассивный перехват блока данных и по-
следующую повторную передачу перехваченных данных с целью получения не-
санкционированного эффекта.
Модификация сообщений означает либо изменение части легитимного сообще-
ния, либо его задержку, либо изменение порядка поступления сообщений с целью
получения несанкционированного эффекта. Например, сообщение “Разрешить дос-
туп к секретному файлу Бюджет Ивану Иванову” можно преобразовать к виду
"Разрешить доступ к секретному файлу Бюджет Петру Петрову”.
1.2 НАРУШЕНИЯ ЗАЩИТЫ
36
Помехи в обслуживании создают препятствия в нормальном функционирова-
нии средств связи или управлении ими. Такие нарушения могут иметь вполне
конкретную цель. Например, объект может задерживать все сообщения, направ
ленные определенному адресату Другим примером помех в обслуживании явля-
ется блокирование работы всей сети либо путем вывода сети из строя, либо пу-
тем преднамеренной ее перегрузки настолько интенсивным потоком сообщений,
при котором происходит заметное снижение производительности.
Активные нарушения защиты имеют характеристики, противоположные ха-
рактеристикам пассивных нарушений. Если пассивные нарушения трудно обна-
ружить, но существуют методы, позволяющие пассивные нарушения предотвра-
тить, то активные нарушения полностью предотвратить очень непросто, по
скольку это можно осуществить только непрерывной во времени физической
защитой всех средств связи. Поэтому в случае активных нарушений защиты ос-
новной целью должно быть выявление таких нарушений и быстрое восстановле-
ние нормальной работоспособности системы, которая после таких нарушений
может работать медленнее или не работать вообще. В то же время, поскольку
своевременное выявление нарушений, как правило, играет для нарушителя роль
сдерживающего фактора, оно может рассматриваться и как часть системы пре-
дупреждения нарушений.
1.3. Сервисные службы защиты 1Е ЗЯ
Конфиденциальность
Конфиденциальность призвана обеспечить защиту передаваемых данных от
пассивных атак. Ь зависимости от важности содержимого сообщений можно ус-
тановить несколько уровней защиты. В самой широкой форме соответствующая
служба защиты должна обеспечивать защиту всех данных, передаваемых между
любыми двумя пользователями в течение определенного времени. Например, ес-
ли между двумя системами установлена виртуальная связь, такая общая защита
может препятствовать утечке любых пользовательских данных при их передаче.
В более узкой форме служба защиты может обеспечивать защиту отдельных со-
общений или даже отдельных частей сообщений. Такие меры обычно менее по-
лезны, чем осуществление общей защиты, а их реализация в некоторых случаях
может оказаться и более сложной, и более дорогостоящей.
Другим аспектом конфиденциальности является защита потока данных от
возможности его аналитического исследования. Это означает невозможность для
нарушителя обнаружить как источник информации, так и адресата, выяснить
частоту отправки сообщений, их размеры и другие подобные свойства, которыми
они характеризуются в системе связи.
I,
Аутентификация
Сервис аутентификации предназначен для того, чтобы обеспечить надежную
идентификацию подлинного источника информации. В случае единичного сооб-
щения, например извещения или сигнала тревоги, задачей службы аутентифи
кации является проверка и гарантия того, что источником такого сообщения яв-
36
ГЛАВА 1. ВВЕДЕНИЕ
лястся именно тот объект, за который выдает себя отправитель. В случае внеш-
него интерактивного взаимодействия, например при подключении к главному
узлу с терминала, можно выделить два аспекта функционирования таких
средств. Во-первых, в момент подключения средства аутентификации должны
гарантировать, что оба участвующих в сеансе связи объекта аутентичны
(т.е. действительно являются теми, за кого себя выдают). Во-вторых, в ходе по-
следующего обмена данными эти средства должны не допускать того, чтобы на
поток данных могла повлиять какая-либо третья сторона путем имитации, т.е.
представления себя одним из двух законных объектов с целью несанкциониро-
ванной отправки или получения информации.
Целостное гь
Как и конфиденциальность, целостность может относиться к потоку сообще-
ний, отдельному сообщению или даже части сообщения. В этом случае наиболее
целесообразной и прямой дорогой к цели тоже является защита всего потока.
Средства защиты целостности сообщений на основе соединений имеют дело с
потоком сообщений и обеспечивают гарантию того, что принятые сообщения будут
в точности соответствовать отправленным, бел изъятий, дополнений, изменений, в
исходном порядке и без повторений. Таким образом, средства защиты целостности
на основе соединений объединяют в себе средства защиты потока данных от моди
фикации и средства защиты от помех в обслуживании. В то же время средства за
шиты целостности сообщений без установления соединений рассматривают только
отдельные сообщения и обеспечивают только защиту сообщений от модификации.
Как отметил Кент (Kent) в своей работе [KENT93aJ, в некоторых случаях, когда
нет необходимости строго соблюдать исходную последовательности обработки со-
общений, т.е. когда приложение не требует абсолютной защиты от повторений и
изменения порядка, возможны комбинированные решения.
Различают службы, предлагающие и не предлагающие возможность восста-
новления целостности сообщений. Поскольку средства защиты целостности при-
званы противостоять активным атакам, здесь более важным оказывается обна-
ружение, а не предупреждение нарушений Если выявлено нарушение целостно-
сти потока данных, такая служба может только сообщать о нарушении, а
восстановление поврежденной или утраченной информации может выполняться
другими программными средствами или требовать вмешательства оператора. В
других же случаях, которые мы рассмотрим ниже, сами средства обеспечения
целостности могут предполагать наличие некоторого механизма, с помощью ко-
торого утраченная целостность данных должна восстанавливаться автоматиче-
ски. В общем случае использование средств автоматического восстановления яв-
ляется более предпочтительным вариантом.
Невозможность отречения
Средства невозможности отречения должны не позволить отправителю или
получателю отказаться от факта пересылки сообщения. Таким образом, если со-
общение было отправлено не внушающим доверия отправителем, получатель
должен иметь возможность доказать, что сообщение действительно было отправ-
1.3. СЕРВИСНЫЕ СЛУЖБЫ ЗАЩИТЫ
37
лено этим отправителем. Точно так же, когда сообщение получено не внушаю-
щим доверия адресатом, отправитель должен иметь возможность доказать, что
оно этим адресатом было действительно получено.
Управление доступом
В контексте зашиты сетей управление доступом заключается в возможности
ограничивать и контролировать доступ по линиям связи к узлам сети и прило-
жениям. Для осуществления такого контроля необходимо иметь возможность
идентифицировать каждый объект, пытающийся получить доступ к ресурсам,
чтобы каждый такой объект мог иметь в системе свои индивидуальные наборы
полномочий.
Доступность
Многие виды нарушений приводят к недоступности ресурсов или значитель-
ному затруднению доступа к ним. При этом в одних случаях эффективными
оказываются автоматизированные контрмеры, такие как аутентификация и
шифрование, а в других для предупреждения отказов или восстановления дос-
тупности системы могут потребоваться определенные физические действия.
1,4 Модель защитыТсти
Модель, в самых общих терминах описывающая большую часть того, что мы
собираемся рассмотреть в данной книге, показана на рис. 1.3. Пусть требуется
передать сообщение от одной участвующей в передаче стороны к другой через
какую-то связывающую их сеть. Обе стороны, являющиеся инициаторами тран-
закции, должны вступить во взаимодействие, чтобы обмен информацией состо-
ялся. С этой целью создается логический информационный канал, для чего оп-
ределяется маршрут прохождения данных от источника к адресату в сети и со
гласованно обоими инициаторами выбирается для использования
коммуникационный протокол (например, TCP/IP).
Вопросы безопасности возникают в тех случаях, когда необходимо или жела-
тельно обеспечить защиту передаваемой информации от некоторого противника,
который может угрожать конфиденциальности, аутентичности и т.п. В этом слу-
чае любая технология защиты должна включать в себя следующие две состав-
ляющие.
Преобразование отправляемой информации с целью обеспечения защиты.
Примерами таких преобразований являются шифрование сообщения, в ре-
зультате чего противник лишается возможности это сообщение прочесть,
или добавление зависящего от содержимого сообщения кода, по которому
адресат сможет идентифицировать отправителя.
Использование некоторой общей для обоих инициаторов транзакции сек-
ретной информации, которая, как предполагается, неизвестна противнику
Примером такой секретной информации может быть ключ шифра, приме-
38
ГЛАВА 1. ВВЕДЕНИЕ
Заслуживающая доверия
третья сторона
(арбитр, распределитель секретной
информации*
Инициатор
Сообщение —►
Инициатор
Секретная
информация
Информационный
капал
Противник
Секретная
информация
Обеспечивающее
защиту
и реобразивание
-► Сообщение
Обеспечивающее
защит)
преобразование
Рис. / 3. Модель защиты сети
няемый для кодирования сообщения соответствующим преобразованием
перед отправкой и для последующего декодирования после получения.4
Для обеспечения защиты может понадобиться участие третьей стороны, за-
служивающей доверия обоих инициаторов транзакции. Например, третья сторо-
на может осуществлять доставку секретной информации обоим инициаторам,
защищая ее от всех других. Или же третья сторона может требоваться для га-
рантии аутентичности передаваемого сообщения.
Из приведенной на рис. 1.3 общей модели следует, что при разработке конкрет-
ного средства защиты необходимо решить следующие четыре основные задачи.
1. Разработать алгоритм для обеспечивающего защиту преобразования ин-
формации. Алгоритм должен быть таким, чтобы противник не смог разга-
дать его суть.
2. Создать секретную информацию, которая будет использоваться с алгоритмом
3. Разработать методы доставки и совместного использования этой секретной
информации.
4. Выбрать протокол, с помощью которого оба инициатора смогут использо-
вать разработанный алгоритм и созданную секретную информацию, чтобы
обеспечить необходимый уровень защиты.
Значительная часть настоящей книги посвящена рассмотрению различных
механизмов и сервисных служб защиты, укладывающихся в рамки представлен-
ной на рис. 1 3 модели. Однако существуют и другие ситуации, которые отно-
сятся к вопросам обеспечения безопасности и тоже рассматриваются в данной
’ В главе 6 списывается едва из форм шифрования, называемая шифрованием с открытым
ключом, при которой такой секретной информацией достаточно располагать только одному из
инициаторов транзакции
1 4. МОДЕЛЬ ЗАЩИТЫ СЕТИ
39
книге, но не отражаются адекватно этой моделью. Общая модель для таких си-
туаций показана на рис. 1.4, эта модель схематически представляет защиту ин-
формационной системы от нежелательного доступа. Многие читатели слышали о
проблемах, связанных с существованием хакеров, пытающихся проникать в сис-
темы, подключенные к сети. Хакером может быть человек, которому просто
нравится взламывать защиту систем и входить в защищенные системы, без ка-
ких бы то ни было недоброжелательных намерений Но нарушителем может
оказаться и недовольный служащий, решивший нанести ущерб компании, и
преступник, намеревающийся использовать имеющиеся в компьютерной системе
данные с целью обогащения (например, получить номера платежеспособных
кредитных карточек или осуществить незаконный перевод денег).
Еще одним типом нежелательного воздействия является внедрение в компью-
терную систему программной логики, которая использует уязвимые места сис-
темы и вмешивается в работу’ приложений и утилит, например редакторов и
компиляторов. Программы могут создавать угрозы двух следующих типов.
Угроза несанкционированного доступа к информации означает перехват
или модификацию данных пользователями, которые не должны иметь
доступа к этим данным,
Угроза злонамеренного использования сервиса защиты основана на не-
достатках средств защиты и заключается в создании помех в их примене-
нии легальными пользователями.
Примерами нарушений, осуществляемых с помощью программного обеспече-
ния, является использование вирусов и ‘‘червей”. Такие объекты могут вносить-
ся в систему с дискеты, содержащей нежелательную программную логику,
скрытую в другом, полезном программном обеспечении. Нежелательная про-
граммная логика может внедряться в систему и через сеть — такой способ вне-
дрения значительно усложняет задачу защиты сети.
Защитные механизмы, необходимые для противодействия попыткам нежела-
тельного доступа, можно разделить на два больших класса (см. рис. 1.4). За-
щитные механизмы первого класса играют роль “привратника”, которая означа-
ет выполнение требующих паролей процедур входа в систему, предназначенных
для запрета досгупа всем, кроме легальных пользователей, а также использова-
ние экранирующей программной логики, предназначенной для выявления и пре-
сечения попыток внедрения в систему “червей”, вирусов и других подобных объ-
Информацвонная система
Противник
— человек
(например, взломщик)
— Программное обеспечение
(например, вирус, червь)
Канал доступа Функция
«привратника
Вычислительные ресурсы
(процессор, память,
устройства внода/вывода)
Данные
Процессы
Программное обеспечение
Внпренние средства шщпты
Рис. 1.4 Модель защиты доступа к сети
40
ГЛАВА 1. ВВЕДЕНИЕ
ектов Если же нарушителю или программному обеспечению все же удалось по-
лучить доступ к системе, должна сработать “вторая линия обороны”, состоящая
из различных внутренних средств контроля, отслеживающих основные характе-
ристики системы и анализирующих хранящуюся в системе информацию с целью
обнаружения присутствия нарушителей.
1.5. Обзор содержания книг и flHHBHBHBHHHI
Поскольку предполагается, что эта глава должна обеспечить вводное знаком-
ство со всем материалом книги, ниже дано краткое описание остальных глав.
Традиционное шифрование: классические мет оды
Пожалуй, самым важным автоматизированным средством защиты сети и
коммуникаций является шифрование. Сегодня широко распространено два типа
шифрования: традиционное, или симметричное, и шифрование с открытым
ключом, или асимметричное. В главе 2 описываются классические методы тра-
диционного шифрования. Она представляет собой понятное и интересное введе-
ние в криптографию и криптоанализ, содержащее определения и разъяснения
целого ряда важных понятий.
,о-
Традиционное шифрование: современные методы и алгоритмы
В главе 3 излагаются принципы современной симметричной криптографии с
акцентом на идиом наиболее широко используемом сегодня методе — стандарте
DES (Data Encryption Standard — стандарт шифрования данных). В главе затрону-
ты вопросы создания шифров, криптоанализа, а также рассмотрена структура
шифра Файстеля (Feistel), на основе которого строится большинство современных
схем традиционного шифрования. Изложение этой темы продолжается в главе 4,
где описаны наиболее важные из современных алгоритмов блочного шифрования.
Традиционное шифрование и конфиденциальность
Кроме проблем, которые приходится решать при проектировании реальных
алгоритмов традиционного шифрования, немало дополнительных вопросов воз-
никает и при использовании традиционного шифрования для обеспечения кон-
фиденциальности. В главе 5 мы займемся наиболее важными из этих вопросов.
Здесь сравниваются методы оперативного шифрования и шифрования в канале
связи, технологии обеспечения конфиденциальности в потоке данных, а также
методы распределения ключей. Там же поднимается и такой важный вопрос,
как генерирование случайных чисел, имеющий непосредственное отношение к
основной теме главы
Криптография с открытым ключом
Другой важной формой шифрования, помимо традиционного, является шиф-
рование с открытым ключом, вызвавшее своего рода революционный прорыв в
области защиты коммуникаций. Глава 6 предлагает введение в предмет и кон-
1.5. ОБЗОР СОДЕРЖАНИЯ КНИГИ
41
центрирует внимание на особенностях использования шифрования с открытым
ключом для обеспечения конфиденциальности. Подробно описан алгоритм Рай-
веста- Шамира-Адлемана (RSA — Rivest-Shamir-Adleman) и снова рассматрива-
ются вопросы, связанные с управлением ключами. Там же вы найдете изложе
ние широко используемой методики обмена ключами Диффи-Хеллмана (Diffie-
Hellman) и краткое описание самых последних методов шифрования с открытым
ключом, построенных на использовании теории эллиптических кривых.
Введение в теорию чисел
Большинство схем шифрования с открытым ключом базируется на результа-
тах теории чисел. Хотя читатель может принять соответствующие результаты
теории чисел на веру, ему будет полезно иметь хотя бы общее представление о
наиболее важных из используемых В теории чисел идей. Глава 7 содержит обзор
этих идей и множество иллюстрирующих их примеров.
Аутентификация и функции хэширования
Аутентификация не менее важна, чем конфиденциальность. Как минимум, ау-
тентификация дает гарантию того, что сообщение действительно поступило из
предполагаемого источника. Кроме того, аутентификация может обеспечивать за
щиту от модификаций, задержек, повторного воспроизведения и изменения по-
рядка следования сообщений. Глава 8 начинается с анализа требований, выдви-
гаемых к аутентификации, а затем представляет систематический перечень подхо-
дов, используемых для аутентификации. Ключевым элементом любой схемы
аутентификации является применение аутентификатора, в роли которого обычно
выступает код аутентичности сообщения (МАС — Message Authentication Code)
или значение некоторой функции хэширования. В главе рассматриваются вопросы
разработки алгоритмов, построенных на использовании таких аутентификаторов, и
анализируется ряд соответствующих примеров. В главе У обсуждаются некоторые
из наиболее важных современных функций хэширования и алгоритм НМАС. пред-
ставляющий стандарт вычисления значений МАС для Internet.
Цифровые подписи и протоколы аутентификации
Одним из важных средств аутентификации является цифровая подпись. В
главе 10 излагается методика создания цифровых подписей и описан стандарт
DSS (Digital Signature Standard — стандарт цифровой подписи).
Различные методы аутентификации, построенные на использовании цифровой
подписи, являются строительными блоками, применяемыми в более сложных ал-
горитмах аутентификации. Разработка таких алгоритмов подразумевает анализ
хитроумных атак, в результате которых нарушители смогли обойти многие кажу-
щиеся защищенными протоколы. Эта проблема также затрагивается в главе 8.
Приложения аутентификации
Глава 11 представляет собой обзор двух наиболее важных из всех используемых
на сегодняшний день стандартов аутентификации. Kerberos является протоколом
аутентификации, построенным на традиционном шифровании, получившим птиро-
42
ГЛАВА 1. ВВЕДЕНИЕ
кое распространение и используемым во многих системах. Протокол Х.509 опре
деляет алгоритм аутентификации и средства сертификации. Он дает пользовате-
лям возможность получить сертификаты открытых ключей, обеспечивающие со-
обществу пользователей уверенность п надежности этих открытых ключей. Этот
протокол включен в качестве базового средства во многие приложения.
Защита электронной почты
Электронная почта является самым широко используемым распределенным
приложением, в связи с чем наблюдается постоянно растущий интерес к средствам
обеспечения аутентификации и конфиденциальности как составляющим средств
обмена электронной почтой. В главе 12 рассмотрено два подхода, которые, скорее
всего, будут доминировать в обеспечении безопасности электронной почты в бли-
жайшем будущем PGP (Pretty Good Privacy — достаточно хорошая конфиденци-
альность) является широко распространенной схемой защиты, не зависящей от
какой-либо организации или органа власти. Поэтому она подходит как дня инди-
видуального пользования, так и для включения в конфигурацию сети любой орга-
низации. S/M1ME (Secure,'Multipurpose Internet Mail Extension — защищенные
многоцелевые расширения электронной почты в сети Internet) представляет собой
схему защиты, специально разработанную в качестве стандарта Internet.
Защита на уровне IP
Протокол IP (Internet Protocol — протокол межсетевого взаимодействия) —
центральный элемент Internet и частных ибъединенных сетей. Поэтому безопас-
ность на уровне 1Р оказывается важным элементом любой схемы обеспечения
защиты объединенных сетей. В главе 13 содержится обзор схемы защиты IP, ко-
торая была разработана для использования как с применяемым сегодня стандар-
том IP, так и с новым стандартом, получившим имя IPv6-
Защита Web
Взрывной рост популярности World Wide Web для электронной коммерции и
распространения информации привел к возникновению острой необходимости в
обеспечении защиты соответствующих данных в Web. Описание результатов ис-
следований в этой новой важной области вы найдете в главе 14. В центре внима-
ния — два ключевых стандарта защиты Web: SSL (Secure Sockets Layer — про-
токол защищенных сокетов) и SET (Secure Electronic Transaction — протокол
защищенных электронных транзакций).
Нарушители и вирусы
В главе 15 содержится описание различных угроз нарушения правил доступа к
информации и сервисным службам защиты, которые исходят от хакеров и про-
грамм, использующих слабые места защиты сетевых компьютерных систем. В на-
чале главы перечислены типы атак, которые могут предприниматься нарушителя-
ми или злоумышленниками, и проанализированы различные методы обнаружения
и предотвращения таких атак. Оставшаяся часть главы посвящена угрозе, исхо-
дящей от нежелательной программной логики, в частности от вирусов.
1.5. ОБЗОР СОДЕРЖАНИЯ КНИГИ
43
Брандмауэры
Стандартный подход к защите ресурсов локального компьютера от внешней
угрозы заключается в использовании брандмауэра. Глава 16 ноевящена принци-
пам проектирования брандмауэров и предлагает вниманию читателей некоторые
конкретные методики.
Т^ГФеколлендуемые источники дополнительной
информации
В книге |PFLEy7] содержится хорошее введение в предмет защиты компьюте-
ров и сетей. Другим неплохим источником информации по данной теме является
[ABRA95].
ABRA95 Abrams, М.; Jajodia S.; and Podell, H., eds. Information Security An Integral Col
lection of Essays. Los Alamitos, CA: IEEE Computer Secunty Press, 1995
, PFLE97 Pfleeger, C Secunty in Computing Upper Saddle River, NJ Prentice Hall, 1997.^^
Дополнение 1A, Ресурсы Internet и
В Internet и Web имеется множество ресурсов, содержащих сведения, допол-
няющие материал данной книги и позволяющие всегда быть в курсе последних
достижений в области защиты компьютерных систем.
Web-узлы данной книги
Для поддержки читателей книги был создан специальный Web-узел по адресу
http://www.shore.nec/~ws/Security2e.ncml. На этом узле содержится сле-
дующая информация.
Ссылки на другие Web-узлы, включая и узлы, перечисленные в данном
дополнении, с помощью которых можни быстро найти ресурсы Web, по-
священные защите сетей.
Большинство рисунков данной книги в формате PDF (Adobe Acrobat).
Информация о том, как ввести свое имя в соответствующий книге список
рассылки.
• Кроме того, я надеюсь, что у меня будет возможность разместить ссылки
на курсы, которые читаются на базе данной книги. Такие ссылки могут
быть полезными для других преподавателей с методической точки зрения.
По мере выявления в кнш'е опечаток и других ошибок перечень исправлений
можно будет найти по адресу http://www.shore.net/~ws. Данный перечень бу-
дет постоянно обновляться.
44
ГЛАВА 1 ВВЕДЕНИЕ
Другие Web-узлы
Существует также множество других Web-узлов, которые предла1ают интерес-
ные сведения, дополняющие материал данной книги. Вот лишь некоторые из них.1
COAST. Очень обширный перечень ссылок на узлы, посвященные крипто-
графии и загните сетей.
IETF Security Area. Постоянно обновляемые сведения о стандартах на
средства обеспечения безопасности в Internet.
Computer and Network Security Reference Index. Хороший справочник по
поставщикам и коммерческим продуктам, ответы на часто задаваемые во-
просы, архивы групп новостей, статьи и ссылки на другие Web-узлы.
The Cryptographv FAQ. Обширный и заслуживающий внимания список отве-
тов на часто задаваемые вопросы, охватывающий все аспекты криптографии.
Tom Dunigan’s Security Page. Прекрасный перечень ссылок на Web-узлы,
посвященные криптографии и защите сетей.
JEEE Technical Committee on Security and Privacy. Копии информацион-
ных бюллетеней и сведения о деятельности IEEE.
В последующих главах ссылки на Web-узлы, посвященные тем или иным
конкретным темам, будут приводиться с разделе “Рекомендуемые источники до-
полнительной информации”.
Группы новостей USENET
Различным аспектам безопасности сетей или криптографии посвящено мно-
жество групп новостей. Как и для всех других групп новостей, для них характе-
рен слишком низкий уровень соотношения “сигнал/шум”, затрудняющий поиск
нужной информации в потоке малоинтересных сообщений. Поэтому проверить,
удовлетворяет ли ваши запросы какая-то из групп новостей, можно только экс-
периментально. К теме данной книги имеют непосредственное отношение сле-
дующие группы новостей.
aci.crypt. Общая дискуссия по криптологии и связанным с ней темам.
sci. crypt research. Лучшая группа, на мой взгляд. Эта модерируемая
группа включает новости о проводимых исследованиях; публикуемые в ней
статьи должны иметь отношение к техническим аспектам криптологии.
alt security. Общее обсуждение тем, связанных с безопасностью.
» comp security.firewalls. Общее обсуждение брандмауэров и техноло-
гии их использования.
Поскольку адреса Web узлов время от времени меняются, я не привожу их в этой книге Все ад-
реса узлов, упомянутых здесь и далее, можно найти на Web-узле, посвященном данной книге
ДОПОЛНЕНИЕ 1А. РЕСУРСЫ INTERNET И WEB
45
Традиционное
шифрование
ГЛАВА
Традиционное
шифрование:
классические
методы
AIhwuc rputrtni-juwu/kz i-C'odiM дикие n чечена --umami «я» ил^пь
смлемой частью человека, в связи с чем дикари тщательно скрыва-
ют свои реальные имена, чтобы не дать одержимому злыми духами
человеку возможность нанести вред обладателю имени.
Джеймс Джордж Фрейзер. Золота» ьетвь (The Golden Bough)
Традиционное шифрование, которое также называется
симметричным шифрованием, или шифрованием с
одним ключом, до изобретения шифрования с от-
крытым ключом было единственным методом шифрова-
ния." Сегодня этот метод по-прежнему остается самым рас-
пространенным. Данная глава и две последующие содержат
описания и анализ целого ряда алгоритмов, построенных на
схеме традиционного шифрования. Некоторые проблемы,
возникающие при использовании ключей для традиционно-
го шифрования, затронуты в главе 5
1 Шифрование с открытым ключом было впервые описано в открытой
литературе в 1976 г. Представители NSA (National Security Agency —
Агентство национальной безопасности США) заявляют, что специали-
сты NSA разработали этот метод несколькими годами раньше.
Мы начнем с рассмотрения общей модели процесса традиционного шифрова-
ния — это поможет в дальнейшем понять контекст, в котором применяются
конкретные алгоритмы. Затем мы перейдем к алгоритмам, которые существова-
ли в докомпьютерную эпоху. В главе 3 рассматривается DES — самый популяр-
ный. из современных алгоритмов шифрования.
2.1. Модель традиционного шифрования
На рис. 2,1 показана схема процесса традиционного шифрования. Исходное ос-
мысленное сообщение, обычно называемое открытым текстом, преобразуется в
бессмысленную на вид последовательность символов, называемую шифрованным
текстом. Процесс шифрования состоит в использовании алгоритма и некоторого
ключа. Ключ — это значение, не зависящее от открытого текста. Результат, дости-
гаемый при выполнении алгоритма, зависит от применяемого при этом ключа.
Изменение ключа приводит к изменению результата выполнения алгоритма.
Полученный шифрованный текст можно пересылать получателю, После по-
лучения шифрованного текста адресатом текст можно снова преобразовать в от-
крытый с помощью соответствующего алгоритма дешифрования и того же клю-
ча, который применялся при шифровании.
Надежность традиционного шифрования зависит от нескольких факторов. Во-
первых, алгоритм шифрования должен быть достаточно сложным, чтобы невоз-
можно было расшифровать сообщение при наличии только шифрованного текста.
Во-вторых, основным фактором надежности традиционного шифрования является
секретность ключа, в то время как сам алгоритм может быть и несекретным. По-
этому предполагается, что должна быть обеспечена практическая невозможность
расшифровки сообщения на основе знания шифрованного текста, даже если извес-
тен алгоритм шифрования/дешифрования. Другими словами, не требуется обеспе-
чивать секретность алгоритма — достаточно обеспечить секретность ключа.
Именно эта особенность схемы традиционного шифрования обусловливает ее
широкую популярность и признание. Отсутствие необходимости хранить в сек-
рете алгоритм дает производителям возможность реализовать алгоритмы шифро-
Секретный ключ,
известный отправителю
и адресату
Секретный ключ,
навес тный от права re.no
к адресату
открытый
текст
Атг-тритч
шифрования
(например, UES)
Пересылаемый
шифрованный текст
открытый
текст
Алгоритм
дешифрования
(обращение алгоритма
Шифрования)
Рис. 2.1. Упрощенная модель традиционного шифрования
2.1. МОДЕЛЬ ТРАДИЦИОННОГО ШИФРОВАНИЯ
49
вания данных в виде дешевых общедоступных микросхем, которыми оснашены
сегодня многие современные системы. При использовании традиционного шиф-
рования основная проблема обеспечения безопасности заключается в надежном
сохранении секретности ключа.
С помощью рис. 2.2 давайте рассмотрим основные элементы схемы традици-
онного шифрования подробнее. Источник создает сообщение в форме открытого
текста Х = [Х,,Х...Хы ]. Элементами X, открытого текста X являются симво-
лы некоторого конечного алфавита. Традиционно использовался алфавит, со-
стоящий из 2G прописных букв английского языка, во сегодня чаще применяет-
ся двоичный алфавит {0,1} . Для шифрования генерируется ключ в форме
К = [К1,К?,,..,К7]. Если ключ генерируется там же, где и само сообщение, го
ключ тоже необходимо переправить получателю сообщения по каким-то секрет-
ным каналам- Другим решением может быть создание ключа третьей стороной,
которая должна защищенным способом обеспечить доставку ключа как отправи-
телю, так и получателю сообщения.
При наличии в качестве исходных данных сообщения X и ключа шифрования
К с помощью алгоритма шифрования формируется шифрованный текст
Y = [¥„¥„...,¥„], Это можно записать в виде формулы
Y = Ех(Х).
Данная нотация означает, что Y получается путем применения алгоритма
шифрования Е к открытому тексту X при использовании ключа К.
Предполагаемый получатель сообщения, располагая ключом К, должен иметь
возможность выполнить обратное преобразование
X = DJY).
Рис. 2.2. Модель традиционной, криптосистемы
50
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ. КЛАССИЧЕСКИЕ МЕТОДЫ
Противник, обладающий возможностью ознакомится с Y, но не имеющий
доступа ни к К. ни к X, может попытаться восстановить X или К или сразу оба
эти объекта. При этом подразумевается, что противник знает и алгоритм шиф-
рования (Е), и алгоритм дешифрования (D). Если прогиинпк заинтересован рас-
познать только одно конкретное сообщение, ему следует сосредоточить свои уси-
лия на восстановлении X путем построения вероятно соответствующего исходно-
му открытого текста X , Однако чаще противник бывает заинтересован в
получении возможности читать и все последующие сообщения. В этом случае его
основные усилия должны быть сосредоточены на восстановлении К путем по-
строения вероятно соответствующего исходному ключа К .
Криптография
Классификация криптографических систем в общем случае строится на осно-
ве следующих трех независимых характеристик.
1. Тип операций по преобразованию открытого текста в шифрованный. Все
алгоритмы шифрования основываются на использовании двух операций;
замены, означающей замещение каждого элемента открытого текста (бита,
буквы, группы битов или группы букв) некоторым другим элементом, и
перестановки, означающей изменение порядка следования элементов от-
крытого текста. При этом главным требованием оказывается отсутствие
потерь информации (т.е. обратимость всех операций). В большинстве ре-
альных систем шифрования применяют не одну, а комбинацию несколь-
ких операций замены и перестановки. Соответствующие шифры называют-
ся продукционными,
2. Число применяемых ключей. Если и отправитель, и получатель использу-
ют один и тот же ключ, система называется симметричной, системой с од-
ним ключом, системой с секретным ключом или схемой традиционного
шифрования. Если отправитель и получатель используют разные ключи,
система называется асимметричной, системой с двумя ключами или схе-
мой шифрования с открытым ключом.
3. Метод обработки открытого текста. Блочное шифрование предполагает об-
работку открытого текста блоками, так что в результате обработки каждо-
го блока получается блок шифрованного текста. Поточное шифрование
подразумевает шифрование всех элементов открытого текста последова-
тельно, одного за другим, в результате чего на каждом этапе получается
по одному элементу шифрованного текста.
Криптоанализ
Процесс воссоздания значений X или К, или и того, и другого, называется
криптоанализом. При этом используемая криптоаналитиком стратегия зависит
от схемы шифрования и от информации, имеющейся в его распоряжении.
В табл. 2.1 приведен обобщенный перечень различных типов криптоанализа в
зависимости от имеющейся у криптоаналитика информации. Самой сложной за-
дачей из всех представленных в таблице является случай, когда в распоряжении
2.1. МОДЕЛЬ ТРАДИЦИОННОГО ШИФРОВАНИЯ
61
Таблица 2.1. Липы криптоанализа шифрованных сообщений
Тип криптоанализа Данные, известные криптоаналитику
Анализ только шифрованного текста 'Алгоритм шифрования Подлежащий расшифровке шифрованный текст
Анализ с извест- ным открытым текстом Алгоритм шифрования Подлежащий расшифровке шифрованный текст Одна или несколько пар соответствующих фрагментов открыто- го и шифрованного текста, созданного с одним и тем же сек- ретным ключом
Анализ с избран- ным открытым текстом Алгоритм шифрования Подлежащий расшифровке шифрованный текст Выбранный криптоаналитиком открытый текст и соответствующий шифрованный текст, созданный с помощью секретного ключа
Анализ с избран- ным шифрован- ным текстом Алгоритм шифрования ь Подлежащий расшифровке шифрованный текст Выбранный криптоаналитиком шифрованный текст и соответ- ствующий открытый текст, расшифрованный с помощью сек- ретного ключа
Анализ с избран- ным текстом Алгоритм шифрования Подлежащий расшифровке шифрованный текст Выбранный криптоаналитиком открытый текст и соси веге вующиЙ шифрованный текст, созданный с помощью секретного ключа Выбранный криптоаналитиком шифрованный текст и соответ- ствующий открытый текст, расшифрованный с помощью сек- ретного ключа
криптоаналитика есть только шифрованный текст. В некоторых случаях быва-
ет неизвестен даже алгоритм шифрования, но в основном можно предполагать,
что алгоритм шифрования противник знает. При этих условиях один из воз-
можных подходов криптоанализа заключается в простим переборе всех возмож-
ных вариантов ключей. Однако если пространство возможных ключей очень ве-
лико, такой подход становится нереальным. Поэтому противнику приходится
больше полагаться на анализ самого шифрованного текста, что, как правило, оз-
начает выявление его различных статистических особенностей. Для этого про-
тивник должен иметь некоторые общие предположения о содержимом открытого
текста, например о том, что он написан на английском или французском языке,
что это исполняемый файл MS DOS, что это исходный код программы на языке
Java, что это файл с информацией о банковских счетах и т.п.
Попыткам взлома при наличии у противника только шифрованного текста
противостоять Легче всего, так как объем имеющейся у него информации в дан-
ном случае минимален. Однако довольно часто аналитику бывает известно
больше. Нередко такой специалист имеет возможность перехватить одно или не-
52
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
скольких открытых сообщений вместе с соответствующими им шифрованными *
текстами. Или же аналитик может знать о том, что в сообщении обязательно
должны присутствовать те или иные наборы символов. Например, файл в фор-
мате Postscript всегда начинается одной и той же последовательностью симво-
лов, в файле может присутствовать стандартный заголовок или идентификатор
сообщения об электронном переводе денег и т.п. Все это примеры известного
открытого текста. Владея подобной информацией, аналитик может восстано-
вить ключ шифрования на основе логических умозаключений и знания того, ка-
ким образом преобразовывался известный открытый текст.
Родственной по отношению к задаче криптоанализа с известным открытым
текстом является задача криптоанализа с вероятно известными словами. Если
противник вообще не имеет представления о теме сообщения, ему будет трудно
решить, в каком направлении вести поиск. Однако если он знает какую-то спе-
цифичную информацию о содержимом сообщения, часть сообщения может ока-
заться для него с большой вероятностью известной. Например, если известно,
что пересылаемый файл содержит информацию о банковских счетах, противник
может догадаться, как должны располагаться определенные слова в заголовке-
этого файла. А исходный код программы, разработанной некоторой компанией
X, может содержать информацию об авторских правах, для которой в програм-
мах этой компании может всегда выбираться одна и та же стандартная позиция.
Если у аналитика имеется возможность тем или иным способом получить
доступ к системе, сгенерировавшей сообщение, чтобы пропустить через нее вы-
бранное сообщение, то в этом случае аналитик получает возможность провести
криптоанализ с избранным открытым текстом. Такая стратегия используется,
например, в дифференциальном криптоанализе, речь о котором пойдет в главе 3.
В общем случае, если криптоаналитик имеет возможность по своему усмотрению
выбрать сообщение и шифровать его, то при правильном выборе сообщений для
шифрования он может вполне оправданно надеяться разгадать ключ.
В табл. 2.1 упоминается еще две разновидности криптоанализа: анализ с избран-
ным шифрованным текстом и анализ с избранным текстом. Они используются реже,
но в арсенале криптоаналитика тоже представляются теоретически возможными.
Лишь относительно слабые алгоритмы могут быть взломаны при анализе
только шифрованного текста. В общем случае любой алгоритм шифрования раз-
рабатывается так, чтобы он был устойчив к попыткам взлома с помощью анали-
за с известным открытым текстом.
Здесь уместно дать два определения. Схема шифрования называется безус- >
ловко защищенной (абсолютно стойкой), если порожденный по этой схеме шпф- ,
рованный текст не содержит информации, достаточной для однозначного восста-
новления соответствующего открытого текста, какой бы большой по объему
шифрованный текст ни имелся у противника. Это означает, что независимо от
того, сколько времени потратит противник на расшифровку, ему не удастся
расшифровать шифрованный текст просто потому, что в шифрованном тексте
нет информации, требуемой для восстановления открытого текста. Среди алго-
ритмов шифрования абсолютно стойких нет, за исключением так называемой
лентой однократного использования (или схемы с одноразовым блокнотом), опи-
санной в этой главе ниже. Таким образом, максимум, чего может ожидать поль-
2.1 МОДЕЛЬ ТРАДИЦИОННОГО ШИФРОВАНИЯ
53
зователь от того или иного алгоритма шифрования, это выполнения хотя бы од
ного из двух следующих критериев защищенности.
г Стоимость взлома шифра превышает стоимость расшифрованной информации.
, Время, которое требуется для того, чтобы взломать шифр, превышает вре-
мя, в течение которого информация актуальна.
Схема шифрования называется защищенной по вычислениям, если она соот-
ветствует обоим указанным критериям. Единственная проблема здесь в том, что
весьма непросто количественно оценить те усилия, которые необходимы для ус-
пешного криптоанализа шифрованного текста, созданного на основе данной кон-
кретной схемы шифрования
В качестве первого приближения мы оценим время, необходимое для простого
перебора всех возможных вариантов ключей до тех пор, пока из шифрованного
текста не будет получен какой нибудь постижимый открытый текст. В среднем
для этого нужно перебрать примерно половину всех вариантов ключей. В табл. 2.2
показано, сколько времени уйдет на перебор в зависимости от размеров простран-
ства возможных ключей. В первых строках таблицы приведены результаты для
трех двоичных ключей разной длииы. Ключи размером 56 битов используются в
алгоритме DES. В последней строке таблицы приведены оценки для так называе-
мых подстановочных кодов, являющихся 26-символьными ключами, представ-
ляющими собой перестановки последовательности из 26 символов (подстановочные
коды тоже будут рассмотрены ниже). Среднее время, необходимое для нахождения
ключа, зависит от длины ключа. Приведенные в таблице величины интервалов
времени рассчитывались в предположении, что на одну попытку расшифровки
уходит 1 мс (что является вполне реальным для современных компьютеров). При
использовании машин с параллельной архитектурой можно достичь гораздо луч-
ших показателей, поэтому в последнем столбце табл. 2.2 приведены результаты
некоторой гипотетической системы, которая в состоянии проверить 1 млн ключей
за 1 мс. Как видно из таблицы, при такой производительности алгоритм DES уже
нельзя считать защищенным по вычислениям.
Все формы криптоанализа для схем традиционного шифрования разрабатыва
ются на основе того факта, что некоторые характерные особенности структуры от-
крытого текста могут сохраняться при шифровании, проявляясь в соответствую-
щих особенностях структуры шифрованного текста. Это станет очевидным после
того, как мы с вами ознакомимся с различными схемами традиционного щифро-
Таблица 2.2. Среднее время анализа при простом переборе ключей
Длина ключа, битов Число различных ключей Необходимое время при скорости 1 шифрование/мс Необходимое врем* при скорости 10’ шифрований/мс
32 2м = 4,3 х 10” 231 мс = 35,8 мив 2,15 мс
56 г5” = 7.2 х 1О10 255 мс = 1142 года .10,01 часа
128 2128 = 3,4 х 1038 мс = 5,4 х Ю24 лет 5,4 х 1018 лет
26 символов (перестановка) 261 = 4 х 10“ 2x1026 мс = 6,4 х 1012 лет 6,4 х 10lf лет
54
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ; КЛАССИЧЕСКИЕ МЕТОДЫ
вания. А вот криптоанализ для схем с открытым ключом, как станет ясно из .ма-
терима главы 6, базируется на совершенно другом предположении — на том, что
математические зависимости, связывающие пары ключей, дают возможность с по-
мощью логических рассуждений, зная один из ключей, найти второй.
2.Z Стеганография^!
Мы начнем обсуждение с описания технологии, которая, строго говоря, шиф-
рованием не является, — со стеганографии.
Для того чтобы скрыть информацию сообщения, содержащего открытый текст,
есть два пути. Методы стеганографии скрывают сам факт существования сообще-
ния, тогда как методы криптографии с помощью различных преобразований тек-
ста делают содержимое сообщения для посторонних непонятным/ Место стегано-
графии в спектре методов защиты информации раскрывается в заимствованной из
[KAHN96] табл. 2.3. Согласно предложенной Капом (.Kahn) терминологии, защита
(security) определяется как совокупность методов маскировки информации, а раз-
ведка (intelligence) — как совокупность методов получения информации.
Одной из самых простых форм стеганографии (но требующей значительных
затрат времени) является такая расстановка слов или букв кажущегося на пер-
вый взгляд совершенно безобидного открытого текста, чтобы этот текст на самом
деле нес в себе определенное скрытое сообщение. Например, скрытое сообщение
может образовываться первыми буквами каждого слова открытого сообщения,
На рис. 2 3 показан пример, в котором скрытое сообщение пересылается в виде
подмножества слов в содержащем его более длинном сообщении.
Таблица 2.3. Методы защиты сигналов и соответствующие методы разведки
Защита сигналов Разведка сигналив
Защита сообщений Разведка сообщений
Стеганография (невидимые чернила, откры тые коды, сообщения в каблуках с тайными полостями; Псрехваг
Криптография (коды и шифры) Криптоанализ
Защита потока данных (изменение позыв- ных, ложные сообщения) Анализ потока данных (изучение потока со- общений, сбор наведенных радиосигналов)
Электронная защита Электронная разведка
Защита электромагнитного излучения (сдвиг по частоте, разнос по спектру) Электронное "прощупывание” (подслушивание)
Активное противодействие (передача по каналам с преднамеренными помехами) Контрмеры (создание преднамеренных помех и фальшивых отражений сигнала)
2
“Стеганография” (steganograpby) — это устаревшее слово, которое было снова введено в оби-
ход Дэвидим Каном (David Kahn) в том смысле, в котором оно употребляется в настоящее вре-
мя [KAHN96J.
2.2. СТЕГАНОГРАФИЯ
55
3rd Marek
Feas ^eorye.
greetings to all at Oxford Many thanksfor your
letter and for the, summer e-x aminationpackage
All Entry Forms and Fees Forms should be, ready
Jor final despatch, to the Syndicate by Friday
20th, or at the tery latest, I'm told by the 21 st.
Admin, has improised here, ttwayk-there's room,
fo> improvement stills justpure us ail two or three,
more years and we'll really skowyout Please
doublet these wretched 16+ proposals destroy
your basic 6 and-A pattern. certainly this
would buna chaos.
Sincerely t oars,
Рас. 2.3. Задача для инспектора Морзе. (По книге Колин Дек
стер (Colin Dexter) “The Silent World of Nicholas Quinn")
Известны и другие методы, практиковавшиеся в истории криптографии; при-
ведем некоторые из них, следуя [MYER91].
Пометка символов. Контуры некоторых букв отпечатанного или написан-
ного от руки текста обводятся карандашом Такие пометки при беглом
взгляде обычно не видны, но их можно увидеть, разместив лист с текстом
под определенным углом по отношению к яркому источнику’ света.
• Невидимые чернила. Различные жидкости, не оставляющие видимых сле-
дов на бумаге, могут использоваться для написания текста, который оста-
ется невидимым до тех пор, пока бумага не будет нагрета до определенной
температуры или обработана теми или иными реактивами.
• Прокалывания бумаги. Пометка некоторых букв с помощью проколов
очень тонкой иглой при беглом просмотре текста остается незаметной, од-
нако хорошо видна, если рассматривать лист бумаги с таким текстом про-
тив источника света.
Печать с использованием корректирующей ленты. Символы, напечатан-
ные через корректирующую ленту между строк обычного печатного тек-
ста, можно прочесть при освещении источником очень яркого света.
56
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
Сами по себе подобные методы выглядят архаично, но у них есть современ-
ные эквиваленты. В работе [WAY»93] предлагается скрывать сообщения, ис
пользуя незначащие биты в видеокадрах компакт-дисков. Например, формат
Kodak Photo CD поддерживает максимальное разрешение 2048 х 3072 пикселей,
причем каждый пиксель представлен 24. битами информации о цвете в формате
RGB. Младший бит каждого 24-битового представления пикселя можно изме-
нить без заметного искажения качества изображения. В результате в одном
оцифрованном снимке можно скрыть сообщение размером 2,3 Мбайт. К настоя-
щему моменту разработано немало программных пакетов, позволяющих осуще-
ствлять такие операции из области стеганографии [JOHN97].
В сравнении с шифрованием стеганография имеет целый ряд недостатков. В
частности, сокрытие даже нескольких битов информации требует высоких на-
кладных расходов, хотя некоторые схемы, например описанная в предыдущем
абзаце, могут оказаться весьма эффективными. Кроме того, если система пас
крыта, она становится практически бесполезной. Эта проблема, однако, может
быть решена, если метод внедрения скрываемой информации зависит от того
или иного ключа (см. задачу 2.3 в конце главы,). 'Можно поступить и по-другому:
сначала зашифровать сообщение, а затем скрыть его с помощью какого-либо ме-
тода стеганографии.
Преимущество стеганографии состоит в том, что она может использоваться
заинтересованными сторонами, которые по каким-то причинам не хотят, чтобы
был обнаружен сам факт их скрытой связи, а не только содержимое сообщений.
Ведь сам факт шифрования вызывает подозрение, что пересылаемые данные яв-
ляются чем-то важным или секретным, что отправителю или получателю есть
что скрывать.
2.3. Классическая техника шифрования
В этом разделе мы рассмотрим пример использования классической техники
шифрования. Это проиллюстрирует основные подходы, применяемые в традици
онном шифровании и по сей день, а также поможет понять возможные контрме-
ры — соответствующие методы криптоанализа.
Прежде всего обратим внимание на два основных строительных блока всех ме-
тодов шифрования — операции подстановки (замены) и перестановки, а затем оз-
накомимся с системами, в которых используются и подстановки, и перестановки.
Применение подстановок
При подстановке отдельные буквы открытого текста заменяются другими бу-
квами или числами либо какими-то иными символами 3 Если открытый текст
рассматривается как последовательность битов, то подстановка сводится к заме-
не заданных последовательностей битов открытого текста заданными последова-
тельностями битов шифрованного текста. В
В данной книге приняты следующие соглашения: открытый текст всегда приводится с ис-
пользованием строчных букв, шифрованный текст — с использованием прописных букв, а
значения ключей — с использованием строчных букв с курсивным начертанием.
2.3. КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
57
Шифр Цезаря
Самым древним и самым простым из известных подстановочных шифров яв-
ляется шифр, использовавшийся Юлием Цезарем. В шифре Цезаря каждая бук-
ва алфавита заменяется буквой, которая находится на три позиции дальше в
этом же алфавите. Проще всего увидеть это на примере.
Открытый текст: meet me after the toga party
Шифрованны?, текст: PHHW PH DIWHU WKH WRJD SDUfr?B
Обратите внимание на то, что алфавит считается “циклическим”, поэтому по
еле Z идет А. Определить преобразование можно, перечислив все варианты, как
показано ниже.
Открытый текст: abcdefghijklmnopgrstuvwxyz
Шифрованный текст: DEFGHIJKLMNOPQRSTUVWXYZABC
Если каждой букве назначить числовой эквивалент (а = 1, b = 2 ит д.), то
алгоритм можно выразить следующими формулами. Каждая буква открытого
текста р заменяется буквой шифрованного текста С:
С = Eip) - (р + 3)mod(26).
В общем случае сдвиг может быть любым, поэтому обобщенный алгоритм Це-
заря записывается формулой
С = Е(р) = (р + k)mvd(26),
где к принимает значения в диапазоне от 1 до 25. Алгоритм дешифрования так-
же прост:
р = D(C) = (С - k) mod(26).
Если известно, что определенный текст был шифрован с помощью шифра Це-
заря, то с помощью простого перебора всех вариантов раскрыть шифр очень про-
сто — для этого достаточно проверить 25 возможных вариантов ключей. На
рис. 2.4 показаны результаты применения этой стратегии к указанному выше
сообщению. В данном случае открытый текст распознается в третьей строке.
Применение метода последовательного перебора всех возможных вариантов
оправдано следующими тремя важными характеристиками данного шифра
1. Известны алгоритмы шифрования и дешифрования.
2. Необходимо перебрать всего 25 вариантов.
3. Язык открытого текста известен и легко узнаваем.
В большинстве случаев, когда речь идет о защите сетей, можно предполагать,
что алгоритм известен. Единственное, что делает криптоанализ на основе метода
последовательного перебора практически бесполезным — это применение алго-
ритма, для которого требуется перебрать слишком много ключей. Например, ал-
горитм DES, описанный в главе 3 и использующий 56-битовые ключи, требует
при последовательном переборе рассмотреть пространство из 2", или более чем
7 х 101" ключей.
Третья характеристика также важна. Если язык, на котором написан откры-
тый текст, неизвестен, то расшифрованный текст можно не распознать. Более
того, исходный текст может состоять из сокращений или быть каким-либо обра-
зом сжат — это также затрудняет распознавание. Например, на рис. 2.5 показан
58
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
KEY
PHHW PH DIWHU WKII WRJD SDUWB
1 oggv eg chvgt vi g vqic retva
2 nffu nf bgufs uif uphb qbsuz
3 meet me after the toga party
4 Idds Id zesdq sgd snf z ozqsx
5 keer kc ydrep rfc rmey nyprw
6 jbbq jb xcqbo qeb qldx mxoqv
7 iaap ia wbpan pda pkew Iwnpu
8 hzzo hz vaozm oez ojbv kvmot
9 gyyr. gy uznyl nby niau joins
10 IXXjrt fx tymxk max mhzt itkmr
11 ewwl ew sxlwj Izw Igys hsjlq
12 dwk dv rwkvi kyv kfxr grikp
13 cuuj cu gvjuh jxu jewq fqhjo
14 btti bt puitg iwt idvp epg in
15 assn as othsf hvs hcuo dofhm
16 zrrg zr nsgre gur gbtn cnegl
17 yqqf yq mrfqd fcq f asm bmdfk
18 xppe xp Iqepc esp ezrl alcej
19 wood wo kpdob dro dyqk zkbdi
20 vnne vn jocna cqn схрз yj acn
21 ummb Ultl inbtnz bpm bwoi xizbg
22 tlla tl hmaly aol avnh whyaf
23 skkz SK glzkx znk zumg vgxze
24 rjjy rj fkyjw ymj ytlf ufwyd
25 qiix qi ejxiv xli xske tevxc
Puc 2.4, Криптоанализ шифра Цезаря методом
перебора всех вариантов ключей
фрагмент текстового файла, сжатого с помощью широко известного алгоритма
ZIP. Если теперь этот файл зашифровать с помощью простого подстановочного
шифра (необходимо лишь расширить шифр, чтобы он включал все символы, а не
только 26 букв), то при использовании метода последовательного перебора вари-
антов расшифрованный текст распознать будет очень сложно.
Моноалфавитные шифры
При наличии всего 25 возможных вариантов ключей шифр Цезаря далек от
того, чтобы считаться надежно защищенным. Существенного расширения про-
странства ключей можно добиться, разрешив использование произвольных под-
становок. Давайте еще раз вспомним шифр Цезаря
2.3. КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
59
“+Wji“- Q-0)<4(W, ё~£2%гаи-"1 <TZ-
и*2С#АзеЭ ®«q7. £2n ®3N$U CEz[±0_ eQ, <N0-’+«'хЗ Ай£ёйЗА
x)c§ksA
_yt 'AEJ . в J/'jTeiJ ’c<uQ-
AD(G WAC~y_13AW Pdi«tUtq] ,иj' 1лй№Г==''1/90д*1СГ&(Е< 0O§":
VG>! SGqevo" u\. S>h<-* 6®t %x'" |fi6#=~myfe’>ftP< ,/i Aj A0<,"Zu-
fl 6’5(Fyf% ,,i3&6 ,1 Л+А1' uO2qSy'O-
2Aflfti /е*"Пк“‘Р®я.-йёл z3l“6“6zi''Y-iYQoeY> П+ed/' <К€г*+",,<й~
В Z0K~QEyil/ '6flizsS/J >EQ ti
Puc. 2.5. Припер сжатого текста
Открытый текст: abcdefghijklmnopqrstuvwxyz
Шифрованный текст: DEFGHIJKLMNOPORSTOVWXYZABC
Если в строке '‘Шифрованный текст” допустить использование любой из пере-
становок 26 символов алфавита, то мы получим 26!, или более чем 4 х 10'1 воз-
можных ключей. Это на 10 порядков больше, чем размер пространства ключей
DES. и это кажется достаточным для того, чтобы сделать невозможным успеш-
ное применение криптоанализа на основе меч ода последовательного перебора.
Однако для криптоаналитика существует и другая линия атаки. Если крип-
тоаналитик имеет представление о природе открытого текста (например, о том,
что это несжатый текст на английском языке), можно использовать известную
информацию о характерных признаках, присущих текстам на соответствующем
языке. Чтобы показать, как этот подход применяется на практике, рассмотрим
небольшой пример, идея которого взята из книги [SINK66]. Допустим, нам тре-
буется расшифровать следующий шифрованный текст.
UZQSCVUOHXMOPVGPOZPEVSGZWSZOFFPESXUDBMETSXAIZ
VUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSX
EPYE POPDZ S ZU FFOMBZWPFUPZHMDJUDTMOHMQ
На первом этапе можно определить относительную частоту появления в тек-
сте различных букв и сравнить их со среднестатистическими данными для букв
английского языка, показанными на рис. 2.6 (приводится по [SEBE89]).
Если сообщение достаточно длинное, этой методики уже может быть достаточно
для распознавания текста, но в нашем случае, когда сообщение небольшое, точно-
го соответствия ожидать не приходится. В нашем случае относительная частота
вхождения букв в шифрованном тексте (в процентах) оказывается следующей.
р 13,33 Н 5,83 F 3.33 В 1.67 С 0,00
Z 11,67 D 5,00 W 3,33 G 1,67 К 0,00
6 8,33 Е 5,00 Q 2,50 Y 1,67 I. 0,00
и 8,33 V 4,17 Т 2,50 I 0,83 N 0,00
О 7,50 X 4,17 А 1,67 .1 0,83 R 0,00
м 6.67
60
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ. КЛАССИЧЕСКИЕ МЕТОДЫ
Сравнивая эти результаты с данными, показанными на рис. 2.6, можно за-
ключить, что, скорее всего, буквы Р и Z шифрованного текста являются эквива-
лентами букв ent открытого текста, хотя трудно сказать, какой именно
букве — Р или Z — соответствует е, а какой — t. Буквы S, U, О, М и Н. обла-
дающие относительна высокой частотой появления в тексте, скорее всего, соот-
ветствуют буквам из множества {г, n, i,o,a,s}. Буквы с низкой частотой появле-
ния (а именно А. В, G, Y, I, J), по-видимому, соответствуют буквам множества
<w, v,b,k,x,q, j,z}.
Дальше можно пойти несколькими путями. Можно, например, принять ка-
кие-то предположения о соответствиях и на их основе попытаться восстановить
открытый текст, чтобы увидеть, выглядит ли такой текст похожим на что-либо
осмысленное. Более систематизированный подход заключается в продолжении
поиска в тексте новых характерных закономерностей. Например, может быть
известно, что в рассматриваемом тексте обязательно должны присутствовать не-
которые слова Или же можно искать повторяющиеся последовательности букв
шифрованного текста и пытаться определить их эквиваленты в открытом тексте.
Один из очень эффективных методов заключается в подсчете частоты исполь-
зования комбинаций, состоящих из двух букв. Такие комбинации называют би-
граммами. Для значений относительной частоты появления в тексте биграмм
тоже можно построить гистограмму, подобную показанной на рис. 2.6. Известно,
что в английском языке самой распространенной является биграмма th. В нашем
шифрованном тексте чаще всего (три раза} встречается комбинация ZW. Поэто-
му можно предположить, что Z соответствует t, a W — h. Тогда из ранее сфор-
2.3, КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
61
мутированной гипотезы вытекает, что Р соответствует е. Заметим, что в шифро-
ванном тексте буквосочетание ZWP имеется, и теперь мы можем представить его
как the. В английском языке the является самой распространенной триграммой
(т.е. комбинацией из трех букв), поэтому можно надеяться, что мы движемся в
правильном направлении
Теперь обратите внимание на комбинацию ZWSW в первой строке. Конечно,
мы не ммжем сказать с полной уверенностью, что эти буквы принадлежат >-дно-
му и тому же слову, но, если предположить, что это так, они соответствуют сло-
ву th?t. Отсюда заключаем, что букве S соответствует а.
Теперь мы имеем следующий результат.
UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZ
t а е е се a that е е a at
VOEPHZHMJZSHZOWSFPAPPDTSVPQUZWYMXUZUHSX
е t ta t ha е ее а е th t а
EPYEPCFT.ZSZUFPOMBZWPFUPZHMDJUDTMOHMQ
е ее tat е the t
Выяснив значение всего лишь четырех букв, мы расшифровали уже значи-
тельную часть сообщения. Продолжая анализ частоты появления букв, а также
применяя метод проб и ошибок, остается проделать совсем немного работы, что-
бы получить окончательный ответ. Расшифрованный исходный текст
(с добавленными в него пробелами) имеет следующий вид.
it was disclosed yesterday that several informal but
direct contacts have been made with political
representatives of the viet cong in noscow
Моноалфавитные шифры легко раскрываются, так как они наследуют частот-
ность употребления букв оригинального алфавита. Контрмерой в данном случае
является применение для одной буквы не одного, а нескольких заменителей
(называемых омофонами). Например, букве е исходного текста может соответст
вовать несколько разных символов шифра, (скажем, 16, 74, 35 и 21), причем
каждый такой символ может использоваться либо поочередно, либо по случай-
ному закону. Если число символов-заменителей, назначенных букве, выбрать
пропорциональным частоте появления этой буквы, то подсчет частности упот-
ребления букв в шифрованном тексте становится бессмысленным. Великий ма-
тематик Карл Фридрих Гаусс (Carl Friedrich Gauss) был уверен, что с использо-
ванием омофонов он изобрел шифр, который невозможно взломать. Но даже при
употреблении омофонов каждому элементу открытого текста соответствует толь-
ко один элемент шифрованного текста, поэтому в последнем по-прежнему долж-
ны наблюдаться характерные показатели частоты повторения комбинаций не-
скольких букв (напршиер, биграмм), и в результате задача криптоанализа по
прежнему остается достаточно элементарной.
Чтобы в тексте, шифрованном с помощью методов подстановок, структура
исходного текста проявлялась менее заметно, можно использовать два принци-
пиально разных подхода. Один из них заключается в замещении не отдельных
символов открытого текста, а комбинаций нескольких символов, а другой под-
ход предполагает использование для шифрования нескольких алфавитов.
62
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
Шифр Плейфейера
Одним из наиболее известных шифров, базирующихся на методе многобук-
венного шифрования, является шифр Плейфейера (Playfair), в котором биграм
мы открытого текста рассматриваются как самостоятельные единицы, преобра-
зуемые я заданные биграммы шифрованного текста/'
Алгоритм Плейфейера основан на использовании матрицы букв размерности
5x5, созданной на основе некоторого ключевого слова. Давайте рассмотрим
пример, решение которого находит лорд Питер Уимси в романе Дороти Сэйерс
(Dorothy Sayers) ‘‘Have His Carcase".3
м О N А R
с н Y В D
Е г G 1/J К
L р Q S Т
и V W X Z
В данном случае ключевым словом является monarchy (монархия). Матрица соз-
дается путем размещения букв, использованных в ключевом слове, слева направо и
сверху вниз (повторяющиеся буквы отбрасываются) Затем оставшиеся буквы алфа-
вита размещаются в естественном порядке в оставшихся строках и столбцах матри-
цы. Буквы 1 и J считаются одной и той же буквой. Открытый текст шифруется пор-
циями по две буквы в соответствии со следующими правилами.
1. Если оказывается, что повторяющиеся буквы открытого текста образуют
одну пару для шифрования, то между этими буквами вставляется специ
альная буква-заполните ль, например х В частности, такое слово как
balloon будет преобразовано к виду ba lx lo on.
2, Если буквы открытого текста попадают в одну и ту же строку матрицы, ка
ждая из них заменяется буквой, следующей за ней в той же строке спра-
ва — с тем условием, что для замены последнего элемента строки матрицы
служит первый элемент той же строки. Например, аг шифруется как RM.
3. Если буквы открытого текста попадают в один и тот же столбец матрицы,
каждая из них заменяется буквой, стоящей в том же столбце сразу под
ней, с тем условием, что для замены самого нижнего элемента столбца
матрицы берется самый верхний элемент того же столбца. Например, mu
шифруется как СМ.
4. Если не выполняется ни одно из приведенных выше условий, каждая бук-
ва из пары букв открытого текста заменяется буквой, находящейся на пе-
ресечении содержащей эту букву строки матрицы и столбца, в котором
находится вторая буква открытого текста. Например, hs шифруется как
ВР, а еа — как IM (или JM, по желанию шифровальщика).
4
Этот шифр па самом деле был придуман британским ученым сэром Чарльзом Витетоуном (Sir
Charles Wheatstone) в 1854 г., однако за шифром закрепилось имя друга сэра Витстоуна — ба-
рона Плейфейера, который убедил Британское министерство иностранных дел использовать
этот шифр.
Кстати, указанная книга в увлекательной форме иллюстрирует многие возможности метода
взлома шифра с помощью угадывания слов.
2.3 КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
63
Шифр Плейфейера значительно надежнее простых мопоалфавитных шифров.
С одной стороны, букв всего 26, а биграмм — 26 х 26 = 676, и уже поэтому
идентифицировать биграммы сложнее, чем отдельные буквы. С другой стороны,
относительная частота появления отдельных букв колеблется гораздо в более
широком диапазоне, чем частота появления биграмм, поэтому анализ частотно-
сти употребления биграмм тоже оказывается сложнее анализа частотности упот-
ребления букв. По этим причинам очень долго считалось, что шифр Плейфейера
взломать невозможно. Он служил стандартом шифрования в Британской армии
во время первой мировой войны и нередко применялся в армии США и союзных
войсках даже в период второй мировой войны.
Несмотря на столь высокую репутацию в прошлом, шифр Плейфейера на са-
мом деле вскрыть относительно легко, так как шифрованный с его помощью
текст все равно сохраняет многие статистические характеристики открытого тек-
ста. Для взлома этого шифра, как правило, достаточно иметь шифрованный
текст, состоящий из нескольких сотен букв.
Один из способов оценки эффективности шифра Плейфейера и других шиф-
ров показан на рис. 2.7, данные для которого взяты из [SIMM93]. Линия, поме
ченная на рис. 2.7 как открытый текст, отображает распределение значений
относительной частоты вхождения символов алфавита в статье Encyclopaedia
Brittunica, посвященной криптологии и содержащей более 70000 символов.6 По-
добный график характерен для распределения относительной частоты появления
символов и для любого моноалфавитного шифра. Сам график получается сле-
дующим образом. Число вхождений буквы в тексте делится на число появлений
в тексте символа е (самый часто используемый символ в английском языке). В
результате е имеет относительную частоту 1, t — около 0.76 и т.д. Деления на
горизонтальной оси соответствуют буквам в порядке снижения значений относи
тельной частоты их появления.
На рис. 2 7 также показан график распределения значений частоты для тек-
стов, шифрованных с помощью шифра Плейфейера. С целью нормализации чис-
ло появлений в шифрованном тексте той или иной буквы делилось на число
вхождений буквы е в открытом тексте. Полученные в результате, нормализации
графики показывают, насколько частота распределения букв (при использовании
которой раскрытие, например, подстановочных шифров оказывается совсем про-
стым делом) маскируется шифрованием. Если в процессе шифрования информа-
ция о распределении полностью скрывается, график для шифрованного с помо-
щью такого шифра текста должен представлять собой горизонтальную прямую
линию, а криптоанализ такого текста с использованием лишь шифрованного
текста, по-види.мпму, должен оказаться практически невозможным. Как видно
из рис. 2.7, шифр Плейфейера имеет более пологий график распределения зна-
чений частоты по сравнению с открытым текстом, но все же предоставляет
криптоаналитику достаточно широкие возможности для статистического анализа
сохранившихся структур.
Я в долгу перед Густавусом Симмонсом (Gustavus Simmons) за предоставленные графики и
объяснение методов их получения.
64
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
Цифр Хилла
Ептр одним интересным многобуквенным шифром является шифр, разработан-
ый математиком Лестером Хиллом (I<ester Hill) в 1929 г Лежащий в его основе
тгоритм заменяет каждые т последовательных букв открытого текста т буквами
шфрованного текста. Подстановка определяется т линейными уравнениями, в
эторых каждому символу присваивается числовое значение (а = 0. 6 = 1, ...
= 25 ). Например, при т = 3 . получаем следующую систему уравнений-
С, = (fe,p, + /г„ра + fe,.pj mod 26,
Cs = (knP, ^-fcsPa + /ЩР,) mod 26.
C, = (fes.p, + feaapa + fewp») mod 26.
Эту систему уравнений можно записать
в виде произведения вектора и мат
щы в следующем виде:
'с; *г ? у 'p;
с3 = feai kvi kit p>
<4 kai kta &зэ,
С = КР,
:и в виде2
е С и Р — векторы длины 3, представляющие соответственно шифрованный и
крытый текст, а К — это матрица размерности 3x3, представляющая ключ
[фрования. Операции выполняются по модулю 26.
I. КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
65
Рассмотрим, например, как будет шифрован текст “paymoremoney” при ис-
пользовании ключа
(17 17
К = 21 18
2 2
5 '
21
19
7
Первые три буквы открытого текста представлены вектором (15 0 24). Таким
образом, К(15 0 24) = (275 819 486) mod 26 = (11 13 18) = LNS. Продолжая вы-
числения, получим для данного примера шифрованный текст вида
LNSHDLEWMTRW.
Для расшифровки нужно воспользоваться матрицей, обратной К. Обратной по
отношению к матрице К называется такая матрица К 1, для которой выполня-
ется равенство КК : = К 'К = I, где I— это единичная матрица (матрица, со-
стоящая из нулей всюду, за исключением главной диагонали, прохолящей с ле-
вого верхнего угла в правый нижний, на которой предполагаются единицы). Об
ратная матрица существует не для всякой матрицы, однако, когда обратная
матрица имеется, для нее обязательно выполняется приведенное выше равенст-
во. В нашем примере обратной матрицей является матрица
< 4 9 15'
К 1 = 15 17 6 •
24 0 17
Это проверяется следующими вычислениями:
'17 17 5 V 4 9 15' '443 442 442'| р 0 О'
21 18 21 15 17 6 = 858 495 780 mod 26 = 0 1 0
2 2 19 24 0 17 V / \ 7 494 52 365 0 0 1 7 к 7
Легко видеть, что в результате применения матрицы К ‘ к шифрованному тек-
сту получается открытый текст. Чтобы пояснить, как получена обратная матрица,
нам придется предпринять небольшой экскурс в линейную алгебру — необходи-
мые подробности любознательный читатель может найти в любом подходящем
учебнике. Определителем квадратной матрицы (т х т ) называют сумму таких
всевозможных произведений элементов матрицы, что в произведении каждый
столбец и каждая строка представлены ровно одним элементом, причем некоторые
из этих произведений, умножаются на -1. В частности, для матрицы 2x2 вида
ku kl2
/?Й1 hit
определитель вычисляется по формуле - k^k,,. Для матрицы 3x3 значе-
ние определителя подсчитывается по формуле +
- fr.A-K • Если квадратная матрица А имеет отличный от нуля определи-
тель, то обратная матрица вычисляется как [А ']<, = (-l)'*'(D,,)/det(A), где
(D,,) — определитель матрицы, получаемой путем удаления i-й строки и у-го
столбца из матрицы A, a det(A) — определитель самой матрицы А. В нашем
случае все эти вычисления проводятся по модулю 26.
66
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
В общем виде систему Хилла можно записать в следующей фирме:
С = ЕК(Р) = КР ,
Р = DJC) = К С = К КР = Р.
Как и в случае шифра Плейфейера, преимущество шифра Хилла состоит в
том, что он полностью маскирует частоту вхождения отдельных букв. А для
шифра Хилла чем больше размер матрицы в шифре, тем больше в шифрованном
тексте скрывается информации о различиях в значениях частоты появления
других комбинаций символов Так, шифр Хилла с матрицей 3x3 скрывает час-
тоту появления не только отдельных букв, но и двухбуквенных комбинаций.
Хотя шифр Хилла устойчив к попыткам криптоанализа в тех случаях, когда
известен только шифрованный текст, этот шифр легко раскрыть при наличии
известного открытого текста. Рассмотрим шифр Хилла с матрицей т х т . Пред-
положим, что нам известны т пар отрывков открытого и соответствующего
шифрованного текстов, каждый длины т. Обозначим такие пары
Р, = tpm/) и Cj = (С1д,С„,...,Сл), чтобы выполнялось условие С, - КР,
для всех 1< j<m и некоторой неизвестной ключевой матрицы К Теперь опре-
делим две такие матрицы X = (рм) и Y =(С0) размера тпхтп , что Y = ХК . То-
гда, при условии что для матрицы X существует обратная матрица, К можно
определить по формуле К = X ‘Y. Если же получить матрицу, обратную матрице
X, невозможно, необходимо сформировать другую матрицу X с дополнительны-
ми парами соответствия открытого и шифрованного текстов, до тех пор. пока не
будет найдена обратная матрица.
Рассмотрим пример, приведенный в [STIN95]. Предположим, что открытый
текст “friday” шифрован с помощью шифра Хилла с использованием матрицы
2 х 2, в результате чего получен шифрованный текст PQCFKU. Таким образом,
мы знаем, что К(5 17) = (15 16), К(8 3) = (2 5) и К(0 24) = (10 20). Используя
первые две пары символов открытого и шифрованного текста, получаем
<15 16) <5 IT')
К .
। 2 5 1 18 3 J
Вычислим матрицу, обратную матрице X:
5 17)’_р 1 ]
1,8 3 .2 15р
Таким образом, теперь можно получить значение ключа:
р 1 \Г15 16) р 19 ,
2 15 J 2 5 18 3 ’
Полученный результат можно проверить с помощью оставшихся пар откры-
того и шифрованного текстов.
Полиалфавитные шифры ,
Другая возможность усовершенствования простого моноалфанитного шифра
заключается в использовании нескольких моно алфавитных подстановок, приме-
няемых в ходе шифрования открытого текста в зависимости от определенных
условий. Семейство шифров, основанных на применении таких методов шифро-
2.3. КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
67
вания, называется полиялфавитными шифрами. Подобные методы шифрования
обладают следующими общими свойствами.
1. Используется набор связанных моноалфавитных подстановок.
2. Имеется некоторый ключ, по которому определяется, какое конкретное
преобразование должно применяться для шифрования на данном этапе.
Самым широко известным и одновременно самым простым алгоритмом тако
го рода является шифр Инженера (Vigenure). Этот шифр базируется на наборе
правил моноалфавитной подстановки, представленных 26 шифрами Цезаря со
сдвигом от 0 до 25. Каждый из таких шифров можно обозначить ключевой бук-
вой, являющейся буквой шифрованною текста, соответствующей букве а откры-
того текста. Например, шифр Цезаря, для которого смещение равно 3, обознача-
ется ключевой буквой d.
Для облегчения понимания и применения этой схемы была предложена мат-
рица, названная '’табло Виженера” (табл. 2.4). Все 26 шифров располагаются по
горизонтали, и каждому из шифров соответствует своя ключевая буква, пред-
ставленная в крайнем столбце слева Алфавит, соответствующий буквам откры-
того текста, находится в первой сверху строке таблицы. Процесс шифрования
прост — необходимо по ключевой букве х и букве открытого текста у найти бук-
ву шифрованною текста, которая находится на пересечении строки х и столбца
у В данном случае такой буквой является буква V.
Чтобы зашифровать сообщение, нужен ключ, имеющий ту же длину, что и
само сообщение. Обычно ключ представляет собой повторяющееся нужное число
раз ключевое слово, чтобы получить строку подходящей длины- Например, если
ключевым словом является deceptive, сообщение “we аге discovered save yourself"
шифруется следующим образом,
ключ: decepCivedeceptivedeceptive
открытый текст: wearedxscoveredsaveyourself
шифрованный текст: ZICVTWQNGRZGVTWAVZMCQYGLMGJ
Расшифровать текст также просто — буква ключа определяет строку, буква
шифрованного текста, находящаяся в этой строке, определяет столбец, и в этом
столбце в первой строке таблицы будет находиться соответствующая буква от-
крытого текста.
Преимущество этого шифра заключается в том, что для представления одной
и той яге буквы открытого текста в шифрованном тексте имеется много различ-
ных вариантов — по одному на каждую из нецовторяющихся букв ключеьигс
слова. Таким образом скрывается информация, характеризующая частотность
употребления букв. Но и с помощью данного метода все же не удается полно
стью скрыть влияние структуры открытого текста на структуру шифрованного.
Например, на рис. 2.7 показан график распределения значений частоты для
шифра Виженера при длине ключевого слова 9 символов. Налицо явное пре-
имущество в сравнении с шифром Плейфейера, но очевидно и то, что полностью
информацию о распределении частоты замаскировать не удается.
Не помешает хотя бы вкратце рассмотреть метод взлома этого шифра, так кая
на примере этого метода можно показать некоторые из математических принци-
пов, лежащих в основе большинства современных методов криптоанализа.
68
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
Таблица 2.4- Соврелленное табло Виженера
abcdefghi j klmnopqrstuvwxyz
w
u
z
D
F
I
J
M
N
P
В
E
H
К
L
V
A
C
R
S
T
X
О
G
Q
a
в
c
F
К
L
D
H
N
О
G
I
J
M
P
R
T
U
S
V
b
E
Q
Vv
z
X
A
c
z
D
E
F
H
1
К
L
T
J
M
N
P
W
V
G
О
R
S
X
A
U
В
Q
w
s
z
в
c
К
D
F
H
1
L
M
N
P
E
О
R
T
U
V
G
X
A
d
Q
s
F
H
1
К
P
E
G
T
W
Z
В
M
R
N
U
X
Y
C
D
A
О
Q
e
u
w
z
c
F
N
I
К
L
M
О
p
H
G
R
S
V
X
A
В
D
E
T
f
Q
I
J
L
M
N
О
P
R
U
V
w
G
s
T
z
H
К
A
В
C
D
E
F
Q
g
h
H
I
К
L
N
О
P
R
T
U
V
W
X
s
z
A
В
c
D
E
F
G
M
Q
I
J
N
M
о
p
R
S
T
U
V
W
X
z
A
В
C
D
E
G
H
К
Q
F
J
К
M
N
о
R
S
T
u
V
p
Q
R
XV
X
z
в
c
l‘
E
F
G
H
I
к
К
L
M
N
о
U
V
X
s
T
z
в
c
D
E
F
G
H
I
J
p
4
L
M
N
О
P
V
S
T
и
X
z
в
c
D
E
F
H
1
J
К
Q
R
G
m
M
N
О
P
Q
R
S
T
U
w
x
z
в
c
n
E
F
G
H
J
К
L
U
N
P
R
V
В
D
S
T
w
X
z
E
F
G
О
C
Q
R
n
II
I
К
L
M
о
0
P
F
U
z
в
D
E
S
V
X
c
H
I
N
A
G
J
К
L
M
Q
w
T
P
Q
R
S
T
и
V
w
X
z
в
D
E
F
G
H
1
К
M
L
C
J
N
О
P
Q
R
S
T
и
V
w
X
z
в
c
D
E
F
G
H
1
J
К
L
N
P
M
О
q
R
S
т
и
V
w
X
z
A
в
c
D
E
F
G
H
I
К
L
M
N
О
P
Q
s
S
T
U
w
X
Z
D
в
H
J
К
L
R
C
E
F
G
I
M
N
О
P
Q
A
V
E
R
T
X
z
A
В
c
D
F
G
H
I
К
M
N
О
P
u
w
Q
t
SU
V
w
z
в
D
E
F
H
I
J
M
u
X
c
G
К
L
N
О
P
R
u
Q
R
SE
T
\v
V
z
в
c
D
E
F
G
H
I
J
К
L
M
N
О
P
A
v
Q
su
T
U
W
X
Y
Z
В
C
D
E
F
G
H
I
J
К
L
M
N
О
P Q
R
T
U
V
s
w
X
Z
В
c
D
E
G
H
I
К
L
M
N
О
P
Q
R
S
T
и
V
w
F
A
x
Z
В
C
D
E
F
G
H
I
К
L
M
N
О
P
Q
R
8
T
U
V
w
X
У
z
в
c
D
E
F
G
H
I
J
К
L
M
N
О
P
Q
R
S
T
U
V
W
X
z
Прежде всего предположим, что противник уверен в том, что шифрованный
текст был получен либо с помощью моноалфавигной подстановки, либо с помо-
щью шифра Виженера. Чтобы выяснить, какой именно из этих двух методов
был использован, можно провести простой тест. Если использовалась мои чал фа
витная подстановка, статистические показатели шифрованного текста не будут
отличаться от соответствующих показателей языка, на котором написан откры-
тый текст. Так, в соответствии с рис. 2 6, в этом случае в шифрованном тексте
один символ должен встречаться ь 12,75% случаев, другой — в 9,25% и т.д. Ес-
2.3. КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
69
ли для анализа имеется лишь одно сообщение, точного совпадения статистиче-
ских показателей можно и не получить. Но если статистика достаточно точно
повторяет статистику обычного открытого текста, можно предположить, что ис-
пользовалась моноалфавитная подстановка.
Если же, наоборот, все указывает на то, что был применен шифр Виженера,
то, как мы увидим несколько позже, успех дальнейшего анализа текста зависит
от того, удастся ли определить длину ключевого слова. Пока давайте сосредото-
чимся на том, как определить длину ключевого слова. Решение этой задачи ос-
новано на следующей особенности данного шифра: если начальные символы двух
одинаковых последовательностей открытого текста находятся друг от друга на
расстоянии, кратном длине ключа, эти последовательности будут представлены
одинаковыми последовательностями и в шифрованном тексте. Е рассматривае-
мом ниже примере имеется две последовательности “red” и начало второй из них
оказывается на девять символов дальше относительно начала первой. Следова-
тельно, в обоих случаях г будет шифровано с использованием ключевой буквы е,
е — с помощью ключевой буквы р, a d — с помощью ключевой буквы t. Таким
образом, в обоих случаях для шифрованного текста будет получена последова-
тельность VTW.
Аналитик, имеющий в своем распоряжении только шифрованный текст, об
наружит повторяющуюся последовательность VTW со смещением в девять сим-
волов, и поэтому может предположить, что длина ключевого слова равна либо
трем, либо девяти. Конечно, для повторившейся всего два раза последовательно-
сти VTW совпадение может оказаться и случайным, а поэтому и не соответство-
вать шифрованным с одинаковыми ключевыми буквами одинаковым фрагмен-
там открытого текста, но если сообщение будет достаточно длинным, то таких
повторяющихся последовательностей в нем будет немало. Определив общий
множитель для смещения начала таких последовательностей, аналитик получит
достаточно надежную основу для предположений о длине ключевого слова.
Дальнейший анализ базируется на другой особенности данного шифра- Если
ключевое слово имеет длину N, то шифр, по сути, состоит из N моноалфавитных
подстановочных шифров. Например, при использовании ключевого слова
deceptive буквы, находящиеся на 1-й, 10 й, 19-й и'т.д позициях, шифруются
одним и тем же моноалфавитным шифром. Это дает возможность использования
известных характеристик частотных распределений букв открытого текста для
взлома каждого моноалфавитного шифра по отдельности
Периодичности в ключевой строке можно избежать, используя для ключевой
строки непериодическую последовательность той же длины, что и само сообще-
ние. Виженер предложил подход, получивший название системы с автоматиче-
ским выбором ключа, когда последовательность ключевой строки получается в
результате конкатенации ключевого слова с самим открытым текстом. Для рас-
сматриваемого примера мы получим следующее.
ключ: aeceptiveweazediscoveredsav
открытый текст: wearediscovoredsaveyourseif
шифрованный текст: 2ICVTWQNGKZEI1GASXSTSLVVWLA
70
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
Однако и эта схема оказывается уязвимой. Поскольку и в ключевой строке, и
в открытом тексте значения частоты распределения букв будут одинаковы, ста-
тистические методы можно применить и в данном случае. Например, буква е,
шифрованная с помощью ключа е, согласно рис. 2.6, должна встречаться с час-
тотой (0,1275)х '0,0163, тогда как d, шифрованная с помощью t, может встре-
титься с частотой, примерно в два раза меньшей. Именно такие закономерности
позволяют добиться успеха при анализе шифрованного текста.
Лучшей защитой от подобных методов криптоанализа является выбор ключе-
вого слова, по длине равного длине открытого текста, но отличающегося от от-
крытого текста по статистическим показателям. Такая система была предложена
инженером компании AT&T Гилбертом Бернамом (Gilbert Vernamj в 19.18 г. Его
система оперирует не буквами, а двоичными числами. Кратко ее можно выра-
зить формулой
С, = р, ® к,,
где
р, — i-я двоичная цифра открытого текста,
к, — i-я двоичная цифра ключа,
С, — 1-я двоичная цифра шифрованного текста,
® — операция XOR (исключающее “ИЛИ”).
Таким образом, шифрованный текст генерируется путем побитового выполне-
ния операции XOR для открытого текста и ключа. Благодаря свойствам этой
операции для расшифровки достаточно выполнить подобную операцию:
р, = С, ® к,.
Сутью этой технологии является способ выбора ключа. Вернам предложил
использовать закольцованную ленту, что означает циклическое повторение клю-
чевого слова, так что его система на самом деле предполагала работу хоть и с
очень длинным, но все же повторяющимся ключом. Несмотря на то что такая
схема в силу очень большой длины ключа значительно усложняет задачу крип-
тоанализа, схему, тем не менее, можно взломать, имея в распоряжении доста-
точно длинный фрагмент шифрованного текста, известные или вероятно извест-
ные фрагменты открытого текста либо и то, и другое сразу.
Офицер армейского корпуса связи Джозеф Моборн (Joseph Mauborgne) пред-
ложил такие улучшения схемы шифрования Бернама, которые сделали эту схе-
му исключительно надежной. Моборн предложил отказаться от повторений, а
случайным образом генерировать ключ, по длине равный длине сообщения. Та-
кая схема, получившая название ленты однократного использования (или схемы
с одноразовым блокнотом), взлому не поддается. В результате ее применения на
выходе получается случайная последовательность, не имеющая статистической
взаимосвязи с открытом текстом. Поскольку в этом случае шифрованный текст
не дает никакой информации об открытом тексте, нет способа и взломать код.
»
Хотя, как видно из приведенного нами исследования, технология взлома шифра Виженера ие
так уж сложна, в статье журнала Scientific American за 1917 г. эта криптосистема была оха-
рактеризована как “неподдающаяеи раскрытию”. Следует помнить об этом, когда подобные за-
явления делаются по отношению к современным алгоритмам.
2.3. КЛАССИЧЕСКАЯ техника шифрования
71
Сложность практического применения этого метода заключается в том, что и от-
правитель, и получатель должны располагать одним и тем же случайным клю-
чом и иметь в змижность защитить его от посторонних. Поэтому, несмотря на
все преимущества шифра Бернама перед другими шифрами, на практике к нему
прибегают редко.
Применение перестановок
Все рассмотренные выше методы основывались на замещении символов от-
крытого текста различными символами шифрованного текста. Принципиально
иной класс преобразований строится на использовании перестановок букв от-
крытого текста. Шифры, созданные с помощью перестановок, называют переста-
новочными шифрами.
Простейший из таких шифров использует преобразование “лесенки”, заклю-
чающееся в том, что открытый текст записывается вдоль наклонных строк опре-
деленной длины (“ступенек”), а затем считывается построчно по горизонтали.
Например, чтобы шифровать сообщение “meet me after the toga party” по методу
лесенки co ступеньками длиной 2, запитаем это сообщение в виде
mematrhtgpry
etefeteoaat
Шифрованное сообщение будет иметь следующий вид
MEMATRHTGPRYEIEFETEOAAT
Такой “шифр” особой сложности для криптоанализа не представляет. Более
сложная схема предполагает запись текста сообщения в горизонтальные строки
одинаковой длины и последующее считывание текста столбец за столбцом, ио не
по порядку, а в соответствии с некоторой перестановкой столбцов. Порядок счи-
тывания столбцов при этом становится ключом алгоритма. Рассмотрим следую-
щий пример.
Ключ: 4312567
Открытый текст: a t t а с к р
о s t р о п е
d u n t i 1 t
w о а ш х у z
Шифрованный текст: TTNAAPTMTSUOAODWCOIXKNLYPETZ
Простой перестановочный шрифт очень легко распознать, так как буквы в нем
встречаются с той же частотой, что и в открытом тексте. Например, для только
что рассмотренного способа шифрования с перестановкой столбцов анализ шифра
выполнить достаточно просто — необходимо записать шифрованный текст в виде
матрицы и перебрать возможные варианты перестановок для столбцов. Можно ис-
пользовать также таблицы значений частоты биграмм и триграмм.
Перестановочный шифр можно сделать существенно более защищенным, вы-
полнив шифрование с использованием перестановок несколько раз. Оказывается,
что в этом случае примененную для шифрования перестановку воссоздать уже не
так просто. Например, если предыдущее сообщение шифровать еще раз с помо-
щью того же самого алгоритма, то результат будет следующим.
72
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
Ключ: 4 3 1 2 5 6 7
Открытый текст: t t r> а а р t
го t s и о а о
d w с о i х к
п 1 у р е t z
Цифрованный текст: NSCYAUOPTTWLTMDNAOIEPAXTTOKZ
Чтобы нагляднее представить то, что мы получим в итоге повторного приме-
нения перестановки, сопоставим каждую букву исходного открытого текста с
номером соответствующей ей позиции. Наше сообщение состоит из 28 букв, и
исходной последовательностью будет последовательность
01 02 03 04 05 С6 07 08 09 10 11 12 13 14
15 16 17 18 19 20 21 22 23 24 25 26 27 23
После первой перестановки получим последовательность, которая все еще со-
храняет некоторую регулярность структуры,
03 10 17 24 04 11 18 25 02 09 16 23 01 08
15 22 05 12 19 26 06 13 20 27 07 14 21 28
После второй перестаноики получается следующая последовательность.
17 09 05 27 24 16 12 07 10 02 22 20 03 25
15 13 04 23 19 14 11 01 26 21 18 08 06 28
Регулярность этой последовательности уже совсем не просматривается, по-
этому ее криптоанализ потребует значительно больше усилий.
Барабанные шифровальные машины
Предыдущий пример позволяет предположить, что повторное шифрование
порождает алгоритм, который будет значительно сложнее для криптоанализа,
чем базовый шифр. Это утверждение справедливо как для подстановочных, так
и для перестановочных шифров. До того как. был предложен алгоритм DE»S, са-
мой важной областью практического применения принципа многопроходного
шифрования были системы, использующие так называемые барабанные шифро-
вальные машины (rotor machrnes)4
Принцип работы барабанной шифровальной машины показан на рис. 2.8.
Главной частью машины является набор вращающихся независимо друг от друга
барабанов (цилиндров), по которым могут проходить электрические импульсы.
Каждый барабан имеет 26 входных и 26 выходных контактов, а также внутрен-
нюю проводку, которая соединяет каждый входной контакт с соответствующим
только ему выходным контактом (чтобы не запутывать читателя, на рис. 2.8 для
каждого из барабанов показано только по три внутренних соединения).
Во второй мировой войне шифровальные машины, использующие вращающиеся барабаны,
применялись как Германией (Enigma), так и Японией (Purple). Успешный взлом шифров этих
машин союзниками оказал значительное влияние на ход войны.
2.3. КЛАССИЧЕСКАЯ ТЕХНИКА ШИФРОВАНИЯ
73
-►А
-►В
24—-,
2Ь-л
1<5
Г
10
14
Q
R
21
4
16
Ж
н
13
L
23
28
18
18
19
Направлениг движения
Медленный
барабан
Быстрый
барабан
Направление движения
14
Н
J
К
м
N
О
р
Q
R
S
18
2»
U
V
W
X
15
10
23
у з
и
Е
10
14
V
W
X
18
и»
20
Медленный
барабан
2Л
22
10
3
Быстрый
барабан
(б) Состояние поеле нводл одной буквы
8
8
И
И
12
13
и
15
16
17
IS
10
20
21
13
н
16
24
23
5
16
2
19
14
(а) Исходное состояние
18
25
24
13
15
18
18-------19
Й1 S, б
15
21
5
6
10
Рис. 2.8. Трехбарабанная шифровальная машина с системой электропроводки,
представленной соответствующей нумерацией контактов
Если связать входные и выходные контакты с определенными буквами анг-
лийского алфавита, то каждый барабан будет реализовывать некоторую моноал-
фавитную подстановку. Для схемы, изображенной на рис. 2.8, если оператор
нажмет клавишу, соответствующую букве а, электрический сигнал поступит на
первый входной контакт первого барабана и по внутренней проводке потечет к
двадцать пятому выходному контакту.
Рассмотрим машину с одним барабаном. После нажатия любой клавиши ба-
рабан проворачивается на одну позицию, вследствие чего система внутренних со-
единений меняется. Поэтому при следующем нажатии клавиши будет использо-
ваться уже другая моноалфавитная подстановка. После ввода 26 букв открытого
текста барабан вернется в исходное положение. Это значит, что в данном случае
используется полиалфавитный подстановочный алгоритм с периодом 26.
Машина с одним барабаном генерирует тривиальный шифр, который не будет
большой проблемой для криптоаналитика. Преимущество барабанной шифро-
вальной машины заключается в использовании нескольких барабанов, в которых
выходные контакты одного барабана подключены к входным контактам другого.
На рис. 2.8 показана трехбарабанная система. На левой половине рисунка ото-
бражено положение, в котором полученный от оператора входной сигнал (буква
а открытого текста), пройдя через три барабана, появляется на выходе на втором
выходном контакте последнего барабана (буква В шифрованного текста).
74
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
При использовании нескольких барабанов тот барабан, который находится
дальше всего от точки ввода сигнала оператором, проворачивается на одну пози-
цию при каждом нажатии клавиши. В правой части рис. 2.8 показано положе
ние системы после ввода оператором одного символа. После того как внешний
барабан сделает полный оборот, средний цилиндр проворачивается на одну пози-
цию. А когда на полный оборот повернется средний цилиндр, на одну позицию
повернется внутренний. Точно так же работает любой одометр (например, в
электросчетчике). В результате прежде, чем система начнет повторяться, будет
использовано 26 х 26 х 26 = 17576 различных подстановочных алфавитов До-
бавление четвертого и пятого барабанов приведет к увеличению числа задейство-
ванных алфавитов до 456976 и 11881376 соответственно. Как красноречиво вы-
разился Дэвид Кан (David Kahn), описывая шифровальную машину с пятью ба-
рабанами (KAHN96, стр. 413],
“...столь большой период делает практически бесполезным любой анализ
частотности употребления букв. В общем случае для подобного анализа
требуется около 50 букв на каждый алфавит шифра, а это значит, что
пять барабанов должны пройти 50 раз все комбинации их взаимного рас-
положения. Такое условие может быть выполнено только в том случае, ко-
гда длина шифрованного текста будет равняться длине всех речей, произ-
несенных в залах Сената и Палаты представителей. США на протяжении
трех сессий Конгресса. Невероятно, чтобы какому-либо криптоаналитику
когда-нибудь посчастливилось получить в свое распоряжение столь про-
странный текст, так как даже дипломаты, которые по болтливости, мо-
жет, и не уступают политикам, вряд ли смогут достичь таких вершин
многословия”.
Значение барабанных шифровальных машин в современных условиях состоит
в том, что они указали путь к разработке самого популярного на сегодня шифра
DES (Data Encryption Standard). Этот шифр мы рассмотрим подробно в главе 3.
ТТТеколлен^емь1еисточники^рполнит^Гьнои^
информации
Всем, кто интересуется историей создания и взлома шифров, просто необхо-
димо прочитать книгу [KAHN96]. Хотя в ней больше говорится о том влиянии,
которое имеет криптология, а не об аспектах развития ее технологий, данная
книга служит прекрасным введением в предмет, которое к тому же написано в
интересной и увлекательной форме. Краткое описание методов, рассмотренных в
данной главе, и многое другое вы найдете в IGARD72], Имеется немало книг, в
которых классические методы криптографии рассматриваются более глубоко.
Одной из лучших среди них является [SINK66J. Прекрасная книга [KORN96]
тоже содержит обширный раздел, посвященный классической технике шифрова-
ния Образцом четкости и последовательности изложения можно назвать
Г51ММ93] — там на 14 страницах содержится аккуратное изложение истории
криптологии, а также неплохой обзор основных методов криптографии.
2.4. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
75
В [KOHNS]] представлено подробное математическое обоснование принципов
работы барабанных шифровальных машин.
Лучшей и, пожалуй, единственной книгой, целиком посвященной стегано-
графии, является [WAYN96]
GARD72 Gardner, М. Codes, Ciphers^a^’^ecmt^Wnting^ew York: Dover,
KAHN96 Kahn, D. Tne Codobrcakers. Tne Story of Secret Writing. New Yoik Scnbrier, 1996
KOHNS 1 Konheim, A. Cnptography; A Primer. New York, Wiley, 1961
KORN96 Korner, T. The Pleasures of Counting. Cambridge, England: Cambridge University
Press, 1996.
SIMM93 Simmons. G '‘Criptology." Encyclopaedia Brittanica,1993.
SINK66 Sinkov A Elementary Cryptanalysis: A Mathematical Approach Washington DC
The Mathematical Association of Amenca, 1966
WAYN96 Wayncr, P Disappearing Cryptography. Boston. AP Piofessional Books, 1996
2.5. Задачи
1. Какое сообщение внедрено в текст, приведенный на рис. 2.3?
2. Данная задача предназначена для того, чтобы продемонстрировать невоз-
можность взлома шифра, построенного но схеме, использующей ленту од-
норазового использования. Предположим, что применяется шифр Вижене-
ра с 27 символами, в котором двадцать седьмым символом является про-
бел, и одноразовым ключом, который имеет такую же длину, как и
сообщение. Для шифрованного текста
ANKYODKYUREPFJBYOJDSPLREYIUNOFDOIUERFPLUYTS
найдите ключ, с помощью которого получается открытый текст
MR MUSTARD WITH THE CANDLESTICK TN THE HALL
а затем найдите ключ, с помощью которого получается открытый текст
MISS SCARLET WITH THE KNIFE IN THE LIBRARY
Объясните полученные результаты.
3. В одном из романов Дороти Сэйерс (Dorothy Sayers) перед лордом Питером
стоит задача расшифровать сообщение, показанное на рис. 2,9. Он обнару
живает ключ к сообщению, который представляет собой следующую по-
следовательность целых чисел.
787656543432112343436567878878V65654
343211234345656’’8Т88’’87 65654 433211234
♦ Расшифруйте сообщение. Подсказка. Что представляет собой наиболь-
шее целое значение в ключевой последовательности?
• Если известен алгоритм, но неизвестен ключ, насколько безопасной яв-
ляется данная схема?
• Если известен ключ, но неизвестен алгоритм, насколько безопасной яв-
ляется данная схема?
76
ГЛАВА 2. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
1 thought to see, the fiurin m- the. field*, but I scmroKly the- esnl
elepharurs with then blank barks. Woe* hour that sight awed rhe
eh*es danced- all around мА about whdc I heard voices lodlmg clearly
Ahl howl tried to see— throw off the иду cloud —but ко blind eye of a,
mortal или permitted to spy them. So then came minstrels, hawrtg gold
trumpets, harps and, drums There played very lordly betide me,
breaking that sped- So the dream \ranjuhed, whereat I thanked Heaven I
shed many tears before, the then moon rose up, ffad andfaint ar a, sickle of
straw Now though the Enchanter ana th hu teeth vainly,yet shall he
return. as the spring returns Oh, wretched man- Hell gaper Erebies now
les open. The mouths of Death wait ok thy end.
Pue. 2 9 Загадка для лорда Питера
4, Следующий шифрованный текст был получен с помощью алгоритма, ис-
пользующего простую подстановку.
53441305))6*;4826)44.)44);806*;4818160))85;;]8*;:4*8183
(88) 5*1; 46(;88 *96*;8)*4(; 485);5*12:*4(; 4956*2(5*-4)818*
,-4 069285) ;) 6т8) 444;1 (49;48061»8:841; 481 85; 4 ) 4851528806*31
(49;48(88;4(4734;48)44;161;:188;4?»
Расшифруйте это сообщение. Подсказки.
• Как вы уже знаете, в английском языке чаще всего используется буква
е. Таким образом, первой, второй или, по крайней мере, третьей из
наиболее часто используемых в данном сообщении букв, будет буква е.
Кроме того, во многих словах встречается две буквы е подряд (meet,
speed, seen, been, agree и т.п.). Попробуйте определить символ в шиф-
рованном тексте, соответствующий букве е.
• Самым распространенным словом английского языка является артикль
the. Исходя из этого попробуйте определить, каким символам шифро-
ванного текста соответствуют буквы t и h.
• Расшифруйте оставшуюся часть сообщения, опираясь на логику, ис-
пользующую другие подходящие слова-
Предупреждение. Хотя сообщение написано и на английском языке, на
первый взгляд оно может показаться бессмысленным.
5. Один из методов решения проблемы обмена ключами состоит в использо-
вании строки из книги, которая имеется в распоряжении и отправителя, и
получателя сообщения. Обычно (во всяком случае в шпионских романах) в
качестве ключа служит первая фраза книги. Схема, показанная в этой за-
даче ниже, взята из одного из лучших романов, в которых описываются
методы секретного кодирования, — из романа Руфи Рендел (Ruth Rendell)
Talking to Strange Men Попробуйте решить эту задачу, не обращаясь к
помощи книги.
2.5. ЗАДАЧИ
77
Рассмотрим следующее сообщение.
SIDKHKDM AF HCRKIABIE SHIMC КО LFEAILA
Данный текст был получен с использованием первой фразы, взятой из
книги о шпионе Киме Филби “Обратная сторона молчания" (The Other Side
of Silence): “The snow lay thick on the steps and the snowflakes driven by
the wind looked black in the headlights of the cars”.
Для шифрования использовался простой подстановочный шифр.
• Какой алгоритм шифрования применялся?
• Насколько он надежен?
• Чтобы упростить решение задачи обмена ключами, >бе стороны догово-
рились взять в качестве ключа первую или последнюю фразу некоторой
конкретной книги. При необходимости смены ключа они просто долж-
ны договориться о том, какую новую книгу выбрать. Оказывается, что
первую фразу использовать предпочтительнее, чем последнюю. Как вы
думаете почему?
в. При проведении одного расследования Шерлок Холмс столкнулся с необ-
ходимостью расшифровать следующее сообщение.
534 С2 13 127 36 31 4 17 21 41
DOUGLAS 109 293 5 37 BIRLSTONE
26 BIRLSTONE 9 127 171
Ватсон был озадачен, но Холмс сразу же определил тип шифра. Сможете
ли эго сделать вы?
7. Недостатком обычного моноалфавитного шифра является то, что и отпра-
витель, и получатель должны помнить ключевую последовательность
шифра Общепринятым приемом в данном случае является запоминание
некоторого ключевого слова, по которому можно воссоздать ключевую по-
следовательность шифра Например, имея ключевое слово CIPHER, запи-
шем сначала это слово, а затем в алфавитном порядке все остальные еще
не задействованные буквы алфавита.
Открытый текст: ahcdefqhlj klmnopqrstuvwxyz
Шифр: CIPHERABDFGJKLMKOQSTUVWXYZ
Если вам кажется, что эта процедура не позволяет надежно скрыть струк-
туру сообщения, запишите оставшиеся буквы в виде нескольких строк
той же длины, что и ключевое слово, а затем постройте ключевую после-
довательность, считывая буквы столбец за столбцом.
CIPHER
А В D F G J
К L М N О Q
S Т U V W X
Y Z
В результате получаем следующую последовательность.
78
ГЛАВА 2 ТРАДИЦИОННОЕ ШИФРОВАНИЕ: КЛАССИЧЕСКИЕ МЕТОДЫ
CAKSYUbLT3PjMDHFNVEG0WRJQX
Именпс такой подход использовался в примере из раздела 2.3. Определите
ключевое слово, выбранное для того примера.
8. Сколько возможных ключей позволяет использовать шифр Плейфейра?
Выразите ответ в приблизительной оценке степени 2.
9, Как было показано, шифр Хилла уязвим с точки зрения попыток взлома
при наличии достаточного числа пар соответствия открытого и шифрован-
ного текстов. Однако еще проще взломать шифр Хилла, используя анализ
с избранным открытым текстом. Опишите методику такого анализа.
2.5 ЗАДАЧИ
79
ГЛАВА
Традиционное
шифрование:
современные
методы
Все время после обеда Манго потратил на работу с кодом
Штерна, в основном только вади последних сообщений, кото
рые ему удалось скопировать на Невин-сквер. Штерн был слиш-
ком. уверен в себе Он, без сомнения, отдавал себе полный отчет
в том, что Лондонский центр знает об этой утечке. Очевидно,
их мало заботило то, что Манго читает их сообщения, — на-
столько они были уверены в надежности своего кода.
Руфь Рендрл (Ruth Rendell). Talking to Strange Men
В этой главе мы собираемся обсудить те принципы, на
которых основаны современные методы традицион-
ного шифрования. С этой целью мы рассмотрим се-
мейство наиболее широко используемых алгоритмов шиф-
рования, получивших название DES (Data Encryption Stan-
dard — стандарт шифрования данных). Хотя со времени
создания DES было разработано много других алгоритмов,
основанных на применении схемы традиционного шифро-
вания. DES по-прежнему остается самым важным из них.
Кроме того, подробное изучение DF.S позволит понять
принципы, заложенные в основу других алгоритмов тради-
ционной схемы, о которых мы поговорим в главе 4.
В сравнении со схемами на основе открытого ключа, например в сравнении с
KSA, структура DES, равно как и большинства других алгоритмов традиционной
схемы, очень сложна и поэтому не может быть описана так просто, как структу-
ра RSA и ему подобных алгоритмов. Ввиду этого мы сначала рассмотрим упро-
щенную версию DES. Для этой версии читатель сможет выполнить шифрование
и дешифрование сообщений вручную, чтобы разобраться в деталях работы алго-
ритма. Опыт преподавания показывает, что предварительное изучение упрощен-
ной версии значительно облегчает понимание DES?
После изучения упрощенной версии DES мы рассмотрим общие принципы по-
строения симметричных блочных шифров, которые тоже относятся к алгоритмам
традиционной схемы шифрования. Затем мы перейдем к изучению полной версии
DES. Ознакомившись со структурой данного конкретного алгоритма, мы снова
вернемся к вопросам, связанным с общими принципами работы блочных шифров.
3.1. Упрощенный DES МИ
Упрощенный DES — это алгоритм шифрования, имеющий, скорее, учебное,
чем практическое значение. По свойствам и структуре он подобен DES, но имеет
горазд^ меньше параметров Данный алгоритм был разработан профессором Эд-
вардом Шейфером (Edward Schaefer) из Университета Санта-Клара [SHA96]. При
чтении данного раздела читателям рекомендуется выполнить рассмотренные в
предлагаемом ниже примере действия вручную/
Общие сведения
На рис. 3.1 показана общая структура упрощенного алгоритма DES. который
мы в дальнейшем будем для краткости называть S-DES. Данный алгоритм полу-
чает на входе 8-битовый блок открытого текста (например, 10111101) и 10-
битовый ключ, а на выходе генерируется 8-битовый блок шифрованного текста.
Алгоритм дешифрования S-DES в качестве исходных данных использует 8-
битовый блок шифрованного текста и тот же 10-битовый ключ, который приме-
нялся для шифрования, а в результате работы алгоритм дешифрования должен
генерировать 8 битовый блок открытого текста.
Алгоритм шифрования включает последовательное выполнение пяти опера-
ций; начальной перестановки IP, сложной функции , являющейся композици-
ей операций перестановки и подстановки и зависящей от полученного ключа,
перестановки SW, при которой две половинки последовательности данных про-
сто меняются местами, еще раз функции fK и, наконец, перестановки, обратной
начальной (IP *). Как уже упоминалось в главе 2, использование нескольких по
следовательных перестановок и подстановок приводит к получению алгоритма,
значительно более сложного для криптоанализа.
При первом чтении без какого-либо ущерба для восприятия последующего мяте риала вы мо-
жете пропустить раздел 3.1. Если же тонкости организации DES покажутся вам слишком
сложными, вы всегда сможете вернуться к данному разделу и разобраться сначала с упрощен-
ным алгоритмом DES.
2
Данный раздел построен на осьове материала статьи Э. Шейфера.
3 1 УПРОЩЕННЫЙ DES
81
Функция f„ использует в качестве исходных данных не только шифруемый
текст, но и 8-битовый ключ. Алгоритм можно построить так, чтобы он работал с
16-битовым ключом, состоящим из двух 8-битовых подключей, применяемых по
отдельности каждый для своего вызова функции fK. Можно использовать и 8-
битовый ключ, для чего просто следует ввести его дважды. Наконец, можно
прибегнуть к комбинированному решению, когда требуется J О-битовый ключ, из
которого генерируются два 8-битовых, как показано на рис. 3 1. В этом случае
ключ сначала преобразуется путем перестановки (РЮ). После этого применяется
операция сдвига, а полученные в ее результате данные поступают на вход пере-
становки (Р8), которая генерирует первый 8-битовый подключ (KJ. Те же полу-
ченные в результате операции сдвига данные постукают на вход другой опера-
ции сдвига и другой функции перестановки (Р8), в результате чего генерируется
второй подключ (К,).
10-бит <>вый ключ
8-битовый блок
шифрованного текста
8-битовый блок
шифрованного текста
Рис. 3.1. Схема упрощенного алгоритма DES
82
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ. СОВРЕМЕННЫЕ МЕТОДЫ
Данный алгоритм можно представить в виде композиции функций:
IP" о 4 о SW =Л, с IP .
или, иначе,
шифрованный текст = IP *( fkl (SW (fKl (IP (открытый текст))))),
где К, = Р8(сдвиг(Р10(ключ))),
К. = Р8(сдвиг(сдвиг(Р10(ключ)))).
Процесс дешифрования, также представленный на рис. 3.1, до сути, является
процессом, обратным процессу шифрования:
открытый текст = JP"(fKi(SW(fKi(IP(шифрованный текст))))).
Теперь давайте разберем, элементы алгоритма S UES более подробно.
Вычисление ключей S-DES
В алгоритме S-DES используется 10-битовый ключ, который должен быть как
у отправителя, так и у получателя сообщения. Из этого ключа на определенных
этапах шифрования и дешифрования генерируется два 8-битовых подключа. На
10-битовый ключ
Рис. 3.2. Вычисление ключей S DES
3.1. УПРОЩЕННЫЙ DES
83
рис. 3.2 показана схема процедуры создания этих подключей.
Сначала выполняется перестановка битов ключа следующим образом. Если
10-битовый ключ представить в виде (Л,, , ka, kt, , k, , k,, k,, k,„), то пере-
становку PIO можно задать формулой
PlOf tlljk2-tkafkitkb , fk, k , Д, » & , ) (^3 j i fc. . & )
Можно также представить перестановку РЮ в следующей табличной форме.
РЮ
CVJ Ю 7 4 10 1 9 8 6
Эту таблицу следует читать слева направо. Каждый ее элемент идентифицирует
позицию бита исходных данных в генерируемой выходной последовательности.
Иными словами, первым битом в выходной последовательности будет третий бит
исходной последовательности, вторым — пятый и т.д. Например, в соответствии с
данной таблицей ключ (101U000010) будет преобразован к виду (1000001100). По-
сле этого отдельно для первых пяти битов и отдельно для вторых выполняется
циклический сдвиг влево (LS-1), который еще называют вращением. В нашем слу-
чае и результате будет по.тучена последовательность (00001 11000).
Затем применяется перестановка Р8, в результате которой из 10-битового клю-
ча сначала выбираются, а затем переставляются 8 битов по следующему правилу.
Р8
6 3 7 4 8 5 10 9
В результате этой операции получается первый подключ (К ). В нашем при-
мере он будет иметь вид (10100100).
Теперь нужно вернуться к двум 5-битовым строкам, полученным в результате
применения функций LS-1, и выполнить с каждой из этих строк циклический
сдвиг влево на две позиции (LS-2). В нашем конкретном случае значение
(00001 11000) будет преобразовано к виду (00100 00011). Наконец, применив к
полученной ь результате последовательности перестановку Р8, получим подключ
К. Для нашего примера результатом будет (01000011).
Шифрование S-DtS
На рис. 3.3 представлена более подробная схема алгоритма шифрования S-DRS.
Как уже упоминалось, процесс шифрования представляет собой последовательное
выполнение пяти операций, которые мы рассмотрим здесь каждую в отдельности.
Начальная и завершающая перестановки
На вход алгоритма поступает 8-битовый блок открытого текста, к которому
применяется начальная перестановка, заданная функцией IP.
IP
2 6 3 1 4 8 5 7
84
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ СОВРЕМЕННЫЕ МЕТОДЫ
Рис. 3.3. Подробная схема шифрования S DES
Все 8 битов открытого текста сохраняют свои значения, но меняется порядок
их следования. На завершающей стадии алгоритма выполняется обратная пере-
становка.
IP'1
4 1 3 5 7 2 8 Ь
3.1. УПРОЩЕННЫЙ DES
86
Как легко убедиться с помощью простой проверки, вторая из приведенных
выше перестановок действительно является обратной по отношению к первой,
т.е. IP’(1P(X)) = X.
Функция (к
Самым сложным компонентом S-DES является функция fk, представляющая
собой комбинацию перестановки и подстановки. Пусть L и Н означают соответ-
ственно первые 4 бита и последние 4 бита 8-битовой последовательности, пода-
ваемой на вход fK, и пусть F — некоторое отображение пространства 4 битовых
строк в себя, не обязательно являющееся взаимно однозначным Тогда положим
fK(Z, R) = (L® F(fi, SK), R),
где SK обозначает подключ, а © — операцию XOR (побитовое исключающее
“ИЛИ")- Например, если в результате применения функции 1Р (рис. 3.3) получе-
но значение (101111U1) и F(1101, SK) = (1110) для некоторого ключа SK, то
fK(10111101) = (01011101), так как (1011)Ф(1110) = (0101).
Теперь опишем отображение F. На входе этого отображения имеем 4-битовое
значение (п, п, п, п4) Первой операцией является операция расширения/пере-
становки.
Е/Р
4 1 2 3 2 3 4 1
Для дальнейшего рассмотрения удобнее
представить результат в следующей
форме:
Л, П, П, Oj
Tlj П-j ZI4 Hq
К этому значению с помощью операции X0R добавляется 8-битовый подключ
К. = ( . k«. fe,.. ku . К.):
n4+ftu П, + Лц П^ + А,, П,+&1.
+ Ли л, - fe. л< + п, + А*,
Давайте переименуем полученные в результате 8 битов, как показано ниже.
Р о Род Ро.з Род
Pl,0 Р1 1 Pl о Р| >
Первые четыре бита (первая строка приведенной выше матрицы) поступают
на вход модуля S0, на выходе которого получается 2-битовая последователь-
ность, а оставшиеся четыре бита (вторая строка матрицы) — на вход модуля S1,
на выходе которого получается другая 2-битовая последовательность. Модули S0
и S1 можно определить так1
86
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Эти S-модули (матрицы кодирования) работают следующим образом. Первый
и четвертый биты входной последовательности рассматриваются как 2-битовые
числа, определяющие строку, а второй и третий — как числа, определяющие
столбец S-матрицы. Элементы, находящиеся на пересечении соответствующих
строки и столбца, задают 2-битовые выходные значения. Например, если
(д,.. А») - (°0) и (р01/?□,„)=* (10), то выходные 2 бита задаются значением, кото-
рое находится на пересечении строки 0 и столбца 2 матрицы S0 (оно равно 3 или
(11) в двоичном представлении). Точно так же (р10Рц) и (р1л р,.,) служат для
определения строки и столбца матрицы S1, на пересечении которых стоит зна-
чение, задающее вторые 2 бита.
Теперь 4 бита, полученные на выходе модулей S0 и S1, преобразуются с по-
мощью перестановки следующим образом.
Р4
2 4 3 1
Результат применения перестановки Р4 и является результатом функции F
Функция-переключатель
Функция fK изменяет только четыре левых бита. Поэтому следующей опера-
цией В алгоритме шифрования является использование функции SW, которая
меняет местами первые и последние четыре бита последовательности, чтобы при
следующем вызове функции fK последняя работала уже с другой четверкой би-
тов. При втором вызове fs функции Е/Р, SO, S1 и Р4 остаются теми же, что и
при первом, но вместо ключа К( используется ключ К,.
Анализ S-DES
Добиться успеха при взломе алгоритма S DES с помощью простого перебора
всех возможных вариантов довольно легко, так как в случае с 10-битовым клю-
чом достаточно перебрать всего 210 = 1024 варианта. При наличии шифрованного
текста аналитик может последовательно применять для расшифровки все воз-
можные ключи и анализировать получаемые результаты на предмет того, похо-
жи ли они на открытый текст.
Но что можно сказать о настоящем криптоанализе? Давайте рассмотрим ме-
тод анализа с известным открытым текстом при условии. что в распоряжении
аналитика есть один фрагмент открытого теста (р,, рг, р,, р<, pt, р,, р,, р,) и со-
ответствующий фрагмент шифрованного текста (с,, с,, с,, е,, е„, с,, с,, с, ), а клю-
ча (А,, А,, k,, k<, fe,, k,, fc , A, , k,, A,o) у аналитика нет. Каждый элемент с, можно
представить как полиномиальную функцию gt от аргументов р, и k,. В таком
3.1. УПРОЩЕННЫЙ DES
87
представлении параметры алгоритма шифрования задаются решениями 8 нели-
нейных уравнений с 10 неизвестными. Такая система может иметь множество
различных решений, но все они поддаются вычислению и анализу. Все переста-
новки и вспомогательные операции в алгоритме задаются линейными преобразо-
ваниями. Нелинейность привносится в систему S-матрицами. Давайте выпишем
уравнения, которые задаются этими матрицами. Чтобы упростить запись, поло-
жим (рс р01, р0>1, ₽-,.») = (<*» с> d)> (At» А» Р1.1- Р>,з) - (w, У1 , а 4 битовый
результат запишем в виде (q,r,s.t). Тогда операция, задаваемая модулем S0,
может быть представлена в виде уравнений
q - abed + ab + ас + b + d,
г - abed -t- ahd + ab + ac + ad + a + c-rl,
где все операции сложения выполняются по модулю 2. Подобные уравнения
описывают работу модуля S3. В совокупности с линейными уравнениями данные
нелинейные уравнения порождают довольно сложные полиномиальные выраже-
ния для вычисления битов шифрованного текста, что превращает криптоанализ
в непростую задачу. Чтобы показать сложность проблемы, заметим, что полино-
миальное уравнение с 10 неизвестными в двоичной арифметике может иметь до
210 членов. Поэтому можно ожидать, что в среднем каждое из 8 уравнений будет
иметь 2" членов. Вы можете попытаться построить эти уравнения с помощью
какого нибудь программного пакета, поддерживающего операции символьной
математики. Скорее всего, либо вы сами оставите такие попытки, либо про-
граммный пакет откажется выполнять вычисления прежде, чем станет замет-
ным хоть какой-то прогресс.
Связь с DES
На вход алгоритма DES подаются блоки по 64 бита. Схема шифрования мо
жет быть представлена в виде
IP ' . fK15 о SW о fKl5 о SW ° ...< SW и fK( о IP .
Для шифрования используется 56-битовый ключ, на основе которого генери-
руется шестнадцать 48 битовых подключей. После начальной перестановки 56-
битовой последовательности выполняется цепочка операций сдвига и переста-
новки 48-битовых последовательностей.
В самом алгоритме шифрования функция F имеет дело не с 4-битовыми последо-
вательностями ас 32-битовыми последовательностями (п, п„). После
первой операции расширения/перестановки (Е/Р) получается выходная последова-
тельность размером 48 битов, которую можно представить в виде диаграммы
я ... з я а -г а й к £ е г е к е s£ е • к
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ СОВРЕМЕННЫЕ МЕТОДЫ
Определяемое данной матрицей значение складывается (с помощью операции
XOR) с 48 битовым подключом. В данной матрице 8 строк, каждая из которых
задает свою S-матрицу. Каждая из S-матриц состоит из 4 строк и 16 столбцов.
По первому и последнему битам строки представленной выше матрицы выбира
ется строка S-матрицы, а пи оставшимся 4 битам — столбец.
3.2. Принципы блочного шифрования
Практически все алгоритмы симметричного блочного шифрования, исполь-
зуемые в наши дни, основаны на структуре, получившей название "блочный •
шифр Файстеля” (Feistel block cipher) (FEISTS). В этой связи очень важно понять
принципы, на которых построен шифр Файстеля. Мы начнем со сравнения по-
точных и блочных шифров, а затем выясним предпосылки создания шифра Фай-
стеля. Наконец, мы обсудим и некоторые практические реализации соответст-
вующего алгоритма.
Поточные и блочные шифры
Поточными называются шифры, в которых поток цифровых данных шифру-
ется последовательно бит за битом или байт за байтом. Примерами классических
поточных шифров являются шифры Виженера (с автоматическим выбором клю-
ча) и Вернама. Блочными называются шифры, в которых логической единицей
шифрования яатяется некоторый блок открытого текста, после преобразований
которого получается блок шифрованного текста такой же длины. Обычно ис-
пользуются блоки размером 64 бита. В некоторых режимах шифрования, о ко-
торых пойдет речь ниже, блочные шифры оказываются такими же эффективны-
ми, как и поточные.
Блочные шифры изучены гораздо лучше. В общем считается, что они обла- г
дают более широкой областью применения, чем поточные. Большинство сетевых
приложений, в которых применяется схема традиционного шифрования, исполь-
зуют блочные шифры Именно поэтому как в этой главе, так и в других главах
книги, при обсуждении симметричных систем шифрования, мы будем рассмат-
ривать только блочные шифры.
Предпосылки создания шифра Файстеля
Блочный шифр предполагает преобразование п-битового блока открытого тек-
ста в блок шифрованного текста такого же размера. Число различных блоков
при этим равно 2", и, чтобы шифрование было обратимым (т е. чтобы обеспечи-
валась возможность дешифрования), каждый из таких блоков должен преобра-
зовываться в свой уникальный блок шифрованного текста. Такие преобразова-
ния называются обратимыми, или несингулярными. Вот примеры несингулярно-
го и сингулярного преобразований для п - 2.
3.2. ПРИНЦИПЫ БЛОЧНОГО ШИФРОВАНИЯ
89
Обратимое отображение Необра1имое отображение
Открытый Шифрованный Открытый Шифрованный
текст текст текст текст
00 11 00 11
01 10 01 10
10 00 10 01
11 01 11 01
В данном примере в случае необратимого отображения шифрованный текст
01 соответствует двум разным блокам открытого текста. Если ограничиться рас-
смотрением только обратимых отображений, число различных допустимых пре-
образований окажется равным 2"!.
На рис. 3.4 показана общая схема подстановочного шифра для п = 4. Посту-
пающее на вход 4-битовое значение определяет одн./ из 16 возможных началь-
ных состояний, которое отображается подстановочным шифром в одно из 16
уникальных конечных состояний, каждое из которых представляется 4-битовым
значением шифрованного текста. Схемы шифрования и дешифрования можно
представить в виде таблиц (табл. 3.1) Это самая обшая схема процесса блочного
шифрования, которая может служить для разработки любого обратимого соот
ветствия между открытым и шифрованным текстом,
4-битовый ввод
Рис. 34. Общая схема поблочной подстановки п битовых блоков (случай п = 4)
90
ГЛАВА 3- ТРАДИЦИОННОЕ ШИФРОВАНИЕ; СОВРЕМЕННЫЕ МЕТОДЫ
Таблица 3.1. Таблицы шифрования и дешифрования для подстановочного
шифра, показанною на рис. 3.4
Открытый текст Шифрованный текст Открытый текст Шифрованный текст
ОООО 1110 0000 НЮ
0001 0100 0001 ООН
0010 1101 0010 0100
ООН 0001 00)1 1000
0100 0010 0100 0001
0101 1111 1)101 )1и0
оно 1011 ОНО )010
0111 1000 0111 1111
1000 ООН 1000 0111
1001 1010 1001 1101
1010 0110 1010 1001
1011 1100 1011 оно
1100 0101 1100 1011
1101 1001 1101 0010
1110 0000 1110 0000
1111 0111 1111 0101
Однако при практической реализации данного подхода возникает следующая
проблема. Если использовать блок небольшого размера, например п — 4, система
оказывается эквивалентной классическому подстановочному шифру. Как мы уже
видели, такие системы уязвимы и могут быть раскрыты с помощью статистиче-
ского анализа открытого текста. Этот недостаток порождается не самой приро-
дой подстановочного шифра, а использованием коротких блоков. При достаточно
больших значениях п и отсутствии каких-либ ограничений на обратимую под-
становку, задающую преобразование открытого текста в шифрованный, стати-
стические характеристики исходного открытого текста маскируются настолько
хорошо, что такого рода криптоанализ становится практически бесполезным.
В то же время предположение о допустимости любых обратимых подстановок при
больших размерах блоков оказывается весьма непрактичным с точки зрения реали-
зации ааюритма и скорости выполнения соответтвующсго приложения. Для такого
преобразования ключом является само отображение. Обратимся снова к табл. 3.1,
которая определяет конкретное обратимое отображение пространства открытых тек-
стов в пространство шифрованных для п = 4 Отображение можно задать элемента-
ми из второго столбца таблицы, в котором приведены значения шифрованного тек-
ста для соответствующих значений открытого текста. Это, по сути, и есть ключ, ко-
торый отличает данное конкретное отображение от всех других допустимых
отображений. В нашем, случае длина ключа оказывается равной 64. Обычно для
блочного шифра с n-битовым подстановочным блоком размер ключа равен лх2" .
3.2. ПРИНЦИПЫ БЛОЧНОГО ШИФРОВАНИЯ
91
Если блок имеет размер 64 бита (при таком размере блока шифр уже может ус-
пешно противостоять попыткам взлома с помощью статистического анализа), то
размер ключа составит 64 x2м = 270 = 10*' битов.
Занимаясь изучением данной проблемы, Файстель предложил для больших л
аппроксимировать такую идеальную систему блочного шифрования набором про-
стых для реализации компонентов [FEJS75] Но прежде чем приступить к непо-
средственному обсуждению предложенного Файстелем подхода, хотелось бы об
ратить ваше внимание на следующий момент. Мы не можем позволить себе ра-
ботать с блочным подстановочным шифром общего вида, но, чтобы
соответствующий алгоритм реализовать программным методом, можно вместо
всех 2я! допустимых отображений рассмотреть некоторое более узкое подмноже-
ство. Например, предположим, что наши отображения задаются системой ли-
лейных уравнений. Для п = 4 мы получим
У1 = к„х, + к,3х, + kiax3 + kI4x4,
у, = k21x, + кихж + kax3 + kt4x4,
ya = к3|х, + k,2x2 -i- kMx3 + k14x4,
y4 = k4,x, + k4.x2 + k43xa + k44x4,
где x, обозначает четыре двоичные цифры блока открытого текста, у — четыре
двоичные цифры блока шифрованного текста, ktj — двоичные коэффициенты, а
все арифметические операции выполняются по модулю 2. Длина ключа равна
пг, и в данном случае это всего 16 битов. Опасность задания отображений фор
мулами заключается в том, что в случае, когда структура такого алгоритма ока-
зывается доступной криптоаналитику, система может стать весьма уязвимой. Е
данном примере система шифрования, по сути, эквивалентна шифру Хилла,
описанному в главе 2, но в применении не к текстовым символам, а к двоичным
данным. Как мы видели в главе 2, подобные простые линейные системы защи-
щены весьма слабо.
Шифр Файстеля
В своей работе [FEIS73) Файстель предложил аппроксимировать подстановоч-
ный шифр продукционными шифрами, которые строятся на последовательном
применении как минимум двух базовых шифров с тем, чтобы полученный ре-
зультат обладал более высокой стойкостью по сравнению с любым из этих базо-
вых шифров в отдельности. В частности, Файстель предложил шифр, в котором
попеременно используются и подстановки, и перестановки. Фактически данное
предложение является практическим применением идеи Клода Шеннона (Claude
Shannon) разработать продукционный шифр, в котором попеременни использо-
вались бы функции диффузии и коифузии. Давайте сначала рассмотрим понятия
диффузии И конфузии, а затем перейдем к обсуждению шифра Файстеля. Но
прежде всего стоит упомянуть один весьма примечательный факт: структура
шифра Файстеля, разработанная четверть века тому назад и, в свою очередь,
опирающаяся на идею Шеннона, высказанную еше в 1945 г., сегодня является
структурой, на основе которой построены все практически значимые симметрич-
ные схемы блочного шифрования.
92
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Диффузия и конфузия
Термины диффузия (diffusion) и конфузия (confusion) были введены в шиф-
рование Клодом Шенноном для того, чтобы охарактеризовать два основных
строительных блока криптографических систем [SHAN49].3 Основной задачей,
которую ставил перед собой Шеннон, было воспрепятствовать попыткам крип-
тоанализа, основанным на статистическом анализе сообщений. Шеннон исполь-
зовал следующие аргументы. Предположим, противник обладает некоторыми
сведениями о статистических характеристиках открытого текста. Например, для
обычных текстовых сообщений могут быть известны данные о распределении
частот использования букв соответствующего языка Или могут быть известны
отдельные слова или фразы, вероятность присутствия которых в сообщении дос-
таточно высока (вероятные слова). Если подобные статистически выявляемые
закономерности каким-либо образом проявятся в шифрованном тексте, у крип-
тоаналитика появится возможность определить ключ шифрования, или его со-
ставляющие. или хотя бы сузить пространство вероятных ключей. Шеннон вво-
дит понятие идеального шифра — шифра, который полностью скрывает в шиф-
рованном тексте все статистические закономерности открытого текста.
Примером такого шифра является рассмотренный нами ранее (см. рис. 3.4) под-
становочный шифр с произвольной подстановкой, но, как мы видели, такой
шифр практически нереатизуем.
Помимо обращения к идеальным системам, Шеннон предложил два метода,
задачей которых является затруднение криптоанализа: диффузию и конфузию.
Суть диффузии заключается в рассеянии статистических особенностей открытого
текста по широкому диапазону статистических характеристик шифрованного
текста. Это достигается тем, что значение каждого элемента открытого текста
влияет на значения многих элементов шифрованного текста или, что оказывает-
ся эквивалентным сказанному, любой из элементов шифрованного текста зави-
сит от множества элементов открытого текста. Примером применения метода
диффузии является шифрование сообщения М = mt т, т, .. с помощью опера
ции усреднения
к
Уп ~ 26),
i=i
когда для получения буквы у„ шифрованного текста складываются k последова-
тельных букв открытого текста. Можно показать, что в этом случае статистиче-
ские характеристики открытого текста “распределяются" по шифрованному тек-
сту. Поэтому в шифрованном тексте частотные характеристики использования
букв будут более близкими к равномерным. Точно так же более близкими к рав-
Эта статья Шеннона, опубликованная ч 1949 г., изначально представляла собой закрытый
отчет, подготовленный еще в 1945 г. Шеннон занимает выцающееся и уникальное положение в
истории компьютерных наук и информатики. Он является не только автором оригинальных и
плодотворных идей, которые легли в основу современной криптографии, но и создателем дис-
циплины, которая называется теперь теорией информации. Кроме то~о, он основал еще одну
дисциплину, суть которой в применением булевых алгебр для исследования цифровых элек-
тронных цепей, — эту идею он использовал для своей магистерской диссертации.
3.2. ПРИНЦИПЫ БЛОЧНОГО ШИФРОВАНИЯ
93
номерным будут частоты использования биграмм, триграмм и т.д. В блочных
шифрах, имеющих дело с двоичными данными, диффузии можно достичь путем
нескольких последовательных перестановок данных с последующим применением
к результату перестановки некоторой функции — в итоге в формировании каждого
бита шифрованного текста будет участвовать множество битов открытого текста.4
В любом блочном шифре используется зависящее от ключа преобразование
блока открытого текста в блок шифрованного текста, Механизм диффузии при-
зван сделать статистическую взаимосвязь между открытым и шифрованным тек-
стами как можно сложнее, чтобы в максимальной степени усложнить задачу оп-
ределения ключа из такой взаимосвязи. Что касается кояфузии, то перед ней
ставится задача в максимальной степени усложнить статистическую взаимосвязь
между шифрованным текстом и ключом опять же с целью противостояния по-
пыткам определить ключ. Таким образом, даже если противник сумеет опреде-
лить какие-либо статистические особенности шифрованного текста, сложность
использования ключа для получения шифрованного текста должна оказаться
достаточной для того, чтобы попытки определить ключ на основании этих стати-
стических особенностей оказались безрезультатными. Это достигается использо
ванием сложных подстановочных алгоритмов: простые линейные подстановоч-
ные функции увеличивают беспорядок лишь в незначительной степени.
Как отмечено в [ROBS9S], понятия диффузии и конфузии оказались настоль-
ко удачными с точки зрения описания сути желаемых характеристик блочных
шифров, что эти термины стали базовыми для всех разработчиков современных
шифров этого типа.
Структура шифра Файстеля
На рис. 3.5 показана структура шифра, предложенного Файстелем. На вход ал-
горитма шифрования подается блок открытого текста длиной 2ш битов и ключ К
Блок открытого текста разделяется на две равные части, Ld и Ro, которые после-
довательно проходят через п раундов обработки, а затем объединяются снова для
получения блока шифрованного текста соответствующей длины. Для раунда i в
качестве входных данных выступают L(_, и Rb), полученные на выходе преды
дущего раунда, и подключ К,, вычисляемый по общему ключу К. Как правило,
все подключи К, отличаются как от общего ключа К, так и друг от друга.
Все раунды обработки проходят по одной и той же схеме. Сначала для левой
половины блока данных выполняется операция подстановки. Она заключается в
применении к правой половине блока данных некоторой функции раунда F и по-
следующем сложении полученного результата с левой половиной блока данных с
помощью операции XOR (исключающего “ИЛИ”). Для всех раундов функция
раунда имеет одну и ту же структуру, но зависит от параметра — подключа ра-
унда К,. После подстановки выполняется перестановка, представляющая собой
4
В некоторых книгах о криптографии перестановки и диффузия отождествляются. Это аекор-
ректяо. Перестановки сами по себе никак не меняют статистические характеристики открыто-
го текста на уровне отдельных букв или переставляемых блоков. Например, в DES перестанов-
ка меняет местами 32 битовые блоки, при этом статистические характеристики 32-битовых и
более коротких строк остаются неизменными.
94
ГЛАВА 3, ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
обмен местами двух половин блока данных.5 Вся эта структура в целом является
частным случаем так называемой подстановочно-перестановочной схемы (SPN —
substitution-permutation network), предложенной Шенноном.
Рис. 3.5. Классическая схема Файстеля
По завершении последнего раунда выполняется еще одна перестановка, которая, по сути, от-
меняет перестановку, выполненную в последнем раунде. Поэтому, пожертвовав лишь внешней
согласованностью представления, эти две перестановки из схемы можно удалить. Как мы уви-
дим ниже, причиной реального отсутствия перестановки в последнем раунде шифрования яв-
ляется стремление упростить процесс дешифрования.
3.2. ПРИНЦИПЫ БЛОЧНОГО ШИФРОВАНИЯ
96
Практическая реализация схемы Файстеля зависит от выбора значений сле-
дующих параметров и конструктивных особенностей.
• Размер блока, Чем больше размер блока, тем выше надежность шифра
(при прочих равных условиях), но тем ниже скорость выполнения опера
ций шифрования и дешифрования. Разумным компромиссом является
блок размером 64 бита, который является сегодня практически универ-
сальным для всех блочных шифров.
Размер ключа. Чем длиннее ключ, тем выше надежность шифра, но боль-
шая длина ключа тоже может быть причиной слишком медленного вы-
полнения операций шифрования и дешифрования. На сегодня ключи дли-
ной 64 бита и меньше считаются недостаточно надежными — обычно ис-
пользуются 128-битовые ключи
Число раундов обработки. Суть идеи шифра Файстеля в том, что за один
раунд обработки данных обеспечивается недостаточно высокая надеж-
ность, но уровень надежности шифра повышается с каждым новым раун-
дом обработки. Как правило, число раундов выбирают равным 16.
Алгоритм вычисления подключей. Чем сложнее этот алгоритм, тем в
большей степени затрудняется криптоанализ шифра.
Функция раунда. Здесь, опять же, усложнение, как правило, введет к по-
вышению стойкости шифра с точки зрения криптоанализа.
Кроме того, имеется еще два фактора, которые приходится принимать во
внимание при построении любой реализации шифра Файстеля (мы вернемся к
ним ниже в этой и следующих главах).
I Скорость выполнения программ шифрования/дешифрования Часто
функции шифрования встраиваются в приложения или утилиты, чтобы
избежать необходимости аппаратной реализации шифрования. В таких
случаях важным фактором оказывается скорость программного выполне-
ния алгоритма.
• Простота анализа. Хотя нашей задачей является создание такого алго-
ритма, который для криптоанализа был бы настолько сложным, насколько
это возможно, все же весьма выгодно, чтобы сам такой алгоритм оставался
простым для понимания. Иными словами, если алгоритм прост и понятен,
его легче анализировать с точки зрения уязвимости для криптоанализа и,
следовательно, легче совершенствовать с целью достижения более высоко-
го уровня надежности. Алгоритм DES, например, нельзя отнести к алго-
ритмам, слишком простым для анализа.
Возвращаясь к рис. 3.1 и 3.3, заметим, что S-DES использует схему Файстеля
с двумя раундами обработки данных. Единственное отличие от ‘•истинной” схе-
мы Файстеля в том, что алгоритм S-DES и начинается, и завершается выполне-
нием перестановки. Это же отличие характерно и для полнофункционального
алгоритма DES.
96
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Алгоритм дешифрования
Процесс дешифрования шифра Файстеля принципиально не отличается от
процесса шифрования. Применяется тот же алгоритм, но на вход подается шиф-
рованный текст, а подключи К, используются в обратной последовательности:
для первого раунда берется подключ К,,, для второго — К„ j и так далее, пока
не будет введен ключ К, для последнего раунда. Это свойство данной схемы
шифрования оказывается очень удобным, так как для дешифрования не требует-
ся вводить второй алгоритм, отличный от алгоритма шифрования.
Чтобы убедиться в том, что тот же алгоритм с обратным порядком выбора клю-
чей приводит к нужному результату (расшифрованному тексту), взгтяните на
рис. 3.6, на котором слева изображена схема шифрования из 16 раундов, а справа —
соответствующая ей схема дешифрования (результат не должен зависеть от числа
раундов, используемых в процессе шифрования данных). Для простоты мы обозна
чили данные, обрабатываемые алгоритмом шифрования, как LE, и RE, , а данные,
обрабатываемые алгоритмом дешифрования, — как LD, и RD,. Из схемы видно,
что на каждой стадии процесса дешифрования очередное промежуточное значение с
точностью до перестановки половинок этого значения равно промежуточному значе-
нию, получаемому на соответствующей стадии процесса шифрования. Чтобы пока-
зать это, обозначим выходное значение i-ro раунда шифрования через LE, || НЕ, (что
означает конкатенацию L, и R,-). Соответственно, входное значение для (16-i)-ro
раунда дешифрования будет записываться в виде LD, |l RD .
Давайте с помощью схемы, показанной на рис. 3.6, убедимся в справедливо-
сти высказанных выше утверждений/ По окончании последнего раунда процесса
шифрования две половины блока данных меняются местами, поэтому блок дан-
ных будет иметь вид RE,S |] LE.„. Этот блок данных и будет представлять собой
шифрованный текст. Возьмем этот шифрованный текст и используем его в каче-
стве входных данных того же самого алгоритма. Тогда на входе первого раунда
алгоритма мы получим значение RE„ || LEl0, равное значению результата 16-го
раунда шифрования с переставленными 32-битовыми половинами.
Теперь покажем, что результат первого раунда процесса дешифрования после
32-битового обмена будет равен значению, поступающему на вход 16-го раунда
шифрования. Сначала рассмотрим процесс шифрования. Здесь мы имеем
LE,„ — REn,
RE,. = LE1S ® F(RElb1 К,4).
С другой стороны, для процесса дешифрования получаем '
LD, « RDu = LE,. = RE,„,
RD = LD.® F(RDt,K,.)
= RE„ ©F(RE .,K„)
= (LEI 5 ® F(RE15,K16)J® F(RE15,K16).
e „ ,
С целью упрощения диаграмм в них не представлены операции обмена местами двух полови
нов блока, выполняющиеся в конце каждого раунда. И не забывайте, что промежуточный ре-
зультат i-го раунда шифрования представляет собой 2«'-битовое значение, получаемое конкате-
нацией LE, и RE, . а промежуточный результат i-ro раунда дешифрования представляет собой
2и--битовое значение, получаемое конкатенацией LD. и RD,.
3.2. ПРИНЦИПЫ Ш10ЧН0ГО ШИФРОВАНИЯ
97
Вывод (открытый текст)
Ввод (шифрованный текст)
i
1
Рис. 3.6. Шифрование и дешифрование по Файстелю
Операция XOR (исключающее "ИЛИ”) имеет следующие свойства:
[А ® BJG С = А ф[ВФС],
D©D = O,
Е® 0 = Е.
98
ГЛАВА 3- ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Поэтому мы получим LD, = RE1S и RD, = LE,S Таким образом, в результате
первого раунда процесса дешифрования будет получено значение LE15|IRE]S, ко-
торое после 32-битового обмена оказывается равным значению, подаваемому на
вход 16-го раунда шифрования. Несложно показать, что такое соответствие будет
выполняться для любого из 16 раундов пронесся. Для самого процесса можно вы
писать общую формулу. Для i-й итерации алгоритма шифрования имеем
LE, ~ RE, 1,
RE, = LE, 1 @F(RE; „К,).
Выполнив несложные преобразования, получим следующие выражения:
RE,_, = LE.,
LEM = RE, ® F(RE, НК,) = RE. Ф FILE,,К,).
Таким образом, мы выразили входные данные для i-й итерации в виде функ-
ций от выходных данных, и полученные равенства подтверждают равенства,
приведенные в правой части рис. 3 6.
Наконец заметим, что на выходе последнего раунда процесса дешифрования
получается значение RE., || LE„. Для восстановления исходного открытого текста
остается применить лишь 32-битовый обмен, что завершает доказательство при-
годности схемы Файстеля для процесса дешифрования.
Обратите внимание на то, что данное доказательство не требует, чтобы функ-
ция F была обратимой. Чтобы убедиться в этом, рассмотрите частный случай,
когда результат применения функции F является константой, не зависящей от
поступающих на вход значений ее двух аргументов (например, всегда равен 1).
Приведенные выше равенства останутся справедливыми.
3.3. Стандарт шифрования данных (DES) |
Самая популярная современная схема шифрования базируется на стандарте
DES (Data Encryption Standard — стандарт шифрования данных), принятом в
1977 году Национальным бюро стандартов (NBS) США, теперь называемым На-
циональным институтом стандартов и технологии (NIST). Этот стандарт получил
официальное имя Federal Information Processing Standard 46 (FIP§ PUB 46). В
соответствии с этим стандартом данные шифруются 64-битовыми блоками с ис-
пользованием 56 битового ключа. Многошаговый алгоритм преобразует посту-
пающие на вход 64-битовые блоки в 64-битовые блоки шифрованного текста- Тот
же алгоритм с тем же ключом служит для обратного преобразования шифрован-
ного текста в открытый.
Стандарт DES завоевал широкую популярность, неоднократно становясь при
этом объектом, полемики на тему обеспечиваемой им степени безопасности Что-
бы понять суть этой полемики, давайте вкратце рассмотрим историю создания и
становления DES
В конце 60-х IBM начала научно-исследовательский проект в области компью-
терной криптографии, который возглавил Хорст Файстель (Horst Feistel). В ре-
зультате работы над проектом к 1971 году был создан алгоритм под кодовым на-
3.3. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ (DES)
99
званием LUCIFER [FEIS73], который был продан банку Ллойда (Lloyd’s of London)
для использования в системе управления оборотом наличных денег, тоже разрабо-
танной IBM. Шифр LUCIFER представлял собой блочный шифр Файстеля, опери-
ровавший блоками размером 6-1 бита и использовавший ключ длиной 128 бптов.
Основываясь на многообещающих результатах проекта LUCIFER, IBM взяла курс
на создание коммерческого варианта шифра, который в идеале можно было бы
разместить в одной микросхеме. Это направление возглавили Уолтер Тач.ман
(Walter Tuchman) и Карл Мейер (Carl Meyer), подключившие к исследованиям не
только специалистов из IBM, но и консультантов и технических специалистов NSA
(National Security Agency — Управления национальной безопасности США). В ре-
зультате их усилий была создана усовершенствованная версия шифра LUCIFER,
обладающая большей устойчивостью к криптоанализу, но уменьшенным до 56 би-
тов ключом, чтобы алгоритм мог уместиться в одной микросхеме.
В 1973 году Национальное бюро стандартов объявило конкурс на лучший
проект по созданию общегосударственного стандарта шифрования. Компания
IBM представила на конкурс результаты проекта Тачмана-Мейера. Их алгоритм
оказался безусловно лучшим из всех предложенных, и в 1977 году он был ут-
вержден в качестве стандарта шифрования данных (DES).
Но прежде чем стать официальным стандартом, предложенный IBM алгоритм
был подвергнут жесткой критике, которая Не утихает и по сей день. Нападкам
подвергаются в основном две особенности шифра. Во-первых, в исходном алго-
ритме LUCIFER фирмы IBM использовались ключи длиной 128 битов, а в пред-
ложенном стандарте длина ключа уменьшена до 56 битов. Критики опасались (и
опасаются до сих пор), что такой размер ключа слишком мал для того, чтобы
шифр мог гарантированно противостоять попыткам криптоанализа с простым
перебором всех возможных вариантов. Второе серьезное возражение критиков
было направлено против того факта, что внутренняя структура DES, а именно
структура S-матриц, была засекречена. Поэтому пользователи не могли быть
уверены в том, что во внутренней структуре DES нет каких-либо скрытых де-
фектов, с помощью которых специалисты NSA могли бы расшифровать сообще-
ние, не обладая ключом. Дальнейшие исследования, в частности последние рабо-
ты по дифференциальному криптоанализу, позволяют с большей уверенностью
утверждать, что DES обладает весьма надежной внутренней структурой Более
того, по утверждению участников проекта со стороны IBM, единственными из
менеяиями, внесенными в представленный ими проект стандарта, были предло-
женные NSA изменения в структуре S-матриц, целью которых было укрепление
вероятных слабых мест алгоритма, обнаруженных в ходе оценки проекта.
Как бы то ни были, DES вышел в мир и стал очень популярным, особенно в
финансовых приложениях. В 1994 году NIST подтвердил использование DES в
качестве федерального стандарта еще на пять лет и рекомендовал его к приме-
нению в приложениях, не предназначенных для защиты секретной информации
По мнению автора данной книги, при использовании UES в коммерческих при-
ложениях, за исключением, возможно, случаев обмена особо секретной инфор-
мацией, не должно возникать каких-либо проблем с безопасностью данных
10< •
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Шифрование DES
Общая схема процесса шифрования DES показана на рис. 3.7. Как и в случае
любой схемы шифрования, здесь на вход функции шифрования подается два ти-
па данных — открытый текст, который требуется зашифровать, и ключ. В дан-
ном случае длина открытого текста предполагается равной 64 битам, а длина
ключа — 56 битам.7
I
I
I
шифрованного текста
Рис. 3.7. Общая схема алгоритма шифрования DES
7
На самом дело функция требует ввода 64-битового ключа, но в качестве ключа шифрования
используется только 56 битов. Остальные 8 битов могут быть битами четности или вообще ка
кими го произвольными
3.3. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ (DES)
101
Из левой части рис. 3.7 видно, что процесс преобразования открытого текста
состоит из трех этапов. Сначала 64-битовый блок открытого текста поступает
для обработки на вход начальной перестановки (IP), в результате чего получают-
ся переставленные входные данные. Затем следует этап, состоящий из 16 раун-
дов применения одной и той же функции, в которой используются как операции
перестановки, так и подстановки. На выходе последнего (16 го) раунда получа-
ются 64-бптовая последовательность, являющаяся некоторой функцией открыто-
го текста и ключа. Левая и правая половины полученной последовательности
данных меняются местами, образуя предрезультат (preoutput). Наконец, этот
предрезультат проходит через перестановку IP'1, обратную начальной, в резуль-
тате чего получается 64 битовый блок шифрованного текста. Если исключить
начальную и конечную перестановки, структура DES окажется идентичной
структуре шифра Файстеля (см- рис. 3.5).
В правой части рис. 3.7 показано, каким образом используется 56-битовый
ключ. Сначала к ключу тоже применяется функция перестановки. Затем с по
мощью циклического сдвига влево и некоторой перестановки из полученного ре-
зультата для каждого из 16 раундов генерируется подключ (К,). Функция пере-
становки одна и та же для всех раундов, но генерируемые подключи оказывают-
ся разными из-за того, что в результате циклического сдвига на ее вход
поступают разные биты ключа.
Таблица 3.2. Таблицы перестановок, используемых в DES
(а) начальная перестановка (IP)
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 0
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
(б) перестановка, обратная начальной (IP 1)
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
102
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Окончание табл. 3.2
(в) перестановка с расширением (Е)
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
(г) перестановка (Р)
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 В 24 14 32 27 3 9
19 13 30 6 22 И 4 25
Начальная перестановка
И начальная перестановка, и обратная ей, задаются табличным способом, как
показано в табл. 3.2(a) и 3.2(6) соответственно. Чтобы убедиться в том, что пред-
ставленные этими двумя таблицами функции являются взаимно обратными,
рассмотрим следующую входную 64-битовую последовательность М.
м, м, м, м. м. м7 М.
М, м„ м„ м„ м,3 мн м„ м„
м„ м„ м„ М„ М., ми ми м„
М„ м„ м4. Ми М„ М. М.„ м«
М„ Мм м„ м„ мя м„
М„ м« М„ Ми м.. М.а м., м„
м„ Мм ми м,3 Мь! ми
М„ мя м„ мю мю Мм
Здесь каждое М, представляет одну двоичную цифру. После перестановки
получим последовательность Х = 1Р(М) следующего вида.
3 3. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ (DES)
103
Мм М„, М„ Мм ми м„ м10 м. М„ М„ М„ Ми Мя Ma М12 м, "Мо М', М ,в ]\| и М3Q ^4а2 М,д Мм Му, М ,* М.„ М24 м„ м. М„ М4в M4l М.,а Мм м,г мв м. М.. М„ М,- М\о М2 М„ Мл М.ь Ма, MjB М21 м „ м, Мм Ма1 м„ мав м„ м„ MJS М-
Применив обратную перестановку, получим Y = IP‘(X) = IP *(1Р(М)), и про-
стой проверкой можно непосредственно убедиться в том, что на выходе биты бу-
дут следовать в порядке, в точности соответствующем исходному.
Детали алгоритма шифрования
H i рис. 3.8 показана внутренняя структура алгоритма, используемого при
итерациях. Как и прежде, начнем рассмотрение с левой части рисунка. Левая (L)
и праьая (R) половины каждого 64-битового значения рассматриваются как не
зависимые 32 битовые величины. Как и в случае любого классического шифра
Файстеля, операции, выполняемые на каждой итерации, можно записать в виде
следующих формул:
L, = R,.,,
R. =L1.,eF(RM,K1).
Для любого раунда длина ключа К, равна 48 битам, а длина элемента входных
данных R — 32 битам. Сначала входное значение R расширяется до 48 битов с
помощью таблицы, задающей перестановку с расширением (см. табл. 3.2(b)), за
ключающемся в повторении 16 битов значения К. Полученное 48-битовое значение
складывается с К с помощью операции XOR (исключающее “ИЛИ"), Результат,
длина которого тоже равна 18 битам, передается функции подстановки, которая
генерирует 32-битовое значение, определяемое по табл. 3.2(г).
Роль S матриц в функции F раскрывается иллюстрацией на рис. 3.9, Меха-
низм подстановки определяется набором из восьми S-матриц, каждая из кото-
рых получает на вход 6 битов данных и выдает 4-битовый результат. Преобразо-
вания определяются по табл. 3.3 по следующему правилу. Первый и последний
биты входного значения для матрицы S, представляют 2-битовое двоичное чис-
ло, задающее одну из четырех подстановок, определяемых четырьмя строками
таблицы для S Остальные четыре бита определяют столбец. Десятичное значе
ние, находящееся на пересечении заданных таким образом столбца и строки, в
4-битовом представлении будет результатом. Например, если на вход S, посту-
пает значение 011001, оно задает строку 01 (десятичное 1) и столбец 1100
(десятичное 12). На пересечении строки 1 и столбца 12 находится значение 9,
поэтому результат в двоичном представлении будет иметь вид 1001.
104 ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Таблица 3.3. Определение S-матриц алгоритма DES
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 fi 13
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 б 7 12 0 5 14 9
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 0 10 2 8 5 14 12 11 15 1
13 в 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 в 9 8 7 4 15 14 3 11 5 2 12
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
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
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 7 13 11 0
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
4 11 2 14 15 0 8 13 3 12 9 7 б 10 6 1
13 0 11 7 4 9 1 1(1 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
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 И 0 14 9 2
7 11 4 1 9 12 14 2 0 0 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
3.3 СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ (DES)
105
Рис. 3.8. Один раунд шифрования алгоритма DES
Каждая строка S-матрицы определяет некоторую обратимую подстановку.
Чтобы понять суть задаваемых подстановками отображений, снова используйте
рис. 3.4, на котором показана подстановка для строки 0 матрицы S,.
Здесь следует сделать еще несколько замечаний о структуре S-матриц. На
минутку забудем о том, что преобразование зависит от ключа К,. Из таблицы,
задающей перестановку с расширением, видно, что поступающие на вход 32 бита
данных разделяются на группы по 4 бита, которые затем превращаются в 6-
битовые группы с помощью добавления к каждой группе внешних битов из со-
седних групп. Например, если частью поступившего на вход слова будет
...efgb ijkl mnop... ,
эта часть будет преобразована к виду
...delghi hijklm Imnopq...
В каждой группе значения двух внешних битов определяют одну из четырех
возможных подстановок (строку S-матрицы). Затем выходное 4-битовое значение
замещает соответствующее входное 4-битовое значение (четыре средних бита).
После этого получаемое таким образом с помощью восьми S-матриц 32-битовое
выходное значение обрабатывается с помощью перестановки, чтобы от выходных
значений каждой из S-матриц зависело как можно большее число результатов
подстановок в следующем раунде шифрования.
106
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Рис, 3.9. Вычисление F(R.K)
вычисление ключей
Возвращаясь к рис. 3.7 и 3.8, заметим, что 56-битовые ключи, используемые в
качестве входных данных алгоритма, сначала преобразуются с помощью переста-
новки, задаваемой таблицей первой перестановки с выбором (РС-1), табл. 3.4(a).
Полученное в результате 56-битовое значение рассматривается как комбинация
двух 2Вбитовых значений, для которых используются обозначения Ct и U . В
каждом раунде шифрования к значениям С,., и D,., по отдельности применяются
операции циклического сдвига влено (вращения) на 1 или 2 бита в соответствии с
табл. 3.4(b). Полученные после сдвига значения поступают на вход следующего
раунда шифрования. Те же значения подаются на вход второй перестановки с вы-
бором (PC 2) (см. табл. 3.4(6)), с помощью которой получается 48-битовое выход-
ное значение К,, требуемое для выполнения функции F(R, i,Kj .
Дешифрование DES
В данном случае, как и в случае любого шифра Файстеля, для дешифрования
используется тот же алгоритм, что и для шифрования, но ключи при дешифро-
вании должны подаваться алгоритму в обратном порядке.
3.3. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ (DES)
107
Таблица 3.4. Вычисление ключей в алгоритме DES
(а) первая перестановка с выбором (РС-1)
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 б 61 53 45 37 29
21 13 5 28 20 12 4
(б) вторая перестановка с выбором (РС-2)
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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Число СДВИГОВ 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Лавинный эффект
Желательным свойством любого алгоритма шифрования должна быть высо
кая чувствительность результата к изменению начальных данных — любые ма
лые изменения открытого текста или ключа должны приводить к значительным
изменениям в шифрованном тексте (лавинный эффект). В частности, изменение
значения всего одного бита открытого текста или ключа должно отражаться в
изменении значений многих битов шифрованного текста. Если изменения шнф
рованного текста тоже будут малыми, это может позволить противнику сузить
пространство ключей или область поиска открытого текста.
Алгоритм DES демонстрирует достаточно сильный лавинный эффект. В
табл 3.5 показаны некоторые результаты, взятые из [KONH81J. Данные табли-
цы были получены для двух следующих фрагментов открытого текста, отли-
чающихся друг от друга всего одним битом.
00000000 00000000 OOOUOOOU 00000000 00000000 00000000 00000000 00000000
10000000 00000000 00000000 OUOOOOOO 00000000 00000000 00000000 00000000
В качестве ключа шифрования использовалось следующее значение.
0000001 1001011 0100100 1100010 0011100 0011000 0011000 0110010
108
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Из таблицы видно, что после трех раундов шифрования различия преобразо-
ванных блоков будут наблюдаться уже для 21 бита. По окончании же шифрова-
ния различия будут наблюдаться в 34 позициях.
В табл. 3.5i6) привидятся аналогичные результаты для случая, когда шифру-
ется один фрагмент открытого текста
01101000 10000101 0010111 01111010 00010011 01110110 11101011 10100100
с двумя разными ключами, отличающимися один от другого всего одним битом:
1110010 1111011 1101111 001100(. 0011101 0000100 0110001 1101110
0110010 1111U11 1101111 OOllOuO 0011101 0000100 01100О1 1101110
Как и в первом случае, в шифрованных текстах, полученных с помощью раз-
личающихся на один бит ключей, различия наблюдаются более чем для полови-
ны битов, а лавинный эффект оказывается явно заметным уже после нескольких
раундов шифрования.
Таблица 3,5. Лавинный эффект в DES
(а) Изменения в открытом тексте (б) Изменения в ключе
Раунд Число различающихся битов Раунд Число различающихся бигов
0 1 0 0
1 6 1 2
2 21 2 14
3 3S 3 28
4 39 4 32
б 34 5 30
6 32 6 32
7 31 7 35
8 29 8 34
9 42 9 40
10 44 10 38
И 32 11 - 31
12 30 12 33
13 30 13 28
14 26 14 26
15 29 15 34
16 34 16 35
3.4. Надежность DES
После того как DES был утвержден в качестве федерального стандарта США,
постоянно возникали дискуссии по поводу его надежности и того уровня безо-
пасности, который им обеспечивается. Эти дискуссии касаются в основном двух
вопросов: размера ключа и внутренней природы алгоритма.
3.4. НАДЕЖНОСТЬ DES
109
Использование 56-битовых ключей
При длине ключа 56 битов имеется 2м различных ключей, что приблизи-
тельно равно 7,2х10'1. На первый взгляд этого вполне достаточно, чтобы про-
стой перебор всех возможных значений показался практически неэффективным.
Даже в предположении, что в среднем для успешного обнаружения ключа таким
способом придется проверить около половины возможных комбинаций, компью-
теру, выполняющему один цикл шифрования DES в микросекунду, потребуется
более тысячи лет, чтобы обнаружить ключ (см. табл. 2 2).
Однако оценка скорости шифрования в один цикл в микросекунду слишком
консервативна. Еще в 1977 году Диффи (Diffie) и Хеллман (Hellman) утвержда
ли, что имеющаяся на то время технология позволяет создать компьютер, со-
стоящий из 1 миллиона параллельно шифрующих устройств, каждое из которых
может выполнять один цикл шифрования в микросекунду [DIFF77], При нали-
чии такого компьютера время, необходимое для раскрытия шифра путем пере-
бора всех вариантов, будет равняться уже всего 10 часам. По оценке авторов
упомянутой книги, стоимость такой машины в 1977 году составила бы около 20
млн долл. США.
Более строгий анализ этой проблемы позже выполнил Винер (Wiener)
[W1EN93] для случая криптоанализа с известным открытым текстом, т.е. в
предположении, что у противника имеется хотя бы одна пара соответствующих
открытого и шифрованного текста. Винер нс поленился подробно описать детали
архитектуры, которая должна быть у машины, предназначенной для взлома
DES. По его словам,
“уже неоднократно высказывались ничем не подкрепленные заявления по
поводу того, насколько быстро можно перебрать все ключи из пространст-
ва возможных ключей DES. Чтобы не добавлять к этим заявлениям точно
таких же новых, в приложениях приводятся подробные описания архи-
тектуры машины для подбора ключей. Такая работа была проделана ис-
ключительно для того, чтобы получить реальную оценку стоимости подоб-
ной машины и времени, которое ей потребуется на подбор ключа DES.
Практических планов по созданию подобной машины у автора нет”.
Винер сообщает о разработке архитектуры микросхемы, которая с помощью
конвейеризации позволяет достичь скорости перебора около 50 млн ключей в се-
кунду. Разработанный им модуль, состояший из 5760 таких микросхем, в ценах
1993 года мог иметь стоимость около 100 тыс. долл. США. Для модулей пред-
ложенной Винером архитектуры получаются следующие оценки.
Стоимость машины Ожидаемое нремя поиска
$ 100 000 35 часов
$ 1 000 000 3.5 часа
S 10 000 000 21 минута
По оценке Винера, проектно-конструкторские работы по созданию такой ма-
шины могут обойтись примерна в 500 тыс. долл. В обновленном издании 1997
года [WIEN97] Винер примерно в шесть раз уменьшил отношение ожидаемого
110
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
времени поиска к стоимости машины (т.е. предполагается, что с использованием
машины стоимостью 100 тыс. долл, ключ можно получить примерно через 6 ча-
сов после начала ее работы).
Хотя работы Винера имеют очень большое теоретическое значение, практиче-
ски предложенная им архитектура не реализована. Более эффектно уязвимость
DES была продемонстрирована в ходе объявленного RSA Laboratories конкурса
на поиск секретного ключа. Суть конкурса, победителям которого полагалась
премия в 10 тыс. дола. США, состояла в том, чтобы найти ключ DES, имея в
распоряжении шифрованное сообщение для неизвестного открытого сообщения,
начинающегося тремя известными блоками текста (24-символьной фразой “the
unknown message is:”). Конкурс был объявлен RSA 29 января 1997 года. Ретив
принять участие в конкурсе, независимый консультант Рок Версер (Rocke
Verser) разработал программу перебора вариантов ключа и распространил ее в
Internet. В общей сложности в выполнение проекта было вовлечено более 70000
систем, На каждой из которой добровольцы подбирали ключ в выделенных им
областях пространства возможных ключей DES. Проект начался 18 февраля
1997 года и успешно закончился спустя 96 дней, когда после перебора примерно
четверти всех возможных комбинаций был найден правильный ключ [RSA97].
Этот конкурс показал возможность решения сложных криптографических задач
с помощью распределенных систем персональных компьютеров.
Однако помимо проблемы времени, требуемого непосредственно ня перебор
всех возможных вариантов ключей, задача поиска ключа имеет и другие аспек-
ты. Когда известного открытого текста нет, аналитик должен иметь возможность
распознать дешифрованное сообщение как открытый текст. Если дешифрованное
сообщение представляет собой обычный текст (например, на английском языке),
эта задача решается просто (хотя еще требуется автоматизировать сам процесс
распознавания). Если же текстовое сообщение перед шифрованием было каким-
либо образом сжато, задача распознавания открытого текста усложняется, А ес-
ли сообщение представляет собой числовые данные более общего вида, которые
к тому же были перед шифрованием сжаты, то проблема автоматизации распо-
знавания текста становится совсем сложной. Поэтому для применения подхода,
состоящего в переборе всех возможных вариантов, требуется некоторая инфор-
мация о том, что может представлять собой открытый текст, и необходимы не-
которые технические средства, помогающие автоматически распознать дешифро-
ванное сообщение как открытой текст, а не отбросить его, как мусор.
Предложенная Винером архитектура и результаты описанного выше конкурса
на поиск ключа явились кульминацией многолетних дискуссий о безопасности
DES и, как уже можно утверждать с точки зрения сегодняшнего дня, стали по-
воротным моментом в истории этого стандарта. На время написания данной
книги стандарт DE& все еще кажется вполне надежным для персонального и
коммерческого использования. Но, ->чевидно, назрела необходимость разработки
методой, альтернативных методам традиционного шифрования. Среди возмож
ных кандидатов, достойных заменить DES, мы видим так называемый "тройной
DES” (triple DES), а также некоторые из новейших алгоритмов традиционной
схемы шифрования, которые будут подробно обсуждаться в главе 4.
3.4. НАДЕЖНОСТЬ DES
111
Внутренняя структура алгоритма DES
Второй причиной сомнений в надежности DES является существование теоре-
тической возможности для криптоаналитика использовать внутренние характери-
стики самого алгоритма DES. Основными объектами критиков надежности DES
стали восемь таблиц подстановки CS-матриц), используемых на каждом шаге шиф-
рования, Поскольку критерии, по которым создавались эти матрицы, являющиеся
основой всего алгоритма, в открытой печати не публиковались, высказываются
предположения о том, что эти матрицы создавались так, чтобы криптоанализ
шифра был возможен для аналитика, которому известна внутренняя структура S-
матриц. Такое предположение весьма неприятно, да и за годы существования DES
были обнаружены как некоторые закономерности, так и неожиданности в поведе
нии S-матриц. Тем не менее, до настоящего времени никому еще не удалось вы-
явить ни одного серьезного недостатка DES, связанного с S-матрицами.1,
3.5. Дифференциальный криптоанализ и линеиныи
|| криптоанализ ...„J
На протяжении всего существования DE8 этот алгоритм анализировался
гла 1Ным образом на уязвимость с точки зрения криптоанализа с использованием
метода перебора всех ключей по причине относительно малой <56 битов) длины
ключа. Тем не менее, проводились исследования и в области выявления методи-
ки криптоанализа DES вообще. По мере появления блочных шифров с более
длинными ключами (например, тройного DES) полный перебор всех вариантов
ключей потерял свою актуальность. Это привело к смещению акцентов в область
поиска эффективных общих методов криптоанализа DES и других симметрич-
ных блочных шифров, Ниже мы кратко рассмотрим два самых многообещающих
подхода — дифференциальный криптоанализ и линейный криптоанализ.
Дифференциальный криптоанализ
Пожалуй, самый значительный прогресс в области криптоанализа за послед-
ние годы связан с разработкой методов дифференциального криптоанализа. В
этом разделе мы вкратце изложим суть этих методов и рассмотрим возможности
применения дифференциального криптоанализа к bES. -
Историческая справка
До 1990 года о дифференциальном криптоанализе в открытой литературе со-
общений не появлялось. По-видимому, первой из открытых печатных работ, в
которой методы дифференциального криптоанализа применялись к блочному
шифру FEAL, была работа Мерфи (Murphy) (MURP90). За ней последовало не-
сколько работ Бихема (Biham) и Шамира (Shamir), которые показали эффектив-
ность этих методов при криптоанализе целого ряда различных алгоритмов и
функций хэширования. Полученные ими результаты обобщены в |BIHA93J.
g
Во всяком случае ни одного недостатка, информация о котором была бы опубликована в от-
крытой печати.
112
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Наибольший резонанс данный подход получил в связи с возможностью его
применения для криптоанализа DES. Метод дифференциального криптоанализа
оказался первым опубликованным методом, позволяющим взломать DES при
оценке сложности задачи менее 2^'. Согласно [BIHA93], с помощью данной схе-
мы можно успешно провести криптоанализ DES при усилиях порядка 2", но
при наличии 2" вариантов избранного открытого текста. Хотя 2‘ , очевидно,
значительно меньше, чем 2“, необходимость при этом иметь 24’ вариантов из-
бранного открытого текста превращает данный вариант схемы криптоанализа в
чисто теоретическое упражнение.
Хотя дифференциальный криптоанализ представляет собой достаточно мощ-
ное средство, против DES он оказался пе слишком эффективным. Причина, со-
гласно утверждениям одного из участников группы IBM, создавшей DES
[СОРР94], заключается в том, что методы дифференциального криптоанализа
были известны разработчикам DES еще с 1974 года. При проектировании S-
матриц и перестановки Р задача их зашиты от атак с применением методов
дифференциального криптоанализа играла немаловажную роль. В качестве дока-
зательства можно привести результаты, опубликованные в [BIHA93J: дифферен-
циальный криптоанализ версии LUCIFER с восемью раундами шифрования тре
бует всего 256 фрагментов избранного открытого текста, а для взлома версии
DES с восемью раундами шифрования требуется уже 2“ фрагментов
Учет методики дифференциального криптоанализа оказал существенное
влияние на структуру IDEA (см. главу 41 — одного из лучших алгоритмов шиф-
рования традиционной схемы со времени появления DES. На момент публика-
ции первого варианта алгоритма, известного под названием PES (.Proposed En-
cryption Standard — предлагаемый стандарт шифрования) 11.AI90], разработчики
IDEA ничего не знали о дифференциальном криптоанализе. Хотя в алгоритме
PES использовался 128-битовый ключ, алгоритм оказался разрешимым метода-
ми дифференциального криптоанализа с оценкой сложности 2м. После внесения
небольших изменений в PES разработчики предложили новую версию алгорит-
ма, названную ими IDEA [LAI91J, и заявили, что IDEA неуязвим для методов
дифференциального криптоанализа.
Методика дифференциального криптоанализа
Применение методов дифференциального криптоанализа на практике являет-
ся непростым делом. Подробное описание соответствующей методики можно
найти в [ВТНА93]. Здесь же мы предлагаем лишь краткое обсуждение вопроса,
чтобы вы получили общее представление о том, как применяются методы диф-
ференциального криптоанализа.
Для начата введем некоторые новые обозначения для DES. Предположим, что мы
рассматриваем блок открытого текста т. состоящий из двух половин —из, и т,.
В каждом раунде алгоритма шифрования DES правая половина входных данных
преобразуется в левую половину выходных данных, а правая половина выход-
ных данных оказывается функцией левой половины входных данных и подклю-
ча. Таким образом, н результате любого раунда шифрования создается только
один новый 32-битовый блок. Если обозначать каждый новый блок через
3.5. ДИФФЕРЕНЦИАЛЬНЫЙ И ЛИНЕЙНЫЙ КРИПТОАНАЛИЗ
113
m, (2 < i < 17 ), то получаемые на выходе раундов шифрования промежуточные
половинки блоков будут связаны между собой следующей зависимостью:
т(Н =m,-i i = l,2, ... ,16.
Дифференциальный криптоанализ предполагает рассмотрение двух сообще-
ний гпиш, для которых известна их XOR-разность Дш = с последую-
щим рассмотрением разности между промежуточными половинами сообщения;
Дш, = т, Ф т'. При этом получаем следующее:
Дт1Ч =тн1 Ф ш;(1
= ^1,., ®Г(тнК.)]Ф[т'+1 ФЦгщ.К,)]
= Дп1(-1 ® ® ffmpKJ].
Предположим, что для многих пар входных данных функции f, имеющих од
ну и ту же XOR-разность, при использовании одного и того же подключа одина-
ковой оказывается и XOR разность для соответствующих выходных пар. Фор-
мально будем говорить, что X влечет Y с вериятностью р, если для относитель-
ной доли р входных пар с XOR-разностью X для соответствующих выходных пар
XOR разность оказывается равной Y. Предположим теперь, что имеется ряд зна-
чений X, которые с высокой вероятностью влекут определенные разности вы-
ходных значений. Тогда если нам с большой вероятностью известны значения
Дш,, и Дт , то мы с большой вероятностью можем определить и ДтК1. А если
удастся найти достаточно много таких значений разности, становится возмож-
ным определить подключ, используемый функцией f.
Общая стратегия дифференциального криптоанализа основывается на пред-
ставленной выше методике для каждого раунда шифрования в отдельности.
Процедура начинается с рассмотрения двух сообщений открытого текста in и
ш' с заданной разностью и имеет своей целью получение вероятностных опенок
разностей промежуточных результатов последовательно раунд за раундом с тем,
чтобы определить вероятностную оценку для разности соответствующих шифро-
ванных текстов. На самом деле получаются вероятностные оценки для двух 32-
битовых половинок сообщения (т1Т || т10) После этого выполняется шифрование
шиш', чтобы определить реальные разности при неизвестном ключе, а затем
сравнить результат с вычисленными вероятностными оценками. Если результа-
ты совпадают, т.е.
EJin) Ф Ек(ш') = (Дт,, || ти),
то можно ожидать, что вероятностные -. ценки для всех раундов соответствуют
реальности. Это позволяет сделать определенные заключения о некоторых битах
ключа. Чтобы определить все биты ключа, процедуру приходится повторять
много раз.
На рис. 3.10, аналогичном соответствующему рисунку из [BIHA93], показана
вариация разностей за три раунда шифрования DES. Значения вероятностей, по-
казанные на рисунке справа, соответствуют вероятностям получения указанных
промежуточных разностей в зависимости от указанных начальных. В данном
случае вероятность получения указанной выходной разности после трех раундов
будет равна 0,25 х 1 х 0,25 = 0,0625.
114
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Рис. 3.10- Вариация разностей за три раунда шифрования
DES (формат чисел — шестнадцатеричный)
Линейный криптоанализ
Еще более новым направлением в криптоанализе является линейный крип-
тоанализ, описании* в [MATS93]. Метод линейного криптоанализа заключается
в построении линейной аппроксимации преобразования, выполняемого в ходе
шифрования DES. Данный метод позволяет найти ключ DES при наличии 2"
известных фрагментов открытого текста, тогда как для дифференциального
криптоанализа требуется 2'7 фрагментов избранного открытого текста. Но хотя
это и упрощает задачу криптоаналитика, поскольку легче раздобыть какой-
нибудь известный открытый текст, чем избранный, с такими ограничениями
линейный криптоанализ все же <-стается практически нереальным в отношении
DES. Поэтому до настоящего времени мал!- кто пытался практически реализо-
вать методику линейного криптоанализа.
3.5. ДИФФЕРЕНЦИАЛЬНЫЙ И ЛИНЕЙНЫЙ КРИПТОАНАЛИЗ
115
Давайте рассмотрим основные принципы, на которых базируется линейный
криптоанализ. Пусть для шифра с n-битовыми блоками открытого и шифрован-
ного текста и т битовым ключом блок открытого текста будет обозначен
P(1J,.... Р[п|, блок шифрованного текста— С(1], . .,С[п], а ключ —
Kf 13,. , K[m] Тогда определим
Ар, у, ...,&] = Ар]® А[у] © . © А[/г]
Целью линейного криптоанализа является нахождение подходящего линейно-
го уравнения вида
Р[а,,а„ ..ajeCtP-.P-,.= К[у„ у,...у.],
выполняющегося с вероятностью р * 0,5 (где х = О или 1, 1 < a, b < п, 1 < с < т,
а а , Д и у представляют фиксированные битовые позиции в блоках). Чем боль-
ше значение р отклоняется от 0,5, тем более подходящим считается уравнение.
После этого вычисляются значения левой части данного уравнения для большого
числа пар соответствующих фрагментов открытого и шифрованного текста. Если
результат оказывается равным О более чем в половине случаев, полагают, что
К[У1,уа>. ,ус]-0. Если же в большинстве случаев получается 1, полагают, что
К.|у,,у2, ...,yt] = I. Достаточное количество полученных таким образом равенств
образуют систему, решением которой определяется ключ. Ввиду линейности полу-
чаемых уравнений, проблему можно решать для каждого раунда шифрования в
отдельности, а полученные результаты затем объединить.
3.6. Принципы построения блочных шифров (Ц
Несмотря на значительный прогресс, наблюдающийся в последние годы в об-
ласти создания надежных блочных шифров, основные принципы их конструк-
ции не менялись со времен работы Файстеля и группы ио созданию DES, т.е. с
начала 70-х годов. Поэтому нам будет полезно ^знакомиться с опубликованными
критериями группы DES, которые использовались при разработке созданного ею
шифра. Затем мы обсудим три самых важных параметра структуры любого
блочного шифра: число раундов шифрования, вид функции F и алгоритм вычис-
ления ключей.
Критерии, лежащие в основе конструкции DES
Согласно [СОРР94], критерии, использовавшиеся при разработке DES, каса-
ются структуры S-матриц и функции Р, на вход которой поступают данные, вы-
численные с помощью этих 8-матриц (см. рис. 3.9). При разработке S-матриц
использовались следующие критерии.
1. Никакой бит выходных данных S-матрицы не должен слишком хорошо
аппроксимироваться линейной функцией от входных битов. Конкретнее,
если взять любой выходной бит и любое подмножество шести входных би-
тов, то относительная доля входных значений, для которых выходной бит
оказывается равным результату применения операции XOR к выбранным
входным битам, пе должна быть близкой ни к 0, ни к 1, а должна быть
примерно равной 0,5.
116
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
2. Каждая строка S-матрицы (определяемая значениями крайних битов вход-
ной последовательности) должна содержать все 16 возможных выходных
комбинаций битов.
3. Если входные значения S-матрицы отличаются лишь одним битом, выход-
ные значения должны отличаться как минимум двумя битами
4. Если входные значения S-матрицы отличаются в точности в двумя сред-
ними битами, выходные значения должны отличаться как минимум двумя
битами.
5. Если входные значения S-матрицы отличаются двумя первыми битами и
совпадают в двух последних битах, выходные значения не должны оказы-
ваться одинаковыми.
6. Для любой ненулевой разности 6-битовых входных значений, не более чем
для 8 из 32 пар входных значений, имеющих такую разность, могут да-
вать одно и то же фиксированное значение выходной разности.
7. Аналог критерия из п. 6 для трех последовательных применений S-матриц.
Копперсмит (Coppersmith) отмечает, что п. 1 в приведенном списке необходим
потому, что S-матрицы являются единственной нелинейной составляющей DES.
Если в S матрицах будет проявляться линейность (т.е. выходные биты будут ли-
нейными комбинациями входных битов), весь алгоритм окажется линейным и
поэтому простым для криптоанализа. Мы видели это при анализе имеющего ли-
нейную природу шифра Хилла. Остальные критерии призваны решить задачу
противодействия дифференциальному криптоанализу шифра и помочь достичь
хороших показателей конфузии.
При создании перестановки Р использовались следующие критерии.
1. Четыре выходных бита результата S-матрицы раунда i должны распреде-
ляться таким образом, чтобы два из них влияли на “средние биты” раунда
i + 1, а два других — на крайние биты. При этом не должно случиться
так, чтобы для двух соседних S-матриц два средних входных бита оказа-
лись одинаковыми. Крайними битами являются два первых и два послед-
них бита входных данных, одинаковые для соседних S-матриц.
2. Четыре выходных бита S-матрицы в следующем раунде должны влиять на
результаты шести различных S-матриц, и никакие два из этих четырех
выходных битов не должны попасть на вход одной S-матрицы.
3. Для двух S-матриц, S, и S,, если некоторый выходной бит матрицы S, в
следующем раунде влияет на средние биты S,, то никакой выходной бит
S, не должен влиять на средние биты S,. Например, при } = k никакой
выходной бит S, не должен влиять на средние биты S, .
Эти критерии призваны обеспечить алгоритму требуемый уровень диффузии.
Число раундов шифрования
Криптоаналитическая стойкость шифра Файстеля зависит от трех конструк-
тивных параметров: числа раундов шифрования, вида функции F и алгоритма
вычисления ключей. Давайте сначала рассмотрим зависимость надежности дан-
ного шифра от числа раундов шифрования.
3.6. ПРИНЦИПЫ ПОСТРОЕНИЯ БЛОЧНЫХ ШИФРОВ
117
Чем больше число раундов шифрования, тем более затрудняется криптоана-
лиз шифра даже при относительно слабой функции F. В общем случае число ра-
ундов должно выбираться так, чтобы все известные методы криптоанализа тре-
бовали больше усилий, чем анализ с помощью перебора всех ключей. Этот кри
терий, без сомнения, использовался при разработке DES. Как заметил Шнайер
(Schneier) в работе [SCHN96J, для DES с 16 раундами шифрования дифференци
альный криптоанализ оказывается немного менее эффективным, чем анализ с
помощью перебора всех ключей: дифференциальный криптоанализ требует вы-
полнения 2“' операций,9 а анализ с помощью перебора всех ключей — 2“. Если
бы DES использовал 15 раундов шифрования или меньше, то для дифференци-
ального криптоанализа требовалось бы меньше усилий, чем для анализа с помо-
щью перебора всех ключей.
Этот критерий кажется привлекательным ввиду того, что он позволяет для
любою алгоритма оценить уровень его надежности и сравнить его с другими ал-
горитмами. Пока в области криптоанализа не будет каких-либо серьезных про-
рывов, надежность любого удовлетворяющего данному критерию алгоритма
можно оценивать просто по длине ключа.
Вид функции F
Сердцем блочного шифра Файстеля является функция F. Как мы уже видели
в случае DES, свойства этой функции зависят главным образом от вида исполь-
зуемых для ее определения S-матриц. Как мы увидим из главы 4, то же самое
можно сказать и о других симметричных блочных шифрах. Однако прежде чем
обратиться непосредственно к обсуждению конструктивных особенностей S-
матриц, следует сказать несколько слов о конструктивных критериях F
Конструктивные критерии функции Г
Функция F в шифрах Файстеля обеспечивает необходимый уровень конфузии.
Это предполагает невозможность ‘‘расшифровывания” подстановки, задаваемой
данной функцией. Как уже говорилось выше, для этого функция F должна быть,
очевидно, нелинейной. Чем выше степень нелинейности F, тем сложнее будет
шифр для криптоанализа любого типа. Степень нелинейности можно характери-
зовать несколькими способами, обсуждение которых выходит за рамки данной
книги. Грубо говоря, чем труднее аппроксимировать функцию F с помощью сис-
темы линейных уравнений, тем выше степень нелинейности этой функции.
Кроме того, при построении функции F должны приниматься во внимание и
другие критерии Например, полученный в результате алгоритм должен обла-
дать заметным лавинным эффектом. Напомним, что суть лавинного эффекта за-
ключается в том, что изменение одного бита входных данных влечет изменение
множества битов на выходе. Аналогичный более сильный критерий, называемый
строгим критерием лавинного эффекта (SAC — strict avalanche criterion)
9
Напомним, что для дифференциального криптоанализа DES требуется 2‘ блоков избранного от-
крытого текста. Если же в распоряжении аналитика имеется просто известный открытый текст,
придется из всего множества пар соответствия открытого и шифрованного текстов выбирать те, ко-
торые окажутся полезными. Из-за этого уровень сложности задачи повышается до 2К | .
118
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
[WEBS86], требует, чтобы для любых i и j при инвертировании входного бита i
S-матрицы любой выходной бит j изменялся с вероятностью уг, Хотя приведен-
ный здесь строгий критерий лавинного эффекта формулируется для S-матрин,
подобный критерий можно сформулировать и для функции F в целом. В такой
формулировке критерий может использоваться при разработке алгоритмов, не
имеющих в своей структуре S-магриц.
Другим критерием, предложенным в [WEBS86], является критерий незави-
симости битов (BIC — bit independence criterion), согласно которому для любых
значений i, j и k при инвертировании входного бита i S-матрицы выходные биты
j и k должны меняться независимо. Строгий критерий лавинного эффекта и кри-
терий независимости битов призваны гарантировать алгоритму необходимый
уровень конфузии.
Структура S-матриц
Совершенствование структуры S-матриц составляет одну из наиболее интен-
сивно исследуемых проблем в области симметричных блочных шифров. Число
посвященных этой теме статей почти невозможно подсчитать. Здесь мы опи-
шем только обшие принципы. По сути, требуется, чтобы любые изменения
входных данных S-матрицы выливались в случайные на вид изменения выход-
ных данных. Зависимость выходных значений от входных должна быть нели-
нейной и плохо аппроксимироваться линейными функциями.
Очевидно, одной из важных характеристик S матрицы является ее размер. S-
мггрица размера п х т предполагает n-битовые входные значения и пг-битовые
выходные. В алгоритме DES используются S-матрицы размером 6x4. Алгорит-
мы Blowfish и CAST, речь о которых пойдет в главе 4, используют матрицы
8 х 32. Вообще говоря, чем больше S-матрпцы, тем выше устойчивость алгорит-
ма пи отношению к методам дифференциального и линейного криптоанализа
(SCHN96J. С другой стороны, чем больше л, тем больше (в экспоненциальной за-
висимости) задающая преобразование таблица. Поэтому исходя из практических
соображений значение п, как правило, выбирают в диапазоне от 8 до 10. Кроме
того, чем больше S-матрипа. тем сложнее ее проектирование.
Как правило, структура применяемых сегодня S-матриц отлична иТ структу-
ры S-матриц, предусмотренных в DES. Теперь S-матрица порядка п х т обычно
состоит из 2" т-битовых строк. Входные л битов задают строку S-матрнцы, а т
битов этой строки определяют выходное значение. Например, если для S-
матрицы 8 х 32 входным значение является 00001001, то выходным значением
будет 8-битовое значение, находящееся в строке 9 (первая строка имеет номер 0).
Мистер (Mister) и Адамс (Adams) |M1ST96] выдвинули целый ряд критериев
для проектирования S-матриц. Среди прочих требований имеется и требование,
чтобы S-матрица удовлетворяла как строгому критерию лавинного эффекта, так
и критерию независимости битов. Кроме того, Мистер и Адамс предложили, что-
бы линейные комбинации столбцов S-матрицы задавались так называемыми
бент-функциями (bent — отклоняющийся, в данном случае от линейных). Бент-
1' Квалифицированный обзор работ, посвященных исследованию структуры S-матриц, по со-
стоянию на начало 1996 года имеется в [SCIIN96J
3.6. ПРИНЦИП! >1 ПОСТРОЕНИЯ БЛОЧНЫХ ШИФРОВ
119
функции образуют специальный класс булевых функций, характеризующихся, в
соответствии с определенным математическим критерием, высшей степенью не-
линейности [ADAM9UJ. В целом эта область науки выходит за рамки темы кни-
ги, но в приложении ЗА вы найдете краткое введение в предмет. До сих пор на-
блюдается постоянный рост интереса к разработке и анализу S-матриц с помо-
щью бент функций.
Похожий критерий для S матриц был предложен в работе [HEYS95]. Соглас-
но приведенному там определению, S-матрица удовлетворяет критерию гаранти-
рованного лавинного эффекта (GA — guaranteed avalanche) порядка у, если при
изменении одного бита входных данных меняются как минимум у выходных
битов. Авторы заключают, что свойство гарантированного лавинного эффекта
порядка у в диапазоне от 2 до 5 обеспечивает прекрасные диффузионные харак-
теристики для любого алгоритма шифрования.
При проектировании достаточно больших S-матриц, к которым можно отне-
сти и матрицы размера 8 х 32, возникает вопрос о выборе метода, с помощью
которого подбираются элементы S-матрицы, обеспечивающие соответствие упо-
мянутым выше критериям. Найберг (Nyberg), перу которого принадлежит целый
ряд работ по теории и практике проектирования S-матриц, предложил использо-
вать следующие подходы (приводятся no [ROBS95]).
• Случайный выбор. Элементы S-матриц выбираются с помощью генератора
или специальных таблиц псевдослучайных чисел. В случае небольшого
размера (6 х 4) такой способ может привести к созданию S-матриц с неже-
лательными характеристиками, но для больших матриц (8 х 32) он дол-
жен быть вполне приемлемым.
Случайный выбор с проверкой. Элементы S-матрицы выбираются случай-
ным образом, но после этого полученные результаты должны проверяться
на соответствие различным критериям с отсеиванием тех матриц, которые
не выдержали такой проверки
Выбор вручную. Элементы S-матрицы выбираются практически ^ручную с
использованием элементарных математических преобразований. По-
видимому, именно эта методика легла в основу разработки DES. Для
больших S-матриц использование данного подхода сопряжено с немалыми
трудностями.
Математический подход, Элементы S-матрицы генерируются на основе тех
или иных математических принципов. Такой подход обеспечивает S-
матрицы, гарантирующие заданный уровень надежности пи отношению к
методам линейного и дифференциального криптоанализа, а также хорошие
показатели диффузии. Именно этот подход демонстрирует алгоритм CAST,
о котором мы поговорим в главе 4.
Вариацией первого подхода является случайный выбор элементов S-матрицы
в дополнительной зависимости от некоторого ключа. Пример использования та-
кого подхода являет описываемый в главе 4 алгоритм Blowfish, в котором S-
матрицы сначала заполняются псевдослучайными числами, а затем корректиру-
ются с помощью ключа. Значительным преимуществом зависящих от ключа
120
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
S-матриц является то, что их невозможно заранее проанализировать на предмет
наличия уязвимых мест ввиду того, что они не являются постоянными
Алгоритм вычисления ключей
Еще одним направлением исследований в области проектирования блочных
шифров, которой, правда, уделяется меньше внимания, чем проектированию S-
матриц, является разработка алгоритмов вычисления ключей. В любом блочном
шифре Файстеля по ключу шифра вычисляется свой подключ для каждого ра-
унда шифрования В общем случае желательно, чтобы алгоритм выбора подклю-
чей в максимальной степени усложнял как задачу определения этих подключей
при криптоанализе, так и задачу восстановления главного ключа по значениям
подключей. Однако до настоящего времени публикаций, в которых были бы
представлены общие подходы к решению этой задачи, нет.
Холл (Hall) предположил [ADAM94], что алгоритм вычисления ключей в от-
ношении ключ/шифровянный текст должен удовлетворять как минимум строго-
му критерию лавинного эффекта и критерию независимости битов.
3.7. Режимы работы блочных шифров^ДЗ^ВЁ^К
Алгоритм DES является базовым строительным блоком защиты передачи
данных. Для применения DES j различных приложениях были определены че-
тыре режима его работы (FIPS PUB 74, 81). Предполагается, что этих четырех
режимов должно быть достаточно для того, чтобы использовать DES практиче-
ски в любой области, для которой этот алгоритм подходит. Эти режимы пред-
ставлены в табл. 3.6, а в оставшейся части раздела даны их краткие описания.
Эти режимы применимы и для других блочных шифров симметричной схемы.
Режим электронной шифровальной книги
Простейшим режимом является режим электронной шифровальной книги
(ЕСВ), когда открытый текст обрабатывается блоками по 64 бита и каждый
блок шифруется с одним и тем же ключом (рис. 3.11). Термин шифровальная
книга объясняется тем, что при заданном ключе каждый 64-битовый блок от-
крытого текста представляется уникальным блоком шифрованного текста. Такое
соответствие вызывает аналогию с воображаемой гигантской шифровальной кни-
гой, в которой для каждой 64-битовой последовательности открытого текста
указана соответствующая последовательность шифрованного текста.
Если длина сообщения превышает 64 бита, оно разделяется на 64-битовые
блоки с добавлением при необходимости заполнителей к последнему блоку. Де-
шифрование тоже выполняется поблочно на основе одного и того же ключа. На
рис. 3.11 открытый текст (при необходимости дополненный), рассматриваемый
как последовательность 64 битовых блоков, обозначен Р„Р,,.. ,Р„, а
соответствующий шифрованный текст— С,,Са, ,С„.
Метод ЕСВ идеален для небольших объемов данных, например для ключей
шифрования. Поэтому, если необходимо переслать ключ DES, обеспечив его за-
щиту от разглашения, можно для этого воспользоваться режимом ЕСВ.
3 7. РЕЖИМЫ РАБОТЫ БЛОЧНЫХ ШИФРОВ
121
Самой важной особенностью режима ЕСВ является то, что одинаковые 64-
битовые блоки открытого текста при условии, что таковые встречаются в исход-
ном сообщении, в шифрованном тексте тоже будут представляться одинаковыми
блоками.
Таблица 3.6. Режимы работы DCS
Режим Описание Типичные области применения
Электронная шифровальная книга (ЕСВ — Electronic Code- book) КиЖДЫЙ 64-битовый блок открытого текста шифруется независимо от дру- гих с одним и тем же ключом я Защищенная передача отдельных значений (например, ключа шифрования)
Сцепление шиф- рованных бЛиКОВ (СВС — Cipher Входной блок данны х для алгоритма шифрования вычисляется как XOR- разность текущего 64-битового блока Поблочная передача данных общего назна- чения
Block Chaining) открытого текста и предшествующего 64-битового блока шифрованного текста Аутентификация
Шифрованная обратная связь (CFB — Cipher Входные данные обрабатываются пор- циями no J битов. Полученный на предыдущем шаге шифрованный текст Потоковая передача данных общего назна- чения
Feedback) используется как входные данные для алгоритма шифрования с целью полу- чения псевдослучайной последователь- ности, XOR-раэность которой и блока открытого текста определяет очеред- ную порцию шифрованного текста Аутентификация
Обратная связь по выходу (OFB — Output Feedback) Подобна CFB, но в качестве входных данных для алгоритма шифрования используются ранее полученные вы- ходные данные DES Потоковая передача данных по каналам с помехами (например, по спутниковой связи)
Поэтому при передаче достаточно длинных сообщений режим ЕСВ может не
обеспечивать необходимый уровень защиты. Если сообщение имеет явно выра-
женную структуру, у криптоаналитика появляется возможность использовать
регулярности текста. Например, если известно, что в начале сообщения всегда
размещается определенный заголовок, криптоаналитик может получить в свое
распоряжение целый набор соответствующих пар блоков открытого и шифро-
ванного текста. Или если сообщение содержит повторяющиеся элементы с пе-
риодом их повторения, кратным 64 битам, такие элементы тоже могут быть вы-
явлены аналитиком. Подобные сведения упрощают задачу криптоанализа или
предоставляют возможность для замещения или реорганизации блоков текста
передаваемого сообщения.
Режим сцепления шифрованных блоков
Технология, свободная от недостатков режима ЕСВ, должна в случае повто-
рения в сообщении уже встречавшегося ранее блока открытого текста генериро-
122
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Время *= 1
Pt
С)
(а) Шифрование
Время = 2
Время - N
(б) Дешифрование
Рис 3.11. Режим электронной шифровальной книги (ЕСВ)
вать блок шифрованною текста, отличный от сгенерированного ранее. Проще
всего добиться этого с помощью режима сцепления шифрованных блоков (СВС),
В этом режиме (см. рис. 3.12) вводное значение алгоритма шифрования задается
равным XOR-разности текущего блока открытого текста и полученного на пре-
дыдущем шаге блока шифрованного текста. Шифрование любого блока выпол
няется с одним и тем же ключом. В результате в процессе шифрования все бло-
ки открытого текста оказываются связанными, а входные данные, поступающие
на вход функции шифрования, уже не жестко связаны с блоками открытого тек-
ста. Поэтому повторяющиеся 64-битовые последовательности ь шифрованном
тексте не проявляются.
При дешифровании текст тоже проходит через алгоритм дешифрования по-
блочно При этом соответствующий блок открытого текста получается как XOR
разность выходного блока алгоритма дешифрования и предыдущего блока шиф-
рованного текста. Чтобы понять, как это происходит, запишем процесс шифро-
вания в виде формулы
С. =EK[C..,®PJ.
Тогда
Dk[CJ = Dk[Ek(C..1®PJ],
DK[CJ = (C..,®PJ,
C..1®Dk[C.] = C,.1®C,_1®P„ =Р..
3.7 РЕЖИМЫ РАБОТЫ БЛОЧНЫХ ШИФРОВ
128
Чтобы получить первый блок шифрованного текста, рассматривается XOR-
разность некоторого инициалпзационного вектора (IV) и первого блока открыто-
го текста. При дешифровании для восстановления первого блока открытого тек-
ста необходимо будет тоже выполнить операцию XOR по отношению к тому же
вектору IV и первому блоку на выходе алгоритма дешифрования.
Время = N
(б) Дешифрование
Рис. 3 12. Режим сцепления шифрованных блоков (СВС)
Значение IV должно быть известно и отправителю, и получателю сообщения.
Для обеспечения максимальной безопасности значение ГК' должно быть защище-
но точно так же, как и ключ. Можно, например, отправить значение IV, зашиф-
ровав его в режиме ЕСВ. Одной из причин, по которым необходимо защищать
IV, является следующая; если противник имеет возможность обмануть адресата
сообщения, предоставив подложный IV, то противник получает возможность ин-
вертировать избранные биты в первом блоке открытого текста. Чтобы убедиться
в этом, рассмотрим следующие уравнения-
С, = EK(IV® PJ,
Р, = IV© ОК(С,).
Обозначив j-й бит 64-битового значения X через X[i], получим
Р, m^TVT]®DK(C,)[i].
124
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
Поэтому, используя свойства операции ХОК, можем заключить, что
Р, [ir=IV[ir®DK(C1Xi].
где штрих означает дополнение бита. Как видите, если противник имеет воз-
можность управляемым образом менять биты значения IV, он сможет поменять
и соответствующие значения Р, .
Описания других нарушений, базирующихся на знании IV, приведены в
[VOYD83J.
В заключение заметим, что благодаря механизму сцепления блоков СВС этот
режим оказывается подходящим для шифрования сообщений, длина которых
превышает 64 бита.
Помимо обеспечения конфиденциальности, режим СВС можно использовать
для аутентификации (этот аспект изложен в главе 8).
Режим шифрованной обратной связи
Схема DES представляет собой блочный шифр с размером блока 64 бита. Но DES
можно преобразовать и в потоковый шифр, используя либо режим шифрованной об-
ратной связи (CFB), либо режим обратной связи по выходу (OFB). Использование
поточного шифра избавляет от необходимости дополнять сообщение до целого числа
блоков. Кроме того, с поточным шифром можно работать в режиме реального време-
ни. Например, при передаче потока символов с помощью посимвольного поточного
шифра каждый символ можно шифровать и сразу же передавать адресату, не дожи-
даясь окончания шифрования остальной части сообщения.
Для поточного шифра необходимо, чтобы длина шифрованного текста в точ-
ности соответствовала длине открытого. Так, при передаче 8-битовых символов
следует обратиться к 8-битовому шифрованию. Если при этом использовать
шифрование блоками длиной более 8 битов, часть ресурсов канала передачи
данных будет расходоваться зря.
На рис. 3.13 показана схема шифрования в режиме CFB. Предполагается, что
единицей передачи данных являются j битов (обычно j = 8). Как и в режиме
СВС, происходит сцепление элементов открытого текста, поэтому шифрованный
текст, соответствующий любому элементу открытого текста, будет зависеть от
всех предыдущих элементов открытого текста.
Сначала рассмотрим шифрование. На входе функции шифрования размещает-
ся 64 битовый регистр сдвига, в котором изначально размещается некоторое
значение инициализационного вектора (IV). Крайние слева (главные) j битов это-
го значения связываются операцией XOR с первой порцией открытого текста Р,,
в результате чего получается первая порция шифрованного текста С,, который
подается на линию передачи данных. Содержимое регистра сдвига смещается
влево на j битов, а в крайние справа (наименее значимые) j битов помещается
значение С,. Затем весь процесс повторяется до тех пор. пока не будут зашиф-
рованы все элементы открытого текста.
Для дешифрования используется та же схема, но для получения очередной
порции открытого текста с помощью операции XOR связываются полученная по
связи порция шифрованного текста и получаемые па выходе функции шифрова-
ния данные. Обратите внимание, что в данном случае используется функция
3 7. РЕЖИМЫ РАБОТЫ БЛОЧНЫХ ШИФРОВ
125
шифрования, а не дешифрования. Объяснить это просто. Обозначим крайние
слева } битов значения X через S;(X). Тогда
c^p.esjEdV)),
и поэтому
р, = c,es,(E(ivj).
Те же самые выкладки имеют место и для последующих шагов дешифрования.
Режим CFB может использоваться как для обеспечения конфиденциальности,
так и для аутентификации, о которой вы узнаете из главы 8.
{а) Шифрование
Рм
(б) Дешифрование
Рис. 313. Режим / битовой шифрованной обратной связи (CFB)
126
ГЛАВА 3. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: СОВРЕМЕННЫЕ МЕТОДЫ
открытого текста из-за этой шибки передачи данных повреждены не будут, В
случае СКВ значение С, используется в качестве входного для регистра сдвига,
вследствие чего искажение С, выльется в дополнительные искажения для всего
истока принимаемых данных.
Недостатком режима OFB, с другой стороны, является то, что он обеспечива-
ет меньшую, чем CFB, надежность в отношении нарушений типа модификации
потока данных, Например, изменение одного бита шифрованного текста отража-
ется в изменении соответствующего бита восстановленного открытого текста. Это
дает возможность осуществления контролируемых изменений в получаемом ад-
ресатом открытом тексте. Практически, чтобы программа коррекции ошибок не
заметила подмены, противник должен внести необходимые ему изменения как в
данные, представляющие собой порцию шифрованного текста, так и в данные,
представляющие контрольную сумму для этой порции текста. Подробнее эти во-
просы освещены в [VOYD83].
тельный интерес вызывают поиски альтернативы для этого шифра. Один из вод-
ходов предполагает создание совершенно нового алгоритма. Некоторые пз таких
новых алгоритмов рассмотрены в данной главе. Другой подход, предполагающий
продолжение использования уже имеющегося программного обеспечения и обо-
рудования, заключается в мно/юкратном шифровании с помощью DES с приме-
нением нескольких ключей. Мы начнем с рассмотрения простейшего примера
реализации второго подхода, а затем обсудим получивший широкое признание
алгоритм “тройного” DES.
„Двойной" DES
Многократное шифрование в своей простейшей форме предлагает две стадии
шифрования и два ключа (рис. 4.1(a)). Для открытого текста Р и двух ключей
шифрования К, и К, шифрованный текст С создается по правилу
C=Ek,[Ekl[P]].
При дешифровании ключи применяются в обратном порядке:
P=DK [DKJC]J.
При использовании в качестве базового шифра DES длина ключа составляет
56 х 2 = 112 битов, что значительно увеличивает криптоаналитическую стой-
кость шифра. По мы хотели бы провести более подробный анализ соответствую-
щего алгоритма.
Сведение к однократному шифрованию
Предположим, что в случае DES для любой пары 56-битовых ключей К, и
Ка можно было бы найти третий ключ К3, для которого
ЕКа[Ек[Р]] = Ек,[Р]. (4Л)
Если бы это было так, то двойное (и вообще любое многократное) шифрование с
помощью DES теряло бы всякий смысл, поскольку результат был бы эквивалентен
результату однократного шифрования с некоторым новым 56 битовым ключом.
Из самого вида равенства (4.1) должно быть понятно, что оно вряд ли может
выполняться. Вспомним, что шифрование с помощью DES можно интерпретиро-
вать как отображение 64-битовых блоков в 64-битовые блоки. Фактически такое
отображение представляет собой некоторую перестановку. Значит, если рассмот-
реть все 2м возможности для входных блоков, шифрование DES с заданным
ключом должно определять однозначное соответствие каждого блока своему
уникальному 64-битовому блоку. В противном случае, если бы, скажем, какая-
то пара разных входных блоков отображалась в один и тот же выходной блок,
дешифровать такое сообщение было бы невозможно. Но если мы имеем 2“ воз-
можности для входных блоков, то сколько существует отображений, задающих
различные перестановки на таком множестве входных блоков? Как легко видеть,
числе таких отображений равно
(2м)! = > (1О10*)
136
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
(а; Двойное шифрование
Шифрование
Дешифрование
(б) Тройное шифрование
Рис. 4.1. Многократное шифрование
В то же время для каждого из возможных ключей DES задает только одно
отображение, а поэтому общее число отображений должно быть равным
2м < 10”.
Таким образом, разумно предположить, что при последовательном использо
вании алгоритма DES дважды с двумя разными ключами будет получено ото-
бражение, отличное от всех тех, которые получаются при однократном примене-
нии DES, Здесь следует заметить, что, несмотря на многочисленные и вполне
очевидные аргументы в пользу такого утверждения, оно было строго доказано
только в 1992 году [САМР92].
4.1. "ТРОЙНОЙ" DES
137
Метод двусторонней атаки
Итак, повторное применение DES задает отображение, не эквивалентное ото-
бражениям, получаемым при однократном использовании DES. Но для криптоа-
нализа этой схемы существует и другой путь, не зависящий от конкретных осо-
бенностей DES. а, наоборот, подходящий для всех блочных шифров.
Соответствующий алгоритм, получивший название метода двусторонней
атаки (meet-in-the-middle attack), впервые был описан в [DIFF77J. Он основан
лом факте, что из
С = ЕК1[ЕК,[Р]]
вытекает (см, рис. 4,1(a))
X = Е. ГР] = DK,[C].
При наличии известной пары (Р, С) анализ с помощью данного метода выпол-
няется по следующей схеме. Сначала проводится шифрование Р с каждым из 2м
возможных значений К,. Полученные результаты сохраняются в таблице, а са-
ма таблица сортируется по значениям X. Затем выполняется дешифрование С
для каждого из 2" возможных значений Ка с одновременным сравнением полу-
чаемых результатов с результатами, представленными в таблице. Если обнару-
живается совпадение, то соответствующие два ключа проверяются на следующей
известной паре соответствующего открытого и шифрованного текста. Если ока-
зывается, что и с новой парой эти два ключа порождают правильный шифрован-
ный текст, они принимаются как истинные ключи.
С любым открытым текстом Р применение ‘•двойного” DES дает 2~ варианта
для соответствующего шифрованного текста. Но в “двойном” DES используется,
по сути, 112-битовый ключ, поэтому для ключей имеется 2’“ возможностей.
Следовательно, в среднем для данного открытого текста Р число 112-битовых
ключей, порождающих данный шифрованный текст С, будет равно 2'”/2м = 2”.
Значит, для первой пары (Р, С) будет получено около 2*’ ложных соответствий.
Однако те же артументы говорят о том, что для следующей пары соответствую-
щих 64-битовых блоков открытого и шифрованного текста доля ложных соот-
ветствий уменьшится до 2*ВЧЙ = 2". Отсюда вытекает, что, если метод двусто-
ронней атаки применить к двум известным парам соответствующих блоков от
крытого и шифрованного текста, вероятность обнаружить ключи будет равна
1 - 2 “. В результате оказывается, что оценка для сложности задачи криптоана-
лиза “двойного” DES с известным открытым текстом, несмотря на размер ключа
в 112 битов, имеет порядок 2м, что не намного превышает оценку 2”, имею-
щую место для обычного DES.
„Тройной" DES с двумя ключами
Очевидным решением проблемы противодействия методам двусторонней ата
ки является тройное шифрование с использованием трех разных ключей Это
увеличивает сложность задачи криптоанализа с известным открытым текстом до
2“г, что выходит за рамки как сегодняшних реальных возможностей, так и воз-
можностей обозримого будущего. Однако недостатком такого подхода является
требование использования ключа размером 56 х 3 = 168 битов, который можно
считать уж слишком громоздким.
138
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ АЛГОРИТМЫ
В качестве альтернативы Тачмаа (Tuchman) предложил тройное шифрован!
е использованием только двух ключей [TUCH79J. Соответствующая функци
представляет последовательность операций шифрования-дешифрованш
шифрования (EDE — encrypt-deerypt-encrypt), см. рис. 4.1(6):
С - Ef [DKi[Ehl[P]]].
То, что на второй стадии используется операция дешифрования, не сушест
венио с точки зрения шифрования, но это дает возможность пользователя?
“тройного” DES расшифровывать данные, зашифрованные другими пользовате
лями с использованием более старой, обычной версии DES:
C = EK1[DK,[EX1[P]]] = ER1[P].
“Тройной” DES с двумя ключами является довольно популярной альтернативе#
DES, рекомендованной стандартами управления ключами ANS Х9.17 и ISO 8732?
До настоящего времени неизвестны никакие практически осуществимые ме
годы криптоанализа “тройного" DES- Копперсмит в работе [СОРР94] отмечает,
что сложность анализа “тройного” DES с использованием перебора всех ключей
имеет порядок 2“а = (5x10”) , а сложность дифференциального криптоанализа в
сравнении с обычным алгоритмом DES растет по экспоненте, превышая в ре-
зультате 10“.
Не помешает рассмотреть некоторые из предложенных методов криптоанали-
за “тройного” DES, которые, несмотря на их несостоятельность с практической
точки зрения, все же дают возможность ознакомиться с теми подходами в крип-
тоанализе, которые приняты сегодня и могут стать основой новых успешных ме-
тодов криптоанализа завтра.
Первыми, кто предложил заслуживающую внимания технологию, были
Меркл (Merkle) и Хеллман (Hellman) fMFRK81]. Их план заключался в нахож-
дении значения открытого текста, дающего первое промежуточное значение
А = 0 (см рис. 4 1(6)), и последующем использовании метода двусторонней ата-
ки, направленной на определение двух ключей. Уровень сложности такой задачи
оценивается величиной 2й, но для реализации этого подхода требуется наличие
2“ пар избранного открытого и шифрованного текста — просто невероятно, что-
бы владелец ключа предоставил противнику такую возможность.
Технология анализа с известным открытым текстом была кратки описана в
работе [OQRS90J. Являясь более предпочтительным по сравнению с криптоана-
лизом, предполагающим наличие избранного известного текста, эта технология
все же требует больше усилий. Метод анализа базируется на том факте, что если
известны А и С (см. рис. 4.1(6)), то задача сводится к анализу “двойного” DES.
Конечно, противник не знает А — и даже если ему известны Р и С, оба ключа
остаются пока неизвестными. Однако противник может выбрать вероятное зна-
чение А и попытаться отыскать известную пару (Р. С), с помощью которой полу-
чается значение А. Анализ выполняется по следующей схеме.
American National Standard' Financial Institution Кву Management (Wholesale) — Американ-
ский национальный стандарт управления ключами финансовых организаций (оптовая торгов-
ля). С таким названием стандарт Х9.17 выглядит довольно загадочно. Однако ряд определяе-
мых этим стандартом технологий, как вы увидите из дальнейшего материала книги, был при-
нят к использованию в других стандартах и многих приложениях.
4.1 “ТРОЙНОЙ” ПГЯ
1. Берутся п нар (Р, С) и размешаются в первой таблице (рис. 4.2(6)). отсор-
тированные по значениям Р.
2. Выбирается произвольное значение а для А и создается вторая таблица
(рис. 4.2(b)), элементы которой определяются по следующему правилу.
Для каждого из 2й возможных значений ключа К, = i вычисляется зна-
чение открытого текста Р,, порождающего а:
Р,=Б.[а].
Для каждого значения Р,, которому находится соответствующее значение
в первой таблице, создается элемент второй таблицы, состоящий из значе-
ния К, и значения В, которое получается для пары (Р, С) из первой, таб-
лицы при значении К,: .. *
В = D,[CJ.
По окончании заполнения второй таблицы следует отсортировать ее по
значениям В.
(а) Тройное шифрование с двумя ключами для вероятной
пары ключей
L______с.
(б) Табиша, содержащая п
известных пар соответствующего
открыт ого и шифрованного
текста, отсортированных no Р
Bj Ключ i
*
(в) Таблица, содержащая
промежуточные значения
и вероятные пары
ключей
Рис 4.2 Анализ “тройного" DES с известным открытым текстом
14U
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ. АЛГОРИТМЫ
3, Теперь во второй таблице содержится множество вероятных значений К,
и можно приступить к поиску значения Ка. Для каждого из 2°° возмож-
ных значений ключа К2 = j вычисляется второе промежуточное значение
для выбранного выше значения а:
В,=О,[а].
При этом каждое очередное значение В, сравнивается со значениями во
второй таблице. Если обнаруживается совпадение, то соответствующий
ключ i из второй таблицы вместе с соответсвующим значением j задают
вероятную пару ключей (К,, КД. Почему? Потому что обнаружена пара
ключей (i, j), порождающая известную пару (Р, С) (см. рис. 4.2(a)).
4. Каждая найденная таким образом вероятная пара ключей (i, ]) проверяет-
ся на нескольких других известных парах соответствующего открытого и
шифрованного текста. Если некоторая пара ключей по-прежнему порожда-
ет требуемый шифрованный текст, задача решена. Если же такой пары не
обнаружено, все шаги, начиная с п. 1, повторяются для нового значения а.
Для заданной известной пары (Р, С) вероятность нахождения уникального
значения а, при котором приведенная выше схема приведет к успеху, равна
1 / 2м . Значит, если взять п пар (Р, С), вероятность успеха для одного выбранно-
го -значения а составит п/2*. Из теории вероятности известно, что ожидаемое
число попыток, требуемых для того, чтобы вытащить красный шар из корзины,
содержащей п красных шаров и N — л зеленых, равно (ЛГ + 1)/(п - 1), если шары
после каждой попытки в корзину не возвращаются. Поэтому в нашем случае
ожидаемое число значений а, которые придется проверить, при достаточно
больших значениях п оказывается равным
2* +1 _ 2*
п +1 п
Таким образом, ожидаемое время, необходимое для успешного криптоанализа
алгоритма, оказывается порядка
лв<
(2й)—__ _ т120 »«?'
' ' п
„Тройной" DES с тремя ключами
Хотя описанные выше методы криптоанализа и оказываются несостоятель-
ными с практической точки зрения, использование “тройного” DES с двумя
ключами может вызывать некоторые опасения относительно его криптоана лити-
ческой стойкости. Поэтому многие специалисты (см., например. [KALI96]) скло-
няются к мысли, что более надежной альтернативой является “тройной” DES с
тремя ключами. Последний использует ключ, эффективная длина которого со-
ставляет 1о8 битов, и выполняет преобразование, задаваемое формулой
C = EK1[DK,[EK1[P]]]
Обратная совместимость с DES будет обеспечена, если положить Ка = Ка или
К, = К,.
4.1. ТРОЙНОЙ” DES
141
“Тройной” DES с тремя ключами реализован во многих приложениях, ориен
тированных на работу с Internet, в том числе в PGP и S/M1ME, которые будут
рассмотрены в главе 12.
4.2. Международный алгоритм шифрования данных
К (IDEA)
Международный алгоритм шифрования данных (IDEA — International Dara
Encryption Algorithm) представляет собой симметричный блочный шифр Его
разработали сотрудники Швейцарского федерального института технологий
(Swiss Federal Institute of Technology) Сюдзя Лай (Xuejia Lai) и Джеймс Массей
(James Massey). Оригинальная версия алгоритма была опубликована в |1_А19и].
Усовершенствованная версия, изменения в которой были призваны повысить
стойкость алгоритма в отношении методов дифференциального криптоанализа,
была представлена в [LAI91J и подробно описана в [LAI92].
IDEA является одним из ряда алгоритмов традиционного шифрования, пред-
лагаемых в качестве замены DES, который, как уже говорилось в главе 3, по
мнению многих экспертов, уже исчерпал сы>и возможности. Среди всего пред-
ложенного алгоритм IDEA выглядит одним из самых вероятных кандидатов на
замену DES. Например, IDEA включен в PGP (см. в главе 12), а уже одно это
обеспечивает алгоритму повсеместное использование.
Внутренняя структура алгоритма
IDEA представляет собой блочный шифр, использующий 128-битовый ключ для
шифрования данных блоками по 64 бита. Для сравнения напомним, что DES тоже
работает с 64 битовыми блоками, но шифрует их с помощью 56-битового ключа.
Принципы, которые легли в основу’ конструкции IDEA, можно разделить на
две группы; задачей одних было повышение криптоаналитической стойкости, а
задачей других — обеспечение простоты реализации.
Криптоаналитическая стойкость
Следующие параметры IDEA характеризуют его сопротивляемость криптоа-
нализу.
• Длина блока. Длина блока должна быть достаточной для того, чтобы ис
ключить возможность статистического анализа (т.е. не дать противнику
реальных шансов воспользоваться тем, что одни блоки появляются в шиф-
рованном тексте чаше, чем другие). В то же время с ростом размера блока
сложность реализации эффективной функции шифрования растает по за
кону экспоненты [WEGE87]. По общему признанию, для обеспечения при-
емлемого уровня криптоаналитической стойкости считается достаточным
использование блоков размером 64 бита. Кроме того, режим шифрованной
обратной связи вносит дополнительный вклад в повышение криптоанали
тической стойкости шифра.
142
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Длина ключа. Длина ключа должна быть достаточной, чтобы исключить
возможность анализа с помощью перебора всех вариантов ключей. Исполь-
зование 128-битового ключа в алгоритме IDEA обеспечивает данному алго-
ритму достаточную надежность в этом отношении как сегодня, так и в
обозримом будущем.
Конфузия. Зависимость шифрованного текста от открытого текста и от ключа
шифрования должна быть сложной и неочевидной. Целью в данном случае
является маскировка зависимости статистических характеристик шифрован-
ного текста от статистических характеристик открытого текста. В алгоритме
IDEA, как будет показано ниже, эта цель достигается с помощью грех различ-
ных операций. Этим он существенно отличается от DES. где используется
только операция XOR и нелинейные 6-матрицы небольшого размера.
Диффузия. Каждый бит открытого текста должен влиять на значение ка-
ждого бита шифрованного текста, как и каждый биг ключа должен влиять
на значение каждого бита шифрованного текста. Распределение каждого
бита открытого текста по многим битам шифрованного текста скрывает
статистическую структуру открытого текста. В этом отношении алгоритм
IDEA оказывается весьма эффективным.
Давайте остановимся на двух последних из этих пунктов- Конфузия в IDEA
достигается путем смешанного использования трех различных операций. Каждая
из операций предполагает два 16-битовых входных значения, в результате обра-
ботки которых получается одно 16 битовое выходное значение. Вот эти операции.
Побитовое исключающее “ИЛИ”, обозначаемое символом ©
Сложение целых чисел по модулю 2” (по модулю 65536) с входными и
выходными значениями, рассматриваемыми как 16-битовые целые числа
без знака. Эта операция обозначается символом ES.
Умножение целых чисел по модулю 2” + 1 (по модулю 65537) с входными
и выходными значениями, рассматриваемыми как 16-битовые целые числа
без знака, за исключением блока, состоящего из одних нулей, который
интерпретируется как 2'‘. Эта операция обозначается символом О .
Например,
000000000000000 G 100000000000000 = 1000000000000001,
так как
2“ х 2“ mod (2й +1) = 21* + 1.
В табл. 4.1 доказаны результаты выполнения этих трех операций с числами,
состоящими из двух битов. Эти операции являются несогласованными в сле-
дующем смысле.
1. Никакие две из этих трех операций не подчиняются дистрибутивному за-
кону. Например.
а ЕЕ (Ь О с) £ (a S 5) О (а m с).
2. Никакие две из этих трех операций не подчиняются ассоциативному зако-
ну. Например:
и Т (Ъ Ф с) * (a i Ь) Ф с .
4 2 МЕЖ Л У>1 АГОТ1П ft*
Использование таких несогласованных операций в комбинации обеспечивает
высокую сложность преобразования входного значения, что значительно затруд-
няет криптоанализ данного алгоритма по сравнению с алгоритмом DES, в кото-
ром используется только операция XOR (исключающее "ИЛИ’)-
Таблица 4.1. Функции, используемые в IDEA (для операндов длиной 2 бита)
X Y ХШ Y XOY X®Y
0 00 0 00 0 00 1 01 0 00
0 00 1 01 1 01 0 00 1 01
0 00 2 10 2 10 3 11 2 10
0 00 3 11 3 11 2 10 3 11
1 01 0 00 1 01 0 00 1 01
1 01 1 01 2 10 1 01 0 и0
1 01 2 10 3 11 2 10 3 11
1 01 3 И 0 00 3 11 2 10
2 10 0 00 2 10 3 11 2 10
2 10 1 01 3 11 2 10 3 11
2 10 2 10 0 00 0 00 0 00
2 10 3 11 1 01 1 01 1 01
3 11 0 00 3 11 2 10 3 11
3 11 1 01 0 00 3 11 2 10
3 11 2 10 1 01 1 01 1 01
3 11 3 11 2 10 0 иО 0 00
Диффузия в IDEA обеспечивается в основном строительном блоке алгоритма,
называемом мультипликативно-аддитивной (МА) структурой (рис. 4.3). На вход
такой структуры поступает два 16-битовых значения, получаемых из открытого
текста, и два 16 битовых подключа, получаемых из ключа шифрования, а па
выходе генерируется два lb-битовых выходных значения. Вычислительный экс-
перимент с проверкой всех возможностей показывает, что любой выходной бит
первого раунда шифрования зависит как от каждого бита входного значения,
полученного из открытого текста, так и от каждого бита подключей [LAI91]. В
алгоритме данная структура используется последовательно восемь раз, что обес-
печивает очень высокие показатели диффузии. Ботее того, можно доказать, что
данная структура предусматривает наименьшее число операций (а именно четы-
ре), при котором достигается полная диффузия [LAI9J]).
Вопросы реализации
Алгоритм IDEA проектировался таким образом, чтобы обеспечить возможность
как программной, так и аппаратной реализации. Аппаратная реализация, обычно
осуществляемая в виде СБИС, применяется тогда, когда требуется высокая еко-
144
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
открытого текста из-за этой шибки передачи данных повреждены не будут, В
случае СКВ значение С, используется в качестве входного для регистра сдвига,
вследствие чего искажение С, выльется в дополнительные искажения для всего
истока принимаемых данных.
Недостатком режима OFB, с другой стороны, является то, что он обеспечива-
ет меньшую, чем CFB, надежность в отношении нарушений типа модификации
потока данных, Например, изменение одного бита шифрованного текста отража-
ется в изменении соответствующего бита восстановленного открытого текста. Это
дает возможность осуществления контролируемых изменений в получаемом ад-
ресатом открытом тексте. Практически, чтобы программа коррекции ошибок не
заметила подмены, противник должен внести необходимые ему изменения как в
данные, представляющие собой порцию шифрованного текста, так и в данные,
представляющие контрольную сумму для этой порции текста. Подробнее эти во-
просы освещены в [VOYD83].
тельный интерес вызывают поиски альтернативы для этого шифра. Один из вод-
ходов предполагает создание совершенно нового алгоритма. Некоторые пз таких
новых алгоритмов рассмотрены в данной главе. Другой подход, предполагающий
продолжение использования уже имеющегося программного обеспечения и обо-
рудования, заключается в мно/юкратном шифровании с помощью DES с приме-
нением нескольких ключей. Мы начнем с рассмотрения простейшего примера
реализации второго подхода, а затем обсудим получивший широкое признание
алгоритм “тройного” DES.
„Двойной" DES
Многократное шифрование в своей простейшей форме предлагает две стадии
шифрования и два ключа (рис. 4.1(a)). Для открытого текста Р и двух ключей
шифрования К, и К, шифрованный текст С создается по правилу
C=Ek,[Ekl[P]].
При дешифровании ключи применяются в обратном порядке:
P=DK [DKJC]J.
При использовании в качестве базового шифра DES длина ключа составляет
56 х 2 = 112 битов, что значительно увеличивает криптоаналитическую стой-
кость шифра. По мы хотели бы провести более подробный анализ соответствую-
щего алгоритма.
Сведение к однократному шифрованию
Предположим, что в случае DES для любой пары 56-битовых ключей К, и
Ка можно было бы найти третий ключ К3, для которого
ЕКа[Ек[Р]] = Ек,[Р]. (4Л)
Если бы это было так, то двойное (и вообще любое многократное) шифрование с
помощью DES теряло бы всякий смысл, поскольку результат был бы эквивалентен
результату однократного шифрования с некоторым новым 56 битовым ключом.
Из самого вида равенства (4.1) должно быть понятно, что оно вряд ли может
выполняться. Вспомним, что шифрование с помощью DES можно интерпретиро-
вать как отображение 64-битовых блоков в 64-битовые блоки. Фактически такое
отображение представляет собой некоторую перестановку. Значит, если рассмот-
реть все 2м возможности для входных блоков, шифрование DES с заданным
ключом должно определять однозначное соответствие каждого блока своему
уникальному 64-битовому блоку. В противном случае, если бы, скажем, какая-
то пара разных входных блоков отображалась в один и тот же выходной блок,
дешифровать такое сообщение было бы невозможно. Но если мы имеем 2“ воз-
можности для входных блоков, то сколько существует отображений, задающих
различные перестановки на таком множестве входных блоков? Как легко видеть,
числе таких отображений равно
(2м)! = > (1О10*)
136
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
(а; Двойное шифрование
Шифрование
Дешифрование
(б) Тройное шифрование
Рис. 4.1. Многократное шифрование
В то же время для каждого из возможных ключей DES задает только одно
отображение, а поэтому общее число отображений должно быть равным
2м < 10”.
Таким образом, разумно предположить, что при последовательном использо
вании алгоритма DES дважды с двумя разными ключами будет получено ото-
бражение, отличное от всех тех, которые получаются при однократном примене-
нии DES, Здесь следует заметить, что, несмотря на многочисленные и вполне
очевидные аргументы в пользу такого утверждения, оно было строго доказано
только в 1992 году [САМР92].
4.1. "ТРОЙНОЙ" DES
137
Метод двусторонней атаки
Итак, повторное применение DES задает отображение, не эквивалентное ото-
бражениям, получаемым при однократном использовании DES. Но для криптоа-
нализа этой схемы существует и другой путь, не зависящий от конкретных осо-
бенностей DES. а, наоборот, подходящий для всех блочных шифров.
Соответствующий алгоритм, получивший название метода двусторонней
атаки (meet-in-the-middle attack), впервые был описан в [DIFF77J. Он основан
лом факте, что из
С = ЕК1[ЕК,[Р]]
вытекает (см, рис. 4,1(a))
X = Е. ГР] = DK,[C].
При наличии известной пары (Р, С) анализ с помощью данного метода выпол-
няется по следующей схеме. Сначала проводится шифрование Р с каждым из 2м
возможных значений К,. Полученные результаты сохраняются в таблице, а са-
ма таблица сортируется по значениям X. Затем выполняется дешифрование С
для каждого из 2" возможных значений Ка с одновременным сравнением полу-
чаемых результатов с результатами, представленными в таблице. Если обнару-
живается совпадение, то соответствующие два ключа проверяются на следующей
известной паре соответствующего открытого и шифрованного текста. Если ока-
зывается, что и с новой парой эти два ключа порождают правильный шифрован-
ный текст, они принимаются как истинные ключи.
С любым открытым текстом Р применение ‘•двойного” DES дает 2~ варианта
для соответствующего шифрованного текста. Но в “двойном” DES используется,
по сути, 112-битовый ключ, поэтому для ключей имеется 2’“ возможностей.
Следовательно, в среднем для данного открытого текста Р число 112-битовых
ключей, порождающих данный шифрованный текст С, будет равно 2'”/2м = 2”.
Значит, для первой пары (Р, С) будет получено около 2*’ ложных соответствий.
Однако те же артументы говорят о том, что для следующей пары соответствую-
щих 64-битовых блоков открытого и шифрованного текста доля ложных соот-
ветствий уменьшится до 2*ВЧЙ = 2". Отсюда вытекает, что, если метод двусто-
ронней атаки применить к двум известным парам соответствующих блоков от
крытого и шифрованного текста, вероятность обнаружить ключи будет равна
1 - 2 “. В результате оказывается, что оценка для сложности задачи криптоана-
лиза “двойного” DES с известным открытым текстом, несмотря на размер ключа
в 112 битов, имеет порядок 2м, что не намного превышает оценку 2”, имею-
щую место для обычного DES.
„Тройной" DES с двумя ключами
Очевидным решением проблемы противодействия методам двусторонней ата
ки является тройное шифрование с использованием трех разных ключей Это
увеличивает сложность задачи криптоанализа с известным открытым текстом до
2“г, что выходит за рамки как сегодняшних реальных возможностей, так и воз-
можностей обозримого будущего. Однако недостатком такого подхода является
требование использования ключа размером 56 х 3 = 168 битов, который можно
считать уж слишком громоздким.
138
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ АЛГОРИТМЫ
В качестве альтернативы Тачмаа (Tuchman) предложил тройное шифрован!
е использованием только двух ключей [TUCH79J. Соответствующая функци
представляет последовательность операций шифрования-дешифрованш
шифрования (EDE — encrypt-deerypt-encrypt), см. рис. 4.1(6):
С - Ef [DKi[Ehl[P]]].
То, что на второй стадии используется операция дешифрования, не сушест
венио с точки зрения шифрования, но это дает возможность пользователя?
“тройного” DES расшифровывать данные, зашифрованные другими пользовате
лями с использованием более старой, обычной версии DES:
C = EK1[DK,[EX1[P]]] = ER1[P].
“Тройной” DES с двумя ключами является довольно популярной альтернативе#
DES, рекомендованной стандартами управления ключами ANS Х9.17 и ISO 8732?
До настоящего времени неизвестны никакие практически осуществимые ме
годы криптоанализа “тройного" DES- Копперсмит в работе [СОРР94] отмечает,
что сложность анализа “тройного” DES с использованием перебора всех ключей
имеет порядок 2“а = (5x10”) , а сложность дифференциального криптоанализа в
сравнении с обычным алгоритмом DES растет по экспоненте, превышая в ре-
зультате 10“.
Не помешает рассмотреть некоторые из предложенных методов криптоанали-
за “тройного” DES, которые, несмотря на их несостоятельность с практической
точки зрения, все же дают возможность ознакомиться с теми подходами в крип-
тоанализе, которые приняты сегодня и могут стать основой новых успешных ме-
тодов криптоанализа завтра.
Первыми, кто предложил заслуживающую внимания технологию, были
Меркл (Merkle) и Хеллман (Hellman) fMFRK81]. Их план заключался в нахож-
дении значения открытого текста, дающего первое промежуточное значение
А = 0 (см рис. 4 1(6)), и последующем использовании метода двусторонней ата-
ки, направленной на определение двух ключей. Уровень сложности такой задачи
оценивается величиной 2й, но для реализации этого подхода требуется наличие
2“ пар избранного открытого и шифрованного текста — просто невероятно, что-
бы владелец ключа предоставил противнику такую возможность.
Технология анализа с известным открытым текстом была кратки описана в
работе [OQRS90J. Являясь более предпочтительным по сравнению с криптоана-
лизом, предполагающим наличие избранного известного текста, эта технология
все же требует больше усилий. Метод анализа базируется на том факте, что если
известны А и С (см. рис. 4.1(6)), то задача сводится к анализу “двойного” DES.
Конечно, противник не знает А — и даже если ему известны Р и С, оба ключа
остаются пока неизвестными. Однако противник может выбрать вероятное зна-
чение А и попытаться отыскать известную пару (Р. С), с помощью которой полу-
чается значение А. Анализ выполняется по следующей схеме.
American National Standard' Financial Institution Кву Management (Wholesale) — Американ-
ский национальный стандарт управления ключами финансовых организаций (оптовая торгов-
ля). С таким названием стандарт Х9.17 выглядит довольно загадочно. Однако ряд определяе-
мых этим стандартом технологий, как вы увидите из дальнейшего материала книги, был при-
нят к использованию в других стандартах и многих приложениях.
4.1 “ТРОЙНОЙ” ПГЯ
1. Берутся п нар (Р, С) и размешаются в первой таблице (рис. 4.2(6)). отсор-
тированные по значениям Р.
2. Выбирается произвольное значение а для А и создается вторая таблица
(рис. 4.2(b)), элементы которой определяются по следующему правилу.
Для каждого из 2й возможных значений ключа К, = i вычисляется зна-
чение открытого текста Р,, порождающего а:
Р,=Б.[а].
Для каждого значения Р,, которому находится соответствующее значение
в первой таблице, создается элемент второй таблицы, состоящий из значе-
ния К, и значения В, которое получается для пары (Р, С) из первой, таб-
лицы при значении К,: .. *
В = D,[CJ.
По окончании заполнения второй таблицы следует отсортировать ее по
значениям В.
(а) Тройное шифрование с двумя ключами для вероятной
пары ключей
L______с.
(б) Табиша, содержащая п
известных пар соответствующего
открыт ого и шифрованного
текста, отсортированных no Р
Bj Ключ i
*
(в) Таблица, содержащая
промежуточные значения
и вероятные пары
ключей
Рис 4.2 Анализ “тройного" DES с известным открытым текстом
14U
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ. АЛГОРИТМЫ
3, Теперь во второй таблице содержится множество вероятных значений К,
и можно приступить к поиску значения Ка. Для каждого из 2°° возмож-
ных значений ключа К2 = j вычисляется второе промежуточное значение
для выбранного выше значения а:
В,=О,[а].
При этом каждое очередное значение В, сравнивается со значениями во
второй таблице. Если обнаруживается совпадение, то соответствующий
ключ i из второй таблицы вместе с соответсвующим значением j задают
вероятную пару ключей (К,, КД. Почему? Потому что обнаружена пара
ключей (i, j), порождающая известную пару (Р, С) (см. рис. 4.2(a)).
4. Каждая найденная таким образом вероятная пара ключей (i, ]) проверяет-
ся на нескольких других известных парах соответствующего открытого и
шифрованного текста. Если некоторая пара ключей по-прежнему порожда-
ет требуемый шифрованный текст, задача решена. Если же такой пары не
обнаружено, все шаги, начиная с п. 1, повторяются для нового значения а.
Для заданной известной пары (Р, С) вероятность нахождения уникального
значения а, при котором приведенная выше схема приведет к успеху, равна
1 / 2м . Значит, если взять п пар (Р, С), вероятность успеха для одного выбранно-
го -значения а составит п/2*. Из теории вероятности известно, что ожидаемое
число попыток, требуемых для того, чтобы вытащить красный шар из корзины,
содержащей п красных шаров и N — л зеленых, равно (ЛГ + 1)/(п - 1), если шары
после каждой попытки в корзину не возвращаются. Поэтому в нашем случае
ожидаемое число значений а, которые придется проверить, при достаточно
больших значениях п оказывается равным
2* +1 _ 2*
п +1 п
Таким образом, ожидаемое время, необходимое для успешного криптоанализа
алгоритма, оказывается порядка
лв<
(2й)—__ _ т120 »«?'
' ' п
„Тройной" DES с тремя ключами
Хотя описанные выше методы криптоанализа и оказываются несостоятель-
ными с практической точки зрения, использование “тройного” DES с двумя
ключами может вызывать некоторые опасения относительно его криптоана лити-
ческой стойкости. Поэтому многие специалисты (см., например. [KALI96]) скло-
няются к мысли, что более надежной альтернативой является “тройной” DES с
тремя ключами. Последний использует ключ, эффективная длина которого со-
ставляет 1о8 битов, и выполняет преобразование, задаваемое формулой
C = EK1[DK,[EK1[P]]]
Обратная совместимость с DES будет обеспечена, если положить Ка = Ка или
К, = К,.
4.1. ТРОЙНОЙ” DES
141
“Тройной” DES с тремя ключами реализован во многих приложениях, ориен
тированных на работу с Internet, в том числе в PGP и S/M1ME, которые будут
рассмотрены в главе 12.
4.2. Международный алгоритм шифрования данных
К (IDEA)
Международный алгоритм шифрования данных (IDEA — International Dara
Encryption Algorithm) представляет собой симметричный блочный шифр Его
разработали сотрудники Швейцарского федерального института технологий
(Swiss Federal Institute of Technology) Сюдзя Лай (Xuejia Lai) и Джеймс Массей
(James Massey). Оригинальная версия алгоритма была опубликована в |1_А19и].
Усовершенствованная версия, изменения в которой были призваны повысить
стойкость алгоритма в отношении методов дифференциального криптоанализа,
была представлена в [LAI91J и подробно описана в [LAI92].
IDEA является одним из ряда алгоритмов традиционного шифрования, пред-
лагаемых в качестве замены DES, который, как уже говорилось в главе 3, по
мнению многих экспертов, уже исчерпал сы>и возможности. Среди всего пред-
ложенного алгоритм IDEA выглядит одним из самых вероятных кандидатов на
замену DES. Например, IDEA включен в PGP (см. в главе 12), а уже одно это
обеспечивает алгоритму повсеместное использование.
Внутренняя структура алгоритма
IDEA представляет собой блочный шифр, использующий 128-битовый ключ для
шифрования данных блоками по 64 бита. Для сравнения напомним, что DES тоже
работает с 64 битовыми блоками, но шифрует их с помощью 56-битового ключа.
Принципы, которые легли в основу’ конструкции IDEA, можно разделить на
две группы; задачей одних было повышение криптоаналитической стойкости, а
задачей других — обеспечение простоты реализации.
Криптоаналитическая стойкость
Следующие параметры IDEA характеризуют его сопротивляемость криптоа-
нализу.
• Длина блока. Длина блока должна быть достаточной для того, чтобы ис
ключить возможность статистического анализа (т.е. не дать противнику
реальных шансов воспользоваться тем, что одни блоки появляются в шиф-
рованном тексте чаше, чем другие). В то же время с ростом размера блока
сложность реализации эффективной функции шифрования растает по за
кону экспоненты [WEGE87]. По общему признанию, для обеспечения при-
емлемого уровня криптоаналитической стойкости считается достаточным
использование блоков размером 64 бита. Кроме того, режим шифрованной
обратной связи вносит дополнительный вклад в повышение криптоанали
тической стойкости шифра.
142
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Длина ключа. Длина ключа должна быть достаточной, чтобы исключить
возможность анализа с помощью перебора всех вариантов ключей. Исполь-
зование 128-битового ключа в алгоритме IDEA обеспечивает данному алго-
ритму достаточную надежность в этом отношении как сегодня, так и в
обозримом будущем.
Конфузия. Зависимость шифрованного текста от открытого текста и от ключа
шифрования должна быть сложной и неочевидной. Целью в данном случае
является маскировка зависимости статистических характеристик шифрован-
ного текста от статистических характеристик открытого текста. В алгоритме
IDEA, как будет показано ниже, эта цель достигается с помощью грех различ-
ных операций. Этим он существенно отличается от DES. где используется
только операция XOR и нелинейные 6-матрицы небольшого размера.
Диффузия. Каждый бит открытого текста должен влиять на значение ка-
ждого бита шифрованного текста, как и каждый биг ключа должен влиять
на значение каждого бита шифрованного текста. Распределение каждого
бита открытого текста по многим битам шифрованного текста скрывает
статистическую структуру открытого текста. В этом отношении алгоритм
IDEA оказывается весьма эффективным.
Давайте остановимся на двух последних из этих пунктов- Конфузия в IDEA
достигается путем смешанного использования трех различных операций. Каждая
из операций предполагает два 16-битовых входных значения, в результате обра-
ботки которых получается одно 16 битовое выходное значение. Вот эти операции.
Побитовое исключающее “ИЛИ”, обозначаемое символом ©
Сложение целых чисел по модулю 2” (по модулю 65536) с входными и
выходными значениями, рассматриваемыми как 16-битовые целые числа
без знака. Эта операция обозначается символом ES.
Умножение целых чисел по модулю 2” + 1 (по модулю 65537) с входными
и выходными значениями, рассматриваемыми как 16-битовые целые числа
без знака, за исключением блока, состоящего из одних нулей, который
интерпретируется как 2'‘. Эта операция обозначается символом О .
Например,
000000000000000 G 100000000000000 = 1000000000000001,
так как
2“ х 2“ mod (2й +1) = 21* + 1.
В табл. 4.1 доказаны результаты выполнения этих трех операций с числами,
состоящими из двух битов. Эти операции являются несогласованными в сле-
дующем смысле.
1. Никакие две из этих трех операций не подчиняются дистрибутивному за-
кону. Например.
а ЕЕ (Ь О с) £ (a S 5) О (а m с).
2. Никакие две из этих трех операций не подчиняются ассоциативному зако-
ну. Например:
и Т (Ъ Ф с) * (a i Ь) Ф с .
4 2 МЕЖ Л У>1 АГОТ1П ft*
Использование таких несогласованных операций в комбинации обеспечивает
высокую сложность преобразования входного значения, что значительно затруд-
няет криптоанализ данного алгоритма по сравнению с алгоритмом DES, в кото-
ром используется только операция XOR (исключающее "ИЛИ’)-
Таблица 4.1. Функции, используемые в IDEA (для операндов длиной 2 бита)
X Y ХШ Y XOY X®Y
0 00 0 00 0 00 1 01 0 00
0 00 1 01 1 01 0 00 1 01
0 00 2 10 2 10 3 11 2 10
0 00 3 11 3 11 2 10 3 11
1 01 0 00 1 01 0 00 1 01
1 01 1 01 2 10 1 01 0 и0
1 01 2 10 3 11 2 10 3 11
1 01 3 И 0 00 3 11 2 10
2 10 0 00 2 10 3 11 2 10
2 10 1 01 3 11 2 10 3 11
2 10 2 10 0 00 0 00 0 00
2 10 3 11 1 01 1 01 1 01
3 11 0 00 3 11 2 10 3 11
3 11 1 01 0 00 3 11 2 10
3 11 2 10 1 01 1 01 1 01
3 11 3 11 2 10 0 иО 0 00
Диффузия в IDEA обеспечивается в основном строительном блоке алгоритма,
называемом мультипликативно-аддитивной (МА) структурой (рис. 4.3). На вход
такой структуры поступает два 16-битовых значения, получаемых из открытого
текста, и два 16 битовых подключа, получаемых из ключа шифрования, а па
выходе генерируется два lb-битовых выходных значения. Вычислительный экс-
перимент с проверкой всех возможностей показывает, что любой выходной бит
первого раунда шифрования зависит как от каждого бита входного значения,
полученного из открытого текста, так и от каждого бита подключей [LAI91]. В
алгоритме данная структура используется последовательно восемь раз, что обес-
печивает очень высокие показатели диффузии. Ботее того, можно доказать, что
данная структура предусматривает наименьшее число операций (а именно четы-
ре), при котором достигается полная диффузия [LAI9J]).
Вопросы реализации
Алгоритм IDEA проектировался таким образом, чтобы обеспечить возможность
как программной, так и аппаратной реализации. Аппаратная реализация, обычно
осуществляемая в виде СБИС, применяется тогда, когда требуется высокая еко-
144
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Рис. 4.3. Мультипликативно аддитивная
структура (МА)
рость работы. Программная реализация обладает большей гибкостью и меньшей
ценой В |LAI90] приводятся следующие принципы, положенные в основу IDEA.
* Принципы построения IDEA, обеспечивающие хорошие возможности для
программной реализации алгоритма,
• Использование подблоков. Операции шифрования должны работать с
блоками данных, размеры которых являются •‘естественными” для про-
граммного обеспечения, например с 8-, 16 или 32-битовыми блоками.
В IDEA используются 16 битовые блоки.
• Применение простых операций. Операции шифрования должны легко про-
граммироваться с помощью простых операций типа сложения, сдвига и
т.п. Все три базовые операции IDEA удовлетворяют данному требованию.
Даже самая сложная из них — операция умножения по модулю 2 ’ +1 —
легко представляется в виде композиции элементарных (см. задачу 4.4).
Принципы построения IDEA, обеспечивающие хорошие возможности для
аппаратной реализации алгоритма.
• Подобие процессов шифрования и дешифрования. Алгоритмы шифро-
вания и дешифрования должны отличаться только способом примене-
ния ключей, чтобы одно и то же устройство могло быть использовано и
для шифрования, и для дешифрования. Как и в случае DES, структура
IDEA удовлетворяет этому требованию.
• Регулярность структуры. Для реализации в виде СБИС шифр должен
иметь регулярную модульную структуру. IDEA строится на основе двух
базовых модулей, повторяющихся множество раз.
4.2. МЕЖДУНАРОДНЫЙ АЛГОРИТМ ПТИФРПтгл'мыя ntuutiv
Шифрование IDEA
Общая схема процесса шифрования IDEA показана на рис. 4.4. Как и в любой
схеме шифрования, на вход поступает два типа данных — открытый текст и
ключ. В данном случае длина блока открытого текста равна 64 битам, а длина
ключа — 128 битам.
В левой части рисунка видно, что алгоритм IDEA предполагает восемь раун-
дов шифрования, после которых выполняется функция выходного преобразова-
ния. Поступившее на вход значение разделяется на четыре 16 битовых подблока.
64 бита открытого текста X
64 бита шифрованного текста Y
Рис 4.4. Структура алгоритма IDEA
Z1
z6
Z,
z12
z43
z48
z49
z52
128-бит о ьый ключ Z
Генератор
подключей
146
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Не вход каждого раунда шифрования подается четыре 16-битовых блока, из ко-
торых генерируется четыре выходных 16-битовых блока. Выходное преобразова-
ние тоже генерирует четыре 16-битовых блока, в результате конкатенации кото-
рых получается 64-битовый шифрованный текст В каждом раунде задействова-
но шесть 16-битовых подключей, а в выходном преобразовании — четыре, что в
сумме составляет 52 подключа. Как показано в правой части рис. 4.4, все эти 52
подключа генерируются из исходного 128-битового ключа.
Детали алгоритма шифрования
Давайте проведем анализ отдельного раунда, схема которого показана на
рис. 4.5. На самом деле на рис. 4.5 показана схема первого раунда. Последую-
щие раунды имеют точно такую же структуру, н>- используют другие подключи
и другие входные данные. Как видим, структура шифра IDEA отличается от
классической структуры шифров Файстеля. Раунд начинается с преобразования,
которое с помощью операции сложения и умножения связывает четыре входных
подблока с четырьмя подключами. Это преобразование представлено серым пря
моугольниким вверху рис. 4 5. Четыре выходных блока этого преобразования
связываются с помощью операции XOR с целью получения двух 16-битовых
блоков, которые затем подаются на вход структуры МЛ (см. рис. 4.3), представ-
ленной на рисунке нижним серым прямоугольником. Кроме того, структура МА
получает на входе два подключа, а в результате обработки всех полученных дан
ных на выходе этой структуры генерируется дза 1б-битовых значения.
Наконец, четыре блока, полученных на выходе первого преобразования, свя-
зываются с помощью операции XOR с двумя блоками, получаемыми на выходе
структуры МА. и в результате имеется четыре выходных блока данного раунда.
Обратите внимание на то, что два выходных значения, отчасти зависящих от
второго и третьего входных значений (Х7 и X,), меняются местами, образуя
второе и третье выходные значения (W„ и W,,). Это увеличивает степень пере-
мешивания обрабатываемых битов и делает алгоритм менее уязвимым в отноше-
нии методов дифференциального криптоанализа.
Схема девятой стадии алгоритма, обозначенной на рис. 4.4 как выходное пре-
образование, показана на рис. 4.6. Обратите внимание на то, что она имеет
структуру, подобную структуре той части предыдущего раунда шифрования, ко
торая представлена верхним серым прямоугольником на рис. 4.5. Единственное
отличие в том, что второй и третий входные подблоки перед обработкой меняют-
ся местами. Фактически это означает отмену операции обмена, выполненной в
конце восьмого раунда. Как станет ясно позже, наличие этих лишних, по сути,
перестановок объясняется стремлением использовать одну и ту же структуру как
для шифрования, так и для дешифрования. Обратите внимание и на то, что в
отличие от восьми предыдущих раундов, на девятой стадии используется не
шесть подключей, а только четыре.
Вычисление подключей
Возвращаясь к рис. 4.4, мы видим, что все 52 ТБ-битовых подключа генери-
руются из 12В-битового ключа шифрования. При этом применяется следующая
схема. Первые восемь подключей, обозначенные Z„ Zs, . Za, образуются непо-
4 2. МЕЖДУНАРОДНЫЙ А’П’ПТ-й'Пм пгмлми
средственно из ключа Z, равен первым (наиболее значимым) 16 битам ключа
шифрования, Z2 — следующим 16 битам и т.д, Затем к ключу шифрования
применяется циклический сдвиг влево на 25 битов и создается восемь следую-
щих подключей. Эта процедура повторяется до тех пор, пока не будут получены
все 52 подключа. На рис. 4.7 показано соответствие битов всех подключей битам
исходного ключа.
Эта схема обеспечивает эффективный механизм изменения битов ключа, ис-
пользуемых в подключах всех восьми раундов. Обратите внимание на то, что пер-
вый подключ каждого раунда использует свой диапазон битов исходного ключа.
Если обозначить весь ключ шифрования как Z(1..128], то на первые ключи восьми
раундов шифрования придутся следующие диапазоны битов исходного ключа.
Z, = ZL1..16],
Z, ₽Z[94..112],
ZI3 = Z]9O..1O5],
Z„ =Z[83..98],
Za3«Z[76..91]
Z31 = Z[44..59]
Z„ = Z[34..52]
Z„ = Z[30 .45]
14Я
ГЛАВА 4- ТРАПИТТИОННПГ ПТНФРЛРДНИГ- ДПГПРМТМКТ
----------------------------------------Z (128 6m ।------------------------------------------>
Для всех раундов, за исключением первого и восьмого, 96 битов подключей,
используемых для раунда, не представляют собой непрерывного битового фраг-
мента исходного ключа, поэтому даже между ключами раундов нет простой
взаимосвязи, которая получалась бы, например, с помощью сдвига. Это объясня-
ется тем, что в каждом раунде фигурирует только шесть из восьми подключей,
получаемых в результате сдвига битов исходнот'о ключа.
Дешифрование IDEA
Процесс дешифрования практически идентичен процессу шифрования. При
дешифровании шифрованный текст подается на вход той же самой структуры
IDEA (см. рис. 4.4) — разница заключается только в ином выборе подключей.
Подключи дешифрования U„.. , Ua получаются из подключей шифрования по
следующей схеме.
4.2. МЕЖДУНАРОДНЫЙ АЛГОРИТМ ШИФРОВАНИЯ ПАННКТХ /юга»
1. Первых четыре подключа для i-ro раунда дешифрования получается из
первых четырех подключей JO - i) го раунда шифрования, если 9 м раун-
дом считать выходное преобразование. Первый и четвертый подключи де-
шифрования равны мультипликативным обращениям по модулю 2;“ +1
первого и четвертого подключей шифрования соответственно. Для раундов
со 2-го по 8й второй и третий подключи дешифрования равны аддитив-
ным обращениям по модулю 2"1 третьего и второго подключей шифрова-
ния соответственно. Для раундов 1 и 9 второй и третий подключи дешиф-
рования равны аддитивным обращениям ио модулю 2'“ второго и третьего
подключей шифрования соответственно.
2. Для первых восьми раундов два последних подключа i-ro раунда дешифро-
вания равны двум последним подключам (9 - i)-ro раунда шифрования.
Таблица 4.2. Подключи шифрования и дешифрования
Шифрование
Стадия Обозначение Эквивалент
Раувд 1 Z,Z4Z,Z. Z„ Z, Z11..96]
Раунд 2 Z. Z. Zg z„ z,, z14 Z[97..J28; 26 .89]
Раунд 3 N N Ы N N tsf Z[90..128; 1..25; 51..82]
Раунд 4 Z]B Z2a. Zt* Z[83..128; 1..50]
Раунд 5 Z4S ZM Z„ Z4, z„ z», Z[76..128; 1 43]
Раунд б s N Ы N tSJ N N Z[4T.,75; 101..128; 1..36]
Раунд 7 N Ы tsj a N N tsT Z[37..1OO; 126..128; J .29]
Раувд 8 N N N n N Z[30..125]
1 Треобразиваъие 2,э Z,„ Z„ Z„ Z[23..86]
Дешифрование
<тадия Обозначение Эквивалент
Раунд 1 и, и, и, и, и, и. ы N N N I N 1 s N
Раувд 2 UrUrU.Ul0U„ и„ bi N N N 1 3 N l ;=
Раунд 3 и„ и„ и„ и,. ии и» N X 1 N 1 N 3 N N N 3
Раунд 4 U..UML\ U„UMU„ N 1 N 1 N N E N N 8
Раунд 5 иии„ ивимияии bT bf ' 3 ьз N 1 b? 1 N
Раунд 6 и„ийи„ ини.и« bJ a 1 N 1 N 8 N 8 t N
Раунд 7 и„ илиии<„и.1и„ a N N bf N 1 bf 1 bf
Раунд 8 с« и„'0„и-и„и„ ZT -Z9-ZaZt0 Z5 Ze
Преобразование uJBus ииии z;’- Zj-z.z/
150
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ АЛГОРИТМЫ
Указанные соотношения представлены в табл. 4.2. Для обозначения мультип-
ликативного обратного служит обозначение Z, , так что
Z, GZ,'1 = 1.
Поскольку число 21' + 1 является простым, для любого отличного от нуля це-
лого значения Z, < 2*’ найдется значение, являющееся для Z, мультипликатив
ным обратным по модулю 2'° +1 (см. главу 7). Для обозначения аддитивного об-
ратного по модулю 2‘8 используется обозначение -Z,, поэтому
-Z; 3 Z; = О.
Чтобы убедиться в том, чти тот же алгоритм шифрования с подключами де-
шифрования дает нужный результат, рассмотрим рис. 4.8. в левой части которо-
го представлена схема шифрования в направлении гверху вниз, а в правой —
схема дешифрования в направлении снизу вверх. Каждый раунд разбит на две
подстадии — преобразование и субшифрование. Стадия преобразования соответ-
ствует верхнему серому прямоугольнику на рис. 4.5, а стадия субшифрования —
остальным операциям, выполняющимся в ходе очередного раунда.
Рассмотрим самые нижние прямоугольники на обеих схемах. При шифрова-
нии на выходе функции выходного преобразования имеем
Y,=W„GZ„, Y, =W„fflZe, ,
Yp=WnEEZM) Y.=WH0Zu.
При дешифровании на выходе первой подстадии первого раунда получаем
следующее:
J„=YtGU,, J„ =Y,3U,.
J,a=Y, SUa, J14=Y,OU4.
Заменив соответствующие значения эквивалентными, получим
J„ = Y, О V = W„ О Z4, О Zi0' = W„ ,
J„ - Y,E - Zm = W„3 Zw3 - ZM = W,4,
jal =Y,ffl-zM = wMffizHa-zM = wB,
J,4 = Y. 0 Z„~ = W.4 О Z42 G Z„ ‘ = W,..
Таким образом, выходные значения первой подстадии первого раунда дешиф-
рования совпадают с входными значениями последней стадии шифрования, за
исключением того, что второй и третий блок оказываются переставленными. Те-
перь рассмотрим следующие соотношения, которые можно вывести из рис. 4.5.
W,, = 1.1®МАВ(1.1®1И,1„Ф1И),
=1„®МАк(1„@1м,1иФ1н),
= I„ ® MAJI,, Ф 1И, I., Ф 1,4),
Wm = I,4©MAi_(I.1©I„, 1„®1м),
где МА,(Х, Y) обозначает правое выходное значение структуры МА для вход-
ных значений X и Y, a MAL(X, Y) — левое выходное значение структуры МА
для входных значений X и У (см. рис. 4.3). Тогда
4.2. МЕЖДУНАРОШЛЛТ*
Г
V„ = J„ ® MA„(J,, Ф J„, Jia Ф J,J
= Wu Ф MAr(W„ ф wm> we ® WM)
= I„ ® МАД1„ Ф I,,» I,- ® k) ©
MAJI,, Ф МАД1„ Ф l.„ к © к) ® к © MAJ к ® I,„ IM ФIM),
к ® MA; (I„ ® 1и. ® к) © к ® Ф к. к © k)J
= к ® MAk(I„ ® к, к ® к) ® МЛР(181 © k-1„ © Im)
= 1.,
Раундв Раунд 2 Раунд!
Xt X2 Х.Я x4 Xj x2 x3 x4
Puc. 4.8. Шифрование и дешифрование IDEA
152
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Точно также получаем
V - I
V I» >
v,. = и.
v„ = i„.
Таким образом, выходные значения второй подстадии процесса дешифрова-
ния совпадают с входными значениями предпоследней подстадии шифрования,
за исключением того, что второй и третий блок оказываются переставленными.
Продолжая аналогичные рассуждения, можно показать, что такое соответствие
сохранится для всех соответствующих подстадий на рис, 4.8 до тех пор, пока мы
не будем иметь
V,. = 1„,
V = I
* ва *13 >
VM=IU,
=1„.
Наконец, поскольку выходное преобразование процесса дешифрования экви-
валентно преобразованию первой подстадии процесса шифрования, если не счи-
тать обмена местами второго и третьего блоков, мы видим, что на выходе всего
процесса дешифрования получаются значения, совпадающие с входными значе-
ниями процесса шифрования.
4.3. Blowfish
Blowfish — это симметричный блочный шифр, разработанный Брюсом Шнай-
ером (Bruce Schneier) [SCHN93, SCHN94]. При разработке этого шифра была по-
ставлена задача обеспечения следующих характеристик.
Скорость, Blowfish шифрует данные на 32-разрядных микропроцессорах со
скоростью 18 тактов на байт.
• Компактность. Blowfish может выполняться в области памяти размером
менее 5 Кбайт.
Простота Структура Blowfish очень проста не только для реализации, но
и для оценки ее криптоа налит нческой стойкости. -*Ч'
Изменяемая степень защиты. Длина ключа является переменным пара-
метром и может изменяться вплоть до 448 битов. Это позволяет выбрать
оптимальное соотношение между скоростью работы и обеспечиваемым
уровнем защиты.
При шифровании Blowfish из 64-битовых блоков открытого текста создает 64-
битовые блоки шифрованного текста. Алгоритм Blowfish реализован во многих
продуктах и достаточна тщательно исследован На сегодняшний день надежность
Blowfish не вызывает сомнений.
4.3. BLOWFISH
1КЙ
Вычисление подключей и S-ллатриц
Blowfish позволяет использовать ключ, длина которого меняется в диапазоне
от 32 до 448 битов (от 1 до 14 32-битовых слов). Из основе этого ключа генери-
руется 18 32-битовых подключей и четыре S-матрицы размера 8 х 32, в общей
сложности содержащие 1024 32-битовых элемента. Всего получается 1042 32-
битовых значения, или 4168 байтов.
Ключи хранятся в К-массиве:
К„ К„ , 1<;<14.
Подключи хранятся в Р-массиве:
Р„Л. -»Р«-
Имеется четыре S-матрицы, каждая из которых содержит 256 32-битовых
элементов:
‘S'i.o» з,..SluM
sJti, ...,
Ssi), S,,, ...,
^><01 Su» *^4.aoo
P-массив и S-матрицы генерируются в следующей последовательности.
1. Сначала инициализируется P-массив, а затем четыре S-матрицы, для чего
используются биты дробной части числа л — первые 32 бита дробной час-
ти числа л присваиваются Р,, следующие 32 бита присваиваются Р, и т.д.
Например, выразив все числа в шестнадцатеричной форме, получим
Р, = 243F6A88,
Р, = 85A308D3,
S.,1M = 578FDFE3,
Sis№ = 3AC372E6.
2. Выполняется операция XOR (побитовое исключающее “ИЛИ") P-массива и
К-массива (при необходимости слова из К массива используются повтор-
но). Например, при максимальной длине ключа (14 32-битовых слов) бу-
дем иметь Р, = Р, @ Kt, Ра = Р, ® К3, ..., Р„ = Р,, Ф , Р,ь = Р,5 ® К,, ...,
Р„ = Р„ Ф Kt.
3. Используя текущие значения Р- и S-массивов, шифруется 64-битовый
блок, состоящий из одних нулей, и результат шифрования замещает зна-
чения Р и Р,.
4. На основе текущих значений Р- и S-массивов шифруется значение, получен
ное на выходе шага 3, и результат шифрования замещает значения Р, и Р,.
5. Процесс продолжается до тех пор, пока не будут обновлены все элементы
P-массива по порядку, а затем — все элементы S-матриц, используя на
каждом шаге выходные значения постоянно меняющегося алгоритма
Blowfish.
154
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Процесс обновления можно представить в следующем виде.
Р.,Р, = Е,.,[0],
А, Л =ЕЯЛ[Р,||РЛ,
Р„,Р„ =EUAJ|P..L
SW,SU =E?.JP„||P,J,
A.Mt I •
где Er ,[Y] обозначает шифрованный текст, получаемый шифрованием Y по ал-
горитму Blowfish с текущими значениями массивов S и Р,
Для получения окончательных значений S- и Р-массивов алгоритм шифрова-
ния Blowfish необходимо выполнить 521 раз. Поэтому Blowfish не годится для
приложений, в которых секретный ключ меняется часто. Кроме того, для уско-
рения работы Р- и S-массивы лучше сохранить, а не генерировать всякий раз за-
ново по значению ключа. Для этого требуется более 4 Кбайт памяти. Поэтому
Blowfish не подходит для применения в приложениях с ограниченным объемом
памяти, например в смарт-картах.
Шифрование и дешифрование
В алгоритме Blowfish выполняется следующие две базовые операции.
Сложение. Сложение слов обозначается символом + и выполняется по мо-
дулю 2".
Побитовое исключающее “ИЛИ”. Эта операция обозначается символом Ф .
Важно то, что эти операции не коммутируют. Благодаря этому значительно
усложняется криптоанализ алгоритма.
На рис. 4.9 а показана схема процесса шифрования. Блок открытого текста
разделяется на две 32-битовые половины — LE, и RE„. Для обозначения левой
и правой половин данных, получаемых на выходе i-ro раунда, служат символы
LE и RE, соответственно. Алгоритм можно представить с помощью следующего
псевдокода.
for i = 1 to 16 do
RE, = LE,., ® P.;
LE, = F|RE ] ® RE,.,;
LE;, — RE,, ® P,a;
RE,, = LE л Р,-:
Получаемый в результате шифрованный текст содержится в двух переменных
— LE,. и RE„ . Схема функции F показана на рис. 4.10. Поступающее на вход F
32-битовое значение разделяется на 4 байта. Если обозначить эти байты как а, Ь,
с и d, то функцию можно определить как
F[a, b, с, d] = ((S,„ + S2 k) Ф Ss,) + SM.
Таким образом, в каждом раунде используется достаточно сложная функция,
включающая сложение по модулю 2аа, операцию XOR, а также подстановки, за-
даваемые S-матрицами.
4.3. BLOWFISH
(а) Шифрование
Рис. 49. Шифрование и дешифрование Blowfish
(б) Дешифрование
Алгоритм дешифрования, показанный на рис. 4.9(6), легко вывести из алго-
ритма шифрования. В данном случае 64 бита шифрованного текста сначала при
сваиваются двум переменным LDr и RD„, длина каждой из которых равна од-
ному машинному слову (32 бита). Левая и правая половины данных, получае-
мых на выходе i-ro раунда, обозначаются LD. и RD, соответственно. Как и для
большинства других блочных шифров, алгоритм Blowfish при дешифровании
предполагает использование подключей в обратном порядке. Однако в отличие
от других блочных шифров дешифрование в Blowfish выполняется в том же ал-
горитмическом направлении, что и шифрование. Алгоритм можно представить в
следующем виде.
for i = 1 to 16 do
KD, - LD , Ф ;
LD, = F[RD,]@RD ,;
LD,, = RDie 0 P,;
RDi: — LD1B Ф P.;
156
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Рис. 4.1 U. Один раунд шифрования Blowfish.
Обсуждение
Алгоритм Blowfish, по-видимому, является самым впечатляющим из всех
описанных в данной книге алгоритмов традиционного шифрования. В отличие
от DES. S-Матрицы Blowfish зависят от ключа. Но этим дело не ограничивается.
Некоторые другие алгоритмы, например RC5, тоже построены таким образом,
что выполняемые в ходе отдельного раунда функции зависят от данных (в RC5
такой функцией является циклический сдвиг). Однако в алгоритме Blowfish и
подключи, и S-матрицы генерируются путем последовательно применения само
го алгоритма Blowfish. В результате исходная последовательность бигов невооб-
разимо искажается, превращая криптоанализ в очень трудную задачу. Опубли-
кованных работ, посвященных криптоанализу алгоритма Blowfish, на сегодняш
ний день известно очень мало, а о слабых местах этого алгоритма, которым
можно было бы найти практическое применение, вообще ничего неизвестно.
Другой интересной особенностью структуры алгоритма Blowfish является то,
что в нем в ходе каждого раунда операции выполняются с обеими половинами
блока данных — в отличие от классических шифров Файстеля, где в любом раунде
обрабатывается только одна половина данных Это должно обеспечивать лучшие
показатели криптоаналитической стойкости, даже несмотря на го, что дополни-
тельная операция является линейной (XOR). В поддержку этого в [HEYS95] отме-
чается, что включение дополнительного линейного преобразования в каждый ра-
4.3. BLOWFISH
унд подстановочно-перестановочной схемы (SPN — substitution-permutation net-
work) улучшает показатели лавинного аффекта любого блочного шифра."
Что касается попыток криптоанализа с использованием метода перебора всех
возможных вариантов, то алгоритм Blowfish в этом отношении является прак-
тически неуязвимым, если выбрать соответствующую длину ключа (которая мо-
жет быть достаточно большой — вплоть до 448 битов).
Кроме того. Blowfish обладает весьма впечатляющей скоростью работы. В
табл. 4.3, полученной Шнайером, для различных алгоритмов, реализованных на
языке С, показано число тактов, необходимых для работы зтих алгоритмов при
условии их выполнения на процессоре Pentium. Как видно из таблицы, но ско-
рости выполнения Blowfish не имеет себе равных.
Таблица 4.3. Сравнение скорости работы блочных шифров для процессора
Pentium
Алгоритм Число тактов на раунд Число раундов Число тактов на шифрование одного байта
Blowfish 9 16 18
RC5 12 16 23
DES 18 16 45
IDEA 50 8 50
Тройной" DES 18 48 108
В JSCHN93] Шнайер приводит интересный список конструктивных решений,
которые раскрывают внутреннюю структуру Blowfish. Ниже перечислены неко-
торые выводы, которые можно сделать из представленного там обсуждения.
1. Задача криптоанализа с использованием перебора всех вариантов оказыва-
ется даже сложнее, чем это следует просто из длины ключа, поскольку са-
мо вычисление подключей требует немало времени Чтобы проверить всего
один ключ, требуется 522 выполнения всего алгоритма шифрования.
2. Функция F обеспечивает алгоритму Blowfish наилучшие из возможных по-
казателей лавинного эффекта для схемы Файстеля — в любом раунде i каж-
дый бит L, j влияет на значение каждого бита R, j. Кроме того, всякий бит
подключа зависит от каждого бита ключа, вследствие чего функция F на
выходе каждого раунда демонстрирует совершенный лавинный эффект в от-
ношении зависимости правой части выходных данных ( R,) от ключа (Р,).
3. Каждый бит входного значения функции F служит как входное значение
только для одной S-матрицы — в отличие от DES. где многие биты ис-
пользуются как входные значения для двух S-матриц, что в результате по-
вышает криптоаналитическую стойкость алгоритма в отношении методов
дифференциального криптоанализа. Шнайер утверждает, что в условиях
зависимости S-матриц от ключа эти меры не являются необходимыми, а
только усложняют алгоритм.
Авторы указанной работы рассматривали не конкретный алгоритм Blowfish, а подстановочно-
перестановочные схемы в общем.
158
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
4. В отличие от CAST функция F в Blowfish от раунда к раунду не меняется
Шнайер утверждает, что такая зависимость в данном случае не улучшит
криптографические характеристики шифра, поскольку имеется зависи-
мость от раунда подстановки в Р-массиве.
4.4. RC5 J
RC5 представляет собой алгоритм симметричного шифрования, разработан
ный Роном Райвестом (Ron Rivest) [RIVE94, RFVE95]. При разработке RC5 ста-
вилась задача достижения следующих характеристик.
Пригодность для аппаратной и программной реализации, В RC5 исполь-
зуются только элементарные вычислительные операции, обычно приме-
няемые в микропроцессорах.
Скорость выполнения. RC5 является простым алгоритмом, предполагаю-
щим работу с данными размером в машинное слово. Все основные опера-
ции также предусматривают работу с данными длиной в слово
Адаптируемость к процессорам с разной длиной машинного слова. Длина
слова в битах является параметром RC5 — при изменении длины слова
меняется сам алгоритм.
• Изменяемое число раундов. Число раундов является вторым параметром
RC5. Этот параметр позволяет выбрать оптимальное соотношение необхо-
димой скорости работы и требуемой степени защиты.
Изменяемая длина ключа. Длина ключа представляет третий параметр
RC5. Как и в предыдущем случае, этот параметр позволяет найти прием-
лемый компромисс между скоростью работы и обеспечиваемым уровнем
безопасности.
Простота. Структура RC5 очень проста не только для реализации, но и
для оценки ее криптоаналитической стойкости.
* Низкие требования к памяти. Низкие требования к памяти делают RC5
пригодным для использования в смарт-картах и других подобных устрой-
ствах с ограниченным объемом памяти.
Высокая степень зашиты. RC5 призван обеспечить высокую степень защи-
ты при условии выбора соответствующих значений параметров.
Зависимость циклических сдвигов от данных. В RC5 используются круго-
вые вращения (циклические сдвиги битов), величина которых зависит от
данных, что должно повышать криптоаналитическую стойкость алгоритма.
Алгоритм RC5 встроен во многие из основных продуктов компании RSA Data
Security, Inc., включая ESAFE, JSAFE и S/MA1L.
Параметры RC5
RC5 на самом деле представляет собой семейство алгоритмов шифрования,
определяемое тремя следующими параметрами.
4.4. RC5
159
К[Ь-и
|К(О5|КГЦ|КГ2]~[М»П * * • [___1 Байты
I...
1ализация~^
Преобразование
1 ЦО] 1 1-121 | * . . | Ц. Г | Слова
| 4QJ ' | | • • Г Ц-1] I
Рис. 4.11 Развертывание ключа RC5
Слова
a Odd[x] обозначает нечетное целое число, ближайшее к х (и совпадающее с х,
если х является нечетным, хотя в данном случае нечетных значений х и нет).
Например, Odd [е] = 3. a Odd]0] = 1 , Для допустимых значений и> значения этих
двух констант в шестнадцатеричном формате будут следующими.
W j 16 32 64
р. 1 В7Е1 В7Е15163 B7EJ51628AED2A6B
Q. 9Е37 9Е3779В9 9E3779B97F4A7C15
С использованием этих констант инициализация массива S проводится по ал-
горитму
S|0] = P.;
for i = l to Г-1 do
S[i] = ap-1] + Q„;
где все операции сложения выполняются по модулю 2". Затем инициализи-
рованный массив S смешивается с массивом ключей L, в результате чего получа-
ется массив S подключей. С этой целью выполняется три прохода большего из
этих двух массивов (меньший массив может потребовать при этом большего чис
ла приходов).
i = j = X = У = 0
do 3xmax(t, с) times
S[i] = (S| i] + X + У) «< 3; X = S|i]; i = (i + 1) mod(t);
LU] = (LU] + X + У) <« (X + У); У = LfJ]; J = (/ +1) mod (c);
Райвест [R1VE94] отмечает, что функция развертывания ключа демонстриру-
ет определенные свойства “необратимости’' — определить К по S достаточно
сложно.
4.4. RC5
161
Шифрование
В RC5 выполняется три элементарные операции (а также обратные к ним).
Сложение. Сложение слов, обозначаемое символом +, выполняется по мо
дулю 2*'. Обратная операция, обозначаемая символом является вычита-
нием но модулю 2J.
Побитовое исключающее “ИЛИ”. Эта операция обозначается симвочом ф .
Циклический сдвиг влево. Циклический сдвиг слова х влево на у битов
обозначается х «< у. Обратная операция представляет собой циклический
сдвиг слова х вправо на у битов и обозначается х »> у.
На рис. 4 12(a) показана схема алгоритма шифрования. Обратите анимание,
что структура данного алгоритма отличается от классической структуры Фай-
стеля. Открытый текст изначальни размещается в двух регистрах А и В по и1 би-
тов каждый. Для обозначения левой и правой частей данных, получаемых на
выходе i-ro раунда, служат символы LE. и RE . Алгоритм можно представить с
помощью следующего псевдокода.
LE0 = A+S[l];
RE, = B+S[l];
for i = 1 to r do
LE, = ((LE,$ RE.,) <« RE.,) i- S[2 x i] ;
RE, = ((RE,., © LE,) «< LE,) + S[2 Xi + 1];
Получаемый в результате шифрованный текст размещается в двух перемен-
ных — LE. и RE,. Каждый из г раундов состоит из подстановки, в которой ис-
пользуется оба cлoв^ данных, перестановки, в которой также участвует оба сло-
ва, и подстановки, зависящей от ключа. Обратите внимание на исключительную
простоту всей операции —- соответствующий алгоритм умещается в пятп строках
кода. Заметьте также, что в ходе каждого раунда изменяются обе половины бло-
ка данных. Таким образом, один раунд RC5 в некотором смысле эквивалентен
двум раундам DES.
Дешифрование
Алгоритм дешифрования, схема которого представлена на рис. 4.126, легко
получается из алгоритма шифрования В данном случае 2ю битов шифрованного
текста сначала присваиваются двум переменным LD, и RDr, длина каждой из
которых — одно слово. Для обозначения левой и правой частей данных, полу-
чаемых на входе i-ro раунда, используются символы LD, и RD,. а сами раунды
нумеруются от г до 1.
for I = г downto 1 d< •
RD., = ((RD - S[2 X i +11 »> LD.) © LD );
LD,., = ((LD. - S[2 x i] »> RD,,) © RD,,);
В = RD.. - S[l] ;
A = LD„ - S[0];
162
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Рис. 4.12. Шифрование и дешифрование RC5
Двумя наиболее замечательными особенностями RC5 являются простота ал-
горитма и использование управляемых данными циклических сдвигов. Цикли-
ческие сдвиги — единственная нелинейная составляющая данного алгоритма.
Райвест предупреждает, что, в связи с тем, что величина сдвига определяется
данными, обрабатываемыми алгоритмом, линейный и дифференциальный крип-
тоанализ алгоритма будет сопряжен с серьезными трудностями. Ряд результатов,
подтверждающих это утверждение, приведен в [Y1N97].
Нежимы RC5
С целью обеспечения возможности эффективного использования RC5 в неод-
нородной среде, спецификация RFC 2040 [BALD96] определяет четыре различ-
ных режима работы этого алгоритма.
Блочный шифр RC5. Алгоритм прямого шифрования, при котором берется
блок данных заданного размера (2ш битов) и из него с помощью зависяще-
го от ключа преобразования генерируется блок шифрованного текста точно
такого же размера. Этот режим часто называют режимом ЕСВ (режим
электронной шифровальной книги), см. главу 3, рис. 3.11.
RC5-CBC. Режим сцепления шифрованных блоков для RC5. Режим СВС рас-
сматривается в главе 3 (см. рис. 3.12). В режиме СВС обрабатываются сооб-
щения, длина которых кратна размеру блока RC5 (т.е. кратна 2w битам}.
4.4. RC5
Как уже упоминалось в главе 3, режим СВС обеспечивает более высокую
степень защиты, чем ЕСВ, поскольку генерирует разные блоки шифрованно
го текста для одинаковых повторяющихся блоков открытого текста.
RC5-CBC-Pad. Модификация режима СВС, предназначенная для работы с
открытым текстом любой длины Длина шифрованного текста в этом ре-
жиме превышает длину открытого текста не более чем на длину одного
блока RC5.
RC5-CTS. Режим заимствования шифрованного текста (ciphertext stealing),
также являющийся модификацией режима СВС. В этом режиме допуска
ется обработка открытого текста любой длины и генерируется шифрован-
ный текст точно такой же длины
Когда шифрование сообщения проводится в режиме СВС, необходим какой то
алгоритм подготовки к шифрованию сообщений, длина которых не кратна длине
блока. Самый простой подход состоит в использовании заполнителя для допол
нения сообщения до нужной длины. В RC5 предполагается, что любое сообщение
состоит из целого числа байтов. В конец сообщения добавляется от 1 до bb бай-
тов заполнителя, где bb равно длине блока RC5 в байтах (bb = 2w/&). Все байты
заполнителя выбираются одинаковыми и равными значению, представляющему
число добавляемых байтов. Например, если добавляется 8 байтов, то каждый
байт выбирается равным OUOolOOU.
В некоторых случаях заполнитель может оказаться неприемлемым, напри-
мер. если предполагается сохранять шифрованные данные в том же буфере па-
мяти, в котором изначально размещался открытый текст. В таких случаях дли-
на шифрованного текста должна равняться длине открытого текста. Эта харак-
теристика обеспечивается в режиме KC5-CTS (рис. 4.13). Предположим, что
последний блок открытого текста имеет длину L байтов, где L < 2и>/8. Тогда
шифрование должно выполняться по следующей схеме.
1. С помощью стандартной техники СВС шифруются первые (N - 2) блока.
2. С помощью операции исключающего "ИЛИ” Р„ , объединяется с предыду.
щим блоком шифрованного текста СЛ2, в результате чего получается YN.,.
3. Шифруется Yv_,, в результате чего получается Е, , .
4. Из E„.j выбирается первых L байтов, в результате чего создается С„ .
5. Значение Рл дополняется нулями и объединяется с помощью операции
исключающего “ИЛИ” с Е„_, , в результате чего получается Y„ .
6. Шифруется Y„ , в результате чего создается С., ,.
Два последних блока шифрованного текста полагаются равными С„_, и CN .
'4.5. CAST-128
1
CAST представляет собой процедуру построения алгоритмов симметричного
шифрования, разработанную Карлайлом Адамсом (Carlisle Adams) и Стаффордом
Таваресом (Stafford Tavares) [ADAM97a]. В этом разделе мы рассмотрим алго-
4
В тексте RFC 2040 содержится ошибка которая исправлена в приведенном здесь описании.
164
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ: АЛГОРИТМЫ
Рис. 4.13. Режим заимствования шифрованного текста в RC5
ритм CAST-128, определенный документом RFC 2144 [ADAM97b]. В CAST-128
допускается использование ключей длиной от 40 до 128 битов с шагом в 8 битов.
CaST имеет структуру классической схемы Файстеля (см. главу 3, рис. 3.5) с
16 раундами шифрования и оперирует 64-битовыми блоками открытого текста,
из которых генерируются 64-битовые блоки шифрованного текста. От схемы,
представленной на рис. 3,5, схема CAST отличается следующим: во первых, в
каждом раунде шифрования CAST используется два подключа (32-битовый Кт,
и 5-битовый Кг,), а во вторых, функция F зависит от раунда.
Технология CAST явилась результатом длительного процесса исследований и
усовершенствований под пристальным вниманием спецпалистов-криптологов. В
настоящее время она уже начинает применяться в ряде продуктов, одним из ко-
торых является PGP
Для случая CAST-128 мы подробно рассмотрим структуру алгоритма шифро-
вания. а затем обсудим процедуру вычисления подключей.
Шифрование CAST-128
В CAST-128 используется четыре элементарные операции.
Сложение и вычитание. Сложение слов, обозначаемое символом +, выпол-
няется по модулю 2Л. Обратная операция, обозначаемая символом яв-
ляется вычитанием по модулю 2".
Побитовое исключающее “ИЛИ”. Эта операция обозначается символом Ф .
Циклический сдвиг влево. Циклический сдвиг слова х влево на у битов
обозначается х «< у.
Алгоритм шифрования CAST-128 можно описать с помощью следующего
псевдокода. Открытый текст разделяется на две 32-битовые половины— Lo и R,.
Для левой и правой половин данных на выходе раунда i используются обозначе-
ния L, и R,. Шифрованный текст формируется в результате взаимной переста-
новки выходных значений шестнадцатого раунда, т.е. шифрованный текст обра-
зуется в результате конкатенации значений R,e и Lie.
4.5. CAST-128
1ЯЧ
Переменное число раундов. При прочих равных условиях увеличение чис-
ла раундов повышает криптоаналитическую стойкость алгоритма. Ясно,
что при этом возрастает и время шифрования/дешифрования. Но с воз-
можностью менять число раундов пользователи могут сами выбирать наи-
более подходящее для каждого конкретного случая компромиссное сочета-
ние степени защиты и скорости работы. Возможность изменять число ра-
ундов предусмотрена в RC5.
Обработка обеих половин блока данных в каждом раунде. В классическом
шифре Файстеля в каждом раунде изменяется только одна половина блока
данных. Но если со второй пололиной данных выполнить хотя бы элемен-
тарные преобразования, это не потребует больших затрат времени, но,
вполне вероятно, повысит надежность шифра. В алгоритмах IDEA, Blow-
fish и RC5 в каждом раунде обрабатываются обе половины блока шифруе-
мых данных.
Сегодня исследования алгоритмов шифрования традиционной схемы ведутся в
направлениях, представленных в данной главе, — предпочтение отдается усовер-
шенствованию шифра Файстеля и DES, а не разработке совершенно новых струк-
тур. Причина в том, что структура Файстеля к настоящему времени уже хорошо
изучена и зарекомендовала себя как надежная и не имеющая скрытых изъянов.
4,8. Задачи 1
1. Предположим, вам необходимо создать электронное устройство блочного
шифрования, в котором в режиме сцепления шифрованных блоков (СВС)
должен использоваться алгоритм, более криптоустойчивый, чем DES. Вам
подошел бы "тройной” DES, но он определен только в режиме ЕСВ Для
режима СВС “тройного” DES нет общепринятого стандарта, но на рис. 4. 16
показаны две возможные схемы, построенные на общем определении ре-
жима СВС. Какой из двух схем вы отдадите предпочтение
* с точки зрения безопасности?
• с точки зрения скорости работы?
2. Можете ли вы для любой из схем на рис. 4 16 предложить улучшения,
призванные повысить безопасность, имея в наличии лишь три микросхемы
DES и несколько модулей, реализующих функцию XOR? При этом пред-
полагается, что нельзя использовать более двух ключей.
3. Алгоритм криптоанализа "тройного” DES. который предложили Меркл и
Хеллман, начинается с выбора начального значения А = 0 (см. рис. 4.1(6)). Sa
тем для каждого из возможных 2У значений К, вычисляется открытый текст
Р, шифрование которою дает А = 0- Опишите остальные шага алгоритма.
4. Самая сложная для реализации операция в IDEA — это умножение по мо-
дулю 2” +1. Следующее равенство описывает один из способов, с помо-
щью которых эту операцию можно эффективно реализовать. Пусть а и b
являются п-битовыми целыми числами, отличными от нуля. Тогда
4.8. ЗАДАЧИ
1 70
(а) Одноконтурный режим СВС
(б) Трехконтурный режим СВС
Рис. 4J6 Использование “тройного" DES в режиме СВС
ubinod (2" + 1) =
(ab mod 2") - (ab div 2"),
(ab mod 2n) - (ab div 2") + 2” +1,
если (ab mod 2") > (ab div 2"),
если (ab mod 2") < (ab div 2").
Обратите внимание на то, что (ab mod 2") соответствует п наименее зна-
чимым битам ab, а (ab div 2") является простым сдвигом ab вправо на и
битов. Суть данной задачи состоит в доказательстве истинности приведен-
ного выше равенства.
• Покажите, что найдется единственная пара таких целых неотрицатель-
ных чисел q и г, что ab = q(2" + 1) + г.
• Укажите ограничения сверху и снизу для q и г.
• Докажите, что q + г < 2"и .
• Выразите (ab div 2") через q.
гпдрд л ’грд ПИТГИОЧНОЕ ШИФРОВАНИЕ. АЛГОРИТМЫ
• Выразите (abmod2'1) через q и г.
• Выведите выражение для г, используя результаты, полученные в пп. (<Г
и (е).
• Покажите, что г равно правой части равенства, приведенного в начале
формулировки задачи.
5. Для гарантии полной диффузии в IDEA используется четыре операции (см.
рис. 4.3). Докажите, что такое число операций является для этого мини-
мально необходимым. Доказательство постройте на использовании функ-
ции следующего вида:
(Y,, Y3) = Е(Х„ Х„ Z„ Z,) О < Х„ Y, < 2"; 0 < Z, < 2‘,
где Е(-, •, Z,,Za) является обратимой для любой пары (Z,,Z2). Такую
функцию можно назвать функцией шифрования. Говорят, что функция
шифрования обеспечивает полную диффузию, если каждое ее выходное
значение зависит от каждого входного, Необходимо доказать, что в случае,
когда функция шифрования имеет приведенную выше форму и обеспечи-
вает полную диффузию, алгоритм должен содержать, как минимум, четы-
ре операции.
• Покажите, что в функции должно быть не менее трех операций.
• Предположив, что в Е используется ровно три операции, покажите, что
такая функция не может быть обратимой.
6, а. Почему операция умножения в IDEA выполняется по модулю 2” + 1, а
не по модулю 2'“ ?
Ь, Почему операция сложения в IDEA выполняется по модулю 2", а не по
модулю 2” + 1 ?
7. Первый алгоритм, который Лай и Массей предложили под названием PES,
имел следующие отличия от IDEA.
• Четыре функции в блоке, представленном верхним серым прямоуголь-
ником на рис. 4.5, в PES следовали в порядке 0,0,3,Е, а в IDEA сле-
дуют в порядке О, ffl, Е, О.
• В PES после каждого раунда первый и второй блоки менялись местами
с третьим и четвертым, а в IDEA после каждого раунда меняются мес-
тами только второй и третий блоки.
Можно показать, что второе изменение увеличило криптоэналитическую
стойкость алгоритма в отношении методов дифференциального криптоана-
лиза (см. [LAI91]). Покажите, что первое из указанных выше отличий не
влияет на криптоаналитическую стойкость. Подсказка. Может ли некото-
рая предварительная и завершающая обработка данных обеспечить такой
же эффект?
8. Покажите, что операция дешифрования в алгоритме Blowfish является об-
ратной по отношению к операции шифрования.
9. Покажите, что операция дешифрования в алгоритме RC5 является обрат-
ной по отношению к операции шифрования
4.8. ЗАДАЧИ
10. В режиме RC5-CBC-Pad алгоритма RC5 открытый текст может быть до-
полнен байтами заполнителя в количестве от одного до bb. Почему нельзя
добавить нулевое количество байтов? Иными словами, если длина сообще-
ния кратна целому количеству блоков, почему бы не воспользоваться ре
жимом с дополнением и в этом случае?
11. На рис. 4.17 показан .альтернативный вариант режима RC5-CTS, в кото-
ром шифрованный текст получается такой же длины, как и открытый, ко-
гда длина открытого текста не кратна длине блока.
• Поясните принцип работы алгоритма.
• Поясните, почему режим RC5-CTS оказывается предпочтительнее вари-
анта, показанного на рис. 4.17.
12. Опишите, как дешифровать С.ч и С. в режиме RC5-CTS.
13. Докажите, что операция дешифрования в алгоритме CAST-128 является
обратной по отношению к операции шифрования.
(2н бит)
(2w бит)
(2w бит)
(j бит)
Рис. 4.17. Альтернативный метод шифрования последнего блока в режиме RC5CBC
176
ГЛАВА 4. ТРАДИЦИОННОЕ ШИФРОВАНИЕ- АЛГОРИТМЫ
ГЛАВА
Традиционное
шифрование и
конфиденциальность
В некоторых племенах Центральной Австралии каждый мужчина,
женщина или. ребенок имеют секретное или священное имя, которое
даруется старшими сородичами вскоре после его или ее рождения и
остается неизвестным никому, кроме посвященных членов группы.
Это секретное имя не упоминается почти никогда — только в ходе
особо торжественных церемоний — и неосторожность произнести
его в присутствии любого человека из другого племени означает
серьезнейшее нарушение родовых обычаев И даже в тех редких слу-
чаях. когда это имя упоминается вообще, оно произносится только
шепотом и только после того, как будут приняты все меры пре
^осторожности, гарантирующие, что имя не смогут услышать не-
посвященные. Аборигены считают, что чужак, узнавший секретное
имя, получает особое могущество, позволяющее с помощью калдовст
ва причинить любой вред тому, кому это имя принадлежит.
Джеймс Джордж Фрейзер. Золотая иетрь (The Golden Bough)
Джон записал буквы алфавита под буквами первых строк сообщения
и попробовал применить это. Внезапно он понял, что снова взломал
код Он почувствовал ни с чем несравнимое чувство триумфа Он
был на вершине мира. Ведь он не просто взломал июльский код — он
обнаружил ключ к любому из шифрованных сообщений, которые бу
дут получены в будущем, так как инструкции относительно ис-
точника следующего сообщения должны непременно содержаться в
сообщении, приходящем перед этим в конце каждого месяца
Руфь Реидел (Ruth Rendell). Talking to Strange Men
Исторически криптология сначала освещала только во-
просы использования традиционного шифрования с
целью обеспечения конфиденциальности. И только в
последние десятилетия теория и практика крипто тогии стала
включать такие новые задачи, как аутентификация, обеспечение целостности
данных, использование цифровых подписей и шифрование с открытым ключом.
Но прежде чем рассматривать эти недавно возникшие проблемы, мы рассмот-
рим использование традиционного шифрования для обеспечения конфиденциаль-
ности. Эта тема остается важной сама ио себе. Кроме того, хорошее понимание
данной гемы поможет лучше понять мотивы, приведшие к созданию методов
шифрования с открытым ключом, а также разобраться в некоторых вопросах, воз-
никающих в других задачах шифрования — например, в задаче аутентификации.
Мы начнем с обсуждения того, где именно : системе защиты следует размес-
тить средства, выполняющие само шифрование Здесь у нас есть выбор главным
образом между тем, что обычно называют канальным шифрованием и сквозным
шифрованием. Затем мы опишем использование шифрования в качестве средства
противодействия нарушениям защиты на основе анализа потока данных. После
этого будет рассмотрена достаточно сложная проблема распределения ключей.
Наконец, мы обратимся к вопросам, лежащим в основе одного из наиболее важ-
ных звеньев в цепочке обеспечения конфиденциальности, — вопросам генериро-
вания случайных чисел.
5.1. Размещение функции шифрования
Если принято решение использовать шифрование в качестве средства проти-
водействия нарушениям защиты, предполагающим анализ потока данных, необ-
ходимо решить, что именно следует шифровать и где использовать функцию
шифрования. Сначала в этом разделе мы выясним, где именно в цепи передачи
данных могут быть предприняты попытки нарушения защиты, а затем рассмот-
рим два главных подхода, различающихся по размещению функции шифрова-
ния, — канальное шифрование и сквозное шифрование.
Потенциальные возможности для нарушений защиты
В качестве примера рассмотрим рабочую станцию пользователя типичной
компании. На рис 5.1 показана совокупность средств связи, которыми может
быть оснашена такая рабочая станция, и эта совокупность, в конечном итоге, и
определяет соответствующий набор точек уязвимости.
В большинстве организаций рабочие станции подключены к локальной сети.
Обычно пользователь имеет возможность получить доступ к другой рабочей
станции, ведущему узлу и серверам либо непосредственно в рамках локальной
сети, либо через другие локальные сети в том же здании, связанные мостами и
маршрутизаторами. Здесь обнаруживается первая точка уязвимости. В данном
случае главной опасностью оказывается перехват данных другим служащим.
Обычно локальная сеть общедоступна — передача данных от одной рабочей
станции к другой открыта для всех станций сети. Данные передаются в виде
фреймов, и каждый фрейм содержит как адрес источника, так и адрес получате-
ля. Перехватчик имеет возможность отслеживать весь поток данных в сети и от-
бирать сообщения, исходящие от конкретного источника или адресованные кон-
кретному получателю.
1 тя
ГЛАВА 5 ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
Рис. 5.1. Точки уязвимости
К тому же перехватчику необязательно даже находиться в том же здании
фирмы. Если локальная сеть через сервер или один из ведущих узлов предпола-
гает возможность удаленного доступа к сети, это позволит нарушителю подклю-
читься к сети и отслеживать данные извне.
Доступ к внешним сетям из локальной сети очень часто осуществляется через
маршрутизатор, представляющий собой банк модемов или какой-то другой ком-
муникационный сервер. От сервера идет проводка к распределительному щиту.
Распределительный щит связывает внутренние линии передачи данных с теле-
фонными линиями и обеспечивает возможность осуществления внешних связей.
Распределительный щит уязвим сам по себе Если нарушителю пчвезет открыть
его, он сможет прослушать все провода и определить, по какому из них передают-
ся данные. После этого нарушитель может на один или несколько проводов уста-
новить радиопередатчик небольшой мощности, и передаваемые сигналы будут
приниматься в расположенном поблизости автомобиле или соседнем здании.
Дальше для проводки от распределительного щита имеется несколько вари-
антов на выбор Стандартная конфигурация предполагает связь с ближайшим
офисом локальной телефонной компании. Провода в распределительном щите
подключаются к кабелю, который, как и все другие кабели, обычно ведет к од-
ному общему большому кабелю в подвале здания. Этот общий кабель по подзем-
ным коммуникациям соединяется с центральным офисом телефонной компании.
Распределительный щит может также вести к передающей антенне или на-
земной передающей станции для связи со спутником или передачи данных по
радиорелейной связи. Антенна может связывать с частным каналом связи или
осуществлять подключение к средствам дальней связи, предлагаемым, напри-
мер, AT&T или MCI.
5.1. РАЗМЕЩЕНИЕ ФУНКЦИИ ШИФРОВАНИЯ
1 7Л
Распределительный щит может вести и к узлу сети, передающей данные с
коммутацией пакетов. Такая связь может осуществляться по арендованному ка-
налу, прямой выделенной линии или переключаемому соединению, использую-
щему общедоступные средства передачи данных, например ISDN. Внутри такой
сети данные передаются от узла к узлу, пока не доберутся до узла, из которого
эти данные смогут попасть в место своего конечного назначения.
Нарушение защиты может иметь место в любой точке на пути передачи ин-
формации Для активного нарушения защиты атакующему необходимо получить
физический контроль над частью канала связи с тем, чтобы внедриться в поток
передаваемых данных. Для пассивных нарушений атакующему нужна только
возможность наблюдать за передачей данных. Каналом передачи данных может
быть кабель (телефонная витая пара, коаксиальный или оптоволоконный ка-
бель), волновая связь (радиосвязь) или спутниковый канал. Защита витой пары
и коаксиального кабеля может быть нарушена либо с помощью прямого присое-
динения к ним отвода, либо с помощью устройств, улавливающих электромаг-
нитное излучение. При прямом подключении имеются возможности и для ак-
тивных, и для пассивных нарушений, а вот индуктивные отводы служат для
пассивных форм нарушений. Пи один из таких типов отвода не несет практиче-
ской пользы в случае оптоволоконного кабеля, что является одним из преиму-
ществ этого носителя. Стекловолокно не генерирует электромагнитного излуче-
ния и поэтому не дает возможности использовать индуктинные отводы. Физиче-
ское повреждение кабеля серьезно ухудшает качество передачи сигнала и
поэтому легко обнаруживается. Волновая передача данных и передача по спут-
никовым каналам может быть перехвачена с минимальным риском для наруши-
теля, особенно при передаче по спутниковым каналам, которые простираются на
очень большие расстояния. Активные нарушения можно осуществить и при вол-
новой, и при спутниковой связи, хотя их реализация технически сложна и мо-
жет оказаться очень дорогой.
В дополнение к потенциальной уязвимости самих каналов связи, имеющиеся
на пути передачи данных различные устройства-процессоры тоже могут подвер
гаться атакам. Такие атаки могут представлять собой попытки замены аппара
туры или программного обеспечения с целью получения доступа к памяти про-
цессора или мониторинга электромагнитного излучения. Нарушения такого типа
менее вероятны, чем нарушения канала связи, о которых шла речь выше, но,
тем не менее, тоже являются источником риска.
Итак, для нарушений защиты имеется целый ряд возможностей. К тому же в
случае глобальных средств связи большая часть этих возможностей не поддается
контролю со стороны конечного пользователя. Даже в случае локальных сетей, в
которых возможны физические меры предосторожности, всегда остается угроза
неадекватного поведения недовольного служащего.
Канальное и сквозное шифрование
Наиболее плодотворным и наиболее общим подходом к обеспечению безопасно-
сти в точках уязвимости, о которых шла речь в предыдущем разделе, является ис-
пользование шифрования. Если для противодействия нарушениям защиты исполь-
зовать шифрование, необходимо решить, что именно следует шифровать и где ис-
~ „п,л,пап ЛТГ.Л7 ТЛ- тспЫгЪТЛПРРПИ А.ТГЬНОСТЬ
пользовать функцию шифрования. Как показано на рис. 5.2, в этом случае у нас
есть две основные возможности; канальное шифрование и сквозное шифрование.
Основные подходы
При канальном шифровании каждый уязвимый канал оборудуется на обоих
концах устройствами шифрования. Таким образом весь поток данных в канале
оказывается защищенным. Хотя для этого в большой сети потребуется немало
устройств шифрования, преимущества такого подхода очевидны. Одним из не-
достатков является то, что сообщение должно дешифровываться каждый раз,
когда оно проходит через пакетный переключатель (свитч), поскольку переклю-
чатель должен прочитать адрес (номер виртуального канала) в заголовке пакета,
чтобы направить пакет ио нужному адресу. Поэтому сообщение оказывается уяз-
вимым в каждом переключателе. При использовании общедоступных сетей с
коммутацией пакетов данных пользователь не имеет никакой возможности кон-
тролировать безопасность узлов такой сети.
По поводу использования канального шифрования следует сделать несколько
замечаний. Чтобы эта стратегия оказалась эффективной, шифрование должно
применяться во всех доступных для использования каналах на маршруте от ис
точника к адресату. Каждая пара узлов, находящаяся на концах одного канала,
должна применять свой уникальный ключ, и ключи, используемые для разных
каналов, должны быть различными. Таким образом, потребуется множество
ключей. Но каждый из этих ключей должен быть предоставлен только одной со-
ответствующей паре узлов.
Q — уст ройгтвс канального шифроваиия
УПП — узел переключения пакетов
Рис. 5.2. Шифрование в сети с коммутацией, пакетов
5.1. РАЗМЕЩЕНИЕ ФУНКЦИИ ШИФРОВАНИЯ
181
При сквозном шифровании процесс шифрования выполняется только в двух
конечных системах. Исходные данные шифруются в ведущем узле или термина-
ле источника. Затем данные в шифрованном виде передаются без изменений че
рез всю сеть к терминалу или ведущему узлу адресата. Адресат использует тот
же ключ, что и отправитель, и поэтому может дешифровать полученные данные.
Эта схема кажется безопасной с точки зрения защиты от воздействий в канале
связи или переключателях пакетов Поэтому сквозное шифрование освобождает
конечного пользователя от забот о степени защищенности сетей и каналов, по
которым осуществляется связь. Однако и у такого подхода имеется слабое место.
Рассмотрим следующую ситуацию. Ведущий узел подсоединяется к сети с
коммутацией пакетов по протоколу Х.25, открывает виртуальный канал к дру-
гому ведущему узлу и готовится передать данные этому ведущему узлу с исполь-
зованием сквозного шифрования. Данные передаются по такой сети в виде паке-
тов, состоящих из заголовка и некоторой порции данных пользователя. Какую
часть каждого пакета должен шифровать ведущий узел? Предположим, что ве-
дущий узел шифрует весь пакет, включая заголовок. Но этого делать нельзя, так
как, напомним, выполнить дешифрование может только другой ведущий узел.
Узел переключения пакетов получит шифрованные данные, не сможет прочитать
заголовок и поэтому не сможет переслать пакет дальше. Отсюда следует, что ве
дущий узел должен шифровать только ту часть пакета, которая содержит дан-
ные пользователя, и оставить заголовок нетронутым.
Итак, в случае сквозного шифрования данные пользователя оказываются за-
щищенными, чего нельзя сказать о самом потоке данных, поскольку заголовки
пакетов передаются в открытом виде. В то же время сквозное шифрование в не-
которой степени решает задачу аутентификации. Если конечные системы ис-
пользуют jfluw общий ключ шифрования, то получатель имеет возможность убе-
диться, что полученное сообщение пришло от соответствующего отправителя,
так как только этот отправитель использует соответствующий ключ. При ка-
нальном шифровании такая аутентификация уже не будет внутренним свойст-
вом самой схемы шифрования.
Чтобы достичь лучшей защиты, требуется как канальное, так и сквозное
шифрование (см. рис. 5.2). При использовании обеих этих форм шифрования ве-
дущий узел шифрует порцию пакета данных пользователя, используя ключ
сквозного шифрования. Затем весь пакет шифруется с помощью ключа каналь-
ного шифрования. При движении пакета по сети каждый переключатель де-
шифрует пакет с применением ключа шифрования соответствующего канала,
чтобы прочитать заголовок, а потом снова шифрует весь пакет для передачи его
по следующему каналу. Теперь весь пакет оказывается защищенным почти все
время — за исключением времени, когда пакет находится в памяти пакетного
переключателя и заголовок пакета является открытым.
В табл. 5.1 приведены ключевые характеристики двух стратегий шифрова-
ния, о которых идет речь.
Размещение функции шифрования при сквозном шифровании
При канальном шифровании функция шифрования выполняется на низшем
уровне иерархии коммуникационной схемы, Применительно к модели взаимо-
182
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
Таблица 5.1. Характеристики канального и сквозного шифрования [PFLE97]
Канальное шифрование Сквозное шифрование
Защита в конечных системах и промежуточных системах
Сообщение уязвимо в ведущем узле источника Сообщение уязвимо в промежуточных узлах Сообщение зашифровано в ведущем узле источника Сообщение зашифровано в промежуточ- ных узлах
Роль пользователя
Процесс отправки предполагает участие пользователя Процесс отправки предполагает участие пользователя
Шифрование ас зависит от пользователя Шифрование выполняется пользователем
Средствами шифрования управляет веду- щий узел Алгоритм шифрования должен опреде- лить пользователь
Для всех пользователей используются одни и те же средства шифрования Схему шифрования выбирает пользователь
Возможна аппаратная реализация функции шифрования Предполагается программная реализа- ция функции шифрования
Шифруются либо все сообщения, либо не шифруется ни одно Для каждого сообщения решение об ис- пользовании или об отказе от средств шифрования принимается пользователем
Вопросы реализации
Требуется по одному ключу на каждое из звеньев связи между узлами Требуется по одному ключу для каждой пары пользователей
Обеспечивается идентификация узла отпра- вителя Обеспечивается идентификация пользо- вателя
действия открытых систем (OSI — Open System Interconnection) это означает,
что канальное шифрование осуществляется либо на физическом уровне, либо на
уровне звена передачи (канальном уровне).
При сквозном шифровании для размещения функции шифрования имеется
несколько вариантов. Если начать с низших из практически возможных в дан-
ном случае уровней, то функцию шифрования можно разместить на сетевом
уровне. Например, шифрование можно связать с протоколом Х.25, чтобы дан
ные пользователя во всех пакетах Х.25 оказывались зашифрованными.
При шифровании на сетевом уровне число идентифицируемых и отдельно за-
щищаемых объектов соответствует числу конечных систем в сети. Каждая ко-
нечная система может участвовать в обмене шифрованными данными с другой
конечной системой, если обе эти системы используют один общий секретный
ключ. Чтобы иметь возможность обмениваться данными, все пользовательские
процессы и приложения в каждой из этих конечных систем должны использо-
вать одну и ту же схему шифрования и один ключ. При таких условиях функ-
цию шифрования желательно разместить в некотором коммуникационном про-
цессоре (обычно им является коммуникационная плата в конечной системе).
5.1. РАЗМЕЩЕНИЕ ФУНКЦИИ ШИФРОВАНИЯ
183
На рис. 5.3 показана схема использования функпии шифрования в коммуни-
кационном процессоре (FEP — front-end processor). От ведущего узла коммуни-
кационный процессор принимает пакеты. Данные пользователя в пакете шиф-
руются, а заголовок пакета обходит процесс шифрования.1 Обработанный таким
образом пакет передается в сеть, При движении в обратном направлении для
прибывающего из сети пакета дешифруется та его часть, которая содержит дан-
ные пользователя, и весь пакет передается конечному компьютеру адресата. Ес-
ли же в коммуникационном процессоре реализованы функциональные возмож-
ности протокола транспортного уровня (например, транспортного протокола ISO
или TCP), то заголовок протокола транспортного уровня тоже должен остаться в
незашифрованном виде, а шифрование должно быть выполнено для порции дан-
ных пользователя, элемента данных транспортного протокола.
Заголовок
Данные
На вход/выход
ведущего узла
На вход/ выход
с с си
Рис, 5.3. Схема работы коммуникационного процессора
Размещение средств шифрования в протоколах сквозной передачи данных, на-
пример в протоколах сетевого уровня Х.25 или TCP, обеспечивает сквозную безо
пасность передачи данных в рамках любой отдельно рассматриваемой сети. Однако
такая схема не может обеспечить необходимую безопасность для межсетевого об-
мена данными, например при использовании электронной почты, электронного
обмена данными (EDI — Electronic Data Interchange) или при передаче файлов.
На рис. 5.4 показана примерная схема межсетевого обмена данными. В дан-
ном случае для связывания сети, построенной на стандарте OSI, и сети, имею-
щей архитектуру TCP/IP, служит шлюз электронной почты. В такой конфигу-
рации невозможно использовать сквозной протокол обмена данными ниже уров-
ня приложения. На пути потока данных и сетевых соединений конечных систем
находится почтовый шлюз, в котором определяются новые потоки и новые сете-
вые соединения, обеспечивающие связь конечных систем. И такой сценарий
применим не только в случае шлюза между сетями с различной архитектурой.
При описании этой ситуации часто используются прилагательные красный и черный. Красные
данные — это важные или секретные данные в открытом виде Черные данные — это те же
данные в шифрованном виде.
184
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
Систем» Система
(.архитектурой с архитектурой
OST ' Почтовый шлюз T(jp ц)
Область применимости
канального шифрования
Облас гь применимости сквозного шифров шля
ниже гровия Ираюя гнал
Область применимости сквозного шифрования уровня приложения
Рис. 5.4. Пределы применимости различных схем шифрования при межсетевом
обмене, предполагающем промежуточное хранение данных
Даже если обе конечные системы используют один протокол TCP/IP или OSI,
имеется достаточно много примеров реальных конфигураций, когда отдельные
сети связываются почтовыми шлюзами. Поэтому для приложений типа элек-
тронной почты, допускающих возможность сохранять и пересылать сообщения,
единственной возможностью для размещения средств сквозного шифрования яв-
ляется уровень приложения.
Недостатком шифрования на уровне приложения является то, что при этом
требуется решить очень много достаточно сложных проблем. Сеть, в которую во-
влечены сотни ведущих узлов, скорее всего, будет обслуживать тысячи пользо-
вателей и процессов. При этом потребуется создавать и распределять очень мно-
го секретных ключей.
Интересная альтернатива такой схеме вытекает из того факта, что чем выше
мы находимся в иерархии потока обмена данными, тем меньше информации тре
буется шифровать, но тем более безопасным оказывается такое шифрование Это
наблюдение иллюстрирует рис. 5.5, где в качестве примера рассмотрена архитек-
тура TCP/IP. На этом рисунке шлюз уровня приложения обращается к устройству
промежуточного хранения данных, оперирующему на уровне приложения,
2
'К сожалению, в большинстве документов TCP/IP термин шлюз используется для обозначения
объекта, чаще называемого маршрутизатором.
5.1. РАЗМЕЩЕНИЕ ФУНКЦИИ ШИФРОВАНИЯ
Link-H Net-H IP-H ТСР-Н Данные Link-T
а) Шифрование на уровне приложения (в каналах, маршрутизаторах и шлюзах)
Link Н Net-H IPH ТСР-П Данные Link-T
В каналах в маршрутизаторах
Link-H Net-H TP-H TCP-H Данные Link-T
В шлюзах
б) Шифрованно на уровне TCP
Link H Net-H | IPH TCP-H Данные Link-T
В каналах
Link-H Net-H IPH TCP-H Данные Link-T
В маршрутизаторах и ш ню зах
в) Канальное шифрование
ТСР-Н - Заголовок TCP
IP Н - заголовок 1Р
Net Н - заголовок сетевого уровня (например, заголовок пакета Х.25 или заголовок ILC)
Link-H - заголовок протокола управления каналом передачи данных
Link Т — концевик про! окола управления каналом передачи данных
Рис. 5.5. Различные стратегии шифрования
При шифровании на уровне приложеижж (см. рис. 5.5(a)) шифруется только
порция данных пользователя сегмента TCP. Заголовки TCP, IP, сетевого и каналь-
ного уровней, а также концевик канального уровня (Ппк-level trailer) остаются от
крытыми. Если же шифрование выполняется на уровне TCP (см. рис. 5.5(6)), то
при сквозной передаче данных шифруются и данные пользователя, и заголовок
TCP. Заголовок IP остается открытым, так как он потребуется маршрутизаторам,
направляющим дейтаграмму IP от источника к адресату. При этом следует иметь в
виду, что при прохождении сообщения через шлюз обрывается использованное со-
единение TCP и для передачи данных дальше открывается новое соединение. Кро-
ме того, лежащий ниже протокол IP воспринимает шлюз как адрес назначения.
Поэтому соответствующие части данных должны в шлюзе дешифроваться. Если
следующий транзитный участок приходится на сеть TCP/IP, то данные пользова-
1 ей
ГЛАВА 5 ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
теля и заголовок TCP должны перед передачей шифроваться снова. Однако в са-
мом шлюзе данные находятся полностью в открытом виде. Наконец, если исполь-
зуется канальное шифрование (рис. 5.5(b)), то в канале незашифрованными оказы-
ваются только заголовок и концевик канального уровня, но в маршрутизаторе и
шлюзе вся порция данных находится в открытом виде
5.2. Конфиденциальная перглЛЦ^анных МНИ
Мы уже упоминали в главе 1, что в некоторых случаях пользователям требу-
ется защита от возможности анализа потока обмена данными. Информация о
числе и размерах сообщений между узлами может дать противнику возможность
определить источник сообщений и их адресата. Это, очевидно, может оказаться
важным при военном конфликте. Но даже в случае коммерческих приложений
анализ потока данных может раскрыть информацию, которую инициаторы об-
мена данными хотели бы скрыть. В [MUFT89] приводится следующий список,
классифицирующий информацию, которую можно извлечь из анализа потока
обмена данными.
Личности партнеров.
Частота сеансов связи партнеров.
• Структура сообщений, длина сообщений или число сообщений, в которых
передавалась важная информация.
События, которые оказываются связанными с активизацией обмена дан-
ными между этими партнерами.
Другой угрозой, связанной с анализом потока обмена данными является воз-
можность использования образцов потока данных для создания тайного канала.
Тайный канал представляет собой средство сообщения, работающее не так, как
планировалось организатором средства связи. Обычно такой канал служит для
того, чтобы переправить информацию в канал, нарушающий политику защиты.
Например, служащий может иметь намерение сообщить информацию некоторо-
му внешнему адресату способом, который не сможет обнаружить управление
кампании, чтобы внешний адресат без труда мог читать передаваемые сообще-
ния. Такие два нарушителя могли бы условиться о том, что любое очевидно за-
конное сообщение длиной меньше чем некоторая заданная, представляет двоич
ный нуль, а более длинное сообщение — двоичную единицу. Возможны и другие
подобные схемы.
Использование канального шифрования
При канальном шифровании заголовки пакетов шифруются, что мешает ана-
лизу потока обмена данными. Но и в этих условиях у противника остается воз-
можность оценивать интенсивность потока данных в сети и наблюдать поток
данных в каждой из конечных систем. Эффективной контрмерой против таких
3
На данном рисунке не показан еще один из имеющихся в действительности вариантов. На са-
мом деле можно зашифровать часть или даже весь заголовок канального уровня, оставив от-
крытыми только флаги начального и конечного фреймов.
5 2. КОНФИДЕНЦИАЛЬНАЯ ПЕРЕДАЧА ДАННЫХ
187
атак оказывается заполнение промежутков между сеансами обмена потоком не-
звачащей информацией, как показан на рис. 5.6,
Дополнение потока данных незначащей информацией порождает непрерыв-
ный поток шифрованных данных даже в отсутствие какого бы то ни было от-
крытого текста. В этом случае генерируется непрерывный поток случайных дан-
ных. Когда имеется открытый текст для пересылки, шифруется и передается
этот текст. В отсутствие открытого текста шифруются и передаются случайные
данные. Это не дает возможности противнику отличить в потоке истинные дан-
ные от данных заполнителя и таким образом не позволяет ему оценить реальную
интенсивность потока обмена данными.
Использование сквозного шифрования
Дополнение потока данных незначащей информацией можно эффективно ис-
пользовать только при канальном шифровании. При использовании только
сквозного шифрования защищающаяся сторона оказывается более ограниченной
в средствах защиты. Например, если шифрование выполняется на уровне при-
ложения, то у противника есть возможность определить, кто именно вовлечен в
обмен данными. Если же средства шифрования размещены на уровне транспорт-
ного протокола, то остаются доступными адреса сетевого уровня и структура по-
тока данных.
Один из подходов, который мог бы оказаться полезным в данном случае, —
это дополнить все элементы данных до одной длины либо на транспортном уров-
не, либо на уровне приложения. Кроме того, в случайные моменты времени в
поток можно вставлять пустые сообщения. Такая тактика не дает возможности
оппоненту получить информацию о числе реальных сообщений в потоке и иска-
жает структуру потока реального обмена данными.
5.3. Распределение ключей
При традиционном шифровании обе участвующие ь обмене данными стороны
должны получить один и тот же ключ, к которому другие пользователи лишены
доступа. При этом обычно требуется частое изменение ключей, чтобы уменьшить
объем теряемых данных в случае, когда какой-нибудь из ключей становится из-
вестным противнику Поэтому надежность любой криптографической системы во
многом зависит от используемой при этом системы распределения ключей, пред-
ставляющей собой средства доставки ключей днум сторонам, планирующим об-
Шифривание
Дешифрование
Рис. 5.6. Устройство дополнения потока данных незначащей информацией
1яе
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
мен данными, не позволяющие другим увидеть эти ключи. Для двух сторон, А и
В, как указано ниже, распределение ключей можно организовать различными
способами.
1. Ключ может быть выбран стороной А и физически доставлен стороне В.
2. Ключ может выбрать третья сторона и физически доставить его участни-
кам А и В.
3. Если участники обмена А и В уже используют некоторый обнгийг ключ,
одна из сторон может передать новый, ключ второй стороне в шифрован-
ном виде, используя старый ключ.
4. Если обе из сторон А и В имеют криптографически защищенные каналы
сзязи с третьей стороной С, то последняя может доставить ключ участни-
кам А и В но этим защищенным каналам.
Варианты 1 и 2 предпола! ают передачу ключа из рук в руки. При канальном
шифровании это требование может оказаться вполне разумным, поскольку лю-
бое устройство канального шифрования предполагает обмен данными только с
соответствующим устройством на другом конце канала. Но в случае сквозного
шифрования физическая доставка ключа практически неприемлема. В любой
распределенной системе каждый ведущий узел или терминал может участвовать
в обмене данными со многими другими ведущими узлами и терминалами. По-
этому каждому такому устройству потребуется множество ключей, которые при
дется поставлять динамично. Проблема оказывается весьма трудной для реше-
ния, особенно в случае больших глобально распределенных систем.
Масштаб проблемы зависит от числа контактирующих пар, которые приходит-
ся обслуживать. Если сквозное шифрование осуществляется на сетевом уровне или
на уровне 1Р, то потребуется по одному ключу для каждой пары ведущих узлов в
сети, обменивающихся данными. Поэтому если имеется N ведущих узлов, число
необходимых ключей будет равно -1)]/2 . Если шифрование осуществляется
на уровне приложения, то свой ключ потребуется для каждой пары пользователей
или процессов, выходящих на связь. При этом сеть может иметь сотни ведущих
узлов и тысячи пользователей и процессов. На рис. 5.7 для случая сквозного шиф-
рования показана зависимость сложности задачи распределения ключей от числа
пар, участвующих в обмене данными. Например, в сети, насчитывающей 1000 уз-
лов, где шифрование осуществляется на уровне узла, скорее всего, придется рас
пределять около полумиллиона ключей. А если в такой сети поддерживается око-
ло 10000 приложений, то при шифровании на уровне приложений может потребо-
ваться распределить около 50 миллионов ключей.
Ьозврашаясь к нашему списку, отметим, что способ 3 возможен как для слу-
чая канального шифрования, так и для сквозного, но если противнику когда-
либо удастся подучить доступ к одному из ключей, то он сможет получить и все
последующие. К тому же начальное распределение потенциально миллионов
ключей все равно должно быть выполнено.
Для сквозного шифрования широко применяется схема, являющаяся некото-
рой вариацией способа 4. В этой схеме за доставку ключей парам пользователей
(ведущим узлам, процессам, приложениям) отвечает некоторый центр распреде
ления ключей Каждый пользователь при этом должен получить свой уникаль-
5.3 РАСПРЕДЕЛЕНИЕ КЛЮЧЕЙ
18У
Рис. 5.7. Число ключей, необходимое для поддержки любых соедине-
ний между заданным числом конечных тачек
ный ключ, используемый им совместно с центром распределения ключей в це-
лях организации доставки ключей.
Использование центра распределения ключей предполагает организацию не-
которой иерархии ключей. В минимальной конфигурации такая иерархия вклю-
чает два уровня (рис. 5.8). Связь между конечными системами шифруется с ис-
пользованием временного ключа, часто называемого сеансовым ключом (session
key). Как правило, сеансовый ключ служит только для конкретного логического
соединения, например виртуального канала или для транспортировки данных,
после чего этот ключ больше не применяется. Сеансовый ключ получают от цен-
тра распределения ключей по тем же средствам доставки данных в сети, которые
служат для организации связи между конечными пользователями. Соответст-
венно, сеансовые ключи передаются в шифрованном виде, а для шифрования
используется главный, ключ (master key), общий для центра распределения клю-
чей и данной конечной системы или конкретного пользователя
Для каждой конечной системы или конечного пользователя создается уникаль-
ный главный ключ, который применяется совместно с центром распределения
ключей. Конечно, эти главные ключи тоже должны быть каким-то образом рас-
пределены. Однако эта проблема по своей сложности значительно проще Как уже
упоминалось, для N объектов, попарно обменивающихся данными, требуется
[N(N -1)]/2 сеансовых ключей. А главных ключей требуется всего N, по одному
на каждый объект. Поэтому главные ключи могут быть распределены некоторый!
некриптографическим образом, например физической доставкой адресату.
190
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
Данные
Криптографическая
защита
Сеансовые ключи
Криптографическая
защита
Главные ключи
Н екриптографлчес кая
зашита
Рис 5.8. Использование иерархии ключей
Сценарий распределения ключей
Распределение ключей можно реализовать разными способами. Типичный сцена-
рий показан на рис. 5.9, за основу которого взят соответствующий рисунок из
[РОРЕ79]. Этот сценарий предполагает, что каждый пользователь имеет уникальный
главный ключ, используемый совместно с центром распределения ключей (ЦРК).
Предположим, что пользователь А намерен создать логическое соединение с
пользователем В и для защиты данных, которые предполагается передать во
время этого соединения, требуется одноразовый сеансовый ключ При этом поль-
зователь А имеет секретный ключ К,, известный только ему и ЦРК, и точно
так же В использует общий с ЦРК главный ключ К„. Система обмена ипформа-
цией выглядит следующим образом.
1. Инициатор А посылает запрос в ЦРК на получение сеансового ключа для
защиты логического соединения с В. Посылаемое при этом сообщение долж-
но включать информацию, позволяющую однозначно определить А и В, а
также некоторый идентификатор N:, уникальный для данного запроса,
обычно называемый оказией [попсе).4 Таким идентификатором может быть
Для лучшего понимания употребляемого здесь термина читателю будут полезны следующие
толкования английского слова попсе. Nonce — данный случай, дойное время. Nonce word —
слово, используемое или вводимое в оборот именно для данного конкретного случая. (Перевод
соответствующих статей из American Heritage Dictionary of the English Language, 3"1 ed.)
5 3. РАСПРЕДЕЛЕНИЕ КЛЮЧЕЙ
191
аутентификации
Рис. 5.9. Сценарий распределения ключей
текущее время, некоторый счетчик или случайное число — как минимум,
этот идентификатор должен быть уникальным для каждого запроса. Кроме
того, чтобы предотвратить возможность фальсификации сообщения против-
ником, должно быть непросто угадать этот идентификатор для противника.
Поэтому хорошим выбором для оказии можно считать случайное число.
2. ЦРК отвечает на запрос сообщением, шифрованным с использованием
ключа К„. Единственным пользователем, кто может получить и прочитать
это сообщение, является А и поэтому А может быть уверенным, что это
сообщение пришло от ЦРК. Сообщение включает два элемента, предназна-
ченных для А:
• одноразовый сеансовый ключ К,, который будет использоваться в сеан-
се связи;
• оригинальное сообщение запроса, включающее оказию, чтобы у пользова-
теля А была возможность сопоставить ответ с соответствующим запросом.
3. Таким образом, А может удостовериться, что его первоначальный запрос
не был изменен на пути к ЦРК, а оказия не позволит перепутать ответ на
данный запрос с ответом на какой-либо из предыдущих запросов.
4. Кроме того, сообщение включает и два элемента, предназначенные для В:
• одноразовый сеансовый ключ К_, который будет использоваться в сеан-
се связи;
• идентификатор 1D„ пользователя Л (например, его сетевой адрес),
5. Оба элемента шифруются с помощью ключа Кь (главного ключа, применяе-
мого совместно ЦРК и В), и предполагается, что они должны быть впоследст-
вии отправлены В, чтобы установить соединение и идентифицировать А.
192
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
6. Сторона А сохраняет сеансовый ключ для предстоящего сеанса связи и пе-
ресылает стороне В информацию, полученную от ЦРК и предназначенную
для В (а именно информацию Екь[Ка || IDA]). Поскольку эта информация
шифрована с использованием KL , она оказывается защищенной. Теперь
получатель В знает сеансовый ключ (К.) и знает, что полученная инфор-
мация пришла от ЦРК (поскольку эта информация оказывается зашифро-
ванной с использованием ключа KL).
К этому моменту сеансовый ключ оказывается доставленным и стороне А, и
стороне В, и поэтому они могут начать защищенный обмен данными. Но перед
этим желательно выполнить еще две операции.
1. Используя только что полученный сеансовый ключ К, для шифрования,
сторона В посылает стороне А новую оказию N,.
2. С помощью того же ключа К. сторона А в ответ возвращает f(N,), где f
является функцией, выполняющей некоторое преобразование N2
(например, добавление единицы).
Эти действия призваны убедить адресата В в том, что первоначально полу-
ченное им сообщение (п. 3), не было воспроизведено.
Обратите внимание на то, что сам процесс передачи ключа фактически вы-
полняется в пи. 1-3, а пп. 4 и 5. так же, как отчасти и п. 3, призваны обеспе-
чить функцию аутентификации.
Управление иерархией ключей
Совсем необязательно возлагать функцию распределения ключей на один ЦРК.
На самом деле для больших сетей это вообще непрактично. Волее выгодно опреде-
лить некоторую иерархию центров распределения ключей. Например, можно соз-
дать локальные ЦРК, ответственные за малые домены всей сети, скажем, отдель-
ные локальные сети или сети, размещенные в одном здании. Тогда при связи ме-
жду объектами внутри одного локального домена за распределение ключей будет
отвечать локальный ЦРК. Если же общий ключ потребуется для связи двух объ-
ектов из разных доменов, то соответствующие локальные ЦРК могут использовать
для переговоров ЦРК глобального уровня. В этом случае любой из трех вовлечен-
ных в переговоры ЦРК может генерировать подходящий ключ. Такая иерархия
может состоять и из трех или даже большего числа уровней — в зависимости от
количества пользователей и геы'рафической протяженности сети.
Иерархическая схема минимизирует усилия, необходимые для решения зада-
чи распределения главных ключей, поскольку при этом большинство главных
ключей запрашивается для совместного использования объектами, находящими-
ся в ведении конкретного локального ЦРК. К тому же такая схема ограничивает
ущерб от ошибок или повреждения одного конкретного ЦРК рамками соответст-
вующей локальной области сети.
Продолжительность использования сеансового ключа
Чем чаше меняются сеансовые ключи, тем более они надежны, поскольку то-
гда оппонент получает в свое распоряжение меньше шифрованного текста, соот-
ветствующего одному ключу. Но в то же время необходимость распределения се-
5 3 РАСПРЕДЕЛЕНИЕ КЛЮЧЕЙ
193
ансовых ключей задерживает начало сеанса обмена реальными данными и уве-
личивает загрузку сети. Руководство службы безопасности должно сбалансиро-
вать эти конкурирующие параметры и попытаться определить оптимальный
срок использования сеансовых ключей.
Для протоколов с установлением логических соединений очевидным вариан-
том является применение одного ключа в течение сеанса связи только одного от-
крытого соединения и использование нового ключа для каждого нового сеанса
связи. Если логическое соединение не прерывается слишком долго, благоразумно
периодически менять ключ сеанса — например, после обработки определенного
числа протокольных единиц обмена (PDU — Protocol Data Unit).
Для протокола без установления соединений, например для протокола обра-
ботки запросов, явной инициализации и завершения соединения не предполага
ется. Поэтому в данном случае не столь очевидно, как часто нужно менять сеан-
совый ключ. Здесь наиболее безопасным решением оказывается использование
нового сеансового ключа для каждого нового обмена данными. Однако такой
подход бьет по одному из главных преимуществ протоколов без установления со-
единений — минимальной загрузке сети и минимальным задержкам для каждой
транзакции. Поэтому лучше испотьзовать каждый сеансовый ключ только на
протяжении определенного фиксированного периода времени или только для оп-
ределенного числа транзакций.
* • .
Прозрачная схема управления ключами
Подход, общая схема которого показана на рис. 5.9, имеет много вариантов,
один из которых описывается в данном разделе. Вариант, о котором пойдет речь
(см. рис. 5.10) применим при сквозном шифровании па сетевом или транспорт-
ном уровне, которое должно быть незаметным для конечных пользователей.
Данный подход предполагает, что для связи выбран некоторый протокол сквоз-
ной передачи данных с установлением логических соединений, например Х.25
или TCP. Заслуживающим внимания элементом такого подхода является ком-
муникационный процессор (например такой, который показан на рис. 5.3), реа-
лизующий функцию сквозного шифрования и получающий сеансовые ключи от
ведущего узла или терминала.
На рис. 5.10 отражены действия, которые выполняются при осуществлении
соединения. Когда один ведущий узел готов установить соединение с другим ве-
дущим узлом, он передает требующий соединения пакет (шаг 1). Коммуникаци-
онный процессор (КП) сохраняет этот пакет и обращается к ЦРК за разрешением
установить соединение (шаг 2). Связь между КП и ЦРК шифруется с использо-
ванием главного ключа, известного только КП и ЦРК. Если ЦРК разрешает со-
единение, он генерирует сеансовый ключ и доставляет его двум соответствую-
щим коммуникационным процессорам, используя при шифровании уникальные
постоянные ключи, свои для каждого из этих двух коммуникационных процес-
соров (шаг 3). Коммуникационный процессор, выдавший запрос, теперь может
освободить требующий соединения пакет и устанавливает соединение между
двумя конечными системами (шаг 4). Все пользовательские данные, пересылае-
мые между двумя конечными системами, шифруются их соответствующими
коммуникационными процессорами с использованием полученного одноразового
сеансового ключа.
194
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
1. Всдуодй уэ«л посылает требующий соединения пакет
2, Коммуникационный процессор задерживает
пакет п запрашивает сеансовый ключ у ЦРК
3. ЦРК предоставляет сеансовым ключ обоим
ЦРК
Ведущий
узел
Рис. 5.10. Автоматическое распределение ключей для протокола с установлением
логических соединений
Преимущество такого подхода заключается в том, что в данном случае роль
конечных систем оказывается минимальной. С точки зрения ведущего узла КП
выступает в роли узла сети с коммутацией пакетов, и поэтому интерфейс связи
ведущею узла с сетью может не меняться. С точки зрения сети КП выглядит
как ведущий узел, и поэтому интерфейс пакетного переключателя для связи с
ведущим узлом тоже остается прежним.
Децентрализованное управление ключами
Использование центра распределения ключей предполагает, что ЦРК должен
внушать доверие и быть надежно защищенным от посягательств. От этих требо-
ваний можно отказаться, если полностью децентрализовать распределение клю
чей. II хотя полная децентрализация в больших сетях, где шифрование осуще-
ствляется по традиционной схеме практически не применяется, децентрализация
может быть полезной в контексте локальных сетей.
При децентрализации требуется, чтобы каждая конечная система имела воз-
можность обмениваться данными некоторым защищенным образом со всеми
другими потенциально достижимыми конечными системами с целью распреде-
ления сеансовых ключей. При этом в сети с п конечными системами может по-
надобиться до [п(л -1)]/2 главных ключей.
Сеансовый ключ может быть определен в результате следующей последова-
тельности действий (рис. 5.11).
1. Инициатор А посылает запрос участнику обмена данными В на получение
сеансового ключа, содержащий также оказию N,.
5.3. РАСПРЕДЕЛЕНИЕ КЛЮЧЕЙ
195
2. Респондент В отвечает сообщением, зашифрованным с использованием
общего главного ключа. Этот ответ содержит сеансовый ключ, выбранный
стороной В, идентификатор В, значение f(NJ и другую оказию N2.
3. Используя полученный сеансовый ключ, сторона А возвращает стороне В
значение f(N2).
Рис. 5.11. Децентрализованное распределение ключей
Итак, каждому узлу придется поддерживать не более чем (п -1) главных
ключей, но при этом можно генерировать столько сеансовых ключей, сколько
потребуется. Поскольку сообщения, шифрованные с использованием главных
ключей, оказываются короткими, их криптоанализ представляется трудным де-
лом Как и в предыдущем случае, сеансовые ключи следует использовать на про
тяжении ограниченного времени, чтобы обеспечить лучшую их защиту.
Управление использованием ключей
Принцип иерархии ключей и использование автоматизированных методов
распределения ключей сильно уменьшают число ключей, которые приходится
распределять и доставлять вручную. Но может оказаться желательным иметь
определенный контроль над порядком применения автоматически распределен-
ных ключей. Например, в дополнение к разделению ключей на главные и сеан
спвые, можно определить различные типы сеансовых ключей в зависимости ит
сферы их действия, например:
• ключи для шифрования данных, используемые при пересылке через сеть
данных общего назначения;
ключи для шифрования личных идентификационных номеров (PIN-кодов),
используемые при передаче данных в системах электронных платежей и
электронной коммерции;
ключи для шифрования файлов, используемые для шифрования файлов,
хранящихся в общедоступных местах.
Чтобы понять смысл разделения ключей на типы, следует оценить риск тою,
что главный ключ может импортироваться в качестве ключа шифрования данных
в устройство шифрования. Обычно главный ключ физически защищается разме-
щением его криптографическом оборудовании центра распределения ключей и
конечных систем. Сеансовые ключи, шифрованные с использованием этого главно-
го ключа, оказываются доступными для прикладных программ так же, как и дан-
196
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
ные, шифрованные с использованием сеансовых ключей. Однако если главный
ключ с этой точки зрения не отличается от сеансового ключа, то для некоторою
неавторизовапного приложения может оказаться возможным получить открытые
тексты сеансовых ключей, шифрованных с помощью главного ключа.
Ввиду этого желательно, чтобы в системе имелись средства управления, огра-
ничивающие использование ключей шифрования в зависимости от характеристик,
связываемых с такими ключами. Одним из простейших подходов является связы-
вание с каждым ключом некоторого признака ([JONE82], см. также [DAVI89]).
Предложенный подход применим в случае DES, где для признака используются
незадействованные 8 битов 64-битового ключа DES. Иными словами, 8 не исполь-
зуемых для ключа битов, обычно резервируемых для контроля четности, задают
значение признака ключа. Эти биты имеют следующую интерпретацию:
один бит указывает, каким является ключ — сеансовым или главным;
один бит указывает, может ли ключ служить для шифрования;
один бит указывает, может ли ключ применяться для дешифрования;
• остальные биты зарезервированы для использования в будущем.
Из-за того что признак оказывается частью ключа, он при распределении
шифруется вместе с ключом, чем обеспечивается защита. Недостатком этой схе-
мы является то, что (1) длина признака не превышает 8 битов, что ограничивает
гибкость и функциональные возможности, и (2) ввиду того, что признак не пе-
редается в открытом виде, оч может использоваться только с момента дешифро-
вания, что ограничивает возможности контроля.
Более гибкая схема, обычно называемая схемой на основе управляющего век-
тора, описана в [MATYOla] и [MATY91b], В этой схеме каждый сеансовый ключ
ассоциируется с управляющим вектором, состоящим из ряда полей, описываю-
щих возможности применения и ограничения для данного сеансового ключа
Длина управляющего вектора может меняться.
Управляющий вектор криптографическими средствами связывается с ключом
во время создания ключа в ЦРК. Процессы связывания и разделения показаны
на рис. 5.12. Сначала управляющий вектор проходит через функцию хэширова-
ния. в результате чего получается значение, длина которого равна длине ключа
шифрования Функции хэширования подробно описаны в главе 8. В сущности,
функция хэширования отображает значения из некоторой большей области в не-
которую меньшую область, обеспечивая при этом однородный в некотором
смысле разброс значений. Например, если числа из диапазона от 1 до 100 ужи-
маются в диапазон от 1 до 10, то в каждое результирующее значение должно
отображаться приблизительно 10% исходных значений.
Затем полученное в результате хэширования значение с помощью операции
XOR объединяется с главным ключом и это новое значение служит в качестве
ключа для шифрования сеансового ключа. Таким образом,
Значение хэширования = Н = h(CVj,
Значение ключа = К,о ф Н ,
Шифрованный текст = ЕКП19Н[К„],
где К,„ обозначает главный ключ, а К, — сеансовый ключ.
5.3. РАСПРЕДЕЛЕНИЕ КЛЮЧЕЙ
197
Основной
11'1104
Сеансовый
ключ
Управляющий
вектор
Управляющий
вектор
Основной Сеансовый ключ
ключ в шифрованном виде
Сеансовый ключ
в шифрованном виде
Сеансовый
ключ
а) Шифрование управляющего вектора
б) Дешифрование управляюще! о вектора
Рис. 5.12. Шифрование и дешифрование управляющего вектора
Сеансовый ключ восстанавливается в открытый вид с помощью обратной опе-
рации:
К, = DKnieH[EKn>*H[K.]].
Наряду с сеансовым ключом пользователю от ЦРК доставляется управляю-
щий вектор в открытой форме. Сеансовый ключ можно восстановить только при
наличии и главного ключа, общего для данного пользователя и ЦРК, и управ-
ляющего вектора Таким образом поддерживается связь между сеансовым клю-
чом и соответствующим ему управляющим вектором.
По сравнению с использованием 8-битового признака применение управляю
щего вектора имеет два преимущества. Во первых, нет ограничения на длину
управляющего вектора, что при использовании ключей дает возможность осуще-
ствлять контроль любой сложности. Во-вторых, управляющий вектор оказывает-
ся доступным в открытом виде на всех стадиях, вследствие чего функции кон-
троля за использованием ключей можно разместить в самых разных точках.
5.4. Генерирование случайных чисел Ц^НННН
Случайные числа играют важную роль при шифровании в различных прило-
жениях сетевой защиты В этом разделе мы сначала проведем краткий обзор
возможностей применения случайных чисел в различных схемах зашиты сети, а
затем рассмотрим некоторые подходы к генерированию случайных чисел.
198
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
Использование случайных чисел
Ряд алгоритмов защиты сети, основанных на средствах криптографии, пред-
полагает использование случайных чисел. К таким алгоритмам относятся, в ча-
стности, следующие.
Схемы взаимной идентификации, например показанные на рис. 5.9 и 5.11,
Оба сценария распределения ключей в процессе установления соединения
используют оказии для того, чтобы исключить возможность атаки на ос-
нове воспроизведения сообщений. Использование случайных чисел для
оказий не дает шанса оппоненту* определить или угадать значение оказии.
Генерирование сеансовых ключей, выполняемое либо центром распределе-
ния ключей, либо одним из участников соединения.
Генерирование ключей для алгоритма RSA шифрования с открытым клю-
чом (см. главу 6).
Из этих приложений вытекает дна четких и необязательно сочетаемых требо-
вания к используемой последовательности случайных чисел: случайность и не-
предсказуемость.
Случайность
Традиционна при генерировании последовательности якобы случайных чисел
требуется, чтобы последовательность получаемых чисел была случайной ь неко-
тором вполне определенном статистическом смысле. Для проверки любой после-
довательности на случайность обычно служит два следующих критерия:
однородность распределения; распределение чисел в последовательности
должно быть однородным, т.е. частота появления в последовательности кон-
кретного значения должна быть примерно одинаковой для всех значений;
независимость: ни одно из значений последовательности не должно логи-
чески выводиться из других значений.
Имеются вполне четкие алгоритмы для проверки того, что некоторая после-
довательность чисел соответствует заданному распределению (например, одно-
родному), но вот алгоритма, позволяющего “доказать” независимость, нет. Здесь
обычно применяется ряд тестов, позволяющих продемонстрировать, что последо-
вательность не является независимой. Общая стратегия состоит в применении
таких тестов до тех пор, пока убеждение в независимости последовательности не
станет достаточно правдоподобным.
В контексте нашей темы использование последовательности чисел, кажущих-
ся статистически случайными, часто вытекает из криптографической структуры
самого алгоритма шифрования. Например, одним из главных требований схемы
RSA шифрования с открытым ключом, описанной в главе 6, является возмож-
ность генерирования простых чисел. Вообще-то совсем не просто определить, яв-
ляется ли данное достаточно большое число W простым или нет. Непосредствен-
ная проверка предполагает деление числа N на каждое целое число, меньшее
чЛ' . Если N оказывается порядка, скажем, Ю’"3 , что не является нереальным
для современных методов криптографии с открытым ключом, то такая проверка
оказывается сегодня далеко за рамками аналитических знаний человека и вы-
5.4. ГЕНЕРИРОВАНИЕ СЛУЧАЙНЫХ ЧИСЕЛ
199
числительных возможностей компьютера. Однако существует ряд эффективных
алгоритмов проверки простоты числа с помощью использования последователь-
ности случайно выбранных целых чисел в относительно простых вычислениях
Если такая последовательность достаточно длинна (но существенно меньше чем
V1O'“ ), простота тестируемого числа может быть определена почти наверняка.
Такой подход, известный как рандомизация, служит для создания многих алго-
ритмов. По существу, если проблема слишком сложна или требует слишком
много времени для точного решения, то для нахождения решения с любой тре-
буемой долей уверенности применяется более простой и более быстрый способ,
основанный на рандомизации.
Непредсказуемость
В приложениях типа взаимной идентификации или генерирования сеансовых
ключей требование статистической случайности последовательности чисел ока-
зывается не настолько важным, насколько требование непредсказуемости эле-
ментов последовательности. В “истинно” случайной последовательности каждое
число статистически независимо от других чисел последовательности и таким
образом непредсказуемо. Однако, как вы убедитесь ниже, истинно случайные
числа используются очень редко, чаще применяются последовательности чисел,
которые выглядят случайными, но на самом деле генерируются с помощью не-
которого алгоритма. В этом случае приходится заботиться о том, чтобы против-
ник не имел возможности предсказать следующие элементы последовательности
на основе предыдущих.
Источники случайных чисел
Нельзя сказать, что источники истинно случайных чисел являются очень
распространенными устройствами. Потенциально такими источниками могут
быть физические генераторы шумов, такие как импульсные детекторы ионизи
рующего излучения, газоразрядные лампы и конденсаторы с утечкой тока. Од-
нако такие устройства могут найти весьма ограниченное применение в приложе-
ниях зашиты сети. Здесь имеются проблемы как со случайностью, так и с точно-
стью получаемых при этом чисел [BRIG79], не говоря уже о проблемах
подключения такого рода устройств к каждой системе в сети. Альтернативой
может быть использование какого-нибудь из проверенных и опубликованных на-
боров случайных чисел (см., например, [RAND55], |Т1РР27]). Однако такие на
боры предлагают весьма ограниченный источник чисел по сравнению с потенци-
альными требованиями приложения защиты большой сети. К тому же, хотя
числа из указанных книг действительна демонстрируют статистическую случай-
ность, они вполне предсказуемы, так как оппонент, который знает, какая книга
взята за основу, просто может взять ее копию.
Поэтому криптографические приложения обычно используют алгоритмиче-
ские методы генерирования случайных чисел. Соответствующие алгоритмы яв-
ляются детерминированными и поэтому порождают последовательности чисел,
которые статистически не случайны. Однако если алгоритм достаточно хорош,
порождаемые им последовательности чисел выдерживают многие разумные тес-
ты на случайность. Такие числа часто называют псевдослучайными.
200
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
Вам, возможно, нелегко будет осознать причины возможности использования
в качестве случайных чисел, генерируемых детерминированным алгоритмом.
Несмотря на то что такой подход может вызывать общефилософские возраже-
ния, на практике он, а общем, работает. Как заметил один эксперт в области
теории вероятности |НАММ91],
для практических целей нам приходится принять неуклюжий принцип
“относительной случайности”, означающий, что в рамках предложенного
подхода мы не видим причин, по которым рассматриваемые объекты не
будут вести себя так, как будто они случайны (как обычно требует тео-
рия). Этот принцип оказывается весьма субъективным и очень неудобова-
римым для пуристов, но именно его имеют в виду статистики, когда рас-
сматривают “случайную выборку”, — они надеются, что используемые
ими при этом результаты будут проявляться приблизительно так же, как
и при полном учете всего выборочного пространства, который предполага-
ется в теории.
Генераторы псевдослучайных чисел
Безусловно, самым популярным алгоритмом для генерирования псевдослу-
чайных чисел является алгоритм, предложенный Лемером (Lehmer) [LEHM51] и
называемый методом линейного сравнения. Этот алгоритм имеет четыре сле-
дующих параметра.
т модуль сравнения
а множитель
с приращение
х0 начальное или порождающее число
т. > О
О < а < т
О < с < т
О < Хо < т
Последовательность случайных чисел {Хо} получается с помощью итераций
следующего соотношения:
= (аХ. + с) mod т .
При этом если т, а, с и являются целыми, то будет получена последова-
тельность целых чисет из диапазона О <ХГ < пт.
Выбор значений для а, с и т оказывается очень важным с точки зрения раз-
работки хорошего генератора случайных чисел. Рассмотрим, например, случай
а = с = 1. Порождаемая при этом последовательность очевидно не будет удовле-
творительной. Теперь рассмотрим значения а = 7, с = 0, т = 32 и Х„ = 1. В этом
случае генерируется последовательность {7, 17, 23, 1, 7, ...}, которая также оче-
видно не будет удовлетворительной. Из 32 возможных значений здесь оказыва-
ется задействованными только 4 (в данном случае говорят, что последователь-
ность имеет период 4). Если же, оставив другие значения прежними, изменить
значение а и положить а = 5, то результирующей последовательностью будет
{1, 5, 25, 29, 17, 21, 9, 13, 1. н ее период будет уже равен 8.
Желательно, чтобы т было очень большим, чтобы потенциально могли гене-
рироваться очень длинные серии различных случайных чисел, Общим правилом
здесь является выбор значения т, близкого к максимально допустимому для
данного компьютера неотрицательному целому числу. Поэтому довольно часто
значение т пыбирается равным или почти равным значению 2*1.
5.4. ГЕНЕРИРОВАНИЕ СЛУЧАЙНЫХ ЧИСЕЛ
201
В [PARK88] предлагается три следующих критерия, по которым можно оце-
нить качество любого генератора случайных чисел.
Т,. Генерирующая функция должна быть функцией полного периода, т е.
функция должна породить все числа от 0 до т прежде, чем числа нач-
нут повторяться.
Т;. Генерируемая последовательность должна вести себя как случайная. На
самом деле эта последовательность не будет случайной, поскольку гене-
рируется детерминированным алгоритмом, но существует множество
статистических тестов, которые можно использовать для того, чтобы
оценить степень случайности поведения последовательности.
Т,. Генерирующая функция должна эффективно реализовываться в рамках
32-битовой арифметики.
Все эти три критерия мо1*ут быть удовлетворены при подходящем выборе
значений а, с и т. Относительно критерия Т можно доказать, что если т явля-
ется простым и с = О, то для определенных значений а период генерируемой
функцией последовательности оказывается равным т - 1 ив этой последова-
тельности будет отсутствовать только значение 0. В 32-битовой арифметике
удобным простым значением для т является значение 2” -1. В этом случае ге-
нерирующая функция принимает вид
Х„, =(аХ„) mod (2” -1).
Из более чем двух миллионов возможных значений а только горстке множи-
телей соответствуют функции, выдерживающие все три теста. Одним из таких
значений является значение а =7°= 16807, которое было найдено и использова-
но для семейства компьютеров IBM 360 [LEW169J. Соответствующий генератор
находит очень широкое применение, и поэтому он был подвергнут более тща-
тельному анализу, чем любой другой генератор псевдослучайных чисел. Он не-
редко рекомендуется для статистического и имитационного моделирования раз-
личных процессов (см., например, [JAIN91], [SAT7E81]).
Преимуществом алгоритма линейного сравнения является то, что если вы
брать подходящие множитель и модуль сравнения, то генерируемая последова-
тельность чисел сказывается статистически неотличимой от последовательности
чисел, выбираемых случайно (но безвозвратно) из множества чисел 1, 2, ...,
и - 1. Но в самом алгоритме нет ничего случайного вообще, кроме выбора на-
чального значения Хо. Если это значение выбрано, остальные числа последова-
тельности определяются им однозначно. Это оказывается очень важным с точки
зрения криптоанализа.
Если противник знает, что используется алгоритм линейного сравнения и ес-
ли к тому же ему известны параметры алгоритма (например, а =7”, с = 0,
т =2и-1), то, открыв всего одно число, противник сможет получить и все по-
следующие. Но даже если оппонент знает только то, что выбран алгоритм ли-
нейного сравнения, знания небольшой части последовательности уже достаточно
для того, чтобы определить все параметры алгоритма. Предположим, например,
что противник сможет определить значения для , X,, X, и X,. Тогда
202
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
X, = (aXr, + c) mod m .
Хг = (uX, + c) mod m ,
Xj - (aX, + c) mod m.
Эти уравнения могут быть решены относительно а, с и тп.
Итак, хотя и удобно использовать хороший генератор псевдослучайных чисел,
желательно позаботиться о том, чтобы генерируемая последовательность была в
действительности невоспроизводимой, чтобы знание части последовательности не
давало оппоненту возможности определить следующие элементы последовательно-
сти. Эта цель может быть достигнута целым рядом способов, Например, в
IBRIG79] предлагается изменять поток случайных чисел, используя для этого сис-
темные часы. Один из способов на основе системных часов заключается в инициа-
лизации новой последовательности после получения каждых N чисел, используя
для начального числа текущее значение времени (mod m ). А можно просто добав-
лять к каждому случайному числу текущее значение времени (mod m ).
Криптографически генерируемые случайные числа
Для криптографических приложений имеет смысл использовать уже имею
щуюся логику шифрования для генерирования случайных чисел. На практике
применяются различные подходы, и в этом разделе мы обсудим три из них.
Циклическое шифрование
На рис. 5.13 показана схема подхода, предложенного в [MEYE82]. В данном
случае с помощью главного ключа 1енерируются сеансовые ключи Счетчик с пе-
риодом N обеспечивает вводимые параметры логики шифрования. Например, если
требуется получить 56-битовые ключи DES, можно использовать счетчик с перио
дом, равным 2м. После получения каждого ключа счетчик увеличивается на еди-
ницу. Поэтому получаемые таким образом псевдослучайные числа будут повто-
ряться с соответствующим периодом; каждое из выходных чисел Хо, X,, .... ХК1
будет определяться разными значениями счетчика, и поэтому Х„ * X, * ... * Х„_,.
Ввиду того что главный ключ защищен, оказывается невозможным с помощью
вычислений получить любой секретный ключ, зная один или несколько получен-
ных ранее ключей.
Чтобы сделать алгоритм еще более защищенным, вместо значений простого
счетчика в качестве вводимых значений можно использовать выходные значения
некоторого полнопериодического генератора псевдослучайных чисел.
Режим обратной связи по выходу DFS
Режим обратной связи по выходу (OFB) алгоритма DES, представленный в
виде схемы на рис. 3.14, может служить не только для поточного шифрования,
но и для генерирования ключей. Заметим, что выходным значением на каждой
стадии является 64-битовое значение, j крайних слева разрядов которого снова
подаются на вход функции шифрования. Последующие 64-битовые выходные
значения образуют последовательность псевдослучайных чисел с хорошими ста-
тистическими свойствами. Как и в случае подхода, предложенного в предыду-
щем разделе, защита генерируемых сеансовых ключей обеспечивается примене-
нием защищенного главного ключа.
5.4. ГЕНЕРИРОВАНИЕ СЛУЧАЙНЫХ ЧИСЕЛ
203
Счетчике
Рис. 5.13. Генерирование псевдо-
случайных чисел с использо-
ванием счетчика
I
I
Генератор псевдослучайных чисел ANSI Х9.17
Один из лучших (с точки зрения криптографии) генераторов псевдослучайных
чисел определяется стандартом ANSI Х9.17. Предложенный алгоритм использу-
ется целым рядом приложений, среди которых приложения, обеспечивающие
безопасность финансовых платежей, и PGP (см. главу 12).
На рис. 5,14 показана схема алгоритма, в котором для шифрования исполь-
зуется “тройной” DES. Этот алгоритм имеет следуютцие составляющие.
• Ввод. На вход генератора додается два псевдослучайных значения. Одно из
них является 64-битовым представлением текущих даты и времени и ме-
няется для каждого нового генерируемого числа. Другое представляет со-
бой 64-битовое начальное значение, которое инициализируется к некото-
рому произвольному значению и обновляется в процессе вычислений.
Ключи. Генератор использует три модуля шифрования "тройного” DES.
Каждый из этих трех модулей использует одну и ту же пару 5G битовых
ключей, которые должны сохраняться в секрете и использоваться только
для генерирования псевдослучайных чисел.
* Вывод. Выводимыми значениями являются 64-битовое псевдослучайное
число и 64-битовое начальное значение.
204
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
Риг. 5,14. Генератор псевдослучайных чисел ANSI Х9.17
Определим следующие величины.
DT,: значение даты/времени в начале i-й стадии генерирования;
V,: начальное значение для i-й стадии генерирования;
R,; псевдослучайное число, получаемое в результате i-й стадии гене-
рирования;
К(, К2: ключи DES, используемые на каждой стадии.
Тогда
R( = EDEK1>Ks[V( Ф EDEK1.K<[DT|]],
ViT5 = EDEK„KJR. Ф EDEK1.KJDT(]],
где EDE означает последовательность шифров чния-дешифрования-шифрования с
использованием алгоритма “тройного” DES с двумя ключами.
Криптографическая надежность этого метода определяется несколькими фак-
торами. Здесь используются 112-битовый ключ и три блока шифрования EDE, в
сумме дающие девятикратное шифрование DES. Схема управляется двумя вво-
димыми псевдослучайными значениями: значением даты и времени и началь-
ным значением, производимым генератором, но отличным от производимого ге-
нератором псевдослучайного значения. Таким образом, объем данных, которые
должен анализировать противник, оказывается огромным. Даже если ему станет
известным псевдослучайное значение R , из R невозможно будет вывести VH1,
поскольку для генерирования V,,, используется дополнительная операция EDE.
Генератор BBS
Один из популярных подходов к генерированию надежных последовательно-
стей псевдослучайных чисел заключается в использовании генератора Блюма-
Блюма-Шуба (Blum, Blum, Shub — BBS), названный так в честь разработчиков
[BLUM86J. Доказательство его криптографической надежности является, пожа-
луй, наиболее строгим из опубликованных. Заложенная в его алгоритме проце-
5.4. ГЕНЕРИРОВАНИЕ СЛУЧАЙНЫХ ЧИСЕЛ
205
дура выглядит следующим образом. Сначала выбирается два больших простых
числа, р и q, дающих при делении на 4 в остатке 3, т.е.
р = q = 3 (.mod 4j.
Это просто означает, что (р mod 4) = (q mod 4) = 3 (подробнее используемые
здесь обозначения булут объясняться в главе 7). Например, для простых чисел 7
и 11 мы как раз имеем 7 w 11 =3 (mod 4). Пусть теперь п = р xq . Выберем слу-
чайное число з, взаимно простое с п — в данном случае это означает, что ни р,
ни q не являются делителями з. Тогда генератор BBS порождает последователь-
ность битов Е, в соответствии со следующим алгоритмом.
Хп = з2 mod п
for 1 = 1 to <=
Xj = (Хм)2 mod n
В, = X, mod 2
Таким образом, на каждой итерации выбирается младший бит. В табл. 5.2,
взятой из [STIN95], показан пример последовательности, полученной в результа-
те использования алгоритма BBS. Здесь, п = 192649 = 383 х 503 и начальное
значение з ~ 101355.
Таблица 5.2. Пример вывода генератора BBS
S X в,
0 20749
1 143135 1
2 177671 1
3 97048 0
4 89992 0
5 174051 1
6 80649 1
7 45663 1
8 69442 0
9 186894 0
10 177046 0
S X. в.
11 137922 о
12 123175 1
13 8630 0
14 114386 0
15 1 4863 1
16 133015 1
17 106065 1
18 45870 0
19 137171 1
20 48060 0
Генератор BBS обычно называют криптографически защищенным генерато-
ром псевдослучайных битов. Этот генератор является одним из генераторов,
удовлетворяющих так называемому критерию следующего бита (next bit test),
который определяется так [MENE97]:
“Говорят, что генератор псевдослучайных битов удовлетворяет критерию
следующего бита, если не существует алгоритма с полиномиальной оцен-
кой времени его выполнения/ который по первым ft битам выходной по-
Алгоритмом с полиномиальной оценкой времени выполнения порядка к называется алгоритм,
время выполнения которого есть функция, ограниченная сверху полиномом порядка к.
206
ГЛАВА 5. ТРАДИЦИОННОЕ ШИФРОВАНИЕ И КОНФИДЕНЦИАЛЬНОСТЬ
следовательности может предсказать ее (fe F 1)-й бит с вероятностью, су-
щественно большей, чем 1/2”.
Другими словами, не должно существовать практически эффективного алго-
ритма, который позволил бы вам по первым k битам последовательности выяс-
нить с вероятностью большей, чем 1/2, что следующий бит будет равен 1 (или
0). С точки зрения любого практического подхода, последовательность будет не-
предсказуемой. Защищенность генератора BJ3S основана на трудности разложе
ния значения п на множители, т.е. на трудности задачи нахождения простых
мнояштелей р и q по данному' п. Более подробное обсуждение данного вопроса
вы найдете в [ST1N95].
5.5. Рекомендуемые источники дополнительной
информации flMi
Хороший обзор принципов управления ключами представлен в [FUMY93], В
[MEYE82] содержится детализированное описание одного из возможных подхо-
дов к распределению ключей и управлению использованием ключей. Возможно
лучшее обсуждение вопросов использования генераторов псевдослучайных чисел
вы найдете в [KNUT98J. Использование алгоритма линейной рекурсии, альтер-
нативного стандартному алгоритму линейного сравнения, достаточно подробно
обсуждается в [BRIG79], Б [ZENG91] оцениваются различные алгоритмы генери-
рования псевдослучайных чисел с точки зрения их использования в процедурах
вычисления ключей переменной длины для шифров типа шифра Бернама.
Заслуживающая внимание информация по поводу надежных генераторов
псевдослучайных чисел содержится в |MENE97] и [STIN95]. Другим хорошим
обзором, уделяющим особое внимание практической реализации соответствую-
щих алгоритмов, является отчет RFC 1750 [EAST94].
BRIG79 Bright, Н., Emson, R. "Quasi-Random Number Sequences from Long-Penod TLP
Generator with Remarks on Application to Cryptography," Computing Surveys. December 1979
EAS194 Eastlake, D., Crocker, S. Schiller, J Randomness Recommendations for Security.
RFC 1750, December 1994
FLJMY93 Fumy, S., Landrock, P. “Principles of Key Management." IEEE Journal on Selected
. Areas in Communications, Junc 1995.
l,KNUT9a Knuth. D The Art of Computer Programming, Volume 2 Setninumencal Algorithms
[Reading, MA: Addison Wesley, 1998.
! MENE97 Menezes, A., Oorshcot. P Vanstone. S Handbook of Applied Cryptography Boca
jRaton, FL- CRC Press, 1997.
MEYE82 Meyer, C., Malyas. S. Cryptography. A New Dimension in Computer Dara Security
New York. Wiley, 1982
STIN95 Stinson, D. Cryptography: Theory and Practice, coca Raton, FL CRC Press, 1995.
ZENG91 Zeng. K., Yang, C , Wei, D., Rao, T. “Pseudorandom Bit Generators in Stream-
Cipher Cryptography.' Computer, February 1991.
5.5. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
207
Шифрование
с открытым
ключом и функции
хэширования
ГЛАВА
Криптография с
открытым ключом
Каждый египтянин получал два имени, соответственно назы
ваемые истинным именем и добрым именем, или великим име-
нем и малым именем. Доброе или малое, имя было обществен
ным достоянием и использовалось открыто, в то время как
истинное, или великое, имя хранилось в тайне.
Джеймс Джордж Фрейзер. Золотая ветвь (The Golden Bough)
Разработка средств криптографии с открытым ключом
явилась величайшей и, возможно, единственной ре-
волюцией во всей истории криптографии. От самых
истоков криптографии до настоящего времени практически
все криптографические системы базировались на использо-
вании элементарных средств подстановки и перестановки.
После тысяч лет работы с алгоритмами, которые должны
были, по сути, использоваться вручную, существенным
продвижением вперед в области традиционной криптогра-
фии оказалось изобретение барабанных шифровально-
дешифри-вальных машин. Электромеханический барабан
открыл возможности для разработки ужасно сложных сис
тем шифрования. С появлением компьютеров появились
еще более сложные системы, наиболее яркой из которых
оказался алгоритм LUCIFER фирмы ТВМ, из которого впо-
следствии возник стандарт шифрования данных (DES). Но и
барабанные шифровальные машины, и DES, хотя и знаме-
новали истинно значительное продвижение в деле шифро-
вания, в своей основе использовали прозаические средства
подстановки и перестановки.
Криптография с открытым ключом обеспечивает ради-
кальный поворот в сторону от всего, что делалось прежде.
Прежде всего, алгоритмы криптографии с открытым ключом используют мате-
матические функции, отличные от подстановок и перестановок. Но более важно
то, что методы криптографии с открытым ключом являются асимметричными в
том смысле, что они предполагают использование двух разных ключей, в отли-
чие от методов симметричного традиционного шифрования, где предполагается,
только один ключ. Как мы увидим ниже, идея применения двух ключей по-
влекла глубокие изменения и в подходах к обеспечению конфиденциальности, и
в области распределения ключей, и в процедурах аутентификации.
Перед тем как приступить к рассмотрению этого вопроса, мы должны сказать
несколько слов о некоторых из широко распространенных заблуждений, касаю-
щихся шифрования с открытым ключом. Одним из таких заблуждений является
утверждение, что шифрование с открытым ключом более защищено от криптоа-
нализа, чем традиционное шифрование. Подобное заявление было сделано, на-
пример, в знаменитой статье Гарднера (Gardner) [GARD77] из популярного жур-
нала Scientific American. На самом же деле защита любой схемы шифрования!
зависит от длины ключа и объема вычислительной работы, требуемой для взло-
ма шифра. В этом смысле нет принципиального различия между традиционным
шифрованием и шифрованием с открытым ключом, и ни одна из этих схем не
имеет преимущества перед другой с точки зрения криптоанализа.
Вторым заблуждением является утверждение, что шифрование с открытым
ключом оказывается универсальным подходом, делающим традиционное шифро-
вание безнадежно устаревшим. Напротив, ввиду слишком высоких требований со ,
стороны схем шифрования с открытым ключом к вычислительным ресурсам, от-
каз от схем традиционного шифрования кажется весьма маловероятным. Как были
отмечено в (DIFF88] одним из открывателей метода шифрования с открытым клю-
чом, “почти повсеместно применение шифрования с открытым ключом ограничи-
вается сферой управления ключами и приложениями цифровой подписи”.
Наконец, считается, что распределение ключей при шифровании с открытым
ключом является тривиальной задачей по сравнению с достаточно запутанной
процедурой квитирования (подтверждение установления связи), используемой в
случае традиционного шифрования. На самом деле в случае шифрования с от-
крытым ключом для этого требуется специальный протокол, вообще говоря,
предполагающий существование некоторого центрального агента, а применяемые
при этом процедуры не являются ни более простыми, ни более эффективными,
чем те, которые требуются для традиционного шифрования (см., например, со-
ответствующий раздел в [NEED78]).
Эта глава посвящена шифрованию с открытым ключом. Сначала мы опишем
соответствующий подход на концептуальном уровне. Интересн:1 то, что идея это-
го подхода была развита и опубликована еще до того, как была доказана его
практическая эффективность. Затем мы перейдем к алгоритму RSA, наиболее
важному из всех алгоритмов шифрования/дешифрования, доказавших свою эф-
фективность в схемах шифрования с открытым ключом. После этого мы обсудим
распределение ключей и управление ключами в криптосистемах с открытым
ключом, включая процедуру обмена ключами по Диффи и Хеллману (Diffie,
Hellman). И в завершение главы мы представим небольшое введение в крипто-
графию на основе эллиптических кривых.
6.1. ПРИНЦИПЫ ПОСТРОЕНИЯ КРИПТОСИСТЕМ С ОТКРЫТЫМ КЛЮЧОМ
215
Мпогие результаты теории криптосистем па основе шифрования с открытым
ключом вытекают из результатов теории чисел. Если вы достаточно подготовле-
ны, чтобы разобраться в системах криптографии, представленных в этой главе,
глубокого понимания соответствующих результатов теории чисел вам не потре-
буется. Однако для лучшего уяснения сути алгоритмов шифрования все же тре-
буется понимание некоторых результатов теории чисел. Обзор соответствующих
результатов представлен в главе 7.
6
.1. Принципы построения криптосистем с
открытым ключом
Идея применения методов криптографии с открытым ключом возникла из попы-
ток найти решение двух из наиболее сложных проблем, возникающих при использо-
вании традиционного шифрования. Первой проблемой является распределение клю-
чей, которое уже рассматривалось в определенных деталях ранее в главе 5.
Как вы уже видели, распределение ключей при традиционном шифровании тре
бует. чтобы обе участвующие в обмене данными стороны либо (1) уже имели общий
ключ, который каким.то образом был им доставлен, либо (2) использовали услуги
некоторого центра распределения ключей. Уитфилд Диффи (Whitfield Diffie), один
из открывателей метода шифрования с открытым ключом (вместе с Мартином
Хеллманом (Martin Hellman), оба в то время работали в Стэнфордском университе-
те), считал, что второе из этих требований противоречит самой сущности криптогра-
фии — возможности обеспечить полную секретность вашей собственной корреснон
денции. Как <>н заметил в IDTFF88J, “’Какой смысл имеет разработка неприступной
криптосистемы, если ее пользователи должны использовать свои секретные ключи
совместно с некоторым центром распределения ключей, который может быть ском-
прометирован либо взломщиком, либо судебным решением?”
Второй проблемой, которую сформулировал Диффи и которая, очевидно, не
связана с первой, является проблема “цифровых подписей”. Если использование
криптографии получило очень широкое распространение, и не только ь области
военного дела, но и а области коммерции и частных коммуникаций, то элек-
тронные сообщения и документы нуждаются в эквивалентах подписей, исполь-
зуемых в бумажных документах. Иными словами, можно ли разработать метод,
с помощью которого - бе стороны могли бы убедиться в том, что цифровое сооб-
щение было отправлено данным конкретным лицом? Это требование оказывается
несколько шире, чем требование аутентификации, и в главе 10 рассматриваются
его характеристики и особенности.
Диффи и Хеллман пришли к своему открытию в 1976 году [DIFF76a, b], раз
работав метод, с помощью которого решались обе вышеупомянутые проблемы и
который радикально отличался от всех известных ранее подходов в криптогра-
фии за всю ее четырехтысячелетнюю историю.1
'Диффй и Хеллман были первыми, кто публично изложил принципы криптографии с откры
тым ключом (это произошло в 1976 году) Одняко не это событие следует считать истинным
началом истории криптографии с открытым юпочом. Адмирал Бобби Инман (Bobby Inman),
бывший в то время директором NSA (Агентство национальной безопасности (ЯЛ Л), заявил, что
216
ГЛАВА 6 КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
В следующем разделе мы рассмотрим общую схему криптографического подхода,
построенною на использовании открытых ключей- Затем мы разберемся в особенно-
стях алгоритма шифрования /дешифрования, являющегося сердцем этой схемы.
Криптосистемы с открытым ключом
Алгоритмы шифрования с открытым ключом зависят от одного ключа для
шифрования и другого, связанного с первым, ключа для дешифрования. Эти ал-
горитмы имеют следующую важную особенность.
* С точки зрения вычислений нереально определить ключ дешифрования, зная
только используемый криптографический алгоритм и ключ шифрования.
Кроме того, некоторые алгоритмы (например, RSA) имеют следующее свойство.
в Любой из этих двух связанных ключей может служить для шифрования, и
тогда другой может применяться для дешифрования.
На рис. 6. показана общая схема процесса шифрования с открытым ключом
(сравните с рис. 2.1), которая выглядит следующим образом.
1. Каждая конечная система в сети генерирует пару ключей для шифрования
и дешифрования получаемых сообщений.
2 Каждая из систем публикует свой ключ шифрования, размещая его ключ
в открытом для всех реестре или файле. Этот и есть открытый ключ. Вто
рой ключ, соответствующий открытому, остается в личном владении.
3. Если пользователь А собирается послать сообщение пользователю В, он
шифрует сообщение, используя открытый ключ пользователя В.
4. Когда пользователь В получит сообщение, он дешифрует его с помощью
своего личного ключа. Другой получатель не сможет дешифровать сообще-
ние, поскольку личный ключ В знает только В.
В рамках этого подхода все участники имеют доступ к открытым ключам, а
личные ключи генерируются на месте каждым участником для себя и поэтому их
никогда не приходится распределять. До тех пор пока системе удается сохранять
свой личный ключ в секрете, поступающие сообщения оказываются зашишеяны
ми. В любой момент система может изменить свой личный ключ и опубликовать
соответствующий ему открытый ключ, заменяющий старый открытый ключ.
В табл. 6.1 сравниваются некоторые важные характеристики традиционного
шифрования и шифрования с открытым ключом. Чтобы различать эти два под-
хода, мы будем называть ключи, предназначенные для традиционного шифрова-
ния, секретными ключами. Два ключа, с помощью которых осуществляется
шифрование с открытым ключом, будут называться, соответственно, открытым
ключом и личным ключом.' Личный ключ, конечно же, тоже должен храниться
метод криптографии с открытым ключом был разработан в NSA еще в средине 60-х [SIMM93J.
Первое документальное упоминание об этом методе появилось в 1970 году в секретвом отчете
Джеймса Эллиса (James Ellis) из Группы защиты электронных коммуникаций Службы безо
пасности Великобритании |Е1-Ы70]. Эллис относил данную технологию к несекретным методам
шифрования и описал открытие в несекретном отчете IELLI87],
2
Предлагается использовать следующую согласованную систему обозначений. Секретный ключ
обозначается К. , где ш является некоторым модификатором: например, К, обозначает сеан-
б. 1. ПРИНЦИПЫ ПОСТРОЕНИЯ КРИПТОСИСТЕМ С ОТКРЫТЫМ КЛЮЧОМ
217
в секрете, но называется личным ключом, а не секретным ключом во избежание
путаницы с ключом схемы традиционного шифрования.
а) Шлфрояаниг
б) Аутентификация
Рис. 6.1 Шифрование с открытым ключом
совый ключ. Для пользователя А его открытый ключ обозначается KU, , а соответствующий
личный ключ — KR. Шифрование открытого текста Р может быть выполнено с секретным
ключом, открытым ключом или личным ключом что обозначается Е„[Р], E,j,.[P] или
E«n.[P] соответственно. Точно так же дешифрование шифрованного текста С может быть вы-
полнено с помощью секретного ключа, открытого ключа, или личного ключа, что обозначается
соответственно DK_(C], DK„.[CJ или ОМЯ.ГС] .
218
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
Таблица 6.1. Традиционное шифрование и шифрование с открытым ключом
Традиционное шифрование Шифрование с открытым ключом
Необходимо для работы Необходимо для работы
1. Один алгоритм с одним и тем же 1. И для шифрования, и для дешифрования
ключом служит и для шпсррова- используется один алгоритм, но два ключа:
вия, и для дешифрования один ключ для шифрования, а другой —
2. Отправитель и получатель долю- для дешифрования
ны использовать одинаковые ал- 2 Отправитель и получатель должны иметь по
горитм и ключ одному иэ пары соответствующих ключей
Необходимо для защиты (як один и тот же)
1. Ключ должен сохраняться в Необходимо для защиты
секрете 1 Один иа двух ключей должен храниться в
2. Должно быть невозможно или, по секрете
крайней мере, практически не- 2. Должно быть невозможно или, по крайней
возможно расшифровать сообще- мере, практически невозможно раешифро-
ние при отсутствии дополнитель- вать сообщение при отсутствии дополни-
ной информации тельной информации
3 Знания алгоритма и наличия об- 3 Знания алгоритма и одного из ключей в на-
разцоп шифрованного текста личия образцов шифрованного текста
должно быть недостаточно для то- должно быть недостаточно для того, чтобы
го, чтобы восстановить ключ восстановить второй ключ
Давайте рассмотрим основные элементы схемы шифрования с открытым клю-
чом более подробно* используя рис. 6.2 (сравните с рис. 2.2 в главе 2). Итак, име-
ется некоторый источник сообщений А, создающий сообщение X = [X,, Х7,, Xw]
в виде открытого текста. Все М элементов X являются буквами некоторого конеч-
ною алфавита. Сообщение адресовано получателю В. Адресат В генерирует свя-
занную пару ключей: открытый ключ KUb и личный ключ KR„. Ключ KR„ оста-
ется известным только пользователю В, тогда как ключ KU, публично доступен
и, таким образом, оказывается доступным отправителю А,
Имея сообщение X и ключ шифрования KU, в качестве входных данных, отпра-
витель А формирует шифрованный текст Y = [Y,, YJ(..., Y„] следующим образом:
У = Екиь(Х)1.
Предполагаемый получатель, владея соответствующим личным ключом, смо-
жет обратить это преобразование:
X = D^fY).
Противник, наблюдая Y и имея доступ к KUb, но не к KR, или X, должен
>удет пытаться восстановить X и/или KR„. Предполагается, что противник зна-
!т алгоритмы шифрования (Е) и дешифрования (D). Если противника интересует
-олько данное конкретное сообшение, то он сосредоточит свои усилия на восста-
ювленмж X с помощью получения оценок X для открытого текста. По часто
(ротивник бывает заинтересован в возможности чтения и последующих сообще-
1ий. В таком случае будет предпринята попытка восстановить ключ K.R, путем
енерировяния для него оценки KR„.
1 ПРИНЦИПЫ ПОСТРОЕНИЯ КРИПТОСИСТЕМ С ОТКРЫТЫМ КЛЮЧОМ
219
Рис 6.2 Криптосистема с открытым ключом: защита
Мы уже упоминали выше, что любой из двух связанных ключей может при-
меняться для шифрования, при этом предполагается, что другой будет служить
для дешифрования. Это дает возможность реализовать различные криптографи-
ческие схемы. И если схема, показанная на рис. 6.2, обеспечивает конфиденци-
альность, то рис. 6.1(6) и рис. 6.3 показывают, как использовать шифрование с
открытым ключом для аутентификации:
Y = EKB.(X),
X = DKC,(Y).
В этом случае отправитель Л готовит сообщение адресату В и перед отправле-
нием шифрует это сообщение с помощью личного ключа пользователя А. Полу-
чатель В может дешифровать это сообщение, используя открытый ключ А. Вви-
ду того что сообщение было зашифровано личным ключом отправителя А, толь-
ко он и мог подготовить это сообщение. Поэтому в данном случае все
шифрованное сообщение выступает в качестве цифровой подписи. Кроме того,
невозможно изменить сообщение без доступа к личному ключу пользователя А.
поэтому сообщение решает и задачу идентификации отправителя, и задачу под-
тверждения целостности данных.
В схеме, о которой идет речь, шифруется все сообщение, которое, хотя и
идентифицирует отправителя, и подтверждает целостность содержимого, требует
достаточно много памяти. Каждый документ, чтобы его можно было использо-
вать, должен храниться в виде открытого текста. Еще один экземпляр докумен-
та должен сохраняться в виде шифрованного текста, чтобы в случае спора мож-
но было бы восстановить источник и содержимое оригинала. Более эффективным
способом достижения того же результата является шифрование небольшого бло-
220
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ ключом
ка битов, являющегося функцией документа. Такой блок, называемый аутенти-
фикатором (authenticator), должен иметь такое свойство, чтобы нельзя было из-
менить документ без изменения аутентификатора. Если аутентификатор будет
зашифрован с использованием личного ключа отправителя, он будет служить
подписью, удостоверяющей источник, содержимое и порядок отправки сообще-
ний. Б главе 10 эта возможность описана более подробно.
Важно подчеркнуть, что только что описанный процесс шифрования не обес-
печивает конфиденциальности. Это означает, что пересылаемому таким образом
сообщению гарантирована защита от изменения, ни не от перехвата. Это очевид-
но в том случае, когда для форматирования подписи используется только часть
сообщения, поскольку тогда остаток сообщения передается открытым текстом.
Но даже в случае полностью зашифрованного сообщения, как показано на
рис. 6.3, конфиденциальность не обеспечивается ввиду того, что любой сторон
ний наблюдатель может расшифровать передаваемое сообщение с помощью от-
крытого ключа отправителя
Однако, можно обеспечить как аутентификацию, так и конфиденциальность
повторным использованием схемы шифрования с открытым ключом (рис. 6.4):
Z = EKub[EKR,(X)].
X - EKl,.[Ekkk(Z)j.
В данном случае мы начинаем, как и прежде, с шифрования сообщения по-
мощью личного ключа отправителя. Это обеспечивает цифровую подпись. Затем
мы шифруем результат снова, но уже используя открытый ключ получателя.
Конечный шифрованный текст сможет дешифровать только предполагаемый ад-
ресат, поскольку только он один имеет сиответствующий личный ключ Таким
образом, конфиденциальность обеспечивается. Неудобство этого подхода заклю-
6.1. ПРИНЦИПЫ ПОСТРОЕНИЯ КРИПТОСИСТЕМ С ОТКРЫТЫМ КЛЮЧОМ
221
Источник А
Адресат В
Риг 6 4. Криптосистема с открытым ключом: защита и аутентификация
чается в том, что алгоритм шифрования с открытым ключом, который оказыва-
ется весьма сложным, должен при каждой передаче данных применяться четыре
раза, а не два.
Применение криптосистем с открытым ключом
Прежде чем перейти к следующим вопросам, необходимо разъяснить один
аспект криптосистем с открытым ключом, который в противном случае может
породить недоразумения Криптосистемы с открытым ключом характеризуются
использованием криптографического алгоритма с двумя ключами, один из кото-
рых остается в личном пользовании, а второй открыт для всех. В зависимости от
приложения отправитель использует либо свой личный ключ, либо открытый
ключ получателя, либо же оба, если требуется выполнить какую то специальную
криптографическую функцию. В самых широких пределах использование крип-
тосистем с открытым ключом можно отнести к трем категориям.
• Шифрование/дешифрование. Отправитель шифрует сообщение с использо-
ванием открытого ключа получателя.
Цифровая подпись. Отправитель “подписывает” сообщение с помощью сво
его личного ключа Подпись получается в результате применения крипто-
графического алгоритма к сообщению или к небольшому блоку данных,
являющемуся функцией сообщения
Обмен ключами. Две стороны взаимодействуют, чтобы обменяться сеансо-
вым ключом. При этом возможно несколько различных подходов, предпо
лагающих применение личных ключей одной или обеих сторон.
Одни алгоритмы подходят для всех трех типов применения, тогда как другие
предназначены только для одной или двух из этих категорий. Для алгоритмов,
описываемых в этой книге, возможности их применения указаны в табл. 6.2.
222
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ ключом
Таблица 6.2. Применение криптосистем с открытым ключом
Ал1иритм Шифрование/ дешифрование Цифровая подпись Обмен ключами
RSA Да Да Да
Диффи-Хеллмана Нет Нет Да
PSS Нет Да Пет
Условия применения методов криптографии с открытым ключом
Криптосистема, варианты которой показаны на рис. 6.2-6.4, зависит от
криптографического алгоритма, предполагающего применение двух связанных
ключей. Диффи и Хеллман предположили без доказательства, что такие алго-
ритмы существуют. Однако они указали условия, которым должны удовлетво-
рять такие алгоритмы |l)IFF76b],
1. Для стороны В процесс генерирования пары ключей (открытый ключ K.U,,
личный ключ KRt) не должен вызывать вычислительных трудностей.
2. Для отправителя А не должен вызывать вычислительных трудностей про-
цесс создания шифрованного текста при наличии открытого ключа и со-
общения М. которое требуется зашифровать:
С=Екиь(М).
3. Для получателя В не должен вызывать вычислительных трудностей про-
цесс дешифрования полученного шифрованного текста с помощью личного
ключа с целью восстановления оригинального сообщения:
~ ОкнДС) — Г)ВЫ.[ЕХ.,Ь(М)].
4. Для противника Дилжно быть невозможным с точки зрения вычислитель-
ных возможностей восстановление личного ключа KR,. из имеющегося от-
крытого ключа KU„.
5. Для противника должно быть невозможным с точки зрения вычислитель-
ных возможностей восстановление оригинального сообщения М из имею-
щихся открытого ключа KU, и шифрованного текста С.
К этим требованиям можно добавить еще одно, которое, хотя и представ-
ляется, в общем, полезным, не является необходимым для всех приложе-
ний, реализующих криптосистемы с открытым ключом.
6 Функции шифрования и дешифрования могут применяться в любом порядке:
М = Екиьргаь(М)].
Перечисленные требования в своей совокупности весьма сложны для выпол-
нения, что, очевидно, подтверждается тем, что за несколько десятилетий, про-
шедших со времени открытия метода криптографии с открытым ключом, только
один такой алгоритм получил широкое признание.
Перед тем как приступить к разъяснению причин, по которым эти требова-
ния оказываются сложными для выполнения, давайте попытаемся представить
их в некотором более удобном виде. Эти требования сводятся к необходимости
6.1. ПРИНЦИПЫ ПОСТРОЕНИЯ КРИПТОСИСТЕМ С ОТКРЫТЫМ ключом
223
нахождения некоторой односторонней функции с лазейкой. Односторонней
функцией3 называется функция, отображающая свои аргументы в некоторый
диапазон значений так, что каждое значение функции имеет уникальное обрат-
ное значение, при этом значения функции вычислить легко, а обратные — прак-
тически невозможно.
Y - f(X) вычисляется легко
X = f (Y) практически не поддается вычислению
В общем случае термин ‘’легко вычислимый” означает, что проблема решает-
ся за полиномиальное время, рассматриваемое как функция длины вводимого
значения. Так, если длина вводимого значения равна п битов, то время, требуе-
мое для вычисления функции пропорционально п’ , где а является фиксирован-
ной константой. Такие алгоритмы называются алгоритмами, принадлежащими
классу Р. Термин “практически невычислимый" обозначает более размытое по-
нятие. В общем случае можно сказать, что функция является практически не-
вычислимой, если усилия по ее вычислению возрастают быстрее, чем полиноми-
альная функция от длины вводимого значения. Например, если вводимое значе-
ние имеет длину п битов и время, требуемое для вычисления функции,
пропорционально 2', то такая функция считается практически невычислимой. К
сожалению, для каждого конкретного алгоритма очень непросто выяснить, от-
ражает ли этот алгоритм указанную степень сложности. К тому же в определе-
нии обычного понятия вычислительной сложности алгоритма рассматриваются
оценки сложности либо в наихудшем случае, либо в среднем Для криптографии
эти оценки бесполезны, криптография требует практической невычислим ости
обратной функции почти для любого вводимого значения, а не для наихудшего
или среднего случая. Краткий обзор понятий, , > которых здесь идет речь, дается
в дополнении 6А.
Вернемся к определению односторонней функции с лазейкой — такая функ-
ция предполагается легко вычислимой в одном направлении и практически не-
вычислимой в другом в отсутствии дополнительной информации. При наличии
дополнительной информацией обратная функция может быть вычислена за по-
линомиальное время. Подводя итог, можно сказать так: односторонние функции
с лазейкой являются такими обратимыми функциями f,, для которых
Y = Д (X) вычисляется легко, если известны к и X
X = f,‘(Y) вычисляется легко, если известны к и Y
X = f,’(Y) практически не поддается вычислению,
если Y известно, а к — нет.
Таким образом, для разработки практически применимой схемы шифрования
с открытым ключом требуется найти подходящую одностороннюю функцию с
лазейкой.
з
Не следует путать понятие односторонней функции с понятием односторонней функции хэши-
рования — последняя предполагает в качестве аргумента произвольно большое поле данных и
переводит его в некоторое фиксированное множество выводимых данных. Такие функции ис-
пользуются для аутентификации (см. главу 8).
224
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
Криптоанализ схем шифрования с открытым ключом
Как и в случае традиционного шифрования, схема шифрования с открытым
ключом уязвима с точки зрения анализа с перебором всех ключей. И контрмеры
здесь те же — использование длинных ключей. Однако в данном случае имеются
и другие варианты защиты. Криптосистемы с открытым ключом зависят от не-
которой обратимой математической функции со специальными свойствами.
Сложность вычисления такш-о рода функций может зависеть не линейно от чис-
ла битов в ключе, а расти более быстро. Поэтому длина ключа должна быть дос-
таточно большой для того, чтобы сделать анализ с перебором всех ключей прак-
тически невыполнимым, но достаточно малой для того, чтобы на практике мож-
но было использовать операции шифрования и дешифрования. Предлагаемые
для использования на практике длины ключей, конечно же, обеспечивают прак-
тическую неэффективность анализа с перебором всех ключей, но при этом ско-
рость шифровэния/дешифрования оказывается слишком медленной для того,
чтобы соответствующие алгоритмы можно было рекомендовать для универсаль-
ного применения Поэтому, как уж? упоминалось выше, шифрование с откры-
тым ключом в настоящее время ограничивается областями управления ключами
и приложениями цифровой подписи.
Другой формой атаки является попытка найти способ вычисления личного
ключа пи известному открытому ключу. На сегодняшний день нет математиче-
ского доказательства невозможности такой формы атаки ни для одного алгорит-
ма шифрования с открытым ключом. С этой точки зрения любой конкретный
алгоритм данного типа, включая широко распространенный алгоритм RSA, ока-
зывается не внушающим доверия. А история криптографии показывает, что
проблема, которая кажется неразрешимой, может оказаться вполне разрешимой,
если посмотреть на нее с некоторой другой, совершенно новой точки зрения.
Наконец, существует форма атаки, применимая только к системам с откры-
тым ключом Эта форма, по существу, является формой анализа с вероятным
текстом сообщения. Предположим, например, что должно быть отправлено со-
общение, состоящее исключительно из 56-битового ключа DES. Противник мо-
жет зашифровать все возможные ключи, используя открытый ключ, что позво-
лит ему дешифровать подобное сообщение с помощью простого сравнения образ-
цов с передаваемым шифрованным текстом. В данном случае не имеет значения,
насколько велика длина ключа схемы шифрования с открытым ключом — ана-
лиз сводится к простому перебору 56-битовых ключей. Возможности такого рода
шализа можно воспрепятствовать присоединением к таким простым сообщениям
случайных битов.
Пионерская статья Диффи и Хеллмана |D)FF76bJ знаменовала появление но-
вого подхода в криптографии и на самом деле бросила вызов криптологам пред-
ложением найти криптографический алгоритм, который отвечал бы всем требо-
ваниям, выдвигаемым криптосистемам с общим ключом. Одними из первых от-
ветили на этот вызов в 1977 году Рон Райвест (Ron Rivest), Ади Шамир (Adi
6.2. АЛГОРИТМ RSA
226
Shamir) и Лен Адлеман (Len Adleman) из МТИ, а соответствующая публикация
появилась в 1978 году [RTVE78] ' Схема Райвеста Шамира-Адлемана (RSA) стала
с тех пор единственной получившей широкое признание и практически приме-
няемой схемой шифрования с открытым ключом.
Схема RSA представляет собой блочный шифр, в котором и открытый текст,
и шифрованный текст представляются целыми числами из диапазона от 0 до
л - 1 для некоторого п. В этом разделе мы обсудим RSA в определенных под-
робностях, начиная с объяснения алгоритма. ’ Затем будут рассмотрены вычис-
лительные и криптоаналитические аспекты RSA
Описание алгоритма
Схема, разработанная Райвестом, Ша миром и Адлеманом, основана на выра-
жениях со степенями. Открытый текст шифруется блоками, каждый из которых
содержит двоичное значение, меньшее некоторого заданного числа п. Это значит,
что длин! блока должна быть меньше или равна log,(n). На практике длина
блока выбирается равной 2* битам, где 2* < п < 2*’1. Шифрование и дешифрова-
ние для блока открытого текста М и блока шифрованного текста С можно пред-
ставить в виде следующих формул:
С - М' mod п,
М = Cd mod п = (М'У* mod п = М'° mod п.
Каи отправитель, так и получатель должны знать значение п. Отправитель зна-
ет значение е, и только получателю известно значение d. Таким образом, данная
схема является алгоритмом шифрования с открытым ключом KU = {е, п} и лич-
ным ключам KR = {d, л}. Чтобы этот алгоритм мог использоваться для шифрова-
ния с открытым ключом, должны быть выполнены следующие требования.
1. Должны существовать такие значения е, d и п, что M'd = М mod п для
всех М < п.
2. Должны относительно легко вычисляться М' и Cd для всех значений М < п.
3. Должно быть практически невозможно определить d по имеющимся е и л.
Пока что мы сфокусируем внимание на первом требовании, а остальные рас-
смотрим позже. Необходимо найти соотношение вида
M‘d =Mmodn.
Здесь как нельзя лучше подойдет следствие теоремы Эйлера, представленной
в главе 7 (см. уравнение (7.7)). для таких любых двух простых чисел р и q и та-
ких любых двух целых чисел пит, что п=рдиО<т<п, и произвольного це-
лого числа k выполняются следующие соотношения:
Очевидно, первую реальную криптосистему шифроваяия/дешифрования с открытым ключом
предложил е 1973 году Клиффорд Кок (Clifford Cock) из британской Группы защити элек-
тронных коммуникаций (CESG) [COCK73]. Метод Кока практически идентичен RSA
'Для следующего ниже обсуждения вам потребуется знание понятий простого числа, арифме-
тики в классах вычетов и некоторых других понятий теории чисел, которая будет обсуждаться
в главе 7. — 4A"i'-
226
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
»xi s т mod п t
где ф(п) является функцией Эйлера, значение которой равно числу положител
ных целых чисел, меньших л и взаимно простых с л. Как показано в главе 7,
случае простых р и q имеем 0(pg) = (р -1)(<? -1). Поэтому требуемое отношен?
получается при условии
ed - /да(п) + 1 .
Это эквивалентно следующим соотношениям:
ed ® 1 mod ф(л),
d = е' mod tp(n),
т.е, end являются взаимно обратными по модулю р(л). Обратите внимание, чтг
в соответствии с правилами арифметики в классах вычетов это может иметь ме
сто только тогда, когда d (а следовательно, и е) является взаимно простым с
0(л). В эквивалентной записи gcd(4>(n), d) - 1.
Теперь у нас есть все, чтобы представить схему RSA. Компонентами схемы
являются:
р и q — два простых числа (секретные, выбираются),
n = pq (открытое, вычисляется),
такое е, что gcd(p(n), е) = 1, 1 < е < ф(п), (открытое, выбирается),
d * е1 mod 0(л) (секретное, вычисляется).
Личный ключ складывается из {d, л), а открытый — из {е, л}. Предположим,
что пользователь А опубликовал свой открытый ключ и теперь пользователь В
собирается переслать ему сообщение М. Тогда пользователь В вычисляет
С = M'(mod л) и пересылает С. Получив этот шифрованный текст, пользователь
А дешифрует его, вычисляя М = С’(mod п).
Имеет смысл привести здесь обоснование этого алгоритма. Мы выбрали end
такие, что
a = е'1 mod 0(л) .
Таким образом,
ed и 1 mod ф(п).
Значит, ed имеет вид fed(n) + l. Но по следствию теоремы Эйлера, которая бу-
дет рассмотрена в главе 7, для таких любых двух простых чисел р и q и целых
чисел п « pq и М. что 0 < М < п, выполняются соотношения
мадаы = Е м mod п .
Поэтому M'd = М mod п . Теперь мы имеем
С = И' mod п,
М = Cd mod n = (M')d mod n = Me<l mod n s M mod n.
Рис. 6.6 резюмирует алгоритм RSA, а на рис. 6.6 показан пример его приме-
нения. В этом примере ключи вычисляются следующим образом.
1. Выбирается два простых числа, р = 7 и q = 17.
2. Вычисляется n = pq= 7x17 = 119.
6.2. АЛГОРИТМ RSA
3. Вычисляется = (р - l)(g -1) - 96.
4. Выбирается е, взаимно простое с <Хп) = 96 и меньшее, чем ф(п); в данном
случае е = 5.
5. Определяется такое d, что de = 1 mod 96 и d < Уб. Соответствующим зна-
чением будет d — 77, так как 77 х 5 = 385 = 4 х 96 + 1.
В результате получаются открытый ключ KU = {5,119} и личный ключ
KR = {77,119}. В данном примере показано использование этих ключей с вводи-
мым открытым текстом М = 19. При шифровании 19 возводится в пятую сте-
пень, что в результате дает 2476099. В результате деления иа 119 определяется
остаток, равный 66 Следовательно, 19! = 66 mod 119, и поэтому шифрованным
текстом будет 66. Для дешифрования выясняется, что 66” а 19 mod 119.
Вычисление ключей
Выбор р, g р и q должны быть простыми
Вычисление n = р х q
Вычисление ф(п) = (р - l)(g - 1)
Выбор целого е gcd(p(n), е) = 1, 1<е<ф(п)
Вычисление d d = е~' mod ф(п)
Открытый ключ KU = {е, л)
Личный КЛЮЧ KR = {d, л}
Шифрование
Открытый текст: М < п
Шифрованный текст. С = Af'(mod л)
Дешифрова ние
Открытый текст' С
Шифрованный текст. М = Cd(mod л)
Рис. 6.5- Алгоритм RSA
Шифрование
Дешифрование
Рис. 6.6. Припер использования алгоритма RSA
228
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
Вычислительные аспекты
Теперь рассмотрим вопрос сложности пычислений, необходимых при исполь-
зовании RSA. На самом деле здесь следует рассмотреть два вопроса; вычисление
ключей и шифрование/дешифрование. Сначала мы исследуем процесс шифрова-
ния и дешифрования, а потом обратимся к вычислению ключей.
Шифрование и дешифрование
Как шифрование, так и дешифрование в RSA предполагает использование
операции возведения целого числа в целую степень по модулю п. Если возведе-
ние в степень выполнять непосредственно с целыми числами и только лотом
проводить сравнение по модулю п, то промежуточные значения окажутся просто
огромными. К счастью, здесь можно воспользоваться свойствами арифметики в
классах вычетов:
Ца mod n) х (b mod n)J mod п = (а х b) mod п .
Таким образом, мы можем рассматривать промежуточные результаты по мо-
дулю п. Это делает вычисления практически возможными.
Другой проблемой является эффективная реализация операции возведения в
степень, так как в случае применения RSA мы должны иметь дело с потенциально
большими показателями. Чтобы продемонстрировать, насколько здесь можно уве-
личить эффективность вычислений, предположим, что необходимо вычислить х'“.
Прямолинейный подход потребует 15 умножений, как показано ниже.
х‘° = х х х х х х х х х х х х х х х х х х х х х х х х х х х х х X х х х
Однако такого же конечного результата можно достичь и с помошью всего
четырех умножений, если повторно возводить в квадрат промежуточные резуль-
таты, получая при этом х", х4, х*, х'°.
В общем случае предположим, что нам нужно найти значение а'', где а и т
являются положительными целыми числами. Если представить т в виде двоич-
ного числа Дб,., -Ьо, то
т - У 2*,
6^0
и поэтому
£» *0
a” mud п -
mod п
Таким образом, для вычисления а‘ mod п можно использовать алгоритм, по-
казанный на рис. 6.7.а На рис. 6.8 вы видите пример последовательности значе-
ний, получаемых в результате выполнения этого алгоритма. Обратите внимание
на то. что переменная с, вообще говоря, не нужна — она включена в алгоритм
вЭтот алгоритм имеет длинную историю, а представленный здесь конкретный псевдокод взят
из [CORMSOJ.
6 2. АЛГОРИТМ RSA
229
только с целью обеспечения наглядности. Конечное значение с будет значением
показателя вычисляемой степени.
с «- 0; d «- 1
for i <- k downto 0
de с ч- 2 x с
d ч- (d х d) mod n
if bj = 1
then ct— c + 1
d *- (d X aj mod n
return d
Puc 6,7 Алгоритм вычисления a' mod n
i 9 8 7 6 5 4 3 2 1 0
bi 1 0 0 0 1 1 и 0 0 0
с 1 2 4 8 17 35 70 140 560
d 7 49 157 526 160 241 298 166 67 1
. с, 1
Puc. 6.8. Результаты выполнения алгоритма быстрого возведения в степень для
а‘ mod п при а = 7,Ь — 560 - 1000110000. п =• 561.
Вычисление ключей
Перед тем как обратиться к криптосистеме с открытым ключом, каждая сторо-
на должна генерировать пару ключей. Это означает выполнение следующих задач:
определение двух простых чисел р и q;
выбор одного из чисел е или d и вычисление второго.
Сначала рассмотрим процедуру выбора р и q. Ввиду того что значение п — pg
будет известно любому потенциальному противнику, то для того, чтобы не до-
пустить возможности нахождения р и q с помощью простого перебора вариантов,
эти простые числа должны быть выбраны из достаточно большого множества
(т.е. р и q должны быть большими числами). В то же время метод нахождения
больших простых чисел должен быть практически эффективным.
На сегодняшний день нет хороших методов вычисления произвольно больших
простых чисел, поэтому для решения этой проблемы приходится прибегать к
различным хитростям. Чаще всего процедура заключается в выборе случайного
нечетного число приблизительно желаемой величины и выяснения, является ли
это число простым. Если окажется, что число простым не является, выбирается
следующее случайное число, пока не будет найдено простое.
Для проверки того, что числа простые, существует целый ряд тестов (см. на-
пример, [KNUT98], где можно найти описания ряда таких тестов). Почти все та-
кие тесты носят вероятностный характер. Это значит, что тест определит только,
что данное целое число, вероятно, простое. Несмотря на отсутствие полной уве-
ренности, такие тесты могут выполняться так, чтобы обеспечить уверенность с ве-
роятностью, как угодно близкой к 1. В качестве примера в главе 7 будет описан
алгоритм Миллера-Рабина (Miller-Rabin), один из наиболее эффективных и попу-
лярных из таких алгоритмов Для этого и большинства других подобных алгорит-
мов процедура проверки простоты данного целого числа п заключается в выполне-
230
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ ключом
нии ряда вычислений, в которых используется п и некоторое случайно выбранное
целое число а. Если п не выдерживает тестирования, то и простым не является.
Если п выдерживает одно тестирование, то л может оказаться простым, а может и
не быть простым. Если же п успешно проходит целый ряд таких “испытаний” с
различными случайно выбранными значениями а, это дает нам большую степень
уверенности в том, что п на самом деле является простым числом.
Вкратце процедуру выбора простого числа можно представить в следующем виде.
1. Выберите нечетное целое число п некоторым случайным образом
(например, используя генератор псевдослучайных чисел).
2. Выберите целое число а < п некоторым случайным образом.
3. Выполните вероятностный тест на простоту, например тест Миллера-
Рабина. Если п не выдерживает тестирования, отбросьте данное значение п
и перейдите к п. 1.
4. Если п выдерживает достаточное число повторных тестов, примите данное
значение п как подходящее, в противном случае перейдите к п. 2.
Это процедура несколько утомительна. Однако не забывайте о том, что этот
процесс выполняется относительно нечасто — только тогда, когда требуется но-
вая пара (KU, KR).
При этом неплохо знать, как много чисел, скорее всего, окажутся отброшен-
ными прежде, чем обнаружится простое число. Одна из теорем теории чисел, из-
вестная под названием теоремы о простых числах, утверждает, что простые чис-
ла около Л7 распределяются в среднем по одному на каждые )n(N) целых чисел.
Таким образом, в среднем придется протестировать порядка In(jV) целых чисел
прежде, чем найдется простое число. В действительности из-за того, что все чет-
ные целые числа можно отбросить сразу же, истинный порядок задается числом
ln(7V)/2. Например, если искать простые числа в области величин порядка 2“’,
то для нахождения простого числа потребуется около 1п(2*°) / 2 = 70 попыток.
После определения простых чисел р и q процесс вычисления ключей заверша-
ется выбором значения е и вычислением d или, наоборот, выбором значения d и
вычислением е. Б первом случае необходимо сначала выбрать такое е, что
gcd(0(n), е) = 1, а потом вычислить d = е'1 mod р(л). К счастью, имеется один ал-
горитм, который в одно и то же время вычисляет наибольший общий делитель
двух целых чисел и, если наибольший общий делитель оказывается равным 1,
определяет обратное для одного из целых чисел по модулю другого. Этот алго-
ритм, в дальнейшем называемый обобщенным алгоритмом Евклида, описан в
главе 7. Процедура заключается в генерировании случайных чисел и сравнении
их с <р(п) до тех пор, пока не будет найдено число, взаимно простое с <э(п). Те-
перь мы снова можем спросить, как много случайных чисел придется проверить
прежде, чем будет найдено подходящее число, т.е. число, взаимно простое с
<р(п)? Легко показать, что вероятность того, что два выбранных случайно числа
□кажутся взаимно простыми, равна примерно 0,6 — это значит, что для нахож-
аения подходящего целого значения понадобится всего несколько проверок (см.
1адачу 7.1).
12. АЛГОРИТМ RSA.
231
Защищенность алгоритма RSA
Тремя возможными подходами к криптоанализу алгоритма RSA являются
следующие.
Простой перебор. Предполагает проверку всех возможных личных ключей.
Математический анализ. Существует несколько подходов такого рода, но
все они по сути эквивалентны нахождению множителей произведения двух
простых чисел.
Анализ временных затрат. Опирается на анализ времени выполнения ал-
горитма дешифрования
Защита против простого перебора в случае RSA остается той же, что и для
всех других криптосистем, — использование большого пространства ключей. С
этой точки зрения чем больше битов в е и d, тем лучше Однако из-за сложности
вычислений как при генерировании ключей, так и при шифрова-
нии/дешифровании, чем большим оказывается размер ключа, тем медленнее ра-
ботает система.
В этом разделе для алгоритма RSA мы представляем краткий обзор возмож-
ностей его криптоанализа при использовании математического подхода и подхо-
да на основе анализа временных затрат.
Проблема разложения на множители
Можно выделить следующие три математически различных подхода к крип-
тоанализу RSA.
Разложение п на два его простых множителя. Это позволит вычислить
ф(л) = {р - l)(g -1), на основании чего можпо будет определить
d = e'*(mod ф(п)).
Определение непосредственно о(п) без того, чтобы сначала определять р и
q. Это также позволит определить d = е ‘(mod ф(п)).
Определение непосредственно d без того, чтобы сначала определять ф(п).
В большинстве случаев обсуждение вопросов криптоанализа шифра RSA ка-
сается задачи разложения значения п на два его простых множителя. Задача оп-
ределения р(л) по данному п оказывается эквивалентной задаче разложения п
на множители [R1BE96J. Для известных сегодня алгоритмов проблема определе-
ния d по данным е и п оказывается требующей по крайней мере таких же затрат
времени, как и проблема разложения на множители [КАЫ95]. Следовательно,
затраты на решение задачи разложения на множители можно использовать в ка-
честве эталона при оценке степени защищенности RSA.
Для больших п с большими простыми множителями разложение на множи-
тели является серьезной проблемой, но не настолько, как требуется. Порази
тельной иллюстрацией этого может служить следующая история. В 1977 году
три изобретателя алгоритма RSa отважились предложить читателям популярно-
го журнала Scientific American раскрыть шифрованное сообщение, которое они
поместили в разделе ’’Математические игры” Мартина Гарднера (Martin
Gardner). За расшифровку этого сообщения они предложили награду в 100 долл.
232
ГЛАВА б. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
По их -щенкам, задача не могла быть решена ранее, чем приблизительно через
40 квадрильонов лет. Но в апреле 1994 года группа пользователей Internet по-
требовала выплаты призовой суммы после всего восьми месяцев совместной ра-
боты в Internet. В предложенной задаче использовался открытый ключ длиной в
129 десятичных знаков (длина п), что равно примерно 428 битам. И точно так
же, как и для DES, RSA Laboratories объявили конкурсы для шифров с длинами
ключей в 100, 110, 120 и больше знаков. Последней из решенных задач являет-
ся задача для RSA-130. в которой длина ключа равна 130 десятичным знакам
[COWE96]. Имеющиеся на сегодня результаты показаны в табл. 6.3. Единицей
меры сложности задачи в данном случае является MIPS-год — объем работы,
выполняемой в течение года процессором, осуществляющим обработку одного
миллиона команд в секунду, что примерно эквивалентно выполнению 3x10“
команд. Так, машина на базе Pentium с частотой 200 МГн показывает скорость
около 50 MIPS.
Таблица 6.3. Прогресс в решении проблемы разложения на множители
Число десятичных знаков Приблизи- тельное число битов Дата решения Требуемое число MIPS-лег Использованный алгоритм
100 332 Апрель 1991 г. 7 Квадратичное решето
110 36b Апрель 1992 г. 75 Квадратичное решето
120 398 Июнь 1993 г. 830 Квадратичное решето
129 428 Апрель 1994 Г, 5000 Квадратичное решето
130 431 Апрель 1996 г. 500 Решето в поле чисел об
щего вида
Из табл. 6.3 вытекает удивительный факт, касающийся важности используемо-
го метода. Вплоть до недавнего времени для разложения на множители применял-
ся подход, известный под названием метода квадратичного решета. Для криптоа-
нализа RSA-130 использовался новый алгоритм, называемый методом решета в
поле чисел общего вида, что позволило сократить объем вычислительных усилий
почти на10% по сравнению с теми, что требовались ранее для анализа RSA-129.
Угроза ключам большой длины здесь двойная: непрерывный рост вычисли-
тельной мощи современных компьютеров и непрерывное усовершенствование ал
горитмов разложения на множители. Как видите, применение совершенно ново-
го алгоритма привело к существенному сокращению времени на решение зада-
чи- Можно ожидать дальнейшего усовершенствования метода решета в поле
обобщенных чисел, не исключается также возможность появления новых, еще
более совершенных алгоритмов. Например, имеющийся уже сегодня родствен-
ный алгоритм, исполъзуюший метод решета в поле чисел специального вида, по-
зволяет раскладывать на множители числа специального вида значительно быст-
рее, чем метод решета в поле чисел общего вида. На рис. 6.9 представлены ре-
зультаты сравнения этих двух алгоритмов. Логично ожидать появления
результатов, которые дадут возможность увеличить скорость выполнения разло-
жения на множители в общем случае ди показателей, которые будут равны или
6.2. АЛГОРИТМ RSA
233
даже выше показателей метода решета в поле чисел специального вида
[ODLY95]. Поэтому приходится быть весьма осторожным в выборе длины ключа
для RSA. В перспективе недалекого будущего кажется разумным выбор длины
ключа в диапазоне от 1024 до 2048 битов.
В дополнение к проблеме выбора размера п исследователями был обнаружен
ряд других ограничений. Чтобы избежать выбора значений п, которые могут
быть разложены на множители с меньшими усилиями, изобретатели алгоритма
предлагают следующие ограничения относительно р и q.
1. Значения р и q должны различаться по длине всего на несколько разрядов
Например, и р, и q должны попадать в диапазон от 10'1- до Ю1* .
2. Как Ip - 1), так и (<? - 1) должны содержать в своих разложениях доста-
точно большой простой множитель.
3. gcd(p - 1, q - 1) должен быть достаточно малым.
Кроме того, было показано, что если если d < п*, то d можно определить
достаточно легко [WIEN90].
284
ГЛАВА 6 КРИПТОГРАФИЯ С ОТКРЫТЫМ ключом
Анализ временных затрат
Есчи кому-то требуются другие доказательства того, что защита криптографи-
ческого алгоритма оказывается непростой задачей, то для этого как нельзя лучше
подойдет описание метода анализа временных затрат. Как убедительно продемон-
стрировал специалист-консультант по криптографии Пол Кочер (Paul Kocher),
противник получает возможность определить личный ключ, анализируя затраты
времени, которые требуются компьютеру для расшифровки сообщений [КОСН96].
Анализ временных затрат можно использовать не только в случае RSA, но и с дру-
гими системами шифрования с открытым ключом. Атаки такого рода оказывают-
ся опасными по двум причинам: они могут вестись с самых неожиданных направ-
лений и предусматривать анализ только шифрованного текста
Анализ временных затрат отчасти аналогичен подходу взломщика, отгады-
вающего комбинацию замка сейфа, наблюдая за тем, сколько времени требуется
владельцу для того, чтобы повернуть устройство замка от цифры к цифре Мож-
но было бы объяснить суть этого подхода на примере алгоритма возведения ч
степень в арифметике классов вычетов, представленного на рис. 6.7, но данный
подход можно адаптировать к любой реализации, которая не предполагает вы-
полнения алгоритма за фиксированное время. В рассматриваемом здесь алго-
ритме возведение в степень выполняется бит за битом, с одним умножением на
каждой итерации и дополнительным умножением, выполняемым для каждого
бита, равного 1.
Как отмечает Кочер в своей работе, проще всего понять суть предлагаемого
подхода на примере, соответствующем экстремальному случаю. Предположим, что
система шифрования использует функцию умножения в классах вычетов, которая
выполняется очень быстро почти во всех случаях, кроме небольшого их числа, ко-
гда умножение занимает значительно больше времени, Анализ проводится бит за
битом, начиная с первого слева бита б. . Предположим, что первые j битов уже из-
вестны. (Чтобы получить значение показателя степени, следует начать с j = О и
повторять процедуру анализа до тех пор, пока не станут известными все биты по-
казателя.) Для имеющегося шифрованного текста противник может выполнить
первые ; итераций цикла for. На следующем этапе выполнение операции зависит
от значения неизвестного бита показателя степени. Если этот бит равен 1, то вы-
полняется оператор d <— (d х a) mod л. Для нескольких значений and умножение
выполняется чрезвычайно медленно, и противник знает, для каких именно. По-
этому, если время выполнения алгоритма дешифрования всегда заметно увеличи-
вается, когда эта конкретная итерация выполняется при значении бита, равном 1,
то, выявив соответствующую задержку, можно сделать вывод о том. что данный
бит равен 1. Если же для целой серии наблюдений алгоритм всегда выполняется
достаточно быстро, то этот бит должен быть равным U.
На практике реализации возведения в степень в классах вычетов не имеют
столь резко выраженных вариаций во времени, чтобы продолжительность вы-
полнения одной итерации могла превысить среднее время выполнения всего ал-
горитма в целом. Но имеющие место в реальности вариации все же достаточны
для того, чтобы их анализ оказался практически полезным. Более конкретную
информацию по этой теме вы найдете в [КОСН96].
6.2 АЛГОРИТМ RSA
235
Хотя анализ временных затрат и оказывается серьезной угрозой, против него
имеются простые контрмеры, например следующие.
Постоянное время выполнения операции возведения в степень. Изменение
алгоритма таким образом, чтобы все возведения в степень занимали одно и
то же время от начала выполнения до возврата результата. Сделать это
просто, но при этом увеличивается общее время выполнения алгоритма.
Случайные задержки. Меньшее влияние на общее время выполнения вы-
зывает добавление в алгоритм возведения в степень случайных задержек,
что уменьшает пользу от анализа временных затрат Но при этом, как от-
мечает Кочер, если защищающаяся сторона добавит недостаточно помех,
противник будет все еще в состоянии с помощью дополнительных измере-
ний провести криптоанализ и в условиях влияния случайных задержек.
Маскировка. Умножение шифрованного текста на случайное число перед
тем, как выполнять возведение в степень. Эго не позволит противнику уз-
нать, какие биты шифрованного текста обрабатывались в компьютере, и,
таким образом, не даст ему возможности провести поразрядный анализ,
который является существенной частью подхода, основанного на анализе
временных затрат.
В некоторых продуктах RSA Data Security предполагается возможность ис-
пользования функции маскировки. В них операция М = С' mod п с личным
ключом выполняется следующим образом.
1. Генерируется секретное случайное число г в диапазоне от 0 до п - 1.
2. Вычисляется С' = С~ mod п , где е является открытым значением показате-
ля степени.
3. Вычисляется М' = (С')' mod п для обычной реализации RSA.
4. Вычисляется М = M'r ' mod п . В этом равенстве г 1 представляет собой
мультипликативное обратное значение г mod п (си. главу 7, где обсужда-
ется это понятие). Можно показать, что соответствующий результат будет
очевидно корректным, если заметить, что r“*mod п = г mod п .
RSA Data Security утверждает, что при использовании функции маскировки
общая производительность снижается на величину от 2 до 10%.
6.3. Управление ключами
В главе 5 мы рассмотрели проблему распределения секретных ключей. Одной
из главных сфер применения схемы шифрования с открытым ключом является
решение проблемы распределения ключей. Имеется две совершенно различные
области использования шифрования с открытым ключом в этой сфере:
• распределение открытых ключей;
использование шифрования с открытым ключом для распределения сек-
ретных ключей.
Мы рассмотрим каждую из этих областей использования данной схемы шиф-
рования по порядку.
236
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
Распределение открытых ключей
Для распределения открытых ключей было предложено несколько ме
Фактически их можно сгруппировать в следующие общие классы:
публичное объявление;
публично доступный каталог;
в авторитетный источник открытых ключей;
в сертификаты открытых ключей.
Публичное объявление открытых ключей
Одной из основных составляющих шифрования с открытым ключом явля
то, что открытый ключ является общедоступным. Таким образом, при нал!
широко используемого алгоритма (например, RSA) любая участвующая в об?
данными сторона может предоставить свой открытый ключ любой другой ст
не или передать ключ по средствам коммуникаций для всех вообще (рис. 6.
Например, из-за возрастающей популярности PGP (схемы шифрования, обе
даемой в главе 12), в которой используется RSA, многие пользователи PGP г
няли практику присоединения своих открытых ключей к сообщениям, кого;
они посылают в открытые форумы, например в группы новостей USENET 1
списки рассылки Internet.
Этот подход удобен, но он имеет одно слабое место: такое публичное объяв
ние может написать кто угодно. Это значит, что кто-то может представиться по
зователем А и послать открытый ключ другому пользователю сети или пред
жить такой открытый ключ для всеобщего пользования. Пока пользователь А
кроет подлог и предупредит других пользователей, фальсификатор смоя
прочитать все шифрованные сообщения, пришедшие за это время для А, и смож
использовать фальсифицированные ключи для аутентификации (см. рис. 6 3).
Публично доступный каталог
Более высокую степень защиты можно обеспечить с помощью создания и о
служивания некоторого публично доступного динамичного каталога открыть
ключей. За сопровождение и распространение публичного каталога должен отв<
Рис 6.10. Неконтролируемое распределение открытых ключей
6.3. УПРАВЛЕНИЕ К nwxxi л
чать некоторый надежный центр или надежная организация Сем. рис. 6.11). Та-
кая схема должна включать следующие элементы.
1. Уполномоченный объект поддерживает каталог с записями вида (имя. от-
крытый ключ) для каждого из участников.
2. Каждый участник регистрирует свой открытый ключ с помошью объекта,
уполномоченного вести каталог. Такая регистрация должиа происходить
либ|- при личной явке участника, либо по каким-то образом защищенным
каналам коммуникации.
3. Любой участник может заменить существующий ключ: новым в любой мо-
мент или из-за того, что открытый ключ уже был использован для пере-
сылки достаточно большого объема данных, или из-за того, что соответст-
вующий личный ключ был каким-то образом скомпрометирован.
4. Периодически объект, уполномоченный вести каталог, публикует весь ка-
талог или обновления к нему. Например, может публиковаться печатная
версия каталога наподобие телефонной книги или печататься обновления в
общедоступной популярной газете-
5. Участники могут также иметь доступ к каталогу в его электронной вер-
сии. Для этого обязательно требуется канал связи между участниками об-
мена данными и объектом, уполномоченным вести каталог, предполагаю-
щий использование средств аутентификации.
Эта схема, очевидно, более защищена, чем индивидуальные публичные объ-
явления, но и она уязвима Если противнику удастся получить или вычислить
личный ключ объекта, уполномоченного вести каталог, противник сможет авто-
ритетно выдавать фальсифицированные открытые ключи и, следовательно, вы-
ступать от имени любого из участников обмена данными и читать сообщения,
предназначенные люоому участнику. Того же результата противник может дос-
тичь с помощью изменения записей, хранящихся в каталоге.
2М
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
Авторитетный источник открытых ключей
Лучшая зашита распределения открытых ключей может быть достигнута пу-
тем более строгого контроля за распределением открытых ключей из каталога.
Типичный сценарий представлен схемой на рис. 6.12, ь основу которого положен
один из рисунков из [РОРЕ79]. Как и прежде, сценарий предполагает наличие
некоторою центрального объекта, уполномоченного поддерживать динамический
каталог открытых ключей всех участников обмена данными. Кроме того, каж-
дому из участников достоверно известен открытый ключ центра, но только
центр знает соответствующий личный ключ. При этом выполняются следующие
действия (их номера согласованы с номерами на рис. 6.12).
1. Инициатор А посылает сообщение с меткой даты/времени авторитетному
источнику открытых ключей с запросом о текущем открытом ключе уча-
стника В,
2. Авторитетный источник отвечает сообщением, которое шифруется с ис-
пользованием личного ключа авторитетного источника, KR.UU. Это сооб-
щение инициатор А может дешифровать, используя открытый ключ авто-
ритетного источника. Поэтому отправитель А может быть уверенным в
том, что сообщение исходит от авторитетного источника. Это сообщение
должно включать следующее:
• открытый ключ участника В. KUb, который участник А может исполь-
зовать для шифрования сообщений, предназначенных для получателя В;
* оригинальный запрос, чтобы сторона А имела возможность сопоставить
ответ с ранее отправленным запросом и убедиться, что запрос не был
изменен на пути к авторитетному источнику;
Рис. 6.12. Сценарий распределения открытых ключей
6.3. УПРАВЛЕНИЕ КЛЮЧАМИ
239
• оригинальную метку даты/времени, чтобы отправитель А мог удостове-
риться, что это сообщение не является одним из старых сообщений от
авторитетного источника, содержащим ключ, отличный от текущего
открытого ключа адресата В.
3. Инициатор А сохраняет открытый ключ участника В и использует «го для
шифрования сообщения, направляемого получателю В и содержащего
идентификатор отправителя А (ЮА) и оказию (N,), которая выступает в
качестве уникальной метки данного сообщения-
4. 5. Респондент В получает открытый ключ участника А от авторитетного
источника точно таким же способом, каким отправитель А получил от-
крытый ключ получателя В.
К этому моменту открытые ключи оказываются доставленными участникам А
и В вышеописанной защищенной процедурой, так что теперь они могут начать
защищенный обмен данными. Но перед этим желательно выполнить два сле-
дующих дополнительных действия.
6. Респондент В посылает сообщение инициатору А, шифрованное с помощью
KU. и содержащее оказию отправителя А (N,), а также новую оказию,
сгенерированную участником В (N,). Ввиду того что только он и мог де-
шифровать сообщение (3), присутствие N, в сообщении (6) убеждает уча-
стника А в том, что отправителем полученного сообщения был В.
7. Инициатор А возвращает Na, шифрованное с помощью открытого ключа уча-
стника В, чтобы тот мог убедиться в том, что отправителем ответа является А.
Итак, в общей сумме потребуется семь сообщений. Однако отсылать первые
четыре сообщения потребуется нечасто, так как и обе стороны могут сохранить
открытые ключи друг друга для дальнейшего использования, что обычно назы-
вают кэшированием. Периодически пользователь должен запрашивать свежие
экземпляры открытых ключей своих адресатов, чтобы иметь гарантированную
возможность обмена данными.
Сертификаты открытых ключей
Сценарий, показанный на рис. 6.12, привлекателен, но и он имеет некоторые
недостатки. Авторитетный источник открытых ключей является узким местом
системы, поскольку пользователь должен апеллировать к авторитетному источ-
нику при необходимости получить открытый ключ для каждого нового адресата,
с которым этот пользователь намерен вести переписку Кроме того, как и в пре-
дыдущем случае, каталог имен и открытых ключей, поддерживаемый автори-
тетным источником, остается уязвимым в отношении вмешательства с неблаго-
видными намерениями.
Альтернативный подход, который предложил Конфельдер (Kohnfelder)
(KOHN78]. основан на сертификатах, которые могут использоваться участника-
ми для обмена ключами без контакта с авторитетным источником открытых
ключей и должны обеспечивать способ обмена, такой же надежный, как способ
получения ключей непосредственно от авторитетного источника открытых клю-
чей. Каждый сертификат содержит открытый ключ и другую информацию, соз-
дается авторитетным источником сертификатов и выдается участнику вместе с
240
ГЛАВА 6- КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
соответствующим личным ключом. Один участник передает информацию о своем
ключе другому с помощью передачи своего сертификата. Другие участники мо-
гут проверить, что сертификат был создан авторитетным источником. Можно
сформулировать следующие требования к этой схеме.
1. Любой участник должен иметь возможность прочитать сертификат, чтобы
определить имя и открытый ключ владельца сертификата.
2. Любой участник должен иметь возможность проверить, что сертификат ис-
ходит из авторитетного источника сертификатов и не является подделкой.
3. Только авторитетный источник сертификатов должен иметь возможность
создавать и изменять сертификаты.
Все эти требования удовлетворялись первоначальной схемой из [KOHN78J. Ден-
нинг (Denning) добавил к ним следующее дополнительное требование [DENN83].
4. Любой участник должен иметь возможность проверить срок действия сер-
тификата.
Схема использования сертификатов показана на рис. 6-13. Каждый участник
обращается к авторитетному источнику сертификатов, предоставляя открытый
ключ и запрашивая для него сертификат. Запрос должен предполагать либо
личное обращение, либо некоторую защищенную форму связи. Для участника А
авторитетный источник обеспечивает сертификат вида
СА =ЕКВ.„,Ь[Т, IDa,KU.],
где обозначает личный ключ, используемый авторитетным источником.
Теперь участник А может переслать этот сертификат любому другому участнику,
который прочитывает и проверяет сертификат:
DKU„u> [СА1 = DKU^[EKR.utk(T, ТОА, KU.]] = (Т, ID,, KUJ .
Получатель использует открытый ключ авторитетного источника сертификатов
, чтобы дешифровать сертификат. Ввиду того что сертификат можно прочи-
Рис. 6.13 Обмен сертификатами открытых ключей
б.З. УПРАВЛЕНИЕ КЛЮЧАМИ
241
тать только с помощью открытого ключа авторитетного источника сертификатов,
это дает гарантию того, что сертификат пришел именно от авторитетного источни
ка сертификатов Элементы и KU, сообщают получателю имя и открытый
ключ владельца сертификата. Наконец, метка даты/времени Т определяет срок
действия сертификата. Метка даты/времени должна быть защищена от следующей
последовательности действий- Противник узнает личный ключ А По этой причине
А ^нерирует новую пару ключей (личный и открытый) и обращается к авторитет-
ному источнику сертификатов за новый сертификатом. Тем временем противник
воспроизводит сообщение со старым сертификатом и отсылает его В. Если В будет
шифровать сообщения, используя старый скомпрометированный открытый ключ,
противник сможет прочитать эти сообщения.
В этом смысле компрометация личного ключа сравнима с потерей кредитной
карточки. Владелец объявляет номер кредитной карточки недействительным, ио
ситуация остается потенциально рискованной до тех пор, пока все возможные
системы не будут информированы о том, что старая кредитная карточка уже не-
действительна. Таким образом, метка даты/времени является чем-то вроде даты
истечения срока действия. Если сертификат оказывается выданным достаточно
давно, предполагается, что срок его действия истек.
Распределение секретных ключей с помощью системы с
открытым ключом
После того как открытые ключи были распределены и стали доступными,
становится реальной организация защищенной связи, не допускающей возмож-
ности перехвата (рис. 6.2) или искажения сообщений (.рис. 6.3) или того и друго-
го вместе (рис. 6.4). Однако некоторые пользователи предпочтут использовать
шифрование с открытым ключом только в исключительных случаях из-за того,
что в условиях применения шифрования скорость передачи данных оказывается
относительно медленной. Поэтому шифрование с открытым ключом приходится
рассматривать, скорее, как средство распределения секретных ключей, исполь-
зуемых для традиционного шифрования.
Простое распределение секретных ключей
Исключительно простую схему предложил Меркл (Merkle) (MERK79],
рис. 6.14. Если инициатор А намерен обменяться данными с пользователем В,
для этого предполагается следующая процедура.
Рис. 6.14. Простое использование шифрования с открытым ключом при выборе се-
ансового ключа
э к
242
ГЛАВА 6 КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
1. Сторона А генерирует пару открытый/личный ключи {KU,, KR,} и nepi
дает сообщение стороне В, содержащее KU, и идентификатор отправит»
ля A, 1DA.
2. Получатель В генерирует секретный ключ К, и передает этот ключ ини
циатору сообщения А зашифрованным с помощью открытого ключа инк
пиаторэ А.
3. Пользователь А вычисляет Вкд,[Еки,[Кь]], чтобы восстановить секретны
ключ. Поскольку только пользователь А может дешифровать это сообще
ние, только участника обмена данными А и В будут знать значение К,.
4. Участник А выбрасывает ключ КН., а участник В — выбрасывает ключ KU,.
Теперь обе стороны, А и В, могут использовать связь, защищенную традипи
онным шифрованием с сеансовым ключом К,. По окончании обмена данными I
А, и В выбрасывают К,. Несмотря на простоту, этот протокол весьма привлек?
телен. Никаких ключей не существуют перед началом связи и никаких ключе!
не остается после завершения связи. Поэтому риск компрометации ключей ми
нимален. В то же время связь оказывается защищенной от подслушивания.
Этот протокол уязвим в отношении активных атак. Если противник Е имее
возможность внедрения в канал связи, то г н может скомпрометировать связь бе
того, чтобы быть обнаруженным, следующим образом.
1. Участник А генерирует пару открытый/личный ключи {KU,, KRJ и пе
редает сообщение адресату В, содержащее KU, и идентификатор участии
ка A IDa ,
2. Противник Е перехватывает сообщение, создает собственную пару откры
тый/личный ключи {KU,, KR,) и передает сообщение адресату В, содер
жащее KU, || IDA .
3. В генерирует секретный ключ К, и передает ЕК1,,|К,].
4. Противник £ перехватывает это сообщение и узнает К,, вычисли!
Dkr.LEku.[K,]]
5. Противник Е передает участнику А сообщение Еки.[К,].
В результате оба участника, А и В, будут знать К,,-но не будут подозревать
что К, также известен и противнику Е. Поэтому стороны А и В могут начат!
обмен сообщениями, используя К,. Противник Е больше не будет активно вме
шиваться в канал связи, а просто будет перехватывать сообщения. Зная К,, oi
сможет дешифровать любое сообщение, а участники А и В даже не будут подоз
ревать о существовании проблемы Таким образом, этот простой протокол ока
зывается полезным только в случае, когда единственной возможной угрозой яв
ляется пассивный перех ват сообщений.
Распределение секретных ключей с обеспечением конфиденциальности и
аутентификации
Схема на рис. 6.15, основанная на подходе, предлагаемом в [NEED78], обес
печивает защиту и от активной, и от пассивной форм атаки. В качестве исход
них условий предположим, что А и В уже обменялись открытыми ключами пг
одной из схем, описанных выше. Далее следует выполнить следующие действия.
6.3. УПРАВЛЕНИЕ КЛЮЧАМИ
24с
Рис. 6.15. Распределение секретных ключей с помощью шифрования с открытым
ключом
1. Сторона А использует открытый ключ стороны В, чтобы переслать стороне
В шифрованное сообщение, содержащее идентификатор участника А (1D* )
и оказию (N,), используемую для идентификации данной конкретной
транзакции.
2. Пользователь В посылает сообщение пользователю А, зашифрованное с
помощью KU, и содержащее полученную от него оказию (N,) и новую
оказию (N,), сгенерированную пользователем В Ввиду того что только
участник В мог дешифровать сообщение (1), присутствие Nt в сообще-
нии (2) убеждает участника А в том, что респондентом является сторона В.
3. Сторона А возвращает Na, шифруя сообщение открытым ключом стороны
В, чтобы гарантировать ей, что его респондентом является сторона А.
4. Участник А выбирает секретный ключ К, и посылает участнику В сооб-
щение М = Екиь(Екя.[К0]]. Шифрование этого сообщения открытым клю-
чом стороны В гарантирует, что только участник В сможет прочитать его,
а шифрование личным ключом участника А — что только участник А мог
послать его. х-п
5, Сторона В вычисляет DKl4[EKRb|MlJ, чтобы восстановить секретный ключ.
Обратите внимание на то, что первые три действия этой схемы соответствуют
последним трем действиям схемы, показанной на рис. 6.12. В результате при
обмене секретными ключами эта схема гарантирует как конфиденциальность,
так и аутентификацию.
f ибрилная схема ...
Еще одна схема использования шифрования с открытым ключом при распреде-
лении секретных ключей представляет гибридный подход, применяемый на мэйн-
фреймах IBM [LE93J. Эта схема предполагает участие центра распределения клю-
чей (ЦРК), с которым каждый пользователь использует свой главный секретный
ключ, и распределение секретных сеансовых ключей, шифруемых главным клю-
чом. Схема шифрования с открытым ключом служит для распределения главных
ключей В основе такого трехуровневого подхода лежит следующая логика.
244
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
• Скорость выполнения процедуры. Существует много приложений, особенно
ориентированных на передачу транзакций, где сеансовые ключи должны
меняться очень часто. Распределение сеансовых ключей с помощью схемы с
открытым ключом могло бы сделать производительность системы слишком
низкой из-за относительно высоких требований к вычислительным ресурсам
при шифровании и дешифровании по такой схеме, В случае трехуровневой
иерархии шифрование с открытым ключом применяется лишь иногда, что-
бы изменить главный ключ, разделяемый пользователем и ЦРК.
Обратная совместимость. Гибридную схему можно легко реализовать в ви-
де расширения уже имеющейся схемы, предполагающей использование
ЦРК, с минимальными изменениями предусмотренной процедуры и про-
граммного обеспечения.
Добавление уровня шифрования с открытым ключом обеспечивает защищен-
ное и эффективное средство распределения главных ключей. Это является пре-
имуществом в конфигурации, когда один ЦРК обслуживает большое число поль-
зователей, находящихся на значительном расстоянии друг от друга.
6,4. Обмен ключами по схеме Диффи-Хеллмана
Первый из опубликованных алгоритмов на основе открытых ключей появил-
ся в работе Диффи и Хеллмана, в которой было определено само понятие крип-
тографии с открытым ключом [DIFF76b]. Обычно этот алгоритм называют обме-
ном ключами по схеме Диффи-Хеллмана Данная технология обмена ключами
реализована в целом ряде коммерческих продуктов.
Цель схемы — обеспечить двум пользователям защищенную возможность со-
общить друг другу ключ, чтобы они могли прибегнуть к ней для шифрования
последующих сообщений. Сам по себе алгоритм ограничивается процедурой об-
мена ключами.
Эффективность алюритма Диффи-Хеллмана опирается на трудность вычисле-
ния дискретных логарифмов. Формально дискретный логарифм можно определить
следующим образом. Сначала определяется первообразный корень простого числа
р как число, степени которого порождают все целые числа от 1 до р — 1. Это зна-
чит, что если а является первообразным корнем простого числа р, то все числа
a mod р , a’ mod р , ..., а'"1 mod р
должны быть разными и представлять все целые числа от 1 до р - 1 в некоторой
перестановке..
Для любого целого числа Ь и любого первообразного корня а простого числа р
однозначно определяется показатель степени i, при котором
b = a mod р , где О < i < Гр -1).
7
Идентичная схема была опубликованы Вильямсоном (Williamson) из британской Группы за
щиты электронных коммуникаций (CESG) несколькими месяцами ранее в секретном документе
|WILL76], где утверждалось, что соответствующая схема была открыта за несколько лет до
этого (дискуссию пс этому вопросу вы найдете в |ELLI87)).
6.4 ОБМЕН КЛЮЧАМИ ПО СХЕМЕ ДИФФИ-ХЕЛЛМАНА
245
Этот показатель степени обычно называется дискретным логарифмом, или
индексом b по основанию а, рассматриваемому по модулю р. Это значение запи-
сывается в форме ind«.,(t>). Определение понятия дискретного логарифма при-
ведено в главе 7.
Теперь мы можем описать обмен ключами по схеме Диффи-Хеллмана, иллюст-
рацией которой служит рис. 6.16. В этой схеме имеется два открытых для всех
чисел: простое число q и целое число а, являющееся первообразным корнем q.
Предположим, пользователи А и В намерены обменяться ключами. Пользователь
А выбирает случайное целое число Хл < q и вычисляет УА =а*‘ mod q . Точно так
же пользователь В независимо выбирает случайное целое число Хв < q и вычисля-
ет У, = ar“ mod q . Каждая сторона сохраняет значение X в тайне и делает значе-
ние У свободно доступным другой стороне. Пользователь А вычисляет ключ по
формуле К = (У )** mod q, а пользователь В — по формуле К = (УА)*’ mod q. Эти
две формулы вычисления дают одинаковые результаты, как показано ниже.
К = (Y,)“ mod q
= (ar’ mod дУ' mod д
_ П10<1 g (по правилам арифметики в классах вычетов)
= ах,х* mod q
- (aXA)*’modg
= (ar* mod дУ’ mod q
= (Уд)*’mod g.
Итак, обе стороны обменялись секретным ключом. А поскольку при этом ХА
и Х„ были только в личном использовании и поэтому сохранились в тайне, про-
тивнику придется работать только с q, а, УА и Уй. Таким образом, ему придет-
ся вычислять дискретный логарифм, чтобы определить ключ. Например, чтобы
определить ключ пользователя В, противнику нужно вычислить
Хв = inda ?(Ув).
После этого он сможет вычислить ключ К точно так же, как это делает поль-
зователь В.
Защищенность обмена ключами по схеме Диффи-Хеллмана опирается факти-
чески на то, что в то время, как степени по модулю некоторого простого числа
вычисляются относительно легко, вычислять дискретные логарифмы оказывает-
ся очень трудно. Для больших простых чисел последнее считается задачей прак
тически неразрешимой.
Вот пример, взятый из [SEBE89]. Обмен ключами строится на использовании
простого числа q — 97 и его первообразном корне а = 5. Пользователи А и В вы-
бирают секретные ключи Хл - 36 и Хв = 58 соответственно. Каждый вычисляет
свой открытый ключ:
Уд = 5“ = 50 mod 97 ,
Ув = 5“ = 44 mod 97 .
После того как пользователи обменяются открытыми ключами, каждый из
них может вычислить общий секретный ключ:
246
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
К = (УвГА mod 97 = 44” = 75 mod 97 ,
К = (УА)*‘ mod 97 = 50м = 75 mod 97 .
Имея {50, 44}, противнику не удастся с легкостью вычислить 75.
На рис. 6.17 представлен простой протокол, в котором применяются вычис-
ления в соответствии си схемой Диффи-Хеллмана. Предположим, что пользова-
тель А собирается установить связь с пользователем В и использовать секретный
ключ, чтобы шифровать сообщения, передаваемые с помощью такой связи.
Пользователь А может генерировать одноразовое секретное значение Хл , вычис-
лить значение ¥д и отослать последнее пользователю В. В ответ пользователь В
генерирует секретное значение Хд, вычисляет Y, и посылает У„ пользователю
А Оба пользователя могут теперь вычислить общий ключ. Необходимые откры-
тые значения q и а должны быть известны заранее. Пользователь А может так-
же выбрать эти значения на свое усмотрение и включить их в первое сообщение-
Для примера другой возможности использования алгоритма Диффи-Хеллмана
рассмотрим некоторую группу пользователей (например, всех пользователей ло-
кальной сети) и предположим, что каждый из этих пользователей должен сгене-
рировать секретное значение Хл для долгосрочного применения и вычислить
открытое значение Уд . Все полученные таким образом открытые значения вме-
Глобальные открытые элементы
q Простое число
а а < q и а — первообразный корень q
Вычисление ключа пользователем А
Выбор секретного Хд Хл < q
Вычисление открытого Уд У„ = mod q
Вычисление ключа пользователем В
Выбор секретного Х„ Х„ < q
Вычисление открытого ¥ У„ = a*s mod q
Вычисление секретного ключа пользователем А
К = (Ya)z* mod q
Вычисление секретного ключа пользователем В
К = (Уд )х" mod q
Рис 6.16. Алгоритм обмена ключами по схеме Диффи-Хеллмана
6.4. ОБМЕН КЛЮЧАМИ ПО СХЕМЕ ДИФФИ-ХЕЛЛМАНА
247
Пользователь А
Пользователь В
Рис. 6.17. Обмен ключами по схеме Диффи Хеллмана
сте с глобальными открытыми значениями q и а сохраняются централизованно в
некотором каталоге. В любой момент пользователь В может получить Доступ к
открытому значению пользователя А, вычислить секретный ключ и использо-
вать его для пересылки шифрованного сообщения пользователю А, Если центра-
лизованно хранящийся каталог надежен, то этот форма коммуникации обеспе-
чивает как конфиденциальность, гак и определенную степень аутентификации.
Поскольку только пользователи А и В могут определить ключ, другой пользова-
тель не может прочитать сообщение (конфиденциальность). Получатель А знает,
что только пользователь В мог создать сообщение, используя этот ключ
(аутентификация). Однако такая схема не защищена от атак на основе воспроиз-
ведения сообщений.
6.5. Криптогра^^^иото^ова?1ие^ллигпиТ^ски^
кривых
Большинстве продуктов и стандартов, в которых для шифрования и цифровых
подписей применяется метод криптографии с открытым ключом, базируется на
алгоритме RSA Как мы уже убедились, число битов ключа, необходимое для на-
дежной защищенности RSA, за последние годы резко возросло, что обусловило со-
ответствующий рост загрузки систем в приложениях, использующих RSA, Это по-
родил < множество проблем, особенно для узлов, специализирующихся на элек-
тронной коммерции, где требуется зашита большого числа транзакций. Совсем
недавно появился подход, который может конкурировать с RSA — это криптогра-
фия на основе эллиптических кривых (ЕСС — Elliptic curve cryptography). Уже
сейчас предпринимаются попытки стандартизации этого подхода, что, например,
отразилось в стандарте IEEE Pl363 по криптографии с открытым ключом.
Привлекательность подхода на основе эллиптических кривых в сравнении с
RSA заключается в том. что с использованием эллиптических кривых обеспечива-
ется эквивалентная защита при очень небольшом числе разрядов, вследствие чего
уменьшается загрузка процессора. В то же время, хотя теория криптографии с ис-
248
ГЛАВА б КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
пользованием эллиптических кривых у всех на слуху уже в течение достаточно
долгого времени, только недавно начали появляться продукты, представляющие
интерес для криптоанализа на предмет наличия соответствующих слабых мест.
Таким образом, степень доверия к методам криптографии с использованием эл-
липтических кривых еще не настолько высока, как степень доверия к RSA.
Объяснить методы криптографии с использованием эллиптических кривых
значительно труднее, чем объяснить RSA или алгоритм Диффи-Хеллмана, по-
этому полное математическое объяснение первых выходит за рамки этой книги.
Но в этом разделе все же представлены основы использования эллиптических
кривых и криптографии с их применением.
Эллиптические кривые
Эллиптические кривые — это не эллипсы. Они так называются просто пото-
му, что описываются кубическими уравнениями, подобными тем, которые ис-
пользуются для вычисления кривой эллипса. В общем случае кубические урав
нения для эллиптических кривых имеют вид
у‘ + аху + by = х* + сх* 4 dr + е ,
где а, Ь, с, d, и е являются действительными числами, удовлетворяющими неко-
торым простым условиям. Определение эллиптической кривой включает также
некоторый элемент, обозначаемый О и называемый несобственным элементом
(а также бесконечным элементам, или нулевым элементом), смысл которого мы
выясним позже. Такие уравнения называются кубическими, или уравнениями
третьего порядка, поскольку в них наивысший показатель степени равен 3. Два
примера эллиптических кривых показан^ на рис. 6.18. Как вы можете видеть,
представленная формула иногда порождает кривые весьма странного вида
Из пределения эллиптической кривой, можно вывести следствие: если три
точки эллиптической кривой лежат на прямой линии, то их суммой есть О. Из
этого определения вытекают следующие правила операции сложения над точка-
ми эллиптической кривой.
1. Объект О выступает в роли нулевого элемента при сложении. Так, О = -О
и для любой точки Р на эллиптической кривой Р + О = Р.
2. Вертикальная линия пересекает кривую в двух точках с одной и той же коор-
динатой х — скажем, Р, = (х. у) и Ра = (х, -у). Эта линия пересекает кривую
и в бесконечной точке. Поэтому Р, + Р, + О = О и Р, = -Р3. Таким образом,
точкой со знаком “минус’’ является точка с той же координатой х, но с проти-
воположной по знаку координатой у. Это правило отражено на рис. 6.18.
3. Чтобы сложить две точки Q и R с разными координатами х, проведите че-
рез эти точки прямую и найдите третью точку пересечения Р, этой пря-
мой с эллиптической кривой. Легю- показать, что существует только одна
такая точка (если прямая не является касательной к кривой в какой-либо
из точек Q и R — в таком случае нужно положить Р, = Q или Р, = R со-
ответственно). Затем нужно воспользоваться тем, что Q + Я + Р, = О следо-
вательно Q + R = -Р,. Эта конструкция тоже показана ня рис. 6.18.
4. Чтобы удвоить точку Q, проведите касательную в точке Q и найдите дру-
гую точку пересечения S. Тогда Q + Q = 2Q - -S.
6.5. КРИПТОГРАФИЯ С ИСПОЛЬЗОВАНИЕМ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
249
,к>ган«я
Рис 6.18. Примеры эллиптических кривых
Вышеприведенные правила сложения подчиняются всем обычным свойствам
сложения, например коммутативному и ассоциативному законам. Умножение
точки Р эллиптической кривой на положительное целое число k тоже определе-
но — как вы могли уже догадаться, это сумма k копий точки Р. Так,
2Р = Р + Р, ЗР^Р+Р + Ри т.д.
Эллиптические кривые над конечными полями
В случае криптографии с использованием эллиптических кривых приходится
иметь дело с редуцированной формой эллиптической кривой, которая определя-
ется над конечным полем. Особый интерес для криптографии представляет объ-
260
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
ект, называемый эллиптический группой по модулю р, где р является простым
числом. Такая группа определяется следующим образом. Выберем два неотрица-
тельных целых числа, а и Ь, которые меньше р и удовлетворяют условию
4а’ + 27b’(mod р) * 0.
Тогда ЕДа, Ь) обозначает эллиптическую группу по модулю р, элементами
которой (х, у) являются пары неотрицательных целых чисел, которые меньше р
я удовлетворяют условию
у* = х* + ах + b (mod р) (6.1)
вместе с точкой в бесконечности О
Например, пусть р = 23. Рассмотрим эллиптическую кривую у’ = х* + х +1. В
этом случае а»6=1 и мы имеем 4х Г +27 хГ(той 23) = 8 ? 0, что удовлетво
ряет условиям эллиптической группы по модулю 23.
Обратите внимание на то, что уравнение в предшествующем абзаце то же, что
и на рис. 6.18(6). На рисунке показана непрерывная кривая, точки которой за
даются значениями, удовлетворяющими указанному уравнению. Для эллиптиче-
ской группы рассматриваются только целые значения от (0, 0) ди (р, р) в квад-
ранте неотрицательных чисел, удовлетворяющих уравнению по модулю р. В
табл. 6.4 представлены точки (отличные от О), являющиеся элементами
Еи(1,1). В общем случае такой список создается по следующим правилам.
1. Для каждого такого значения х, что 0 < х < р, вычисляется
х* т ах + b (mod р).
2. Для каждого из полученных на предыдущем шаге значений выясняется,
имеет ли это значение квадратный корень по модулю р Если нет, то в
Ег(а, Ь) нет точек с этим значением х. Если же корень существует, имеет-
ся два значения у, соответствующих операции извлечения квадратного
корня (исключением является случай, когда единственным таким значе-
нием оказывается у = 0). Эти значения (х, у) и будут точками ЕДа, Ъ).
Правила для сложения в ЕДа, Ь) соответствуют неметрическим приемам,
показанным на рис. 6.18. Формально эти приемы для всех точек Еда, Ъ) могут
быть записаны следующим образом
Таблица 6.4. Точки Еи(1,1) на эллиптической кривой
(0,1) (6,4) (12,19)
(0,22) (6, 19) (13,7)
(1,7) (7,11) (13,16)
(116) (7,12) (17,3)
(3,10) (9.7) (17,20)
(3,13) (9,16) (18.3)
(4,0) (П.З) (18,20)
(5,4) (11,20) (19,5)
(5,19) (12,4) (19.18)
в.б. КРИПТОГРАФИЯ С ИСПОЛЬЗОВАНИЕМ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
261
1. Р + О = Р.
2. Если Р = (х, у), то Р + (х, -у) = О. Точка (х, -у) является отрицатель-
ным значением точки Р и обозначаетс я -Р. Заметим, что (х, -у) лежит на
эллиптической кривой, что можно доказать графически (см. рис. 6.18(6)),
и принадлежит Ер(о, Ъ). Например, в случае Еы(1,1) для Р = (13, 7) мы
имеем -Р = (13, -7). Но -7 mod 23 = 16 Таким образом, ~Р = (13, 16), что
мы видим и в Еа(1,1). ;
3 Если Р » (Xt, yt) и Q = (х., у2), где Р * Q , то P+Q=(x>ty3) определяется
в соответствии с правилами
х, з А’ - х, - х2 (mod р),
у, S Я(х, - х,) - у, (mod р),
где
—- — , если Р * Q,
х,-х,
Зх,' + а о „
------.если Р = Q.
2у,
Рассмотрим два примера, взятых из [JURT97], Пусть Р = (3, 10) и Q = (9, 7).
Тогда
А = = — = — = 11 mod 23,
9-3 6 2
х, = 11*-3-9 = 109 = 17 mod 23,
у, = 11(3 - (-6)) -10 = 89 20 mod 23.
Поэтому Р + Q = (17, 20). Чтобы найти 2Р, найдем
^Mbl = ±=l = 6mod23,
2 л 10 20 4
= 6’- 3- 3= 30 = 7 mod 23,
= 6(3- 7)-10 = -34^12 mod 23,
У,
и поэтому 2Р = (7, 12).
Еще раз напомним, что умножение определяется как повторное применение
операции сложения, например 4P-P + P + P-tP.
Эллиптические кривые и криптография
Операция сложения в криптографии на основе эллиптических кривых явля-
ется аналогом операции умножения по модулю простого числа в RSA, а много-
кратное повторное сложение — аналогом возведения в степень. Чтобы построить
криптографическую систему, используя эллиптические кривые, нужно найти
“трудную проблему”, соответствующую разложению на множители произведения
двух простых чисел или дискретному логарифмированию.
Рассмотрим уравнение Q = kP, где Q, Ре Е„(а, Ь) и k <р. Относительно легко
вычислить Q по данным k и Р, но относительно трудно определить k, имея Q и Р.
252
ГЛАВА 6 КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
В этом разделе мы опишем два подхода к использованию эллиптических кри-
вых в криптографии, чтобы вы оценили применяемую здесь технику.
Аналог обмена ключами по схеме Диффи-Хеллмана
Обмен ключами с использованием эллиптических кривых может быть выпол-
нен следующим образом. Сначала выбирается простое число р - 2и параметры
а и Ъ для эллиптической кривой в уравнении (6.1). Это задает эллиптическую
группу точек Е.(а, б). Затем в Е/а, Ъ) выбирается генерирующая точка
G = (х,, у,). При выборе G важно, чтобы наименьшее значение п, при котором
nG = О. оказалось очень большим простым числом. Параметры Е,(а. Ь) и G
криптосистемы являются параметрами, известными всем участникам.
Обмен ключами между пользователями А и В можно провести по следующей
схеме.
1. Сторона А выбирает целое число пА, меньшее п Эго число будет личным
ключом участника А. Затем участник А генерирует открытый ключ
РА = лА х G . Открытый ключ представляет собой некоторую точку из Е„(а, б).
2. Точно так же участник В выбирает личный ключ тц и вычисляет откры-
тый ключ Ре.
3. Участник А генерирует секретный ключ К = п* х Рв, а участник В генери-
рует секретный ключ К = пА х РА.
Две формулы в п. 3 дают один и тот же результат, поскольку
пА х Р„ = nA хG) = х(лА х G) = th х РА.
Чтобы взломать эту схему, противник должен будет вычислить k по данным
G и feG, что предполагается трудным делом.
В качестве примера4 возьмем р= 211, Е,(0,-4) (что соответствует кривой
у1 = х' - 4 ) и G = (2, 2). Можно подсчитать, что 241G = О. Личным ключом
пользователя А является пА = 121, поэтому открытым ключом А будет
Рд= 121(2, 2) = (115, 48). Личным ключом пользователя В является п„ = 203,
поэтому открытым ключом участника В будет 203(2, 2) — (130, 203). Общим
секретным ключом является 121(130, 203) = 203(115, 48) = (161, 169).
Обратите внимание на то, что общий секретный ключ представляет собой па-
ру чисел. Если этот ключ предполагается использовать в качестве сеансового
ключа для традиционного шифрования, то из этой пары чисел необходимо гене-
рировать одно подходящее значение. Можно, например, использовать просто ко-
ординату х или некоторую простую функцию от х.
Шифрование/дешифровдние с использованием эллиптических кривых
В специальной литературе можно найти анализ нескольких подходов к шиф
рованию/дешифрованию, предполагающих использование эллиптических кри-
вых. В этом разделе мы рассмотрим, пожалуй, наиболее простой из этих подхо-
дов. Первой задачей в рассматриваемой системе является шифрование открытого
текста сообщения т, которое должно будет пересылается в виде значения х - у
g
Предложен Эдом Шейфером (Ed Schaefer) из Университепа Санта-Кларе
6.5. КРИПТОГРАФИЯ С ИСПОЛЬЗОВАНИЕМ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
253
для точки Р„ . Здесь точка Р„ будет представлять шифрованный текст и впо-
следствии будет дешифроваться. Обратите внимание, что мы не можем закоди-
ровать сообщение просто координатой х или у точки, так как не все такие коор-
динаты имеются в Ер(а, Ь) (см., например, табл. 6.4;. Опять же, существует не-
сколько подходов к такому кодированию, но мы их рассматривать не будем —
для наших целей достаточно просто отметить, что имеются относительно прямые
методы, которые могут быть здесь применены.
Как и в случае системы обмена ключами, в системе шифрова-
ния/дешифрования в качестве параметров тоже рассматривается точка G и эл-
липтическая группа ЕДа, b). Пользователь А выбирает личный ключ п, и гене-
рирует открытый ключ Р* = пд х G . Чтобы зашифровать и послать сообщение
Р. пользователю В, пользователь А выбирает случайное положительное целое
число k и вычисляет шифрованный текст С., состоящий из пары точек
С, = {AG, Р„ + АРД.
Заметим, что сторона А использует открытый ключ стороны В: Р„, Чтобы
дешифровать этот шифрованный текст, В умножает первую точку в паре на сек-
ретный ключ В и вычитает результат из второй точки:
Р. + АРВ - ^(AG) = Р. + kin^G) - rh(kG) = Р..
Пользователь А замаскировал сообщение Р„ с помощью добавления к нему
kP„. Никто, кроме этого пользователя, не знает значения k, поэтому, хотя Р„ и
является открытым ключом, никто не сможет убрать маску АРВ. Однако поль-
зователь А включает в сообщение и ‘‘подсказку”, которой будет достаточно, что-
бы убрать маску тому, кто имеет личный ключ п,. Противнику для восстанов-
ления сообщения придется вычислить А по данным G и kG, что представляется
трудной задачей.
В качестве примера подобного шифрования (он взят из [KOBL94]) рассмотрим
случай р = 751, ЕД-1,188) (что соответствует кривой у' = х’-х + 188) и
G = (0, 376). Предположим, что пользователь А собирается отправить пользова-
телю В сообщение, которое кодируется эллиптической точкой Р, =(562, 201), и
что пользователь А выбирает случайное число k “ 386. Открытым ключом В яв-
ляется Рв = (201,5). Мы имеем 386(0,376)= (676,558) и (562,201) +
386(201, 5) = (385, 328). Таким образом, пользователь А должен послать шифро-
ванный текст {(676, 558), (385, 328)).
Безопасность криптографии с использованием эллиптических кривых
Безопасность, обеспечиваемая криптографическим подходом на основе эллип-
тических кривых, зависит от того, насколько трудной для решения оказывается
задача определения k по данным АР и Р. Эту задачу обычно называют проблемой
логарифмирования на эллиптической кривой, Наиболее быстрым из известных
на сегодня методов логарифмирования на эллиптический кривой является так
называемый p-метод Полларда (Pollard). В табл. 6.5 сравнивается эффективность
этого метода и метода разложения на простые множители с помощью решета в
поле чисел общего вида. Как видите, по сравнению с RSA в случае применения
методов криптографии на основе эллиптических кривых примерно тот же уро-
вень защиты достигается со значительно меньшими значениями длины ключей.
254
ГЛАВА 6 КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
К тому же при равных длинах ключей вычислительные усилия, требуемые при
использовании HSA и криптографии на основе эллиптических кривых, не сильно
различаются [JLJRI97], Таким образом, в сравнении с RSA при равных уровнях
защиты явное вычислительное преимущество принадлежит криптографии на ос-
нове эллиптических кривых с более короткой длиной ключа.
Таблица 6.5. Вычислительные усилия, необходимые для криптоанализа при
использовании эллиптических кривых и RSA
Размер hWiM я MIPS-ГОДЫ РаiMt-p ключа MIPS-ГОДЫ
150 3,8х1О10 512 3x10'
206 7,1X10“ 768 2x10’
234 1,6 x10я 1024 3x10"
1280 а Л t 1 х 10”
1536 3x10”
2048 3x10”
а) Логарифмирование на эллиптической кривой с помощью р-мел ода Полларда б) Разложение на множители в целых числах с помощью метода решета в
поле чисел общего вида
6.6. Рекомендуемые источники дополнительной
информации
Литература по шифрованию, рекомендованная в главе 3, в равной мере по-
дойдет не только для изучения методов традиционного шифрования, но и мето
дов шифрования с открытым ключом.
В (DIFF86] имеется подробное описание нескольких попыток разработки защи-
щенных алгоритмов шифрования с двумя ключами и постепенной эволюции исполь-
зующих эти алгоритмы протоколов. Всесторонний обзор современного состояния
криптографии с открытым ключом содержится в |NECH92], Хорошим исследовани-
ем по данному вопросу является книга [SALO96J. [CORM9U] обеспечивает сжатый, но
достаточно полный и понятный обзор основных алгоритмов, раскрывающих крипто-
графические, вычислительные и криптоаналитические аспекты RSA.
Превосходное представление криптографии на основе эллиптических кривых
вы найдете в [MENE93J. Хорошие, но более краткие обсуждения данного вопроса
имеются также в [KLJMA98], [STIN95] и [KOBL94],
ССКМ90 Соггпеп, Т , Leisetson, С . Rivest, R Introauction to Algorithms. Cambndge MA:
Mil Piess, 1990.
DIFFBc Diffie, W “The First Ten Years of Public-Key Cryptography’’ Proceedings ol the
IEEE May 1988. Имеется также a [SIMM92]
KOBL94 Koblitz. N A Course in Numoer Theory ano Cryptography New York: Spnnger-
Veriag,1994
в б. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
255
KUMA98 Kumandun R Romero C Humber Theory with Computer Applications Hpper
Saddle Rivei, NJ Prentice Hall 1998
MENE93 Menezes, A. Elliptic Curve Public Key Cryptosystems Boston- Kluwer Academic
Publishers, 1993
NECH92 Nechvatal, J "Public Key Cryptography” Cm [SIMM92|
SAL096 Salomaa,A Public-Key Cryptograpny New York, Springer Verlag, 1996
SIMM92 Simmons G , ea Contemporary Cryptology: 1 he Science of Information integrity
Piscataway NJ IEEE Press, 1992.
STIN95 Stinson, D Cryptography: Theory and Practice. Boca Raton, FL. CRC Press, 1995.
6.7. Задачи
1. Еще до появления конкретных использующих открытые ключи схем
(таких как, например, RSA) было получено доказательство того, что шиф
рование с открытым ключом возможно теоретически. Рассмотрим функ
ции f,(x,) = z,, £(х„рг) = л2, fa(x,,y2) = za, где все значения являются це-
лыки числами и 1 < х„ у,, z, < N . Функция f, может быть пределавленг
вектором Ml длиной в котором k-A элемент представляет значение
f,(ft). Точно так же fa и С, могут быть представлены соответственно мат-
рицами М2 и М3 размера N xN. Целью в данном случае является пред-
ставление процесса шифрования/дешифрования таблицами поиска с иченк
большими значениями N. Такие таблицы должны быть практически нево
обраэимо огромными, ни, в принципе, возможными. Эта схема работав!
следующим образом. Путем случайной перестановки всех целых чисел от 1
до N, т.е. каждое целое должно быть представлено в Ml только один ра:
создается Ml. М2 строится так, чтобы каждая строка содержала случай
ную перестановку первых N целых чисел. Наконец, заполняется М3, при
чем так, чтобы удовлетворялось следующее условие:.
^(f^(f,(ft), р), ft) = р для всех таких ft, р, что 1 < ft, р < N,
Другими словами,
• MJ получает на вход ft и дает на выходе х.
• М2 получает на вход х и р и дает на выходе г.
• М3 получает на вход г и ft и дает на выходе р.
Эти три таблицы, однажды созданные, являются открытыми для всех.
• Должно быть ясно, что М3 можно построить так, чтобы удовлетворя
лось предыдущее условие. Для примера заполните М3 в следующем
простом случае.
5 2 3 4 1
4 2 5 1 3
1 3 2 4 5
3 1 4 2 5
2 5 3 4 1
256
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
• Соглашения. В Ml элемент с номером i соответствует k = i. В М2 строка
с номером 1 соответствует х = i, а столбец с номером } соответствует
р = ;. В М3 строка с номером i соответствует г = i, а столбец с номером
j соответствует k = j.
• Опишите схему применения этих таблиц при шифровании и дешифрова-
нии сообщений в случае обмена данными между двумя пользователями.
• Докажите, что такая схема является защищенной.
2. Опишите шифрование и дешифрование с помощью алгоритма RSA подобно
тому, как показано на рис. 6.6. для следующих значений параметров.
• р = 3; р = 11, d = 7; М = 5.
• р = 5; q = 11, е = 3; М = 9
• р = 7; q = 11, е = 17; М = 8.
* р = 11; q = 13, е = 11; М » 7.
• р - 17, q “ 31, е = 7; М =2.
Указание. Дешифрование здесь является не столь сложным, как вы ду-
маете. Используйте некоторую хитрость
3. В криптосистеме с открытым ключом, использующей RSA. вы перехвати-
ли шифрованный текст С = 10, посылаемый пользователю, открытым
ключом которого является е = 5, л = 35. Что в данном случае является
открытым текстом М7
4. В использующей RSA системе открытым ключом некоторого пользователя
является е = 31, п - 3599. Что будет личным ключом этого пользователя?
5. Если при использовании алгоритма RSA после выполнения небольшого
числа операций повторного шифрования снова получается исходный от-
крытый текст, что может быть наиболее вероятный причиной этого?
в. Предположим, имеется набор блоков, зашифрованных с помощью алго-
ритма RSA, но нет соответствующего им личного ключа. Пусть п = рд, е
является открытым ключом. Предположим также, что кто-то утверждает,
что ему известно, что один из блоков открытого текста и п имеют общий
делитель. Дает ли это какую-либо реальную помощь в данном случае?
7. В использующей RSA схеме шифрования с открытым ключом каждый
пользователь имеет открытый ключ е и личный ключ d. Предположим,
что некоторый пользователь узнает, что тайна его личного ключа каким-то
образом раскрыта. Но вместо генерирования нового модуля сравнения, он
решает сгенерировать новые открытый и личный ключи. Насколько это
безопасно?
8. “Я хочу сообщить Вам, Холмс, — торжественно сказал доктор Ватсон, —
что ваши последние исследования в области сетевой защиты сильно повы-
сили мой интерес к криптографии. И вот буквально вчера я обнаружил
способ, открывающий возможность применения ленты однократного ис-
пользования на практике”.
6.7. ЗАДАЧИ
257
“Вы так думаете? — лицо Холмса утратило сонный вид. — Значит, Вы
нашли способ получения криптографически стойких последовательностей
детерминированными методами, так?”
“Именно так, Холмс. И идея очень проста. Для данной односторонней функ-
ции F я генерирую длинную псевдослучайную последовательность элемен-
тов, применяя F к некоторой стандартной последовательности аргументов.
Предполагается, что криптоаналитик знает F и знает общий принцип по-
строения последовательности, которая может быть даже такой простой, как
S. S + 1, S + 2, ..., но не знает секретною значения S. Благодаря односто-
ронней природе F никто не сможет восстановить S по данному F(S + i) с не-
которым I. Так что, если даже кому-то и удастся каким-либо образом полу-
чить часть этой последовательности, он не сможет определить остальное”
“Боюсь, Ватсон, что ваше предложение не без изъянов, и по крайней мере
на F должны быть наложены некоторые дополнительные условия. Рас-
смотрим, например, функцию шифрования в RSA вида F(M) = Мк mod N ,
где К является секретным. Считается, что эта функция односторонняя, но
я не рекомендовал бы использовать ее, например, с последовательностью
АГ = 2, 3, 4, 5. 6....”
“Но почему, Холмс? — доктор Ватсон, очевидно, не понимал. — Почему
вы считаете, что получаемая в результате последовательность 2* mod N ,
3* mod А , 44 mod А ... не годится для применения в качестве ленты одно-
кратною использования, если К сохраняется в тайне?"
“Потому, что ода по крайней мере частично прогнозируема, дорогой Ват-
сон, даже если К сохраняется в тайне. Вы сказали, что криптоаналитик
знает F и знает общий принцип построения последовательности. Теперь
предположим, что он как-то смог получить небольшой сегмент выходной
последовательности. Среди криптоаналитиков такое предположение счита-
ется вполне реальным. А для нашей выходной последовательности знание
всего двух первых элементов позволит ему предсказать достаточно много
последующих, если не все, так что эта последовательность не может счи
татъся криптографически стойкой И чем более длинным будет известный
сегмент, тем больше элементов можно предсказать. Посмотрите, зная об-
щую природу последовательности и первые два элемента 21 mod N и
3Л mod N , вы можете легко вычислить следующие элементы...”
9. Покажите, как можно представить алгоритм RSA с помощью матриц Ml,
М2, М3 из задачи 6.1.
10. Рассмотрите следующую схему.
• Выбирается нечетное число Е.
• Выбирается два простых числа Р и Q так, чтобы (Р - 1)(Q - 1) - 1 де-
лилось на Е.
• Значение Р умножается на Q, чтобы в результате получить N.
_ „ (Р - 1XQ - 1ХЯ -1) +1
• Вычисляется D =------------—--------.
Е
258
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
Является ли эта схема эквивалентной RSA? Обоснуйте свой ответ.
11. Рассмотрите следующую схему, с помощью которой В шифрует свое со-
общение для А.
• Сторона А выбирает два больших простых числа Р и Q, которые долж-
ны быть также взаимно простыми с (Р - 1) и (Q - 1).
• Сторона А объявляет N = PQ своим открытым ключом.
- Сторона А вычисляет такие Р' и Q', что РР' = 1 (mod Q -1) и
W = ) (mod Р -1).
• Сторона В шифрует сообщение М как С = Af"(niod N).
• Сторона А находит М с помощью решения М sCp(modQ) и
М = C°(mod Р).
• Объясните, как работает эта схема.
• Чем она отличается от RSA?
• Есть ли реальные преимущества у RSA по сравнению с этой схемой?
• Покажите, как эта схема может быть представлена с помощью матриц
Ml, М2, М3 из задачи 6.1.
12. “Это действительно интересное дело, Ватсон, — сказал Холмс. — Молодой
человек полюбил девушку, и она полюбила его тоже. Однако ее отец явля-
ется весьма странным субъектом, требующим, чтобы претендующий на
роль его зятя человек разработал простой защищенный протокол, исполь-
зующий подходящую криптосистему с открытым ключом, чтобы он мог
применять этот протокол в компьютерной сети своей компании. Молодой
человек представил следующей протокол обмена данными между двумя
сторонами, например, когда пользователь А намеревается послать сообще-
ние М пользователю В (пересылаемые сообщения имеют формат [имя от-
правителя, текст, имя получателя]).
• Пользователь А посылает пользователю В сообщение (А, ЕКЩ,[М, А], Е).
• Пользователь В подтверждает получение этого сообщения, возвращая
(В, E^JM, В], А).
Как видите, протокол очень прост. Но отец девушки утверждает, что мо-
лодой человек не удовлетворил его требование простоты протокола ввиду
того, что предложение молодого человека содержит определенную избы
точность и может быть приведено к следующему простому виду.
• Пользователь А посылает пользователю В сообщение (А, Екиь[М], В).
* Пользователь В подтверждает получение этого сообщения, возвращая
(В. Е„..[М], А).
На основании этого отец девушки отказывается разрешить своей дочери
выйти замуж за этого молодого человека, делая таким образам их обоих
несчастными. Этот молодой человек только что был у меня здесь с прось-
бой о помощи.”
6.7. ЗАДАЧИ
269
“Хм-м, я не вижу возможности помочь ему”, — Ватсон был заметно огор
чен мыслью о том, что симпатичному молодому человеку придется забыть
о своей любви.
“Ну, я то как раз думаю, что я смогу ему помочь Вы знаете, Ватсон, из-
быточность иногда бывает полезна, чтобы гарантировать защиту протоко-
ла. Как раз упрощение, которое предложил отец девушки, могло сделать
новый протокол уязвимым по отношению к такому типу атак, которому
оригинальный протокол мог противостоять. — размышлял Холмс. — Да,
так оно и есть, Ватсон! Смотрите, все, что нужно противнику, — это быть
одним из пользователей сети и иметь возможность перехватывать сообще-
ния, идущие от пользователя А к пользователю В и обратно. Будучи поль-
зователем сети, он будет иметь свой открытый ключ шифрования и смо
жет посылать свои собственные сообщения пользователям А или В, а так-
же получать их сообщения. С упрошенным протоколом он может получить
сообщение М, которое пользователь А отправил пользователю В, исполь-
зуя следующую процедуру..."
13 Вот еше одна реализация алгоритма быстрого возведения в степень. По-
кажите, что она эквивалентна реализации, показанной на рис. 6.7.
* d f- 1; Т е- а; Е <- b
• if otld(e) then d <- dxT
• Ee-[E/2j
• Te-TxT
• if E > 0 then goto 2
* output d
14. Рассмотрите схему Лиффи Хеллмана с общим простым числом q = 11 и
первообразным корнем а = 2.
• Если пользователь А имеет открытый ключ Ул = 9, то каким будет
личный ключ пользователя А, ХА ?
• Если пользователь В имеет открытый ключ Ya = 3 , то каким будет их
общий секретный ключ К?
15. “Но, — заметил доктор Ватсон, — ваши клиенты используют в своей се-
ти протокол обмена ключами по Диффи и Хеллману. Этот протокол осно-
ван на том, что дискретное логарифмирование, как известно, считается
трудной проблемой, не так ли?”
“Да, Ватсон, — кивнул головой Холмс, — при соответствующем выборе
параметров проблема дискретного логарифмирования действительно ока-
зывается трудной. Мои клиенты знают это, и именно потому они выбрали
этот метод распределения ключей. К сожалению, из консультанты не
осознавали, что активный противник часто может быть более успешным,
чем пассивный. Противник тоже знает, что он не может решить проблему
дискретного логарифмирования за реальное время, поэтому ему придется
пробовать что-нибудь другое. А поскольку я уверен, что сам Мориарти не-
посредственно заинтересован в том. чтобы следить за перепиской моих
260
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
клиентов, я должен предполагать, что будет предпринята попытка актив-
ной атаки их сети. Мориарти не может оставаться пассивным, Ватсон”.
“Вы думаете, Холмс, — удивленно воскликнул доктор Ватсон, — что этот
Мориарти может найти способ взломать схему обмена ключами Диффи-
Хеллмана?”
“Ох, это не так трудно, Ватсон, — улыбнулся Холмс. — Все, что Мориарти
нужно, — это найти место в линии связи, где он сможет не только пере-
хватить, но и изменять все сообщения. Я уверен, что Мориарти на это
вполне способен. Находясь в таком месте, он будет .."
16. Рассмотрите эллиптическую кривую Е,,(1, 6), т.е. кривую, заданную
уравнением у1 = х1 + х + 6 и модулем сравнения р - 11. Определите все
точки Е„(1, 6). Подсказка. Начните с вычисления значений правой части
уравнения для всех значений х.
17. Для случая Е„(1, 6) рассмотрите точку (? = {2, 7). Вычислите числа, крат-
ные G, начиная от 2G и заканчивая 13(7 включительно.
18. Эта задача поясняет алгоритм шифрования/дешифрования с использова-
# нием эллиптических кривых по схеме, представленной в разделе 6.5. Па-
раметрами криптосистемы являются Е„(1,6) и G = (2, 7). Секретным
ключом пользователя В является п. = 7 .
• Найдите открытый ключ пользователя В, Рь.
• Пользователь А намеревается зашифровать сообщение Р„ = (10, 9) и вы-
бирает случайное значение k = 3. Определите шифрованный текст С„ .
• Запишите формулы, с помощью которых пользователь В восстанавли-
вает Р, из С„ .
19. В 1985 году Т. Эль-Гамаль (Т. ElGamal) предложил схему с открытым
ключом, основанную на использовании дискретных логарифмов и очень
близкую к схеме Диффи-Хеллмана. Как и в случае схемы Диффи-
Хеллмяна, глобатьными элементами схемы Эль-Гамаля являются простое
число q и число а — первообразный корень q. Пользователь А выбирает
личный ключ ХА и вычисляет открытый ключ У,, как в схеме Диффи-
Хеллмана. Пользователь А шифрует предназначенный для пользователя В
открытый текст М < q следующим образом.
• Выбирается такое случайное целое число й, что 1 < ft < q - 1.
• Вычисляется К = (YB)‘(mod q).
• Текст М шифруется, как пара целых чисел (С,, Са), где С, = a‘(mod q),
С, = ХМ (mod q).
Пользователь В восстанавливает открытый текст следующим образом.
• Вычисляется К - (С,)х"(mod q).
* Вычисляется М = (CtK l) mod q .
Покажите, что эта система работает; т.е., что процедура дешифрования
действительно восстанавливает открытый текст
6 7. ЗАДАЧИ
261
20. Рассмотрите схему Эль-Гамаля с общим простым числом q = 71 и пер
образным корнем а = 7.
• Если пользователь В имеет открытый ключ YB = 3, а пользователь
выбирает случайное целое число k *= 2, то каким будет шифрованн
текст для М = 30?
* Если теперь пользователь А выберет другое значение k, так что сообх
ние М = 3U будет кодироваться как С = (59, Сг), то каким при этом
дет иелое число Са ?
21. Усовершенствуйте алгоритм Р1 из дополнения 6А.
• Разработайте алгоритм, требующий 2л умножений и n + 1 сложен
Подсказка, х"' = х‘ х х.
* Разработайте алгоритм, требующий всего п + 1 умножение и п -
сложение. Подсказка. Р(х) = Ос + х х д(х), где gfx) является многоч
ном степени (п - 1).
1,А.' Сложность
Центральное место в системе оценок устойчивости алгоритма шифрования
отношению к криптоанализу занимает количество времени на выполнение анал1
заданного типа. Обычно нельзя быть уверенным, что рассматриваемый тип ана.
за представляет наиболее эффективное направление атаки на алгоритм. Сад
большее, можно сказать, что для данного алгоритма, анализ требует усилий, ср
нимых с величинами определенного порядка. Потом можно сравнить порядок эт
величин со скоростями современных процессоров или процессоров прогнозирует
го будущего, чтобы уценить уровень защиты конкретного алгоритма.
Общей мерой эффективности алгоритма является его временная сложное
Говорят, что временная сложность алгоритма есть f(n), если для всех п и вс
входных значений длины п выполнение алгоритма занимает не более f(n) шал
Таким образом, для данного размера вводимых данных и данной скорости щ
цессора временная сложность алгоритма определяет верхнюю границу време
его выполнения.
Здесь остается некоторая неясность. Во-первых, нет строгого определения п
га. Шаг может означать одну операцию в машине Тьюринга (Turing), одну 1
манду процессора, одну команду языка высокого уровня и т.д. Однако эти р
личные определения шага должны быть связаны простым умножением на к<
станты. Для очень больших значений п эти константы не являются важный
Важным оказывается то, как быстро растет относительное время выполнена
Например, если мы решаем вопрос об использовании 50-разрядного (п = 1С
или 100-разрядного (л =10‘м) ключа для RSA, совсем необязательно (а может
вообще невозможно) знать, сколько в точности времени потребуется на то, что'
взломать ключ каждой конкретной длины. Нам нужны, скорее, границы диат
зона, в котором находится оценка соответствующих усилий, и знание того, i
кие дополнительные усилия потребуются в случае ключа большей длины.
262
ГЛАВА 6 КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧС
Второй проблемой является то. что, вообще говоря, мы не можем выписать
точную формулу для f(n). Мы можем только аппроксимировать ее. Но опять же,
прежде всего мы заинтересованы в оценке скорости изменения f(n) для очень
больших п.
При характеристике временной сложности алгоритмов полезным в этом кон-
тексте оказывается имеющееся в математике стандартное понятие, известное как
‘О-болыпое”. Его формальное определение имеет следующий вид: £(п) = O(g(n))
тогда и только тогда, когда существует два таких числа а и М, что
| £(п) | < а х | g(n) |, п > М . (6.2)
Рассмотрим пример использования этого понятия. Предположим, что нам не-
обходимо оценить многочлен общего вида
Р(х) = а,х" + а„ ,х"* + + а>х + о0.
Следующий бесхитростный алгоритм взят из [POHL81J:
algorithm Pl;
и, i, j: integer; x, polyval: real;
a, S: array [0 .100] of real;
begin
read(x, n);
for i = 0 upto n do
begin
S[i] 1; readlali]);
for j 1 upto i do S|i] x x S[i];
S|i] :- a]!] x S[i]
end;
polyval := 0;
for i := 0 upto n do polyval = polyval + S[i];
write ( value at', x, 'is', polyval)
end.
В этом алгоритме каждое подвыражение оценивается отдельно. Каждое S[l]
требует (i + 1) операций умножения; 1 умножений, чтобы вычислить Sit] и од-
но — чтобы умножить на а[/]. Вычисление всех п членов требует
£(^1) = (га + 2)(п + -)
i-о 2
операций умножения. Выполняется также (п 4-1) операций сложения, которые
мы можем игнорировать ввиду относительно значительно большего числа умно-
жений. Таким образом, временной сложностью этого алгоритма будет f(n) =
(п + 2)(л + 1 )/2- Теперь покажем, что f(n) = О(п’). В соответствии с определени-
ем мы собираемся показать, что уравнение (6.2) будет выполняться для
g(n) = п’,а = 1иА4=4. Докажем это, применяя индукцию по п. Соотношение
выполняется для п « 4, так как (4 + 2X4 +1)/2 - 15 < 4J = 16 . Теперь предполо-
жим, что оно выполняется для всех значений п вплоть до k, т.е.
(fe + 2)(ft 4 1) / 2 < k1 . Тогда для п « k + 1 будем иметь
ДОПОЛНЕНИЕ 6А. СЛОЖНОСТЬ АЛГОРИТМОВ
263
(п 2)(n т 1) _ (A + 3j(fe т2)
2 2
= (fe + 2)(fc + l)+fe + 2
2
5 k* + k + 2
< k1 + 2k + 2 = (Л + I)1 = n*.
Таким образом. результат оказывается правильным и для п. — k + 1.
Вообще говоря, с помощью понятия “О-большое” выделяется и учитывается
слагаемое, имеющее наиболее быстрый рост. Например
1. О(ахт + Зх’ + sin(x)) = О(ах’) = О(хт).
2. О(е“+ал“‘) = О(е").
3. 0(л!+л“) = О(л!).
С понятием “О-большое” связано много интересных свойств и не менее инте-
ресных обобщений. Заинтересованные читатели могут найти .дно из .лучших из-
ложений соответствующей теории в [GRAH94].
Говорят, что алгоритм с вводимым значением длины п является
линейным, если время его выполнения есть О(п);
полиномиальным, если время его выполнения есть О(л') для некоторой
константы t;
экспоненциальным, если время его выполнения есть O(iht'") для некото-
рой константы t и некоторого многочлена h(n).
В общем случае проблема, которая может быть решена за полиномиальное
время, считается разрешимой, тогда как любая оценка для времени, худшая по-
линомиальной — а тем более экспоненциальная — означает практическую не-
разрешимость задачи. Но этими терминами нужно пользоваться с осторожно-
стью. Вг первых, при достаточно малых длинах вводимых значений даже очень
сложные алгоритмы «называются разрешимыми. Предположим, например, что
вы имеете систему, которая может выполнять 10" операций за единицу време-
ни. В табл. 6.6 показаны длины вводимых значений, которые могут быть обра-
ботаны за единицу времени для алгоритмов различной сложности. Для алгорит-
мов экспоненциального или факториального времени выполнения могут обраба-
тываться вводимые значения только очень малой длины. '
Таблица 6.6. Порядок усилий, требующихся при разных уровнях сложности
Сложность Длина вводимого значения Число операций
log, Л 210“ = Ю3"10" 10й
п 10" 10"
п* 10" 10”
п‘ 103 10"
2" 28 10“
п! 15 10“
264
ГЛАВА 6. КРИПТОГРАФИЯ С ОТКРЫТЫМ КЛЮЧОМ
Второй момент, который следует здесь учитывать, — Это то, в каких терми-
нах характеризуется ввод. Например, сложность криптоанализа алгоритма шиф-
рования можно охарактеризовать и в терминах числа возможных ключей, и в
терминах длины ключа. Например, для DES число возможных ключей равно
2Л, а длина ключа равна 56 битам. Если “шагом” считать одно шифрование, а
число возможных ключей равно N' - 2", то временная сложность этого алгорит-
ма будет линейной в терминах числа ключей — О(п), и экспоненциальной в тер-
минах длины ключа — 0(2").
ДОПОЛНЕНИЕ 6А. СЛОЖНОСТЬ АЛГОРИТМОВ
265
ГЛАВА 4
Введение в теорию
чисел
Дьявол сказал Даниелю Вебстеру. “Поставьте мне задачу, которую
я не смогу выполнить, и я дам вам все. что вы пожелаете".
Даниель Вебстер “ Докажите, что для п , превышающих 2,
уравнение а' т Ь" = с' не имеет нетривиальных решении в це
лых числах".
Они договорились встретиться через три дня. и Дьявол исчез.
К концу третьего дня Дьявол появился снова, он нервно покусы-
вал губы, выглядел изможденным и расстроенным. Даниель Веб
стер спросил его: “Ну, и каковы ваши успехи в решении моей
задачи? Вы доказали теорему?"
“Что? Н нет., нет. я не смог доказать ее"
“Значит, я могу иметь все. что только пожелаю? Деньги, пре
зидентство?
“Что? Ах, да, конечно... Но послушайте/ Если бы мы могли до-
казать следующие две леммы..."
Клифтов Фэйднмэн (Clifton Fadlman). Математическая смесь
(Mathematical Magpie)
Для разработки алгоритмов шифрования с открытым
ключом используется целый ряд понятий теории чи-
сел. В этой главе мы представляем краткое объясне-
ние тех из них, с которыми вы могли встретиться при чте-
нии других глав книги. Читатели, для которых эта тема не
является новой, могут данную главу пропустить.
Понятия и методы теории чисел являются совершенно
абстрактными, и их часто довольно трудно понять интуи-
тивно без использования примеров [RUB197b]. Поэтому
данная глава изобилует примерами, представленными здесь
затененными блоками текста.
|7.1. Простые и взаимно простые числа
Главным объектом теории чисел являются простые числа — им посвящены це-
лые книга (см., например, [К1ВЕ96]). В этом разделе мы представляем краткий
обзор соответствующих вопросов, имеющих отношение к теме данной книги.
Делители
Говорят, что Ь, отличное от нуля, делит а, если а = mb для некоторого т, где
а, b и т являются целыми числами. Таким образом, b делит а. если при делении
не получается остатка. Для обозначения того факта, что b делит а, часто исполь-
зуется запись b | а Если b | а , то b называют также делителем а.
Положительными делителями числа 24, цапример, являют-,
ся числа 1, 2, 3, 4, 6, 8, 12 и 24.
Имеют место следующие соотношения.
• Если а 11, то а = ± 1.
Если б | а и а | b , то а =
• Любое Ь, отличное от нуля, делит О.
Если b | g u b [ fy , то b [ (mg + nh) для произвольных целых тип.
Чтобы убедиться в истинности последнего утверждения, обратите внимание
на следующее;
если b | g , то g имеет вид g = Ь X g, для некоторого целого g,,
если b | h , то h имеет вид g = Ь х Л, для некоторого целого Л,,
поэтому
mg + nh = mhg, + nbht = bx (mg, + лЛ,),
следовательно, b делит mg + nh.
b = 7, g = 14, h « 63, m = 3, n = 2
7|14 и 7163. Требуется доказать, что 7|(3 х 14 + 2 х 63).
Мы имеем (3 X 14 + 2 х 63) = 7(3 х 2 +- 2 X 9).
Теперь очевидно, что 71(7(3 х 2 + 2 х 9)), Як*
Простые числа
Целое число р > 1 называется простым, если его делителями являются только
числа ±1 и ±р Простые числа играют основную роль в теории чисел и в ее мето-
дах, обсуждаемых в данной главе.
В*табл. 7 1 представлены все простые числа, не превышающие 2000.
В этом разделе, если это не будет оговорено особо, мы предполагаем иметь дело только с це-
лыми неотрицательными числами Исиользоваиие отрицательных целых чисел не вносит в
рассмотрение существенных отличий.
7.1. ПРОСТЫЕ И ВЗАИМНО ПРОСТЫЕ ЧИСЛА
267
268 ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
Таблица 7.1. Простые числа, не превышающие 200П
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293
307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397
401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499
503 509 521 523 541 547 557 563 569 571 577 587 593 599
601 607 613 617 619 631 641 643 647 653 659 661 673 677 683 691
701 709 719 727 733 739 743 751 757 761 769 773 787 797
809 811 821 823 827 829 839 853 857 859 863 877 881 883 887
907 911 919 929 937 941 947 953 967 971 977 983 991 997
1009 >013 1019 1021 1031 1033 1039 1049 1051 1061 1063 1069 1087 1091 1093 1097
1103 1109 1117 1123 1129 1151 1153 1163 1171 1181 1187 1193
1201 1213 1217 1223 1229 1231 1237 1249 1259 1277 1279 1283 1289 1291 1297
1301 1303 1307 1319 1321 1327 1361 1367 1373 1381 1399
1409 1423 1427 1429 1433 1439 1447 1451 1453 1459 1471 1481 1483 1487 1489 1493 1499
1511 1523 1531 1543 1549 1553 1559 1567 1571 1579 1583 1597
1601 1607 1609 1613 1619 1621 1627 1637 1657 1663 1667 1669 1693 1697 1699
1709 1721 1723 1733 1741 1747 1753 1759 1777 1783 1787 1789
1801 1811 1823 1831 1847 1361 1867 1871 1873 1877 1879 1889
1901 1907 1913 1931 1933 1949 1951 1973 1979 1987 1993 1997 1999
Любое целое число а > 1 может быть разложено на множители и единствен-
ным способом представлено в виде
а = Р?Р?-Р?,
где р, < р, < ... < р, являются простыми числами, и где каждое а > 0 .
91 = 7 х 13, 11011 = 7 х 112 х 13.
Для дальнейшею обсуждения нам будет полезно также следующее немного
отличное от приведенного выше представление числа. Если Р обозначает множе-
ство всех простых чисел, то любое положительное целое число может быть един-
ственным способом записано в форме
а = ] | р*' , где все ар 2 0
f
В этой формуле выражение справа от знака равенства означает произведение
по всем возможным простым числам р. Для каждого конкретного значения а
большинство значений показателя ар будет равно О
3600 = 2* х 3* х 52.
Значение любого положительного целого числа может быть однозначно зада-
но простым перечислением всех ненулевых показателей в предыдущей формуле.
Целое число 12 можно представить как {а2 = 2, а3 - 1}.
Целое число 18 можно представить как = 1, а3 = 2}.
Умножение двух чисел эквивалентно сложению значений соответствующих
показателей:
k = тп —> = т, + п„ для всех р
k - 12 X 18 = 216,
k3 = 2 + 1 = 3, k3 = 1 + 2 = 3,
216 = 2* х 3*.
Что же тогда означает а | b 7 Любое целое число вида р' может делиться
только на целое число, которое является степенью того же простого числа р с
показателем, не превышающим А, т.е на р' с j < k. Таким образом,
а\Ь —» а, < Ь, для всех р.
а = 12, b = 36, 12;36, 12 = 22 х 3, 36 - 2а х За,
а3 = 2 = Ь;,
а3 = 1 < 2 = Ь3.
Взаимно простые числа
Мы будем использовать запись gcd(a, б) для обозначения наибольшего общего
делителя чисел а и Ь. Говорят, что положительное целое число с является наи-
большим обшим делителем чисел а и Ьг если
1. с является делителем а и Ь.
2. Любой делитель а и b является делителем с.
7 1 ПРОСТЫЕ И ВЗАИМНО ПРОСТЫЕ ЧИСЛА
269
Эквивалентным этому оказывается следующее определение,
gcd(a, b) = max [Л таких, что k ' а и k | b ].
Поскольку требуется, чтобы наибольший общий делитель был положитель
ным, мы имеем; gcd(a, b) = gcd(a, -b) = gcd(-a, b) = gcdf-a, -b). Вообще
gcd(a, б) = gcd([a|, ]Ь|).
g cd (.60,24) “ gcd(6O, -24) = 12.
А поскольку все ненулевые целые числа делят О, мы имеем также gcd(a, 0) = |о|.
Легко определить наибольший общий делитель двух положительных целы>
чисел, если эти числа представлены в виде произведения простых множителей.
300 = 22 х З1 х 52,
18 = 2’ х З2,
gcd(18. 300) = 21 х З1 X 5° = 6.Ж
В обшем случае
А = gcd(a, б) —> А, = minta,., br) для всех р.
Определение простых множителей больших чисел является непростой зада-
чей, так что представленное выше соотношение не дает непосредственной прак
тической возможности вычислить наибольший общий делитель двух чисел. Мы
вернемся к обсуждению этого вопроса в разделе 7.5.
Целые числа а и Ь являются взаимно простыми, если они не имеют общих
простых делителей, т.е. если их единственным общим делителем является 1.
Другими словами, а и Ь являются взаимно простыми, если gcd(a, />) = 1.
Числа 8 и 15 являются взаимно простыми, поскольку делителями числа
ft являются 1, 2, 4 и 8, а делителями числа 15 — 1, 3, 5 и 15, так что 1
оказывается единственным числом, присутствующим в обоих списках. '
Для любого положительного целого числа п и любого целого а при делении а
на п мы получим некоторое целое частное q и остаток г, удовлетворяющие соот-
ношению
а - qn + г, 0<г<п;д=|п/л],
где |xj обозначает наибольшее целое число, не превышающее х.
Рис 7.1 Соотношение а = qn + г; 0 <г < п
270
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
Как показано на рис. 7.1, для заданного а и положительного п всегда можно
найти q и г, удовлетворяющие вышеприведенному соотношению. В представле-
нии целых чисел на числовой оси а оказывается некоторой точкой на этой оси
(на рисунке показан случай положительного а, но подобное изображение можно
представить и для отрицательного а). Начиная от значения О. рассматриваются
значения п, 2п и так далее вплоть до такого дп , что дп < а и (д + 1)л > а . Рас-
стояние от qn до а равно г, и, таким образом, уникальные значения q и г оказы-
ваются найденными. Остаток г часто называют вычетом
а = 11; п = 7;
а = -11; ‘ п = 7;
11 = 1 х 7 + 4;
-11 =(-2x7 + 3;
г = 4.
г = 3.
Если а является целым, ап — положительным целым, то a mod л определя-
ется как остаток от деления а на л. Таким образом, для любого целого числа а
можно записать
а = [а / л I х п + (а mod п).
Ц11 mod 7 = 4; -11 mod 7 = 3.
Го!орят, что два целых числа а и b являются сравнимыми по модулю л, если
(a mod n) = (b mod л). Это записывается в таком виде: а = b mod л .
73 н 4 mod 23; 21 = -9 mod 10.
Обратите внимание на то, что если а = 0 mod п , то п | а .
Операция сравнения по модулю имеет следующие свойства.
1. а в. Ь mod л , когда л | (а - б).
2 Из (а mod л) = (б mod л) следует а б rood п .
3. Из а = b mod л следует b = a mod л .
4. Из a s б mod п и b = с mod л следует а я с mod п .
Если вы хотите убедиться и истинности первого из этих свойств, обратите
внимание, что из соотношения п [ (а - б) следует, что (а - b) = kn для некоторого
k. Поэтому а = b + fen. Таким образом, (a mod л) = (остаток от деления b + ftn на
л) = (остаток от деления b на л) = (b mod л).
23 = 8 (mod 5), потому что
-11 s 5 (mod 8), потому что
81 = 0 (mod 27), потому что
23 - 8 - 15 = 5 х 3;
-11 - 5 =-1G = 8 х (-2);
81 - 0 = 81 = 27 X 3.
Остальные сы.Йства доказываются так же легко.
Операции арифметики п классах вычетов
Заметим, ч-пэ, по определению (см. рис. 7.1J, при сравнении по модулю п
множество всех целых чисел отображается во множество {0, 1, ..., (л - 1)}. При
этом возникает вопрос: можно ли определить арифметические операции в рам-
ках данного множества? Оказывается, можно, и соответствующий набор опера-
ций называется арифметикой в классах вычетов.
7.2. АРИФМЕТИКА В КЛАССАХ ВЫЧЕТОВ
271
Операции арифметики в классах вычетов обладают следующими свойствами
1. [(a mod и) + (b mod n)] mod л = (а + b) mod п
2. [(а mod и) - (Ь mod n)] mod л = (а - b) mod л .
3. [(а mod л) х (6 mod n)] mod л = (а х b) mod л
Докажем, например, что выполняется первое из этих свойств. Пус
(«х mod п) = г, и (a mod л) = гА. Тогда а = г. + jn для некоторого целого числа j
b = r„ + kn для некоторого целого числа k. Поэтому
(а + b) mod л = (ra + jn + гА + Агл) mod л
= (га 4- гь + (у + А)л) mod л
= (га + rbj mod л
= [(а mod л) + (b mod л)] mod л.
Остальные свойства доказываются так же легко. Вот несколько примере
иллюстрирующих указанные три свойства:
11 mod 8 = 3, 15 mod 8 = 7;
[(11 mod 8) + (15 mod 8)] mod 8 = 10 mod 8 = 2,
(11 + 15) mod 8 = 26 mod 8 = 2;
[(11 mod 8) - (15 mod 8)] mod 8 = —4 mod 8 = 4,
(11 - 15) mod 8 = -4 mod 8 = 4;
[(11 mod 8) x (15 mod 8)] mod 8 = 21 mod 8=5,
(11 x 15) mod 8 = 165 mod 8 = 5.
Возведение в степень выполняется с помощью повторного умножения, как и
обычной арифметике. (Более подробно о возведении в степень мы поговорим
разделе 7.7.)
Чтобы найти 117 mod 13. будем действовать следующим образом:
II2 = 121 $ 4 mod 13,
II4 = 47 = 3 mod 13,
1Г а 11x4x3 = 132 = 2 mod 13.
Итак, правила выполнения обычных арифметических операций — сложени
вычитания и умножения — можно применять и в арифметике классов вычетов
В табл. 7.2 представлены сложение и умножение в классах вычетов по модуль
8. В случае сложения все выглядит довольно просто и соответствующая мат
рица имеет регулярную структуру. Как и в случае обычного сложения, каж
дый элемент в классах вычетов имеет аддитивный обратный, или противопо
ложный (отрицательный), элемент. В нашем примере противоположным дл1
числа х будет такое число у, что х + у = 0 mod 8. Чтобы определить аддитив
ное обратное для значения в самом крайнем столбце слева, найдите в соответ
ствующей строке значение 0 Число в самом верху соответствующего столбца I
будет аддитивным обратным. Например, 2 + 6=0 mod 8. Так же просто ис
пользуется таблица для умножения. В обычной арифметике каждое значент
имеет мультипликативное обратное или просто обратное значение. В арифме
тике по модулю 8 мультипликативным обратным числа х является такое чис
272
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕ
ло у, что х ху = 1 mod 8. Поэтому, чтобы определить мультипликативное о :-4
ратное числа с помощью таблицы, найдите в соответствующей данному числу-
строке значение 1. Число в самом верху соответствующего столбца и будет
мультипликативным обратным. Например, 3x3=1 mod 8. Заметим, что не
все числа по модулю 8 имеют мультипликативные обратные — мы обсудим
это немного позже.
Свойства арифметики в классах вычетов
Пусть Z„ обозначает множество всех неотрицательных целых чисел, которые
меньше п:
Z. = {0,1,. ,(п-1)].
Это множество называют еще множеством вычетов (остатков) по модулю п.
Для арифметических операций по модулю п в этом множестве выполняются сле-
дующие свойства.
Свойстве Выражение
Коммутативные законы (и; + х) mod n = (х + w) mod n , (mxx) mod n = (xxu>j mod n
Ассоциативные законы [(w + x) + y] mod n - [w + (x + i/)] mod n, [(u> xx)xp] mod re = [wx(xxp)] mod n
Дистрибутивный закон [(w x x) x y] mod n = [(u> x x) x (x x y)J mod n
Тождества (0 + w) mod n = w mod n, (1 x x) mod n = w mod n
Ддлитиьиый "орзтпый (~U>) Для любого w e Z, существует такое г, что щ + г = 0 mod п
7.2 АРИФМЕТИКА В КЛАССАХ ВЫЧЕТОВ
273
Существует одна особенность арифметики в классах вычетов, которая делает
ее отличной от обычной арифметики. Заметим сначала, что, как и в обычной
арифметике, имеет место следующее свойство.
если (а + b) = (а + с) mod п , то b = с mod п . (7.1)
(5 + 23) s (5 + 7) mod 8; 23 = 7 mod 8
Свойство (7.1) согласуется с существованием аддитивного обратного. Приба-
вив к обеим частям равенства (7.1) аддитивное обратное элемента а, получим
((-а) + а + Ь) = ((-а) + а + с) mod п,
b = с mod п,
Однако следующее утверждение выполняется только при указанном условии:
если (а х Ъ) в (а х с) mod п, то b = с mod. п
при условии, что аил взаимно просты. (7.2)
Чтобы понять это. рассмотрим пример, когда данное условие не выполнено;
6х 3 = 18 = 2 mod 8,
6 х 7 = 42 « 2 mod 8.
Однако 3*7 mod 8. зИН11ВНЯНМНИНМ1
Причиной такого странного результата является то, что для произвольного мо-
дуля сравнения п в результате умножения чисел от 0 до (п - 1) на множитель а не
получается полного набора всех вычетов, когда а и и имеют общие множители
При а = 6 и п = 8 имеем;
Ze 0 1 2 3 - Л" 4 "V" л
Умноженное на 6 0 6 12 18 24 30 36 42
Остаток 0 б 4 2 0 б 4 2
Поскольку мы не получаем в данном случае полного набора вычетов после
умножения на 6, в один класс вычетов отображается более одного элемента Zt.
В частности, б х О mod 8=6x4 mod 8, 6 х 1 mod 8 = 6x5 mod 8 и т.д. Та-
ким образом, поскольку при данном отображении несколько элементов пере-
водится в один, операция умножения не предполагает существования единст»
венного обратного.
Но вот если взять а = 5 и п = 8, то получим
Z, 0 1 2 3 4 5 6 7
Умноженное на 5 0 5 10 15 20 25 30 35
Остаток 0 б 2 7 4 1 6 3
Теперь строка остатков содержит все возможные значения из класса Z8,
но в ином порядке.
274
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
Наконец, заметим, что если р является простым, то все элементы Zp будут
взаимно простыми с р. Это дает нам возможность добавить еще одно свойство к
тем, которые были приведены выше:
Мультипликативный обратный (иг') Для любого т е 2„ существует такое а,
что и х г s 1 moi р
В связи с тем что w и р являются взаимно простыми, при умножении каждо-
го элемента Zp на w будет получен набор всех элементов множества Zp в не-
сколько измененном порядке Поэтому по крайней мере один из остатков будет
иметь значение 1 Таким образом, Найдется некоторое число в Zp , при умноже-
нии которого на w получается значение 1, Это число и будет мультипликатив-
ным обратным для ш, обозначаемым W*. Итак, свойство (7.2) согласуется с су-
ществованием мультипликативного обратного. Умножая обе части равенства
(7.2) на мультипликативное обратное значения а, получаем
((а1) к а х Ь) ((а"’) х а х с) mod п,
b = с mod п.
Окончательное заключение: некоторые (но не все) целые числа будут иметь
мультипликативные обратные, даже если модуль сравнения не является про-
стым числом. В частности, если gcd(a, п) — 1, можно найти такое значение b в
Z„ , что а х h = 1 mod п Аргументацию здесь можн» привести ту же, что и в
предыдущем разделе. Поскольку а и п являются взаимно простыми, при умно-
жении всех элементов Z„ на а, результирующее множество остатков будет
включать все элементы Z„ в другом порядке- Поэтому и найдется некоторое та-
кое значение b в Z„ , что а х b = 1 mod п .
В табл. 7.3 приведен пример, иллюстрирующий понятия,
рассматриваемые в данном разделд|£Н9НИНИИВНИШ
Теоремы Ферма и Эйлера играют очень важную роль в криптографии с от-
крытым ключом.
Теорема ферма
Теорема Ферма гласит: если р является простым и а является положитель-
ным целым числом, которое не делится р, то
a'"’ = 1 mod р . (7.3)
Доказательство. Мы уже знаем, что если все элементы Zp умножить на а ио
модулю р, то в результате получатся все элементы Z„ в некоторой перестановке.
Кроме того, ахО s 1 mod р. Поэтому набор (р - 1) чисел (a mod р, 2а mod р.
(р - 1) mod р} представляет собой гот же набор чисел {1, 2, (р - 1)) в ином по-
рядке. Перемножим все эти числа.
а х2а х...х((р - l)a) s [(a mod р)х(2а mod р)х...х((р - Ija mod р)] mod р
= (р -1)! mod р.
7.3. ТЕОРЕМЫ ФЕРМА И ЭЙЛЕРА
275
Но
а х2а х.. . х ((р - ])а) = (р - 1)! а₽ 1.
Поэтому
(р -1)! ар 1 = (р - 1)! mod р .
0 0 —
1 6 1
2 5 4
3 4 5
4 3 2
5 2 3
6 1 6
(в) Аддитивные и мультипликативные обратные по.модулю 7
Здесь мы можем сократить на (р - 1)1, поскольку это значение и р являются
взаимно простыми (см. (7.2)). Отсюда вытекает формула (7.3).
а = 7. р= 19,
7® = 49 » 11 mod 19,
74 ЗЕ 121 = 7 mod 19,
7® = 49 = 11 mod 19,
7м е 121 s 7 mod 19,
д'” 1 = 71в = 710 х 7г = 7 х 11 = 1 mod 19
Альтернативная формулировка теоремы тоже может оказаться полезной: если
р является простым и а является положительным целым числом, то
ар s a mod р . (7-4)
276
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
p = 5. a = a, 3 = 243 = 3 mod 5,
P = Дн^ДО^ХД,.,S^IQ.OQQP-.s
Функция Эйлера
Прежде чем представить теорему Эйлера, необходимо определить одну важ-
ную функцию, используемую в теории чисел и называемую функцией Эйлера.
Она обозначается символом 0(л) и представляет собой число положительных це-
лых значений, которые меньше п и являются взаимно простыми с п.
В табл. 7.4 представлено 30 перзых значений 0(п). Значение 0(1) оказывается
при этом неопределенным,
Таблица 7.4. Некоторые значения функции Эйлера ф(п)
п #п)
1 1
2 1
3 2
4 2
5 4
6 2
7 0
8 4
9 6
10 4
Я <Яп)
11 10
12 4
13 12
14 0
16 8
10 8
17 16
18 6
19 18
20 8
п «Кв)
21 12
22 10
23 22
24 8
25 20
26 12
27 18
28 12
29 28
30 8
Ясно, что для простого р
ф(р) = р~1.
Теперь предположим, что имеется два простых числя р и q. Тогда для п = рд
получим
р(п) = ф(рд) = ф(р) х ф(д) = (р -1) х (q -1).
Чтобы увидеть это, рассмотрим множество значений Z,., представляющее со-
бой {0, 1..(pq - 1)}. Значениями, не являющимися взаимно простыми с п, бу-
дут значения множеств (р, 2р, ..., (q - 1)р} и {<?, 2q, ..., (р - 1 )<?}, а также 0. Со-
ответственно имеем
p(n) = py-[(g-l) + (p-l) + l]
= ру - (р + </) + 1
= (р-1)х(д-1)
= 0(Р)Х0(7),
К©(2ТУ -12 = W3) х 0(3) = 2 х 6 = (3 - 1) х (7 - 1), и эти 12 целых чисел
образуют множество (1, 2, 4, 5, & 10, 11, 13, 16, Ц, 18, 20}.
7.3, ТЕОРЕМЫ ФЕРМА И ЭЙЛЕРА
277
Теорема Эйлера
Теорема Эйлера утверждает, чти для любых взаимно простых чисел а и л
a’1"1 Elmodn. <7-5>
а = 3, п = 10, 0(10) - 4, З4 - 81 s 1 mod 10,
а = 2, п = 11. 0(11) = 10, 210 = 1024 а 1 mod И.
Доказательство. Равенство (7.5) верно, если л является простым, так как в
таком случае 0(л) = (л -1) и выполняется теорема Ферма. Однако то же самое
равенство выполняется и для любого целого числа п вообще Напомним, что
0(п) равно числу положительных целых значений, меньших п и взаимно про-
стых с л. Рассмотрим множество таких целых чисел, пронумеровав их следую-
щим образом.
R = {х„ хг,..., х0(в)).
Теперь умножим каждый элемент этого множества на а по модулю л.
S = {(ах, mod л), (ах2 mod л),.. , (ax^,ft, mod л)).
Приведенное выше множество представляет перестановку элементов множест-
ва R по следующим причинам.
1. Поскольку а, как и х,, является взаимно простым с л, ах, тоже должно
быть взаимно простым с л. Таким образом, все элементы S являются це-
лыми числами, меньшими л и взаимно простыми с л.
2 Во множестве S нет повторений. Посмотрите на утверждение (7.2). Если
ах, mod л - ах, mod л , то х, = xt. Поэтому
♦и) «(")
П(ях- mod л) = £ | х, ,
1 i=i
Пах-
i-1
>(")
а“п)+ fjx!
= ]~J X; (mod л) ,
<=i
*<«)
= J~|x. (mud л),
I-1
а*(п' = 1 (mod л).
Полезной оказывается и следующая альтернативная формулировка теоремы:
a*("w s a (mod л). <7-6)
Из теоремы Эйлера можно вывести следствие, с помощью которого демонст-
рируется эффективность алгоритма RSA. Для любых двух простых чисел р и q и
целых чисел п = pq и т (здесь 0 < т < п) выполняется следующее условие.
т^1 = „c-ixf-m: = m mod п . (7.7)
Если gcd(m, л) = 1, т.е. если тип являются взаимно простыми, то указанное
условие выполняется в силу теоремы Эйлера (см. выражение (7.5)). Предполо-
жим, что gcd(m, л) * 1. Что это означает? Поскольку п = pq, равенство
gcd(m, л) = 1 эквивалентно логическому выражению [(лг не кратно р) И (т не
кратно </)]. Если тл кратно р, то т и п имеют общий простой множитель р и по-
278
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
этому не будут взаимно простыми, а если т кратно q, то т и п имеют общий
простой множитель q и поэтому не будут взаимно простыми. Таким образом,
выражение gcd(/n, п) * 1 оказывается эквивалентным отрицанию вышеуказанно-
го логического выражения. Поэтому gcd(m, п} х 1 эквивалентно логическому
выражению [(т кратно р) ИЛИ (т кратно <j)J.
Рассмотрим случай, когда т кратно р, так что т = ср для некоторого поло-
жительного целого числа с. В этом случае мы должны иметь gcd(m, л) = 1, по-
скольку иначе т кратно р, т кратно q и т < рд. Если gcd(m, л) = 1, то приме-
нима теорема Эйлера, и поэтому
лп s 1 mod q .
Во по правилам арифметики в классах вычетов
п '* f' al mod q ,
m *'n) = 1 mod q .
Поэтому найдется такое целое числч- k, что
тф<"> = 1+ kg.
Умножив обе части этого равенства на т = ср, получим
zn = т + kcpq = т + йсп ,
/п*(п)+1 е т mod п. .
Подобный ряд аргументов используется для случая, когда т является крат-
ным д. Таким образом, равенство (7.7) оказывается доказанным. Полезной будет
и следующая альтернативная форма того же следствия:
j s 1 mod n ,
m^Elmodn, (7,8‘
отЫ(п)И = = m mod „
как проверить, ли число простым
К сожалению, не существует доступных и в то же время эффективных средств,
позволяющих выяснить, является ли простым произвольное большое число. В этом
разделе мы представляем один из наиболее удачных подходов к решению подобной
задачи. Но сначала необходимо сформулировать определенные теоретические резуль-
таты, которые потребуются в дальнейшем. Вот первый из них.
Если р является нечетным простым числом, то уравнение
х’ - 1 (mod р)
имеет только два решения: х в 1 и х в -1.
Доказательство. Имеем
х1 -1 я О (mod р),
(х + 1)(х -1) а О (mod р).
7.4 КАК ПРОВЕРИТЬ, ЯВЛЯЕТСЯ ЛИ ЧИСЛО ПРОСТЫМ
279
По правилам арифметики в классах вычетов последнее равенство требует,
чтобы р делило либо (х + 1), либо (х - 1), либ- и то, и другое. Предположим,
что р делит и (х + 1), и (х - 1), Тогда (х + 1) = kp и (х - 1) = jp для некоторых
целых чисел k и j. При вычитании одного равенства из другого получаем
2 = (А - j)p. Это равенство может выполняться только для р = 2- По условию
теоремы рассматриваются только нечетные простые числа. Поэтому для любого
решения х в результате получается либо р | (х + 1), либо р | (х -1), но никак не
одновременна Предположим, что р (х - 1) . Тогда
х - 1 = кр для некоторого k.
Следовательно,
х =-1 mod р .
х = 1 mod р. Точно так же получается другое решение:
х2 ® 1 (mod 7)
Используем табл. 7.3( б):
12 = 1 mod 7,
Используем табл. 7.2(6):
I2
= 1 mod а,
б2 s 36 mod 7 = 1 mod 7, 6 в -1 mod 7, З2 = 9 mod 8 = 1 mod 8,
Решения: 1; -1.
52 = 25 mod 8 = 1 mod 8, 5 = -3 mod 8,
72 в 49 mod 8 = 1 mod 8, 7 в -1 mod 8,
Решения: 1; -1; 3; —3.
Эту теорему можно сформулировать и в противоположном виде: если сущест-
вуют решения уравнения хг =1 (mod р), отличные от ±1, то п не является про-
стым числом.
Теперь мы можем описать алгоритм проверки целых чисел на простоту, кото-
рый предложили Миллер (Miller) и Рабин (Rabin) [MILL75, RABI80]. Ядром ал-
горитма является процедура WITNESS, определяемая следующим образом.
WITNESS (а, п)
1. Пусть bkbk_,...b0 является двоичным представлением (п - 1)
2. d <—1
3. for i«— k downto 0
4. do x<- d
5. d <— (d x d) mod n
6. if d = 1 and x * 1 and x n-1
7. then return TRUE
8. if b, = 1
9. then d <- (d x a) mod n
10. if d * 1
11. then return TRUE
12. return FALSE
Входными данными алгоритма WITNESS являются число п и некоторое це-
лое число а, которое меньше п. Необходимо выяснить, является число п про-
стым или нет Если WITNESS возвращает TRUE, то и определенно не является
простым; если же WITNESS возвращает FALSE, то и может быть простым.
Сравнивая WITNESS с алгоритмом вычисления степеней чисел в арифметике
классов вычетов, представленным на рис. 6.7 (см. главу 6), мы обнаружим, что в
строках 3-9 вычисляется d, равное значению tT'lmod п . Из теоремы Ферма
280
ГЛАВА 7 ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
(выражение (7.3)) мы знаем, что а4'1 = 1 mod л , когда п — простое число. По-
этому если в результате значение d оказывается не равным 1, то п не является
простым числом и возвращается значение TRUE. Теперь рассмотрим строку 6
приведенного выше алгоритма Поскольку (п — 1) н -1 mod и , в этой строке про-
веряется, имеет ли уравнение х2 s 1 mod п решение, отличное от ±1. В силу
сформулированной выше теоремы такое решение имеется только тогда, когда п
не является простым числом. Итак, при успешном завершении теста возвраща-
ется значение TRUE.
В качестве примера снова рассмотрим рис. 6.8 (см. главу 6). В данном случае
п = 561 и а = 7. Алгоритм WITNESS обнаружит квадратный корень, отлич-
ный от ±1, на последнем этапе возведения в квадрат, поскольку 7"’80 = 67 mod
561 и 7м0 е 1 mod 561. В этот момент WITNESS возвратит TRUE.
Итак, если WITNESS возвращает TRUE, число п не является простым. Мож-
но доказать (см., например, [CORM90]), что для заданного нечетного число л,
которое не является простым, и случайно выбранного целого числа а < п веро-
ятность того, что WITNESS возвратит FALSE (т.е. будет не способен обнаружить,
что п не является простым числом), оказывается меньше., чем 0.5 Это дает воз-
можность для любого нечетного целого числа п выяснить, является ли оно про-
стым, с любой разумной степенью вероятности. Вот как это делается. Повторно
вызывается WITNESS (а. п) с различными произвольно выбранными значениями
а. Если в какой-то момент WITNESS возвращает TRUE, то считается, что число
п не является простым. Если WITNESS з раз возвратит FALSE, то вероятность
того, что п является простым, должна быть не меньше, чем 1-2' (см.
[CORM90], с. 843). Таким образом, при достаточно больших значениях з можно
быть уверенным, что и является простым.
7.5. Алгоритм Евклида
Одной из основных процедур теории чисел является алгоритм Евклида, пред-
ставляющий собой простую процедуру определения наибольшего общего делите-
ля двух положительных целых чисел. Обобщенный алгоритм Евклида определя-
ет наибольший общий делитель двух положительных целых чисел и, если эти
числа оказываются взаимно простыми, мультипликативное обратное одного из
них во модулю другого.
Поиск наибольшего общего делителя
Алгоритм Евклида опирается на следующую теорему: для любого неотрица-
тельного целого числа а и любого положительного целого числа Ь справедливо
следующее.
gcd(a, b) - ged(b, u mod М .
(7.9)
ged (55, 22) = ged (22, 55 mod 22) = ged (22JL11^1
7 5. АЛГОРИТМ. ЕВКЛИДА
281
Чтобы убедиться в этом, заметим, что d = gcd(a, b). Тогда, по определению,
ged имеем d | а и d | b. Для любого положительного целого числа b значение а
можно представить в форме
а = kb + r s г mod Ь,
a mod Ь = г .
Поэтому (a mod b) = a- kb для некоторого целого числа k. Но, поскольку
d | Ь, d делит и kb. Из условия d I а следует также d I (о mod Ь). Это доказывает,
что d является общим делителем для Ь и (a mod Ь). И наоборот, если d является
общим делителем для Ь и (a mod Ъ), то d | kb и, таким образом,
d | [kb + (a mod t>)], что эквивалентно d I а . Итак, множество общих делителей а
и Ъ совпадает с множеством общих делителей b и (a mod b). Поэтому и наи-
больший общий делитель первой пары чисел будет равен наибольшему общему
делителю второй, чти завершает доказательство.
Чтобы определить наибольший общий делитель, равенство (7.9) можно ис-
пользовать повторно.
gcd(ll, 10) = gcddO^LU^cdU, 0) = 1.
В алгоритме Евклида многократно применяется равенство (7.9) для определе-
ния наибольшего общего делителя следующим образом. В алгоритме предполага-
ется, что d > f > 0. Можно ^граничить рассмотрение только положительными
целыми числами, так как gcd(a, b) = gcd(j а |, | b |).
EUCLID(d, f)
1. X<-f: Y»—d
2. if У = 0 return X = gcd(d, f)
3. for i«- k dowmo 0
4. R = X mod Y
5. X <-Y
6. Y <—R
7. goto 2
К Чтобы найти gcd(1970, 1066), выполним следующие действия;
1970 = 1 х 1066 + 904
gcd(1066, 904)
1066 = 1 х 904 +• 162 gcd(904, 162)
904 = 5 X 162 + 94 gcd(162, 94)
162 = 1 х 94 + 68 gcd(94, 68)
94 = 1 х 68 + 26 gcd(68, 26)
68 = 2 х 26 т 16 gcd(26, 16)
26 = 1 х 16 + 10 gcd(16, 10)
16 = 1 х 10 + 6 gcd(10, 6)
lb = 1 У 6 + 4 gcd(6, 4)
6 = 1 х 4 + 2 gud(4, 2)
4 = 2 х 2 + 0 gcd(2, 0)
u___Следовательно, gcd(1970, 1066) =• 2.
282
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
Внимательный читатель может спросить, как мы можем быть уверены, что этот
процесс непременно завершится, т.е. что в какой-то момент Y будет делить X? Ес-
ли такой момент не наступит никогда, мы должны будем получить бесконечную
последовательность положительных целых чисел, в которой каждое последующее
число обязательно меньше предыдущего, а это, очевидно, невозможно.
Вычисление мультипликативного обратного
Если gcdld, /) = 1, то d имеет мультипликативное обратное по модулю f. Это
значит, что для положительного целого чиста d < f существует такое d~' < f, что
dd~l = 1 mod f. Алгоритм Евклида можно расширить так, чтобы в дополнение к
вычислению наибольшего общего делителя d и f (если наибольший общий дели-
тель оказывается равным 1) алгоритм возвращал и мультипликативное обратное d.
EXTENDED EUCLID(d, f)
1. (XI, X2. ХЗ) <- (1, 0, f); (Yl, Y2. Y3) <- (0,1, d)
2. if Y3 = 0 return X3 - gedfd, f); нет обратного
3. if Y3 = 1 return Y3 - gcd(d, f); Y2 = d 1 mod f
5. (Tl, T2, ТЗ) <- (XI - QY1, X2 - QY2, X3 - QY3)
6. (XI, X2. X3) <- (Yl, Y2, Y3)
7. (Yl, Y2, Y3) «-(Tl, T2, T3)
8. goto 2
В ходе вычислений рыполняются следующие соотношения.
fTl + dT2 = ТЗ, fXl + dX2 = ХЗ, fYl + dY2 - Y3.
Чтобы убедиться в том, что этот алгоритм возвращает правильное значение
gcd(d, /’) , заметим, что если мы отождествим X и Y из алгоритма Евклида с ХЗ
и Y3 в обобщенном алгоритме Евклида, то результат использования этих двух
переменных окажется одинаковым. На каждой итерации алгоритма Евклида X
устанавливается равным предыдущему значению Y, a Y — равным предыдуще-
му значению X mod Y. Точно так же на каждом этапе в обобщенном алгоритме
Евклида ХЗ устанавливается равным предыдущему значению Y3, a Y3 — рав-
ным предыдущему значению ХЗ минус целое частное от деления ХЗ на Y3. По-
следнее значение — это просто остаток от деления ХЗ на Y3, т.е. ХЗ mod Y3.
Заметим еще, что если gcd(d, f) -1, то на конечном этапе мы будем иметь
Y3 = 0 и ХЗ « 1. Поэтому на предыдущем этапе Y3 = 1. Но если Y3 = 1, можно
утверждать следующее.
fYl + dY2 = Y3 ,
fYl + dY2 = 1,
dY2 = 1 + (-Yl)xf ,
d"Y 2 ₽ 1 mod f.
Таким образом. Y2 является мультипликативным обратным d по модулю f.
В табл 7.5 представлены результаты примера выполнения данного алгорит-
ма. Здесь показано, что gcd(550, 1769) = 1 и что мультипликативным обрат-
ным числа 550 является оно само, т.е. 550 к 550 s 1 mod 1769,
7.5. АЛГОРИТМ ЕВКЛИДА
283
Таблица 7.5. Результаты выполнения алгоритма EX'TENDED EUCLID(55O,1769)
Q Х1 Х2 ХЗ Y1 Y2 УЗ
— 1 0 1709 0 1 550
3 0 1 550 1 -3 119
4 1 -3 119 -4 13 74
1 -4 13 74 5 -16 45
1 5 -16 45 -9 29 29
1 -9 29 29 14 -45 16
1 14 -45 16 -23 74 13
1 -23 74 13 37 -119 3
4 37 -119 3 -171 550 1
Более подробное обоснование данного алгоритма вы найдете в [KNUT97].
7.6. Китайская теорема об остатках
Одним из наиболее полезных результатов теории чисел является так называемая
китайская теорема об остатках По существу, эта теорема утверждает, что можно
восстановить целое число из определенного диапазона чисел по множеству его остат-
ков от деления на числа из некоторого набора попарно взаимно простых чисел.
Любое из десяти целых чисел в множестве Z)0(0 1, 9) может быть восста-
новлено всего по двум вычетам по модулю 2 и 5 (эти числа являются просты-
ми делителями числа 10). Например, пусть известными вычетами однозначно-
го десятичного числа х являются гг - 0 и г„ = 3, т.е. х mod 2 = 0 и
х mod 5 = 3. Тогда х является четным целым числом в множестве Z10, остаток
от делении которого на 5 равен 3. Единственным решением является х = 8.
Существует несколько формулировок китайской теоремы об остатках. Мы
представляем здесь формулировку, которая оказывается наиболее полезной с
точки зрения материала данной книги. Альтернативная формулировка рассмат-
ривается в задаче 7.13. Пусть
iW = Пт> >
где т, являются попарно взаимно простыми числами, т.е. gcd(m,, /п,) = 1 для
1 < i, j<k и I* j. Любое целое значение из множества Z„ можно представить с
помощью набора h чисел, используя следующее соответствие.
А *-* (a,. Oj, ...а»), (7.10)
где А е ZM, а, е Zmi и a, = A mod тп, для 1 < i < к.
2
Такое название данная теорема получила из-за того, что, как считается, она была открыта
китайским математиком Сунь-Цзе, доказавшим ее примерно в 100 г. до н э.
284
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
Китайская теорема об остатках утверждает следующее.
1. Отображение (7. L0) задает взаимно однозначное соответствие (называемое
биекцией) между ZM и декартовым произведением Zmi xZmj х ..xZ^ . Это
значит, что для каждого такого целого числа А, что 0 < А < М, найдется
ровно один представляющий его набор k чисел (а,, а2, ,щ), где
05 о, <т, и для каждого такого набора k чисел (alt а^, ..., аА найдется
единственное соответствующее А из множества Zw .
2. Операции, выполняемые с элементами множества Zw, имеют соответствую-
щие эквиваленты во множестве наборов к чисел, где эти операции проводятся
независимо по каждой из координат в некоторой подходящей системе.
Второе из представленных выше утверждений может быть доказано следую-
щим образом. Если
А *-> (щ, , щ), В (б;, Ь^,
то
(A + B)modAf <-> ((щ + 6,) mod/Пр (a* + fy) mod 7пя),
(A - В) mod M *-» (.(a> - ft,) mad пц,...»(щ - th,) mad nu),
(4 x B) mod M ((щ x b ) mod mt,.. , (aA x bk) mod mfc).
Давайте теперь докажем первое утверждение. Переход от А к (а>, а2,. , щ)
очевидно однозначен — необходим^ просто взять a, = A mod т,. Вычислить А по
заданному (a,, az, , щ) можно следующим образом. Пусть - М / т, для
lSi<fe. Заметим, что Af, = т, х т2х...хт, j xmitl Х...хтпА , так что
Л1, 0 (mod m,) для всех j * i. Теперь пусть
с, = М, mod т,) для 1 < i < к. (7.11)
Пи определению М, , оно должно быть взаимно простым с т, и, таким обра-
зом, иметь мультипликативное обратное по модулю т, . Поэтому равенст-
во (7.11) оказывается вполне определенным и задает уникальное значение с(.
Теперь мы можем вычислить
Asf^a.c, mod М . (7.12)
V*1 7
Чтобы показать, что значение, получаемое с помощью равенства (7.12), ока-
зывается правильным, мы должны убедиться в том, что a, = A mod m, для
1 < i < k . Заметим, что с; s М, г 0 (mod mJ, если j * i, и что с,- е 1 (mod mJ.
Отсюда следует, что at = A mod т,.
Второе утверждение китайской теоремы об остатках, касающееся арифмети-
ческих операций, непосредственно вытекает из правил арифметики в классах
вычетов.
Польза китайской теоремы об остатках определяется, а частности, и тем, что
она указывает способ выполнения арифметических операций по модулю М над
(потенциально очень большими) числами для наборов некоторых меньших по
величине чисел. Это может оказаться весьма полезным, когда М имеет, напри-
мер, 150 или еще больше разрядов.
7.6. КИТАЙСКАЯ ТЕОРЕМА ОБ ОСТАТКАХ
285
I Чтобы представить 973 mod 1813 в виде пары чисел по модулю 37 и 49, опре-
I з
5- делим
т i= 37,
*' т2 = 49,
М <= 1813,
А= 973,
Мы также имеем = 49 и Мг = 37. Используя обобщенный алгоритм Евк-
лида. вычисляем Mj 1 = 34 mod mt и М2* = 4 mod т2. (Обратите внимание на
то, что вычислить каждое М, к М," требуется только один раз.) Рассматривая
вычеты по модулю 37 и 49, получаем для нашего числа 973 представление
(11, 42), так как 973 mod 37 = 11 и 973 mod 49 = 42.
Теперь предположим, что требуется найти сумму чисел 678 и 973. Что в этом
случае необходимо сделать с (11, 42)? Сначала вычислим (678) «-> (678 mod 37,
678 mod 49) = (12, 41). Затем сложим полученные две пары чисел поэлемент-
но и выполним сравнение: (11 1- 12 mod 37, 42 + 41 mod 49) = (23, 34). Чтобы
убедиться, что это дает верный результат, вычислим
(23, 34) о cijAfiAij 1 + atMiMz* mod М
= [(23)(49)(34) + (34)(37)(4)] mod 1813
= 43350 mod 1813
= 1651
и проверим, что это в точности равно (973 + 678) mod 1813 = 1651.
Теперь умножим 1651 (mod 1813) на 73. Для этого умножим (23, 34) на 73 и
выполним сравнение, в результате чего получим (23 х 73 mod 37,
34 х 73 mod 49) = (14, 32). Легко проверить, что
(14, 32) w [(14)(49)(34) + (32)(37)(4)] mod 1813
= 865
= 1651 х 73 mod 1813.
7.7. Дискретные логарифмы
Дискретные логарифмы составляют основу целого ряда алгоритмов крипто-
графии с открытым ключом, в том числе алгоритма обмена ключами по Диффи-
Хеллману и алгоритма цифровой подписи DSA. В следующем разделе представ-
лен краткий обзор теории дискретных логарифмов. Заинтересованный читатель
найдет более подробное обсуждение темы в [ORE76] и [LEVE90].
Степень целого числа по модулю п
Напомним, что в силу теоремы Эйлера (см. сравнение (7.5)), для любых вза-
имно простых а и п выполняется соотношение
а *м = 1 mod п ,
3Этот пример предложил профессор Кен Калверт (Ken Calvert) иа Технологического института
ыт. Джорджия.
286
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
где 0(л) обозначает функцию Эйлера* значение которой равно числу положи-
тельных целых значений, меньших п и взаимно простых с п. Теперь рассмотрим
более общее соотношение
ат s 1 mud п . (7.13)
Если а и п являются взаимно простыми, то существует по крайней мере одно
целое число т, удовлетворяющее соотношению (7.13), число т - 0(п). Для наи-
меньшего из положительных т, при которых выполняется условие (7.13), ис-
пользуются следующие названия:
порядок числа а по модулю п,
показатель, которому принадлежит а по модулю л,
длина периода последовательности, генерируемой степенями а.
Чтобы убедитьс^Д5”8&стинял< ти последнего пункта, рассмотрим степени числа 7
по модулю J 9:
71 = 7 mod 19,
72 = 49 = 2 х 19 + И = 11 mod 19,
73 = 343 = 18 х 19 + 1 = 1 mod 19,
74 = 2401 = 126 х 19 4 7 = 7 mod 19,
75 = 16807 = 884 х19 + 11 = 11 mod 19.
Нет смысла продолжать вычисления дальше, поскольку последовательность
повторяется. В этом можно убедиться, заметив, что 73 = 1 (mod 19) и, таким
образом, 73'1 = 7’7' = 7’ (mod 19). Поэтому любые две степени числа 7, показа-
тели которых отличаются на 3 (или на число, кратное 3), сравнимы по моду-
лю 19 Другими словами, эта последовательность является периодической с
периодом, равным наименьшему положительному показателю т, при котором
7" = 1 (mod 19).
В табл. 7.6 представлены степени а по модулю 19 для всех положительных
а < 19. Длина последовательности для каждого из значений а указывается с
помощью затенения ячеек. Обратите внимание на следующие моменты.
1. Все последовательности заканчиваются числом 1.
2. Длина последовательности является делителем 0(19) = 18. Из этого следует,
что в каждой строке таблицы умещается целое число периодов соответст-
вующих последовательностей.
3. Некоторые последовательности имеют длину 18. В таком случае говорят,
что целое число а генерирует (своими степенями) множество всех ненуле-
вых вычетов по модулю 19. Любое из таких целых чисел называют перво-
образным KopHeMjaojaqgy^ro^^^
В общем случае можно сказать, что наивысшим из показателей, которому
может принадлежать число а по модулю л, является 0(л). Числа, принадлежа-
щие показателю Р(л), называются первообразными корнями по модулю л. Важ-
7 6. КИТАЙСКАЯ ТЕОРЕМА ОБ ОСТАТКАХ
287
посгь этого понятия эпределяется тем фактом, что, когда а является первооб-
разным корнем п, его степени
о. a2,.. ,aiM
оказываются различными по модулю п и взаимно простыми с п. В частности,
для простого числа р, если а является первообразным корнем р, то
а, а2,.... ар1
оказываются различными по модулю п. Для простого числа 19 его первообраз-
ными корнями являются числа 2, 3, 10, 13 14 и 15.
Не все целые числа имеют первообразные корни. На самом деле целыми чис-
лами с первообразными корнями будут только числа 2, 4, ра и.2рй, где р —
любое нечетное простое число.
Таблица 7.6. Степени целых чисел по модулю 19
а а2 1 а’ 1 а4 1 а& 1 а6 1 а’ 1 а” 1 а® 1 а10 1 а11 1 а12 1 а13 1 а14 1 а15 1 а10 1 а17 1 а13 1
1
2 4 8 16 13 7 14 9 18 17 15 11 3 6 12 5 10 1
3 9 8 5 15 7 2 6 1И 16 10 11 14 4 12 17 13 1
4 16 7 9 17 11 6 5 1 4 16 7 9 17 11 6 5 1
5 6 11 17 9 7 16 4 1 5 6 И 17 9 7 16 4 1
6 17 7 4 5 11 9 16 1 6 17 7 4 5 11 9 16 1
7 11 1 7 11 1 7 11 1 7 11 1 7 11 1 7 11 1
8 7 18 11 12 1 8 7 18 11 12 1 8 7 18 11 12 1
9 5 7 6 16 11 4 17 1 9 5 7 6 16 11 4 17 1
10 5 12 6 3 11 15 17 18 9 14 7 13 16 8 4 2 1
11 7 1 11 7 1 11 7 1 11 7 1 11 7 1 11 7 1
12 11 18 7 8 1 12 11 18 7 8 1 12 и 18 7 8 1
13 17 12 4 14 11 10 16 18 6 2 7 15 5 8 9 3 1
14 0 8 17 10 7 3 4 18 5 13 11 2 ' 9 12 16 15 1
15 16 12 9 2 11 13 5 18 4 3 7 10 17 8 6 14 1
10 9 11 5 4 7 17 6 1 16 9 11 5 4 7 17 6 1
17 4 11 16 6 7 5 9 1 17 4 11 16 6 7 5 9 1
18 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1 18 1
Индексы
Для обычных положительных действительных чисел логарифм является
функцией, обратной возведению в степень. Аналогичная функция существует и в
арифметике классов вычетов.
288
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
Давайте вспомним свойства обычного логарифмирования. Логарифм числа
определяется как степень, в которую нужно возвести значение определенного
положительного основания (не равного 1), чтобы получить данное число, т.е. для
заданного основания х и произвольного у
и = >
Л. •
Ниже перечислены основные свойства логарифмов.
logj(l) = 0. (7.14)
log,(x) = l, (7.15)
log, (pz) = log, (у) + log, (z) , (7.16)
log,(y') = rxlog,(p). (7.1'7)
Рассмотрим первообразный корень некоторого простого числа р (подобные ар-
гументы могут быть использованы и в случае с числами, не являющимися про-
стыми). В этом случае мы знаем, что степени числа а с показателями от 1 до
(р - 1) порождают каждое целое число от 1 до (р - 1) в точности по одному разу.
Нам также известно, что любое целое число Ь можно представить в форме
b = г mod р, где 1<г<(р~1)
в классах вычетов. Отсюда вытекает, что для любого целого числа b и любого
первообразного корня а простого числа р можно найти ровно один показатель
степени i, для которого
b = а‘ mod р . где 1 < i < (р - 1).
Значение этого показателя называют индексом числа Ъ по модулю р при осно-
вании а. Мы записываем это значение как indd P(b).
Обратите внимание на следующий момент.
Р(1) = 0 , поскольку a" mod р = 1 mod р = 1, (7.18)
inda p(o) = 1, поскольку a' mod р = а . (7.19)
Вот пример использования модуля сравнения п = 9, не являющегося простым
числом. В данном случае 0(п) — 6, и а = 2 является первообразным корнем.
Вычисляя степени числа а, получаем
2° = 1 2“ = 7
2' = 2 2s = 5 (mod 9)
2г = 4 2° = 1
23 = 8
гЭтодает нам следующую таблицу чисел с заданными индексами по модулю 9
при основании а = 2.
'* Номер' (Г- 1 2 3 4 5"
Индекс 1 2 4 8 7 5
Чтобы получить индекс числа, нужно упорядочить числа в строке остатков,
взаимно простых с числом 9.
7.6. КИТАЙСКАЯ ТЕОРЕМА ОБ ОСТАТКАХ
289
НоМГ'Р 1 2 4 5 7 8
Индекс 0 1 2 5 4 3
Теперь рассмотрим
х = а “’’о mod р ,
у = mtKj р t
ху = mod р .
Воспользовавшись правилами умножения по модулю сравнения, получим
moj р _ mod mod p)
= mod p).
Теперь применим теорему Эйлера, которая утверждает, что для любых в:
им но простых каждого а и п имеет место формула
а «•> _ j mOii п .
Любое положительное целое число г может быть представлено в вй
z = q + /гф(п). Поэтому по теореме Эйлера мы имеем
а’ = a’ mod п , если г = q mod Ф(п).
Используя это соотношение с предыдущим, получим равенство
indo p(xp) = [inda.p(x) + inda.p(y)] mod ф(р),
обобщив которое, получаем
bid<iP(pr) *= [rxindap(p)] mod ф{р).
Это указывает на аналогию между обычными логарифмами и индексами
этой причине последние часто называют дискретными логарифмами.
Имейте в виду, что однозначно дискретные логарифмы по модулю т при <
новании а определяются, только когда а является первообразным корнем т.
В табл. 7 7, данные которой получены непосредственно из табл. 7.6, показан
множество дискретных логарифмов, которые могут быть определены по мс
дулю 19. __ » ., . > т:,......
Вычисление дискретных логарифмов
Рассмотрим уравнение
у = g* mod р .
Вычисление у при заданных g, х и р является простым делом. В самом х;
шем случае придется выполнить х повторных умножений, для чего имек>1
достаточно эффективные алгоритмы. Но если заданы у, g и р, то вычисление
из указанного выше соотношения (дискретное логарифмирование) является, j
обще говоря, очень непростой задачей. По сложности эта задача сравнима с
дачей разложения больших чисел на простые множители, что требуется д
RSA. Ко времени написания этой книги сложность асимптотически наиболее б
290
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИС
строго из известных алгоритмов вычисления дискретных логарифмов по модулю
простого числа оценивалась величиной порядка
Indnp))2' ’
что для больших простых чисел оказывается за пределами практических воз-
можностей современных вычислительных средств [ВЕТН91].
Таблица 7.7. Таблицы дискретных логарифмов по модулю 19
(а) Дискретные логарифмы по модулю 19 при основании 2
а 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Ind, „(а) 18 1 13 2 16 14 6 3 8 17 12 15 5 7 11 4 10 9
(б) Дискретные логарифмы по модулю 19 при основании 3
а 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
lndJlv(a) 18 7 1 14 4 8 6 3 2 11 12 15 17 13 5 10 16 9
(в) Дискретные логарифмы по модулю 19 при основании 10
а 1 2 3 4 5 . 6 7 8 9 10 11 12 13 14 15 16 17 18
18 17 5 16 2 4 12 15 10 1 6 3 13 11 7 14 8 9
(г) Дискретные логарифмы по модулю 19 при основании 13
а 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Id 17 18
Ind„ t,(a) 18 11 17 4 14 10 12 15 16 7 6 3 1 5 13 8 2 9
(д) Дискретные логарифмы по модулю 19 при основании 14
a 1 2 3 4 5 6 7 8 9 ]) 11 12 13 14 15 16 17 18
Indu.„(a) 18 13 7 8 10 2 6 3 14 5 12 15 11 1 17 16 14 9
(е) Дискретные логарифмы по модулю 19 при основании 15
a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
lnd11;,(a) 18 5 11 10 8 16 12 15 4 13 6 3 7 17 1 2 12 9
7.8. Рекомендуемые источники дополнительной
информации
Существует очень много книг, посвященным основам теории чисел. Элемен-
тарным, но ь то же время весьма полезным кратким введением в эту тему явля-
ется (ORE67]. Для читателей, стремящихся к более глубокому знанию теории,
имеется два превосходных учебника — [KUMA9S] и fROSE93]. [LEVE90] тоже
7.S. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ПОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
291
предлагает доступное и достаточно подробное изложение предмета. Все эти кни-
ги включают задачи с решениями, что повышает их ценность для самостоятель-
ного изучения.
Читателям, желающим получить твердое понимание основ теории чисел,
лучше всего остановить свой выбор на книге [BURN97], которая состоит исклю-
чительно из ряда упражнений с решениями, демонстрирующих все основные по-
нятия теории чисел. Проработка всех упражнений из указанной книги равно-
сильна вузовскому курсу теории чисел.
Г? Ч
3JRN97 Burn, R A Pathway to Number Theory, Cambridge, England Cambridge University
press, 1997.
KUMA98 Kumandon, R., Romero, C. Number Theory with Computer Applications. Upper
Sadd-e River, NJ Prentice Hall, 1998
LEVB90 Leveque. W Elementary Theory of Numbers NewYork. Dover, 1990.
ORE67 Ore, O. Invitation to Number Theory. Washington, DC. The Mathematical Associa-
tion of America, 1967
ROSE93 Rosen, К Elementary Number Theory and its Applications. Reading, MA' Addison-
Wesley, 1993
7.9. Задачп^Щц
1. Целью этой задачи является обоснование утверждения, сформулированно-
го в разделе 6.2 (см. главу G), о том, что два выбранных наудачу случай-
ных числа будут взаимно простыми с вероятностью O.G.
• Пусть Р ч Pr[gcd(a, b) = 1]. Докажите, что Pr[gcd(a, b) = d] = Р /d“.
Указание. Рассмотрите величину gcd| -
^6 d !
• Сумма вероятностей из п. (а) по всем возможным значениям d равна 1, т.е.
У Pr[gcd(a, b) = d] = 1 .
d>l
* Используйте это равенство, чтобы определить значение Р.
Указание Воспользуйтесь тождеством > — = —.
м i 6
2. Почему gcd(n, п +1) - 1 для двух последовательных целых чисел п и п + 1?
3. В разделе 7.2 мы определили отношение сравнения следующим образом:
два целых числа, а и Ь, называют сравнимыми по модулю п, если
(a mod п) "= (Ь mod п). Затем мы доказали, что a = b mod п, если
п | (а - Ь). В некоторых учебниках по теории чисел используется следую-
щее определение понятия сравнимости: два целых числа, а и Ь, называют
сравнимыми по модулю п, если п | (а - Ь). Используя это последнее опре-
деление в качестве отправной точки, докажите, что из условия (a mod и) =
(Ь mod л) следует, что п делит (а - Ь).
292
ГЛАВА 7. ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
4, Докажите следующее;
• Из (a mod п) = (b mod п) вытекает, что а а Ъ mod п .
• Из a = b mod п вытекает, что b = a mod п .
• Из a з h mod п и Ъ = с mod п вытекает, что a = с mod п. /
5. Докажите следующее:
• [(a mod n) - (b mod n)] mod п = (а - b) mod п .
• [(а mod п) X (d mod и)] mod п = (а х b) mod п .
в. Используя теорему Ферма, вычислите 3"' mod л .
7. Хотя древние китайские математики и умели доказывать теорему об ос-
татках, иногда они тоже ошибались. Например, оии считали, что число п
является простым тогда и только тогда, когда л делит (2" -2).
• Приведите пример нечетного простого числа, удовлетворяющего ука-
занному условию.
• Указанное условие верно для п = 2. Докажите, что это условие выпол-
няется для нечетных простых п (т.е. докажите необходимость указан-
ного условия).
* Приведите пример нечетного п, не являющегося простым и не удовле-
творяющего указанному условию. Это можно сделать для многих чисел,
в том числе и достаточно больших. Именно это привело китайских ма-
тематиков к ошибочному заключению, о том, что выполнение указанно
го выше условия является подтверждением того, что соответствующее
число относится к разряду простых.
• К сожалению, древнекитайские математики не удосужились проверить
значение л = 341, которое не является простым (341 = 11 х 31), но в то
же время оказывается, чго 341 делит (2"‘-2) без остатка. Докажите,
что 2И| s 2 mod 341 (т.е. опровергайте достаточность вышеупомянутого
условия). Указание. Нет необходимости вычислять значение 2”', лучше
воспользуйтесь подходящими сравнениями.
8. Обратите внимание на то, что значения 0<п) из табл. 7.4 являются четны-
ми для п > 2. Оказывается, что это верно для всех п > 2. Кратко обоснуй-
те этот результат.
9. • Вычислите gcd(24140, 16762).
• Вычислите gcd(4655, 12075).
10. Целью этого упражнения является поиск верхней границы для числа ите-
раций в алгоритме Евклида.
• Предположим, что т = дп 4 г, где q и г — неотрицательные целые чис-
ла и 0 < г < п . Докажите, что т / 2 > г.
• Пусть X, обозначает значение X в алгоритме Евклида после i-й итера
ции. Докажите, что
X
,>2 2 '
7.9. ЗАДАЧИ
293
• Докажите, что, если т, п и N являются целыми числами, для которых
1 < т, п < 2" , то алгоритм Евклида для вычисления gcd(m, л) потребует
не более 2N тагов.
11. Алгоритм Евклида известен уже более 2000 лет и всегда был излюблен-
ным средством специалистов в теории чисел. Но после многих лет исполь-
зования этого алгоритма у него появился потенциальный конкурент — ал-
горитм, открытый Дж. Стайном (J. Stein) в 1961 году. Алгоритм Стайна
имеет следующую структуру Нужно определить gcd(A, В) для заданных
А, В > 1.
Установить А, = А , В, - В, С, = С .
(1) Если А, = В„, закончить выполнение алюритма; в этом случае
gcd( А В) = А,С„.
(2) Если А„ и В„ четны, установить АПт1 = А„/2, В„т1=Д,/2,
С,*-1 = 2С„.
(3) Если А„ четно, а В„ — нечетно, установить А„+1 = А„/2,
Д(-1 = Вл, С,..) = С„.
(4) Если А, нечетно, а В, — четно, установить А„+1 = А„ ,
Be+i = Вп / 2, С„+1 = С„.
(5) Если А„ и В„ нечетны, установить Ая<1 = | А„ - В„ |,
Д,_1 = min(B„, А„), Сп+1 = 2С„ .
Продолжить выполнение алгоритма для значения (п + 1).
• Чтобы почувствовать различие между этими двумя алгоритмами, вы-
числите gcd(2152, 764), используя сначала алгоритм Евклида, а затем
алгоритм Стайна.
• В чем состоит явное преимущество алгоритма Стайна в сравнении с ал-
горитмом Евклида?
12. Докажите, что если алгоритм Стайна не завершился до шага п, то
Сл+1 х gcd(A я+1, В,+1) = С„ х gcd(А„, Вп).
• Докажите, что если этот алгоритм не завершился до шага (л - 1), то
• Докажите, что если 1 < А, В < 2V , то алгоритм Стайна для вычисления
ged(А В) потребует не более 4N шагов. Таким образом, число шагов,
требуемых алгоритмом Стайна, оказывается того же порядка, что и в
случае с алгоритмом Евклида.
• Докажите, что алгоритм Стайна действительно возвращает gcd(A. В).
13. Общепринятая формулировка китайской теоремы об остатках звучит так:
пусть тц..., т„ являются попарно взаимно простыми целыми числами
для 1 < i, j <k и i * j. Пусть М обозначает произведение всех mt и пусть
a j,..., и* являются целыми числами. Тогда система сравнений
294
ГЛАВА 7 ВВЕДЕНИЕ В ТЕОРИЮ ЧИСЕЛ
х Ба, (mod mJ .
x = a. (mod ,
f
x =a„ (mod nt*),
имеет единственное решение по модулю М. Докажите, что теорема верна и
в этой формулировке.
14. Пример, который использовал Сунь-Цзе для иллюстрации к теореме об
остатках, был таким:
х з 2 (mod 3), х = 3 (mod 5), х = 2 (mod 7).
Найдите соответствующее значение х.
15. Шесть профессоров начинают читать свои курсы соответственно в поне-
дельник, вторник, среду, четверг, пятницу и субботу и объявляют о своем
намерении читать лекции через 2, 3, 4, 1, 6 и 5 дней соответственно. Пра
вила университета запрещают читать лекции в воскресенье (таким обра-
зом, выпадающая на воскресенье лекция должна быть отменена). Когда в
первый раз все шесть профессоров сразу будут вынуждены отменить свои
лекции? Указание. Используйте китайскую теорему об остатках.
16. Найдите все первообразные корни по модулю 25.
17. Число 2 является первообразным корнем по модулю 29. Создайте таблицу
индексов и используйте ее для того, чтобы найти решения следующих
сравнений:
• 17х* « 10 mod 29 ,
• х1 - 4х -16 = и mud 29,
• х = 17 mod 29.
7.9. ЗАДАЧИ
295
ГЛАВА
Аутентификация
сообщений и
функции
хэширования
На рассвете в воскресенье он достал ио почтового ящике зако
дированное с помощью шифра “Бронтозавр'' сообщение и добавил
а это сообщение имя Питера Морана. Теперь сообщение гласило:
“Левиафан Дракону. Мартин Хиллман. Тревор Аллан. Питер
Моран: установить слежку и наблюдение" Что в этом было
хорошего. Джон вряд ли осознавал Он просто почувствовал себя
лучше, он почувствовал, что наконец-то он атаковал Питера
Морана, вмести того чтобы пассивно ждать, ничего не пред
принимая в ответ. Кроме того, какой же тогда вообще смысл в
преимуществе обладания ключом к шифру, если этим преиму
ществом никогда не воспользоваться?
Руфь Реплеи (Ruth Rendell). Talking to Strange Men
I ^’й^ожио- наиболее запутанной частью теории и прак-
1—^ гики защиты сетей является аутентификация сооб-
Д J тений и связанные с ней вопросы использования
цифровых подписей. Проблемы нарушения защиты и пред-
принимаемые для их решения меры так переплелись между
собой, что участвующие в этом специалисты начинают напо-
минать астрономов прошлого, которые строили эпициклы на
эпициклах, пытаясь объяснить все случайности. К счастью,
сегодняшние разработчики криптографических протоколов, в
отличие от тех давно забытых астрономов, похоже, отталки-
ваются от вполне заслуживающей доверия модели.
Описание всех криптографических функций и .|ротоколов, которые предла-
гаются к использованию для аутентификации сообщений и цифровых подписей,
потребовало бы отдельной книги. Мы же в этой и следующих двух главах оста-
новимся на подробном обсуждении предмета и дадим систематизированное опи-
сание различных подходо-i к решению соответствующих проблем
Глава начинается с формулировки требований, предъявляемых к средствам
аутентификации сообщений и цифровой подписи, а также с рассмотрения типов
нарушения защиты, которым при этом приходится противостоять. После этого
будет рассказано об основных подходах к решению проблем аутентификации,
включая и подход с использованием функций хэширования, завоевывающий в
последнее время все большее признание. Конкретные функции хэширования бу-
дут описаны в главе 9.
8.1. Требования аутентификации
В контексте сетевых коммуникаций можно выделить следующие типы нару-
шения защиты.
1. Раскрытие содержимого. Открытие содержимого сообщения любому лицу или
процессу, не владеющему соответствующим криптографическим ключом.
2. Анализ потока данных. Раскрытие структуры потока обмена данными участ-
вующих в таком обмене сторон. В случае ориентированного на установление
логических соединений приложения может быть определена частота и дли-
тельность соединений. И в среде, ориентированной на устаноапение логиче-
ских соединений, и при отсутствии таковых могут быть определены число и
длина сообщений, пересылаемых участвующими в обмене сторонами.
3. Имитация. Внедрение в поток сообщений от ложного источника. Здесь
подразумевается и создание сообщений противником, выдаваемых им за
сообщения от уполномоченного объекта, и обманные подтверждения полу-
чения или неполучения сообщения лицом, не являющимся истинным ад-
ресатом сообщения.
4. Модификация содержимого Изменение содержимого сообщения, включая
вставку, удаление, реорганизацию или любую другую модификацию сооб-
щения.
5. Модификация последовательности сообщений. Любая модификация по-
следовательности сообщений, формирующих поток обмена данными,
включая вставку, удаление или изменение порядка следования сообщений.
6. Модификация временных характеристик. Задержка или воспроизведение
сообщений. В случае ориентированного на установление логических соеди-
нений приложения весь сеанс или некоторая последовательность сообще-
ний может быть воспроизведением некоторого ранее осуществленного ре-
ального сеанса или некоторой последовательности ранее переданных сооб-
щений с определенными задержками во времени или повторениями. В
приложении без установления соединений можно задержать или воспроиз-
вести отдельное сообщение (например, дейтаграмму).
7. Отречение. Отрицание получения сообщения адресатом или отрицание
факта передачи сообщения источником.
8 1. ТРЕБОВАНИЯ АУТЕНТИФИКАЦИИ
297
Меры, принимаемые в связи с первыми двумя типами атаки, относятся к
конфиденциальности и были рассмотрены в части I книги. Меры, принимаемые
в связи с нарушениями, указанными в пунктах 3-6 приведенного выше списка,
относятся к вопросам аутентификации сообщений Механизмы решения про-
блем, возникающих в связи с атаками, представленными в п. 7, относятся к
проблеме использования цифровых подписей, но, вообще, средства цифровой
подписи учитывают многие вопросы, вытекающие из рассмотрения пунктов 3- 6.
Коротко говоря, аутентификация сообщений представляет собой процедуру
проверки того, что полученные сообщения пришли от указанного источника и не
были изменены в пути следования. Аутентификация сообщений может также
предполагать проверку порядка следования и своевременность доставки сообще-
ний. Цифровая подпись является средством аутентификации, включает меры
противодействия возможности оспорить источником или адресатом факт отправ-
ки и получения сообщения.
8.2. Функции аутентификации
В аутентификации сообщений и средствах цифровой подписи могут быть вы-
делены два основных уровня. На низшем уровне должна выполняться некоторая
функция, порождающая аутентификатор (удостоверение) — значение, исполь-
зуемое для аутентификации сообщения. Результат чыполнения этой функции
низшего уровня затем используется как примитив в протоколе аутентификации
высшего уровня, дающем получателю сообщения возможность проверить досто-
верность сообщения.
В этом разделе мы рассмотрим типы функций, которые могут служить для соз-
дания аутентификатора. Такие функции можно разделить на три следующих класса.
Шифрование сообщения. В качестве аутентификатора используется шиф-
рованный текст всего сообщения.
Код аутентичности сообщения (.Message Authentication Code — МАС). В ка-
честве аутентификатора выступает значение фиксированной длины, генери-
руемое некоторой открытой функцией сообщения и секретным ключом.
Функция хэширования. В качестве аутентификатора используется значе-
ние, генерируемое некоторой открытой функцией, противопоставляющей
любому сообщению произвольной длины значение фиксированной длины,
называемое значением хэш-функции.
Теперь рассмотрим каждую из этих возможностей вкратце, а коды аутентич-
ности сообщений и функции хэширования будут описаны подробнее в разде-
лах 8 3 и 8.4.
Шифрование сообщения
Шифрование сообщения само по себе в некоторой мере может выполнять
функции аутентификации сообщения. Анализ схемы для традиционного шифро-
вания и шифрования с открытым ключом оказывается при этом различным.
298 ГЛАВА 8 АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
Традиционное шифрование
Рассмотрим непосредственное использование традиционного шифрования
(рис. 8.1(a)). Сообщение, передаваемое от источника А адресату В, шифруется с
использованием секретного ключа К, известного и обеим сторонам, А и В. Если
никто другой не знает ключа, конфиденциальность гараптируетея — никто дру-
гой не сможет восстановить открытый текст сообщения.
Кроме того, можно утверждать, что пользователь В будет уверен в том, что от-
правителем пришедшего сообщения является пользователь А. Почему? Сообщение
должно исходить от пользователя А ввиду того, что кроме пользователя В только
Перевод
Адресат
(а) 1 ралиционное шифрование: конфиденциальность и аутентификация
(6) Шифрование с открытым ключом: конфиденциальность
М
(в) Шифрование с открытым ключом: конфиденциальность и цифровая подпись
(г) Шифрование с открытым ключом: конфиденциальность,
аутентификация и цифровая подпись
Рис. 81 Основные возможности шифрования сообщений
8 2. ФУНКЦИИ АУТЕНТИФИКАЦИИ
299
пользователь А владеет ключом К и поэтому никто другой не располагает инфор-
мацией, необходимой для создания шифрованного текста, который может быть
дешифрован с помощью К. Кроме того, если сообщение М восстанавливается, это
доказывает получателю В, что никакой из битов W не был изменен, так как про-
тивник, не обладающий ключом К, не сможет изменить биты в шифрованном тек-
сте так, чтобы произвести желаемые изменения в открытом тексте сообщения.
Таким образом, можно сказать, что традиционное шифрование обеспечивает
аутентификацию сообщений, а не только их конфиденциальность Однако это
простое утверждение все же требует уточнения. Рассмотрим, например, что кон
кретно происходит с точки зрения пользователя В При наличии функции де-
шифрования D и секретного ключа К адресат воспринимает любые вводимые
данные X, в результате порождая вывод Y =DB(X). Если при этом X является
шифрованным текстом истинного сообщения М, порожденного с помощью соот-
ветствующей функции шифрования, то Y окажется текстом открытого сообще-
ния М. В противном случае Y будет представлять собой бессмысленную последо-
вательность битов Поэтому получателю В могут потребоваться некоторые авто-
матизированные средства распознавания Y как истинного открытого сообщения,
поступившего от инициатора Л.
Приведенные аргументы очень важны с точки зрения аутентификации сооб-
щений, Предположим, что сообщение М может оказаться любой последователь-
ностью битов. В таком случае не существует способа, позволяющего распознать
сообщение в пункте назначения автоматически. Вывод неутешителен: если М
может быть любой последовательностью битов, то. независимо от получаемого
значения X. значение Y = D„(X) оказывается некоторой последовательностью
битов, и поэтому должно считаться подлинным открытым текстом.
Таким образом, в общем случае приходится требовать, чтобы только неболь-
шое подмножество всех возможных последовательностей битов рассматривалось
как истинные открытые сообщения. Тогда случайный фальшивый шифрованный
текст вряд ли породит истинное открытое сообщение. Предположим, например,
что только одна из 1 0’ возможных последовательностей битов является истин-
ным открытым сообщением. При этом вероятность того, что взятая наудачу по-
следовательность битов породит истинное открытое сообщение, сказывается рав-
ной всего лишь 10*. ‘
Для целого ряда приложений и схем шифрования такое условие, как прави-
ло, выполняется. Предположим, например, что передаются сообщения на анг-
лийском языке и при этом используется шифр Цезаря со сдвигом, равным еди-
нице (К = 1). Отправитель А может послать следующий шифрованный текст:
nbsttfbupbutboeepftfbupbutboenvjuumfmbnctfbuj wz.
Получатель В дешифрует этот текст, получая в результате следующий откры-
тый текст:
mare sea toatsanddoeseatoat sand little 1 ar tit seat ivy.
Простой частотный анализ подтверждает, что это сообщение соответствует
статистическим закономерностям английского языка В то же время, если про-
тивник генерирует следующую случайную последовательность букв:
zuvrsoevgqxizwigamdvnmhpraccxiuureosfbcebtqxsxq,
300 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
то в результате ее дешифрования будет получена последовательность букв
ytnqxndufpwkyvhfzlcumlgolbbwhttqdnreabdaspwrwp,
которая имеет статистические параметры, нетипичные для английского языка.
Иногда бывает трудно определить автоматически, дешифруется ли посту-
пающий шифрованный текст в понятный открытый текст. Если же открытый
текст является, скажем, двоичным объектным файлом или цифровой записью
рентгеновского излучения, определение правильности дешифрования и подлин-
ности получаемого таким образом открытого текста может оказаться весьма
трудным делом. В таком случае противник может выдать за сообщение от за-
конного источника практически любое сообщение с произвольным содержимым.
Одной из возможностей решения этой проблемы является структурирование
открытых текстов таким образом, чтобы соответствующая структура легко рас-
познавалась, но не могла быть воспроизведена без обращения к функции шифро-
вания. Например, к каждому сообщению перед шифрованием можно добавить
код распознавания ошибок, называемый также контрольной последовательно-
стью кадра (Frame check sequence — FCS), или контрольной суммой, как пока-
зано на рис. 8.2(a). Отправитель А берет открытый текст сообщения М и подает
его на вход функции F, вычисляющей контрольную сумму. Значение контроль-
ной суммы присоединяется к М, и полученный таким образом новый блок шиф-
руется. В пункте назначения получатель В дешифрует поступивший блок, рас-
сматривая результат дешифрования как сообщение с присоединенной контроль-
ной суммой. Поэтому получатель В сначала применяет ту же самую функцию F,
чтобы воспроизвести контрольную сумму. Если подсчитанная им контрольная
сумма равна поступившей с сообщением, сообщение считается подлинным. Ма-
ловероятно, чтобы случайная последовательность битов удовлетворяла требуемо-
му соотношению.
Пгревод----------► -*--------Источник
(а; Внутренний контроль ошибок
(б) Внешний контроль ошибок
Рис. 8.2. Внутренний и внешний контроль ошибок
8.2 ФУНКЦИИ АУТЕНТИФИКАЦИИ
301
Обратите внимание на порядок, в котором выполняются вычисление кон-
трольной суммы и шифрование. Последовательность выполнения этих операций,
показанная в виде схемы на рис. 8.2(a), называется в [DIFF79J внутренним кон-
тролем ошибок, который авторы противопоставляют внешнему контролю оши-
бок (рис. 3.2(6)). В случае внутреннего контроля ошибок обеспечивается и аутен-
тификация, поскольку противник сталкивается с проблемой генерирования
шифрованного текста, дающего при дешифровании правильное значение кон-
трольной суммы. Если вместо внутренней использовать внешние контрольные
суммы, противник получает возможность создавать сообщения с правильными
кодами контроля ошибок И хотя при этом ему не удастся получить открытый
текст сообщения, он сможет создавать ложные и искаженные сообщения.
Коды контроля ошибок являются только одним примером — на самом деле
любая структуризация передаваемых сообщений расширяет возможности аутен-
тификации. Такая структуризация обеспечивается архитектурой коммуникаций,
формируемой из набора используемых при этом протоколов передачи данных.
Как пример рассмотрим структуру сообщений, передаваемых с использованием
архитектуры протокола ТСР/ТР. На рис. 8.3 показана схема формата сегмента
TCP, иллюстрирующая структуру заголовка TCP. Предположим, что каждая па-
ра узлов использует свой уникальный секретный ключ, так что весь обмен дан-
ными между парой узлов строится на использовании одного и того же ключа,
независимо от конкретного приложения. В таком случае можно просто шифро-
вать все данные дейтаграммы, за исключением заголовка 1Р (см. рис. 5.5 в гла-
ве 5). Опять же, если противник заменит часть шифрованного сегмента TCP слу-
чайной последовательностью битов, в дешифрованном тексте не будет правиль-
ного заголовка, являющегося важной частью сообщения. В данном случае
заголовок включает не только контрольную сумму (относящуюся к заголовку),
но и другую полезную информацию — например, порядковый номер пакета дан-
ных. Поскольку сегменты TCP для имеющегося соединения нумеруются после-
довательно, шифрование не позволит противнику задерживать, переупорядочи-
вать или удалять сегменты.
Шифрование с открытым ключом
Простое шифрование с открытым ключом (см. рис. 8.1(6)) обеспечивает кон-
фиденциальность, но не аутен’Шфикацию. Источник А использует открытый
ключ KU, адресата В, чтобы зашифровать сообщение М. Поскольку только
пользователь В имеет соответствующий личный ключ KR,, только он и сможет
дешифровать сообщение. Эта схема не обеспечивает возможности аутентифика-
ции, так как противник тоже может использовать открытый ключ пользователя
В, чтобы зашифровать сообщение и представить его как отправленное от имени
пользователя А.
Чтобы обеспечить аутентификацию, отправитель А использует личный ключ
для шифрования сообщения, а получатель В использует открытый ключ пользо-
вателя А, чтобы это сообщение дешифровать (см. рис. 8.1(b)). Таким образом
обеспечивается аутентификация определенного уровня надежности, и, чтобы это
стало ясно, можно использовать аргументацию, подобную той, которая приводи-
лась ранее для случая традиционного шифрования. Ее суть состоит в том, что
302 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИИ И ФУНКЦИИ ХЭШИРОВАНИЯ
отправителем сообщения должен быть пользователь А, поскольку только он
имеет KR. и, следовательно, только пользователь А обладает информацией, не-
обходимой для создания шифрованного текста, который может быть дешифро-
ван с помощью KU, . Здесь, как и в предыдущем случае, возникает проблема:
открытый текст должен обладать некоторой внутренней структурой, чтобы по-
лучатель мог отличить явно структурированный открытый текст от случайной
последовательности битов.
Предположим, что открытый текст такой структурой обладает. Тогда схема на
рис. 8.1 в действительно обеспечивает возможность аутентификации. Эта схема по-
зволяет также использовать цифровую подпись.1 Только пользователь А мог создать
такой шифрованный текст, так как только он владеет ключом KR, Даже получа-
тель В не смог бы создать этот шифровинныЙ текст. Таким образом, полу!ив шиф-
рованный текст, пользователь В имеет возможность убедиться, что сообщение на-
верняка пришло от отправителя А. На самом деле отправитель А '•подписал” свое
сообщение, используя свой личный ключ для шифрования этого сообщения.
Обратите внимание на то, что эта схема не обеспечивает конфиденциальности.
Любой, кто владеет открытым ключом пользователя А, может дешифровать
шифрованный текст.
Чтобы обеспечить и конфиденциальность, и аутентификацию, отправитель А
может зашифровать сообщение М дважды — сначала с использованием своего
личного ключа, что обеспечит цифровую подпись, а затем с использованием от-
крытого ключа получателя В, что обеспечит конфиденциальность (см. рис. 8.1(г)).
’Как мы увидим в дальнейшем, реальная процедура, с помощью которой обычно создаются
цифровые подписи, отличается от представленного здесь описания, но принципиально являет-
ся точно такой.
8,2. ФУНКЦИИ АУТЕНТИФИКАЦИИ
303
Недостаток такого подхода состоит в том, что алгоритм шифрования, который в
схеме с открытым ключом является весьма сложным, должен в каждом сеансе
связи применяться четыре раза, а не два.
Информация о степени конфиденциальности и аутентификации, обеспечивае-
мой при использований разных подходов к шифрованию сообщений, представле-
на в табл. 8.1.
Таблица 8.1. Конфиденциальность и аутентификация сообщений при
шифровании
(а) Традиционное (симметричное) шифрование
А —> В: ЕК[М]
• Обеспечивает конфиденциальность
- Только стороны А и В знают К
• Обеспечивает определенный уровень аутентификации
- Источником может быть только сторона А
- Изменения в пути следования невозможны
- Требуется форматирование/избыточность
* Не обеспечивает подпись
- Получатель имеет возможность фальсифицировать получение сообщения
- Отправитель имеет возможность отрицать отправку сообщения
(б) Шифрование с открытым ключом (асимметричное шифрование)
____ ___ _____________ ___________ _____ ---- --- ____ ______________________
А->В: ЕкиДМ]
♦ Обеспечивает конфиденциальность
- Только сторона В имеет KRU , чтобы дешифровать сообщение
• Не обеспечивает аутентификацию
- Кто угодно может использовать КПЪ для шифрования сообщения, чтобы объя-
вить себя отправитетем А '
А —> В: Ekr> [MJ
♦ Обеспечивает аутентификацию и подпись
- Только сторона А имеет KR. , чтобы зашифровать сообщение
- Изменения на пути следования невозможны
- Требуется форматирование/избыточность
- Кто угодно может использовать KU„ , чтобы проверить Подпись
А-» В: EkvJE^M)]
• Обеспечивает конфиденциальность, поскольку используется KUb
• Обеспечивает аутентификацию и подпись, поскольку используется KR.
304 ГЛАВА 8 АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
Код аутентичности сообщения
Альтернативная техника аутентификации предполагает присоединение к сооб
щению созданного с использованием секретного ключа небольшого блока данных
фиксированного размера, обычно называемого криптографической контрольной
суммой, или кодом аутентичности сообщения (МАС — Message Authentication
Code). При этом предполагается, что две участвующие в обмене данных стороны,
скажем А и В, используют общий секретный ключ К. Чтобы послать сообщение М
адресату В, отправитель А вычисляет код аутентичности сообщения как функцию
сообщения и ключа: МАС = СК(М). Сообщение с добавленным к нему значением
МАС пересылается адресату. Получатель выполняет аналогичные вычисления с
полученным сообщением, используя тот же секретный ключ, чтобы вычислить но-
вое значение МАС. Вычисленное значение МАС сравнивается с полученным вместе
с сообщением (рис. 8.4(a)). Если предположить, что секретный ключ знают только
получатель и отправитель и если полученное значение МАС совпадает с подсчи-
танным, то можно утверждать следующее.
1. Получатель может быть уверен, что сообщение не было изменено. Если
противник изменит сообщение, но не изменит соответствующим образом
значевие МАС, тогда вычисленное получателем значение МАС будет отли-
чаться от полученного с сообщением. Если противнику секретный ключ
неизвестен, он не сможет правильно изменить значение МАС, чтобы оно
соответствовало измененному сообщению.
2. Получатель может быть уверен, что сообщение пришло от указанного отпра-
вителя. Поскольку никому больше неизвестен секретный ключ, никто дру-
гой не может подготовить сообщение с соответствующим значением МАС.
3. Если сообщение включает присвоенный ему порядковый номер (как это,
например, предполагается в случае использования протоколов HDLC, Х.25
или TCP), то получатель может быть уверен в том, что сообщения прихо-
дят в правильной последовательности, поскольку противник не имеет воз-
можности изменить порядковый номер сообщения.
Функция вычисления МАС подобна по своим действиям шифрованию. Разни-
ца лишь в том, что для алгоритма вычисления МАС не требуется свойство обра-
тимости, как для алгоритме шифрования, чтобы можно было дешифровать со-
общение. Оказывается, что такие математические свойства функции аутентифи-
кации делают ее менее уязвимой ко взлому по сравнению с функцией
шифрования.
Только что описанный процесс обеспечивает аутентификацию, ко не конфи-
денциальность, поскольку сообщение в целом передается открытым. Конфиден-
циальность может быть обеспечена путем шифрования сообщения либо после
(рис. 8.4(6)), либо перед (рис. 8.4(b)) применением алгоритма вычисления МАС.
В любом из этих случаев потребуется два ключа, известные и отправителю, и
получателю. В первом случае значение МАС вычисляется для подающегося на
вход сообщения и результат присоединяется к сообщению путем конкатенации.
Затем весь блок шифруется Во втором случае сначала шифруется сообщение,
затем вычисляется значение МАС для шифрованного текста и результат присое-
8.2. ФУНКЦИИ АУТЕНТИФИКАЦИИ
305
Адресат
*--------Источяиь------------►
(а) Аутентификация сообщений
Аутентификация соиощении и конфиденциальность
(код аутентичности связывается с открытым текстом)
Екг1М)
(в) Аутентификация сообщений и конфиденциальность
(код аутентичности связывается с шифрованным текстом)
Рис 8.4. Основные способы использования кодов аутентичности сообщений (МАС
диняется путем конкатенации к шифрованному сообщению, чтобы сформиров;
передаваемый блок. Обычно предпочтительнее связывать код аутентичности
посредственно с открытым текстом, поэтому чаще применяется метод, схема i
торого представлена на рис. 8-4(6).
Поскольку традиционное шифрование обеспечивает аутентификацию и 1
скольку такое шифрование можно осуществить с помощью уже доступн:
средств, находящихся в широком использовании, почему бы не выбрать имен
этот способ, вместо того чтобы вводить новый код аутентичности сообщения?
[DAV189] предлагается рассматривать следующие три ситуации, в которых име
смысл использовать коды аутентичности сообщений
1. Имеется целый ряд приложений, в которых одно и то же сообщение н
жет передаваться сразу нескольким адресатам. Примерами могут служи
извещение пользователей о том, что сеть в данный момент недоступна, и.
сигнал тревоги, посылаемый из центрального военного штаба. Дешевле
надежнее иметь одного адресата, ответственного за проверку аутентичь
сти. При таком подходе сообщение должно передаваться в открытом ви,
вместе с соответствующим кодом аутентичности сообщения. Ответственн.
за проверку аутентичности система должна имель секретный ключ и ы
306 ГЛАВА 8 АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНЬ
полнить такую проверку. Если будет обнаружено нарушение, другие сис-
темы-адресаты предупреждаются об опасности сигналом общей тревоги.
2. Еще одним возможным сценарием является обмен, при котором одна из
сторон оказывается слишком загруженной и поэтому не имеет времени на
то, чтобы дешифровать все поступающие сообщения. Аутентификация
проводится на выборочной основе — сообщения для проверки отбираются
случайным образом.
3. Привлекательна возможность аутентификации компьютерных программ в
нешифровэнном виде. Компьютерная программа может быть выполнена и
без того, чтобы каждый раз дешифровать ее, что требует дополнительных
ресурсов процессора. Если с такой программой связать код аутентичности,
то его можно проверять каждый раз, когда потребуется проверить целост-
ность программы
К этим вариантам можно добавить три следующих
1. Для некоторых приложений не требуется сохранять секретность, но важно
проверить аутентичность сообщений. Примером может служить протокол
SNMP версии 3 (SNMPv3 — Simple Network Management Protocol Version 3),
где функции конфиденциальности и аутентификации разделяются. В этом
приложении для управляемой системы важно гарантировать аутентичность
поступающих SNMP-сообщений, особенно, если сообщение содержит коман-
ды, изменяющие параметры управляемой системы. В то же время необхо-
димость скрывать поток обмена данными SNMP может не требоваться.
2. Разделение функций аутентификации и конфиденциальности обеспечивает
повышение гибкости архитектуры. Например, можно осуществить аутен-
тификацию на уровне приложения, а конфиденциальность обеспечить на
более низком уровне, например на транспортном.
3. Пользователь может пожелать оставить сообщение защищенным и после
его получения, но при этом иметь возможность ознакомиться с его содер-
жимым. После дешифрования сообщения защита не гарантируется, так
что сообщение оказывается защищенным от модификаций только на пути
следования, но не в самой системе назначения.
Наконец, обратите внимание на то, что код аутентичности сообщения не
обеспечивает цифровую подпись, так как и отправитель, и получатель использу-
ют один и тот же общий ключ.
В табл. 8.2 представлена итоговая информация о степени конфиденциально-
сти и аутентификации, обеспечиваемой различными подходами к решению этих
вопросов.
Функция хэширования
Вариацией идеи использования кодов аутентичности сообщений является од-
носторонняя функция хэширования. Как и в случае кодов аутентичности сооб-
щений, функция хэширования получает на вход сообщение М произвольной
длины, а на выход выдает хэш-код Н(М) фиксированного размера, иногда назы-
ваемый профилем сообщения. Хэш-код является функцией всех битов сообще-
8 2. ФУНКЦИИ АУТЕНТИФИКАЦИИ
307
Таблица 8.2. Использование кодов аутентичности сообщений
(а) А->В: MPCJM]
• Обеспечивает аутентификацию 7 , ...
- Только стороны А и В знают К
(б) А —» В: ЕКДМ] || СК1[М]
• Обеспечивает аутентификацию
- Только стороны А и В знают К,
- Обеспечивает конфиденциальность
- Только стороны А и В знают К2
Тв) А-»В- ErJM] II СХ,(Е»,[М]) '
• Обеспечивает аутентификацию
- При использования К,
• Обеспечивает конфиденциальность
- При использования Кл
ния и обеспечивает возможность контроля ошибок: изменение любого числа би-
тов в сообщении выливается в изменение хэш-кода.
Способы использования хэш-кода для аутентификации сообщений показаны
на рис. 8.5 и перечислены ниже.
1. Сообщение вместе с присоединенным к нему путем конкатенации хэш-
кодом шифруется методами традиционного шифрования. С точки зрения
общей схемы это аналогично стратегии контроля ошибок, показанной на
рис. 8.2(a). Аргументация при этом тоже аналогична: так как только
пользователям А и В становится известен секретный ключ, сообщение на-
верняка пришло от А и не могло быть изменено по пути следования. Хэш-
код обеспечивает структуризацию или избыточность, требуемую для ау-
тентификации. Поскольку шифрование выполняется по отношению ко
всему сообщению вместе с добавленным хэш-кодом, при этом обеспечива-
ется и конфиденциальность.
2. Шифруется только хэш-код средствами традиционного шифрования. Это
позволяет снизить вычислительную нагрузку на систему, если речь идет о
приложениях, не требующих конфиденциальности. Обратите внимание на
то, что хэширование и шифрование в комбинации фактически дают код
аутентичности сообщения (см. рис 8.4(a)), т.е. ЕК(Н(М)] представляет со-
бой функцию сообщения М произвольной длины и секретного ключа К,
которая дает на выходе значение фиксированного размера, защищенное от
нротивника, не знающего секретного ключа.
3. Шифруется только хэш-код средствами шифрования с открытым ключом с
использованием личного ключа отправителя. При этом обеспечивается не
только аутентификация, как в предыдущем случае (б), но и цифровая под-
пись, так как только отправитель может произвести соответствующим об-
308 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИИ И ФУНКЦИИ ХЭШИРОВАНИЯ
Рис. 8.5. Основные способы использования функции хэширования
8.2. ФУНКЦИИ АУТЕНТИФИКАЦИИ
309
разом зашифрованный хэш-код. Фактически в этом и заключается суть
техники использования цифровой подписи.
4- Если требуется обеспечение не только конфиденциальности, но и цифровой
подписи, можно зашифровать сообщение вместе с хэш-кодом, шифрован-
ным открытым ключом. Для этого используются методы традиционного
шифрования с секретным ключом.
5. В целях аутентификации сообщений можно использовать функцию хэши-
рования без шифрования. В таком случае предполагается, что две участ-
вующие в обмене данными стороны используют известное только им сек-
ретное значение S. Отправитель А вычисляет значение функции хэширо-
вания для результата конкатенации М и S и присоединяет полученное
значение функции хэширования к М. Получателю В значение S известно,
поэтому он может тоже вычислить значение функции хэширования, чтобы
сравнить последнее с пришедшим вместе с сообщением. Ввиду того что
секретное значение непосредственно не посылается, противник не может
модифицировать перехваченное сообщение или генерировать ложное.
6. Конфиденциальность может быть обеспечена при некоторой модификации
подхода описанного в пункте д, если зашифровать сообщение вместе с до-
бавленным к нему хэш-кодом.
Когда конфиденциальность не требуется, методы (б) и (в) оказываются пред-
почтительнее по сравнению с методами, в которых предполагается шифрование
всего сообщения, поскольку требуют меньше вычислений. И , тем не менее, на-
блюдается постоянно возрастающий интерес к методам, которые позволяют из-
бежать шифрования (рис. 8.5(д)). Как было указало в [TSUD92], это вызвано це-
лым рядом причин.
• Программное обеспечение, выполняющее шифрование, работает довольно
медленно. Даже если объем данных, которые шифруются при передаче со-
общения, будет небольшим, поток исходящих и входящих сообщений в
системе может оказаться очень интенсивным,
Цены на аппаратные средства шифрования довольно высокие. Хотя и
имеются недорогие микросхемы, реализующие алгоритмы DES. общая их
стоимость может оказаться очень высокой, если задаться целью оснастить
ими все узлы сети.
Аппаратные средства шифрования оптимизируются для работы с больши-
ми объемами данных. При малых блоках данных значительная часть вре-
мени тратится непроизводительно на инициализацию/вызов.
Алгоритмы шифрования могут быть защищены патентами. Некоторые ал-
горитмы шифрования, например алгоритм RSA шифрования с открытым
ключом, запатентованы, и поэтому на их использование требуются лицен-
зии, что тоже выливается в дополнительные расходы.
Алгоритмы шифрования являются одним из вопросов экспортного госу-
дарственного регулирования США.
330 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИИ И ФУНКЦИИ ХЭШИРОВАНИЯ
В табл. 8.3 представлена итоговая информация о степени конфиденциально-
сти и аутентификации, обеспечиваемой различными подходами к решению этих
вопросов, показанными па рис. 8.5.
Таблица 8.3. Основные возможности использования функции хэширования Н
(а) А —» В: EJM || Н(М)] • Обеспечивает конфиденциальность - Только стороны А и В знают К • Обеспечивает аутентификацию - Н(М) крипто! рафи чески защищено (г) А —> В: ЕДМ || Е„.[Н(М)|] • Обеспечивает аутентификацию и циф- ровую подпись • Обеспечивает конфиденциальность - Только стороны А и В знают К
(б) А —» В: М Ц Е,[Н(М)] (д) А -» Б. М 1| Н(М || S)
• Обеспечивает аутентификацию • Обеспечивает аутентификацию
- Н(М) криптографически защищено - Только А и В знают S
(в) А -> В: М || ЕК«.1Н(М)] • Обеспечивает аутентификацию и циф- ровую подпись - Н(М) криптографически защищено - Только сторона А может создать (е) А —> В: ЕК[М||Н(М)||8] • Обеспечивает аутентификацию - Только стороны А и В знают S • Обеспечивает конфиденциальность - Только стороны А и В знают К
ЕКВ.[Н(М)]
8.3. Коды аутентичное
Код аутентичности сообщения МАС, называемый также криптографической
контрольной суммой, генерируется функцией С вида
МАС = СК(М),
где М обозначает сообщение переменной длины, К — секретный ключ, извест-
ный только отправителю и получателю, а СК(М) — аутентификатор фиксиро-
ванной длины. Значение МАС присоединяется к сообщению в пункте отправле-
ния в то время, когда известно или предполагается, что данное сообщение кор-
ректно. Получатель удостоверяется в правильности сообщения путем повторного
вычисления значения МАС.
В этом разделе мы сначала обсудим требования, предъявляемые к функции С, а
затем рассмотрим конкретный пример. Другой пример будет рассмотрен в главе 9.
Необходимые свойства кодов аутентичности сообщений
Когда в целях обеспечения конфиденциальности методами традиционного
шифрования или шифрования с открытым ключом шифруется все сообщение,
степень защищенности всей схемы в целом зависит от длины ключа. Если ис-
ключить возможность ущербности алгоритма, то противнику ничего не остается,
8.3. КОДЫ АУТЕНТИЧНОСТИ СООБЩЕНИЙ
311
как только выполнять анализ с перебором всех возможных ключей, В среднем
такой анализ потребует З1*'0 попыток в случае A-битового ключа. Так, напри-
мер, для анализа при наличии только шифрованного текста противник, имея
шифрованный текст С, должен будет осуществлять поиск Р, = DKi (С) для всех
возможных значений ключа К,, пока не будет найдено значение Р,, по форме
соответствующее приемлемому открытому тексту.
Что касается кодов аутентичности сообщений, то здесь ситуация совершенно
другая. Вообще, функция вычисления МАС отображает множество значений в
одно. Область определения функции складывается из сообщений произвольной
длины, тогда как область значений задается всеми возможными значениями
МАС и всеми возможными ключами. Если используются п битовые значения
МАС, то таких значений всего 2" , тогда как число возможных сообщений равно
Л’, где N з> 2". Кроме того, имеется 2* возможностей для /f-битового ключа.
Используя метод простого перебора, как должен действовать противник, что-
бы найти ключ? Если конфиденциальность не предполагается, то противник
имеет доступ к открытым сообщениям и соответствующим им значениям МАС.
Предположим, что k > п , т.е. длина ключа больше длины МАС. Тогда, имея из-
вестные М, и МАС,, а также зная, что МАС, =СК(М,), криптоаналитик может
вычислить МАС, = CK(M)) для всех возможных значений ключа К,. При этом
по крайней мере для одного из ключей будет получено совпадение
МАС, = МАС) Обратите внимание на то, что противник получит для значений
МАС 2Ь вариантов, тогда как для них имеется только 2” < 2" различных значе-
ний. Таким образом, подходящее значение МАС будет соответствовать целому
ряду ключей и противник не сможет узнать, какой из этих ключей является
правильным. В среднем совпадение будет иметь место для 2Л/2П = ключей.
Поэтому противнику придется итерировать свои усилия.
Раунд 1
• Даны М| , МАС) = Ск(М,)
• Вычисляется MAC, = CKi(Mt) для всех 2" вариантов ключей
• Число совпадений равно = 2(*п)
Раунд 2
• Даны М2, МАС2 = СК(М2)
• Вычисляется МАС, = Ск (М,) для оставшихся 2W'*) вариантов ключей
• Число совпадений равно = 2(*"г,л)
и т.д. В среднем потребуется а раундов вычисления, если к=ахп. Например,
если используется 80-биговый ключ и длина значения МАС равна 32 битам, то в
первом раунде будет получено около 2п возможных ключей. Во втором раунде
это число сократится до 2”". Третий раунд должен дагь только один ключ, кото
рый и будет, по идее, тем ключом, который использовал отправитель.
Если длина ключа меньше или равна длине значения МАС, то, скорее всего,
уже в нерзом раунде будет получено единственное совпадение. Возможно и то,
что совпадений окажется более одного, и в таком случае противнику придется
выполнить тот же тест с новой парой (сообщение, МАС).
312 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
Таким образом, попытка перебора всех вариантов для поиска ключа аутенти-
фикации потребует не меньше, а вероятно, и больше усилий, чем попытка поис-
ка ключа шифрования той же длины. Однако здесь имеется другая возможность
1ля атаки, не требующая нахождения ключа вообще.
Проанализируем следующий алгоритм вычисления МАС. Пусть
М = (X, || Х21|... || Х„) является сообщением, рассматриваемым как конкатенация
54-битовых блоков X,. Тогда определим
Д(М) = Х, ®Х,® ,®Х,,
СК(М) = ЕК[Д(М)],
где © обозначает операцию исключающего “ИЛИ” (XOR), а алгоритмом шифро-
зания является DES в режиме ЕСВ (режим электронной шифровальной книги).
Гаким образом, длина ключа составляет 56 битов, а длина значения МАС — 64
5ита. Если противник получит {М 1| С„(М)}, попытка определить К путем простого
зеребора потребует как минимум 2м шифрований. Но противник может атаковать
систему, заменив значения Х„ ..., X, любыми другими значениями Y„ а
шачение Х„ — значением У„, которое вычисляется следующим образом:
¥„=¥,©¥,© . Ф ¥._, © Д(М).
Противник может путем конкатенации соединить новое сообщение, состоящее
!з Y,,. , Y_, с оригинальным значением MAC, формируя таким образом сооб-
цение, которое будет принято получателем как подлинное. Следуя такой такти-
ке. можно создать любое ложное сообщение длиной 64 х (ni - 1) битов.
Итак, оценивая степень защищенности функции вычисления МАС, приходит-
л учитывать два типа атак. Имея это в виду, давайте сформулируем требова-
зия. предъявляемые к такой функции. Предположим, что противник знает вид
функции С, порождающей значения МАС, но не знает К. Тогда функция вычис-
тения МАС должна иметь следующие свойства
1. Если противник получит в свое распоряжение М и СК(М), для него долж
но быть практически невозможно вычислить сообщение М', для которого
С„(М') = Ск(М).
2. Значения С*(М) должны быть равномерно распределенными в том смысле,
чго для случайно выбранных сообщений М и М' вероятность того, что
СдМ) = СК(М‘), должна быть равна 2 ”, где п равно числу битов значения
МАС.
3. Пусть М' получается в результате некоторой известной трансформации М,
т.е. М' = f(M). Например, f может означать изменение на противополож-
ный одного пли нескольких заданных битов. В таком случае
Pr[CK(M) = Cg(M')] = 2-.
Первое из этих требований соответствует вышеприведенному примеру, в ко-
"ором противник имеет возможность создать новое сообщение, соответствующее
жданному значению МАС, даже если он не знает или не желает искать ключ.
Гребование (2) имеет своей целью воспрепятствовать анализу с перебором всех
»ариантов при наличии избранного открытого текста. Иначе говоря, если про-
гивник не знает К, но имеет доступ к функции вычисления МАС и может пред-
тавить ей сообщения для получения соответствующих значений МА С, то он
J 3. КОЛЫ АУТЕНТИЧНОСТИ СООБЩЕНИЙ
313
может проверять различные сообщения до тех пор, пока не обнаружит сообще-
ния, соответствующего данному значению МАС. Если функция вычисления МАС
имеет однородное распределение, то метод перебора должен потребовать для это-
го в среднем 2'"11 попыток.
Последнее из требований гарантирует, что алгоритм аутентификации не будет
слабее для одних частей или битов сообщения, чем для других. Если бы это бы-
ло не так, то противник, который получит М и СК(М), может попытаться изме-
нить М в сторону известного “’слабого места", где можно быстрее обнаружить со-
общение, соответствующее имеющемуся значению МАС.
Коды аутентичности сообщений на основе DES
Одна из наиболее широко используемых функций вычисления значений МАС,
называемая алгоритмом аутентификации данных (Data Authentication Algo-
rithm), опирается на использование DES. Описание этого алгоритма существует и
как публикация FIPS (PUB FIPS 113), и в виде стандарта ANSI (Х9.17).
Алгоритм можно определить как шифрование DES в режиме сцепления бло-
кон (СВС) с нулевым вектором инициализации. Данные (например, сообщение,
запись, файл или программа), которым требуется аутентификация, представля-
ются в виде последовательности 64-битовых блоков D,, D,, ..., D„. При необхо-
димости. конечный блок дополняется справа нулями, чтобы образовался полный
б4-битовый блок. Используя алгоритм Е шифрования DES и секретный ключ К,
код аутентичности данных (DAC — Data Authentication Code) можно вычислить
следующим образом (рис. 8.6):
O, = E,(D),
О, = E,(Da Ф О,),
О, = EK(D, ФО,),
Ow — Е, (Оу Ф Оу.,),
Значение DAC представляет собой либо весь блок Оу, Либо крайние слева М
битов этого блока, где 16 < М < 64.
Оказывается, что этот алгоритм отвечает всем сформулированным выше тре-
бованиям.
I ^нкцЯи^эши
ровани
Значение функции хэширования генерируется функцией Н вида
h = Н(М),
где М обозначает сообщение произвольной длины, a Н(М) — значение функции
хэширования фиксированной длины. Значение функции хэширования присоеди-
няется к сообщению в системе отправителя, где известно или предполагается,
что сообщение является правильным. Получатель устанавливает аутентичность
3)4 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИИ И ФУНКЦИИ ХЭШИРОВАНИЯ
DAC
(от 1C до 64 бигов)
Рис. 8.6 Алгоритм аутентификации данных (PUB FIPS ИЗ)
сообщения путем повторного вычисления значения функции хэширования. По-
скольку сама функция хэширования секретной не считается, требуются средства
защиты самого значения функции хэширования (см. рис. 8.5).
Мы начнем обсуждение с рассмотрения требований, предъявляемых к функ-
ции хэширования при использовании ее для аутентификации сообщений. Ввиду
того что функции хэширования обычно являются довольно сложными, имеет
смысл начать с самых простых примеров, чтобы лучше понять используемые
здесь идеи. После этого будут описаны различные подходы к построению функ-
ций хэширования.
Требования, предъявляемые к функции хэширования
Целью использования функции хэширования является получение
“дактилоскопической” характеристики файла, сообщения или вообще любого
блока данных. Чтобы оказаться полезной для аутентификации сообщений,
функция хэширования Н должна иметь следующие свойства (сформулированные
здесь на основе списка из [NECH92]).
1. Быть применимой к блоку данных любой длины.
2. Давать на выходе значение фиксированной длины.
3. Значение Н(х) должно вычисляться относительно легко для любого задан-
ного х, а алгоритм вычисления должен быть практичным с точки зрения
как аппаратной, так и программной реализации.
4. Для любого данного кода Л должно быть практически невозможно вычис-
лить х, для которого Н(х) = h. Такое свойство иногда называют односто-
ронностью.
5. Для любого данного блока х должно быть практически невозможно вы-
числить у * х, для которого Н(х) - Н(у). Такое свойство иногда называют
слабой сопротивляемостью коллизиям.
8.4. ФУНКЦИИ ХЭШИРОВАНИЯ
315
6. Должно быть практически невозможно вычислить любую пару различных
значений х и у, для которых Н(х) = H(t/). Такое свойство иногда называют
сильной сопротивляемостью коллизиям.'
t
Первые три из указанных здесь свойств описывают требования, обеспечи-
вающие возможность практического применения функции хэширования для ау-
тентификации сообщений.
Четвертое свойство обеспечивает односторонность: легко получить код на ос-
нове имеющегося сообщения, но практически невозможно воссоздать сообщение,
имея только соответствующий код. Это свойство важно тогда, когда алгоритм
аутентификации предполагает использование секретного значения (см.
рис. 8.5(д)). Сами секретное значение непосредственно не пересылается, ко если
функция хэширования не является односторонней, то противник может опреде-
лить секретное значение достаточно легко: при возможности наблюдать или пе-
рехватывать поток данных он получит в распоряжение сообщение М и хэш-код
С = H(S„ || М). Затем он рассмотрит функцию, обратную функции хэширования,
и получит Бдя || М - Н ’(С). Теперь, когда противник имеет и М, и || М , вос-
становить значение SAB не составит для него никакого труда
Пятое свойство гарантирует то, что не удастся найти другое сообщение, дающее
в результате хэширования то же самое значение, что и данное сообщение. Это пре-
дотвращает возможность фальсификации сообщения в том случае, когда выполня-
ется шифрование хэш-кода (см. рис. 8-5(6) и (в)). В такой ситуации противник
может прочитать сообщение и вычислить соответствующий хэш-код. Однако он не
имеет секретного ключа, а потому не может изменить сообщение так, чтобы это не
было обнаружено. Если это свойство не выполнено, противник может действовать
по следующей схеме: сначала перехватить сообщение вместе с присоединенным к
нему шифрованным хэш-кодом, затем вычислить нешифрованный хэш-код сооб-
щения и наконец создать альтернативное сообщение с тем же хэш-кодом.
Шестое свойство определяет стойкость функции хэширования к конкретному
классу атак, известных под названием атак, построенных на парадоксе задачи о
днях рождения (рассматриваются ниже).
Простые функции хэширования
Все функции хэширования построены на следующих общих принципах. Вво-
димое значение (сообщение, файл и т.д.) рассматривается как последовательность
л-битовых блоков. Вводимые данные обрабатываются последовательно блок за
блоком, чтобы в результате получить n-битовое значение функции хэширования.
Одной из простейших функций хэширования является связывание всех бло-
ков операцией поразрядного исключающего “ИЛИ” (XOR). Это можно записать в
следующем виде:
С, = b1Gb„®.. ФЬШ,
2
К сожалению, эти термины не являются устоявшимися. В различных литературных источниках
вы обнаружите также понятия односторонней функции хэширования (что означает выполнение
свойств 4 и 5), стойкой к коллизиям функции хэширования (свойства 4. 5 и б), слабой односто
ранней функции хэширования (свойства 4 и о) и сильной односторонней функции хэширования
(свойства 4, 5, и 6). При чтении литературы по данному вопросу читателю необходимо обращать
внимание на то, что именно понимают авторы под соответствующими терминами.
316 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
где
С, — i-й бит хэш-кода, 1 < i < п,
т — число п-битовых блоков ввода,
bf/ — i-й бит в >-м блоке,
© — операция XOR.
Эта процедура показана на рис. 8.7. Она осуществляет простой побитовый
контроль четности и обычно называется продольным контролем четности. Такая
процедура достаточно эффективна при контроле целостности данных в случае
данных произвольного вида. Тогда любое п-битовое значение функции хэширо-
вания оказывается одинаково вероятным. Значит, вероятность того, что при по-
явлении ошибки в данных значение функции хэширования останется прежним,
равна 2 ". Если же речь идет о более прогнозируемых форматированных дан-
ных, такая функция менее эффективна. Например, в текстовых файлах с обыч-
ным английским текстом старший разряд каждого байта всегда равен нулю. По-
этому если использовать 128-битовое значение функции хэширования, то вместо
эффективности 2 ,и функция хэширования для этого типа данных покажет эф-
фективность, равную 2 .
Проще всего усовершенствовать такую схему, рассмотрев возможность вы-
полнения однобитового циклического сдвига или поворота значения функции
хэширования после завершения обработки каждого очередного блока. Такая
процедура состоит из следующих этапов.
1. Начальная инициализация л-битового значения функции хэширования
нулевым, значением.
2. Последовательная обработка ^битовых блоков данных по следующему
правилу.
• Выполнение циклического сдвига текущего значения функции хэширо-
вания влево на один бит.
• Добавление текущего блока к значению функции хэширования с помо-
щью операции XOR.
Эта процедура демонстрирует эффект “рандомизации” вводимых данных и раз-
рушения регулярностей, которые наблюдаются для вводимых данных. Эти два ти-
па функций хэширования иллюстрируются для 16-битовых значений на рис. 8.8.
Бит 1 Бит 2 ... Бит и
Блок 1 ьи Ь»)
Блок 2 Ь12 ^22 ЬП2
- • • •
» • •
- • • •
Блок m Ь.п, Ьрт
Хэш-код С, с2 Сп
Рис. 8.7. Простая функция хэширования, выполняющая операцию ХОП
8.4 ФУНКЦИИ ХЭШИРОВАНИЯ
317
Рис. 8.8 Две простые функции хэширования
Хотя вторая из вышеупомянутых процедур и обеспечивает хорошую возмож-
ность контроля целостности данных, она практически бесполезна для защиты
данных, когда с открытым сообщением передается шифрованный хэш-код, как
это имеет место в случаях, показанных на рис. 8.5(6) и (в). Имея некоторое со-
общение, совсем нетрудно создать новое сообщение, которому будет соответство-
вать тот же самый хэш-код: просто подготовьте любое необходимое альтернатив-
ное сообщение и присоедините к нему подходящий n-битовый блок, который
вместе с новым сообщением сформирует желаемый хэш-код.
Хотя простое выполнение операции XOR или той же операции с циклическим
сдвигом (RXOR) в случае шифрования только хэш-кода оказывается недостаточ-
ным, вы можете убедиться, что такая простая функция может быть полезна, ко-
гда шифруются и хэш-код, и сообщение (см. рис. 8.5(a)). Но здесь требуется
318 ГЛАВА 8 АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
быть внимательным. Технология, оригинально предложенная Национальным
бюро стандартов (National Bureau of Standards), предполагает выполнение про
стой операции XOR по отношению к 64-битовым блокам сообщения и после-
дующее шифрование всего сообщения в режим сцепления блоков (СВС). Такая
схема может быть описана следующим образом. Имея сообщение, складываю-
щееся из последовательности 64-битовых блоков X,, Х2,..., Х„ , сначала следует
вычислить хэш-код С, равный результату связывания всех блоков с помощью
операции XOR, а затем присоединить полученный хэш-код к концу сообщения в
качестве еще одного блока: ' ’ "г
с = хА<1 =х, ®х,®...фх„.
После этого все сообщение вместе с присоединенным хэш-кодом шифруется в
режиме СВС, в результате чего получается шифрованное сообщение
Y„ Y„. .,Y4.,. В [JUEN85J было указана несколько способов, с помощью кото-
рых шифрованный текст такого сообщения можно реорганизовать таким обра-
зом, чтобы это не повлияло на хэш-код. Например, пи определению режима СВС
(см. рис. 3.12 в главе 3), мы имеем
X, =rV©DK(Y,),
X = Y(1®DK(Y,),
X„,i=Ya ©Db(Y„„).
Но значение Х„,( является значением хэш-кода:
Х„,=Х,ФХ,©. ®х„
= (IV © DJY,)) Ф (Y, ® DJYJ)©... Ф (Y„_, © D„(Y„)).
Ввиду того что слагаемые предыдущего уравнения могут связываться опера-
цией XOR в любом порядке, хэш-код не должен меняться при изменении поряд-
ка следования блоков шифрованного текста.
Атаки, в основе которых лежит парадокс задачи о днях рождения
Предположим, что используется 64-битовый хэш-код. Может показаться, что
такая длина хэш кода вполне достаточна для безопасности. Например, если за-
шифрованный хэш-код С передается вместе с соответствующим нешифрованным
сообщением М (см. рис. 8.5(6) или 8,5(b)), то противнику требуется найти такое
М', что Н(М') = Н(М), чтобы заменить исходное сообщение другим и обмануть
получателя. В среднем противнику для этого необходимо проверить около 2м
сообщений, чтобы найти одно соответствующее хэш-коду перехваченного сооб
щения [см. дополнение 8А, равенство (8.1)].
Одиако противник имеет возможность применить другой вид атаки, основан-
ный на парадоксе задачи о днях рождения (см. дополнение 8А). В работе
[YUVA79] была предложена следующая стратегия.
1. Отправитель А готовится “подписать” сообщение с помощью присоедине-
ния к сообщению соответствующего m-битового значения МАС и шифро-
вания этого значения МАС личным ключом А (см. рис. 8.5(b)).
8.4 ФУНКЦИИ ХЭШИРОВАНИЯ
319
2. Противник генерирует 2т/г вариантов сообщения, которые все имеют, по
сути, '‘Зин смысл. Кроме того, противник готовит и столько же сообще-
ний, являющихся вариантами ложного сообщения, которым должно будет
заменено истинное.
3. Эти два набора сообщений сравниваются, чтобы найти пару сообщений,
порождающих один и тот же хэш-код. Вероятность успеха в соответствии с
парадоксом задачи о днях рождения оказывается больше, чем 0,5. Если
подходящее сообщение не найдено, генерируются новые истинные и лож-
ные сообщения до тех пор, пока не будет получено совпадение.
4. Противник предлагает вариант истинною сообщения на подпись пользова-
телю А. Эта подпись затем может быть добавлена к варианту ложного со-
общения для передачи предполагаемому получателю. Поскольку оба вари-
анта имеют один и тот же хэш-код, они породят одинаковые подписи и
противник будет уверен в успехе, даже не зная ключа шифрования.
Так, в случае использования 64-битового хэш-кода потребуются усилия по-
рядка всего 2м |см. дополнение 8А; равенство (8.7)].
Генерировать много вариантов сообщения с одинаковым смыслом совсем не
трудно Например, противник может вставить в ряд мест документа последова-
тельности типа “пробел - пробел — возврат на одну позицию” между словами.
Тогда вариации можно будет порождать, заменяя указанные последовательности
на "пробел-возврат на одну позицию пробел" в избранных местах. Противник
также может просто переписать сообщение другими словами, сохранив смысл.
Пример показан па рис, 8.9, взятом из [DAVI89J.
Отсюда можно сделать вывод, что длина хэш-кода может быть существенной.
Мы продолжим обсуждение этого вопроса в разделе 8.5.
Метод сцепления блоков
Целый ряд предложений, касаюшихся функций хэширования, был основан
на использовании техники сцепления шифрованных блоков, но без использова-
ния секретного ключа. Одним из первых таких предложений было предложение
Рабина (Rabin) [RABI78], Разделим сообщение М на блоки фиксированной дли-
ны М,, Мг,. , MN и используем любую систему традиционного шифрования
(например, DES), чтобы вычислить хэш-код G следующим образом:
Н„ = начальное значение,
Н, =ЕК[Н,.,],
G = Н,.
Это похоже на использование режима СВС, но в данном случае нет никакого
секретного ключа. Как любой хэш-код, эта схема может подвергаться атакам, в
основе которых лежит парадокс задачи о днях рождения, и если алгоритмом
шифрования является DES, когда порождается только 64-битовый хэш код, то
система может стать уязвимой.
К тому же может иметь место и другая версия атак, в основе которых лежит
парадокс задачи о днях рождения, даже если противник имеет доступ всего к
одному сообщению и соответствующей правильной подписи и не может получить
множество подписей. Сценарий здесь следующий (мы предполагаем, что против
320 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
Dear Anthony,
{£"“} {”.) «.<- {';}
....... th.: {пви1у Xhtnthd } {.'XJ idyet ftt {X}
Noxthwn a,,.,, J t di vie ion J' Ke t has taker J Over t J
responsibility for {the;-eof} o« interests in {}
{ “«} Please { a£f«d } hi» {} nelP he { "»y ™«d}
” {’“ind2*} ««.o.t 1115=3 for th« {h°7h) endo£ the
market. He is { „^ } to rec«iv« » »»« °®nal£ { sp^«s } o£ the
(latest > Г watch and jewellery 1 Г up \ Г limit \
newest J V jewellery and watch J ₽r0 ucte* Lsubject J to ® I maximum J
of ten thousand dollars. He will {1 a signed copy of this { document }
as proof of identity. An order with his signature, which is
{appended 1
attached J
{authorizes T. . . f above
allows J you Eo ;har3e the cost c° thls con^any at the { heaa office
adlress We { ^_ly } expeci that our { ) ot orders will increase in
rhe { '‘ ne?t } ye<u a,,d (hofe 1 that the new »₽»oint»-«t will {prb've}
{^VZdv«tage} to botb O1“
Puc. 8.9. Письмо в 237 вариантах [DAV 189]
ник перехватывает сообщение с подписью в виде шифрованного хэш-кода и что
нешифрованный хэш-код имеет длину т битов).
1. Используйте алгоритм, определенный в начале этого раздела, чтобы вы-
числить открытый хэш-код G.
2. Создайте любое требующееся сообщение вида Q,, Qa,. , Q„_,.
3. Вычислите Н, = для 1 < i < (N - 2).
4. Сгенерируйте 2”'’ случайных блоков, для каждого блока X вычислите
j], Сгенерируйте еще 2"’’ случайных блоков, для каждого блока Y
вычислите D,[G], где D обозначает функцию дешифрования, соответст-
вующую Е.
5. В силу парадокса задачи о днях рождения с высокой вероятностью будут
существовать такие X и Y, что ЕХ[НЛ f] = DY[G].
6. Сформируйте сообщение Q„ Q„ . ., QA. г, X, Y . Это сообщение будет иметь
хэш-код G и поэтому может использоваться с перехваченной шифрованной
подписью.
8.4 ФУНКЦИИ ХЭШИРОВАНИЯ
321
Этот вид атаки известен под названием “двусторонней атаки” (meet in the
middle attack). Ряд исследователей предлагает усовершенствованные варианты
этого сценария, усиливающие преимущества лежащего в его основе сцепление
блоков Например, Дэвис (Davies) и Прайс (Price) в [DAVI89] указывают еле
дующий вариант:
Н, = ЕЯ[НМ]®НГ1.
Другой вариант, предложенный в [MEYE88], выглядит так:
Н. =ЕЯДМ:]®М,.
Однако обе эти схемы уязвимы в отношении целого ряда типов атак
[MIYA90]. В с бщем, можно показать, что в некоторой Форме атака, в основе ко-
торой лежит парадокс задачи о днях рождения, оказывается успешной против
любой схемы хэширования, включая и схему со сцеплением шифрованных бло-
ков без использования секретного ключа, если недостаточна длина хэш коде
(64 бита или меньше) либо если длинный хэш-код может быть разбит на незави-
симые подкоды [JUEN87],
Поэтому главные усилия были сосредоточены на проблеме поиска других
подходов к хэшированию. Большинство из них тоже проявили свои слабости
[MITC92] Некоторые из криптографически стойких функций хэширования бу-
дут рассмотрены в главе 9.
8.5. Защита функций хэширования и кодов
аутентичности сообщений
Как и в случае традиционного шифрования и шифрования с открытым клю-
чом, атаки на функции хэширования и коды аутентичности сообщений можно
разделить на две категории: перебор всех вариантов и криптоанализ.
Атаки с перебором всех вариантов
Подходы с перебором всех вариантов для функций хэширования и кодов ау-
тентичности сообщений несколько различаются.
Функции хэширования
Способность функции хэширования противостоять атакам с перебором всех
вариантов зависит исключительно от длины хэш-кода, порождаемого ал горит
мом. Напомним, что функция хэширования должна обладать следующими тремя
свойствами.
• Односторонность. Для любого кода Л практически невозможна вычислить
такое х, что Н(х) = h .
* Слабая сопротивляемость коллизиям.. Для любого блока х должно быть
практически невозможно вычислить такое у * х, что Н(х) = Н(р).
• Сильная сопротивляемость коллизиям. Практически невозможно вычис
лить любую пару различных значений х и у, для которых Н(л) = Н(у).
322 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
Для кода длины п порядок требуемых усилий, как мы уже видели, пропор-
ционален следующим величинам.
Однос горонность 2Г
Слабая сопротивляемость коллизиям 2"
Сильная сопротивляемость коллизиям 2лД
При необходимости обеспечить сильную сопротивляемость коллизиям (что
желательно для хэш-кодов общего назначения) стойкость хэш-кода в отношении
атак с перебором всех вариантов характеризуется значением 2п?г. Ооршот
(Oorschot) и Винер (Wiener) в [OORS94] предложили проект создания машины
поиска коллизий для MD5 стоимостью 10 миллионов долларов, которая могла
бы обнаружить коллизию при 128-битовой длине хэш-кода за 24 дня. Таким об-
разом, 128-битовый код можно считать достаточным. Следующее значение дли-
ны, если хэш-код рассматривать как последовательность 32-битовых сегментов,
будет составлять 160 битов. При такой длине хэш-кода той же машине для по-
иска коллизии потребуется свыше четырех тысяч лет. В настоящее время два
самых популярныхалгоритма вычисления хэш-кодов. SHA-1 и R1PEMD-160.
рассматриваемых в главе 9, как раз обеспечивают хэш-код 160-битовой длины.
Коды аутентичности сообщений
Атака с перебором всех вариантов п случае с кодами аутентичности сообще-
ний является более сложной, поскольку для ее осуществления требуется извест-
ная пара “сообщеиие-МАС”. Давайте выясним, почему это так. Чтобы атаковать
хэш-код, можно действовать следующим образом. При наличии конкретного со-
общения х с л-битовым хэш-кодом h = Н(х) метод поиска коллизий с перебором
всех вариантов заключается в выборе случайной строки битов у и ггроверке ис-
тинности равенства Н(у) = Н(х). Противник может делать это последовательно в
автономном режиме. Возможность атаки в автономном режиме в отношении ал-
горитма вычисления МАС зависит от относительных размеров ключа и МАС.
Чтобы продолжить обсуждение, необходимо сформулировать одно желатель-
ное свойство алгоритма вычисления МАС, которое требуется для защищенности
этого алгоритма и может выглядеть следующим образом.
Вычислительная стойкость При наличии одной или большего числа пар
•'текст-МАС”. (х,,Ск(х,)), практически невозможно вычислить любую но-
вую пару (х, Ск(х)) для любого нового значения х # xt.
Другими словами, противник хотел бы получить правильный код аутентично-
сти сообщения (МАС) для некоторого сообщения х. Он может использовать две
линии атаки: атаку пространства ключей и атаку значения МАС. Рассмотрим
каждую из этих возможностей по очереди.
Если противник сможет определить ключ, с помощью которого получается зна-
чение МАС, он сможет генерировать правильные значения МАС для любого х.
Предположим, что длина ключа равна k битам и что противнику известна одна
пара “текгт-МАС” Тогда противник сможет вычислить n-битовые значения МАС
известного текста для всех возможных ключей. При этом по крайней мере
8.5. ЗАЩИТА ФУНКЦИИ ХЭШИРОВАНИЯ ...
323
один ключ породит соответствующее значение МАС — ключ, который исполь
вялся при создании известной противнику пары “текст-МАС”. Эта фаза ата
потребует усилий, пропорциональных величине 2" (по одной операции для ка
дого из возможных значений ключа). Однако, как уже говорилось, функция i
числения значения МАС отображает много значений в одно, поэтому может i
наружиться много ключей, порождающих соответствующее значение. Если бу;
найдено много ключей, порождающих правильное значение, потребуются доп<
нительные пары "текст-МАС” для тестирования Можно показать, что уров;
требуемых усилий с каждой дополнительной парой “текст-МАС” быстро сния
ется и что общей верхней оценкой для требуемых усилий может служить зна
ние порядка 2‘ [MENE97],
Противник может также пытаться выяснить значение МАС, не пытаясь най
ключ. Целью в таком случае является либо поиск правильного значения М.
для данного сообщения, либо поиск сообщения, соответствующего данному 31
чению МАС. В тюбом случае требуемые усилия сравнимы по величине с у<
лиями, необходимыми для атаки односторонней функции хэширования и
функции, обладающей свойством слабой стойкости к коллизиям, а имение
усилиями порядка 2". В случае МАС данная атака не может быть проведен;
автономном режиме без дополнительного ввода данных и противнику потре(
ются избранные пары “текст-МАС” или знание ключа.
Подводя итог всем нашим рассуждениям, можно сказать, что уровень усил!
необходимых для перебора всех вариантов при атаке на алгоритм вычислен
МАС, оценивается величиной min(2*, 2"). Требования стойкости в данном слу!
аналогичны требованиям для алгоритмов симметричной схемы шифрован!
Кажется разумным условие, чтобы длины ключа и значения МАС удовлетвори
соотношению типа min (/г, n) > N , где N должно быть не менее 128 битов.
Криптоанализ
Как и в случае с алгоритмами шифрования, при криптоаналитических атак
функций хэширования и алгоритмов вычисления МАС пытаются обнаружь
свойства алгоритма, позволяющие уменьшить объем вычислений в сравнение
объемом вычислений при полном переборе вариантов. Стойкость функции хэп
рования или алгоритма вычисления МАС в отношении криптоанализа мож
определить в сравнении с объемом усилий, необходимых для перебора всех I
риантов. Это значит, что идеальная функция хэширования или алгоритм выч!
ления МАС будут требовать для криптоанализа усилий больше или по крайн
мере не меньше, чем при переборе всех вариантов.
Функции хэширования
В последние годы были потрачены значительное усилия и достигнуты ощ
деленные успехи в деле разработки криптографических методов анализа фук
ций хэширования. Чтобы понять их, рассмотрим структуру типичной защите
ной функции хэширования, показанную на рис. 8.10.
Эту структуру, называемую итерированной функцией хэширования, пред;
жил Меркл (Merkle) в [MERK79, MERK89], и именно такую структуру имс
большинство используемых сегодня функций хэширования, включая MD5, SH
324 ГЛАВА 8 АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭ1ПИРОВАН1
IV - начал ьн-к; значение
CV —переменная сцепления
Yi -i-й вводимый блок
t - алгортп и : >катия
L — число ВВОДИМЫХ алом, в
п - длина хлш-кода
b - длин i вводимого блока
Рис 8 10. Общая структура защищенного хэш-кода
1 и R1PEMD-160 (все они будут описаны в главе 9), Функция хэширования по-
лучает на вход сообщение и делит его на L-1 блоков равной фиксированной
длины по Ь битов каждый. Если необходимо, последний блок дополняется до b
битов. В последний блок также включается значение суммарной длины ввода
функции хэширования. Это делает задачу противника еще более сложной. Про-
тивник должен найти либо два сообщения равной длины, имеющие одинаковые
значения функции хэширования, либо два сообщения разной длины, которые
вместе с соответствующими им значениями длины будут иметь одинаковые зна-
чения функции хэширования.
Алгоритм хэширования предполагает многократное применение функции
сжатия f, получающей на вход два значения (п-битовое значение, полученное на
предыдущем этале и называемое переменной сцепления, и б-битовый блок сооб-
щения) и порождающей п-битовое выходное значение. В начале хэширования
переменная сцепления получает начальное значение, являющееся частью алго-
ритма. Конечное значение переменной сцепления и будет значением функции
хэширования. Обычно b > га, поэтому и говорят о сжатии. Функция хэширова-
ния может быть формально описана следующим образом;
CVa = IV - начальное п-битовое значение,
CV, =f(CV,.„ Y,,), l<i<L,
Н(М) = CV, ,
где вводимыми данными функции хэширования является сообщение М, склады-
вающееся из блоков
Толчком к созданию такого рода итерационных структур послужили резуль-
таты Меркла [MERK89] и Дамгарда (Damgard) [DAMG89], свидетельствующие о
том, что если функция сжатия обладает сопротивляемостью коллизиям, то такой
же будет и итерированная функция хэширования/ Поэтому такая структура
з.,
iJopaTHOe утверждение не всегда является правильным.
8.5. ЗАЩИТА ФУНКЦИЙ ХЭШИРОВАНИЯ ...
325
может использоваться для создания защищенной функции хэширования, рабо-
тающей с сообщениями любой длины. Проблема создания защищенной функции
хэширования сводится к проблеме поиска обладающей сопротивляемостью кол-
лизиям функции сжатия, работающей с вводимыми данными некоторой фикси-
рованной длины.
Криптоанализ функций хэширования обычно сосредоточен на исследовании
внутренней структуры f и опирается на попытки найти эффективные методы об-
наружения коллизий при однократном выполнении f. Если эта проблема реше-
на, то атакующему остается рассмотреть фиксированное значение IV. Конкрет-
ный вид атаки на f зависит от внутренней структуры этой функции. Обычно,
например, когда речь идет о симметричных блочных шифрах, f предполагает не-
сколько раундов обработки данных, так что лучше всего выполнять анализ из-
менения побитовой структуры данных от раунда к раунду.
Имейте в виду, что коллизии должны существовать в любой функции хэши-
рования, поскольку последняя отображает как минимум блок длины Ь в хэш-код
длины п, где Ь > п Требуется лишь вычислительная невозможность обнаружить
такие коллизии.
Атаки, которые предпринимаются в отношении функций хэширования, име-
ют довольно сложные сценарии, и поэтому их описание выходит за рамки дан-
ной книги. Заинтересовавшиеся читатели найдут дополнительную информацию в
[DOBB96aJ и IBELL97].
Коды аутентичности сообщений
Структура кодов аутентичности сообщений допускает гораздо большее разно-
образие, чем структура функций хэширования, поэтому значительно сложнее
дать общие рекомендапии, касающиеся криптоанализа значений МАС. Кроме то-
го, разработке сценариев таких атак до сих пор уделялось недостаточно внима-
ния. Полезная информация о методах анализа некоторых конкретных по струк-
туре значений МАС содержится в относительно свежем обзоре [PREN96],
8.6. Рекомендуемые источники дополнительной fl
информации Я-
Хорошее представление теоретических основ аутентификации содержится в
[JUEN85] и [JUEN87], где главное внимание уделено криптографическим аспек-
там кодов аутентичности сообщений и функций хэширования. Подробное рас-
смотрение функций хэширования и кодов аутентичности сообщений вы найдете
также в [ST1N95] и [MENE97J.
JUEN85 Jueneman, R., Matyas, S. and Meyer, C. “Message Authentication*. IEEE Commu-
nications Magazine. September 1998.
JUEN87 Jueneman, R. “Electronic Document Authentication”. IEEE Network Magazine. Apni 1937
MENB97 Menezes, A, Oorshcot, P. and Vanstone, S. Handbook of Applied Cryptography
Boca Raton, FL . CRC Press, 1997.
SUN95 Stinson, D. Cryptography Theory and Practice. Boca Raton, FL: CRC Press. 1995
326 ГЛАВА 8- АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
1, Если F является функцией контроля ошибок, ее внутреннее или внешне?
(см. рис. 8.2) использование обеспечивает возможность обнаружения оши-
бок. Если изменяется любой бит в пересылаемом сообщении, это влечет за
собой несоответствие полученною и вычисленного значений FCS
(контрольной последовательности кадра), независимо от того, где выпол-
няется подсчет значения FCS — внутри или вне функции шифрования.
Некоторые коды также обеспечивают возможность исправления ошибок. В
зависимости от структуры функции, если один или несколько битов при
передаче данных изменены, такой код, допускающий исправление ошибок,
содержит достаточно избыточной информации, чтобы выявить биты с
ошибками и исправить их. Очевидно, что код исправления ошибок обеспе-
чивает возможность исправления ошибок, когда он используется вне
функции шифрования. А может ли такой код обеспечивать возможность
исправления ошибок, если использовать его внутри функции шифрования?
2. Алгоритм аутентификации данных, описанный в разделе 8.3, может быть
определен как использование режима сцепления шифрованных блоков
(СВС) алгоритма шифрования DES с нулевым инициализационным векто-
ром (см. рис. 8.6). Докажите, что такой же результат может быть получен
и при использовании режима шифрованной обратной связи (CFB).
3. Скоростной транспортный протокол ХТР (Xpress Transfer Protocol) ис-
пользует 32-битовую функцию вычисления контрольной суммы, представ-
ляющую собой конкатенацию двух 16-битовых функций, XOR и RXOR,
которые в разделе 8.4 называются “двумя простыми функциями хэширо-
вания” и иллюстрируются рис. 8.8.
• Дает ли эта контрольная сумма возможность обнаружить все ошибки,
характеризующиеся нечетным числом ошибочных битов? Поясните
свой ответ
• Дает ли эта контрольная сумма возможность обнаружить все ошибки,
характеризующиеся четным числом ошибочных битов? Если нет, опи-
шите структуру ошибок, которые не будут выявляться такой контроль-
ной суммой.
• Оцените эффективность данной функции при использовании ее в каче-
стве функции хэширования для аутентификации.
4. Рассмотрите схему вычисления хэш-кода Дэвиса и Прайса, описанную в
разделе 8.4, в предположении, что в качестве алгоритма шифрования ис-
пользуется DES
Н,
• Вспомните свойство дополнения DES (см. задачу 3.10): если
y = DES„(X), то Y' = DES«(X')- Используйте это свойство для того,
чтобы показать, каким образом можно изменить сообщение, склады-
вающееся из блоков М,, М,, ., М„ , не изменяя его хэш-кода.
8.7. ЗАДАЧИ
327
• Докажите, что подобная атака будет эффективной и против схемы
предложенной в [MEYE88]:
Н; =ЕН..1[М,]®М1.
5. Функцию хэширования можно использовать для того, чтобы создать блоч
ный шифр со структурой, подобной DES. Поскольку функция хэшировя
ния является односторонней, а блочный шифр должен быть обратимы!
(чтобы его можно было дешифровать), то как это можно сделать?
6. Теперь рассмотрим обратную проблему использования алгоритма шифре
вания для создания односторонней функции хэширования. Используем ал
горитм RSA с известным ключом. Выполним обработку сообщения, скла
дывающегося из последовательности блоков, по следующей схеме: шифру
ется первый блок, с помощью операции XOR результат объединяется с
вторым блоком и шифруется снова и т.д Докажите, что эта схема недос
таточно защищена, решив следующую задачу. Пусть имеется двухблоково
сообщение Bl, В2 и его хэш-код
RSAH(B1, В2) = RSAfRSA(Bl) ® В2)
Для произвольного данного блока CI найдите такой С2, чтобы выполни
лось равенство RSAH(C1, С2) = RSAH(B1, В2).
дополнение оА.Мателлатическое обоснование атак,
в основе которых лежит парадокс задачи о днях
рождения
В этом дополнении представлено математическое обоснование эффективност
проведения атаки, в основе которой лежит парадокс задачи о днях рождения
Мы начнем с обсуждения одной родственной проблемы, а затем рассмотрим пре
блему, которая и дала название “дня рождения” атакам соответствующего вида.
Связанная проблема
Обшей проблемой функций хэширования является следующая. Допустим, чт
заданы функция хэширования Нел возможными вариантами вывода и ков
кретное значение Н(х). Если применить Н к случайным k входным значениям
каким должно быть число k, чтобы вероятность того, что хотя бы для одног
входного значения у выполнялось равенство Н(у) = Н(х), оказалась равной 0,5?
Для отдельного значения у вероятность того, что Н(у) = Н(х), равна 1/л
Вероятность же того, что Н(у)*Н(х), составляет [1-(1/л)]. Если генерироват
к произвольных значений у, то вероятность того, что ни для одного из них н
будет получено совпадения, равна произведению вероятностей, соответствующи
каждому индивидуальному значению, т.е. [1-(1/п)]*. Поэтому вероятность н«
личия по крайней мере одного совпадения равна 1 - [1 - (1 / л)]*.
328 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЕ
По формуле бинома Ньютона мы имеем:
(1 - а। = 1 - гга +---а -------------а .
2! 3!
Для малых значений а получаемое значение может быть аппроксимировано
значением (1 - ka). Таким образом, вероятность получения по крайней мере од-
ного совпадения приблизительно равна 1-[1-(1/л)]‘ = 1-[1-(А/п)] = А/л . Для
вероятности 0,5 мы получаем А = л / 2 .
В частности, для m-битового хэш-кода число всех возможных кодов равно
2’ , и поэтому числом А, обеспечивающим половинную вероятность, будет
k = 2‘"-u. (8-1)
Парадокс задачи о днях рождения
Парадокс задачи о днях рождения часто используют в элементарных курсах
по теории вероятностей, чтобы продемонстрировать, что результаты теории ве-
роятностей иногда противоречат интуитивным представлениям Проблема может
быть сформулирована так: чему равно минимальное значение Л, при которой ве-
роятность того, что ао крайней мере у двоих из группы А человек дни рождения
совпадают, оказывается равной 0,5? Игнорируем существование 29 февраля и
предположим, что каждый день рождения одинаково вероятен. Чтобы ответить
на поставленный вопрос, определим
Р(п, k) = Рг[имеет место по крайней мере одно совпадение среди А элементов, где
каждый элемент принимает одно из п одинаково вероятных значений от
1 до п].
Таким образом, требуется найти наименьшее значение А, при котором
Р(365, А) >0,5 Проще сначала определить вероятность того, что совпадений не
обнаружится. Обозначим ее как Q(365, А). Для А > 365 невозможно, чтобы все
значения оказались различными. Поэтому можно предположить, что A S 365
Рассмотрим число различных способов (N), позволяющих получить k значений
без повторений. Для первого элемента мы имеем на выбор любое из 365 значе-
ний. для второго элемента — любое из 364 оставшихся и т.д. Поэтому для числа
подходящих способов получаем:
= 365х364х (365-А + 1) = Зб5! (8.2)
(365-А)!
Если исключить условие отсутствия совпадений, то каждый элемент может
принимать любое из 365 возможных значений, что в сумме дает 365‘ вариантов.
Поэтому вероятность отсутствия совладений равна отношению числа вариантов
без совпадений к общему числу вариантов:
Л,оос кх 3651/(365 -А)1 3651
(365)" (365 - Л)! (365)
и
Р(365, А) = 1 - Q(365, А) = 1 ----------- (8.3)
(365 А)! (365)’
ДОПОЛНЕНИЕ 8А. МАТЕМАТИЧЕСКОЕ ОБОСНОВАНИЕ АТАК ...
329
Эта функция показана на рис. 8.11. Вероятности могут показаться удиви-
тельно большими, если вы не сталкивались с подобной проблемой раньше. Мно-
гие думают, что для получения вероятности хотя бы одного совпадения, превы-
шающей 0,5, в группе должно быть около 100 человек, а на самом деле доста-
точно всего 23, поскольку Р(365, 23) = 0,5073. Для k = 100 вероятность хотя бы
одного совпадения равна 0,9999997.
Этот результат кажется удивительным, возможно, потому, что для каждого
отдельного человека в группе вероятность того, что с его днем рождения совпа-
дет день рождения кого-то другого в группе, достаточно мала. Но мы рассматри-
ваем вероятность того, что для какой-нибудь пары людей в группе дни рождения
23(23 — 1)
совпадут. В группе из 23 человек имеется --------= 253 различные пары, по-
2
этому и вероятности такие высокие.
Одно полезное неравенство
Перед тем как приступить к рассмотрению обобщения парадокса задачи о
днях рождения, докажем одно полезное в нашем случае неравенство:
(1 - х) < е" для всех х > и (8 4)
Это неравенство иллюстрируется графиком на рис. 8.12. Чтобы убедиться •
истинности этого неравенства, обратите внимание на то, что нижняя линия яв-
ляется прямой, касательной к графику функции е * в точке х = 0 . Наклон этой
прямой в точности равен производной е~‘ в точке х - О:
7(х) = е ’.
f(x) = -^-e” = -е ’,
ах
Ло) = -1.
Касательной к е" в точке х = 0 является прямая вида ах + Ъ, для которой
а - -1 и которая принимает значение е" = 1 в точке х = 0. Такой функцией яв-
ляется (1-х), откуда и следует неравенство (8.4). Заметим также, что для ма-
лых х мы имеем (1 - х) = е".
Общий случай
Задачу о днях рождения можно обобщить: если дана целочисленная случай-
ная величина с равномерным распределением значений от 1 до л и имеется вы-
борка, состоящая из А значений этой случайной величины (k < л ), то какова ве-
роятность Р(л, А) того, что среди значений в выборке по крайней мере два сов-
падают? Задача, к которой сводится задача о днях рождения, является частным
случаем только что сформулированной проблемы (при л = 365). Используя ар-
гументацию, подобную приведенной выше, получаем обобщение равенства (8.3):
Р(л, k) = 1-----—-
(л-А)! л
(8.5)
330 ГЛАВА 8. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
Рис 8.11 Парадокс задачи о днях рождения
Рис. 8.12. Полезное неравенство
ДОПОЛНЕНИЕ 8А. МАТЕМАТИЧЕСКОЕ ОБОСНОВАНИЕ АТАК .
331
Можно переписать это в таком виде:
Используя неравенство (8.4), получаем;
Р(л, А) > 1-[(е1",)х(е’2/п)х-- х(е-1*-и/")'
> 1 - е
1 _ е -<*«<*-!»/2"
Теперь зададимся вопросом: при каким значении k мы получим неравенство
Р(л, к) > 0,5 ? Для этого требуется, чтобы
1/2 = 1 — е-1**1*
)п(2) . ^74.
2л
Для больших k значение k х (k - 1) можно заменить на А’, и тогда получим:
k = 72(1п2)л = 1,187л = 7п . (8 61
Для проверки предположим, что п = 365, тогда k = 1,18 х7365 = 22,54, что
очень близко к правильному значению 23.
Теперь можно сформулировать суть атаки, в основе которой лежит парадок,
задачи о днях рождения. Предположим, что имеется функция Н, допускающая
2" вариантов вывода (т.е. тл-битовый вывод). Если на вход Н подать А вариантов
случайного ввода, то каким должно быть значение А, чтобы можно было ожи-
дать на выходе хотя бы одно совпадение [т.е. Н(х) = Н(у) для некоторых введен-
ных (х, у) ]? Используя оценку (8.6). получаем:
А = Т21п(2)л = 1,187л = 7л . <8
Пересечение двух множеств
С общим случаем задачи о совпадениях связана еще одна проблема, которук
также имеет смысл упомянуть в связи с темой нашего обсуждения Проблема
заключается в следующем: для данной принимающей целые значения случайной
величины с однородным распределением значений от 1 до п и двух множеств,
состоящих из А значений этой случайной величины (А<л), требуется найти ве
роятность R(n, А) того, что эти два множества имеют непустое пересечение. Дру-
гими словами, какова вероятность того, что найдется по крайней мере одно зна-
чение, принадлежащее обоим множествам?
332 ГЛАВА i. АУТЕНТИФИКАЦИЯ СООБЩЕНИЙ И ФУНКЦИИ ХЭШИРОВАНИЯ
Обозначим эти два множества символами X и Y, а элементы этих мно-
жеств— соответственно (хи х2, , хй) и {У1,Уг, •• , у*}. Для х, вероятность то-
го, что у, = х,, равна 1/л, поэтому вероятность несовпадения у, с х, равна
[1-(!/«)]. Если рассмотреть k случайных значений из множества Y, вероят-
ность того, что ни одно из этих значений не совпадет с х,, составляет
[1-(1/п)]й. Поэтому вероятность по крайней мере одного совпадения с х, равна
1-[1-(1/п)]‘.
Теперь предположим, что все элементы множества X различны. Если значе-
ния пик велики (например, порядка 7п ), то такое допущение вполне разумно.
На самом деле могут наблюдаться и совпадения, но в большинстве случаев все
элементы будут разными. С таким предположением получим следующее:
( 1У
Рг[нет совпадений в Y для х, ] == 1-,
I П I
Рг[нет совпадений в Y для X] =
R(n, Л) = Рг[есть по крайней мере одно совпадение в Y для X] = 1
Используя неравенство (8.4), получим
R(n, ft) > 1 —(е'1/")*а,
R(n, fe)>l-(e *2"-).
Теперь сформулируем вопрос: при каком значении к можно получить нера-
венство R(n, k) > 0,5 ? Для этого требуется, чтобы
1/2 = 1-е-*''",
2 = eki/n ,
k2
ln(2) = —,
п
(8.8)
ft = v2(ln(2))n = 0.83>/п = 7л .
Для атаки, в основе которой лежит парадокс задачи о днях рождения, это оз-
начает следующее. Предположим, что имеется функция Н, допускающая 2" ва-
риантов вывода (т.е пг-битовый вывод). На вход Н подаются ft вариантов слу-
чайного ввода, образующих множество X, а затем еще ft вариантов случайного
ввода, образующих множество Y. Каким должно быть значение ft, чтобы можно
было ожидать на выходе хотя бы одного совпадения между значениями мно-
жеств вводимых значений [т.е Н(х) = Н(у) для некоторых хе X и ye YJ? Ис-
пользуя оценку (8 8), получаем:
k = v'2” = 2т'2 .
ДОПОЛНЕНИЕ 8А. МАТЕМАТИЧЕСКОЕ ОБОСНОВАНИЕ АТАК .
333
ГЛАВА
Алгоритмы
хэширования
Каждое из этих сообщений, как и вообще все директивы Стер
на, которые ему приходилось читать до этого, начиналось с не
которого числа и заканчивалось числом или серией чисел. Манг<
со своими экспертами до сих пор не могли взломать код Стер
на — hi было даже никаких разумных предположений относи
тельно того, что вообще могут означать начинающие и завер
шающие сообщения числа.
Руфь Рендел (Ruth Rendell). Talking to Strange M₽r
Белка Дугласа имеет характерные особенности поведения, сая
занные с потреблением пищи. Она питается семенами сосновых
шишек, которые она обычно грызет от основания к верхушке
Частично обгрызенные шишки могут указывать на присутствие
таких белок. если шишки оказываются поврежденными только у
основания. Если же вам попадутся шишки, объеденные с верхнегс
конца, то это, вероятнее всего, будут остатки обеда клеста.
Ким Лонг (Ют Long). Белки. Справочник живой природ»
(A Wildlife Handbook)
*1й /Г ожно проследить целый ряд аналогий в эволюпии
|%/| функций хэширования и симметричных блочных
JL шифров. Мы уже видели, что возрастающие воз
можности атак с перебором нсех вариантов и достижения
криптоанализа привели к падению популярности DES и
созданию новых алгоритмов шифрования с более длинными
ключами и с новыми свойствами, дающими возможность
противостоять различным видам криптоанализа Точно так
же достижения вычислительной техники и криптоанализа
функций хэширования привели к снижению популярности сначала MD4, а затем
и MD5 — двух функций хэширования, применявшихся чаще всего. В ответ на
сложившуюся ситуацию были разработаны новые алгоритмы хэширования с бо-
лее длинными хэш-кодами и специальными свойствами, призванными противо-
стоять конкретным методам криптоанализа. Другой аналогией является общее
нежелание отказываться от уже наработанных схем. Алгоритм шифрования DES
базируется на шифре Файстеля, который, в свою очередь, опирается на предло-
женную еще Шенноном подстановочно-перестановочную схему (suhstitutional-
permutational network). После этого практически все заслуживающие внимания
блочные шифры строились по схеме Файстеля, поскольку в эту схему оказыва-
лось возможным добавить защиту от новых криптоаналитических угроз. Если
вместо схемы симметричного блочного шифрования использовать совершенно
новую схему, потребуются значительные усилия, чтобы выяснить, не является
ли новая схема ареной для новых успешных криптоаналитических атак, с кото-
рыми зашишаюшаяся сторона до сих пор не имела дела. Точно так же структура
наиболее важных из современных функций хэширования соответствует одной
базовой структуре, показанной на рис. 8.10. Опять же, на практике эта структу-
ра оказалась надежной, поэтому новые разработки заключаются в усовершенст-
вовании базовой структуры и увеличении длины хэш-кода.
Б этой главе мы сначала рассмотрим три важные функции хэширования:
MD5, SHA-1 и RIPEMD 160, а затем перейдем к алгоритму НМАС вычисления
кодов аутентичности сообщений, являющемуся сегодня стандартом в сети
Internet и построенному на использовании функций хэширования.
9.1. Алгоритм MD5 вычисления профиля сообщения
Алгоритм MD5 вычисления профиля сообщения (RFC 1321) был разработан
Роном Райвестом (Ron Rivest) из Массачусетсского технологического института
(MIT) (в алгоритме шифрования RSA первая буква аббревиатуры означает имя
Райвеста). До недавнего времени, когда буквально за последние несколько лет
существенно возросли как возможности анализа с перебором всех вариантов, так
и криптоанализа, MD5 оставался наиболее распространенным из защищенных
алгоритмов хэширования.
Логика MD5
Алгоритм берет в качестве входных данных сообщение произвольной длины и
выдает на выходе 128-битовое значение профиля сообщения. Вводимые данные
обрабатываются последоьательно 512-битовыми блоками.
На рис. 9.1 изображена обшая схема обработки сообщения при вычислении
его профиля. Эта схема соответствует более общей структуре, изображенной на
рис. 8.10. Процесс обработки сообщения включает следующие этапы.
Шаг 1. Добавление битов заполнителя. Сообщение дополняется так, чтобы
его общая длина в битах была сравнима со значением 448 пс модулю 512
(т.е. длина = 448 mod 512). Длина дополненного сообщения в битах долж-
на быть на 64 меньше, чем ближайшее кратное целого числа 512. Опера-
9.1. АЛГОРИТМ MD5 ВЫЧИСЛЕНИЯ ПРОФИЛЯ СООБЩЕНИЯ
335
Дополнение
(от 1 до 512 бит)
L х512 Лит N х S2 бит
--------К бит-------
Сообщение
100. О
(К mod 2’’)
IV
128-битивый
профиль
Рис. 9 1. Вычисление профиля сообщения MD5
ция дополнения выполняется всегда, даже если сообщение уже оказывает-
ся требуемой длины. Например, если длина сообщения равна 448 битам,
то к сообщению добавляется еще 512 битов, в результате чего длина до-
полненного сообщения оказывается равной 960 битам. Поэтому число до-
бавляемых битов должно быть ст 1 до 512.
Структура битов заполнителя следующая: первый бит равен 1, а все ос-
тальные равны 0.
Шаг 2. Добавление значения длины. К результату выполнения шага 1 до-
бавляется 64-битовое значение длины в битах исходного сообщения (т.е.
сообщения, каким оно было перед добавлением заполнителя), причем наи-
менее значимый байт записывается первым. Если длина исходного сооб-
щения превосходит 2м, то используются только младшие 64 бита значе-
ния длины Таким образом, соответствующее поле будет содержать длину
исходного сообщения по модулю 2~ .
Б результате выполнения первых двух этапов получается сообщение, дли-
на которого кратна 512 битам. На рис 9.1 дополненное сообщение пред-
ставлено как последовательность 512-битовых блоков Y,, Y,, ....Y,,, так
что в итоге длина сообщения оказывается равной Lx512 битов. Это зна-
чит также, что длина дополненного сообщения кратна длине блока из 16
32-битовых слов Пусть М[0 . N-1] означает слова дополненного сооб-
щения, тогда N будет кратно числу 16, Таким образом, N = Lx 16
ГПДПД О А ТГГЛРИТМТЛ VSTTTUPMWдытлст
Шаг 3. Инициализация буфера MD. Для того чтобы хранить промежуточ-
ные и конечные результаты функции хэширования, используется 128-
битовый буфер. Буфер можно представить в виде четырех 32 битовых ре-
гистров (А, В, С, D). Эти регистры инициализируются следующими 32-
битовыми целыми значениями (в шестнадцатеричном представлении).
А = 67452301,
В = EFCDAB89,
С = 98BADCFE,
D = 10325476.
Эти значения сохраняются в формате прямого порядка записи байтов, ко-
гда наименее значимый байт слова находится в позиции с младшим адре-
сом Как 32 битовые строки, значения инициализации (в шестнадцатерич-
ной записи) будут иметь вид
слово А: 01 23 45 67,
СЛОВО В: 69 АВ CD EF,
слово С: FE DC ВА 96,
слово D: 76 54 32 10.
Шаг 4. Обработка сообщения 512-битовыми блоками (блоками по 16 слов).
Сердцем алгоритма является функция сжатия, состоящая из четырех
•‘раундов” обработки. На рис. 9.1 этот модуль обозначен Нмоа, а логика ра-
боты модуля показана на рис. 9.2. Все четыре раунда имеют подобную
структуру, но в каждом из них используется своя примитивная логическая
функция (на рисунке соответствующие функции обозначены F, G, Н и I).
В каждом раунде на вход подается текущий 512-битовый блок (Y,) и 128-
битовое значение буфера ABCD и, кроме того, обновляется содержимое
буфера В каждом раунде используется также четвертая часть 64-
элементной таблицы Т(_1 . 64J, составленной из значений функции синуса.
В таблице Т ifi элемент, обозначаемый Т[(], равен целой части числа
2й х abs(sin(z)), где I соответствует значению угла в радианах Ввиду того
что abs(sin(i)) лежит в диапазоне между 0 и 1, каждый элемент Т являет-
ся целым числом, которое можно представить в 32-битовой записи, Табли-
ца обеспечивает “рандомизированное" множество 32-битовых кодов, кото-
рые призваны “подавить" любые регулярности вводимых данных. Список
значений Т представлен в табл. 9.1(6).
Выходное значение четвертого раунда добавляется к входному значению
первого раунда (CV,), в результате чего получается CV,„ Сложение вы-
полняется по модулю 2’а независимо для каждого из четырех слов буфера
с соответствующими словами CV,.
• Шаг 5. Вывод. После обработки всех L 512-битовых блоков на выходе L-A
стадии обработки получается 128-битовый профиль сообщения.
В целом работу алгоритма MD5 можно описать следующими формулами1
9 1. АЛГОРИТМ MD5 ВЫЧИСЛЕНИЯ ПРОФИЛЯ СООБЩЕНИЯ
337
CV„ = IV,
CV,., = SUM„(CV„ RF,[Y,, RF„[Y,, RF0[Yf, RF,[Y„ CV,]]]]),
MD = CV,,
где
IV — начальное значение буфера ABCD, задаваемого на шаге 3,
Y, — 9-й 512-битовый блок сообщения,
L — общее число блоков сообщения (с учетом битов заполнителя и по-
лей длины сообщения),
CV,— переменная спепления, используемая с g-м блоком сообщения,
RF — функция раунда, использующая примитивную логическую функ-
цию х,
MD — выходное значение профиля сообщения,
SUM„ — сложение по модулю 2" , выполняемое отдельно для каждого
слова из пары вводимых значений.
Рис, 9 2. Обработка одного 512-бит.авого блока в MD&
(функция сжатия MD5)
338
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
Таблица 9.1. Ключевые элемешы MD5
(а) Значения логических функций
ь с d F G II I
0 0 0 0 0 0 1
0 0 1 1 0 1 0
0 1 0 0 1 1 0
0 1 1 1 0 0 1
1 0 0 0 0 1 1
1 0 1 0 1 0 1
1 1 0 1 1 0 0
1 1 1 1 1 ] 0
(б) Таблица Т, создаваемая на основе значений ф нкции синуса
т (11 т [2] - D76АЛА78 Е8С7В756 Т (17 ) Т[18] — F61E2562 С040В340 Т (33) Т [34 ] = FFEA3942 = 8771F681 Т [ 49] Т[50] м F4292244 432AFF97
т (3] =3 242O7ODB 1(19] 265Е5АЫ Т[351 - 699DS122 Т[51] ж- АВ9423А7
Т [4 1 W C1BDCEEE Т [20] Е9Б6С7АА Т[36] = FDE5380C Т[52] ш FC93A039
Т [5] ж F57CCFAF Т (21] же b62F105D т I 37] = А4ВЕЕА44 Т[53] = 655В59СЗ
Т i 6J S3 4787С62А Т [22] С2441453 Т 138] = 4BDECFA9 Т[54] а 8FOCCC92
Т [7] = А8304613 Т[23] ж D8A1E681 Т [39 J = F6BB4B60 Т[55] - FFEFF47D
Т[8] = FD469501 Т[24] я. E7D3FBC8 Т [40] = BEBFBC7C Т[56] — 85845DD1
Т [ 9] = 6980Э8Р8 Т[25] — 21E1CDE6 Т [ 41] = 289В‘7ЕС6 Т [57] = 6FA87E4F
Т [ 10 ] = 8B44F7AF Т (26] = C33707D6 Т [42] ~ EAA127FA Т [58 ] FE2CE6EO
Till] =. FFFF5BB1 Т [27 ] F4D5CD87 Т(43] - D4EF3085 Т [59] — А3014314
Т [ 12] с= ‘95CD7BE Т [28] = 455A14ED Т [ 44 ] - 04881D05 Т [ 60 J 4Е0811А1
Т[13) W 6В901122 Т [29] гс А9ЕЗЕ905 Т [45] = D9D4D039 Т[61] s= F7537E82
Т [14 ] S3 FD987193 Т [30 j зж FCEFA3F8 Т [ 40] = E6DB99E5 Т[62] CS BE3AF235
Т [15] - А67943&Е Т[31] 67GF02D9 Т[47] = 1FA27CF8 Т[63] 2AD7D2BB
Т [ 16] в 49Б4С821 Т[32 J S3 8D2A4C8A I [48] = С4АС5865 .. Т[64] EB86D391
Функция сжатия MD5
Давайте рассмотрим детали логики каждого из четырех раундов обработки
одного 512-битового блока. Каждый раунд складывается из последовательности
16 операций с данными буфера ABCD Каждая такая операция имеет вид
а «- b + ((а + g(b, с, d) + Х[А] + T[t] «< з),
где
а, Ь, с, d — четыре слова буфера в определенном порядке, изменяющихся в
процессе работы,
я — одна из примитивных функций F, G, Н, I,
«< з — циклический сдвиг влево (поворот) 32-битового аргумента на s битов,
Х[А] — А-е 32-битовое слово в дм 512-битовом блоке сообщения, т.е
М1дх1б4 А],
9.1. АЛГОРИТМ MD5 ВЫЧИСЛЕНИЯ ПРОФИЛЯ СООБЩЕНИЯ
T(i] — i-e 32 битовое слово в матрице Т,
+ — сложение по модулю 2“.
Структура выполняемой операции показана на рис. 9.3. Порядок, в котором
используется четыре слова (а, Ь, с, d), обеспечивает на уровне слов циклический
сдвиг влево на «дно слово на каждом шаге.
В каждом из четырех раундов алгоритма используется своя примитивная ло
гическая функция. Такая примитивная функция получает на вход три 32-
битовых слова и выдает на выходе одно 32-битовое слово. Каждая такая функ-
ция выполняет ряд побитовых логических операций, т.е. n-й бит выходного зна-
чения является функцией л-х битов трех вводимых значений Функции имеют
следующий вид.
Раунд Примитивная функция g g(b, c, d)
1 F(b, с, d) (b AC) V (b A d)
2 G(b, с, d) ( b A dl V (c A d)
3 H(b, c, d) b © с ® d
4 Kb, c. dj с © (b v d)
Здесь логические операции AND, OR, NOT, XOR представляются символами
л, v, , Ф соответственно- Функция F является условным выражением: если Ь,
ялп
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
то с, иначе d. Точно так же G можно представить в таком виде: если d, то Ь,
иначе с. Функция Н дает бит четности. Значения всех четырех функций пред
ставлены в табл. 9.1 (а).
На рис. 9.4, построенном на основе данных из RFC 1321, показан алгоритм
шага 4. Обрабатывается массив 32 битовых слов Х[0. .151, содержащий значе-
ния текущего 512-битового блока ввода. В рамках раунда каждое из 16 слов
Х[0 15] применяется ровно один раз, для одного шага, а порядок, в котором
эти слова используются, меняется от раунда к раунду. В первом раунде слова
фигурируют в их исходном порядке. Для раундов со 2-го по 4-й определяются
следующие перестановки:
Р2О) = (1 + 5i) mod 16 ,
Рз(1) = (5 + 31) mod 16 ,
p«(i) = 71 mod 16 .
Каждый из 64 элементов Т длиной в 32-битовое слово используется только
один раз, для одного шага одного раунда. Обратите внимание и на то, что в ре-
зультате выполнения одного шага раунда обновляется только 4 байта буфера
ABCD. Следовательно, на протяжении раунда каждый байт буфера обновляется
четыре раза и еще один раз в конце, когда получается конечное выходное значе-
ние блока. Наконец заметим, что а каждом раунде используются разные после-
довательности четырех циклических сдвигов влево с различными величинами
сдвига. Целью всей этой сложности является обеспечение практической невоз-
можности отыскать коллизии (нары 512 битовых блоков, порождающих одина-
ковый вывод).
MD4
Алгоритм MD4 является предшественником MD5 и тоже был разработан Ро-
ном Райвестом. Этот алгоритм был «публикован в виде документа RFC в октябре
1990 года. Немного подправленная версия была издана в виде документа RFC
1320 в апреле 1992 года и имеет ту же дату публикации, что и MD5. Сейчас мы
вкратце рассмотрим MD4, поскольку при разработке и MD5, и MD4 преследова-
лись одни и те же цели, сформулированные в статье Райвеста [RIVE90J. Эти це-
ли заключаются в следующем.
Защита Обычное требование для хэш-кода — вычислительная невозмож-
ность найти два сообщения, имеющих один и тот же профиль. Иа время
публикации алгоритм MD4 достаточно защищен в отношении атак с пере-
бором всех вариантов, ввиду достаточной на то время длины профиля.
Райвест также позаботился о том, чтобы сложность MD4 оказалась доста-
точной и для защиты от криптоаналитических атак.
Скорость. Алгоритм должен быть приемлемым для размещения в прило-
жениях, которые должны выполняться достаточно быстро. В частности,
имеется ввиду, что алгоритм должен выполняться быстро в системах с 32-
битовой архитектурой. Поэтому алгоритм построен на простом наборе
примитивных операций с 32-битовыми словами.
9.1. АЛГОРИТМ MD5 ВЫЧИСЛЕНИЯ ПРОФИЛЯ СООБЩЕНИЯ
341
/• Обработка всех блоков по 16 слов (512 бит). */ /• Раунд 3 •/
Foi q = 0 to (N/16) 1 do /* Пусть [abed к si] означает операцию
/* Копирование блока q в X. ’/ a b + ((a + H(b,c,d) + X(k) eT|i])e«5).
For j - 0 to 15 do Выполнение следующих 16 операций */
Sei X(j] to M[q*16 ♦ j] IABCD 5 4 33]
end /• конец цикла no j */ [DABC 8 11 34]
(CDAB 11 16 35]
/* Сохранение А в AA, В в BB, С в СС и [BCDA 14 23 36]
DaDD */ [ABCD 1 4 37]
v -А [DABC 4 11 38]
вв • В [CDAB 7 16 39]
СС = с [BCDA 10 23 40]
DD - D [ABCD 13 1 41]
[DABC 0 11 42]
/‘Раунд! */ [CDAB 3 16 43]
/• Пусть (abed к s i] означает операцию [BCDA 6 23 44]
а = Ь + ((а + Fib.c.d) + X[k] + T[i])««). [ABCD 9 4 45]
Выполнение следующих 16 операций. */ [DABC 12 И 46]
[ABCD 6 7 I] [CD.AB 15 16 47]
[DABC 1 12 2] [BCDA 2 23 48]
[CDAB 2 17 3]
[BCDA 3 22 41 /* Раунд 4 */
[ABCD 4 7 5] /“ Пусть |abcd I : s i] означает операцию
(DABC 5 12 6j a - b + ((a + I(b,c,d) + X[k] + T[i])<«s)
[CDAB 6 17 71 Выполнение t ледуюших 16 операций. */
(BCDA 7 22 *1 (ABCD 0 6 49]
(ABCD 8 7 9] [DABC 7 10 50)
[DAM 9 12 10] [CDAB 14 15 51]
[CDAB 10 17 11] [BCDA 5 21 52]
[BCDA 11 22 12| [ABCD 12 6 53]
[ABCD 12 7 13] (DABC 3 10 54]
(DABC 13 12 Ы [CDaB 10 15 551
(CDAB 14 17 15] [BCDA 1 21 56]
[BCDA 15 22 16] [ABCD 8 6 571
(DABC 15 10 58]
/• Раунд 2 •/ (CDAB 6 15 59]
/’ Пусть [abed к s i] означает операцию [BCDA 13 21 60]
a « b т ((a + G(b,c,d) + X(k] + T(i]) <«s). IABCD 4 6 611
Выполнение следующих 16 операций. */ [DABC 11 10 62]
[ABCD 1 5 17] [CDAB 2 15 63]
[DABC 6 9 18] (BCDA 9 21 64]
[CDAB 11 14 19J
[BCDA 0 20 20] /‘ К Текущим значениям каждого из четырех
[ABCD 5 5 21] регистров Добавляются значения, которые
[DABC 10 9 22] получили регистры до начала обработки блока. •/
(CDAB 15 14 23] А - А + ДА
[BCDA 4 20 24] В * В + ВВ
(ABCD 9 5 251 С = С + СС
|DABG 14 9 26] D = D + DD
[CDAB 3 14 27]
(BUDa 8 20 28) /’ конец цикла по q ’/
[ABCD 13 5 29]
[DABC 2 9 30]
[CDAB 7 14 31]
[BCDA 12 20 32]
Рис. 9.4. Вазовый алгоритм обновления MD5 (RFC 1321)
342
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
Простота я компактность. Алгоритм должен быть простым с точки зрения
его описания и программирования и не требовать создания больших про-
грамм и таблиц подстановок. Эти условия не только имеют очевидные
преимущества с точки зрения программирования, но желательны также и
в плане безопасности, поскольку простой алгоритм гораздо проще проана-
лизировать на надежность
Предпочтение архитектуры с прямым порядком следования байтов. Ар-
хитектура некоторых процессоров (например, весь ряд процессоров Intel
80ххх и Pentium) предполагает хранение наименее значимых байтов слов в
младшей адресной позиции (что и называется прямым порядком байтов).
Архитектура других процессоров (например, SUN Sparcstation) основана
на хранении в младшей адресной позиции наиболее значимого байта слова.
Это различие оказывается существенным, если рассматривать сообщение
как последовательность 32-битовых слов, поскольку для одной из указан-
ных архитектур придется менять порядок следования байтов в каждом из
обрабатываемых слов. Для интерпретации сообщения в виде последова-
тельности 32-битовых слов Райвест выбрал схему с прямым порядком сле-
дования байтов. Этот выбор Райвеста основывался на его убеждении в том,
что процессоры с обратным порядком следования байтов, в общем, явля-
ются более быстрыми и смогут лучше справиться с дополнительной вы-
числительной нагрузкой при обработке сообщений.
Те же цели преследовались при создании MD5. В сравнении с MD4 алгоритм
MD5 явля<*тся несколько более сложным, и поэтому более медленным. Райвест
счел, что дополнительная сложность оправдывается обеспечиваемым при этом
более высоким уровнем защиты. Среди главных различий между двумя алго-
ритмами назовем следующие.
1. В MD4 имеет место три раунда обработки по 16 шагов в каждом, а в
MD5 — четыре раунда по 16 шагов.
2. В MD4 в первом раунде не используется никакого добавочного значения.
Во втором раунде на каждом из шагов вводится одно и то же добавочное
значение. Другое добавочное значение применяется для всех шагов в
третьем раунде. В MD5 на каждом из 64 шагов используется своя добавоч-
ная константа Т[1].
3. В MD5 задействовано четыре примитивные логические функции, по одной
для каждого раунда, а в MD4 таких функций три, тоже по одной для ка-
ждого раунда
4. В MD5 на каждом шаге к текущему результату добавляется результат пред-
шествующего шага. Например, результат шага 1 сохраняется в слове А. Ре-
зультат шага 2. который сохраняется в D, формируется с помощью добав
ления значения А к результату выполнения операции циклического сдвига
влево. Точно так же результат шага 3 сохраняется в С и образуется с по-
мощью добавления значения D к результату выполнения операции цикли-
ческого сдвига влево В MD4 такого завершающего сложения не преду-
смотрено. Райвест счел, что дополнительная чперация сложения помогает
усилить лавинный эффект схемы в целом.
9.1. АЛГОРИТМ MD5 ВЫЧИСЛЕНИЯ ПРОФИЛЯ СООБЩЕНИЯ
343
Стойкость MD5 1 -’U *
Алгоритм MD5 обладает тем свойством, что каждый бит хэш-кода зависит от
всех битов ввода. Сложное многократное использование базовых функций (F, G, Н,
I) в результате дает хорошее перемешивание, а это значит, что практически неве-
роятие, чтобы два наудачу выбранных сообщения породили один и тот же хэш-
код, даже если эти сообщения оказываются подобными по структуре. В документе
RFC Райвест высказывает предположение, что MD5 является настолько стойким,
насколько вообще это возможно, а именно задача нахождения двух сообщений с
одинаковыми профилями имеет сложность порядка 2”, а задача нахождения со-
общения с заданным профилем имеет сложность порядка 21И операций.
На время публикации этой книги не было результатов, опровергающих столь
смелые заявления. Однако были предприняты внушающие опасение попытки
атаковать MD5 по следующим направлениям.
1. Испильзуя методы дифференциального криптоанализа, Берсон (Вегяоп) в
[BERS92] показал, что для одного раунда MD5 возможно за разумное вре-
мя найти два сообщения, порождающих одинаковые профили. Такой ре-
зультат был продемонстрирован для каждого из четырех раундов. Тем не
менее, автор не смог показать, как можно было бы обобщить сценарий на
случай всех четырех раундов MD5.
2. Боер (Воет) и Босселерс (Bosselaers) [BOER93] показали, как можно найти
блок сообщения X и два соответствующих значения переменной сцепле-
ния, порождающих одинаковые выходные состояния. Это значит, что вы-
полнение MD5 с таким отдельным блоком в 512 битов даст на выходе одно
и то же значение для двух разных входных значений в буфере ABCD Та-
кую ситуацию называют псевдоколлизией.. В настоящее время нет способа,
позволившего бы обобщить эту идею до успешной атаки на MD5.
3. Заслуживающую наибольшего внимания стратегию атаки MD5 предложил
Доббертин (Dobbertin) в [ВОВВОба]. Его техника позволяет генерировать
коллизию для функции сжатия MD5, т.е. атака строится на рассмотрении
действия MD5 на отдельном 512-битовом блоке и нахождении другого бло-
ка, дающего такое же 128 битовое выходное значение. На время написа-
ния этой книги не было известно способа обобщить этот подход на случай
полного сообщения и начального значения (IV) алгоритма MD5. Тем не
менее, этот подход кажется весьма близким к успеху.
Таким образом, с точки зрения криптоанализа MD5 должен теперь считаться
уязвимым. Кроме того, если речь идет об атаках с перебором всех вариантов,
MD5 сегодня уязвим в отношении атак, использующих парадокс задачи о днях
рождения, требующих в данном случае усилий порядка 2“ . В результате необ
ходимо заменить популярный алгоритм MD5 функцией хэширования, имеющей
хэш-коды большей длины и более устойчивой в отношении известных методов
криптоанализа. Двумя реальными на сегодняшний день кандидатами представ
ляются алгоритмы SHA-1 и R1PEMD-160. Они будут рассмотрены в следующих
двух разделах.
344
ГЛАВА 9 АЛГОРИТМЫ ХЭШИРОВАНИЯ
9.2. защищенный алгоритм хэширования (SHA) .ж
Защищенный алгоритм хэширования (SHA — Secure Hash Algorithm) был
разработан Национальным институтом стандартов и технологии (NIST) и опуб-
ликован в виде федерального стандарта обработки информации » 1993 году
(PUB FIPS 180), пересмотренная версия вышла в 1995 году в виде документа
PUE FIPS 180-1, и обычно на эту версию ссылаются с помощью аббревиатуры
SHA-1. Алгоритм SHA базируется на алгоритме MD4, и вся его структура очень
близка к MD4.
Логика SHA-1
Алгоритм получает на вход сообщение, максимальная длина которого должна
быть меньше 2м битов, и выдает на выход ЮО-битовый профиль сообщения.
Вводимые данные обрабатываются 512-битовыми блоками.
Общая схема обработки сообщения соответствует структуре MD5, показанной
на рис. 9 1, с длиной блока в 512 битов и длиной хэширования и переменной
сцепления в ]6<' битов. Процесс обработки складывается из следующих шагов.
Шаг 1. Добавление битов заполнителя. Сообщение дополняется так, чтобы
его общая длина в битах была сравнима со значением 448 по модулю 512
(т.е. длина ж 448 mod 512 ). Операция дополнения выполняется всегда,
даже если сообщение уже оказывается требуемой длины. Поэтому число
добавляемых битов должно быть от 1 до 512. Структура битов заполнителя
следующая: первый бит равен 1, а все остальные равны 0.
Шаг 2. Добавление значении длины. К сообщению добавляется 64-
битовый блок. Этот блок интерпретируется как 64-битовое целое число без
знака (наиболее значимый байт идет первым) и содержит значение длины
исходного сообщения (перед добавлением заполнителя).
Шаг 3. Инициализация буфера MD. Для того чтобы хранить промежуточ-
ные и конечные результаты функции хэширования, используется 160-
битовый буфер. Буфер можно представить в виде пяти 32-битовых регист-
ров (А, В, С, D, Е). Эти регистры инициализируются следующими 32-
битовыми целыми значениями (в шестнадцатеричном представлении):
А = 67452301,
В = EFCDAB8 9,
С = 98BADCFE,
D = 103254"'б,
Е = C3D2E1F0.
Обратите внимание, что первые четыре значения совпадают со значения-
ми, используемыми в MD5 Однако в случае SHA-1 эти значения сохраня-
ются в формате обратного порядка следования байтов, когда наиболее зна-
чимый байт слова хранится в младшей адресной позиции. Как 32-битовые
строки, значения инициализации (в шестнадцатеричной записи) будут вы-
глядеть так:
.2. ЗАЩИЩЕННЫЙ АЛГОРИТМ ХЭШИРОВАНИЯ (SHA)
ЯАК
слобо А: 01 23 45 67,
слоьо В: 89 АВ CD EF,
слово С: ГЕ DC ВА 98,
слово D: 76 54 32 10,
слово Е: СЗ D2 Е1 ГО.
Шаг 4 Обработка сообщения 512-битовыми блоками (блоками по 16
слов). Сердцем алгоритма является модуль, состоящий из четырех раундов
обработки по 20 шагов каждый Логика модуля показана на рис. 9.5. Все
четыре раунда имеют подобную структуру, но в каждом применяется своя
примитивная логическая функция. Эти функции обозначены f,, f,, С и
f, соответственно.
В каждом раунде на вход подается текущий 512-битовый блок (Y,) и 160-
битовое значение буфера ABCDE, а также обновляется содержимое буфера.
Кроме того, на каждом шаге используется добавляемая к текущему значе-
нию константа К, , где 0 < t < 79 соответствует номеру шага для всех 80
Рис. д.5. Обработка одного 512-битового блока в SHA-1
(функция сжатия SHA -1)
346
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
шагов всех четырех раундов. На само.м деле применяется только четыре
константы. Их значения в шестнадцатеричном и десятичном представле-
ниях показаны в следующей таблице.
Номер шага Шестнадцатеричное представление Целая часть числа
0<i S19 К, = 5А827995 [2fcxV2]
20 < t S 39 К,= 6ED9EBA1 12м xV3]
40 < t S 59 Kf = 8F1BBCDC |2И х>/5)
60 < t < 79 К,= CA62C1D6 [2“xV10]
Выходное значение четвертого раунда (восьмидесятый шаг) добавляется к
входному значению первого раунда (CV„). в результате чего получается
СУ,И. Сложение выполняется по модулю 2" независимо для каждого из
пяти слов буфера с соответствующими словами CV,.
Шаг 5 Вывод. После обработки всех L 512-битовых блоков на выходе L-й
стадии обработки получается 160-битовый профиль сообщения.
В целом работу алгоритма SHA-1 можно описать следующими формулами:
CV0 = rv,
CVel = SUM32(CV„ ABCDE,),
MD = CVL,
где IV — начальное значение буфера ABCDE, задаваемого на шаге 3,
ABCDE, — выход последнего раунда обработки g-го 512-битового блока
L сообщения, — общее число блоков сообщения (с учетом битов заполнителя и полей длины сообщения),
SUMU — сложение по модулю 2”, выполняемое отдельно для каждо-
МЛ го слова пары вводимых значений, — выходное значение профиля сообщения.
Функция ежа 1 ия SHA-1
Давайте рассмотрим детали логики любого из 80 раундов обработки одного
512-битового блока. Каждый раунд имеет вид (рис. 9.6)
А, В. С, D, Е <- (Е + f(t, В, С, D) + S3(A) + W, + К,), A, S^fB), С, D ,
где
А, В, С, D. Е
t
f(t, В, С, D)
S*
W,
— пять слов буфера,
— номер шага, О < t < 79 ,
— примитивная логическая функция для шага t,
— циклический сдвиг влево (вращение) 32-битового аргумента
на k битов,
— 32-битовое слово, извлеченное из текущего 512-битового
блока ввода,
9.2. ЗАЩИЩЕННЫЙ АЛГОРИТМ ХЭШИРОВАНИЯ (SHA)
347
К, — добавляемая константа; как уже отмечалось, используете!
четыре различных значения,
+ — сложение по модулю 2ЗЯ.
Каждая из примитивных функций получает на вход три 32-битовых слова 1
выдает на выходе одно 32-битовое слово. Каждая такая функция выполняет ря,
побитовых логических операций, т.е. п-й бит выходного значения являете)
функцией п-х битов трех вводимых значений. Функции имеют следующий вид.
Шаг функция Значение функции
0<Г <19 f, = f(Z, В, C, D) (ВлС) v(BaD)
20 < t < 39 £ = f(t, В, C. D) B®C®D
40 < t < 59 £, = f(t, В, C, D) (ВлС) v(BaD) v (Сл D)
60 < t < 79 f. = f(t, В, C, D) В Ф С Ф D
Здесь логические операции AND, OR, NOT, XOR представляются символам!
л, v, , Ф соответственно. Как можно заметить, используется только три раз
личные функции. Для 0 < t < 19 функция является условным выражением: есл!
В. то С, иначе D. Для 20 < t <39 и 60 < t < 79 функция дает бит четности- Дл)
40 < t < 59 функция является истинной, когда истинны не менее двух ее аргу
ментов. Значения всех функций представлены в табл. 9.2.
Остаетея указать, как из 512-битового блока сообщения извлекаются 32
битовые значения слов W,. Соответствующая схема показана на рис. 9.7. Пер
вые 16 значений W, являются непосредственно J6 словами текущего блока. Ос
тальные значения определяются формулой
W, = S(W,_le Ф W,.u ® W, W, з).
Рис. 9.6. Элементарная операция SHA (один шаг раунда)
348
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
Таблица 9.2. Значения логических функций SHA-1
В с D С. 19 Gu J9 Go ,S9 Go 79
0 0 0 0 0 0 0
0 0 1 1 1 0 1
0 1 0 0 1 0 1
0 1 1 1 0 1 0
1 0 0 0 1 0 1
1 0 1 0 0 1 0
1 1 1 1 0 1 1 1 0 1 1 1 0 1
Итак, на первых 16 шагах обработки значение W, равно соответствующему
слову в блоке сообщения. Для остальных 64 шагов значение W, является резуль-
татом циклического сдвига влево на один бит результата связывания операцией
XOR четырех из щюдшествующих значений W, В этом существенное отличие
данного алгоритма от MD5 и RIPE MD-160, где на вход функции шага подается не-
посредственно одно из 16 слов блока сообщения и от раунда к раунду изменяется
только порядок подачи слоп В SHA 1 16 слов блока расширяются до 80 слов для
использования с функцией сжатия. Это порождает немалую избыточность и взаи-
мосвязь блоков сжимаемого сообщения, что усложняет задачу нахождения блоков
сообщения, порождающих одинаковый вывод функции сжатия.
Сравнительный анализ SHA-1 и MD5
Будучи разработанными на основе MD4. алгоритмы SHA-1 и MD5 оказывают-
ся очень схожими. Соответственно их защищенность и другие характеристики
тоже должны быть подобными друг другу». Мы сравним два этих алгоритма с
точки зрения целей, преследовавшихся при разработке MD4 и сформулирован-
ных выше.
Защищенность от атак с перебором всех вариантов. Наиболее очевидным и
наиболее важным различием между двумя алгоритмами является то, что
9.2 ЗАЩИЩЕННЫЙ АЛГОРИТМ ХЭШИРОВАНИЯ (SHA)
349
профиль SHA-1 на 32 бита длиннее, чем профиль MD5, В отношении пере-
бора всех вариантов сложность задачи нахождения сообщения, имеющего
заданный профиль, имеет порядок 2'“ операций для MD5 и 2“° для SHA-1
Опять же, в отношении перебора всех вариантов сложность задачи нахожде-
ния любой пары сообщений, имеющих одинаковые профили, имеет порядок
2й операций для MD5 и 2*" для SHA-1. Таким образом, SHA-1 оказывается
значительно более защищенным от атак г перебором всех вариантов.
Защищенность с точки зрения криптоанализа. Как мы убедились в пре-
дыдущем разделе, MD5 уязвим с точки зрения методов криптоанализа,
разработанных за годы, прошедшие со времени создания этого алгоритма.
Алгоритм SHA-1, похоже, неуязвим с точки зрения таких методов. Однако
о критериях построения SHA-1 имеется еще очень мало информации, так
что достоверно уценить защищенность этого алгоритма весьма непросто.
а Скорость. Оба алгоритма используют, в основном, операцию сложения по
модулю 2”, поэтому оба они хорошо работают на машинах с 32-битовой
архитектурой. SHA-1 включает большее число шагов (80 против 64) и
предполагает ооработку 160-битоного буфера в сравнении с 128-битовым
буфером MD5. Таким образом, на одном и том же оборудовании алгоритм
SHA-1 должен выполняться медленнее, чем MD5.
Простота и компактность. Оба алгоритма просты для описания и реализа-
ции и не требуют больших программ и таблиц подстановки.
Использование прямого или обратного порядка байтов. Алгоритм MD5
для интерпретации сообщения в виде последовательности 32-битовых слов
использует прямой порядок следования байтов, тогда как в SHA-1 принят
обратный порядок байтов Похоже, ни у одного из этих подходов нет ре-
шающих преимуществ перед другим.
[9.3. RIPEMD-160
Алгоритм RIPEMD-16O вычисления профиля сообщения [DOBB96b, BOSS97]
был разработан под эгидой Европейского проекта оценки целостности примитивов
(RIPE — RACE Integrity Primitives Evaluation) в рамках программы RACE
(Research into Advanced Communications for Europe — программа исследований по
созданию усовершенствованной системы связи для Европы) группой исследовате-
лей, которые предложили близкий к успеху сценарий атаки на MD4 и MD5. Сна
чала эта группа разработала 128-битовую версию RIPEM. После окончания проек-
та RIPE X. Доббертин (Н. Dobbertin), который не был участником проекта RIPE,
нашел вариант атаки на два раунда RIPEMD, а позднее и на MD4, и MD5. В этой
связи некоторые участники проекта RIPE решили модернизовать RIPEMD Соот-
ветствующая работа была выполнена ими совместно с Доббертиком.
’Вероятно, что причина этого кроется в том. что разработчики SHA из NSA использовали при
создании прототипа своего алгоритма компьютеры Sun.
350
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
Логика RIPEMD-160
Алгоритм получает на вход сообщение произвольной длины и выдает на вы-
ход 160 битовый профиль сообщения. Вводимые данные обрабатываются блока-
ми по 512 битов.
В общем, обработка сообщения проводится по схеме, показанной на рис. 9.1
для MD5, с длиной блока 512 битов и длиной переменной сцепления 160 битов.
Весь процесс состоит из следующих шагов.
Шаг 1. Добавление битов заполнителя. Сообщение дополняется так, чтобы
его общая длина в битах была сравнима со значением 448 по модулю 512
(т.е. длина = 448 mod 512). Операция дополнения выполняется всегда,
даже если сообщение уже оказывается нужной длины. Поэтому число до-
бавляемых битов должно быть от 1 до 512. Структура битов заполнителя
следующая: первый бит равен 1, а все остальные — 0.
Шаг 2. Добавление значения длины. К сообщению добавляется 64-
битовый блок. Этот блок интерпретируется как 64-битовое целое число без
знака (наименее значимый байт идет первым) и содержит значение длины
исходного сообщения (перед добавлением заполнителя). Обратите внима-
ние, что подобно MD5 и в противоположность SHA-1, в алгоритме
RIPEMD-160 предусмотрен прямой порядок следования байтов.
Шаг 3. Инициализация буфера MD. Для того чтобы хранить промежуточ-
ные и конечные результаты функции хэширования, применяется 160-
битовый буфер Буфер можно представить в виде пяти 32-битовых регист-
ров (А, В, С, D, Е). Эти регистры инициализируются следующими шестна-
дцатеричными значениями:
А = 67452301,
В = EFCDAB69,
С = 98BADCFE,
D = 10325476,
Е = C3D2E1F0.
Эти значения совпадают со значениями, используемыми в SHA-1, а первые
четыре значения совпадают со значениями, применяемыми в MD5. Как и в
MD5, эти значения сохраняются в формате прямого порядка следования
байтов.
• Шаг 4. Обработка сообщения 512-битовыми блоками (блоками по 16
слов). Основой алгоритма является модуль, состоящий из 10 раундов обра-
ботки по 16 шагов каждый. Эти 10 раундов организованы в виде двух па-
раллельных линий обработки данных, по пять раундов каждая. Логика
модуля показана на рис. 9.8. Вее 10 раундов имеют подобную структуру,
во в каждом применяется своя примитивная логическая функция Эти
функции обозначены Д, £,, f,, f, и f,. Обратите внимание на то, что во
второй линии обработки, показанной на рисунке справа, эти функции ис-
пользуются в обратном порядке.
9.3. RIPEMD-160
351.
Рис. У.8. Обработка одного 512битового блока в R1PEMD
160 (функция сжатия RIPEMD 160)
В каждом раунде на вход подается текущий 512-битовый блок (Y,) и 160-
битовое значение буфера ABCDE, а также обновляется содержимое буфера.
На каждом шаге используется также добавляемая к текущему значению
константа. На самой деле применяется только девять различных констант.
Их значения в шестнадцатеричном и десятичном представлениях показаны
в табл. 9 3.
Выходное значение пятого раунда (восьмидесятый шаг) добавляется к
входному значению переменной сцепления первого раунда (CV,), в резуль-
тате чего получается CV,.,. Сложение выполняется по модулю 2’J незави
симо для каждого из пяти слов буфера каждой линии обработки с соответ-
ствующими словами CV,. При сложении используется также вращение
для каждого третьего вводимого значения по следующей схеме:
352
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
CV^(O) = CV,(D+C+D',
CV^(l) = CV,(2)4 D + ET,
CV^(2) = CV?(3) + E + A',
CVeiI(3) = CV/4) + A + B',
CVM+1(4) = CV.(O) + B + C'.
Шаг 5. Вывод. После обработки всех L 512-битовых блоков на выходе L-й
стадии обработки получается 160-битовыЙ профиль сообщения.
Таблица 9.3. Константы RIPEMD-160
Левая половина Правая поливина
Номера Шестнадцатеричное Целая Шестнадцатеричное Целая
шага представление часть числа представление часть числа
0<у <15 к, ~ K(j) = 00000000 0 Kf=K'(y) = 50А28ВЕ6 2” X- Л
16 < j < 31 К, =К(/) = 5А827999 2“xT2 KJ = К'(у) = 5C4DD124 2*° X.’ Уз
32 S j < 47 К. = К(;) = €ED9EEA1 2”x,/3 KJ = К'(у) = 6D703EF3 2"х- Л
48 £ j <> 63 К. =К(у) = 8F1B0CDC 2xx Тб К1«Ш" 7А6О7 6Е9 2е X. Ут
64 $ у < 79 Ks-K(y) = A953FP4E 2“ x -Л К; = К'(у) - OOOOOGOO 0
Функция сжатия RIPEMD-160
Рассмотрим детали логики работы отдельного раунда обработки чдного 512-
битового блока сообщения. Каждый раунд складывается из последовательности 16
шагов. На рис. 9.9 показана схема набора операций, выполняемых на каждом шаге.
Порядок, в котором обрабатывается пять слов (А, В, С, D, Е), в результате дает на
уровне слов циклический сдвиг вправо на одно слово для каждого шага. Обратите
внимание, что эта структура почти идентична соответствующей структуре MD5.
Для каждого из пяти раундов алгоритма предусмотрена своя примитивная
логическая функция, и те же пять функций, но в обратном порядке, использу-
ются во второй линии обработки (см. рис. 9.8, справа). Каждая из примитивных
функций получает на вход три 32-битовых слова и выдает на выход одно 32-
битовое слово. Каждая функция выполняет ряд побитовых логических опера-
ций; т.е. л-й бит выходного значения является функцией их битов трех вводи-
мых значений. Функции имеют следующий вид.
Шаг функция Значение функции
0<у <15 f, = f(y, В. С, D) ВФСФО
16 < у $ 81 4 = f(y, В, С, D) (В Л С) V (В Л D)
32 < у < 47 t = f(y, В, С, D) (в v с) е d
48 < у < 63 f. = f(y, В, С, D) (В aD) v(CaD)
64 < у < 79 4 = f(y, В, С, D) В Ф (С vD)
9.3 RIPEMD 160
353
Здесь логические операции AND, OR, NOT, XOR представлены символами
л, v, , Ф соответственно. Функция f, дает бит четности. Функция f. является
условным выражением: если В, то С, иначе Г). Точно так же f, можно описать
следующим образом: если D, го В, иначе С. Значения всех функций представлс
ни табл. 9.4.
Таблица 9.4. Значения логических функции RIPEMD-160
В с D f, f, f, f. f,
0 0 0 0 0 1 0 1
0 0 1 1 1 0 0 0
0 1 0 1 0 0 1 1
0 1 1 0 1 1 0 1
1 0 0 1 0 1 0 0
1 0 1 0 0 0 1 1
1 1 0 0 1 1 1 0
1 1 1 1 1 0 1 0
Следующий псевдокод, за основу которого взят соответствующий псевдокод
из [DOBB96o], описывает алгоритм одного раунда обработки данных.
354
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
A:=CVg(O); B:=CV,(I); C:=CVg(2); D:=CVg(3); E:=CV/4);
A-CVJO), B':=CVg(l); C':=CVg(2); D';=CV?(3); E':=CVg(4);
for j := 0 to 79 do
T: = rol.W)(A + f (/. В, C, D) + ХГ(Л + K(/)) + E;
A:=E; E.= D; D:=rolM(C); C;«=B; B:=-T;
Г: = rol,0,(A' + f(79 - j, В', C', D') + Xr(yj + K'(/)) + E';
A':=E'; E':=D'; D'roll(,(C'); C':=B'; В :=T;
enddo
CVgil(0) = CVg(l) + C + D'; CVgi)(l) = CVg(2) + D + E* ; CV,U(2) = CVg(3) + E + A';
CVg.,(3) = CVg(4) + A -r B'; CVg±l(4) = CV,(O) + В ( C';
где
А, В. C, D, E — пять слов буфера для левой линии обработки данных,
А.', В', С', D', Е' — пять слов буфера для правой линии обработки данных,
j — номер шага, О < t < 79 ,
f(), В, С, D)— примитивная логическая функция для шага / левой линии и
шага 79 - j правой линии,
го1,0) — циклический сдвиг влево (вращение) 32битового аргумента, s(J) —
это функция, задающая величину сдвига для каждого шага,
ХГ(П — 32-битовое слово, извлеченное из текущего 512-битового блока ввда,
r(j) — функция перестановки, выделяющая конкретное слово,
КО) — добавляемая константа, используемая на шаге j,
+ — сложение по модулю 2я .
Массив 32-битовых слов Х[0..15] содержит данные текущего 512-битов»го
блока сообщения. В каждом раунде каждое из 16 слов массива Х[(] применяется
только два раза, на одном шаге каждой линии обработки, и порядок, в котором
эти слова используются, меняется от раунда к раунду. Перестановки, осуществ-
ляемые для каждого раунда в зависимости от линии, показаны в табл. 9.5(a).
Перестановку л можно представить в виде л(() = 9i + 5 (mod 16) В табл. 9.5(6)
определяются циклические сдвиги влево, используемые в каждом раунде. В таб-
лице показаны величины сдвигов для каждого шага, когда обрабатывается кон-
кретное 32-битовое слово Это не порядок, в котором проводятся сдвиги, — дан-
ный порядок зависит от порядка, в котором используются слова
Конструктивные решения RIPEMD-160
Полезно рассмотреть некоторые конструктивные решения, принятые разра-
ботчиками RIPEMD-160, чтобы получить представление об уровне детализации,
с которым приходится иметь дело при создании криптографически защищенных
функций хэширования. По поводу конструктивных особенностей RIPEMD-160 в
[DOBB96a] было указано следующее.
1. Две параллельные линии обработки данных, из пяти раундов каждая,
служат для того, чтобы увеличить сложность задачи нахождения коллизий
между раундами, которые могут применяться в качестве отправной точки
при отыскании коллизий функции сжатия.
9.3. RIPEMD-160
355
Таблица 9.5. Составляющие элементы RIPEMD-1t>0
(а) Перестановки слов сообщения
i 0 1 2 3. 4 5 6 7 8 9 10 11 12 13 14 15
рМ 7 4 13 1 10 б 15 3 12 0 9 5 2 14 11 8
я(0 5 14 7 0 9 2 11 4 13 б 15 S 1 10 3 12
Ливия Раувд 1 Раунд 2 Раунд 3 Раунд 4 Раунд 5
Левая Тождество Р р’ Р’ PJ
Правая п ря р’я р'ТГ
(6) Циклический сдвиг влево слов сообщения (обе линии обработки)
Рауи Д X.. X, X, X, х, X, X, X, X. X. х„ х„ Х„ х„ х„ х„
1 11 14 15 12 5 8 7 9 11 13 14 15 6 7 9 8
2 12 13 11 15 6 9 9 7 12 15 11 13 7 8 7 7
3 13 15 14 11 7 7 6 8 13 14 13 12 5 5 6 9
4 14 11 12 14 8 6 5 5 14 12 15 14 9 9 8 6
5 15 12 13 13 9 5 8 6 15 11 12 И 8 6 5 5
2. Для простоты эти две линии обработки данных используют, по сути, оди-
наковую логику, но разработчики решили, что при этом все же необходи-
мо обеспечить как можно больше различий между двумя линиями. Разра-
ботчики предусмотрели, что в ближайшем будущем вполне реальным де-
лом может оказаться анализ одной из двух линий и даже анализ до трех
раундов двух параллельных линий, но комбинация двух параллельных
линий должна выдержать атаки как раз из-за различий в линиях, пере-
численных ниже.
• Аддитивные константы двух линий неодинаковы (см. табл. 9,3).
• Порядок использования примитивных логических функций (f,,..., Л)
одной линии является обратным порядку их использования в другой.
• Порядок обработки 32-битовых слов блока сообщения неодинаков (см.
табл. 9.5(a)).
3. За исключением того, что вместо пяти слов используется четыре, действия
шага раунда RlPEMD-16fi (рис. 9.9) идентичны действиям шага раунда
MD5 (см. рис. 9.3), но с одной дополнительной особенностью — цикличе-
ским сдвигом слова С на 10 битовых позиций. Этот сдвиг призван проти-
востоять атакам, которые возможны для MD5 и опираются на анализ
старшего бита [BOER93]. Величина 10 была выбрана потому, что она не
применяется для других сдвигов.
356
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
4. Перестановка р (см. табл. 9.5(a)) такова, что два слова сообщения, близкие
в одном раунде, оказываются относительно далеко в следующем. Переста-
новка л (см. табл. 9.5(a)) выбиралась так, чтобы два слова сообщения, ока-
зывающиеся близкими в левой линии обработки, были на расстоянии не
менее семи позиций в правой линии.
5. Циклический сдвиг влево (см. табл. 9.5(6)) строился на основе следующих
критериев.
• Величины сдвигов лежат в диапазоне от 5 до 15 — сдвиг на величину
меньшую, чем 5, считается слабым-
• Величины сдвига слов сообщения различны для каждого из пяти раун-
дов, и не все сдвиги имеют одну и ту же четность.
• Сдвиги, применяемые к каждому слову, не должны обладать некото-
рыми структурами (например, суммарная величина сдвига не должна
делиться на 32).
• Как можно меньше констант сдвига должны делиться на 4.
Сравнение с MD5 и SHA-1
Алгоритм RIPEMD-160 во многом подобен как MD5, так и SILA 1, что вполне
естественно, так, как за основу всех трех алгоритмов взят алгоритм MD4. Глав-
ные различия и сходства алгоритмов перечислены в табл. 9.6 Относительно не-
которых аспектов данного вопроса можно сказать следующее.
Защищенность от атак с перебором всех вариантов. Все три алгоритма не-
уязвимы в отношении атак, основанных на нарушении слабой сопротив-
ляемости коллизиям. При 128-битовой длине профиля алгоритм MD5
весьма уязвим в отношении атак, направленных на нарушение сильной
Таблица 9.6. Сравнение MD5, SHA-1 и RIPEMD-160
MD5 SHA-1 R1PEMD-1G0
Длина профиля Базовая длина обра- батываемых блоков Число шагов Максимальная длина сообщения Число примитивных логических функций Число аддитивных констант Порядок следования бИТьь 128 битов 160 битов 160 битов
512 битов 512 битов 512 битов
64 (4 раунда по lfi шагов) 80 (4 раунда по 20 шагов) 160 (5 спаренных ра- ундов по 16 шагов)
DO 2м -1 битов 2м — 1 битов
4 4 б
64 4 9
Прямой Обратный Прямой
9.3. RIPEMD 160
357
сопротивляемости коллизиям* использующих парадокс задачи о днях ро-
ждения. тогда как S11A-1 и R1PEMD 160 оказываются надежными в пер-
спективе обозримого будущего.
Защищенность с точки зрения криптоанализа. Как уже отмечалось выше,
значительный прогресс был достигнут в области анализа MD5. При разра-
ботке RIPEMD-160 были приняты специальные меры, позволяющие про-
тивостоять известным методам криптоанализа. Хотя относительно прин-
ципов разработки SHA-1 известно немногое, этот алгоритм, похоже, тоже
достаточно защищен в плане известных методов криптоанализа. Использо-
вание двух линий обработки, что удваивает число выполняемых шагов,
делает RIPEMD-160 сложнее, а это должно сделать криптоанализ этого ал-
горитма более трудным делом в сравнении с криптоанализом SHA-1.
« Скорость. Все три алгоритма используют сложение по модулю 2й и про-
стые побитовые логические операции, которые хорошо реализуются в сис-
темах с 32-битовой архитектурой. Дополнительная сложность и дополни-
тельное число шагов SHA 1 и RIPEMD 1 би приводят к тому, что эти алго-
ритмы Действительно выполняются медленнее, чем MD5. В табл. 9.7
показаны результаты вычислений, проведенных ча процессоре Pentium с
частотой 266 МГц. Подобные сравнительные результаты были представле-
ны также в [BOSS96J.
Использование прямого или обратного порядка байтов. В MD5 и RIPEMD-
160 для интерпретации сообщения в виде последовательности 32-битовых
слов служит схема с прямым порядком следования байтов, тогда как в
SHA 1 принята схема с обратным порядком байтов. Ни один из этих под-
ходов не имеет безусловных преимуществ.
9.4. НМАС
В главе 8 мы рассмотрели пример алгоритма вычисления кода аутентичности
сообщения (МАС), основанного на использовании симметричного блочного тиф
ра, а именно алгоритм аутентификации данных, определенный в FIPS PUB 113.
Традиционно применяемый этим алгоритмом подход был наиболее общим под-
ходом к созданию МАС. В последние годы возрос интерес к методу вычисления
МАС ня основе криптографических хэш-кидов. Объясняется это следующими об-
стоятельствами .
Таблица 9.7. Сравнение скорости работы некоторых функций хэширования
(реализация наС+ +, процессор Pentium 266 МГц)
Алгоритм Мбит/сек
MD5 32,4
SHA-1 14,4
RIPEMD-160 13,6
Примечание, Программирование выполнил Вай Дэй (Wei Dei), результаты представлены
по адресу http:/.'www.eskimo.com/-weidai/benchniarks.txt
358
ГЛАВА 9 АЛГОРИТМЫ ХЭШИРОВАНИЯ
1. Криптографические функции хэширования, например MD5 и SHA-1, в ви-
де программной реализации обычно выполняются быстрее, чем симмет-
ричные блочные шифры, например DES.
2. Программные библиотеки для криптографических функций хэширования
широко доступны.
3. Для криптографических функций хэширования нет ограничений на экс-
порт из США или других стран, тогда как для симметричных блочных
шифров они предусмотрены, даже в случае использования шифра для вы-
числения значений МАС.
Функция хэширования типа MD5 не была разработана для использования в
качестве средства вычисления значений МАС и не может применяться для этого
непосредственно, поскольку не зависит от секретного ключа. Был предложен ряд
вариантов добавления секретного ключа в уже существующий алгоритм хэширо-
вания. Наибольшую поддержку получил подход, называемый HMAC [BELL96a,
BELL96bJ. Алгоритм НМАС был представлен в документе RFC 2104, принят как
обязательный для реализации в протоколе безопасности IP и используется в дру-
гих протоколах Internet, например ь SSL.
Цели разработки НМАС
В RFC 2104 представлен следующий список целей, преследовавшихся при
разработке алгоритма НМАС.
Возможность использовать без модификаций уже имеющиеся функции хэши-
рования. в частности функции хэширования, для которых имеются хорошо
работающие, открытые и широко доступные реализации в виде программ.
Возможность легкой замены встроенной функции хэширования на более
быстрые или более защищенные функции хэширования, если таковые по-
требуются или будут найдены.
• Сохранение скорости работы алгоритма, близкой к скорости работы соот-
ветствующей функции хэширования, без значительного ухудшения пока-
зателей скорости.
Возможность применения ключей и простота обращения к ним.
• Простота криптоанализа стойкости механизма аутентификации при ра-
зумных предположениях относительно встроенной функции хэширования.
Первые две цели являются важными с точки зрения приемлемости НМАС. В
алгоритме НМАС функция хэширования интерпретируется как “черный ящик”.
Это имеет два преимущества. Во-первых, уже существующая реализация функ-
ции хэширования может использоваться в виде модуля в НМАС. Поэтому при
таком подходе немалая часть Кидя НМАС оказывается уже готовой к примене-
нию без каких бы то ни было модификаций. Во-вторых, если придется когда-
нибудь заменять имеющуюся функцию хэширования в данной реализации
НМАС, то для этого погребуется только убрать имеющийся модуль функции хэ-
ширования и заменить его новым. Это можно сделать, например, если будет
найдена более быстрая функция хэширования. Но, что более важно, если безо-
9.4. НМАС
359
пасноеть встроенной функции хэширования будет скомпрометирована, надеж-
ность НМАС может быть восстановлена простой заменой встроенной функции
хэширования на более защищенную (например, заменой MD5 на R1PEMD 160).
Последняя из вышеперечисленных целей проекта фактически обеспечивает
основное преимущество НМАС в сравнении с другими схемами, основанными на
использовании хэширования. НМАС обеспечивает гарантированную защищен
ность при условии, что встроенная функция хэширования обладает определенной
криптографической стойкостью. Мы вернемся к этому вопросу позже, а сначала
рассмотрим структуру НМАС.
Алгоритм НМАС
На рис. 9.10 показана общая схема работы НМАС. Определим элементы схемы.
Н — встроенная функция хэширования (например, MD5, SHA-1 или
RIPEMD-160),
М — подаваемое на вход НМАС сообщение (включая биты заполнителя,
требуемые встроенной функцией хэширования),
Y, — / й блок М, 0<t<L-l,
L — число блоков в М,
b — число битов в блоке,
п — длина хэш-кода, порождаемого встроенной функцией хэширования,
К — секретный ключ; если длина ключа больше Ь, ключ подается на вход
функции хэширования, чтобы получить л-битовый ключ; рекомен-
дуется длина > л ,
К’ — ключ К с добавленными в начало нулями, чтобы в результате длина
получилась равной 0 битам,
ipad — значение 00110110, повторенное 6/8 раз,
opad — значение 010J1010, повторенное 6/8 раз.
В этом случае алгоритм НМАС можно представить формулой
НМАСК = Н[(К* ® opad) || Н[(К- Ф ipad) || MJ].
Подробно описать алгоритм можно следующим образом,
1. К значению К слева добавляются нули, чтобы получить 6-битовую строку
К* (например, если К имеет длину 160 битов и 6 = 512, то значение К бу-
дет дополнено 44 нулевыми байтами 0x00).
2. Значение К’ связывается операцией ХОН (побитовое исключающее
“ИЛИ") с ipad, в результате чего получается 6-битовый блок S,.
3. К S, присоединяется М.
4. К потоку, полученному на шаге 3, применяется функция Н.
5. Значение Кг связывается операцией XOR с opad, в результате чего полу-
чается 6-битовый блок S„.
6. Результат хэширования, полученный на шаге 4, присоединяется к S .
7. К потоку, полученному на шаге 6, применяется функция Н, и результат
подается на выход.
360
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
Рис. 9.10. Структура НМАС
Обратите внимание на то, что связывание с ipad (шаг 3) означает переключе-
ние половины битов К. Точно так же и связывание с opad означает переключе-
ние половины битов К, но для другого набора битов. В действительности в ре-
зультате пропускания S. и S, через функцию сжатия алгоритма хэширования
из К получается два ключа, сгенерированных псевдослучайным образом.
Для достаточно длинных сообщений алгоритм НМАС должен выполняться
приблизительно за то же время, за какое выполняется встроенная функция хэ-
ширования. В НМАС дополнительно три раза применяется функция сжатия хэ-
ширования (для S,, S, и блока, получаемого при внутреннем хэшировании).
Как показано на рис. 9.11, возможна более эффективная реализация. В дан-
ном случае заранее вычисляется два значения:
f(IV, (Kf®ipad))
и
f(IV. (К' ® oped)),
где f(cv, блок) обозначает функцию сжатия для функции хэширования, пара-
метрами которой являются л-битовая переменная сцепления и ft-битовый блок, а
на выходе получается л битовая переменная сцепления. Эти значения требуется
вычислять в самом начале и каждый раз, когда изменяется ключ. Заранее вы-
9.4. НМАС
361
Рис. 9.11, Эффективная реализация алгоритма НМАС
числяемые значения заменяют начальное значение (IV) функции хэширования.
Б этой реализации имеет место только идно дополнительное применение функ-
ции сжатия пи сравнению с обычной функцией хэширования. Эта более эффек-
тивная реализация особенно удобна в тех случаях, когда большинство сообще-
ний, для которых вычисляется значение МАС, оказываются короткими.
Защищенность НМАС
Защищенность любого алгоритма вычисления MAC, основанного на использо-
вании функций хэширования, во многом зависит от криптографической защи-
щенности встроенной функции хэширования. Привлекательность НМАС заклю-
чается в том, что разработчики смогли явно указать характер зависимости стой-
кости НМАС от защищенности встраиваемой функции хэширования.
Защищенность функции вычисления МАС в общем выражается в терминах
вероятности успеха фальсификации сообщения в рамках заданного времени, по-
траченного противником, и заданного набора нар ‘сообщение-МАС”, создавае-
мых с одним и тем же ключом. В [BELL96a], по сути, доказано, что для задан-
ного уровня усилий (время, пары “сообщение-МАС”) вероятность успешного за-
362
ГЛАВА 9 АЛГОРИТМЫ ХЭШИРОВАНИЯ
вершения атаки на НМАС соответствует вероятности успеха одной из следующих
атак на встроенную функцию хэширования.
1. Вычисление выхода функции сжатия при случайном, секретном и неиз-
вестном противнику значении IV'.
2. Выявление коллизий функции хэширования при случайном и секретном
значении ГУ.
Для атаки первого типа функцию сжатия можно рассматривать как эквива-
лент функции хэширования, применяемой к сообщению, состоящему из одного
6-битового блока. В данном случае значение IV в функции хэширования заменя-
ется секретным случайным n-битовым значением. Для атаки на такую функцию
хэширования требуется либо перебор всех ключей, уровень усилий для которого
имеет порядок 2”, либо подход, в основе которого лежит парадокс задачи о днях
рождения, что является частным случаем атаки второго типа, описанной ниже.
При атаке второго типа противник ищет два сообщения Ми М', порождаю-
щих одинаковые хэш-коды: Н(М)=Н(М*). Это атака, организуемая на основе
парадокса задачи о днях рождения, речь о которой: шла в главе 8. Как было по-
казано, для нее требуются усилия порядка 2"Л при п-битовой длине хэш-кода.
На основе этой оценки защищенность MD5 вызывает опасения, так как усилия
порядка 2м выглядят вполне реальными с точки зрения современных техноло-
гий Значит ли это, что 128-битовая функция хэширования типа MD5 будет не-
подходящей для использования в НМАС? Ответ на этот вопрос будет отрица-
тельным по следующей причине. Чтобы атаковать MD5, противник может вы-
брать любой набор сообщений и работать с ними в автономном режиме с
любыми имеющимися в его распоряжении вычислительными средствами, чтобы
обнаружить коллизию. Противник знает алгоритм хэширования и значение IV
По умолчанию, поэтому имеет возможность вычислить хэш-коды для любого
сгенерированного им сообщения. Но при атаке на НМАС противник не имеет
возможности генерировать пары сообшение-код в автономном режиме, посколь-
ку ему неизвестно значение К Таким образом, противнику придется наблюдать
последовательность сообщений, генерируемых алгоритмом НМАС с одним клю-
чом, и работать только с этими известными ему сообщениями. При длине хэш-
кода в 128 битов потребуется 2“ блоков сообщений. (2" битов), сгенерированных
с одним и тем же ключом. При скорости связи в 1 Гбайт/с для успешного за-
вершения такой атаки придется наблюдать непрерывный поток сообщений с не-
изменным ключом на протяжении около 250000 лет. Таким образом, если учи-
тывать время, в качестве встроенной функции хэширования для НМАС даже
предпочтительнее использовать MD5, а не SHA-1 или RIPEMD-160.
9.5. Задачи
1. Опишите различия между MD4 и MD5- Я частности, насколько, на ваш
взгляд, защищенность MD5 выше по сравнению с MD4 и почему?
2. В схеме, представленной на рис. 9.7, предполагается, что массив из 80 32-
битовых слов доступен для хранения значений W,, чтобы они могли быть
вычислены до начала обработки блока. Но предположим, что места не
9.5. задачи
363
хватает. В качестве альтернативы рассмотрите возможность применения
циклического буфера из 16 слов, в который изначально загружаются зна-
чения W,, , W,,. Разработайте алгоритм, с помощью которого для каж-
дого шага t вычисляется требуемое для ввода значение W,.
3. Для S11A-1 вычислите значения Wia, Wlt, W„ , Wie.
4. Пусть a,a2a3at — это 4-байтовое представление 32-битового слова. Каждое
а, можно рассматривать как целое число в диапазоне от 0 до 265, пред-
ставленное в двоичном виде. В архитектуре, использующей прямой поря-
док следования байтов, такое слово является целым числом
а^”* + а, 2” ч а32“ + а..
5. В архитектуре, использующей обратный порядок следования байтов, это
же слово представляет число
а.2!' 4 а32‘° + а,2’ + а, .
• В MD5 и RIPEMD-160 используется прямой порядок следования байтов,
Важно, чтобы профиль сообщения не зависел от лежащего в основе
представления. Поэтому для выполнения операций сложения по моду-
лю 2 в системах с архитектурой, основанной на обратном порядке сле-
дования байтов, в алгоритмы MD5 или RIPEMD-160 приходится вно-
сить определенные коррективы. Допустим, X = XiXjXjX, и Y = у,у£у,у, •
Покажите, как должно выполняться сложение (X + Y) в MD5 на ма-
шинах с архитектурой, предусматривающей обратный порядок следова
ния байтов.
• В SHA-1 принят обратный порядок следования байтов. Покажите, как
должно выполняться сложение (X т Y) в SHA 1 на машинах с архитек-
турой, использующей прямой порядок следования байтов.
364
ГЛАВА 9. АЛГОРИТМЫ ХЭШИРОВАНИЯ
ГЛАВА
Цифровые подпи-
си и протоколы
аутентификации
Необходимость защиты от губительного влияния чужестран
цев является - элементарным проявлением благоразумия. По-
этому прежде, чем позволить чужестранцам посещение какого
бы то ни было района или ли крайней мере, перед тем, как раз-
решить им свободно общаться с местными жителями, урожен
цами племени выполняются определенные церемонии, целью ко-
торых является лишение чужестранцев их магический силы,
или, так. сказать, дезинфекция той испорченной атмосферы,
которой, как предполагается, они окружены.
Джвймс Джордж Фрейзер. Золотой сук (The Golden Bough)
Наиболее важной областью применения криптогра-
фии с открытым ключом являются цифровые под-
писи. Цифровая подпись обеспечивает целый ком-
плекс защиты, который было бы довольно сложно осущест-
вить любым другим способом Мы начинаем эту главу с об-
зора возможностей использования цифровых подписей. За-
тем мы обсудим протоколы аутентификации, многие из ко-
торых основаны па применении цифровой подписи.
Наконец, мы рассмотрим стандарт цифровой подписи
(DSS — Digital Signature Standard).
TWC^M^pOBbie
Iребования
Аутентификация сообщений защищает две обмениваю-
щиеся сообщениями стороны от любой третьей, но не обес-
печивает защиту каждой из сторон от другой. Здесь имеется целый ряд возмож-
ностей для возникновения конфликтов.
Например, предположим, что Джон посылает Мэри удостоверенное сообще-
ние, используя одну из схем, показанных на рис. 8.4 (см. главу 8). Рассмотрим
следующие конфликты, которые могут при этом возникать.
1. Мэри может создать фальшивое сообщение и заявить, что оно пришло от
Джона. Для этого Мэри нужно просто составить сообщение и присоединить
к нему код аутентичности с применением ключа, который Джон и Мэри
используют совместно.
2. Джон может отрицать авторство отосланного сообщения. Поскольку у Мэ-
ри есть возможность фальсифицировать сообщение, невозможно доказать,
что Джон на самом деле посылал сообшение.
Оба эти сценария касаются вопросов легитимности. Вот пример первого из сце-
нариев: при выполнении электронной пересылки денег получатель увеличивает
значение пересылаемой суммы и заявляет, что от отправителя пришла более зна-
чительная сумма. Примером второго сценария может служить ситуация, когда со-
обшение электронной Почты содержит указания биржевому маклеру по поводу
выполнения транзакции, которая впоследствии оказывается убыточной. Поэтому
отправитель заявляет, что такое сообщение им никогда не отправлялось.
В ситуациях, когда нет полного доверия между отправителем и получателем,
требуется нечто большее чем простая аутентификация. Наиболее привлекатель-
ным решением этой проблемы оказывается цифровая подпись. Цифровая под-
пись является аналогом подписи, сделанной от руки. Она должна обеспечивать
следующие возможности.
• Возможность установить автора, а также дату и время подписи.
а Возможность установить достоверность содержимого сообщения на время
подписи.
Возможность проверки подписи третьей стороной на случай возникновения
спора.
Таким образом, функции цифровой подписи охватывают, в частности, и
функции аутентификации.
На основе этих свойств мы можем сформулировать следующие требования,
выдвигаемые к цифровой подписи.
* Подпись должна быть двоичным кодом, который зависит от подписывае-
мого сообщения
Подпись должна использовать некоторую информацию, уникальную для
отправителя, чтобы предотвратить возможность как фальсификации, так и
отрицания авторства.
Цифровую подпись должно быть относительно просто произвести.
• Цифровую подпись должно быть относительно просто распознать и проверить.
С точки зрения вычислений должно быть нереально фальсифицировать
цифровую подпись ни с помощью создания нового сообщения для имею-
Збб
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
щейся цифровой подписи, ни с помощью создания фальшивой цифровой
подписи для имеющегося сообщения.
Экземпляр цифровой подписи должно быть удобно хранить в запоминаю-
щем устройстве.
Защищенная функция хэширования, встроенная в соответствующую схему,
подобную показанным на рис. 8.5(b) или 8.5(г) (см. главу 8), удовлетворяет этим
требованиям.
Для реализации идеи цифровой подписи было предложено множество подхо-
дов, которые можно разбить на две категории: с непосредственной и арбитраж-
ной логикой.
Непосредственная цифровая подпись
Непосредственная цифровая подпись подразумевает участие только обмени-
вающихся данными сторон (источник, адресат). Предполагается, что адресат
знает открытый ключ источника. Цифровая подпись может быть сформирована с
помощью шифрования всего сообщения личным ключом отправителя (см.
рис. 8.1(b)) или с помощью шифрования хэш-кода сообщения личным ключом
отправителя (см. рис. - 5(b)).
После этого конфиденциальность может быть обеспечена шифрованием всего
сообщения вместе с подписью — либо с помощью открытого ключа получателя
(шифрование с открытым ключом), либо с помощью общего секретного ключа
(традиционное шифрование) (см. рис. 8.1(г) и 8.5(г)). Обратите внимание на то,
что важно сначала выполнить функцию подписи и только потом — внешнюю
функцию, обеспечивающую конфиденциальность. В случае возникновения раз-
ногласий некоторая третья сторона должна рассмотреть сообщение и подпись.
Если вычислять подпись для шифрованного сообщения, то третьей стороне, что-
бы прочитать оригинальное сообщение, потребуется доступ к ключу дешифрова-
ния. Если же подпись является внутренней операцией, получатель сможет со-
хранить сообщение в виде открытого текста и подпись для возможного исполь-
зования в дальнейшем в процессе разрешения конфликта.
Все до сих пор предлагавшиеся схемы непосредственного применения цифро-
вой подписи имеют общее слабое место: пригодность всей Схемы зависит от за-
щищенности личного ключа отправителя. Если отправитель впоследствии решит
отрицать отправку конкретного сообщения, оя может заявить, что личный ключ
был утерян или украден и поэтому кто-то другой с помощью этого ключа фаль-
сифицировал подпись. Для того чтобы воспрепятствовать или по крайней мере
помешать применению такого коварного приема, можно прибегнуть к админист-
ративным средствам контроля, имеющим отношение к защите личных ключей,
но угроза при этом все равно полностью не устраняется. Одной из возможностей
здесь является требование, чтобы каждое подписанное сообщение включало мет-
ку даты и времени, а также требование немедленно сообщать с любом случае
компрометации ключа в уполномоченный центр.
Другая угроза заключается в том, что личный ключ может быть действительно
похищен у X в момент времени Т. После этого противник получает возможность ото-
слать сообщение с подписью X, помеченное временем более ранним или равным Т.
10 1. ЦИФРОВЫЕ ПОДПИСИ
367
Арбитражная цифровая подпись
Проблемы, возникающие при использовании непосредственных цифровых
подписей, могут решаться с помощью использования арбитра (третьей стороны).
Как и для непосредственных цифровых подписей, имеется множество схем
применения арбитражных цифровых подписей. В общем, они все строятся сле-
дующим образом. Каждое подписанное сообщение отправителя X адресату Y
сначала попадает к арбитру А, который подвергает сообщение и подпись к нему
тестированию по ряду критериев, чтобы проверить достоверность источника и
содержимого сообщения. После этого сообщение датируется и посылается Y с
указанием того, что это сообщение было проверено и удовлетворило критериям
арбитра. Наличие А решает проблему, возникающую в схемах использования
непосредственных цифровых подписей, когда X может отказаться от авторства
своего сообщения.
В таких схемах арбитр играет исключительно важную роль, и все участвую-
щие В обмене данными стороны должны иметь очень высокую степень доверия к
механизму арбитражного устройства. Это требование могло бы быть удовлетво-
рено при использовании высоконадежной системы типа той, которая будет рас-
смотрена в главе 16.
В табл. 10.1, данные которой основаны на сценариях, описанных в [AKL83J и
[MITC92], представлено несколько примеров схем арбитражных цифровых под-
писей. В первом примере используется традиционное шифрование. Предполага-
ется, что отправитель X и арбитр А используют общий секретный ключ К„, а А
и Y — общий секретный ключ К,т. Отправитель X создает сообщение М и вы-
числяет значение хэширования Н(М). Затем X передает сообщение с добавленной
к нему подписью арбитру А. Подпись складывается из идентификатора X и зна-
чения хэширования, и все это шифруется с использованием Км. Арбитр А де-
шифрует подпись и проверяет значение хэширования, чтобы убедиться в досто-
верности сообщения. Потом А передает сообщение адресату Y в зашифрованном
с помощью К,у виде. Это сообщение включает IDX , оригинальное сообщение X
и метку даты/времени Получатель Y может дешифровать его, чтобы восстано-
вить сообщение и подпись. Метка даты/времени информирует Y, что это сооб-
щение получено своевременно и не является воспроизведением. Теперь Y может
сохранить М и подпись. В случае спора Y, заявляющий, что получил М ит X,
отправит А сообщение следующего содержания:
Ek.JIDx ||M||Ek„[IDx II Н(М)]].
Арбитр использует К„ , чтобы восстановить FDX, М и подпись, а затем обраща-
ется к помощи Кх,, чтобы дешифровать подпись и проверить хэш-код. В этой
схеме У не может непосредственно проверить подпись X — для него подпись при-
сутствует исключительно в качестве элемента, к которому можно будет обратиться
в случае возникновения конфликта для его разрешения. Получатель Y считает со-
общение от X подлинным, поскольку оно пришло от А. Этот сценарий предполага-
ет, что обе стороны должны иметь очень высокую степень доверия к А.
• X должен верить, что А не разгласит Ки и не будет генерировать фаль-
шивые подписи вида ЕКхж |1DX II Н(М)].
368
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
Таблица ЮЛ. Методы использования арбитражной цифровой подписи
(а) Традиционное шифрование, арбитр может видеть сообщение
(1) X—»А: M||EK„[IDX||H(M)]
(2) А -> Y : Er.JIDx || М || ЕК„ППХ |1 Н(М)] || Т]
(б) Традиционное шифрование, арбитр не видит сообщения
(1) X —» А : Шх || ЕКДМ] || Er„[1Dx || ЩЕК„ГМ])1
(2) А —» Y EKJIDX || ЕК.ДМ] || EK„[1DX || Н(ЕК„[М])] || TJ
(в) Шифрование с открытым ключом, арбитр не видит сообщения
(1) X —> A IDX || ЕквДЮх II ЕквДЕкхДМЩ
(2) Ан Y : ЕкдДПЭх || Еки,(Екн,[М]) II Т]
Обозначении:
X — отправитель,
Y — получатель,
А — арбитр,
М — сообщение.
Y должен верить, что А будет посылать ЕК1ДП\ || М || EKkJIDx || Н(М)] || Т]
только в тех случаях, когда значение хэширования оказывается правиль-
ным и подпись действительно была выполнена отправителем X.
Обе стороны должны быть уверены, что А будет честно разрешать конфликты.
Если арбитр действительно будет отвечать таким ожиданиям, то X может
быть уверен, что никто не сможет фальсифицировать его подпись, a Y может
быть уверен, что X не сможет дезавуировать свою подпись.
Предыдущий сценарий подразумевает, что А может прочитать сообщения от X
к Y, и на самом деле то же самое может сделать любой перехватчик сообщений. В
табл. 10.16 показан сценарий, в котором, как и в предыдущем сценарии, обеспе-
чивается арбитраж, нс, кроме того, гарантируется и конфиденциальность. В дан-
ном случае предполагается, что X и Y используют общий секретный ключ Кху.
Теперь X передает арбитру А идентификатор, экземпляр сообщения, зашифрован-
ный с помощью Кху, и подпись. Подпись складывается из идентификатора и зна-
чения хэширования шифрованного сообщения, и все это шифруется с использова
нием К„. Как и прежде, А дешифрует подпись и проверяет значение хэширова-
ния, чтобы проверить подлинность полученного сообщения. В данном случае А
работает только с шифрованной версией сообщения, и поэтому не имеет возможно-
сти прочитать его. После проверки А передает адресату Y то, что было получено от
X. добавив метку даты/времени и зашифровав все это с помощью Кву.
Не имея возможности прочитать сообщение, арбитр все. же оказывается спо-
собным предотвратить обман и со стороны X, и со стороны Y. Проблемами, ко-
торые остаются здесь от первого сценария, является сговор арбитра с отправите-
лем с целью отрицания факта отправки подписанного сообщения, или сговор ар-
битра с получателем с целью фальсификации подписи отправителя.
10.1. ЦИФРОВЫЕ ПОДПИСИ
369
Все только что упомянутые сложности могут быть преодолены с помощью
схемы с открытым ключом, один из вариантов которой показан в табл. 10.1(b).
В этом случае X дважды шифрует сообщение М — сначала с помощью личного
ключа X (ключа KRK), а потом с помощью открытого ключа Y (ключа KUy).
Это будет подписанная секретная версия сообщения. Данное подписанное сооб-
щение наряду с идентификатором X шифруется снова с помощью KRX и вместе
с IDX посылается А. Внутреннее, дважды шифрованное сообщение защищено от
арбитра (и любого другого тица, кроме Y). Однако можно снять внешнее шифро-
вание и убедиться, что сообщение наверняка пришло от X (поскольку только X
имеет KR,). Арбитр А должен убедиться в том, что пара личный/открытый
ключи X еще действительна и, если это так, проверить само сообщение. Затем А
передает сообщение Y, шифруя его с помощью KR.. Сообщение включает 1D,,
дважды шифрованное сообщение и метку даты/времени.
Эта схема имеет ряд преимуществ по сравнению с двумя предыдущими. Во-
первых, в совместном распоряжении сторон до начала обмена данными нет ника-
кой информации, что предотвращает возможность сговора с целью обмана. Во
вторых, некорректно датированное сообщение не может быть передано, даже если
скомпрометирован, если только не скомпрометирован KR,. Наконец содер-
жимое сообщения отХк Y является секретом для А, как и для всех остальных.
10.2. Протоколы аутентификации
Базовые схемы, описанные в главе 8, применяются во множестве приложе-
ний, включая приложения цифровой подписи, описанные в предыдущем разде-
ле. Имеются и другие применения этих схем, причем число таких применений
растет. В этом разделе мы рассмотрим два общих случая (взаимная аутентифи-
кация и односторонняя аутентификация) и разберемся с некоторыми вопросами
аутентификации, возникающими в каждом из этих случаев.
Взаимная аутентификация
Важной областью приложений являются протоколы взаимной аутентифика-
ции. Такие протоколы дают возможность обеим участвующим в обмене данными
сторонам убедиться в подлинности друг друга и обменяться сеансовыми ключа-
ми. Эта тема уже обсуждалась в разделах 5-3 (традиционные методы; см главу
5) и 6.3 (схемы с открытым ключом; см. главу 6). Там в центре внимания было
распределение ключей. Мы возвращаемся к этой теме, чтобы рассмотреть здесь
возможности аутентификации в более широком контексте.
В задаче авторизованного распределения ключей главными оказываются две
проблемы: конфиденциальность и своевременность. Чтобы предотвратить воз-
можность имитации и не допустить компрометации сеансовых ключей, значи-
тельная часть информации по аутентификации и сеансовым ключам должна пе-
редаваться в шифрованном виде. Это предполагает наличие секретных или от-
крытых ключей, используемых с этой целью и уже существующих до начала
обмена данными. Вторая проблема, своевременность, важна ввиду угрозы воз-
можности воспроизведения сообщения. Такое воспроизведение п самом худшем
370
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСКИ ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
случае может позволить противнику скомпрометировать сеансовый ключ или
выступать от имени другой стороны Как минимум успешное воспроизведение
сообщения может разрушить взаимодействие сторон с помощью представления
сторон сообщениями, которые кажутся подлинными, но на самом деле таковыми
не являются.
В [GONG93] приводится список следующих примеров атак с использованием
воспроизведения сообщений.
Простое воспроизведение. Противник просто копирует сообщение и позже
воспроизводит его.
Воспроизведение, которое можно зарегистрировать. Противник может
воспроизвести сообщение с меткой даты/времени внутри реального окна
времени
Воспроизведение, которое вельза обнаружить. Эта ситуация может иметь
место ввиду того, что оригинальное сообщение можно принудительно за-
держать, чтобы онь не достигла адресата, тогда адресат получит только
воспроизведенное сообщение
Возвратное воспроизведение без модификации. Эго воспроизведение сооб-
щения, возвращаемое назад отправителю. Такой вид атаки оказывается
возможным, когда используется традиционное шифрование и для отправи-
теля не слишком просто отличить по содержимому посылаемые сообщения
от получаемых.
Одним из способов противодействия атакам с воспроизведением сообщений
является присоединение к каждому сообщению порядкового номера, используе-
мого в процессе аутентификации Новое сообщение принимается только тогда,
когда оно имеет соответствующий порядковый номер. Трудность здесь в том, что
при этом каждой из сторон необходимо отслеживать порядковые номера для
каждого из отправителей, с которыми приходится иметь дело. Из-за такой до-
полнительной нагрузки порядковые номера в процессах аутентификации и обме-
на ключами обычно не используются. Вместо этого применяется >дин из сле-
дующих общих подходов
Метки даты/времени. Сторона А принимает сообщение как новое, только
если сообшение содержит метку даты/времени, значение которой, по мне-
нию А, достаточно близко к значению текущего времени в системе А. При
этом подходе необходимо, чтобы часы участвующих в обмене данными
сторон были синхронизированы.
Запрос/ответ. Сторона А, ожидающая нового сообщения от В, сначала по-
сылает В оказию (запрос) и требует, что следующее сообщение, полученное
от В (ответ), содержало соответствующее корректное значение оказии.
Тут можно возразить (см., например, ГЕАМУ2а]), что метки даты/времени
нельзя использовать для приложений, основанных на применении протокола с
установлением логических соединений, из-за внутренних свойств этой техноло-
гии. Во-первых, требуется какой-нибудь протокол, обеспечивающий синхрониза-
цию часов процессоров разных систем. Этот протокол должен быть, с одной сто-
роны, толерантным к отказам, чтобы распознавать сетевые ошибки, а с дру-
10.2. ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
371
гой — защищенным, чтобы противостоять атакам враждебной стороны. Во
вторых, шансы успешного завершения атак возрастают, когда возникают вре-
менные нарушения синхронизации из-за отказов часового устройства одной из
сторон. Наконец, из-за спонтанных и непредсказуемых задержек в сетях, что
для сетей впотне естественно, нельзя ожидать, что распределенные часы могут
поддерживать точную синхронизацию. Поэтому любая процедура, использующая
метки даты/времени, должна допускать для окна времени достаточно широкие
рамки, чтобы учитывать возможность задержек в сети, но в то же время эти
рамки должны быть достаточно узкими, чтобы минимизировать возможности
для атак.
В то же время подход с использованием запросов/ответов не годится для при-
ложений, работающих с протоколами без установления соединений, поскольку в
таких приложениях потребуется очень большое число дополнительных подтвер-
ждений перед передачей любой порции данных, что сводит на нет главные пре-
имущества модели обмена данными без установления соединений. Для таких
приложений лучшим подходом является применение некоторого надежного сер-
вера времени и согласованные попытки каждой из сторон содержать свои часы в
синхронизации с часами такого сервера (см., например, [LAM92b]).
Подходы на основе традиционного шифрования
Как было показано в разделе 5.3 (см. главу 5), для того, чтобы обеспечить
конфиденциальность связи в распределенной среде, можно использовать двух-
уровневую иерархию ключей традиционного шифрования. В общем случае эта
стратегия предполагает наличие и использование надежного центра распределе-
ния ключей (ЦРК). Каждая участвующая в обмене данными сторона в сети име-
ет свой секретный ключ, называемый главным ключом и используемый совме-
стно с ЦРК. ЦРК несет ответственность за создание ключей, которые действуют
в течение недолгого времени для соединений между двумя сторонами и которые
называются сеансовыми ключами, а также за распределение таких ключей неко-
торым защищенным с помощью главных ключей способом Такой подход явля-
ется общепринятым. Как пример его использования мы рассмотрим в главе 11
систему Kerberos. Материал этого раздела будет полезен для лучшего понимания
механизма работы системы Kerberos-
На рис, 5.9 (см. главу 5) показана схема, изначально предложенная Нидхэмом
(Needham) и Шредером (Schroeder) [NEED 7 8] для распределения секретных ключей с
помощью ЦРК, что. как уже упоминалось в главе 5, включает элементы аутентифи-
кации Соответствующий протокол1 можно представить следующим образом.
1. А —» ЦРК: IDa || IDB || Nt
2. ЦРК-> А: EK.[K,||IDB||N1||EKb[KJ||IDA]]
3. А—» В: ЕКь[К. || ГОА]
4. В-»А: Ek.[N2]
5. А—» В: £x.[f(N2)J
_________________________ :
1В этом случае принят следующий формат: шаг коммуникационного процесса, в котором Р по-
сылает Q сообщение М, представляется в виде Р —» Q- М
372
ГЛАВА 1U. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
Секретные ключи Ек_ и ЕК1 используют совместно А и ЦРК и В и ЦРК соот-
ветственно Целью применения протокола является защищенная передача сеан-
сового ключа К, сторонам А и В. Сторона А получает новый сеансовый ключ на
шаге 2 схемы. Сообщение, передаваемое на шаге 3 схемы, может быть дешифро-
вано и прочитано только стороной В. Шаг 4 отражает знание ключа К, стороной
В, а шаг 5 убеждает сторону В в том, что ключ К, известен стороне А. и в том,
что соответствующее сообщение является новым, так как в нем используется
оказия N,. Вспомните, что при описании соответствующей схемы в главе 5 было
показано, что целью шагов 4 и 5 является предотвращение возможности воспро-
изведения сообщений определенного типа противником. В частности, если про-
тивник сможет перехватить сообщение на шаге 3 и затем воспроизвести его, это
может определенным образом нарушить действия В.
Несмотря на подтверждения, выполняемые в ходе шагов 4 и 5, этот протокол все
еще оказывается уязвимым в отношении атак с воспроизведением сообщений неко-
торого специального вида. Предположим что противник X каким-то образом смог
скомпрометировать старый сеансовый ключ. Скорее всего, такая возможность гораз-
до менее вероятна по сравнению с тем, что противник сможет просто перехватить и
записать сообщение, передаваемое на шаге 3. Однако такая угроза потенциально все
же существует. Противник X может выступить от лица А и обмануть В, заставив
использовать старый ключ, для чего просто воспроизведет в соответствующем виде
шаг 3. Если В не помнит точно все предыдущие сеансовые ключи, использовавшиеся
с А, то В не сможет определить, что полученное сообщение является воспроизведе-
нием. Если некто С может перехватить сообщение квитирования на шаге 4, то он
сможет отправить ответ (шаг 5) от лица А. После этого С получает возможность по-
сылать поддельные сообщения В, которые бу дул казаться В пришедшими от А ввиду
использования достоверного сеансового ключа.
Деннинг (Denning) в [DENN81, DENN82] предлагает устранить этот недоста-
ток путем модификации протокола Нидхэма-Шредера, которая заключается в
том. что на шагах 2 и 3 добавляются метки даты/времени. При этом предпола-
гается, что главные ключи К. и Кь являются защищенными, а вся процедура
складывается из следующих шагов.
1. А -ч ЦРК; 1Da || TDB
2. ЦРК->А- Ек,[К.||ГОв||Т||ЕКь[К.||1Оа||Т]]
3. А -> В: EKJK. IIIDA II Т]
4. В—» A: EKJN,J
5. А—>В; EK.[f(N,)J
Здесь Т является меткой даты/времени, использование которой убеждает сто-
роны В и А в том, что сеансовый ключ был создан только что. Таким образом,
как участник А, так и участник В будут знать, что данная сессия распределения
ключей соответствует текущему времени. Стороны А и В могут убедиться в соот-
ветствии времени, проверив неравенство
| Время - Т | < X + Д42,
где Д1, обозначает оценку для среднего отклонения показаний локальных часов
(А или В) от показаний часов ЦРК, a At, — ожидаемое время задержки - сети.
10.2. ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
373
Каждый узел может настраивать свои часы, сравнивая их с часами некоторого
стандартного справочного источника. Ввиду того что метка даты/времени Т
шифруется с использованием защищенных главных ключей, противник, даже
зная старый сеансовый ключ, не может добиться успеха из-за того, что воспро-
изведение сообщения, передаваемого на шаге 3, будет сразу же обнаружено В
как не соответствующее времени получения.
В заключение отметим, что шаги 4 и 5 не входили в оригинальную схему
[DENN81], а были добавлены позже [DENN82J. Эти действия подтверждают по-
лучение сеансового ключа стороной В.
Протокол Деннинга, по видимому, обеспечивает более высокий уровень безо-
пасности по сравнению с протоколом Нидхэма-Шредера. Однако здесь возникает
новая проблема: эта усовершенствованная схема требует зависимости от часов,
показания которых должны быть синхронизированы в сети. В [GONG92] указы-
вается на возникающий при этом риск. Этот риск ьытекает из того факта, что
распределенные часы могут стать рассинхронизированными либо в результате
преднамеренных действий противника, либо в результате отказа часов или ме-
ханизма синхронизации.' Проблема возникает тогда, когда часы отправителя
опережают часы предполагаемого адресата. В этом случае противник может пе-
рехватить сообщение, идущее о г отправителя, и воспроизвести это сообщение
позже, когда метка даты/времени в сообщении станет соответствовать текущим
показаниям часов узла адресата. Такое воспроизведение может привести к не-
предсказуемым результатам Гонг (Gong) называет такие атаки атаками задерж-
ки-воспроизведения.
Одним из способов противостоять подобным атакам является введение требо-
вания регулярного сравнения показаний часов сторон с показаниями часов ЦРК.
Другим вариантом, когда нет необходимости синхронизации часов, является
применение протоколов подтверждения связи, подразумевающих оказии. Такой
вариант оказывается неуязвимым в отношении атак задержки-воспроизведения,
поскольку оказии, которые получатель выберет в будущем, не могут быть из-
вестны отправителю заранее Протокол Нидхэма Шредера тоже использует ока-
зии, но, как мы уже видели, имеет другие слабые места.
В [KEHN92] была сделана попытка учесть моменты, связанные с атаками за-
держки воспроизведения, и исправить в связи с этим недостатки протокола
Нидхэма-Шредера. Впоследствии в описанной там схеме были обнаружены несо-
гласованности и в [NEUM93a] была предложена усовершенствованная страте-
гия? Теперь протокол выглядит следующим образом.
1. А—» В. ID, || N.
2. В-^ЦРК. IDa||Nb||EKbLIDA||N. ||Тк]
3. ЦРК—>А: EK.[IDB||Na||K,||Tb]||EKb[IDA ||Ks||Tb]||Nb
4. А —» В: EKb[IDA|IK« ||Tb]||EK,[Nb]
2
Такие вещи могут случаться и действительно случаются. В последнее время стало известно о
том. что в целим ряде компьютеров и других электронных систем, где требуется отслеживать
дату и время, были установлены дефектные микросхемы, которые могли пропускать идин день
INEUM90J.
з
На самом деле не так уж и про: то здесь сделать так, чтобы все работало правильно.
374
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
Давайте проследим шаг за шагом за теми действиями, которые необходимо
выполнить при таком обмене,
1. Сторона А инициирует идентификационный процесс, генерируя оказию
N, н посылая ее вместе со своим идентификатором стороне В в виде от-
крытого текста. Эта оказия будет возвращена стороне А в шифрованном
сообщении, включающем сеансовый ключ, чтобы сторона А могла убе-
диться в соответствии этого ключа текущему времени.
2. Сторона В сообщает в ЦРК о том, что требуется сеансовый ключ. Соответ-
ствующее сообщение в ЦРК включает идентификатор В и оказию Nb. Эта
оказия будет возвращена В в шифрованном сообщении, включающем сеан-
совый ключ, чтобы у В имелась возможность убедиться в соответствии
этого ключа текущему времени. Сообщение В- направляемое в ЦРК, также
включает блок, зашифрованный с помощью секретного ключа, используе-
мого совместно В и ЦРК. Этот блок служит для того, чтобы дать указание
ЦРК выдать удостоверение стороне А, поэтому в блоке указывается пред-
полагаемый получатель удостоверения, предлагаемый срок действия удо-
стоверения. а также оказия, полученная от А
3. ЦРК пересылает стороне Л оказию В и блок, шифрованный с использова-
нием секретного ключа, который В применяет совместно с ЦРК. Этот блок
выполняет роль “мандата”, который А может использовать для продолже-
ния процесса идентификации, как будет видно ниже. ЦРК также посылает
стороне А блок, шифрованный с помощью секретного ключа, используемо-
го совместно А и ЦРК. Этот блок убеждает сторону А в том, что сторона В
получила начальное сообщение А (ввиду присутствия в блоке Юь ) и что
это сообщение соответствует времени и не является воспроизведением
(N*), а также сообщает А сеансовый ключ (К,) и пределы времени его ис-
пользования (Тъ).
4- Сторона А пересылает мандат стороне В вместе с оказией стороны В, шиф-
рованной полученным сеансовым ключом. Мандат предоставляет участнику
В секретный ключ, который служит для того, чтобы дешифровать EK<[Nb] и
проверить значение оказии. Тот факт, что оказия участника В приходит в
шифрованном с помощью сеансового ключа виде, убеждает его в том, что
сообщение пришло от участника А и не является воспроизведением.
Этот протокол обеспечивает для обеих сторон (А и В) эффективный и безо-
пасный способ начать сеанс обмена данными с использованием секретного сеан-
сового ключа Кроме того, протокол предоставляет стороне А ключ, который
может служить и для последующей идентификации стороны В и позволит избе-
жать необходимости устанавливать контакт с сервером аутентификации повтор-
но. Предположим, что участники А и В сначала устанавливают сеанс связи с
помощью описанного выше протокола, а затем завершают этот сеанс. Позже, но
в рамках границ времени, указанных протоколом, сторона А намеревается на-
чать новый сеанс связи со стороной В, Для этого выполняются действия в соот-
ветствии со следующим протоколом.
10.2. ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
37S
1. A—> В.
2. В—» A:
3. A —> В
EKb[IDA|!K.||Tb], n;
N'b, EK,[N'J
ek.[n;i
Когда участник В получает сообщение на шаге 1, он проверяет, что мандат не
просрочен. Новые оказии N, и Nb убеждают обе стороны в том, данный процесс
не является атакой воспроизведения.
В приведенном выше обсуждении время, представленное значением Т„, явля-
ется временем часов участника В. Таким образом, данная метка даты/времени
не требует синхронизации часов, так как стороне В приходится проверять толь-
ко метки даты/времени, сгенерированные в своей системе.
Подходы ид основе шифрования с открытым ключом
В главе 6 был представлен подход, позволяющий использовать схемы шифро-
вания с открытым ключом для распределения сеансовых ключей (см. рис. 6.15).
Соответствующий протокол предполагает, что в распоряжении каждой из двух
сторон имеется текущий открытый ключ другой стороны. Но на практике требо-
вание выполнения этого условия может оказаться неудобным.
В [DENN81] предлагается следующий протокол, использующий метки да-
ты/времени.
1. А —> aS: IDa И IDb
2. AS —> A: EBeJID4||KU. || T] i| Екв„[ГОп || KU„ || T]
3. A —> E ERRJJDA||KUa |l T] !| EKKu[7Db || KUb || T] || Екъ-ь[ЕквДКа И T]]
В этом случае центральная система выступает в качестве сервера аутентифи-
кации (AS), поскольку она в действительности не несет ответственности за рас-
пределение секретных ключей. Скорее, AS обеспечивает сертификацию откры-
тых ключей. Сеансовый ключ выбирается и шифруется стороной А, поэтому нет
риска его разглашения со стороны системы AS. Метки даты/времени защищают
от воспроизведения скомпрометированных ключей.
Этот протокол компактен, но, как предыдущие, требует синхронизации часов.
Другой подход, который предложили By (Woo) и Лэм (Lam) в [WOO92a], предпола-
гает применение оказий. Соответствующий протокол состоит цз следующих шагов.
1. А—>ЦРК: 1Da||IDb
2. ЦРК—»А: EKR,uJIDB |l KUb]
3. А->В: EKUb[N. || ША]
4. Н^ЦРК: IDb||lDA ||EKb.„alNJ
5. ЦРК -* В: E^JID* || KU„] || Е^ДЕ^[N. || К. || IDJ]
6. Е—>А. EKU.[EKB,uJN. || К. || IDB] || Nb]
7. А—» В EF,LNb]
На шаге 1 сторона А информирует ЦРК о своем намерении установить безо-
пасное соединение со стороной В. ЦРК возвращает участнику А экземпляр сер-
тификата открытого ключа стороны В (шаг 2). Используя открытый ключ уча-
стника обмена информацией В, сторона А информирует сторону В о намерении
376
ГЛАВА 10 ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
установить соединение и, посылает оказию N, (шаг 3). На шаге 4 сторона В за-
прашивает у ЦРК сертификат открытого ключа стороны А и сеансовый ключ.
Соответствующее сообщение участника В включает оказию участника А, чтобы
ЦРК мог пометить выдаваемый сеансовый ключ этой оказией. Оказия защища-
ется шифрованием с использованием открытого ключа ЦРК, На шаге 5 ЦРК
возвращает стороне В экземпляр сертификата открытого ключа стороны А и ин-
формацию (N,, К„ Юв} Эта информация, по существу, доказывает, что К, яв-
ляется секретным ключом, сгенерированным ЦРК от имени стороны В и связан-
ным с N,, причем связывание Кь с N, призвано убедить сторону А в том, что
ключ К, является новым. Эта тройка значений шифруется с помощью личного
ключа ЦРК, чтобы сторона В могла проверить, что указанные значения на са-
мом деле получены от ЦРК. Затем все это шифруется с помощью открытого
ключа В, чтобы никто другой не мог использовать эти значения в попытке соз-
дания незаконною соединения с А. На шаге 6 тройка значений <Nd, К„ IDB}, ос-
таваясь в виде, зашифрованном с помощью личною ключа ЦРК, передается сто-
роне А вместе с оказией Nb, сгенерированной стороной В. Все это вместе шиф-
руется теперь с использованием открытого ключа А. Сторона А извлекает из
сообщения сеансовый ключ К, и использует его для того, чтобы зашифровать
Nt и вернуть соответствующее значение стороне В. Это убеждает сторону В в
том, что сторона А действительно получила сеансовый ключ.
Описанный протокол кажется вполне защищенным в отношении атак самого
разного вида, однако его авторы сами обнаружили в нем дефект и представили в
|WOO«2b] следующую исправленную версию алюритма.
1. А ЦРК: ЮА || IDB
2. ЦРК->А: Ekp^JIDb || KUb]
3. А—>В: EkvJN. П 1DJ
4. В-з ЦРК: IDB||IDA||EKOeBh[N.]
5. ЦРК -> В: EKR„lh[IDA || KU.] || EKU.[Е^[N, || К, || IDA || IDB]]
6, В-»А: EKV.(EKH.u,JN, || KF || ЮА || ГОВ] || NB]
7. А-4 В: EK,[Nh]
Здесь к множеству элементов, шифруемых личным ключом ЦРК на шагах 5
и 6, добавляется идентификатор IDA стороны А Это связывает сеансовый ключ
К, с идентификаторами обеих сторон, которые будут участвовать в сеансе обме-
на данными. Включение в набор значения IDA объясняется тем, что значение
оказии N, должно быть уникальным только для оказий, генерируемых сторо-
ной А, а не для всех оказий, генерируемых любой из сторон. Таким образом,
именно пара {IDA, N,} уникальным образом идентифицирует запрос на соедине-
ние со стороны А.
Как в случае '«того протокола, так и в случаях протоколов, описанных выше,
первоначальные версии протоколов в дальнейшем подвергались ревизии и после
дополнительною анализа появлялись их исправленные версии. Как видите, в
области аутентификации весьма непросто добиться приемлемого уровня надеж-
ности с первой попытки.
10.2. ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
377
Односторонняя аутентификация ** • « •»
Одним из приложений, для которых популярность использования шифрова-
ния постоянно растет, является электронная почта. Сама природа электронной
почты и ее главное преимущество состоит в том, что для отправителя и получа-
теля сообщений совсем не требуется быть в сети одновременно Сообщение элек-
тронной почты направляется в электронный почтовый ящик адресата, где оно
будет храниться до тех пор, пока у получателя не появится возможность про-
честь его.
“Конверт”, или заголовок сообщения электронной почты, должен оставаться в
незашифрованном виде, чтобы сообщение могло быть обработано протоколом пе-
редачи с промежуточным хранением электронной почты, например протоколом
SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты) или
Х.400, Однако во многих ситуациях желательно, чтобы протокол обработки поч-
ты не требовал доступа к сообщению в виде открытого текста, поскольку при
этом необходимо обеспечить доверие к механизму обработки почты. Соответст-
венно, сообщения электронной почты должны шифроваться так, чтобы у систе-
мы обработки почты не было необходимости иметь ключ дешифрования.
Вторым требованием является требование аутентификации. Обычно получа-
тель стремится получить некоторые гарантии того, что сообщение пришъ. из
указанного источника.
Подход на основе традиционного шифрования
При традиционном шифровании сценарий децентрализованного распределе-
ния ключей, показанный на рис. 5.11, оказывается непрактичным. Соответст-
вующая схема требует, чтобы отправитель выслал запрос предполагаемому адре-
сату, дождался ответа, который будет включать сеансовый ключ, и только потом
посылал сообщение.
С некоторыми уточнениями стратегия использования ЦРК, показанная на
рис. 5.9 (см. главу 5), вполне может подойти в качестве схемы шифрованного
обмена электронной почтой Ввиду стремления избежать необходимости инте-
рактивного режима для получателя В в то время, когда отправитель А посылает
ему сообщение, шаги 4 и 5 следует исключить. Для сообщения М последова-
тельность необходимых шагов будет иметь следующий вид.
1. А->ЦРК IDUIDbIIN,
2. ЦРК—>А. Ек.[К, ||IDB||N1||ERb[K,||IDA]]
3. АВ: ЕКь[К.,Юа]||Ек.[М]
Этот подход гарантирует, что только предполагаемый получатель сообщения
сможет прочитать его. Обеспечивается также некоторая степень гарантии, что
отправителем является А. Протокол не защищает от возможности воспроизведе-
ния сообщений. В определенной мере защита от этого могла бы быть обеспечена
с помощью включения в сообщение метки даты/времени. Однако из-за потенци-
ально возможных задержек в процессе передачи электронной почты польза от
таких меток даты/времени оказывается весьма условной.
378
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
Подходы на основе шифрования с открытым ключом
Мы уже представляли подходы на основе шифрования с открытым ключом,
которые неплохо зарекомендовали себя применительно к передаче электронной
почты, включая подход, при котором предполагается непосредственное шифро-
вание всею полного сообщения с целью обеспечения конфиденциальности (см.
рис. 8.1 (б) в главе 8), аутентификации (см. рис. 8.1(b)) или обеих этих задач
(см. рис. 8.1(г)). При таком подходе требуется либо чтобы отправитель знал от-
крытый ключ получателя (конфиденциальность), либо чтобы получатель знал
открытый ключ отправителя (аутентификация), либо чтобы было выполнено и
то, и другое (конфиденциальность плюс аутентификация). Кроме того, необхо-
димо однократное или двукратное применение алгоритма шифрования с откры-
тым ключом к сообщению, которое может оказаться достаточно длинным.
Если главной задачей является конфиденциальность, то наиболее эффектив-
ной может быть следующая процедура:
А —> В: Екик[К,][|Ек,[М].
В этом случае сообщение шифруется одноразовым секретным ключом. Сторо-
на А также шифрует одноразовый ключ открытым ключом стороны В. Только В
сможет использовать соответствующий личный ключ, чтобы восстановить значе-
ние одноразового ключа, а затем применить этот ключ для дешифрования сооб-
щения, Эта схема более эффективна, чем простое шифрование всего сообщения
открытым ключом стороны В.
Если главной задачей является аутентификация, то может оказаться вполне
достаточно цифровой подписи, как это было показано на рис. 8.5(b):
А ->В: М||ЕКВ.[Н(М)].
Описанный метод гарантирует, что сторона А не сможет впоследствии отка-
заться от факта отправки сообщения. Однако этот метод не страхует от других
видов обмана. Например, Боб компонует сообщение своему боссу Элису, содер-
жащее идею, которая позволит сэкономить деньги компании. Он добавляет к со-
общению свою цифровую подпись и посылает это сообщение по электронной
почте. В результате сообщение доставляется в почтовый ящик Элиса. Но пред-
положим, что об идее Боба прослышал Макс, который имеет доступ к очереди
почтовых сообщений, куда последние попадают перед доставкой. Макс находит
сообщение Боба, убирает его подпись, ставит свою и снова помещает сообщение в
очередь на доставку Элису. Макс получает вознаграждение за идею Боба.
Чтобы противодействовать такой схеме, как сообщение, так и подпись к нему
можно зашифровать открытым ключом адресата
А -> В: EKUb[M||EKR,[H(M)]].
Последние две схемы требуют, чтобы открытый ключ пользователя А был из-
вестен пользователю В и чтобы этот ключ не был просроченным. Эффективным
способом обеспечения такой гарантии является цифровое удостоверение, описан-
ное в главе 6. Теперь мы имеем
А -> В: М || Ekr. [Н(М)11| Ekr„[ТII П)А || KUJ .
10.2. ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
379
В дополнение к сообщению сторона А посылает стороне В подпись, шифро-
ванную личным ключом А, и сертификат А, шифрованный личным ключом сер-
вера аутентификации. Получатель сообщения сначала использует сертификат,
чтобы получить открытый ключ отправителя и проверить аутентичность источ-
ника, а затем — открытый ключ, чтобы проверить само сообщение. Если Требу-
ется конфиденциальность, то все сообщение можно зашифровать с по.мошью от-
крытого ключа стороны В Другим вариантом является шифрование всего сооб-
щения с помощью одноразового секретного ключа. При этом секретный ключ
тоже должен пересылаться, но в виде, зашифрованном с использованием откры-
того ключа В. Этот подход исследуется в главе 12.
10.3. Стандарт цифровой подниси^^К^^^^^*1
Национальный институт стандартов и технологии (NIST) опубликовал феде-
ральный стандарт обработки информации FIPS PUB 186, известный также как
DSS (Digital Signature Standard — стандарт цифровой подписи). Стандарт DSS
основан на алгоритме хэширования SHA (Secure Hash Algorithm — защищенный
алгоритм хэширования), описанном в главе 9, и представляет новую технологию
использования цифровой подписи — алгоритм DSA (Digital Signature Algo-
rithm — алгоритм цифровой подписи). Стандарт DSS был предложен в 1991 г., а
его исправленная версия — в 1993 г. в ответ на возникшие сомнения в безопас-
ности соответствующей схемы. В 1996 голу в него были внесены незначительные
изменения.
Подход DSS
В стандарте DSS используется алгоритм, призванный обеспечить только
функцию цифровой подписи. В отличие от RSA данный алгоритм не может слу-
жить для шифрования или обмена ключами. Однако это пример технологий
криптографии с открытым ключом.
На рис. 10.1 сравниваются схемы генерирования цифровых подписей с ис-
пользованием DSS и RSA. При подходе на основе RSA сообщение, которое
должно быть подписано, поступает на вход функции хэширования, которая вы-
дает защищенный хэш-код фиксированной длины. Этот хэш-код шифруется за-
тем личным ключом отправителя, в результате чего и получается подпись. По-
сле этого передаются и сообщение, и его подпись. Получатель принимает сооб-
щение и вычисляет хэш-код. Кроме того, он дешифрует подпись, используя
открытый ключ отправителя. Если вычисленный хэш-код соответствует дешиф-
рованной подписи, подпись считается подлинной. Поскольку только отправитель
знает свой личный ключ, подлинную подпись может поставить только он.
Подход DSS также основан нэ функции хэширования Хэш-код подается на
вход функции создания подписи вместе со случайным числом k, специально ге-
нерируемым для данной подписи. <1>ункция создания подписи зависит также от
личного ключа отправителя KR, и ряда параметров, известных группе сооб-
щающихся сторон. Можно считать, что это множество составляет глобальный
380
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
(6) Подход DSS
Рис. 10.1. Два подхода к использованию цифровых подписей
открытый ключ KUG / В результате получается подпись, складывающаяся из
двух компонентов, обозначаемых s и г.
В пункте назначения генерируется хэш-код поступившего сообщения. Этот код
и подпись подаются на вход функции верификации. Функция верификации зави-
сит также от глобального открытого ключа и от открытого ключа отправителя
КU., соответствующего личному ключу отправителя. Если подпись является под-
линной, то на выходе функции верификации получается значение, совпадающее с
компонентом г подписи. Функция создания подписи такова, что только отправи
тель, зная свой личный ключ, может создать правильную подпись
Обратимся теперь к рассмотрению деталей алгоритма.
Алгоритм цифровой подписи
Алгоритм цифровой подписи (DSA— Digital Signature Algorithm) создан с
учетом трудностей вычисления дискретных логарифмов (см. главу 7) и опирает-
ся на схемы, предложенные Эль-Гамалем (EIGamal) [ELGA85] и Шнорром
(Scbnorr) [SCHN91].
Алгоритм схематически представлен на рис. 10.2. В нем имеется три пара-
метра, которые являются открытыми и предполагаются известными группе
пользователей. Выбирается 160-биточче простое число q, Затем выбирается про-
стое такое число р длиной между 512 и 1024 битами, что q делит (р - 1). Нако-
нец, выбирается число g вида rood р, где h является целым числом меж-
ду 1 и (р - 1) с тем ограничением, что g должен быть больше I.* 5
Теоретически эти дополнительные параметры могут изменяться для каждого пользователя с тем,
чтобы они были частью открытого ключа пользователя. На практике же более вероятно использо-
вание глобального открытого ключа отдельно от открытых ключей каждого пользователя.
5
Согласно теории чисел g должно быть порядка q mod р; см. главу 7
10 3. СТАНДАРТ ЦИФРОВОЙ ПОДПИСИ
381
Глобальные компоненты открытого ключа
р — простое число, 2t'1 < р < 2‘, где 512 < L < 1024 и L является кратным 64, т.е'.
длиной между 512 и 1024 битами с шагом 64 бита
д — простой делитель (р — 1), где 2’“ < д < 2"° , т е. длиной 160 битов
g = Л’*'1’'’ mod р, где Л является любым целым числом таким, что 1 <- Л < (р - 1) и
mod р > I
Личный ключ пользователя х — случайное или псевдослучайное число, 0 < х < q
Открытый ключ пользователя
у = g1 mod р
Секретный номер сообщения пользователя k — случайное или псевдослучайное число, 0 k • • 9
Создание подписи
г = (g1 mod р) mod q
в = |А"‘(Н(М) + xr)] mod д
Подпись = (г, s)
Верификация w = (s')-1 mod q и, = [H(M')w] mod q u, = (r')u< mod q и = [(£“'V**) mod p] mod q ПРОВЕРКА; v = f -
М — подписываемое сообщение
Н(М) — хэш-код М по методу SHA-1
М', г', s' — полученные версии М, г и я
Рис. 10.2. Алгоритм цифровой подписи (DSA)
Имея эти числа, каждый пользователь выбирает личный ключ и генерирует
открытый ключ. Личный ключ х должен быть числом от 1 до ($ - 1) и должен
выбираться случайным или псевдослучайным образом. Открытый ключ вычис-
382
ГЛАВА 1 П. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
ляется на основе личного ключа по Формуле у = gr mod р. Вычислить у по
имеющемуся значению х относительно просто. Однако при имеющемся значении
открытою ключа у задача определения значения х по значению у считается не-
реальной, поскольку для этого требуется вычислить дискретный логарифм у по
основанию g и по модулю р (см. главу 7).
Чтобы создать подпись, пользователь вычисляет две величины, г и s, являю-
щиеся функциями компонентов открытого ключа (р, q, g), личного ключа поль-
зователя (х), хэш-кода сообщения (Н(М)) и некоторого целого числа k, которое
должно выбираться случайным или псевдослучайным образом и быть уникаль-
ным для каждого выполнения подписи.
В пункте назначения выполняется верификация, для чего используются фор-
мулы, показанные на рис. 10.2. Получатель генерирует величину и, являющую-
ся функцией компонентов открытого ключа, открытого ключа отправителя и
хэш-кода поступившего сообщения. Если эта величина соответствует компоненту
г подписи, то подпись подтверждается.
На рис. 1U.3 представлены функции выполнения подписи и верификации.
Структура алгоритма, как видно из рис. 10.3, весьма интересна Обратите
внимание на го, что проверка в конце осуществляется со значением г, которое не
зависит от сообщения вообще. Значение г является функцией k и трех компо-
нентов глобального открытого ключа. Мультипликативное обратное значения
fe (mod р) передается функции, которая получает на вход также хэш код сооб-
щения и личный ключ пользователя. Структура этой функции такова, что полу-
чатель может восстановить значение г по поступившим сообщению и подписи,
а • (|(Н(М), к,х, г, q) + xr))tnod q
г • tyk, р, q, g) • (gk mod pjmod q
w - fj(a9, q) • (a’)'1 mod q
* Ш q, g, H(M'), w, г' j
= ((j(H(M')w)aiod q yr' w mod q mod pjmod q
(а) Создание подписи
(б) Верификация
Рис. 10 3. Подпись и верификация DSS
10.3. СТАНДАРТ ЦИФРОВОЙ ПОДПИСИ
383
открытому ключу пользователя и глобальному открытому ключу. Из рис. 10.2
или рис 10 3. конечно, не вытекает с очевидностью, что такая схема должна ра-
ботать. Доказательство ее работоспособности содержится в дополнении 10А.
При трудности вычисления дискретных логарифмов для противника оказыва-
ется нереальным с точки зрения вычислений найти k по известному г или найти
х по известному а.
В алгоритме создания подписи интенсивные вычисления потребуются толькс
при возведении в степень дня вычисления g" mod р. Поскольку это значение не
зависит от подписываемого сообщения, оказывается возможным вычислить этс
значение заранее. На самом деле пользователь может заранее вычислить целы!
ряд значений г, чтобы пользоваться ими при создании подписей документов п<
мере необходимости. Единственной другой отчасти требующей некоторых усили!
задачей является определение мультипликативного обратного, k '. Опять же
имеется возможность заранее вычислить целый ряд таких значений.
10.4. Рекомендуемые источники дополнительной
информации
Классической работой на тему цифровых подписей является (AKL83], коте
рая остается актуальной и сегодня. Более новой (и превосходным обзором) явля-
ется работа ГМ1ТС92].
AKL83 Akl, S. "Digital February
MITC92 Mitchell, С, P‘per, F, and Wild, Р. "Digital Signatures." In |SlMM92al. T
10.5. Задачи .
1. В разделе 10.2 была описана схема с открытым ключом, предложенная
(WOO92aJ для распределения секретных ключей. Усовершенствованнг
версия этой схемы включает 1D* на шагах 5 и 6. Каким конкретным в
дам атак должны противостоять сделанные изменения?
2. Протокол, упоминаемый в задаче 10.1, можно сократить до пяти хнаго
получив в результате следующую последовательность.
• А —>В:
• В—>ЦРК:
• ЦРК —» В:
• В -> А: /
• А —> В:
Выпишите сообщения, передаваемые на каждом шаге. (Подсказка. Г
следнее сообщение в этом протоколе совпадает с последним сообщением
оригинальном протоколе.)
384
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦ1
3. Измените процедуры выполнения цифровой подписи из табл. 10.1(a) и
10.1(6), чтобы у получателя появилась возможность верификации подписи.
4. Измените процедуру выполнения цифровой подписи из табл. 10.1(b), что-
бы избежать тройного шифрования всего сообщения.
5. При рассмотрении табл. 10.1(b) отмечалось, что “альянсы” с целью обмана
невозможны. Но на самом деле одна возможность не исключена. Опишите
ее и объясните, почему она настолько маловероятна, что ее можно просто
игнорировать.
6 Рассмотрим атаку задержки-воспроизведения, определенную в разде-
ле 10.2.
* Приведите пример сценария такой атаки, когда часы одной из сторон
опережают часы ЦРК
• Приведите пример сценария такой атаки, когда часы одной из сторон
опережают часы другой стороны.
7. Существует три типичных способа использования оказий для запросов.
Предположим, что N, обозначает оказию, сгенерированную стороной А,
К — ключ, используемый совместно сторонами А и В, a f() — функцию
типа приращения. Тремя возможностями применения таких исходных
данных являются следующие.
Возможность 1 (1) А —» В: N. (Я) А—» В: Ek[N.] Возможность 2 (1)А—>В: EK|NJ (2) А -»В: N. Возможность 3 (1)А—»В: EK[NJ (2) А -, В: EK[f(N.)J
S. Для каждой из этих возможностей опишите ситуации, в которых они ока-
зываются приемлемыми.
Доктор Ватсон терпеливо ждал, пока Шерлок Холмс закончит. “Что, инте-
ресная задача, Холмс?” — спросил -ih, когда Холмс наконец вышел из сети.
"Да нет, Ватсон. Я всего лишь проверил свою электронную почту и сделал
пару сетевых экспериментов вместо привычных мне химических опытов. У
меня сейчас только один клиент, и я уже решил его- задачу. Если я не
ошибаюсь, вы однажды упомянули, что криптология входит в числе- ва-
ших хобби, поэтому это может оказаться интересным и вам".
“Ну, я только любитель, Холмс. Но мне, конечно, интересно. Так какая
же это задача?”
“Мой клиент — мистер Хосгрейв, директор небольшого, нс динамично
развивающегося банка. Банк полностью компьютеризован, и, конечно, в
нем активно используется сетевой обмен данными. Банк уже использует
RSA для защиты данных и электронной подписи пересылаемых докумен-
тов. Но теперь предполагается внести некоторые изменения в эти процеду-
ры. В частности, для некоторых документов необходимы цифровые подпи-
си сразу двух сторон, поэтому- требуется реализовать следующее.
10.5 ЗАДАЧИ
385
• Первая из подписывающих документ, сторон готовит документ, форми-
рует свою подпись и передает документ второй стороне.
• Вторая из подписывающих документ сторон сначала должна проверить,
что документ был подписан действительно первой стороной. Потом эта
сторона должна добавить в имеющуюся в документе подпись свою под-
пись, чтобы любой получатель мог проверить, что документ действи-
тельно был подписан обеими уполномоченными сторонами. Кроме того,
только вторая из подписывающих сторон должна иметь возможность
проверить подпись документа после шага (1), т.е. любой другой получа-
тель должен иметь возможность проверить подписи только полностью
готового документа с подписями обеих уполномоченных сторон, но не
документ в сыром виде, с подписью только одной стороны И еще, банк
хотел бы при этом использовать уже имеющиеся модули, которые обес-
печивают цифровые подписи на основе использования RSA”.
“Хм-м, мне понятно, как можно использовать RSA для создания подписей
к документам, заверяемых ос?ной стороной. Но я догадываюсь, Холмс, что
вы решили проблему мистера Хосгрейва подходящим обобщением сцена-
рия цифровых по описей RSA".
“Именно так. Ватсон, — кивнул головой Шерлок Холмс. — В оригиналь-
ном Варианте цифровая подпись RSA формируется шифрованием докумен-
та личным ключом дешифрования d подписывающей стороны и подпись
может проверить кто угодно, дешифровав ее с помощью соответствующего
публично известного открытого ключа е. Можно проверить, что подпись S
была выполнена стороной, которой известен ключ d, каковой, как предпо-
лагается, является только сторона, уполномоченная подписать документ.
Теперь проблема мистера Хосгрейва может быть решена точно таким же
образом простым обобщением оригинального процесса, а именно...”
9. В алгоритме DSA предполагается, что если в результате процесса создания
подписи получается значение я = О, следует генерировать новое значение k
и вычислить новое значение подписи. Почему?
10. Что случится, если значение k, используемое при создании подписи DSA,
будет скомпрометировано?
11. Документ DSS включает рекомендацию использовать следующий алго-
ритм проверки числа на простоту,
• [Выбрать ю.] Пусть w является случайным нечетным целым числом.
Тогда (и» -1) является четным и может быть представлено в виде 2“т
с нечетным т. Здесь 2“ является наибольшей степенью 2, на которую
делится число (u> -1).
• [Генерировать Ь.] Пусть b является случайным целым числом в диапа-
зоне 1 < b < w .
* | Возвести в степень.) Установить j = 0 и z = bm mod w.
• [Готово?] Если j - 0 и г = 1 или г = ь,-1, то w считается успешно про-
шедшим проверку и может оказаться простым числом; перейти к шагу 8.
386
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
• [Завершить?] Если / > О и z = 1, то w не является простым; завершить
выполнение алгоритма для этого значения и».
• [Увеличить /.] Установить j = 7 +1. Если j < а, положить г = г4 mod ш
перейти к шагу 4.
• [Завершить проверку.] Значение w не является простым; завершить
выполнение алгоритма для этого w.
• [Проверять снова?] Если проверка завершилась успешно для достаточ-
ного числа случайных значений Ь, принять w как простое и завершить
выполнение алгоритма; иначе перейти к шагу 2.
• Объясните, как работает этот алгоритм.
• Покажите, что этот алгоритм эквивалентен тесту Миллера-Рабина, опи-
санному в главе 7.
12. В соответствии с DSS и с учетом того, что значение А генерируется для
каждой подписи, даже если второй раз подписывается одно и то же сооб-
щение, все подписи отличаются. Это не так для подписей RSA. Каковы
практические последствия такого различия алгоритмов?
13. Возникает искушение попытаться разработать вариант схемы Диффи-
Хеллмана для использования ее в качестве средства создания цифровой
подписи. Вот одна из таких схем, более простая, чем DSA, и не требующая
секретного случайного числа в дополнение к личному ключу.
Открытые элементы
q — простое число,
а —первообразный корень q, а < q.
Личный ключ;
X — X < q.
Открытый ключ:
Y = а mod q .
Чтобы подписать сообщение М, вычисляется значение h = Н(М), являю-
щееся хэш-кодом сообщения Требуется, чтобы gcd(ft, р -1) = 1. Если это
не так, хэш-код присоединяется к сообщению и вычисляется новое значе-
ние хэш-кода. Этот процесс продолжается до тех пор, пока не будет полу-
чен хэш-код, значение которого является взаимно простым по отношению
к (р -1). Затем вычисляется И, удовлетворяющее соотношению
Zx h = X mod (q - 1). Подписью сообщения является аг Чтобы проверить
подпись, пользователю необходимо проверить равенство (агУ* = а“ mod q
• Докажите, что эта схема работает. Иными словами, покажите, что в про-
цесс верификации будет получено равенство, если подпись подлинная.
• Докажите, что эта схема на самом деле неприемлема, предложив про-
стой способ фальсификации подписи пользователя для произвольного
сообщения.
10.6. ЗАДАЧИ
387
Дополнение 10А. Обоснование алгоритма цифровой
подписи
Целью этого приложения является доказательство того, что в процессе вери-
фикации подписи будет получено равенство и = г, если подпись .-.называется
подлинной. Следующее доказательство основано яа том, которое представлено в
стандарте FIPS, но включает дополнительные детали, чтобы сделать цепочку
умозаключений более понятной
ЛЕММА 1. Для любого целого числа t
если g = mod р ,
то g' mod р = g'пм*q mod р .
Доказательство. По теореме Ферма (см. главу 7), поскольку Л является вза-
имно простым по отношению к р, мы имеем Л""' mod р - 1. Следовательно, для
любого неотрицательного целого числа п
g"’mod р = mod р)"’mod р
- mod р ^по правилам арифметики в классах вычетов)
= hlp'1)л mod р
= ((й'₽’1> mod p)q) mod р (по правилам арифметики в классах вычетов)
Поэтому для неотрицательных целых чисел лиг мы получаем
g^'inod р= (g^g'lmod р
= ((g'4' mod p)(g’ mod p)) mod p
= gr mod p .
Любое целое неотрицательное число t может быть представлено единственным
способом в форме t = nq + z , где лиг являются целыми неотрицательными чис-
лами и 0 < z < q Поэтому z = t mod q, откуда и вытекает необходимый результат.
ЛЕММА 2. Для неотрицательных целых чисел а и b имеет место равенство
g(a mDd « + b mod ’> mod р = g{atb} mod ’ mod p .
Доказательство. По лемме 1
п.м, »dmxi?. m(X] gч и» у + ь ™>а г.п™ ? П10(} р
= g^’-^’raod р.
Что и требовалось доказать.
ЛЕММА 3.
р|л”’ mod р = g<x™’ш<к1 ’ mod р .
Доказательство. По определению (см. рис. 10.2) у - g’ mod р . Тогда
t/(™)mod’mod р= (^mod р)(™’m“l ’ mod р
= ^х((гв” mod »’ mod р (по правилам арифметики в классах вычетов)
= г mod р
. ^,х^тЫ7тоа р
388
ГЛАВА 10. ЦИФРОВЫЕ ПОДПИСИ И ПРОТОКОЛЫ АУТЕНТИФИКАЦИИ
Что и требовалось доказать.
ЛЕММА 4.
((Н(М) -t xr)w) mod q = k
Доказательство. П<- определению (см. рис. 10.2) s = (k '(Н(М) + xr)) mod q .
Также, ввиду того, что q является простым, любое неотрицательное целое число
меньше q имеет мультипликативное обратное (см. главу 7). Поэтому
(kk ' 1 mod q = 1. Далее имеем
(As) mod q = (H(M) + xr)) mod g)) mod q
- ((k(k '(H(M) + xr)))) mod q
“ (((AA ‘) mod gX(H(M) + xr) mod q)) mod q
- ((H(M) + xr)) mod q .
По определению, w = з ‘mod q , поэтому (its) mod q = 1. Следовательно,
((H(M) + xr)w) mod q = (((H(M) + xr) mod q)(w mod g)) mod q
= (((As) mod gXw mod g)) mod g
= (kws) mod g
— ((A mod g)((u’s) mod g)) mod g
- A mod g .
Поскольку 0 < A < g , получаем A mod g = A . Что и требовалось доказать. * *•
ТЕОРЕМА. В обозначениях рис. 10.2 имеет место равенство о = г ,
Доказательство. i>= ((gulg“2) mod р) mod g (по определению)
= mod p) mod q
= , gl,^ mod 4) mod p) mod q tno лемме 3)
= + mod p) mod q
= ((g'HlM,m * nl0(j p) jnod g (по лемме 2)
- ((g<H'M’ + mod p) mod g
- (g* mod p) mod g (по лемме 4)
*• r.(no определению)
Что и требовалось доказать.
ДОПОЛНЕНИЕ 10А. ОБОСНОВАНИЕ АЛГОРИТМА ЦИФРОВОЙ ПОДПИСИ
389
Практика сетевой
защиты
ГЛАВА
11
Приложения
аутентификации
Нельзя вступать в союз с соседними правителями, пока мы не
выяснили их цели.
Супь Цзы. Военное искусство (The Art of War)
В этой главе рассматриваются некоторые схемы ау-
тентификации, которые были разработаны для того,
чтобы обеспечивать аутентификацию и использова-
ние цифровых подписей на уровне приложения.
Вначале мы уделим внимание одной из первых и наибо-
лее широко используемых систем, известной под названием
Kerberos. Затем мы рассмотрим сервис аутентификации ка-
талогов Х.509. Этот стандарт является не только важной
составляющей службы каталогов, которую он поддержива-
ет. но и служит основным строительным блоком, исполь-
зуемым в других стандартах, в частности в S/MIME, речь о
котором пойдет i главе 12.
11.1. Kerberos
Система Kerberos1 является службой аутентификации,
разработанной в рамках проекта Athena в Массачусетсском
технологическом институте (MIT). Проблема, которую при-
*В греческой мифологии это многоголовый пес (обычно трехголовый),
часто с хвостом змеи, охраняющий вход а царство мертвых Аида,” —
утверждается в Словаре терминов и символов искусства Джеймса Хо-
ла (Dictionary of Subjects and Symbols in Art. James Hall. Harper &
Row, 1979) Точно так же, как греческий Kerberos |Кербер или Цер-
бер) имеет три головы, современная система Kerberos должна была
иметь три компонента защиты узла сети: аутентификацию, учет и ау-
дит. Последние две “головы’’ системы так и не были реализованы.
звана решать Kerberos, состоит в следующем. Предположим, что имеется откры-
тая распределенная среда, в которой Пользователи со своих рабочих станций
должны иметь возможность доступа к услугам на серверах в сети. Желательно,
чтобы к серверам могли получать доступ только зарегистрированные пользова-
тели и чтобы для серверов существовала возможность аутентифицировать запро-
сы к сервисам. В такой среде сами рабочие станции не могут служить для иден-
тификации пользователей при доступе к сетевым услугам, в частности ввиду
наличия следующих трех угроз.
Пользователь может получить доступ к определенной рабочей станции и вы-
дать себя за другого пользователя, работающего на этой рабочей станции.
Пользователь может изменить сетевой адрес рабочей станции, чтобы за-
просы, посылаемые с измененной рабочей станции, казались приходящими
с другой рабочей станции.
Пользователь способен перехватывать пересылаемые сообщения и исполь-
зовать возможность их воспроизведения, чтобы получить доступ к серверу
или чтобы вносить нарушения в поток данных.
В любом из этих случаев неуполномоченный пользователь может получить
доступ к службам и данным, на доступ к которым у него нет прав. Вместо по-
строения сложных протоколов аутентификации на каждом сервере система
Kerberos предлагает централизованный сервер аутентификации, функциями ко-
торого является идентификация пользователей для серверов и серверов для
пользователей В отличие от большинства других схем аутентификации, вписы-
ваемых в этой книге. Kerberos использует исключительно традиционное шифро-
вание, а не шифрование с открытым ключом.
Популярны две версии Kerberos. Все еще широко распространена версия 4
|MILL88, STEI88J. В версии 5 [KOHL94] были исправлены некоторые недостатки
защиты версии 4, и эта версия была предложена в качестве проекта стандарта
Internet (RFC 1510)?
Следующий раздел представляет краткий обзор целей, положенных в основу под-
хода Kerberos. Затем, ввиду сложности системы Kerberos, дается описание протокола
аутентификации, используемого в версии 4. Это позволит нам понять сущность стра-
тегии Kerberos без рассмотрения некоторых деталей, необходимых для противостоя-
ния хитроумным угрозам защиты. Наконец будет рассмотрена .версия 5,
Цели разработки
Если группа пользователей обеспечена отдельными персональными компьюте-
рами, которые не подключены к сети, то ресурсы и файлы каждого пользователя
могут быть защищены физически с помощью обеспечения защиты каждого персо-
нального компьютера. Но когда пользователи обслуживаются централизованной
системой с разделением времени, защиту должна обеспечить операционная система
с разделением времени. Операционная система может вводить в действие политики
контроля доступа, основанные на идентификации пользователей и использовании
процедур входа в систему для идентифицированных пользователей.
2
Версии 1-3 создавались разработчиками для внутреннего использования. Версия 4. и является
“оригинальной” системой Kerberos.
11.1. KERBEROS
898
В настоящее время ни один из этих сценариев не типичен. Чаще используется
распределенная архитектура, включающая выделенные рабочие станции пользо-
вателей (клиенты) и распределенные или централизованные серверы. В такой
среде можно предложить следующие три стратегии защиты.
1. Выполнять аутентификацию пользователей на индивидуальных рабочих
станциях-клиентах и использовать на каждом сервере подходящую поли-
тику защиты, основанную на идентификации пользователя.
2. Обеспечить идентификацию систем-клиентов при обращении к серверам, а
аутентификацию пользователей выполнять в системах-клиентах.
3. Обеспечить идентификацию пользователя при каждом вызове соответст-
вующего сервиса и идентификацию серверов для клиентов.
В закрытой и не слишком обширной среде, где все системы принадлежат од-
ной организации, удовлетворительной может оказаться первая или, возможно,
вторая из этих стратегий защиты ’ Но в более открытых средах, где поддержи-
ваются сетевые соединения с другими машинами, необходимо использовать тре
тий подход, чтобы защитить информацию пользователя и ресурсы, размещенные
на сервере. Система Kerberos поддерживает именно третий подход, предполагая
распределенную архитектуру клиент/сервер и наличие одного или нескольких
серверов Kerberos, обеспечивающих задачу аутентификации.
В первом из опубликованных сообщений о системе Kerberos [STEI88] были
перечислены следующие требования, выдвигаемые в отношении Kerberos
Защита Противник, перехватывающий сообщения в сети, не должен по-
лучить информацию, необходимую для того, чтобы имитировать другого
пользователя. В общем, система Kerberos должна быть достаточно силь-
ной, чтобы потенциальный противник не имел оснований считать ее сла-
бым звеном сети.
• Надежность. Для всех опирающихся на Kerberos служб контроля доступа
недоступность системы Kerberos означает недоступность соответствующей
службы Поэтому система Kerberos должна быть исключительно надежной
и использовать распределенную архитектуру сервера, где одна система
способна подменить другую.
Прозрачность. В идеале пользователь не должен замечать процедуры
идентификации, кроме тех случаев, когда от него требуется ввести пароль.
Масштабируемость. Система должна быть способной поддерживать боль-
шое число клиентов и серверов. Это предполагает модульную распределен-
ную архитектуру.
Чтобы выполнить все эти требования, общая схема Kerberos строится на ос-
нове функций аутентификации, выполняемых надежной третьей стороной, ис-
пользующей протокол, построенный по схеме Нидхэма-Шредера [NEED78], опи-
санной в главе 5. Надежность здесь означает то, что клиенты и серверы доверя-
ют системе Kerberos посредничество в осуществлении их взаимной
'гем не менее, даже ь закрытой среде остается угроза нарушения защиты со стороны неудов-
летвореиного чем-либо служащего.
394
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
идентификации. В предположении, что протокол Kerberos не содержит ошибок
реализации, сервис аутентификации оказывается защищенным, если только за-
щищен сам сервер Kerberos.4
Kerberos версии 4
В версии 4 Kerberos в довольно тщательно разработанном протоколе, обеспе-
чивающем аутентификацию, применяется DES. Рассматривая весь этот прото-
кол, трудно понять необходимость многих из содержащихся в ней элементов.
Поэтому мы воспользуемся стратегией Билла Брайента (Bill Bryant), предложен-
ной в рамках проекта Athena [BRYA88J, и пред тем, как перейти к описанию
реального протокола, рассмотрим несколько гипотетических диалогов. Каждый
последующий диалог будет сложнее предыдущего ввиду добавления элементов
защиты от угроз, не учтенных предыдущей схемой.
Рассмотрев сам протокол, мы перейдем к некоторым другим аспектам версии 4.
Простой диалог аутентификации
В незащищенной сетевой среде любой клиент может обратиться за услугой к
любому серверу. При этом очевидным риском является возможность предста-
виться другим лицом. Противник может выдать себя за другого клиента, чтобы
получить несанкционированные привилегии на серверах. С целью противостоя-
ния такой угрозе серверы должны иметь возможность идентифицировать запра-
шивающих услуги клиентов. Выполнение такой задачи может потребоваться для
любого сервера при любом взаимодействии клиента и сервера, но в открытой
среде для каждого сервера это означает немалую дополнительную нагрузку.
Альтернативой здесь является использование сервера аутентификации (AS —
Authentication Server), которому известны пароли всех пользователей и который
сохраняет их в централизованной базе данных. Кроме того, сервер аутентифика-
ции для обмена данными с любым другим сервером использует еще и уникаль-
ный секретный ключ. Секретные ключи предполагается распределять физически
или некоторым другим надежно защищенным способом- Рассмотрим следующий
гипотетический диалог.
(1)С—»AS: IDC || Рс || JDV ;
(2) AS —> С : Мандат,
(3) С -» V : IDn || Мандат,
Мандат = EKv[lDc । ADC || IDV],
4
Защищенность сервера Kerberos не предполагается автоматически, ч должна обеспечиваться
со всеми предосторожностями (например, с помощью размещения его в отдельном закрытом
помещении). В этой связи не мешает вспомнить судьбу греческого Кербера, которого должен
был привести Геракл по приказу Эврисфея, чтобы совершить одиннадцатый подвиг; "Геракл
увидел огромного пса на цепи и обхватил своими руками его шею- Три головы пса пытались
укусить Геракла, а хвост Кербера обвил тело героя. Но Геракл все сильнее сжимал псу горло и
наконец полузаду шенны й пес упал в беспамятстве. Эврисфей очень удивился, увидев Геракле
живым, возвращающимся с огромным и страшным трехголовым псом с капающей из пас гей
слюной. Перепуганный Эврисфей спрятался за больший бронзовой дверью, оставив лишь ма-
ленькую щель.” — из Краткого словаря греческой и римской мифологии Мичела Стэплтона
(Hamlyn Concise Dictionary of Greek and Roman Mythology, Michael Stapleton, Hamlyn, J982).
11.1. KERBEROS
895
где
С — клиент,
AS — сервер аутентификации,
V — сервер,
LDC — идентификатор пользователя системы С,
ID,. — идентификатор V,
Рг — пароль пользователя системы С,
А1\ — сетевой адрес С,
Ку — секретный ключ шифрования, используемый AS и V совместно,
|| — конкатенация.
В этом сценарии пользователь входит в систему рабочей станции и запраши-
вает доступ к серверу V Модуль клиента С на рабочей станции пользователя за-
прашивает пароль пользователя, а затем посылает сообщение серверу аутенти-
фикации AS, включающее идентификатор пользователя, идентификатор сервера
и пароль пользователя. Система AS использует свою базу данных, чтобы прове-
рить, предоставил ли пользователь пароль, соответствующий данному идентифи-
катору, и разрешен ли этому пользователю доступ к серверу V. Если оба пара-
метра проходят проверку успешно. AS считает пользователя идентифицирован-
ным и теперь должен убедить в этом сервер. Для этого AS создает мандат,
содержащий идентификатор пользователя и его сетевой адрес, а также иденти-
фикатор сервера. Мандат шифруется секретным ключом, который используется
сервером аутентификации AS с данным сервером. Этот мандат отправляется об-
ратно системе С Ввиду того что мандат шифруется, он не может быть изменен С
или противником.
С этим мандатом С может теперь обратиться к V за сервисом. Для этого С по-
сылает сообщение V, содержащее идентификатор С и полученный мандат. Сис-
тема V дешифрует мандат и убеждается, что идентификатор пользователя в ман-
дате совпадает с незашифрованным идентификатором в сообщении. Если эти два
идентификатора совпадают, сервер считает пользователя идентифицированным и
предоставляет затребованный сервис.
В сообщении (3) существенным оказывается каждый элемент. Мандат шиф-
руется, чтобы сделать невозможными модификацию и фальсификацию. Иденти-
фикатор сервера (ID., ) включается в мандат, чтобы сервер мог проверить, что
мандат дешифрован должным образом, Идентификатор IDt включается в ман-
дат для того, чтобы показать, что этот мандат был выдан по запросу С. Наконец,
АЛ,- присутствует в мандате для того, чтобы противостоять следующей угрозе.
Противник может перехватить мандат, пересылаемый с сообщением (2), а затем,
используя имя IDC, передать сообщение формы (3) с другой рабочей станции.
Сервер при этом получит правильный мандат, в котором совпадают идентифика-
торы пользователя, и поэтому сервер разрешит доступ этому пользователю с дру-
гой рабочей станции. Чтобы предотвратить возможность такой атаки, система
AS включает в мандат сетевой адрес, с которого пришел исходный запрос. Те-
перь мандат будет действителен, только если он передан с той же рабочей стан-
ции, с которой этот мандат был изначально запрошен.
396
Г ЛАЙ А 11 ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Более защищенный диалог аутентификации
Предыдущий сценарий справляется с некоторыми проблемами аутентификации
в открытой сетевой среде, но ряд проблем остается нерешенным. Из нерешенных
проблем можно выделить, в частности, следующие. Во-первых, хотелось бы мини-
мизировать число запросов пароля у пользователя. Предположим, что каждый
мандат может применяться только один раз. Если пользователь С входит в рабо-
чую станцию утром, желая проверить свою почту на почтовом сервере, С должен
предоставить пароль, чтобы получить мандат для работы с почтовым сервером.
Если С требуется проверить почту еще несколько раз на протяжении того же дня,
каждая попытка п-.требует повторного ввода пароля. Можно упростить процедуру,
предложив мандаты многократного использования. Рабочая станция может хра-
нить мандат почтового сервера в течение всего времени одного сеанса работы после
того, как этот пароль был однажды введен, и использовать этот пароль от имени
пользователя при повторных попытках доступа к почтовому серверу.
Однако в рамках этой схемы пользователь должен получать новый мандат
при каждом обращении к новой службе сервера. Если пользователю потребуется
доступ к серверу печати, почтовому серверу, файловому серверу и так далее,
первый раз при доступе к соответствующей службе должен требоваться новый
мандат, и поэтому от пользователя снова потребуется ввод пароля.
Во-вторых, предыдущий сценарий предполагает передачу пароля в виде не-
зашифрованного текста (сообщение 1). Перехватчик сообщений может получить
пароль и использовать любую службу, доступ к которой разрешен “жертве”.
Чтобы решить эти дополнительные проблемы, рассмотрим схему, позволяю-
щую избежать пересылки паролей в открытом виде, и новый сервер, называе-
мый сервером выдачи мандатов (TGS — Ticket-Granting Server). Соответствую-
щий новый, но все еще гипотетический сценарий будет иметь следующий вид.
Выполняется один раз в ходе сеанса доступа:
(1) С -> AS: IDC || ID,<8
(2) AS —> С : Ек [Мандат*,]
Выполняется один раз для каждого сервиса:
(3) С -> TGS: 1DC || IDV II Мандат*,
(4) TGS -> С: Мандату
Выполняется один раз для каждого сеанса использования сервиса:
(5) С—> V : 1DC || Мандату
Мандат*, = Ек,п|Юс || АД || ID*, || TS] || CpoKj
Мандату = EKv [IDC || ADC || JDV || TS2 || Срок2]
Эта новая служба, TGS, выдает мандаты пользователям, которые были иден-
тифицированы сервером аутентификации AS. Таким образом, пользователь сна-
чала запрашивает мандат на получение мандата (Мандат*,) у сервера аутенти
фикации AS. Этот мандат сохраняется модулем клиента на рабочей станции
пользователя. Каждый раз, когда пользователю требуется новый сервис, клиент
обращается к TGS и использует этот мандат, чтобы идентифицировать себя. В
ответ TGS выдает мандат на получение конкретного сервиса. Клиент сохраняет
мандат на получение сервиса и использует его для идентификации пользователя
сервером всякий раз, когда запрашивается данный сервис. Давайте рассмотрим
детали этой схемы.
11.1. KERBEROS
397
1. Клиент от имени пользователя запрашивает мандат на получение мандата,
посылая серверу аутентификации AS идентификатор пользователя вместе с
идентификатором TGS, что означает запрос на использование службы TGS.
2. Сервер аутентификации AS в ответ посылает мандат, шифрованный клю-
чом, который выбирается на основе пароля пользователя. Когда ответ дос-
тигает клиента, клиент запрашивает у пользователя пароль, затем генери-
рует ключ и пытается дешифровать поступившее сообщение. Если был
введен соответствующий пароль, мандат восстанавливается успешно
Поскольку пароль должен знать только соответствующий пользователь, толь-
ко он и сможет восстановить мандат. Таким образом, пароль служит для полу-
чения удостоверений от Kerberos без пересылки пароля в незашифрованном ви-
де. Сам мандат при этом состоит из идентификатора и сетевого адреса пользова-
теля, а также идентификатора TGS. Это соответствует первому сценарию. Идея
заключается ь том, чтобы клиент использовал этот мандат при запросах манда-
тов многократного доступа к службам. Итак, мандат на получение мандата дол-
жен предполагать многократное применение, Однако желательно, чтобы против-
ник не имел возможности перехватить такой мандат и использовать его. Рас-
смотрим следующий сценарий. Противник перехватывает мандат и ждет, когда
пользователь со своей рабочей станцией выйдет из сети. Противник может либо
получить доступ к соответствующей рабочей станции, либо соответствующим об-
разом сконфигурировать свою рабочую станцию, назначив ей сетевой адрес, сов-
падающий с сетевым адресом жертвы. После этого противник может применить
этот мандат, чтобы обмануть TGS. Для предотвращения подобной возможности в
мандат включена метка даты-времени, которая указывает дату и время выдачи
мандата, а также информация о сроке, в течение которого мандат имеет силу
(Например, восемь часов). Таким образом, клиент теперь имеет мандат много-
кратного использования и возможность не спрашивать пользователя о пароле
при каждом новом запросе сервиса. Наконец, обратите внимание на то, что ман-
дат на получение мандата шифруется секретным ключом, известным только AS
и TGS. Это предотвращает возможность несанкционированного изменения ман-
дата. Мандат повторно шифруется ключом, зависящим от пароля пользователя.
Это гарантирует то, что мандат может быть восстановлен только соответствую-
щим пользователем, и, таким образом, обеспечивает аутентификацию.
Теперь, когда клиент имеет мандат на получение мандата, доступ к любому
серверу может быть открыт путем выполнения шагов 3 и 4.
3. Клиент от имени пользователя запрашивает мандат на получение сервиса. Для
этого клиент отправляет TGS сообщение, содержащее идентификатор пользо-
вателя, идентификатор требуемого сервиса и мандат на получение мандата.
4. Сервер выдачи мандатов (TGS) дешифрует поступивший мандат и проверяет
правильность дешифрования по наличию своего идентификатора. Затем он
убеждается, что срок действия мандата не истек. После этого с поступившей
информацией сравниваются: идентификатор пользователя и сетевой адрес,
чтобы выполнить аутентификацию пользователя. Если пользователю разре-
шен доступ к V, TGS выдает мандат на получение требуемого сервиса.
398
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Мандат на получение сервиса имеет ту же структуру, что и мандат на полу-
чение мандата. Действительно, поскольку TGS является сервером, можно ожи-
дать, что для идентификации клиента для TGS и идентификации клиента для
сервера приложений потребуются одни и те же элементы. Такой мандат тоже со-
держит метку даты-времени и информацию о сроке действия. Если пользователю
снова потребуется тот же сервис, клиент может просто использовать ранее полу-
ченный мандат на получение сервиса и не беспокоить пользователя из-за пароля.
Обратите внимание на то, что мандат шифруется секретным ключом (К,), из-
вестным только TGS и серверу, что обеспечивает защиту от несанкционирован-
ного изменения мандата.
Наконец, располагая мандатом на получение конкретного сервиса, клиент
может получить соответствующий сервис, выполнив шаг 5.
5. Клиент от имени пользователя запрашивает сервис. Для этого клиент пе-
редает сообщение серверу, содержащее идентификатор пользователя и
мандат на получение соответствующего сервиса. Сервер выполняет аутен-
тификацию на основе содержимого этого мандата.
Этот новый сценарий удовлетворяет двум требованиям: только один запрос
пароля пользователя за сеанс и защита пароля пользователя.
Диалог аутентификации версии 4
Хотя предыдущий сценарий усовершенствует защиту по сравнению с первым,
остается еще две дополнительные проблемы- Сутью первой проблемы является
срок действия, связываемый с мандатом на получение мандата. Если этот срок
оказывается слишком коротким (минуты), то пароль будет запрошен у пользова-
теля повторно. Если срок будет слишком длинным (часы), то противник получит
больше возможностей для воспроизведения. Противник может, отслеживая по-
ток данных в сети, перехватить экземпляр мандата на получение мандата, дож-
даться выхода из сети законного пользователя, а затем фальсифицировать сете-
вой адрес законного пользователя и послать серверу TGS сообщение, передавае-
мое при выполнении шага 3. Это дало бы противнику свободный доступ к
ресурсам и файлам, доступным соответствующему законному пользователю.
Точно так же, если противник перехватит мандат на получение сервиса и ис-
пользует его до истечения срока действия мандата, противник получит доступ к
соответствующей службе.
Итак, мы должны сформулировать дополнительное требование. Сетевая
служба (TGS или сервер приложений) должна иметь возможность убедиться в
том, что пользователь, применяющий мандат, является пользователем, которому
этот мандат был выдан
Вторая проблема заключается в том, что может возникать необходимость иден-
тификации серверов для пользователей. Без такой идентификации противник мо-
жет обойти конфигурацию и направлять сообщения серверу в другую точку сети.
Фальшивый сервер при атом получит возможность действовать от имени реального
сервера, перехватывать любую информацию, идущую от пользователя, и отказы-
вать пользователю в доступе к службам, на которые тот имеет право
11.1. KERBEROS
399
Мы рассмотрим эти проблемы по порядку и обратимся к табл. 11.1, в кото-
рой представлен реальный протокол Kerberos.
Сначала рассмотрим проблему перехвата мандатов на получение мандата и
необходимость определения того, что представивший мандат объект является
клиентом, которому этот мандат был выдан. Угроза здесь в том, что противник
похитит мандат и использует его до истечения срока его действия. Чтобы понять
суть проблемы, предположим, что AS каким-то защищенным способом предос-
тавляет некоторую секретную информацию как клиенту, так и TGS. Тогда кли-
ент может идентифицировать себя для TGS, предоставив (снова некоторым за-
щищенным способом) расшифровку этой секретной информации. Эффективным
в этом случае оказывается применение в качестве секретной информации ключа
шифрования — в системе Kerberos он называется сеансовым ключом.
В табл. 11(a) показан сценарий распределения ключа, называемого сеансовым
ключом. Как и прежде, клиент посылает серверу аутентификации AS сообщение
с запросом о разрешении доступа к TGS. Сервер аутентификации AS отвечает со-
общением. содержащим мандат и зашифрованным ключом, строящимся на ос-
нове пароля пользователя (Кс). Это шифрованное сообщение содержит также
экземпляр сеансового ключа, Кс ,t,, где индексы указывают на то, что это сеан
совый ключ для С и TGS. Поскольку этот сеансовый ключ находится внутри со
общения, шифрованного с помощью Кс, только клиент пользователя сможет
прочесть его. Тот же сеансовый ключ включается и в мандат, который может
быть прочитан только TGS. Таким образом, осуществляется защищенная переда-
ча сеансового ключа в системы С и TGS.
Прежде чем продолжить изучение этого вопроса, следует обратить внимание
на то, что в этой первой фазе диалога было добавлено несколько дополнитель-
ных элементов. Сообщение (1) включает метку даты-времени, чтобы у AS име-
лась возможность проверить, что данное сообщение соответствует текущему вре-
Таблица 11.1. Обмен сообщениями по протоколу Kerberos версии 4
(а) Обмен службы аутентификации: получение мандата на получение^мандата^
(1) С —>AS. 1D( || ID^ и TS,
(2) AS —> C: EK[ [Kr.q,. II|| TS2 II Срок, II Мандат,,,]
Мандат^, = Ек,о[К<-1Ч„ JI IDr || AD<- || Ю)р. |[ TS, II Срок,]
(б) Обмен службы выдачи мандатов получение
(3) С -♦ TGS : IDv II Мандат,,, || Удостоверениес
(4) TGS -4 С : Екс [Kc,v || IDV || TS, || Мандату]
Мандат^, = ЕКй.[Кс || ГОС II ADr || ID,,. || TS, || Срок,]
Мандату = EKv|Kc,v || Щ- || АОС || ПХ || TS, || Срок,]
Удостоверениес = ЕКс,ДГОс II ADc || TSa]
(в) Обмен аутентификации клиенга/сервера: получение сервиса
(5) С -» К : Мандату || Удостоверение,.
(В) К —> С : Еже, [TS, +1] (для взаимной аутентификации)
Мандату = Е„, [Кс,у || IDC || ADC || ID, || TS, II Срок,]
Удостоверениег =EKc tp(TDc II ADc II TS5]
мандата да получевие^серлиса,,..,
400
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
мени. Сообщение (2) включает некоторые элементы мандата в форме, доступной
системе С. Это позволяет С убедиться в том, что это мандат для TGS, и выяс-
нить срок окончания его действия
Вооружившись мандатом и сеансовым ключом, С теперь имеет возможность
обратиться к TGS. Как и прежде, С посылает TGS сообщение, включающее ман-
дат и идентификатор затребованного сервиса (сообщение (3) в табл. 11 1(6)).
Кроме того, С передает удостоверение, включающее идентификатор и адрес
пользователя С, а также метку даты-времени. В отличие от мандата, который
предполагает многократное использование, удостоверение предлагается исполь-
зовать только один раз и срок его действия весьма ограничен. TGS может де-
шифровать мандат с помощью ключа, применяемого совместно с АВ. Мандат
указывает на то, что сеансовый ключ КсЛП пользователю С был доставлен. По
сути, мандат говорит: “Любого, кто использует Кс, следует принимать за С”.
Система TGS использует сеансовый ключ, чтобы дешифровать удостоверение.
Затем TGS может сравнить содержащиеся в удостоверении имя и сетевой адрес с
соответствующими элементами мандата и с сетевым адресом поступившего со-
общения. Если все оказывается в полном соответствии, TGS заключает, что от-
правителем мандата является реальный владелец мандата. Удостоверение как бы
указывает: “Со времени TS, будет использоваться KCU1". Обратите внимание на
то, что мандат никого не идентифицирует, а обеспечивает способ защищенного
распределения ключей. Задачи аутентификации клиента выполняет удостовере-
ние. Ввиду того что удостоверение может использоваться только один раз и име-
ет короткую продолжительность жизни, устраняется угроза того, что противник,
похитивший и мандат, и удостоверение, сможет с успехом предъявить их позже.
Ответ от TGS в виде сообщения (4) по форме соответствует сообщению (2). Со-
общение шифруется сеансовым ключом, используемым TGS совместно с С, и
включает сеансовый ключ, который должен применяться совместно С и сервером
V, идентификатор V и метку даты-времени мандата. Мандат содержит тот же се-
ансовый ключ.
Теперь С имеет мандат многократного использования для доступа к соответ-
ствующей службе V. Когда С предъявляет этот мандат, как показано в сообще-
нии (5), С посылает и удостоверение. Сервер может дешифровать мандат, восста-
новить сеансовый ключ и дешифровать удостоверение.
Если требуется взаимная аутентификация, сервер может ответить так, как
предлагается в сообщении (6) из габл. 11.1. Сервер возвращает значение метки
даты-времени из удостоверения, увеличенное на 1 и шифрованное сеансовым
ключом. Система С может дешифровать это сообщение и проверить увеличенное
значение метки даты-времени. Поскольку сообщение было шифровано сеансовым
ключом, С убеждается в том, что это сообщение могло быть создано только сер-
вером V. Содержимое сообщения убеждает С в том, что данное сообщение не яв-
ляется воспроизведением старого ответа.
В итоге всего процесса клиент и сервер получают общий секретный ключ.
Этот ключ можно использовать для шифрования будущих сообщений между ни-
ми или для обмена использующимися при этом новыми сеансовыми ключами.
В табл. 11.2 объясняется назначение каждого из элементов протокола
Kerberos, а на рис. 11.1 показана упрощенная схема всего процесса.
11.1. KERBEROS
401
Таблица 11.2. Назначение элементен протокола Kerberos версии 4
(а) Обмен службы аутентификации
Сообщение (1) Клиент запрашивает мандат на получение мандата
IDc: Идентифицирует пользователя клиента для системы AS
Информирует AS 0 запросе пользователем доступа к TGS
TSi: Позволяв AS проверит L синхрон И ib ЦИ Ю ЧвСпВ П< ЧьЭОВаГг.ТЛ Г 48'ими
Сообщение (2) AS выдает в ответ мадам на получение мандата
Екс ' Шифрование, основанное на пароле пользователя, позволяющее AS и клиенту проверить пароль и защищающее содержимое сообщения (2)
Ке.ч,: Экземпляр сеансовою -люча для клиента, сознанного Аь с целью обес- печения защищенною обмена данными между клиентом и сервером без наличия общего постоянного ключа
Подтверждает, что м-шд.-т предназначен для TGfs
TS2 : Информирует клиента о времени выдачи мандата
CpoKj : Информирует клиенте о сроке действия мандата
Манда тг : Мандат, который должен использоваться клиентом для доступа к TGS
(б) Обмен службы выдачи мандатов
Сообщение (3) Клиент запрашивает мандат на получение сервиса
1DV : Информирует AS о запросе пользователем доступа к серверу V
Мандат,,,: Убеждает TGS в том, что пользователь был идентифицирован сер- вером аутентификации AS
Удостовереяиес : Генерируете я клиентом для подтверждения мандата
Сообщение (4) TGS выдает в ответ мандат на получение сервиса
Ккс ч.: Шифрование ключом, используемым совместно С и TGS, защи- щающее содержимое сообщения (4)
Kc.V ! Экземпляр сеансового ключа для клиента, созданного TGS с целью предоставления возможности защищенного обмена данными между клиентом и сервером без наличия общего постоянного ключа
IDV: Подтверждает, что мандат предназначен для сервера V
TS.: Информирует клиента о времени выдачи мандата
Мандату: Мандат, который должен использовать клиент для доступа к V
Мандат^, Многократно используемый, чтобы пользователю не приходилось вводить пароль повторно
Екч. : Мандат шифруется ключом, известным только AS и TGS, чтобы ис- ключить возможность несанкционированной модификации мандате
Кс.м»: Экземпляр сеансового ключа для TGS, чтобы дешифровать удосто- верение, выполняющее задачу аутентификации мандата
IDc ’ У» взывает истинного владельца мандата
ADC : Предотвращает возможность использования мандата с рабочей станции, отличной от той, с которой мандат был запрошен
ID4.: Убеждает сервер в том, что мандат был дешифрован правильна
TSs Информирует TGS о времени выдачи мандата
Срок: : Предотвращает возможность воспроизведения мандата после исте- чения срока его действия
«02
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Окончание табл. 11.2
Удостоверениес Убеждает TGS в том, что предъявителем мандата является клиент,
IDc: AD,: ТЯа : которому мандат был выдан, имеет очень ограниченный срок дей- ствия для предотвращения возможности воспроизведения Удостоверение шифруется ключом, известным только клиенту и TG8, чтобы исключить возможность несанкционированной модификации Должен совпадать с идентификатором, включенным в мандат, что- бы аутентифицировать мандат Должен совпадать с адресом, включенным в мандат, чтобы аутен- тифицировать мандат Информирует TGS о времени создания данного удостоверения
(в) Обмен аутентификации клиента/сервера
Сообщение (5) Клиент запрашивает сервис Мандата . Убеждает сервер в том, что пользователь был идентифицировав сервером аутентификации AS Удостоверениее: Генерируется клиентом для подтверждения мандата Сообщение (6) Необязательная аутентификация сервера для клиента Ек,.,. : Убеждает С в том, что отправителем сообщения является V TS5 + 1: Убеждает С в том, что это сообщение ив является воспроизведением старого ответа Мандат.о Многократно используемый, чтобы пользователю не приходилось за ара 1ПИНЯТ. у TGS НОВЫЙ мандат. При къжДиМ обращайИИ К иДаОМ> Серверу Ек, : Мандат шифруется ключом, известным только TGS и серверу, что- бы исключить возможность несанкционированной модификации Кс v : Экземпляр сеансового ключа для клиента, чтобы дешифровать удо- стоверение, выполняющее задачу аутентификации мандата IDr : Указывает истинного владельца мандата ADC: Предотвращает возможность использования мандата с рабочей станции, отличной от той, с которой мандат был за1)рошен ГОу : Убеждает сервер в том. что мандат был дешифрован правильно TS. : Информирует сервер о времени выдачи мандата Срок4: Предотвращает возможность воспроизведения мандата после исте- чения срока его действия Удостоверениес Убеждает сервер в том, что предъявителем мандата является кли- ент, которому мандат был выдан; имеет очень ограниченный срок действия для предотвращения возможности воспроизведения Eg, v : Удостоверение шифруется ключом, известным только клиенту и серве- ру, чтобы исключить возможность несанкционированной модификации LDC: Должен совпадать с идентификатором, включенным в мандат, что- бы аутентифицировать мандат AD- : Должен совпадать с адресом, включенным в мандат, чтобы аутен- тифицировать Мандат TSs . Информирует сервер о времени создания давшего удостоверения
] 1.1. KERBEROS
403
Kerberos
2. Система AS проверяет права доступа пользователя
по своей базе данных и создаст мандат из получение
мандата и сеансовый ключ. Результат шифруется
с помощью ключа, создаваемого на основе
пароля пользователя
Сервер
аутентификации
(AS)
Один раз
для каждого
сеанса
польз атсля
5. Рабочая станция
посылает серверу
мандат и удостоверение
4. TGS дешифрует мандат и удостоверение,
проверяет запрос, а затем создает мандат
на доступ к запрошенному серверу
Один раз для
каждого сеанса
сервиса
3. Рабочая станция
запрашивает
у пользователя пароль
и использует
этот пароль для
дешифрования
пришедшего сообщения,
затем
отсылает серверу TGS
мандат и удостоверение,
содержащее имя
пользователя, сетевой
адрес и время
6. Сервер проверяет соответствие
мандата и удостоверения, а затем
разрешает использование сервиса.
Если требуется взаимная аутентификация,
сервер возвращает удостоверение
Маял»
Рис. 11.1. Схема службы Kerberos
1, Пользователь входит
в систему рабочей станции
и запрашивает
сервис сервера
лкозый «221
Один раз для
каждого типа
сервиса
Сервер
выдачи
мандатов (TGS)
Области Kerberos
Полномасштабная среда Kerberos, складывающаяся из сервера Kerberos, ряда
клиентов и ряда серверов приложений, должна удовлетворять следующим условиям.
1. Сервер Kerberos должен иметь идентификатор пользователя (HID) и хэши-
рованные пароли всех пользователей в своей базе данных. Все пользовате-
ли регистрируются сервером Kerberos.
2. Сервер Kerberos и каждый сервер должны иметь свой совместно исполь-
зуемый секретный ключ. Все серверы регистрируются сервером Kerberos.
Такая среда называется областью (realm). Сети клиентов и серверов различ-
ных административных организаций обычно являются разными областями. Это
значит, что наличие пользователей и серверов, зарегистрированных в одном ад-
министративном домене и управляемых сервером Kerberos из другого домена,
обычн<> практически неприемлемо или противоречит административной полити-
ке. Однако пользователям одной области может понадобиться доступ к серверам
других областей, и некоторые серверы могут быть готовы обеспечить сервис
пользователям из других областей при условии, что эти пользователи могут быть
идентифицированы.
4Ы
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Система Kerberos обеспечивает механизм поддержки такой “межобластной"
аутентификации. Чтобы обеспечить поддержку аутентификации для двух облас-
тей, добавляется еще адно, третье требование.
3. Сервер Kerberos каждой из взаимодействующих областей должен исполь-
зовать с сервером другой области общий секретный ключ. Два сервера
Kerberos регистрируются один в другом.
Такая схема требует, чтобы сервер Kerberos одной области доверял аутенти-
фикацию своих пользователей серверу Kerberos другой области. Кроме того, сер-
веры второй области также должны быть готовы доверять серверу Kerberos пер-
вой области.
При таких основных требованиях можно предложить следующую схему
(рис. 11.2). Для получения сервиса с сервера из другой области пользователь
нуждается в мандате на доступ к этому серверу. Клиент пользователя сначала
следует обычной процедуре получения доступа к локальному TGS, а затем за-
прашивает мандат доступа к удаленному TGS (TGS из другой области). Затем
клиент может обратиться к удаленному TGS за мандатом на получение сервиса
от нужного сервера в области удаленного TGS.
В схеме, показанной на рис. 11.2, происходит обмен следующими сообще-
ниями (сравните с табл. 11.1).
(1) С —4 AS: Юс || ID,gs || TS,
(2) AS- -> С : Екг[Кг. t<a II IDl(ts || TS21| Срок, || Мандат^,]
(3) С-ч TGS : || Мандат,„ || Удостоверение,;
(4) TGS —» С: ЕцС1<,[Kr.igsren. II П},кй„га || TS, || Мандат,gs„m
(5) С-> TGS„ : IDv„,a || Мандатчвг,т || Удостоверениес 1
(6) TGS —>С: ЕкС1Ч,,„ [Кс,\п>ш II H->Vrem || TSa || МандаТугещ]
(7) С —> V_: МандатУгет || Удостоверениес
Мандат, предъявляемый удаленному серверу (Vrera ), указывает область, в ко-
торой пользователь изначально был аутентифицирован. Сервер решает, следует
ли удовлетворить удаленный запрос.
Проблемой, связанной с представленным выше подходом, является то, что он
не слишком эффективен в случае большого числа областей. Если число областей
равно N, то потребуется N(N - 1)/2 защищенных обменов ключами, чтобы каж-
дая область Kerberos могла взаимодействовать с любой другой из этих областей.
Kerberos версии 5
Версия 5 системы Kerberos описывается в RFC 1510 и содержит целый ряд
усовершенствований по сравнению с версией 4 [KOHL94J. Сначала мы установим
отличия версии 5 от версии 4, а затем рассмотрим протокол версии 5.
Сравнение версий 4 и 5
Разработка версии 5 системы Kerberos имела своей целью устранение ограни-
чений версии 4 в двух областях; ограничения среды и технические недостатки.
Мы исследуем усовершенствования в каждой из этих областей.
“Следующее обсуждение проводится по схеме, предложенной в [KOHL94J.
11.1. KERBEROS
405
Область А
Kerberos
Рис. 11.2. Запрос на получение сервиса из другой области
Версия 4 Kerberos разрабатывалась в среде проекта Athena, и поэтому не
вполне отвечает требованиям универсального использования. Эта версия имеет
следующие ограничения среды.
1. Зависимость от системы шифрования. Версия 4 требует применения DES. По-
этому приходится учитывать как экспортные ограничения на DES, так и со-
мнения в устойчивости DES. В версии 5 к шифрованному тексту присоединя-
ется идентификатор типа шифрования, поэтому может использоваться любая
схема шифрования. Присоединяются также и ключи шифрования с указанием
длины, что позволяет использовать одни и те же ключи в различных алгорит-
мах и указывать варианты одного алгоритма для применения.
2. Зависимость от протокола Internet. Версия 4 требует ввода адресов протоко-
ла Internet (IP). Другие типы адресов, как, например, сетевые адреса ISO, не
распознаются. В версии 5 сетевые адреса сопровождаются метками типа и
длины, что дает возможность использовать любые типы сетевых адресов.
406
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
3. Порядок байтов сообщения. В версии 4 отправитель сообщения использует
порядок байтов по своему усмотрению, а соответствующая метка, присое-
диняемая к сообщению, указывает на то, какой по значимости байт раз-
мещается по младшему адресу — наименее значимый или наиболее значи-
мый. Эта техника работает, но не следуем принятым соглашениям. В вер-
сии 5 структура сообщений определяется в соответствии со стандартом
абстрактной синтаксической нотацией версии 1 (.ASN-1 — Abstract Syntax
Notation One) и базовыми правилами кодировки (BER — Basic Encoding
Rules), что обеспечивает однозначный порядок байтов.
4 Срок действия мандата. Значения срока действия мандатов в версии 4 коди-
руются в виде 8-битовых значений в единицах, соответствующих пяти ми-
нутам. Максимальный срок действия мандата, выраженного таким образом,
оказывается равным 2‘ х5 = 1280 минутам, что лишь немногим более 21 ча-
са. Для некоторых приложений это может быть недостаточным (например,
при длительных процессах моделирования, требующих действительных удо-
стоверений Kerberos в течение всего времени выполнения). В версии 5 ман-
даты включают явное указание времени начала и окончания действия ман-
дата, что позволяет указывать любые сроки действия мандатов.
5. Передача удостоверений аутентификации. В версии 4 удостоверение, вы-
данное одному клиенту, нельзя передать некоторому другому узлу, чтобы
это удостоверение мог использовать другой клиент. Эта возможность по-
зволяет клиенту получить доступ к серверу и разрешить этому серверу
доступ к другому серверу от имени данного клиента. Например, клиент
запрашивает доступ к серверу печати, который затем должен получить
доступ к файлу клиента на файловом сервере, используя для доступа удо-
стоверения клиента. Версия 5 обеспечивает такую возможность.
6. Аутентификация в удаленной области. Б версии 4 взаимодействие между
N областями требует, как уже упоминалось выше, порядка № сеансов
взаимодействия Kerberos-Kerberos. В версии 5, как будет показано ниже,
поддерживается метод, при котором требуется меньшее число сеансов
взаимодействия.
Помимо этих ограничения среды, в самом протоколе версии 4 имеются тех-
нические недостатки. Большинство этих недостатков было перечислено в
IBELL9O], и ь версии 5 предпринята попытка их устранения. Недостатки заклю-
чаются в следующем.
1. Двойное шифрование. ()братите внимание в табл. 11.1 (сообщения 2 и 4) на
то, что мандаты, выдаваемые клиентам, шифруются дважды — один раз
секретным ключом сервера назначения, а затем снова, секретным ключом,
известным клиенту. Второе шифрование не является необходимым, и поэто-
му вызывает излишнее потребление вычислительных ресурсов
2. Шифрование в режиме РСВС. Шифрование в версии 4 использует нестан-
дартный режим DES, называемый режимом распространения сцепления
шифрованных блоков (режим РСВС — Propagating Cipher Block Chaining).0
вЭтот режим описывается в дополнении НА.
1.1.1 KERBEROS
407
Было доказано, что этот режим уязвим в отношении атак перестановки бло-
ков шифрованного текста [KOHL89J. Режим РСВС должен был, как часть
стратегии шифрования, обеспечивать проверку целостности. В версии 5 пре
дусмотрены механизмы непосредственного обеспечения целостности, что по-
зволяет применять стандартный режим СВС шифрования.
3. Сеансовые ключи. Каждый мандат включает сеансовый ключ, используе-
мый клиентом для шифрования удостоверений, посылаемых службе, связы-
ваемой с данным мандатом. Кроме того, этот сеансовый ключ может впо-
следствии использоваться клиентом и сервером для зашиты сообщений, пе-
ресылаемых в ходе сеанса, Однако, ввиду того, что один и тот же мандат
может использоваться повторно для получения соответствующего сервиса от
конкретного сервера, существует риск, что противник может предъявить
клиенту или серверу воспроизведенные сообщения старого сеанса. В версии
5 для клиента и сервера существует возможность договориться о сеансовом
подключе, который действует только в одном соединении. При новом досту-
пе клиент должен будет использовать новый сеансовый подключ.
4. Атаки на пароль. Обе версии уязвимы в отношении атак на пароль. Сооб-
щение клиенту от системы AS включает данные, зашифрованные с помощью
ключа, построенного на основе пароля клиента.' Противник может перехва-
тить это сообщение и попытаться дешифровать его, используя разные паро-
ли Если в результате попыток дешифрования получится сообщение пра-
вильного впда, то противник узнает пароль клиента и сможет впоследствии
использовать этот пароль для того, чтобы получать удостоверения аутенти-
фикации от Kerberos Этот тип атаки на пароль описан в главе 15, там же
приводятся соответствующие контрмеры. Версия 5 предлагает механизм, на-
зываемый предварительной аутентификацией, призванный затруднить атаки
на пароль, по не исключает их возможность полностью
Диалог аутентификации версии 5
В табл. 11.3 представлен базовый диалог версии 5. Разобраться в нем лучше
всего в сравнении с диалогом версии 4 (см. табл. 11.1).
Сначала рассмотрим обмен службы аутентификации. Сообщение (1) пред-
ставляет собой запрос клиентом мандата на получение мандата. Как и прежде,
этот запрос включает идентификаторы пользователя и TGS. Но здесь добавляют-
ся следующие новые элементы
Область. Указывает область пользователя.
Опции. Служат для того, чтобы запросить указание определенных флагов
в возвращаемом мандате, как объясняется ниже.
Границы времени. Используются клиентом, чтобы запросить в мандате
следующие установки времени:
• from — желательное время начала действия затребованного мандата,
• till — желательное время окончания действия затребованного мандата,
• rtime — желательное новое время окончания действия мандата.
7
Отображение паролей в ключи шифрования описывается в дополнении НА.
408
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Оказия. Случайное значение, которое должно повториться в сообщении (2) для
гарантии того, что ответ является новым, а не воспроизведен противником
Сообщение (2) возвращает мандат на получение мандата, информацию, иден-
1фицирующую клиента, и некоторый блок, шифрованный с использованием
иоча шифрования, построенного на основе пароля пользователя. Этот блок
слючает сеансовый ключ, который должен использоваться клиентом при обме-
; с TGS, границы времени, указанные в сообщении (1), оказию из сообще-
1Я (1) и информацию, идентифицирующую TGS. Сам мандат включает сеансо-
дй ключ, информацию, идентифицирующую клиента, затребованные значения
<аниц времени и флаги, которые указывают состояние этого мандата и требуе-
ые опции. Эти флаги обеспечивают новые важные функциональные возможно-
и версии 5. Пок мы отложим обсуждение использования этих флагов и скон-
нтрируем внимание на общей структуре протокола версии 5.
Давайте сравним обмен службы выдачи мандатов версий 4 и 5. В обеих вер-
[ях сообщение (3) включает удостоверение, мандат и имя запрашиваемого Сер-
гея. Кроме того, в версии 5 предусмотрены значения затребованных границ
»емени. опции для мандата и оказия, функции которых подобны функциям со-
•ветствующих элементов сообщения (1). Само удостоверение, по существу, то
е, что и удостоверение, используемое в версии 4.
Сообщение (4) имеет ту же структуру, что и сообщение (2), и возвращает
(ндат плюс информацию, требующуюся клиенту; последняя шифруется сеансо-
IM ключом, применяемым теперь совместно клиентом и TGS.
(блица 11.3. Обмен сообщениями по протоколу Kerberos версии 5
(а) Обмен службы аутентификации: получение мандата на получение мандата
(1) С -» AS : Опции || 1ОГ II Область^, || IDW, || ГраницыВремени | Оказия]
(2) AS-» С:
Областьр || IDr || Мандат,,, || Екс{Кс || ГраницыВремени || Оказия, || Область,,. || IDW]
Мандат^, = ЕКи<|Флиги || Кс.„, || Область, || IDC I ADC II ГраницыВремени]
;б) Обмен службы выдачи мандатов: получение мандата на получение сервиса
(3) С—»TGS;
Опции || IDv || ГраницыВремени [I Оказия; [ Мандат,*. II Удостоверениес
(4) TGS -» С :
Областьс |l IDC || Мандату 1| Ек,- ^.[Kc.v I! ГраницыВремени || Оказия* II Область, || IDV]
Мандат,,, = ЕКч,[Флаги || Кс.,*. II Областьс II IDe || ADC li ГраницыВремени]
Мандату = Ек, [Флаги || Kc,v || Область,; (| П)г I] ADC || ГраницыВремени]
Удостоверениес = EKt ,„[IDC II Областьг || TS,]
(в) Обмен аутентификации клиенга/сервера: получение сервиса
(5) С -» К : Опции । Мандату || Удостоверениес
(6) К —» С г Ekc.v[TS; || Подключ ]| ПорядковыйНомер]
Мандату = EKv[Флаги || Kr,v || Областьс l| IDC ,1 ADC || ГраницыВремени]
удостоверениес = ЕКг ДП)С || Областьс II TS* || Подключ || ПорядковыйНомер]
.1. KERBEROS 409
Наконец, ряд новых элементов используется в версии 5 для обмена аутенти-
фикации клиеята/сервера. В сообщении (5) клиент имеет возможность запро-
сить в виде опции взаимную аутентификацию. Удостоверение включает несколь-
ко новых полей следующего вида.
Подключ Выбор клиентом ключа шифрования может служить для того,
чтобы защитить данный конкретный сеанс приложения. Если это поле не
использовать, будет применен сеансовый ключ из мандата ( Kc,v).
Порядковый номер. Необязательное поле, указывающее начальный поряд-
ковый номер, который должен применяться сервером для нумерации со
общений, посылаемых клиенту в ходе данного сеанса. Сообщения нумеру-
ются еще и для того, чтобы вовремя обнаружить воспроизведение.
Если требуется взаимная аутентификация, сервер отвечает сообщением (6).
Это сообщение включает метку даты-времени из удостоверения. Обратите вни-
мание на то, что в версии 4 метка даты-времени увеличивалась на единицу. Это
не требуется в версии 5, поскольку сам формат сообщений таков, что у против-
ника нет возможности создать сообщение типа (6) без знания соответствующих
ключей шифрования. Значение подключа, если оно задается, отменяет значение
поля подключа сообщения (5) при условии, что соответствующее значение зада-
ется там. Необязательное поле порядкового номера указывает начальный поряд-
ковый номер, который должен использовать для сообщений клиент.
Флат мандата
Поле флагов, включаемое в мандаты в версии 5, поддерживает в сравнении с
версией 4 расширенные функциональные возможности В табл. 11.4 перечисле-
ны флаги, которые могут включаться в мандат.
Флаг INITIAL указывает на то, что этот мандат был выдан сервером аутенти-
фикации AS. а не сервером выдачи мандатов TGS. Когда клиент запрашивает ман-
дат у TGS, он предъявляет мандат на получение мандата, полученный от AS. В
версии 4 это было единственным способом получить мандат на предоставление
сервиса. В версии 5 обеспечивается дополнительная возможность, когда клиент
может получить мандат на исполъзоание сервиса непосредственно от AS. Удобство
здесь состоит в следующем: такой сервер, как, например, сервер изменения паро-
ля, может узнать, какой пароль клиента проверялся перед проверкой данного.
Флаг PRE-AUTHENT, если он установлен, указывает на то, что, когда AS по-
лучил исходный запрос (сообщение 1), он перед выдачей мандата аутентифици-
ровал клиента. Точная форма этой предварительной аутентификации остается
неопределенной. Например, реализация версии 5 Массачусетсского технологиче
ского института по умолчанию предполагает предварительную аутентификацию
с помощью шифрованной метки даты-времени Когда пользователю нужно полу-
чить мандат, ему необходимо послать серверу аутентификации AS блок предва-
рительной аутентификации, содержащий случайное значение, номер версии и
метку даты-времени, шифрованные с помощью ключа, построенного на основе
пароля клиента Сервер аутентификации AS дешифрует блок и не отправляет
мандат на получение мандата, если метка даты-времени в блоке предваритель-
ной аутентификации не попадает в рамки допустимой величины отклонения
410
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
абдица 11.4. Флага Kerberos версии 5
INITIAL Мандат был выдан при использовании протокола AS, а не на основе мандата на выдачу мандата
PKE-AUTHENT В ходе начальной аутентификации клиент был идентифицирован до того, как был выдан мандат
HW AUTHENT Протокол, используемый для начальной аутентификации, требовал наличия аппаратных средств, которые, как предполагается, имеют- ся только у указанного клиента
RENEWABLE Сообщает TGS о том, что мандат может служить для получения мандата, срок действия которого истекает позже
MAY POSTDATE Сообщает TGS о том, что на основании данного мандата на выдачу мандата может быть выдав мандат, датированный прошлым чис- лом
POSTDATED Указывает на то, что этот мандат отсрочен; конечный сервер может проверить значение поля aathtime, чтобы выяснить, когда была выполнена первоначальная аутентификация
INVALID Мандат недействителен и должен быть подтвержден TGS перед ис- пользованием
PROXLaBLE Сообщает TGS о том, что на основании предъявленного мандата может быть выдан новый мандат с другим сетевым адресом
PROXY Указывает на то, что мандат является агентом (proxy)
FORWARDABLE Сообщает TGS о том, что на основании данного мандата иа выдачу мандата может быть выдав новый манда, ва предоставление ман- дата с другим сетевым адресом
FORWARDED Указывает на то. что мандат был передан или выдан на основании результатов аутентификации, выполненной с использованием пере- данного мандата на получение мандата
«меня (т.е. в интервал времени, позволяющий учесть дрейф часов и сетевые
держки). Другой возможностью является применение интеллектуальной кар-
>чки, генерирующей непрерывно меняющиеся пароли, которые включаются в
общения предварительной аутентификации. Пароли, генерируемые этой кар
>чкой, могут основываться на пароле пользователя, но быть преобразованными
арточкой так, что это, по сути, будет означать использование случайных паро-
!й. Такой механизм предотвращает возможность атак, основанных на угадыва-
ли легких паролей. О применении интеллектуальной карточки или другого по-
лного устройства можно судить по флагу HW-AUTHENT.
Когда мандат имеет долгий срок действия, у противника есть потенциальная
зможность похитить его и затем использовалось на протяжении достаточно
гительного периода. Если с целью уменьшения этой угрозы для мандатов уста-
>вить короткие сроки действия, то существенно увеличивается нагрузка на сис-
му из-за необходимости частого получения новых мандатов. В случае мандата
i получение мандата клиенту необходимо либо хранить секретный ключ, что,
|енидно, означает риск, либо повторно запрашивать у пользователя пароль.
.1 KERBEROS
411
Компромиссная схема предполагает использование возобновляемых мандатов.
Мандат с установленным флагом RENEWABLE включает два значения срока
действия: один для срока окончания действия данного конкретного мандата и
один — для крайнего возможного значения срока. Клиент может возобновить
действие мандата, предъявив его на рассмотрение TCS и запросив новое время
для срока окончания действия. Если запрошенное новое время попадает внутрь
границ крайнего возможного значения срока. TGS может выдать новый мандат с
новым временем сеанса и более поздним временем окончания действия. Пре-
имущество этой схемы в том, что TGS может отказаться обновить мандат, объ-
явленный похищенным.
Клиент может потребовать, чтобы AS выдал мандат на выдачу мандата с ус-
тановленным флагом MAY-POSTDATE. Клиент может затем использовать такой
мандат для того, чтобы запросить от TGS мандат с флагами POSTDATED и
INVALID. Впоследствии клиент может предъявить отсроченный мандат для под-
тверждения его действительности Эта схема может оказаться полезной при вы-
полнении длинных пакетных заданий на сервере, который периодически требует
мандата. Клиент может получить нужное число мандатов для соответствующего
сеанса сразу, с распределенными значениями времени. Все мандаты, кроме пер-
вого, изначально недействительны. Если в ходе выполнения работы наступает
момент времени, когда требуется новый мандат, клиент может получить под-
тверждение действительности соответствующего мандата. При таком подходе
клиенту нет необходимости повторно использовать мандат на получение манда-
та, чтобы получить мандат на предоставление сервиса.
В версии 5 для сервера существует возможность действовать в качестве агента
(proxy) от имени клиента, по сути, принимая удостоверения и привилегии кли-
ента при запросах сервиса с другого сервера. Если клиент намерен использовать
такой механизм, клиент запрашивает мандат с установленным флагом
PROXIABLE. Когда такой мандат предъявляется на рассмотрение TGS, TGS раз-
решает выдачу мандата на получение сервиса с другим сетевым адресом и этот
последний мандат будет иметь установленный флаг PROXY. Приложение, полу-
чающее такой мандат, может либо принять его, либо потребовать дополнитель-
ную аутентификацию с целью контрольной проверки.®
Концепция применения агента является частным случаем более общей проце-
дуры передачи мандата. Если мандат имеет установленный флаг
FORWARDABLE, то TGS может выдать подателю запроса мандат на получение
мандата с другим сетевым адресом и установленным флагом FORWARDED. Этот
мандат может быть затем предъявлен удаленному TGS. Такая возможность по-
зволяет клиенту получить доступ к серверу из другой области без того, чтобы
каждая система Kerberos хранила секретные ключи для серверов Kerberos любой
другой области. Например, области могут быть выстроены по иерархии. Тогда
клиент сможет подняться по дереву к общей вершине, а потом спуститься вниз,
чтобы достичь области назначения. Каждый шаг на этом пути должен включать
передачу мандата на получение мандата следующему TGS цепочки.
g
Некоторые из возможностей применения proxy описаны в |NEUM93b].
412
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
а аутентификации X.509 фЕцЁчЯИ^>
Рекомендации Х.509 Международного союза телекоммуникаций (ITU — In-
ternational Telecommunication Union) являются частью рекомендаций серии
Х.500, которые определяют стандарт службы каталогов. Каталог представляет,
по сути, сервер или распределенную систему серверов, поддерживающих базу
данных с информацией о пользователях, В данной информации отражены соот-
ветствие имен пользователей и их сетевых адресов, а также другие атрибуты
пользователей.
Документ Х.509 определяет каркас схемы предоставления услуг аутентифи-
кации каталогом Х.500 своим пользователям. Этот каталог может служить хра-
нилищем сертификатов открытых ключей типа обсуждавшихся в главе 6. Каж-
дый сертификат содержит открытый ключ пользователя и подписывается с по-
мощью секретного ключа надежного центра сертификации. Кроме того, Х.509
определяет альтернативные протоколы аутентификации, построенные на исполь-
зовании сертификатов открытых ключей.
Стандарт Х.509 оказывается важным ввиду того, что структура сертификатов
и протоколов аутентификации, определяемых в Х.509, используется во многих
случаях. Например, формат сертификата Х.509 принят в протоколах S/MIME
(см. главу 12), IP Security (см. главу 13), а также SSL/TLS и SET (см. главу 14).
Стандарт Х.509 появился в 198» году. Позже он был пересмотрен и в нем
5ыли исправлены некоторые недостатки защиты, что отражено в I1ANS90] и
MITC90J; исправленные рекомендации были опубликованы в 1993 году. Проект
третьей версии появился в 1995 году.
Рекомендации Х.509 базируются на использовании методов криптографии с
ггкрытым ключом и цифровых подписей. Стандарт не вынуждает использовать
<оикретный алгоритм, но рекомендует применять RSA. Схема цифровой подии-
да предполагает использование функции хэширования. Опять же, стандарт не
)бусловливает наличия конкретного алгоритма хэширования. Рекомендации
1988 года включали описание рекомендуемого алгоритма хэширования, но впо-
следствии выяснилось, что этот алгоритм ненадежен, и поэтому в рекомендации
1993 года он не вошел.
2ер1ификаты
Главным элементом схемы Х.509 являются сертификаты открытых ключей,
вязываемые с каждым пользователем. Предполагается, что эти сертификаты
юльзователя выдаются некоторым надежным центром сертификации (СА —
Certification Authority) и размещаются в каталоге либо центром сертификации,
1ибо пользователем. Сервер каталогов непосредственно не отвечает за создание
•ткрытых ключей или функции сертификации; а просто предоставляет легко
(оступное пользователям место получения сертификатов.
На рис. 11.3 показан общий формат сертификата, который включает сле-
дующие элементы.
* Версия. Указывает версию формата сертификата; по умолчанию выбирает-
ся версия 1. При наличии уникального идентификатора инициатора
1 2. СЛУЖБА АУТЕНТИФИКАЦИИ Х.509
418 .
(Initiator Unique Identifier) или уникального идентификатора субъекта
(Subject Unique Identifier) значением версии должно быть 2. Если имеется
одно или несколько расширений, должна быть указана версия 3.
Порядковый номер. Целое значение, уникальное для данного центра сер-
тификации, однозначно связываемое с данным сертификатом.
* Идентификатор алгоритма подписи. Алгоритм, служащий для создания
подписи сертификата, вместе со всеми необходимыми параметрами. Ввиду
того что эта информация дублируется в пиле подписи в конце удостовере-
ния, данное поле оказывается не слишком полезным.
Имя объекта, выдавшего сертификат. Имя по стандарту Х.500 центра сер-
тификации, создавшего и подписавшего сертификат.
• Срок действия. Включает две даты: начала и окончания срока действия
сертификата.
Имя субъекта. Имя пользователя, которому направляется сертификат, т.е.
данный сертификат удостоверяет открытый ключ субъекта, которому при-
надлежит соответствующий личный ключ.
i*
а Информация об открытом ключе субъекта. Открытый ключ субъекта плюс
идентификатор алгоритма, с которым должен использоваться этот ключ, а
также все необходимые параметры.
Уникальный идентификатор объекта, выдавшего сертификат. Необяза-
тельная строка битов, используемая для однозначной идентификации цен-
тра сертификации, выдавшего сертификат, в случае, когда имя Х.500 тре-
буется использовать для различных объектов.
Уникальный идентификатор субъекта. Необязательная строка битов, ко-
торая служит для однозначной идентификации субъекта в случае, когда
имя Х.500 требуется использовать для различных объектов,
Расширения. Одно или больше полей расширения. Расширения были до-
бавлены в версии 3 и рассматриваются в этом разделе ниже.
Подпись. Охватывает все остальные поля сертификата, содержит хэш-код
остальных полей, шифрованный с помощью личного ключа центра серти
фнкации. Это поле включает и идентификатор алгоритма подписи.
Поля уникальных идентификаторов были включены в версию 2, чтобы обес-
печить возможность многократного применения имен субъекта и/или объекта,
выдавшего сертификат. Эти поля используются редко.
Для определения сертификата стандарт в стандарте принята следующая формула:
СА«А» = СА (V, SN. А1, СА, ТА, А, Ар},
где
Y « X » — удостоверение пользователя X, выданное центром сертифика-
ции Y,
Y{I} — подпись I объектом Y. Она состоит из I с добавленным шифро-
ванным хэш-кодом.
414
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
ЧДСН I ифи Автор
«люритн»
подписи
Срок
дгйгтвия
Информация
об открытой
ключе
субъект»
Подпись
(а) Сертификат ЧЛ09
Ид* d гиф ика гор
алтиршм»
подписи
Отозванный
сертификат
Атг'.рип*
Параметры
Им* объекта,
выдавше/о сертификат
Дата утого обновления
Дчт* ло уюицек-
обновления
гР.р*л1, / ла<ш< р
.сертифп »_ та.-Мал* чтите/W
Дета отаыаж
Отозванный
сертифика.
Подпись
(б) Параметры отзыва
с ертиф иката
ис. II 3 Форматы Х.509
jo д<ч
Центр сертификации подписывает сертификат с помощью своего личного
поча. Если соответствующий открытый ключ известен пользователю, то он
)жет проверить, что подписанный центром сертификации сертификат является
йствительным. Это типичная схема использования цифровой подписи (см.
!с. 8.5(b) в главе 8) .
элучение сертификата пользователя
Сертификат пользователя, генерируемый центром сертификации, имеет сле-
ющие характеристики ?. _ ' » /
Любой пользователь, имеющий открытый ключ центра сертификации,
может восстановить сертифицированный открытый ключ пользователя.
Никто, кроме уполномоченного центра, не может изменить сертификат без
того, чтобы это было обнаружено, z -л
Поскольку сертификаты фальсифицировать нельзя, они могут быть размеще-
1 в каталоге без применения специальных средств защиты.
Если все пользователи обращаются к одному и тому же центру сертифика-
и, это указывает на <бщее доверие данному центру сертификации. Все серти-
каты пользователя могут размещаться в одном каталоге, доступном всем
пьзователям. Кроме того, пользователь может передать свой сертификат непо-
щственно другому пользователю. В любом случае, если В имеет сертификат А,
2 СЛУЖБА АУТЕНТИФИКАЦИИ Х.509
415
то В может быть уверен в том, что сообщения, которые он шифрует открытым
ключом А, будут защищены от прочтения и что сообщения, подписанные лич-
ным ключом А, защищены от фальсификации.
В большом сообществе пользователей обращение всех пользователей к одному
и тому же центру сертификации может быть практически неприемлемо. По-
скольку сертификаты подписываются центром сертификации, каждый пользова-
тель должен иметь собственный экземпляр открытого ключа центра сертифика-
ции, чтобы проверять подписи. Этот открытый ключ должен быть доставлен
каждому пользователю абсолютно защищенным способом (обеспечивающим це-
лостность и аутентичность), чтобы пользователь имел полную уверенность в по-
ступающих сертификатах Таким образом, в случае большого числа пользовате-
лей может оказаться более удобным иметь ряд центров сертификации, каждый
из которых должен будет защищенным способом доставить открытый ключ не-
которой части пользователей.
Теперь предположим, что А получает сертификат от уполномоченного центра
сертификации X,, а В — от X,. Если пользователю А не был предоставлен от-
крытый ключ Х?, то сертификат В, выданный центром сертификации Ха, ока-
зывается для А бесполезным Пользователь А может прочитать сертификат Б, но
не может проверить подпись. Однако, если два центра сертификации по какой-
либо защищенной схеме обменялись своими открытыми ключами, следующая
процедура дает возможность А получить открытый ключ Е.
1. Пользователь А получает из каталога сертификат Ха, подписанный X,.
Поскольку А с уверенностью знает открытый ключ X,, из полученного
сертификата А может извлечь открытый ключ X, и проверить его с по-
мощью подписи, которая была создана Х; для этого сертификата
2. Затем А снова обращается к каталогу и получает сертификат В. подписан-
ный Х3. Поскольку теперь А имеет экземпляр открытого ключа Ха, А
может проверить подпись и получить открытый ключ В
Пользователь А использовал цепочку сертификатов, чтобы получить откры-
тый ключ В. В обозначениях Х.ЬОЭ эта цепочка записывается в виде
X, « X, » X, « в » .
Точн.- так же В может получить открытый ключ А,, но но обратной цепочке:
X, « X, » X, « А » .
Эта схема необязательно должна ограничиваться на случай цепочки из двух
сертификатов. В создании цепочки может участвовать произвольное число цен-
тров сертификации. Цепочка из N элементов будет иметь следующий вид:
X, « X, » X, « X, » - Х„ « В » .
В этом случае пара центров сертификации в каждом звене (X,, Хш) должна
иметь уже готовые сертификаты друг для друга.
Все эти сертификаты центров сертификации должны размещаться в каталоге,
а пользователю необходимо знать, как они соединены, чтобы проследовать по
подходящему маршруту к нужному сертификату открытого ключа другого поль-
зователя. Стандарт Х.509 предлагает, чтобы центры сертификации подчинялись
иерархии так, чтобы путь при этом оказывался прямым.
416
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
На рис. 11.4, взятом из документации Х.509, показан пример такой иерар-
1и. Соединенные окружности обозначают иерархически связанные центры сер-
1фикации, а в указанных рядом прямоугольных блоках приводятся сертифика-
>1, поддерживаемые в каталоге соответствующего центра сертификации. Ката-
)г центра сертификации включает два типа сертификатов.
* Прямые сертификаты. Сертификаты X, выданные другими центрами сер-
тификации.
Возвратные сертификаты. Сертификаты, выданные X для сертификации
других центров сертификации
В данном примере пользователь А может запросить следующие сертификаты
। каталога, чтобы построить сертификационный маршрут к В:
X « W » W « V » V « Y » Y « Z » Z « В » .
Когда пользователь А получит эти сертификаты, он сможет развернуть серти-
1каты по маршруту один за другим и восстановить надежный экземпляр откры-
то ключа В. Используя этот открытый ктюч, А сможет послать В шифрованные
общения. Если же А понадобится получать шифрованные сообщения от В или
» подписывать сообщения, посылаемые адресату В, то В потребуется открытый
юч А, который может быть получен по следующей цепочке сертификатов:
2. СЛУЖБА АУТЕНТИФИКАЦИИ х.509
417
Z « Y » Y « V » V « W » W « X » X « A »
Пользователь В может получить этот набор сертификатов из каталога, или А
может включить такой набор сертификатов в свое исходное сообщение для В.
Отзыв сертификатов
Вспомните из рис. 11.3, что каждый сертификат включает информацию о
сроке его действия, что во многом подобно кредитной карточке. Обычно новый
сертификат выдается непосредственно перед окончанием срока действия старого.
Кроме того, в некоторых ситуациях желательно иметь возможность отменить
действие сертификата до того, как срок его действия истечет, по одной из сле-
дующих причин.
1. Секретный ключ пользователя оказывается скомпрометированным.
2. Пользователь больше не сертифицируется данным центром сертификации.
3. Сертификат данного центра сертификации называется скомпрометиро-
ванным.
Каждый центр сертификации должен поддерживать список, в котором ука-
зываются все отозванные, но не исчерпавшие срок своего действия сертификаты,
выданные данным центром сертификации, включая как сертификаты, выданные
пользователям, так и сертификаты, выданные другим центрам сертификации.
Эти списки должны размещаться еще и в каталоге.
Любой список отозванных сертификатов (CRL — Certificate Revocation List),
размещаемый в каталоге, подписывается центром сертификации и включает имя
такого центра (см. рис- 11.3 (б)), дату создания списка, дату выхода следующей
версии CRL и соответствующую запись для каждого отозванного сертификата.
Любая такая запись складывается из порядкового помера сертификата и даты
отзыва этого сертификата. Ввиду того что порядковые номера сертификатов
уникальны внутри данного центра сертификации, порядкового номера оказыва-
ется достаточно для того, чтобы распознать сертификат
Когда пользователь получает сертификат в сообщении, пользователь должен
выяснить, не был ли этот сертификат отозван. Пользователь может проверять это
по каталогу каждый раз, когда получает сертификат. Чтобы избежать задержек (и
возможных дополнительных расходов), связанных с поиском информации г ката-
логе, вполне вероятно, что пользователь предпочтет использовать локальный кэш
для хранения сертификатов и списков отозванных сертификатов.
•»
Процедуры аутентификации
Стандарт Х.509 включает также три альтернативные процедуры аутентифи-
кации, которые предлагаются в целом ряде приложений. Все эти процедуры ис-
пользуют подписи, построенные по схеме с открытым ключом Предполагается,
что каждая из двух сторон знает открытый ключ другой, получив соответст-
вующий сертификат другой стороны из каталога или ввиду того, что соответст-
вующий сертификат был включен в исходное сообщение стороны, инициировав-
шей обмен.
Схемы всех трех процедур показаны на рис. 11.5.
418
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
1-А(‘л>гА'Ья?п1,а1а'Е KL’b!R5bH
1. A|t А, rA, В, sgnData, E ксь [К lb])
(б) Двухшаголая аутентификация
Puc. U.S Процедуры строгой аутентификации Х.509
Одношаговая аутентификация
Одношаговая аутентификация предполагает передачу одного сообщения от
одного пользователя (А) другому (В), в котором устанавливается следующее.
1. Аутентичность А и то, что сообщение было создано А.
2. Что сообщение предназначалось для В.
3. Целостность и оригинальность сообщения (что оно не посылается второй раз).
Заметим, что данная процедура устанавливает только аутентичность источни-
ка, а не аутентичность получателя.
Как минимум, сообщение должно включать метку даты-времени tA, оказию
г4 и идентификатор В и должно быть подписано с использованием открытого
слюча А. Метка даты-времени складывается из необязательно указываемого
фемеяи выдачи и времени окончания срока действия, Это устраняет возмож-
1.2. СЛУЖБА АУТЕНТИФИКАЦИИ Х.509
419
ность задержки доставки сообщения. Оказию можно использовать для того, что-
бы обнаружить атаку воспроизведения Значение для оказии должни быть уни
кальным на протяжении всего срока действия сообщения Так, В может сохра-
нять значения оказии до истечения срока их действия и отвергать любые новые
сообщения с повторяющимися значениями оказии.
При простой аутентификации сообщение служит для того, чтобы представить
удостоверения стороне В. Но сообщение может включать еще и сопровождаю-
щую информацию. Эта информация (sgnData) содержится в области действия
подписи, что гарантирует ее достоверность и целостность. Такое сообщение мож-
но также использовать для того, чтобы сопровождать сеансовый ключ для В,
шифрованный открытым ключом В.
Двухшаговая аутентификация
Помимо трех указанных выше элементов аутентификации, двухшаговая ау-
тентификация устанавливает дополнительно следующие факты.
1. Аутентичность В и то, что ответное сообщение было создано В
2. Что сообщение предназначалось для А.
3. Целостность и оригинальность ответа.
Двухшаговая аутентификация, таким образом, позволяет обеим взаимодейст-
вующим сторонам проверить аутентичность друг друга.
Ответное сообщение включает оказию А, подтверждающую ответ. Оно также
включает метку даты-времени и оказию, сгенерированные В. Как уже отмеча-
лось выше, сообщение может включать подписанную дополнительную информа-
цию и сеансовый ключ, шифруемые открытым ключом А.
Трехшагопдя аутентификация
При трехшаговой аутентификации требуется пересылка еще одного сообще-
ния от А к В, которое должно содержать подписанную копию оказии rt. Такая
форма сообщения выбирается потому, что проверять метку даты-времени необ-
ходимости нет: обе оказии возвращаются назад другой стороной, а поэтому каж-
дая из сторон имеет возможность обнаружить по значению-возвращаемой оказии
признаки атаки воспроизведения. Такой подход требуется тогда, когда синхро
низация часов невозможна.
Версия 3 стандарта Х.509
Формат Х.509 версии 2, как показала практика разработки и реализации
стандарта последних лет, не дает исчерпывающих рекомендаций во всех необхо-
димых случаях. В IFORD95] представлен следующий список требований, не
удовлетворяемых версией 2.
1. Формат поля субъекта не вполне годится для того, чтобы аутентифициро-
вать владельца ключа для пользователя открытого ключа. Имена Х.509
могут относительно быть короткими и не содержащими некоторых деталей
идентификации, которые, >чевпдно, могут понадобиться пользователю-
420
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
2 Формат поля субъекта также не вполне годится для многих приложений,
которые обычно распознают объекты по адресу электронной почты, URL
или некоторому другому связанному с Internet идентификатору.
3. Существует необходимость указать информацию о политике защиты. Это
позволит приложению защиты или функции защиты, например IPSec,
привязать сертификат Х.509 к применяемой политике.
4. Имеется необходимость ограничить ущерб, который может быть нанесен из-
за ошибочных или злонамеренных действий центра сертификации, путем
установки ограничений на область применимости конкретного сертификата,
5. Важно иметь возможность распознавать разные ключи, применяемые од-
ним и тем же владельцем в разное время. Эта возможность предполагает
управление жизненным циклом ключей и, в частности, возможность из-
менять пары ключей для пользователей и центров сертификации на регу-
лярной основе или при особых обстоятельствах.
Разработчики стандарта посчитали, что в данном случае требуется не простое
добавление полей к имеющемуся формату, а более гибкий подход Так, формат
версии 3 включает ряд необязательных расширений, которые могут быть добавле-
ны к формату версии 2. Каждое расширение состоит из идентификатора расшире-
ния, индикатора критичности и значения расширения. Индикатор критичности
показывает, может ли расширение быть безопасно игнорировано. Если этот инди-
катор имеет значение TRUE и реализация формата не распознает расширение,
данная реализация должна считать такой сертификат недействительным.
Расширения сертификата можно разделить на три главные кате!-ории: ин-
формация о ключах и политиках, атрибуты субъекта и органа сертификации, а
также ограничения маршрута сертификации.
Информация о ключах и политиках
Эти расширения содержат дополнительную информацию о ключах субъекта и
эргана сертификации, а также индикаторы политики сертификации. Политика
сертификации представляет собой именованное множество правил, определяю-
цих применимость сертификата в конкретных средах и/или классах приложе-
1ий с обшими требованиями зашиты. Например, политика может быть предна-
шачена для аутентификации электронного обмена данными (EDI — Electronic
Data Interchange) при торговле с заданным диапазоном цен товаров.
Эта область включает следующее.
Идентификатор ключа уполномоченного органа. Идентифицирует откры-
тый ключ, используемый для проверки подписи на данном сертификате
или списке отозванных сертификатов. Позволяет различать разные ключи
одного центра сертификации. Это поле используется при обновлении пары
ключей центра сертификации.
• Идентификатор ключа субъекта. Идентифицирует открытый ключ, тре
бующий сертификации, что полезно при обновлении пар ключей субъекта,
Субъект может иметь несколько пар ключей и, соответственно, несколько
разных сертификатов для различных целей (например, для цифровых
подписей и шифрования).
J.2. СЛУЖБА АУТЕНТИФИКАЦИИ Х.509
421
(
* Использование ключей. Указывает ограничения и политики, при которых
может использоваться данный сертифицированный открытый ключ. Мо-
жет быть указано следующее: цифровая подпись, невозможиость отказа от
авторства, шифрование ключей, шифрование данных, соглашения о клю-
чах, верификация подписи центра сертификации в сертификатах, верифи
кация подписи центра сертификации в списках отозванных сертификатов.
• Срок использования личного ключа. Указывает срок, в течение которого
должен использоваться личный ключ, соответствующей данному открыто-
му ключу. Обычно для личного ключа срок его действия отличается от
срока действия открытого ключа. Например, для ключей цифровых под-
писей время применения личного ключа для подписи обычно меньше вре-
мени действия открытого ключа для проверки подписи.
• Политики сертификации. Сертификаты могут использоваться в средах, где
имеется возможность применения различных политик сертификации.
Данное расширение предлагает список политик, распознаваемых сертифи-
катом, а также дополнительную уточняющую информацию.
Отображения политик. Используется только в сертификатах центров сер-
тификации, выданных другим центрам сертификации. Отображение поли-
тик позволяет центру сертификации выяснить, что одна или несколько
таких политик счит аются эквивалентными другой политике, используемой
в домене центра сертификации, являющемся субъектом сертификации.
Субъект сертификации и атрибуты центра сертификации
Эти расширения поддерживают альтернативные имена в альтернативных
форматах для указания субъекта сертификации и центра выдачи сертификатов и
могут содержать дополнительную информацию о субъекте сертификации, обес-
печивая большую уверенность пользователя сертификата в том, что субъект сер-
тификации является указанным лицом или объектом. Например, речь может
идти о почтовом адресе, занимаемой должности в корпорации или фотографиче-
ском изображении.
Поля расширения в этой области включают следующее.
Альтернативное имя субъекта. Содержит одно или несколько альтерна-
тивных имен в любой из множества допустимых форм. Это поле оказыва-
ется важным для некоторых приложений, например электронной почты,
электронного юмена данными и LPSec, которые могут поддерживать свои
собственные форматы имен.
Альтернативное имя центра сертификации. Содержит одно или несколько
альтернативных имен в любой из множества допустимых форм.
Атрибуты каталога субъекта. Содержит значения любых требуемых атри-
бутов каталога Х.500 для субъекта данного сертификата.
Ограничения маршрута сертификации
Эти расширения позволяют указать в сертификатах, выдаваемых центрами
сертификации другим центрам сертификации, целый ряд спецификаций. Можно
указать „граничения на типы сертификатов, которые могут выдаваться центру-
субъекту, или на то, что допускается дальше в цепочке сертификатов.
422
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Поля расширения в этой области включают следующее.
Основные ограничения Указывают, может ли субъект выступать в каче-
стве центра сертификации. Если да, то могут быть заданы ограничения на
длину маршрута сертификации.
Ограничения имен. Указывают пространство имен, в рамках которого
должны быть все имена субъектоь в последующих сертификатах маршрута
сертификации
Ограничения политик. Задают ограничения, которые может требовать яв-
но указанная политика идентификации сертификатов или блокировать
отображение политик для оставшейся части маршрута сертификации.
1.3. РекомендуеЖИ^ЙтЯ
информации
Проще всего получить представление о принципах Kerboros из [BRAY88]
тним из лучших описаний Kerberos является также [KOHL94J.
RYA88 Bryant W Designing an Authentication System' A Dialogue in Four Scenes. Proj-
ct Athena document February 1988 Доступно no адресу htto://web.mit.edu/kerberos/
ww/dialogue htmi
OHL94 Kohl, J., Nemnan. В Tso. T. “The Evolution of the Kerberos Authentication Serv-
Cm Brazier, F„ Johansen, D Distnbuted Open Systems Los Alamitos, CA IEEE Coin-
uter Society Press, 1994 Доступно по адресу http//web.mit.edu/kerberos/
ww/papers html
Вниманию читателей предлагаются также следующие узлы Web.
Узел Kerberos Массачусетсского технологического института (МГГ). Ин-
формация о Kerberos, включая FAQ, статьи и документы, ссылки на узлы
соответствующих коммерческих версий продукта.
Страница Kerberos USC/ISI. Другой хороший источник материалов о
Kerberos.
Рабочая группа по разработке инфраструктуры открытых ключей. Осно-
ванные на X.5u9v3 стандарты группы разработки стандартов IETF
(Проблемная группа проектирования Internet).
Verisign. Ведущий коммерческий поставщик продуктов Х.09, узел которо-
го предлагает Белую книгу и другие ценные материалы.
1.4.Задачи
1. Докажите, что в режиме РСВС (см. рис. 11.7) случайная ошибка в одном
блоке шифрованного текста распространится на все последующие блоки
открытого текста.
2. Предположим, что в режиме РСВС блоки С, и С,., поменялись местами а
пути передачи сообщения. Покажите, что это повлияет только на дешиф-
рованные блоки Р, и Р,.,, но не на последующие блоки.
3. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ 423
3. Оригинальная процедура трехшаговой аутентификации Х.509, показанная
на рис. 11.5(b), имеет недостаток с точки зрения защиты. Сущность про-
токола заключается в следующем. o;q,, -A;' t < иЦ"',
А В ' А(ьд, гл. В},
В -> А : B{tB, г„ А, гд),
А —» В - А{г,|.
В документе Х.509 говорится и том, что контрольные метки даты-времени
tA и t8 для процедуры грехшаговой аутентификации необязательны. Но
рассмотрим следующий пример. Предположим, что А и В уже использовали
указанный выше протокол в каком-то предыдущем случае и противник С
перехватал три соответствующих сообщения. Предположим также, что мет-
ки даты-времени не использовались и были установлены равными 0. Нако-
нец, допустим, что С намерен вступить в контакт с В, выступая от имени А,
Тогда С сначала посылает В первое из перехваченных сообщений.
С —» В : А{0, гд, В).
Пользователь В, считая, что отправителем сообщения является А, отвечает
ня самом деле С:
В —»С : В{0, г', А, гд}.
Тем временем С каким-то образом заставляет А начать процесс аутентифи-
кации. В результате А посылает С сообщение вида
А->С; А{0, гд,В}.
Противник С отвечает А, используя оказию, полученную им от В:
С —»А: С{0, ц, A, г!) .
Сторона А отвечает
А ->С: А(г8).
Это в точности то, что требуется С для того, чтобы убедить В, что послед-
ний говорит с А, так что теперь С остается только воспроизвести посту
пившее сообщение для В.
С —> В : А(г,}.
Таким образом, В будет считать, что он говорит с А, тогда как на самом
деле он будет говорить с С. Предложите простое решение этой проблемы,
не предполагающее использование меток даты-времени.
4. Версия Х.509 от 1988 года предлагает список свойств, удовлетворение ко-
торых должно гарантировать защищенность ключей RSA с учетом извест-
ной сложности задачи разложения больших чисел на множители. Соответ-
ствующее рассмотрение заканчивается ограничениями на открытые значе-
ния показателя и модуля сравнения п.
Должно выполняться неравенство е > log„(n), чтобы не допустить
возможности раскрыть незашифрованный текст сообщения с помо-
щью вычисления корня порядка е пи модулю л.
424
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Caw ограничение является корректным, но вот аргумент, выдвигаемый в
качестве обоснования ограничения, некорректен. В чем заключается не-
корректность предложенного обоснования и какова истинная причина вво-
да такого ограничения?
дополнение 11 А. Методы шифрования
Kerberos включает библиотеку методов шифрования, осуществляющую под
ржку различных связанных с шифрованием операций.
реобразование паролей в ключи
В системе Kerberos для паролей должны использоваться только символы, ко-
рые можно представить в 7-битовом формате ASCII. Такой пароль, произволь-
,й длины конвертируется в ключ шифрования, сохраняемый в базе данных
“rberos. Схема соответствующей процедуры показана на рис. 11.6
Сначала строка символов (s) переводится в такую строку битов (Ь), что пер
ай символ сохраняется в первых 7 битах, второй — вч вторых 7 бигах и т.д
•о можно представить в следующем виде.
Ь[0] = бит 0 символа sfO],
b[6] = бит 6 символа s[0],
b[7] = бит 0 символа s[l],
b[7i + m] = бит т символа s|iJ, 0 < т й 6 .
Затем эта строка битов сжимается, как гармошка, в строку из 56 битов с
вменением операции побитового ИЛИ (XOR). Например, если битовая строка
«*ет длину 59, то
b[55] = Ь[55] © Ь[56],
b[54] = Ь|54] ® Ь[57],
Ь(53] = Ь[53] © Ь[58].
Таким образом создается 56-битовый ключ DES. Чтобы привести его в соот-
тствие с ожидаемым 64-битовым форматом ключа, полученная строка рас-
(атривается как последовательность из восьми 7-битовых блоков и отображает-
в восемь 8 битовых блоков, в результате чего формируется входной ключ Крт .
Наконец, оригинальный пароль шифруется в режиме СВС (режим сцепления
ифровапных блоков) DES с использованием ключа - Последний 64-битовый
ок, возвращаемый в результате этого процесса, называется контрольной сум-
>й СВС, и именно этот блок считается в данном случае выходным ключом, ас-
циированным с данным паролем.
Весь алгоритм может рассматриваться как хэш-функция, отображающая про-
вольный пароль в 64-битовый хэш-код.
ЖОЛНЕНИЕ ИА МЕТОДЫ ШИФРОВАНИЯ KERBEROS
425
Пароль из
7-битовых
симво лов ASCH
(п символов)
Свитый поток
битов
(7хп бит)
<----1 символ —р-
(а) Конвертирование пароля в поток битов
(б) Конвертирование потока битов во входной ключ
s(8]-s[15)
s[n -8)-s[n- 1]
выходной ключ
Кг
(в) Вы числение контрольной гуммы для пароля в режиме СВС DES
Рис. 11.6 Генерирование ключа шифрования из пароля
Режим распространения сцепления шифрованных блоков
Вспомните из главы 3, что в режиме СВС DES ввод алгоритма DES на каж-
дой стадии шифрования получается в результате связывания операцией XOR те-
кущего блока открытого текста и предыдущего блока шифрованного текста с ис-
пользованием одного и того же ключа шифрования для всех блоков (см
рис. 3.12). Преимуществом этого режима по сравнению с режимом ЕСВ (режим
электронной шифровальной книги) состоит в том, что здесь каждый блок откры-
того текста шифруется независимо, т.е. в режиме СВС один и тот же повторяю-
щийся блок открытого текста порождает разные блоки шифрованного текста.
Режим СВС характеризуется тем, что если ошибка происходит при передаче
блока шифрованного текста С,, эта ошибка распространяется на дешифрованные
блоки открытого текста Р, и Pitl.
426
ГЛАВА 11. ПРИЛОЖЕНИЯ АУТЕНТИФИКАЦИИ
Версия 4 Kerberos использует расширение режима СВС, называемое режимом
эаспространения СВС (режим РСВС) [MEYE82]. Этот режим характеризуется
"ем, что ошибка в «дном блоке шифрованного текста распространяется на все
тоследующие дешифрованные блоки сообщения, что превращает все зти блоки в
5есполезные. Таким образом, в одной операции решается задача шифрования
тайных и обеспечивается их целостность.
Схема режима РСВС показала на рис. 11.7. В этой схеме ввод алгоритма шифро-
1ания получается связыванием операцией XOR текущего блока открытого текста,
тредыдущего блока шифрованною текста и предьщущего блока открытого текста.
С„ = ЕК[СЛ_, © Рл_, Ф PJ.
Время 1 Время * 2
ис. 11.7. Режим распространения сцепления шифрованных блоков (режим РСВС)
При дешифровании каждый блок шифрованного текста обрабатывается ялго-
итмом дешифрования. Затем выход связывается операцией XOR с предыдущим
локом шифрованного текста и предыдущим блоком открытого текста. Можно
оказать, что эта схема работает следующим образом.
^к[Сл] = DK[EKlCn_! ® P„_j 5) P„JJ
= Сл ! © Р„-1 Ф Р„ ,
СЛЧ © Ф DK[Сл] = Р„ .
ОПОЛНЕПИЕ 11А. МЕТОДЫ ШИФРОВАНИЯ KERBEROS
427
ГЛАВА
12
Защита электрон-
ной почты
Несмотря на отказ вице-адмирала Пойндекстера ь подполковника
Норта дать показания, у комиссии быча возможность получить
доступ к другим источникам информации, во многом компенсиро
вавшим их отказ ФБР обеспечило документы, изелеченные uj фаи
лов Совета национальной безопасности и штатных сотрудников
совета, включая записи переговоров между вице-адмиралом Лойн
декстером и подполковником Нортом в системе PROF Сообщения
системы PROF представляют собой компьютерные диалоги, запи
санные во время переговоров и считавшиеся ведущими переговоры
сторонами защищенными от разглашения. В этом смысле записи
являются надежным и объективным источником, позволяющим
восстановить истинный ход событий того времени.
Из отчета комиссии Тауэра президенту Рейгану по делу
“Иран-коитраг", 1987 г.
Благословите того, кто сделал это,
И молитесь за его здоровье.
Он мог бы иметь ми ллион.
Продав сото систему ФБР,
Ни он слишком любил свободу.
Он открыл ее всем бесплатно —
И теперь у всех есть PGP.
(Bless the man who made it.
And pray that he ain’t dead.
He could’ve made a million
If he'd sold it to the feds.
But he was hot for freedom;
He gave it out for free.
How every common citizen s
got PGP )
Из песни ‘‘P.G.P.” Лесли Фиша (Leslie Fish)
рактически в любой распределенной среде электрон-
ная почта является наиболее часто используемым
сетевым приложением. Она также представляет
единственное распределенное приложение, которое широко
применяется на всех платформах любой архитектуры. Поль-
зователи надеются иметь и действительно имеют возмож-
ность посылать почту другим пользователям, с которыми они общаются непосред-
ственно или через Internet, с любой операционной системой на их главном компь-
ютере и с любым пакетом коммуникационных программ.
С ростом зависимости от электронной почты все большего числа самых раз-
ных областей деятельности человека, возрастают требования и к средствам ау-
тентификации и обеспечения конфиденциальности. Хотелось бы обратить ваше
внимание на две схемы, которые, скорее всего, в ближайшие несколько лет бу-
дут удовлетворять требованиям большинства пользователей: эго Pretty Good Pri-
vacy (PGP) и S/MIME. Обе схемы рассматриваются в следующих разделах.
pgp
Система PGP (Pretty Good Privacy — вполне надежная секретность) представ-
ляет собой весьма замечательное явление. В значительной степени являясь пло-
дом усилий одного челопека, Фила Циммермана (Phil Zimmermann), PGP обес
печивает конфиденциальность и сервис аутентификации, которые можно ис-
пользовать для электронной почты и приложений хранения файлов. По
существу, Циммерман сделал следующее.
1. Выбрал в качестве строительных блоков лучшие из доступных криптогра-
фических алгоритмов
2, Интегрировал эти алгоритмы в одном универсальном приложении, постро-
енном на использовании небольшого числа простых команд и независимом
от процессора и операционной системы
3. Сделал соответствующий пакет, включающий документацию и исходный
текст программы, свободно доступным через Internet, электронные доски
объявлений и коммерческие сети типа CompuServe.
4. Заключил соглашение с некоторой компанией (бывшей Viacrypt, теперь
Nelwoik Associates) о разработке и поддержке недорогой коммерческой
версии PGP, полностью совместимой с бесплатной.
Система PGP быстро получила признание и теперь используется очень широ-
ко. Среди причин такого быстрого признания системы PGP можно назвать сле-
дующие.
1. Она широко доступна в версиях, выполняемых на множестве платформ,
включая DOS'Windows, UNIX, Macintosh и многие другие. Кроме того,
имеется коммерческая версия, призванная удовлетворить пользователей,
предпочитающих иметь поддержку производителя.
2. Система PGP основана на алгоритмах, которые выдержали проверку прак-
тикой и считаются исключительно надежными. В частности, в пакет
включены алгоритмы шифрования с открытым ключом RSA, DSS и алго-
ритм Диффи-Хеллмана, алгоритмы традиционного шифрования CAST-128,
IDEA и 3DES, а также алгоритм хэширования SHA-1.
3. Система PGP имеет очень широкую область применения — от корпораций,
которые хотят иметь стандартизованную схему шифрования файлов и со-
общений, до простых пользователей, которые нуждаются в защите своей
переписки с другими пользователями в Internet или какой то другой сети.
12.1. PGP
429
4. Система PGP не была разработана правительственной или некоторой дру-
гой официальной организацией, и поэтому неподконтрольна им. Поэтому
PGP имеет дополнительную привлекательность для людей с инстинктив-
ным недоверием к •‘аппарату”.
Сначала мы рассмотрим общие принципы работы PGP. затем выясним, как
создаются и хранятся криптографические ключи и наконец обсудим жизненно
важный вопрос управления открытыми ключами.
Обозначения
Большинство обозначений, используемых в этой главе, встречались вам
раньше, но некоторые обозначения являются новыми. Привести список обозна-
чений лучше в самом начале рассмотрения.
К, — сеансовый ключ, используемый в схеме традиционного шифрования,
KR, — личный ключ А, используемый в схеме шифрования с открытым
ключом,
KU, — открытый ключ А, используемый в схеме шифрования с открытым
ключом,
ЕР — шифрование в схеме с открытым ключом,
DP — дешифрование в схеме с открытым ключом,
ЕС — шифрование в схеме традиционного шифрования,
DC — дешифрование в схеме традиционного шифрования,
Н — функция хэширования,
|| — конкатенация,
Z — сжатие с помощью алгоритма ZIP.
R64 — преобразование в формат radix-64 ASCII.
В документации PGP часто используется термин секретный ключ, означаю-
щий ключ, составляющий пару с открытым ключом в схеме шифрования с от-
крытым ключом. В связи с этим существует возможность перепутать такой ключ
с секретным ключом, используемым для традиционного шифрования. Поэтому
мы используем вместо этого термин личный ключ.
Описание работы системы
Сервис PGP, если не рассматривать управление ключами, складывается из
пяти функций: аутентификации, конфиденциальности, сжатия, совместимости
на уровне электронной почты и сегментации (табл. 12.1). Мы рассмотрим каж-
дую из них по очереди.
Аутентификация
На рис. 12.1(a) показана схема сервиса цифровой подписи, предлагаемая
PGP. Эта схема соответствует схеме цифровой подписи, рассмотренной в гла-
ве 10 и показанной на рис. 8.5(b) в главе 8. При этом выполняется следующая
последовательность действий.
1. Отправитель создает сообщение.
2. Используется алгоритм SHA-1, в результате чего получается 160-битовый
хэш-код сообщения.
430
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Таблица 12.1. Краткая характеристика функций PGP
Функция Используемые алгоритмы Описание
Цифровая подпись DSS/SHA или RSA/SHA С помощью SHA-1 создается хэш-код сооб щения. Полученный таким образом профиль сообщения шифруется с помощью DSS или RSA с использованием личного ключа отпра- вителя и включается в сообщение
Шифрование сообщения CAST "ибо IDEA, либо "тройной” DES с 1 ремя клю- чами и алгоритмом Диффи-Хелл мана или RSA Сообщение шифруется с помощью CAST-128 или IDEA, или 3DES с одноразовым сеансо- вым ключом, генерируемым отправителем. Сеансовый ключ шифруется с помощью ал- горитма Диффи-Хеллмана или RSA с исполь- зованием открытого ключа получателя и включается в сообщение
Сжатие ZIP Сообщение можво сжать для хранения или передачи, используя ZIP
Совместимость на уровне электрон- ной почты Преобразование в формат radix-64 Чтобы обеспечить прозрачность для всех при- ложений электронной почты, шифрованное со- общение можно превратить в строку ASCII, используя преобразование в формат radix-64
Сегментация — Чтобы удовлетворить ограничениям макси- мального размерь сообщений, PGP выполняет сегментацию и обратную сборку сообщения
3 Полученный хэш-код шифруется с помощью алгоритма RSA с использова-
нием личного ключа отправителя, и результат добавляется в начало сооб-
щения
4 Получатель использует RSA с открытым ключом отправителя, чтобы де-
шифровать и восстановить хэш-кид.
5. Получатель генерирует новый хэш код полученного сообщения и сравни-
вает его с дешифрованным хэш-кодом Если хэш-коды совпадают, сообще-
ние считается подлинным.
Комбинация SIIA-1 и RSA обеспечивает эффективную схему цифровой подписи.
Ввиду надежности RSA получатель уверен в том, что только владелец соответст-
вующего секретного ключа мог создать эту подпись. Надежность SHA-1 дает получа-
телю уверенность в том, что никто другой не мог создать другое сообщение с соответ-
ствующим хэш-кодом и, следовательно, с подписью из оригинального сообщения.
Подписи могут также генерироваться с помощью DSS/SHA-1.
Хотя подписи обычно присоединяются к сообщениям или файлам, для кото-
рых они создаются, дело не всегда обстоит так: поддерживаются и отделенные
подписи. Отделенная подпись может храниться и передаваться отдельно от само-
го сообщения. Это оказывается полезным в целом ряде случаев. Пользователь
может иметь отдельный протокол подписей всех посылаемых и получаемых им
12.1. PGP
431
Рис. 12 I Криптографические функции PGP
сообщений. Отделенная подпись выполняемой программы может впоследствии
помочь обнаружить заражение программы вирусом. Наконец такие подписи мо-
гут использоваться тогда, когда подписывать документ допжна не одна, а более
сторон, как, например, в случае контракта. Подпись каждой из сторон оказыва-
ется тогда независимой и, таким образом, применимой только к данному доку-
менту. Иначе подписи должны быть вложенными, так что вторая сторона подпи-
сывала бы документ вместе с подписью первой стороны и т.д.
Конфиденциальность
Другим основным сервисом, предлагаемым PGP, является конфиденциаль-
ность, обеспечиваемая шифрованием сообщений, предназначенных для передачи
или хранения в виде файлов. В обоих случаях можно использовать традицион-
ное шифрование с помощью алгоритма CAST-128. Альтернативой является при-
менение алгоритмов IDEA или 3DES. Может использоваться и режим обратной
связи шифрованных 64-битовых блоков (режим CFB).
Как всегда, необходимо решать проблему распределения ключей. В PGP каж-
дый ключ схемы традиционного шифрования применяется только один раз. Это
значит, что для каждого сообщения генерируется новый ключ в виде случайного
128-битового числа. Таким ->бразом, хотя в документации такой ключ называет-
ся сеансовым, на самом деле он является одноразовым. Ввиду того, что ключ за-
действуется только один раз, такой сеансовый ключ присоединяется к сообще-
432
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
нию и передается вместе с сообщением Чтобы защитить ключ, он шифруется с
использованием открытого ключа получателя. На рис. 12.16 показана соответст-
вующая схема, которая может быть описана следующим образом.
1. Отправитель генерирует сообщение и случайное 128-битовое число, кото-
рое выступает в качестве сеансового ключа только для этого сообщения.
2. Сообщение шифруется с помощью алгоритма CAST-128 (или IDEA, или
3DES) и данного сеансового ключа.
3. Сеансовый ключ шифруется с помощью алгоритма RSA и открытого клю-
ча получателя и присоединяется к началу сообщения.
4. Получатель использует RSA с личным ключом, чтобы дешифровать и тем
самым восстановить сеансовый ключ.
5. Сеансовый ключ применяется для дешифрования сообщения.
Чтобы обеспечить альтернативу использованию RSA для шифрования ключа,
в PGP предлагается параметр Diffie-Hellman (алгоритм Диффи-Хеллмана). Как
уже отмечалось в главе 6, алгоритм Диффи-Хеллмана является алгоритмом об-
мена ключами. На самом деле в РСР используется вариант этого алгоритма с
возможностями шифрования/дешифрования, известный как алгоритм Эль-
Гамаля (ElGamal) (см. главу 6, задача 6,19).
В связи с этим можно сделать несколько замечаний. Во-первых, чтобы
уменьшить время шифрования, преимущество отдается использованию комбина-
ции традиционного шифрования и шифрования с открытым ключом, а не про-
стому использованию RSA или алгоритма Эль-Гамаля, когда сообщение шифру-
ется непосредственно CAST-128 и другие алгоритмы традиционной схемы шиф-
рования значительно быстрее, чем RSA или алгоритм Эль Гамаля. Во вторых,
использование алгоритмов схемы шифрования с открытым ключом решает про-
блему распределения сеансовых ключей, так как только для получателя оказы-
вается возможным восстановить сеансовый ключ, присоединенный к сообщению.
Обратите внимание на то, что в таком случае не требуется использовать прото-
кол обмена сеансовыми ключами типа описанного в главе 6, поскольку здесь не
требуется начинать сеанс обмена данными. В этой ситуации, скорее, каждое со-
общение является одиночным независимым событием со своим собственным
ключом. К тому же вследствие самой природы электронной почты, являющейся
системой с промежуточным хранением данных, использование процедуры под-
тверждения связи для того, чтобы убедиться в идентичности сеансового ключа
обеих сторон, не является практически удобным решением. Наконец, использо-
вание одноразовых ключей в традиционной схеме шифрования еще более усили-
вает и без того достаточно надежный алгоритм традиционного шифрования.
Только небольшой объем открытого текста шифруется с использованием одного
ключа, и между ключами нет никакой связи. Таким образом, вся схема оказы-
вается защищенной в гой мере, в какой защищен алгоритм схемы шифрования с
открытым ключом. Поэтому PGP предлагает пользователю выбор для длины
ключа от 76? до 3072 битов (длина ключа DSS для подписей ограничивается ве-
личиной в 1024 бита).
12 1- PGP
433
Конфиденциальность и аутентификация
Как показано на рис. 12.1(b). для одного сообщения можно использовать обе
службы. Сначала для сообщения в виде открытого текста генерируется подпись,
которая добавляется в начало сообщения. Затем открытый текст сообщения и
подпись шифруются с помошью алгоритма CAST-128 (или IDEA, или 3DES), а
сеансовый ключ шифруется с помощью RSA (или алгоритма Эль-Гамаля). Такая
схема предпочтительнее обратной, т.е. схеме, когда сначала шифруется сообще-
ние, а затем генерируется подпись для шифрованного сообщения. В общем слу-
чае оказывается более удобным хранить подпись с открытым текстом сообще-
ния. К тому же с точки зрения возможностей трехсторонней верификации, если
сначала генерируется подпись, третьей стороне не нужно заботиться о ключе
традиционною шифрования, чтобы проверить подпись.
Короче говоря, при использовании обеих служб отправитель сначала подпи-
сывает сообщение с помощью собственного личного ключа, потом шифрует со-
общение с помощью сеансового ключа и наконец шифрует сеансовый ключ с по-
мощью открытого ключа получателя.
Сжатие
По умолчанию PGP сжимает сообщение после создания подписи, но перед
шифрованием. Это имеет смысл с точки зрения уменьшения объема данных, как
при передаче электронной почты, так и при хранении в виде файлов.
Одень важным оказывается выбор места применения алгоритма сжатия, обо-
значенного на рис. 12.1 как Z при ежа гаи и как 2 ’ при распаковке данных.
1. Подпись генерируется до сжатия по следующим причинам.
• Предпочтительнее подписывать несжатое сообщение, чтобы в будущем
иметь возможность хранить сообщение в несжатом виде вместе с подпи-
сью. Если подписать сжатый документ, то для верификации необходи-
мо будет либо хранить сжатую версию сообщения, либо сжимать сооб-
щение всякий раз, когда требуется верификация.
• Даже при наличии возможности динамически повторно сжимать сооб-
щение для верификации такой подход несет в себе дополнительные
трудности из-за самого алгоритма сжатия PGP: алгоритм не является
детерминированным и различные реализации алгоритма выбирают раз
ные варианты выполнения для оптимизации соотношения скорости вы-
полнения и сжатия, а в результате получаются сжатые файды разной
формы Такие разные алгоритмы сжатия являются переносимыми из-за
того, что любая версия алгоритма может правильно восстановить дан-
ные, полученные с помощью любой другой версии. Применение функ-
ции хэширования и создания подписи после сжатия заставило бы во
всех реализациях PGP применять один и тот же алгоритм сжатия.
2. Шифрование сообщения применяется после сжатия для того, чтобы уси-
лить криптографическую защиту сообщения. Ввиду того что сжатое сооб-
щение имеет меньшую избыточность по сравнению с оригинальным от-
крытым текстом, криптоанализ оказывается более трудным делом.
В качестве алгоритма сжатия применяется ZIP, который описывается в до-
полнении 12 А.
434
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Совместимость на уровне электронной почты
При использовании PGP шифруется по крайней мере часть передаваемого
блока. Если требуется только цифровая подпись, то шифруется профиль сообще-
ния (с использованием личного ключа отправителя). Если имеет место сервис
конфиденциальности, шифруется (с использованием одноразового симметричного
ключа) сообщение плюс подпись (при наличии последней). Таким образом, часть
или весь выходной блок сообщения представляет собой поток произвольных 8-
битовых байтов. Однако многие системы электронной почты позволяют исполь-
зовать только блоки, состоящие из символов текста ASCII. Чтобы удовлетворить
такому ограничению, PGP обеспечивает сервис конвертирования сырого 8-
битового двоичного потока в поток печатаемых символов ASCII.
Для этого используется схема конвертирования radix-64 Каждая группа из
грех байтов двоичных данных преобразуется в четыре символа ASCII, к которым
присоединяется контрольная сумма (CRC), позволяющая обнаружить ошибки
при передаче данных. Подробности — в дополнении 12Б.
Конвертирование в формат radix-64 увеличивает длину передаваемого сооб-
щения на 33%. К счастью, сеансовый ключ и порция подписи сообщения отно-
сительно компактны, а открытый текст сообщения сжимается. Фактически сжа-
тие с избытком компенсирует расширение, получаемое вследствие перевода в
формат radix-64. Например, в [HELD96] сообщается о среднем коэффициенте
сжатия для ZIP около 2,0. Если игнорировать относительно небольшую подпись
и компоненты ключа, типичное полное влияние сжатия и расширение для файла
длины. X должно быть приблизительно равно 1,33 х 0,в х X = 0,665 х X. Таким
образом, имеет место общее сжатие примерно на одну треть.
Заслуживающим упоминания аспектом алгоритма radix-64 является то, что
он слепо конвертирует входной поток в формат radix-64, невзирая на содержи-
мое, даже если ввод оказывается текстом ASCII. Таким образом, если сообщение
подписано, но не шифруется и конвертирование применяется ко всему блоку, то
выходной поток данных будет непонятен случайному наблюдателю, что уже
обеспечивает определенный уровень конфиденциальности. PGP можно сконфи-
гурировать так, чтобы конвертирование в формат radix-64 выполнялось только
для порции подписи открытого сообщения. Это дает получателю возможность
прочитать сообщение без использования PGP. Но PGP все же придется использо-
вать. если необходимо проверить подпись.
На рис. 12.2 показана связь между четырьмя описанными выше службами.
При передаче, если это требуется, подпись генерируется с помощью хэш-кода
открытого текста. Затем открытый текст и подпись, если последняя имеется,
сжимаются. Далее, если требуется конфиденциальность, блок (сжатый открытый
текст или сжатые подпись и открытый текст) шифруется и в начало добавляется
шифрованный открытым ключом ключ шифрования традиционной схемы. На-
конец весь полученный блок конвертируется в формат radix 64.
На стороне получателя поступающий блок сначала конвертируется обратно из
формата radix-64 в двоичный. Затем, если сообщение зашифровано, получатель
восстанавливает сеансовый ключ и дешифрует сообщение. Полученный в резуль-
тате блок разжимается. Если сообщение подписано, получатель восстанавливает
полученный хэш-код и сравнивает его с хэш кодом, вычисленным им самим.
12.1. PGP
435
(а) Общая схема отправки (на стороне А)
(б) Общая схема получения (на стороне В)
Рис. 12.2. Отправка и прием сообщений PGP
Сегментация и обратная сборка сообщения
Средства электронной почты часто ограничивают максимально допустимую
длину сообщения. Например, многие средства электронной почты, доступные че-
рез Internet, допускают пересылку сообщений длиной не более 50000 байтов.
Любое более длинное сообщение должно быть разбито на сегменты меныпей
длины, каждый из которых посылается отдельно.
Чтобы соответствовать такому ограничению, PGP автоматически разбивает
слишком длинные сообщения на сегменты, достаточно малые для того, чтобы их
можно было переслать с помощью электронной почты. Сегментация проводится
после выполнения всех других операций, включая преобразование в формат ra-
dix-64 В результате компоненты ключа и подписи появляются только один раз,
в начале первою сегмента. На стороне получателя система PGP должна отбро-
сить заголовок электронной почты и вновь собрать весь оригинальный блок со-
общения перед выполнением шагов, показанных на рис. 12.2(6).
Криптографические ключи и связки ключей
PGP использует четыре типа ключей: одноразовые сеансовые ключи схемы
традиционного шифрования, открытые ключи, личные ключи и парольные клю-
чи схемы традиционного шифрования, описанные ниже. В отношении этих клю-
чей можно сформулировать следующие три требования.
1. Наличие средств генерирования непредсказуемых сеансовых ключей.
436
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
2. Желательно, чтобы пользователь мог иметь несколько пар откры-
тых/личных ключей. Одной из причин такого требования является го, что
пользователь может время от времени менять пару ключей. В результате
все сообщения в пути следования окажутся созданными со старым клю-
чом. К тому же получатели будут знать только старый открытый ключ до
гех пор, пока ими не будет получена новая версия ключа. В дополнение к
необходимости время от времени менять ключи пользователь может иметь
несколько пар ключей одновременно, чтобы взаимодействовать с различ
ными группами получателей или просто для того, чтобы усилить защиту,
ограничивая объем материала, шифруемого одним и тем же ключом. Б ре-
зультате однозначного счответствия между пользователями и их открыты-
ми ключами нет. Таким образом, возникает необходимость в средствах,
позволяющих идентифицировать конкретные ключи.
3. Каждый объект системы PGP должен поддерживать файл собственных пар
открытых/личных ключей, а также открытых ключей корреспондентов.
Рассмотрим эти требования по порядку.
«ерирование сеансовых ключей
Каждый сеансовый ключ связывается с одним сообщением и используется
£ько для шифрования и дешифрования этого сообщения. Вспомните, что
фрование/дешифрование сообщения выполняется с помощью алгоритма сим-
гричной схемы шифрования. При этом алгоритмы CAST-128 и IDEA исполь-
ет 128-битовые ключи, a 3DES — 168-битовый ключ. В дальнейшем обсужде-
и мы предполагаем использование CAST-128.
Случайные 128-битовые числа генерируются с помощью самого алгоритма
ST-128. Ввод для генератора случайных чисел складывается из 128-битового
юча и двух 64-битовых блоков, которые рассматриваются как открытый
сст, подлежащий шифрованию. Используя режим шифрованной образной свя-
шифровальщик CAST-128 порождает два 64-битовых блока шифрованного
сста, которые связываются конкатенацией, в результате чего формируется
В-битовый сеансовый ключ. Алгоритм, который при этом используется, осно-
1 на алгоритме, описанном в документе ANSI Х12.17.
“Открытый текст” для генератора случайных чисел, формируемый из двух
•битовых блоков, извлекается из ранцомизованного потока 128-битовых чисел,
и числа строятся на основе ввода с клавиатуры от пользователя. Для создания
щомизованного потока используются как время между нажатиями, так и ин-
рмация о фактически нажатых клавишах. Таким образом, если пользователь
жимает случайные клавиши в своем обычном темпе, будет порожден доста-
шо “случайный” поток для ввода. Этот случайный ввод объединяется с пре-
дущим сеансовым ключом, выданным алгоритмом CAST 128, чтобы сформи-
»ать данные для ввода генератору. В результате, ввиду хороших перемеши-
ощих свойств CAST-128, порождается последовательность сеансовых ключей,
горая оказывается практически непредсказуемой.
Детали схемы генерирования случайных чисел PGP обсуждаются в дополне
и 12В.
1. PGP
437
Идентификаторы ключей
Как уже говорилось выше, шифрованное сообщение сопровождается исполь-
зованным для шифрования сеансовым ключом в зашифрованном виде. Сеансо-
вый ключ шифруется с помощью открытого ключа получателя. Следовательно,
только получатель может расшифровать сеансовый ключ и, таким образом, про-
честь сообщение. Если бы каждый пользователь использовал одну пару открыто-
го и личного ключей, то получатель сразу бы знал, с помощью какого из ключей
можно дешифровать сеансовый ключ — это единственный личный ключ получа-
теля. Однако мы выдвинули требование, чтобы любой пользователь мог иметь
любое число пар открытых/личных ключей.
Как в этом случае получателю узнать, какой из открытых ключей использо-
вался для шифрования сеансового ключа? Простейшим решением является пе-
редача открытого ключа вместе с сообщением. Получатель мог бы тогда удосто-
вериться, что это действительно один из открытых ключей, а затем продолжить
обработку сообщения. Эта схема должна работать, но при этом пересылается
слишком много лишних данных. Открытый ключ RSA может иметь длину в
сотни десятичных разрядов. Другим решением является связывание с каждым
открытым ключом некоторого идентификатора, уникального по крайней мере
для одного пользователя. Для этой цели вполне подойдет, например, комбина
пия идентификатора пользователя и идентификатора ключа. Тогда придется пе-
ресылать только значительно более короткий идентификатор ключа. Такое ре-
шение, однако, порождает проблему управления и перегрузки: идентификаторы
ключей должны приписываться и храниться так, чтобы как отправитель, так и
получатель могли установить соответствие между идентификаторами ключей и
самими открытыми ключами. Это кажется нежелательным и несколько обреме-
нительным.
Решением, принятым в PGP, является присвоение каждому открытому клю-
чу такого идентификатора, который с очень высокой вероятностью должен ока
заться уникальным для данного пользователя.1 Идентификатор, связываемый с
каждым открытым ключом, размещается г младших 64 разрядах ключа. Это
значит, что идентификатор открытого ключа KU. равен (KU, mod2M). Этой
длины достаточно для того, чтобы вероятность дублирования идентификаторов
ключей оказалась очень мала.
Идентификатор ключа требуется и для цифровой подписи PGP. Из-за того что
отправитель может воспользоваться одним из нескольких личных ключей для
шифрования профиля сообщения, получатель должен знать, какой открытый
ключ ему следует использовать. Поэтому раздел цифровой подписи сообщения
включает 64-битовый идентификатор соответствующего открытого ключа. При
получении сообщения получатель проверяет, что идентификатор соответствует
известному ему открытому ключу отправителя, а затем продолжает проверку
подписи.
Вы уже знакомы с используемыми здесь понятиями теории вероятности из раздела 7.4, где
рассматривались вопросы выяснения простоты чисел. При разработке алгоритмов применение
вероятностных методов довольно часто приводит к уменьшению времени выполнения алгорит-
ма или упрощению решения
438
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Теперь, определив понятие идентификатора ключа, мы можем более при-
стально взглянуть на формат передаваемого сообщения, который показан на
рис. 12.3. Сообщение складывается из трех компонентов: собственно сообщения,
его подписи (необязательно) и компонента сеансового ключа (необязательно).
Компонент сообщения включает фактические данные, предназначенные для
хранения или передачи, а также имя файла и метку даты времени, указываю
щую время создания сообщения.
Компонент подписи включает следующие компоненты.
Метка даты-времени. Время создания подписи.
Профиль сообщения 160-битовый профиль сообщения, созданный с по-
мощью SHA-1 и шифрованный с использованием личного ключа подписи
отправителя. Профиль вычисляется для метки даты-времени подписи, свя-
занной конкатенацией с порцией данных компонента сообщения. Включе-
ние метки даты-времени подписи в профиль обеспечивает защиту от атак
Содержимое
Операция
Компонент
сеансового
ключа
Идентификатор открытого
ключа получателя (KLb)
Сеаиьоьый ключ (Ks) Т Ецрь
Метка даты времени
Подпись
Сообщение
Идентификатор .тгкрытгп
клича отправителя (KUaJ
Ведущие дьа октета
профиля сообщения
Профиль сообщения Т Egga
Имя файла
Мс пса даты-времени
Ькз
Данные
RM
Обозначения:
EKUb ~ шифрование с использованием личного ключа пользователя В
~~ шифрование с использованием открытого ключа пользователя А
ERs “ шифрование с использованием сеансового ключа
ZIP — функция сжатия Zip
R64 - функция преобразования в формат radix-64
Рис. 12.3. Общий формат сообщения PGP (от А к В)
12.1 PGP
439
воспроизведения сообщения. Исключение имени файла и метки даты-
времени компонента сообщения гарантирует, что отделенная подпись будет
в точности совпадать с подписью, добавляемой в префикс сообщения. От-
деленные подписи вычисляются для файла, в котором нет никаких полей
заголовка (хедера) сообщения
Ведущие два октета профиля сообщения. Чтобы обеспечить получателю
возможность определить, соответствующий ли открытый ключ использо-
вался для дешифрования профиля сообщения с целью аутентификации,
проводится сравнение этих первых двух октетов открытого текста исход-
ного профиля с первыми двумя октетами дешифрованного профиля. Эти
октеты также служат 16-битовой последовательностью, используемой для
проверки сообщения
• Идентификатор открытого ключа отправителя. Идентифицирует откры-
тый ключ, который должен служить для дешифрования профиля, сообще-
ния и, следовательно, идентифицирует личный ключ, использовавшийся
для шифрования профиля сообщения.
Компонент сообщения и необязательный компонент подписи могут быть сжаты
с помощью ZIP и могут быть зашифрованы с использованием сеансового ключа.
Компонент сеансового ключа включает сеансовый ключ и идентификатор от-
крытого ключа получателя, который использовался отправителем для шифрова
ния данного сеансового ключа.
Весь блок обычно переводится в формат radix-6 4.
Связки ключей"
Мы видели, что идентификаторы ключей в PGP очень важны и что два иден-
тификатора ключей включаются в любое сообщение PGP, предполагающее конфи-
денциальность и аутентификацию. Эти ключи необходимо хранить и организовать
некоторым стандартизованным образом для эффективного применения всеми уча-
ствующими в обмене данными сторонами. Схема, используемая в PGP, предпола-
гает создание в каждом узле пары структур данных: одну для храпения пар от-
крытых /секретных ключей данного узла, а другую — для хранения открытых
ключей других пользователей, известных данному узлу. Эти структуры данных
называются соответственно связкой личных ключей и связкой, открытых ключей.
Обшая структура связки личных ключей показана на рис. 12.4. Связку мож-
н з считать таблицей, в которой каждая строка представляет одну пару открыто-
го/чичнпго ключей, принадлежащих данному пользователю. Каждая строка со
держит следующие поля.
Метка даты-времени. Дата и время создания данной пары ключей.
Идентификатор ключа. Младшие 64 разряда открытого ключа данной строки
> Открытый ключ. Открытый ключ данной пары.
Личный ключ. Личный ключ данной пары; это поле шифруется.
Идентификатор пользователя. Обычно здесь размещается адрес электрон-
ной почты пользователя (например, stallingsCg'acm.org). Однако пользова-
тель может указать для каждой пары ключей разные имена (например,
Stallings, WStallings, WilliamStallings и т.п.) или использовать один иден-
тификатор Пользователя несколько раз.
440
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Кольцо личных ключей
Метка даты- времени Идентификат ор ключа* Открытый ключ Шифрованный личный ключ Идентификатор поль- зователя*
« • • • •
• • • Ии 1а л ет»
• • • » •
Т, KU, mod Z” ки, En(P.,[KR,J Пользователь t
• • • • •
• « • • •
• • • « •
Кольцо открытых ключей
Метка даты-времени Идентификатор ключа* Открытый ключ Доверие владельцу
• • •
• • • •
• • • •
Т. KU mod 2" ки, trustflag,
• • • •
• « « •
• • • •
Идентификатор пользователя* Законность ключа Подпись (подписи) Доверие подпис и (подписям)
• ♦ • _ •
• • • •
• • •
Пользователь i trust_ flag
• • • •
• • • •
• V • •
* — поле, используемое для индексации таблицы
Рис. 12.4 Общая структура связок личных и открытых ключей
12.1. PGP
441
Связка личных ключей может быть индексирована либо по полю Идентифи-
катор пользователя, либо по полю Идентификатор ключа; цель такой индек-
сации мы выясним позже
Хотя предполагается, что связка личных ключей должна храниться только на
машине пользователя, создавшего и владеющего соответствующими парами
ключей и что на должна быть доступна только этому пользователю, имеет
смысл сделать значения личных ключей защищенными настолько, насколько
это возможно Соответствен»I. сам личный ключ в открытом виде в связке клю-
чей не хранится, а шифруется с помощью CAST-128 (или IDEA, или 3DES). При
этом используется еле,дующая процедура.
1. Пользователь выбирает фразу-пароль, которая будет служить для шифро
вания личных ключей.
2. Когда система с помощью RSA генерирует новую пару открытого/личного
ключей, она требует от пользователя указать такую фразу-пароль. Из нее с
помощью SHA-1 генерируется 160-битояый хэш-код, а затем пароль уда-
ляется.
3. Система шифрует личный ключ с помощью CAST-128, используя 128 би-
тов хэш-кода в качестве ключа. Хэш код затем удаляется, а шифрованный
личный ключ сохраняется в связке личных ключей.
Впоследствии, когда пользователь обращается к связке личных ключей, что-
бы извлечь личный ключ, ему придется снова указать фразу-пароль. PGP извле-
чет шифрованный личный ключ, вычислит хэш код пароля и дешифрует лич-
ный ключ с помощью CAST-128 с данным хэш-кодом
Это очень компактная и эффективная схема. Как и в любой основанной на
паролях системе, защищенность всей системы зависит от защищенности пароля.
Чтобы не поддаться искушению записать пароль, пользователь должен исполь-
зовать такую парольную фразу, которую угадать нелегко, а запомнить — просто.
На рис. 12.4 показана и общая структура связки открытых ключей Эта
структура данных позволяет хранить открытые ключи других пользователей,
известных данному Пока что давайте проигнорируем некоторые поля, указан-
ные в таблице, и опишем только часть из них.
Метка даты-времени. Дата и время создания данной записи.
Идентификатор ключа. Младшие 64 разряда открытого ключа данной записи.
Открытый ключ. Открытый ключ данной записи.
Идентификатор пользователя. Владелец данного ключа. С одним откры-
тым ключом можно связать несколько идентификаторов пользователя.
Связка открытых ключей может быть индексирована либо по полю Иденти-
фикатор пользователя, либо по полю Идентификатор ключа; цель такой ин-
дексации мы выясним позже.
Теперь мы можем показать, как эти связки ключей применяются при переда-
че и приеме сообщений. Для простоты в следующем примере мы проигнорируем
сжатие и преобразование в формат radix-64. Сначала рассмотрим передачу сооб-
щения (рис. 12.5) и предположим, что сообщение должно быть и подписано, и
зашифровано. Посылающий сообщение объект PGP выполняет следующие шаги.
442
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Рис. 12.5. Создание сообщения PGP (от А к Б, без сжатия и преобразования <з
формат radix-64)
1. Создание подписи сообщения.
• PGP извлекает личный ключ отправителя из связки личных ключей,
используя введенное значение your userid в качестве ключа поиска.
Если соответствующая команда не предлагает значения your_usexid,
выбирается первый личный ключ в связке.
• PGP запрашивает у пользователя фразу-пароль, чтобы расшифровать
личный ключ.
• Создается компонент подписи сообщения.
2. Шифрование сообщения.
• PGP генерирует сеансовый ключ и шифрует сообщение.
• PGP извлекает открытый ключ получателя из связки открытых клю-
чей, используя значение her_userid в качестве ключа поиска.
• Создается компонент сеансового ключа сообщения.
Принимающий объект PGP выполняет следующие шаги (рис. 12.(6)).
1. Дешифрование сообщения.
• PGP извлекает личный ключ получателя из связки личных ключей,
используя в качестве ключа поиска значение поля Идентификатор
ключа компонента сеансового ключа сообщения.
• PGP запрашивает у пользователя фразу-пароль, чтобы расшифровать
личный ключ.
• PGP открывает сеансовый ключ и дешифрует сообщение.
12 1. PGP
443
Рис. 12.6. Получение сообщения PGP (от А к В, без сжатия и преобразования в
формат radix-64)
2. Аутентификация сообщения.
• PGP извлекает открытый ключ отправителя из связки открытых клю-
чей, используя в качестве ключа поиска значение поля Идентификатор
ключа компонента подписи сообщения.
* PGP восстанавливает полученный профиль сообщения.
• PGP вычисляет профиль сообщения для принятого сообщения и срав-
нивает его с профилем, пришедшим вместе с сообщением, чтобы убе-
диться н их идентичности.
Управление открытыми ключами
Как можно уже догадаться из приведенного выше описания, PGP содержит
ясный и эффективный набор взаимосвязанных функций и форматов, обеспечи-
вающих надежную конфиденциальность и средства аутентификации. Для завер-
шенности системы необходимо решить еще одну проблему, а именно проблему
управления открытыми ключами. В документации PGP о важности этой про-
блемы говорится следующее.
Проблема защиты открытых ключей от несанкционированного
вмешательства является отдельной и наиболее сложной практиче-
ской проблемой приложений, использующих открытые ключи.
444
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Это "ахиллесова пята” криптографии с открытым ключом, и в зна-
чительной мере сложность соответствующего программного obecne
чения определяется сложностью решения именно этой задачи.
PGP предлагает структуру для решения этой проблемы и ряд опций, которые
могут при этом использоваться. Ввиду того что PGP предназначена для исполь-
зования в самой разнообразной среде, не устанавливается никакой жесткой схе-
мы управления открытыми ключами, как, например, это сделано в системе
S/M1ME, которую мы рассмотрим в этой же главе ниже.
Подходы к вопросу управления открытыми ключами
Суть проблемы заключается в следующем. Пользователь А должен построить
связку открытых ключей, содержащую открытые ключи других пользователей,
чтобы взаимодействовать с ними, используя PGP. Предположим, что связка
ключей стороны А включает открытый ключ, приписанный стороне В, но на са-
мом деле владельцем этого ключа является сторона С. Такая ситуация, в частно-
сти, может иметь место, если участник А взял ключ с электронной доски объяв-
лений (BBS), которую участник В использовал для того, чтобы переслать откры-
тый ключ, но ключ был скомпрометирован неким С. В результате возникла
угроза по двум направлениям Во-первых, С может посылать сообщения А,
фальсифицируя подпись В, так что А будет считать сообщения прибывшими от
В. Во-вторых, С сможет прочесть любое шифрованное сообщение от А к В.
Дтя минимизации риска того, что связка открытых ключей пользователя со-
держит ложные открытые ключи, можно предложить несколько вариантов дейст-
вий. Предположим, что А требуется получить надежный открытый ключ В. Вот
несколько вариантов процедуры, которую при этом можно было бы использовать.
1. По.гучение ключа от В лично (физически). Пользователь В может сохра-
нить свой открытый ключ (KUb) на дискете и вручить эту дискету поль-
зователю А. Пользователь А затем может загрузить такой ключ с дискеты
в свою систему. Это действительно безопасный путь, но он имеет свои оче-
видные ограничения.
2. Проверка ключа по телефону. Если А может распознать В по телефону, то
А может позвонить В и попросить продиктовать ключ в'формате radix-64.
Еще более удобный вариант выглядит так: В может передать свой ключ
пользователю А в виде электронного сообщения. Пользователь А может с
помощью PGP и с использованием SIIA-1 сгенерировать 160 битовый про-
филь ключа и представить его в шестнадцатеричном формате; такой про-
филь называется "отпечатком” ключа. После этого А может позвонить В и
попросить продиктовать строку, соответствующую отпечатку его ключа.
Если два отпечатка совпадут, ключ считается проверенным.
3. Получение открытого ключа В от внушающего доверие обеим сторонам на-
дежного посредника D. Для этого поставщик D создает подписанный серти-
фикат. Такой сертификат должен включать открытый ключ В. время созда-
ния ключа и срок его действия. Сторона D генерирует профиль SHA-1 этого
сертификата, шифрует его с помощью своего личного ключа и присоединяет
полученную подпись к сертификату. Ввиду того что создать такую подпись в
12.1. PGP
445
состоянии только D, никто другой не сможет фальсифицировать открытый
ключ и заявить, что этот ключ был подписан стороной D. Подписанный сер-
тификат может быть доставлен непосредственно стороне А стороной В или D
либо выставлен на электронной доске объявлений.
4. Получение открытого ключа В от надежного уполномоченного узла серти-
фикации. Опять же, сертификат открытого ключа создается и подписыва-
ется уполномоченным узлом. Пользователь А может затем получить дос-
туп к такому узлу, указав свое имя пользователя, и получить подписан-
ный сертификат. ।
В случаях 3 и 4 пользователь А должен уже иметь экземпчяр открытого
ключа поставщика сертификатов и быть уверенным, что этот ключ надежен. В
конечном счете А должен сам решить, насколько надежной для него является
сторона, выступающая в роли поставщика.
Использование степеней доверия
Хотя в системе PGP не выдвигается никаких требований в отношении выбора
уполномоченных центров сертификации и степеней доверия, PGP предлагает
удобные средства использования степеней доверия, связывания степеней доверия
с открытыми ключами и информацию об использовании степеней доверия.
Базовая схема выглядит следующим образом. Любой элемент в связке откры-
тых ключей является сертификатом открытого ключа. С каждым таким элемен-
том связывается поле соответствия ключа, которое задает степень доверия, с ко-
торой PGP будет считать, что истинным владельцем данного открытого ключа
является указанный пользователь; чем выше степень доверия, тем сильнее при-
вязка идентификатора пользователя к данному ключу. Это поле вычисляется
PGP. С каждым элементом связывается также некоторое (возможно, нулевое)
число подписей для данного сертификата, которые были собраны владельцем
связки ключей. В свою очередь, с каждой подписью связывается поле доверия
подписи, определяющее степень, в которой PGP доверяет данному объекту под-
писывать сертификаты открытых ключей. Значение поля соответствия ключа
выводится из совокупности значений полей доверия подписи для данного эле-
мента связки ключей. Наконец, каждый элемент определяет открытый ключ,
связываемый с конкретным владельцем, а соответствующее поле доверия вла-
дельцу указывает степень доверия, с которой этот открытый ключ может ис-
пользоваться для подписи других сертификатов открытых ключей; эта степень
доверия определяется и присваивается пользователем Значения полей доверия
подписи можно рассматривать как кэшированные копии значений полей доверия
владельцу других элементов связки ключей.
Три поля, упоминаемые в предыдущем абзаце, содержатся в структуре, назы-
ваемой байтом флага доверия. Содержимое этого флага доверия для каждого
этих трех полей показано в табл. 12.2. Предположим, что мы имеем дело со
связкой открытых ключей пользователя А. Операция определения степени дове-
рия может быть описана следующим образом.
1. Когда А добавляет новый открытый ключ в связку открытых ключей,
PGP должна присвоить значение флагу доверия, связанному с владельцем
446
ГЛАВА 12. ЗАШИТА ЭЛЕКТРОННОЙ ПОЧТЫ
I
Таблица 12.2. Содержимое байта флага доверия
(а) Степень доверия, при- писываемая владельцу от- крытого ключа (размещается после пакета информации о ключе, оп- ределяется пользователем) (б) Степень доверия, при- писываемая паре “открытый ключ/иденти- фикатор пользователя” (размещается после иден- тификатора пользователя, вычисляется PGP) (в) Степень доверия, при- писываемая подписи (размещается после пакета подписей, кэшированная копия значения поля OWNERTRUST для данно- го поставщика подписи)
Поле OWNERTRUST — неопределенное доверие — неизвестный пользователь — минимальный уровень доверия для подписи — средний уровень доверия для подписи — максимальный уровень доверия для подписи — данный ключ присутст- вует в связке секретных ключей (наивысшее до- верие) Бит BUCKSTOP — устанавливается, если данный ключ присутст- вует в связке секретных ключей Поле KEYLEGIT — неизвестное или неопре- деленное соответствие — ненадежное соответствие владельцу ключа — минимально надежное соответствие владельцу ключа — полное соответствие владельцу ключа Бит WARNONLY — устанавливается, если пользователь желает по- лучить только преду- преждение, когда для шифрования использу- ется не вполне подтвер- жденный ключ Поле SIG TRUST — неопределенное доверие — неилье< 1ный ьольюватель — минимальный уровень доверия для подписи — средний уровень доверия для иодннси — максимальный уровень доверия для подписи — данный ключ присутст- вует в связке секретных ключей (наивысшее до- верие) Бит CONTIG — устанавливается, если подпись восходит .о не- прерывной цепочке на- дежных сертификатов к владельцу связки ключей с наивысшим доверием
этого открытого ключа Если владельцем является А, и поэтому этот от-
крытый ключ должен появиться также и в связке личных ключей, то по-
лю доверия владельцу автоматически присваивается значение наивысшее
доверие (ultimate trust). Иначе PGP спрашивает пользователя А о том, ка-
кой уровень доверия следует приписать владельцу этого ключа и А должен
ввести подходящее значение. Пользователь может указать, что этот владе-
лец неизвестен, ненадежен, минимально надежен или вполне надежен
2. Когда добавляется новый открытый ключ, к нему можно добавить одну
или несколько подписей. Позже можно включить и другие подписи. Когда
добавляется подпись, PGP выполняет поиск в связке открытых ключей,
чтобы выяснить, значится ли имя автора этой подписи среди известных
владельцев открытых ключей. Если да, то значение поля OWNERTRUST
этого владельца присваивается полю SIGTRUST данной подписи. В про
тивном случае соответствующему полю присваивается значение неизвест-
ный пользователь.
12.1. PGP
447
3. Значение поля соответствия ключа вычисляется на базе значений полей
доверия иод1П!сей данного элемента связки. Если по крайней мере одна
подпись имеет значение наивысшее (ultimate) в иоле доверия подписи, то в
поле соответствия ключа устанавливается значение полное (complete).
Иначе PGP вычисляет взвешенную сумму значений полей доверия. Для
подписей с максимальным уровнем доверия назначается вес 1/Х, а подин
сям со средним уровнем доверия назначается вес 1/Y, где X и Y являются
параметрами, задаваемыми пользователем. Если общая сумма весов по-
ставщиков комбинаций “ключ,'идентификатор пользователя" достигает 1,
то считается, что соответствие надежно и для поля соответствия ключа ус-
танавливается значение полное (complete). Таким образом, при отсутствии
наивысшего доверия для полною соответствия потребуется по крайней ме-
ре X подписей с максимальным уровнем доверия, или Y подписей со сред-
ним уровнем доверия, или некоторая подходящая их комбинация.
Периодически PGP выполняет проверку связки открытых ключей, чтобы
поддерживать согласованность. По существу, это нисходящий процесс. Для каж-
дого поля OWNERTRUST при такой проверке PGP просматривает связку, нахо-
дит все подписи, автором которых является данный владелец, и обновляет зна-
чения полей SIGTRUST, чтобы эти значения соответствовали значению поля
OWNERTRUST Весь процесс начинается с ключей, для которых указано наи-
высшее доверие. После этого значения всех полей KEYLEG1T пересчитываются
на базе имеющихся подписей.
На рис, 12.7 показана примерная схема связывания доверия подписи и соот
ветствия ключа.’ На рисунке отображена структура связки открытых ключей. В
данном случае пользователь получил несколько открытых ключей, какие-то не-
посредственно от их владельцев, а какие-то от третьей стороны, например с сер-
вера ключей.
Вершина, обозначенная на рисунке “Вы”, представляет элемент связки от-
крытых ключей, соответствующий данному пользователю. Этот ключ, очевидно,
соответствует владельцу, поэтому значением поля OWNERTRUST является наи
высшее доверие. Для любой другой вершины поле OWNERTRUST в связке клю-
чей имеет значение неопределенное доверие, если только пользователем не задано
некоторое другое значение. В данном примере пользователь указал, что он всегда
доверяет подписывать другие ключи пользователям О, Е, F и L. Частичное дове-
рие подписывать другие ключи получили пользователи А и В.
Таким образом, закраска или отсутствие таковой для вершин на рис. 12.7
указывает уровень доверия, определенного для этих пользователей. Древовидная
структура говорит о том, какими пользователями были подписаны соответст-
вующие ключи. Если ключ был подписан пользователем, чей ключ также при-
сутствует в данной связке ключей, от подписанного ключа к подписавшему дан-
ный ключ пользователю идет стрелка. Если ключ подписан пользователем, клю-
ча которого в данной связке ключей нет, стрелка идет от подписанного ключа к
знаку вопроса, означающему, что подписавшая ключ сторона данному пользова
телю неизвестна.
2
"Этот рисунок предоставил автору Фил Циммерман,
448
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
) — ключ, считающийся вами соответствующим владельцу
Рис. 12 7 Пример модели доверия PGP
На рис. 12.7 проиллюстрированы следующие моменты.
1. Обратите внимание на то, что все ключи, владельцам которых полностью
или частично доверяет данный пользователь, были подписаны этим поль-
зователем, за исключением вершины L. Такая подпись пользователя не
всегда необходима, как здесь это имеет место для вершины L, но на прак-
тике большинство пользователей, скорее всего, подпишут ключи большин-
ства владельцев, которым они доверяют. Поэтому, например, даже если
ключ Е уже был подписан надежным поставщиком F. пользователь решил
подписать ключ Е лично.
2. Мы предполагаем, что двух отчасти надежных подписей достаточно для
того, чтобы сертифицировать ключ. Следовательно, ключ пользователя Н
расценивается системой PGP как надежный {т.е. соответствующий вла-
дельцу), ввиду того, что он подписан пользователями А и В, которым дан-
ный пользователь отчасти доверяет.
3. Ключ может быть определен как надежный, если он подписан одной впол-
не надежной или двумя частично надежными сторонами, но может ока-
заться. что пользователю этого ключа не доверяется подписывать другие
ключи. Например, ключ N является надежным, поскольку он подписан
стороной Е, которой данный пользователь доверяет, но подписывать дру-
12.1. PGP
449
ледует учитывать, что противник, скомпрометировавший личный ключ вла-
ца, может тоже выпустить такой сертификат. Однако это действие приведет
эицанию принадлежности ключа противнику точно так же, как и законному
ельцу открытого ключа, и поэтому эта угроза кажется намного меньшей,
злонамеренное использование похищенного личного ключа.
2. S/MIME
истема S/MIME (Secure/Multipurpnse Internet Mai) Extension —защищенные
оцелевые расширения электронной почты) является усовершенствованием с
и зрения защиты стандарта формата МГМЕ электронной почты в Internet,
рующимся на использовании технологии RSA Data Security, Хотя и PGP, и
iME являются стандартами IETF, существуют основания полагать, что
[ME станет стандартом коммерческого и промышленного использования, в
ремя как PGP останется альтернативой для защиты личной электронной
ы большинства индивидуальных пользователей.
тобы понять структуру протокола S/M1ME, необходимо иметь представление о
идем в основе этого протокола формате электронной почты (а именно MIME),
тобы уяснить значение MIME, нам придется сначала рассмотреть традицион-
стандарт формата электронной почты. RFC 822, который все еще использует-
1ень широко. Соответственно, в этом разделе рассматриваются сначала эти два
е старых стандарта, а затем уже описывается протокол S/MIME.
822
окумент RFC 822 определяет формат текстовых сообщений, которые пере-
потел по электронной почте. Он стал стандартом для текстовых почтовых
щений в Internet и широко применяется до сих пор. В кинтексте стандарта
822 сообщения рассматриваются как документы, имеющие конверт и со-
чимое. Конверт содержит всю необходимую информацию, требуемую для то-
гтобы выполнить пересылку и доставку. Содержимое является объектом, ко-
1Й доставляется получателю. Стандарт RFC 822 касается только представле-
содержимого. Однако стандарт содержимого включает пелый ряд полей
т<-гка, которые могут использоваться почтовой системой для создания кон-
h. Этот стандарт позволяет упростить программе электронной почты извле-
ie такой информации.
бщая структура сообщения, соответствующего стандарту RFC 822, очень про-
Сообщение формируется из некоторого числа строк заголовка, за которым
ует текст неограниченной длины (тело сообщения). Заголовок сообщения от-
ется от тела сообщения пустой строкой. Иными словами, сообщение является
ком текста ASCII, где все строки до первой пустой строки считаются строками
ловка, используемыми частью агента пользователя почтовой системы.
трока заголовка обычно состоит из ключевого слова, завершающегося двое-
;ем, за которым следуют ключевые параметры, причем длинные строки фор-
допускает разбивать на несколько строк. Чаще всего используются такие
чевые слова, как From (От), То (Для), Subject (Тема) и Date (Дата). Вот
пер сообщения.
S/M1ME
451
Date: Tue, 16 Jan 1998 10:37:17 (EST)
From: "William Stallings" <ws@shore.net>
SuE>jact: Синтаксис RFC 822
To: Smith@Other-host.com
Cc: Jones@Yet-Ar.other-Host. coir. 1
Привет. Этот раздел начинает непосредственно тело сообщения, которое
отделяется от заголовка сообщения пустой строкой.
Еще одним полем, которое часто присутствует заголовках сообщений RFC
822, является поле Message-ID (Идентификатор сообщения). Это иоле содержит
уникальный идентификатор, связываемый с данным сообщением.
Многоцелевые расширения электронной почты
Стандарт MIME является расширением базового стандарта RFC 822, призван
ним решить некоторые проблемы и преодолеть ограничения протокола SMTP
(Simple Mail Transfer Protocol — простой протокол передачи почты) или некото-
рого другого протокола передачи почты, и RFC 822. В [MURP95] представлен
следующий список ограничений схемы SMTP/822.
1. SMTP не позволяет передавать исполняемые файлы и другие объекты в
двоичном формате. Существует ряд схем преобразования двоичных файлов
в текстовые (к ним относится и популярная схема UUencode/UUdecude для
UNIX), которые затем могут быть использованы различными почтовыми
системами SMTP. Однако ни одна из таких схем не является стандартом
или хотя бы стандартом де-факто.
2. SMTP не позволяет передавать текстовые данные, включающие символы
национальных языков, поскольку такие символы представляются 8-
битовыми кодами с десятичными значениями от 128 и выше, a SMTP ог-
раничивает возможности передачи данных 7-битовыми кодами ASCII.
3. Серверы SMTP могут отвергнуть электронное сообщение, превышающее
определенные размеры.
4. Шлюзы SMTP, выполняющие трансляцию кодов ASCII в коды EBCDIC и
обратно, могут иметь разные таблицы перевода, что выливается в пробле-
мы трансляции.
5. Шлюзы SMTP, связанные с сетями электронной почты, использутощими
протокол Х.400, не могут обработать нетекстовые данные, включаемые в
сообщения стандарта Х.400.
6. Некоторые реализации протокола SMTP не вполне строго придерживаются
стандарта SMTP, определенного в документе RFC 821. При этом возника-
ют следующие типичные проблемы:
• исчезновение, добавление или изменение порядка символов возврата
каретки и перехода на новую строку,
• усечение или разрыв строк, имеющих длину более 76 символов,
452
ГЛАВА 12 ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
• удаление имеющихся в конце строки пропусков (символов табуляции и
пробе та),
• дополнение пропусками строк сообщении до одинаковой длины,
♦ преобразование символов табуляции в наборы нескольких символов
пробела.
Стандарт MIME должен решать эти проблемы, сохраняя совместимость с су-
ствующими реализациями RFC 822. Соответствующие технические специфи-
хии приводятся в документах RFC с номерами от 2045 до 2049.
аткий обзор
Технические спецификации MIME включают следующие элементы.
1. Определяется пять новых полей заголовка сообщения, которые могут
включаться в заголовок RFC 822. Эти поля несут в себе информацию о те-
ле сообщения.
2. Определяется нескольк- форматов содержимого, -задающих стандарты
представления документов мультимедиа в сообщениях электронной почты.
3. Определяются стандарты кодировок передаваемых данных, позволяющие
защитить содержимое сообщения от изменения при осуществлении почто-
выми системами преобразования передаваемых данных из одного формата
в другой.
Выше уже упоминалось пять полей заголовка сообщения. Ниже мы опишем
>маты содержимого и кодировки передаваемых данных.
Ниже перечислены пять полей заголовка, определяемых стандартом MIME.
MIME-Version (версия MIME). Соответствующий параметр должен иметь
значение 1.0. Это поле указывает, что сообщение соответствует стандартам
RFC 2045 и 2046.
• Content-Type (тип содержимого). Описывает данные, помещенные в тело
сообщения, достаточно подробно для того, чтобы агент получателя смог
выбрать соответствующий агент или механизм, позволяющий представить
полученные данные пользователю или обработать их каким-то иным соот-
ветствующим образом.
Content-Transfer-Encoding (кодировка передаваемого содержимого). Ука-
зывает тип преобразования, использовавшегося для того, чтобы предста-
вить тело сообщения в виде, приемлемом для пересылки почтой
Content-ID (идентификатор содержимого). Служит для того, чтобы уникаль-
ным образом идентифицировать объекты MIME среди множества контекстов.
Content-Description (описание содержимого). Текстовое описание объекта ₽
теле сообщения; полезно тогда, когда объект имеет форму, недоступную
для прочтения (например, звуковые данные).
1юбое или все эти поля могут присутствовать в обычном заголовке RFC 822.
>ая реализация, как минимум, должна поддерживать обработку полей MIME-
lion, Content-Type и Content-Transfer-Encoding, а поля Content-ID и Content-
:ription являются опциями и в реализации получателя могут игнорироваться.
. S/M1ME
453
Типы содержимого MIME ' -'и и
Немалая часть спецификаций MIME касается определения множества допусти-
мых типов содержимого, Эго следствие необходимости стандартизации путей переда-
чи информации, представленной в самых разных форматах в среде мультимедиа.
В табл. 12 3 представлен список типов содержимою, описанных в RFC 2046.
Существует семь основных типов содержимого и в общей сумме 15 подтипов. Во-
обще говоря, тип содержимого указывает общий тип данных, а подтип определяет
конкретный формат, используемый для представления этого типа данных.
Для типа text тела сообщения не требуется никакого специального программ-
ного обеспечения, чтобы увидеть такой текст, если не учитывать кодировку для
набора символов, с помощью которых этот текст был написан Главным подти-
пом данного типа является plain text, что означает просто строку символов
ASCII или символов ISO 8859. Подтип enriched дает возможность использовать
более гибкий формат
Тип multipart указывает на то, что тело сообщения состоит из нескольких не-
зависимых частей Поле Content-Туре заголовка сообщения включает параметр
boundary (граница), задающий разделитель, отделяющий части тела сообщения
одну от другой Этот разделитель не должен присутствовать ни в одной из частей
сообщения. Каждый такой разделитель должен начинаться с новой строки и
формируется из двух дефисов, за которыми следует значение разделителя. За-
вершающий разделитель, который указывает конец последней части сообщения,
имеет еще и суффикс, состоящий из двух дефисов. Внутри каждой части может
присутствовать необязательный обычный заголовок MIME.
Вот простой пример составного сообщения, включающего две части, каждая
их которых представляет собой простой текст (это пример из документа RFC
2046 с переводом пояснений).
From: Nathaniel Sorenstein <nsbi?belIcore . com>
To: Ned Freed <ned@inncsoft.com>
Subject: Sample message
MIME-Version: 1.0
Content-type: multipart/mixed; boundary-"simple boundary"
Это преамбула. Она игнорируется, но здесь создатель сообщения может
разместить пояснения для читателя, система которого не соответствует
стандарту MIME
—simple boundary
Это неявно типизированный текст ASCII. Он НЕ заканчивается символом
обрыва строки.
—simple boundary
Content-type: text/plain; charset=us-ascii
Это явно типизированный текст ASCII. Он ЗАКАНЧХВАЕТСЯ символом обрыва
строки.
—simple boundary— <
Это эпилог. Он тоже игнорируется.
454
ГЛАВА 12 ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
1блица 12.3. Типы содержимого MIME
Гип Подтип Описание
Text (текст) Plain (простой) Неформатированный текст; может быть в коди- ровке ASCII или ISO 885У
Enriched (расширенный) Обеспечивает большую гибкость формата
Multipart многокомпо- 1₽нтный) Mixed (смешанный) Разные части независимы, но должны передавать- ся вместе Она должны быть представлены полу- чателю в том порядке, в котором они появляются в почтовом сообщении
Parallel (парад лел ьный) Отличается от смешанного только тем, что не оп- ределяется порядок, в котором части сообщения должны быть представлены получателю
Alternative (ал ьтернативный) Разные части являются альтернативными варианта- ми одной и той же информации Они располагаются в порядке возрастания точности соответствия оршина- лу, и почтовая система получателя должна выбрать для отображения пользователю “лучший” вариант
Digest 1реферативный) Подобен смешанному, ни по умолчанию для поля тип/подтип каждой части выбирается message/rfc822
dessage сообщение) rfc822 Тело сообщения само является инкапсулирован- ным сообщением в формате RFC 822
Partial (фрагментарный) Служит для того, чтобы разрешить фрагментацию больших почтовых объектов некоторым прозрач- ным для получателя способом
Externa!-body (внешний) Содержит указатель на объект, существующий где- то в другом месте
mage изображение) JPcg Изображение в формате JPEG, кодировка JFIF
gif Изображение в формате GIF
Zideo (видео) mpeg Формат MPEG
\udio (звук) Basic (основной) Одноканальная 8-битовая кодировка стандарта ISDN с частотой выборки 8 КГц, выполненная по закону компандирования с жю-характеристикой
Xpplication приложение) PostScript Формат Adobe PostScript
Octet-stream (ноток байтов) Двоичные данные общего вида, состоящие из 8- битовых байтов
Существует четыре подтипа для типа multipart сообщения, и все они имейгг
>щий синтаксис. Подтип multipart/mixed используется при наличии несколь-
ах независимых частей, которые должны быть связаны в определенном поряд-
э. Для подтипа multipart/paraUel порядок частей не существенен. Если система
1.2. 8/MIME
455
получателя позволяет, все части сообщения могут быть представлены парал-
лельно Например, изображение или текстовая часть могут сопровождаться го-
лосовым комментарием, который проигрывается, пока отображается изображе
ние или текст.
Для подтипа multipart/alternative разные части являются различными пред-
ставлениями одной и той же информации. Рассмотрим следующий пример.
From: Nathaniel Borenstein <nsb@belicore. com>
To: Ned Freed <ned@inncsoft.ccm>
Subject: Formatted text mail
MIME-Version: 1.0
Content-Type; multipart/alternative; boundary=boundary42
—boundary42
Content-Type: text/plain; charset“=us-ascii
... здесь размещается вариант сообщения в виде простого текста . .
—boundary42
Content-Type: text/enricned
. тс же сообщение в виде текста в расширенном формате RFC 1896 ...
—boundary42—
В этом подтипе части сообщения упорядочены по возрастанию их предпочте-
ния. Что касается данного примера, то, если принимающая система способна
отображать сообщения в расширенном текстовом формате, так он и будет ото-
бражен, в противном случае используется простой текстовый формат.
Подтип multipart/digest применяется тогда, когда каждая часть тела сообще-
ния интерпретируется как сообщение RFC 822 со своим заголовком. Этот подтип
позволяет создавать сообщения, части которого являются отдельными сообще-
ниями. Например, модератор группы может собирать сообщения электронной
почты участников группы, связывать эти сообщения и пересылать их инкапсу-
лированными в одном сообщении MIME.
Тип message обеспечивает ряд важных возможностей MIME. Подтип
message/rfc822 указывает на то, что тело представляет полное сообщение, вклю-
чающее заголовок и тело сообшения. Несмотря на название этого подтипа, ин-
капсулированное сообщение может быть не только простым сообщением
RFC 822, но и любым сообщением MIME.
Подтип message/partial дает возможность разделить большое сообщение на
несколько частей, которые должны снова быть собраны в системе получателя.
Для этого подтипа в поле Content-Type: Message/Partial указывается три пара
метра: идентификатор, общий для всех фрагментов этого сообщения, порядко-
вый номер, уникальный для каждого фрагмента, и общее число фрагментов.
Подтип message/external-body указывает на то, что фактических данных, ко-
торые должны сопровождать это сообщение, в теле сообщения нет. Вместо этого
456
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
ело сообщения содержит информацию, необходимую для того, чтобы получить
оступ к этим данным. Как и в случае с другими типами сообщения, подтип
iessage/external-body имеет внешний заголовок и инкапсулированное сообщение
собственным заголовком. Единственным необходимым полем во внешнем заго-
*вке является поле Content-Type, которое идентифицирует это сообщение как
□общение подтипа inessage/external-body. Внутренний заголовок является зато
овком сообщения для инкапсулированного сообщения. Поле Content-Туре во
нешнем заголовке должно включать параметр типа доступа, который указывает
етод доступа, например FTP (протокол передачи файлов).
Тип application ссылается на другие виды данных, обычно либо на неинтер-
ретируемые данные в двоичном формате, либо на информацию, которая должна
врабатываться почтовым приложением.
одировки MIME
Другим основным компонентом спецификаций MIME, кроме типа содержимо-
I, является определение кодировки передаваемого тела сообщения. Цель указа-
1Я кодировки — исключение искажений при пересылке через как можно
льшее число различных сред.
Стандарт MIME определяет два метода кодирования данных. Поле Content-
ansfer-Encoding может в действительности принимать шесть различных значе-
1Й, указанных в табл. 12.4. Однако три из этих значений (Tbit, 8bit и binary)
:азывают на то. что никакого кодирования выполнено не было, и поэтому дают
лько некоторую информацию о природе пересылаемых данных. Для передачи по
отоко.чу SMTP безопаснее всего использовать кодировку, задаваемую значением
it. В других почтовых транспортных контекстах могут быть также приемлемы-
( данные в 8-битовой и двоичной форме (значения 8bit и binary). Еще одним зна-
нием поля Content-Transfer-Encoding является x-token, которое говорит о том,
о действует некоторая другая схема кодирования, для которой должно быть ука-
го имя. Это может быть специальная схема кодирования поставщика или кон-
етного приложения. Двумя определяемыми схемами кодирования являются
□ted printable и base64. Эти две схемы предлагаются для того, чтобы обеспечить
«можность выбора из вариантов передачи, один из которых, по существу, явля-
:я приемлемым для чтения человеком, а другой — безопасен для пересылки
!Х типов данных способом, который достаточно компактен.
Кодировку quoted-printable целесообразно использовать тогда, когда боль-
ше! во байтов данных соответствует печатаемым символам ASCII. По сущест-
она переводит непечатаемые символы в шестнадцатеричные представления
кодов и вставляет обратимые- (мягкие) переходы на новую строку, чтобы ог-
шчить длины строк до 76 символов.
Кодировка base64, известная также под названием radix-64, является обще-
шятым преобразованием произвольных данных из двоичного формата в такой
>мат, который не искажается вследствие обработки данных программами пе-
ылки почты. Эта кодировка используется также в PGP и описывается в до-
ьнении 12Б.
2. S/M1ME
457
Таблица 12.4. Кодировки MIME
7bit Все данные представляются короткими строками символов ASCH
8bii Все строки являются короткими, но могут содержать символы, не являю- щиеся символами ASCTI (байты с ненулевыми старшими битами)
binary Могут присутствовать не только символы, не являющиеся символами ASCH, но строки не обязательно должны быть достаточно короткими для транспорта SMTP
quoted- printable Данные кодируются таким образом, что если исходные данные являются в основном текстом ASCII, то в кодированной форме они остаются в значи- тельной степени распознаваемыми человеком
ЬаьеН-1 Данные кодируются отображением б-битовых блоков входных данных в 8- битивые блоки выходных, все из которых являются печатаемыми символа- ми ASCII
x tok en Нестандартное кодирование с указанным именем
Пример многокомпонентного сообщения
На рис. 12.8. созданном па основе соответствующего примеря из RFC 1521,
схематически представлено сложное многокомпонентное сообщение. Это сообщение
состоит из пяти частей, которые должны отображаться последовательно: две ввод-
ные части в виде простого текста, вложенное многокомпонентное сообщение, часть
в виде текста расширенного формата и заключительное инкапсулированное тек-
стовое сообщение, в котором используются символы, не являющиеся символами
ASCH. Вложенное многокомпонентное сообщение состоит из двух частей, которые
должны отображаться параллельно — это изображение и звуковой фрагмент-
From: Nathaniel Sorenstein <nsb0bellcore.com>
To: Ned Freed <ned@innosoft.com>
Subject: Пример многокомпонентного сообщения
Content-Type: multipart/mixed;
boundary=onigue-bcundary-l
Это раздел преамбулы многокомпонентного сообщения. Получатель, распо-
знающий данный формат, должен игнорировать эту преамбулу. Прочитав
этот текст, у вас, возможно, появится желание использовать почтовую
программу, способную правильно отображать многокомпонентные сообщения
—unique-boundary-1
...Здесь размещается некоторый текст...
[Заметим, что предыдущая пустая строка означает отсутствие полей заголовка
для этого текста и что это текст из символов US-ASCII. Последнее можно бы-
ло бы указать явно, как это сделано в следующей части сообщения.]
—unique-boundary-1
Content-type: text/plain, charset=US-ASCU
458
ГЛАВА 12. ЗА1Ц1ГТА ЭЛЕКТРОННОЙ ПОЧТЫ
текст мог бы быть частью предыдущей части, но он иллюстрирует еоэ-
сть явного указания типа части содержимого в сравнении с неявным.
que-boundary-1
nt-Type: multipart/parallel; bounds ry=unique-bouridaiy-2
;ue- boundary-2
nt-Type: audio/basic
nt-Transfer-Encoding, base64
десь размещаются кодированные в формате base64 данные, предетавляю-
дноканальную 8-битовук> цифровую запись звука с частотой выборки
Ги, выполненную по закону компандирования с мю-характеристикой ...
gue-bounda гу-2
nr-Type: image/jpeg
nt-Transfer-Encoding: base64
десь размещаются кодированное в формате Ьазеб4 изображение ...
que-boundary-2-
que-ooundary-1
nt-type: text/enriched
екст в <bold><italic>pacmMpeHHOM формате, </italic>«;/bold>
ler>onpeделенном в RFC 1896</smaller>
этс не <ь1ддег><Ыддег>здорово?</Ыддег></Ыддег>
que-boandaty-1
nt-Type: tnessage/rfc8z2
(mailbox in US-ASCII)
address in US-ASCII)
ct: (subject in US-ASCII)
nt-Type; lext/plain; charset“ISO-8859-l
nt-Transfer-Encoding: Quoted-printable
десь размещается текст в кодах ISO-8859-1...
que-boundarу-1--
2.8. Примерная структура сообщения MIME
3/Nil ME
459
Каноническая форма
Важным понятием в MIME и S/MIME является понятие канонической формы.
Каноническая форма представляет собой формат, подходящий данному типу со-
держимого и стандартизованный для использования при обмене между системами.
В этом отношении каноническая форма отличается от собственной формы содер-
жимого, которая может зависеть от данной конкретной системы. Табл 12.5, взя-
тая из документа RFC 2049, должна помочь понять суть этого понятия.
Таблица 12.5. Собственная и каноническая формы
Собственная Тели сообщения, которое должно быть передано, создается в собствен-
форма ном формате соответствующей системы. Используются собственные
наборы символов и, возможно, локальные соглашения о символах
окончания строк. Тело сообщения может представлять собой тексто-
вый файл UNIX или растровое изображение Sun, или индексирован-
ный файл VMS, или звуковые данные в зависящем от системы, форма-
те, сохраняемым только в памяти, или что-либо другое, что соответст-
вует локальной модели представления некоторой информации-
Главное, что данные создаются в некоторой “родной” форме, задавае-
мой типом носителя
Каноническая Все тело сообщения, включая дополнительную информацию, например
формы длину записей и, возможно, информацию об атрибутах файла, перево-
дится в универсальную каноническую форму, Сама применяемая ка-
ноническая форма тела сообщения определяется конкретным типом
тела сообщения, а также взаимосвязанными с ним атрибутами. Преоб-
разование в правильную каноническую форму может означать иреоб
разевание набора символов, трансформацию звуковых данных, сжатие
или какие то другие действия, применимые к конкретному типу со-
держимого. Если используется преобразование набора символов, сле-
дует четко понимать семантику представления содержимого, которая
может существенно усложнять любые преобразования наборов симво-
лов (например, с учетом синтаксически, важных символов в тексте,
подтип которого отличен от простого)
Функциональные возможности S/MI.ME
С точки зрения общих функциональных возможностей S/MIME и PGP очень
схожи. Обе системы предлагают возможность подписывать и/или шифровать со-
общения. В этом разделе мы кратко опишем возможности S/MIME. Затем мы
рассмотрим эти возможности более детально, рассмотрев форматы сообщения и
процесс подготовки сообщения.
Функции
S/MJME обеспечивает возможность использования следующих функций.
• Упакованные данные. Состоят из шифрованного содержимого любого типа
и ключей шифрования содержимого для одного или большего числа полу-
чателей
460
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Подписанные данные. Цифровая подпись формируется с помощью вычис-
ления профиля для требующего подписи содержимого сообщения и потом
шифруется с использованием личного ключа подписывающей это содер
жимое стороны. После этого содержимое вместе с подписью переводятся в
формат base64. Сообщение с подписанными данными может быть просмот
рено только получателем, располагающим возможностями S/MIME.
Открытые подписанные данные. Как в случае подписанных данных, фор-
мируется цифровая подпись содержимого. Однако в данном случае с ис-
пользованием base64 кодируется только цифровая подпись. В результате
получатели без возможностей S/MIME смогут просмотреть содержимое со-
общения. но не смогут проверить подпись.
Подписанные и упакованные данные. Возможности подписи и упаковки
могут быть вложены одна в другую, так что шифрованные данные могут
быть подписаны, а подписанные или открытые подписанные данные могут
быть зашифрованы.
«иптографические алгоритмы
В табл. 12.6 представлены криптографические алгоритмы, используемые в
:теме S/M1ME. В 8/М1МЕ принята следующая терминология, предложенная в
«.умейте RFC 2119 и позволяющая указать уровень требований/
ОБЯЗАТЕЛЬНО (MUST). Определение является абсолютным требованием
спецификации. Любая реализация должна включать это свойство или
функцию, чтобы соответствовать данной спецификации.
РЕКОМЕНДУЕТСЯ (SHOULD). В конкретном окружении могут существо-
вать причины игнорировать это свойство или функцию, но рекомендуется,
чтобы реатизация все же имела соответствующее свойство или функцию.
S/MIME объединяет три алгоритма, использующих открытые ключи. Стан-
ет цифровой подписи (алгоритм DSS), описанный в главе 10, является пред-
гтительным алгоритмом создания цифровой подписи. Предпочтительным ал-
итмом шифрования сеансовых ключей в S/MIME называется алгоритм Диф-
Хеллмана, но фактически в В/MIME используется вариант алгоритм Диффи-
глмана, обеспечивающий шифрование/дешифрование и известный как алго-
•м Эль-Гаматя (см. задачу 6Л9). В качестве альтернативы как для подписей,
и для шифрования сеансовых ключей может использоваться алгоритм RSA.
[санный в главе 6. Это те же алгоритмы, которые применяются в PGP, по-
льку они обеспечивают достаточно высокий уровень защиты. Для функции
гирования. используемой при создании цифровых подписей, спецификации
оменцуют 160-битовый алгоритм SHA-1, но гребуют поддержку 128-битового
эритма MD5. Как уже говорилось в главе 9, имеются обоснованные сомнения
остаточной защищенности MD5, так что SHA-1 является, очевидно, более
«почтительной альтернативой. Однако MD5 применяется очень широко, чем
>ъясняется его поддержка.
RFC 2119, Key Words for Use in RFCs to Indicate Requirement Levels, Март 1997 г.
. S/MIME
461
Таблица 12.6. Криптографические алгоритмы, используемые н S/MIME
Функция Требование
Создание профиля со- общения, используемого при формировании цифровой подписи ОБЯЗАТЕЛЬНА поддержка SHA-1 и MD5, РЕКОМЕНДУЕТСЯ использовав не SHA-1
Шифрование профиля сообщения для форми- рования цифровой подписи Для агентов отсылки и приема ОБЯЗАТЕЛЬНА поддержка DSS. Для агента отсылки РЕКОМЕНДУЕТСЯ поддержка шифро- вания RSA. Для агента приема РЕКОМЕНДУЕТСЯ поддержка верифи- кации подписей RSA с длиной ключа от 612 до 1624 битов
Шифрование сеансовою ключа для передачи с сообщением Для агентов отсылки и приема ОБЯЗАТЕЛЬНА поддержка алгоритма Диффи-Хеллмана. Для агента отсылки РЕКОМЕНДУЕТСЯ поддержка шифро вания RSA с длиной ключа от 612 до 1024 битов. Для агента приема РЕКОМЕНДУЕТСЯ поддержка дешифро- вания RSA
Шифрование сообщения для передачи с исполь- зованием сеансового ключа Для агента отсылки РЕКОМЕНДУЕТСЯ поддержка шифро- вания tripleDES и RC2/40. Для агента приема ОБЯЗАТЕЛЬНА поддержка дешифрова- ния tripleDES и РЕКОМЕНДУЕТСЯ поддержка дешифрова- ния RC2/40
Для шифрования сообщений рекомендуется “тройной” DES с тремя ключами
(tripleDES), но любая гибкая реализация должна поддерживать 40 битовую вер
сию алгоритма RC2. Последний является весьма слабым алгоритмом шифрова-
ния, но зато соответствует экспортным требованиям США.
Спецификации S/M1ME включают описание процедуры выбора алгоритма
шифрования содержимого. Пи существу, агент отсылки сообщений имеет выбор
из двух вариантов. Во-первых, он должен определить, способен ли агент приема
сообщений дешифровать данный алгоритм шифрования. Во-вторых, если агент
приема способен принимать только слабо шифрованное содержимое, агент от-
сылки должен решить, является ли приемлемым использование слабого шифро
вэния. Для поддержки этого процесса выбора агент отсылки может объявлять
возможности дешифрования в порядке возрастания предпочтения в любом отсы-
лаемом сообщении. Агент приема может сохранить эту информацию для даль-
нейшего применения.
Агент отсылки должен использовать для решения представленные ниже пра-
вила в следующем порядке.
1. Если агент отсылки имеет список предпочтения возможностей дешифрова-
ния предполагаемого получателя, РЕКОМЕНДУ ЕТСЯ выбрать из этого
списка первую возможность (возможность с наивысшим предпочтением) из
тех, которые получатель может использовать.
462
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
2 Если агент отсылки не имеет такого списка возможностей предполагаемого
получателя, но имеет одно или ряд сообщений, пришедших от получателя,
то для отправляемого сообщения РЕКОМЕНДУЕТСЯ использовать алго-
ритм шифрования, применявшийся в последнем из полученных подписан-
ных и шифрованных сообщений предполагаемого адресата.
3. Если ахент отсылки ничего не знает о возможностях дешифрования пред-
полагаемого получателя и не намерен рисковать тем, что получатель не
сможет дешифровать сообщение, то агенту отсылки РЕКОМЕНДУЕТСЯ
использовать tripleDES.
4. Если агент отсылки ничего не знает о возможностях дешифрования пред-
полагаемого получателя и не хочет рисковать тем, что получатель не смо-
жет дешифровать сообщение, то агенту отсылки следует ОБЯЗАТЕЛЬНО
использовать RC2/40.
Если сообщение должно быть послано нескольким получателям и нельзя вы-
ать алгоритм шифрования, общий для всех, то агенту отсылки следует отпра-
гь два сообщения. Однако в таком случае важно заметить, что сообщение ста-
вится более уязвимым при передаче копии сообщения с более слабой защитой.
□общения S/MIME
В S/M1ME определен ряд новых типов содержимого MIME, перечисленных в
бл. 12.7, Все эти новые типы используют обозначения PKCS (Public-Key Сгур-
graphy Specifications — спецификации криптографии с открытым ключом),
убликованные RSA Laboratories и доступные для S/MIME.
Мы рассмотрим каждый из этих типов по порядку после того, как уделим
импние общим процедурам подготовки сообщений S/MIME.
щита объекта MIMF
В S/MIME защита --бъекта MIME 'беспечивается подписью, шифрованием
и и тем, и другим одновременно. Объектом MIME может быть как все сообще-
бдица 12.7. Типы содержимого S/MIMfc
ип Подтип Параметр smime Описание
lultipari «ногокомпон ПлыЙ) Stgned (подписанный) Открытое подписанное сообщение из двух частей: сообщения и его подписи
pplication триложение) pkcs7mime signedData Подписанный объект S/MIME
pkcs7-mime envelop) flData Шифрованный объект S/MIME
pkcs7-mime degenerate signedData Объект, содержащий только сер твфикаты о Тарьи ых ключей
pkcs7-signaiure — Тип подписи, являющейся частью сообщения типа multipart/signed
pkcsJO-raime — Сообщение запроса регистрации сертификата
.2. S/M1ME
463
ние (за исключением его заголовков RFC 822) или, в случае многокомпонентного
содержимого MIME, одно или несколько частей сообщения. Объект MIME гото-
вится в соответствии с обычными правилами подготовки сообщений MIME. За-
тем объект М1МЕ весте с некоторыми связанными с ним данными защиты
(ййпример, идентификаторами алгоритма и сертификатов) обрабатываются
S/MIME, чтобы в результате получить то, что обычно называют объектом PKCS.
С объектом PK.CS затем обращаются как с содержимым сообщения, которое упа-
ковывают в MIME (добавляя соответствующие заголовки MIME). Этот процесс
должен стать понятным, когда мы рассмотрим конкретные объекты и соответст-
вующие примеры.
В любом случае отсылаемое сообщение переводится в каноническую форму. В
частности, применяется каноническая форма содержимого сообщения в зависи-
мости от типа и подтипа. Для многокомпонентных сообщений подходящая ка-
ноническая форма выбирается для каждой части.
Использование кодировок требует отдельного замечания. В большинстве слу-
чаев в результате применения алгоритма защиты получается объект, который
частично или полностью представляется произвольными двоичными данными.
Этот объект затем упаковывается во внешнее сообщение MIME и при этом может
использоваться некоторая соответствующая кодировка, обычно base64. Однако d
случае подписи многокомпонентного сообщения, который будет детально описан
позже, само содержимое сообщения в одной из частей остается без изменения
после применения такого средства защиты. Если только это содержимое не яв-
ляется набором 7-битовых символов, то оно должно передаваться кодированным
в кодировке base64 или quo ted-printable во избежание изменения содержимого, к
которому относится подпись.
Давайте рассмотрим каждый из типов содержимого S/MIME.
Упакованные данные
Подтип application/pkcs7-mime предназначен для одного из четырех видон об-
работки S/MIME, каждого со своим уникальным параметром smime-типа. Во
всех случаях получающийся в результате объект представляется в так называе-
мом формате BER (Basic Encoding .Rules — основные правила кодирования), оп-
ределенном в рекомендациях Х.209 группы ITU-T*. Формат BER представляет
собой набор строк произвольных байтов, которые, таким образом, являются
данными в двоичном формате. Такой объект во внешнем сообщении MIME дол-
жен передаваться кодированным в формате Ьазеб4. Сначала рассмотрим объект
envelopedData (упакованные данные).
При подготовке объекта envelopedData MIME должны быть выполнены сле-
дующие действия.
1. Генерируется псевдослучайный сеансовый ключ для конкретного алгорит
ма симметричной схемы шифрования (RC2/40 или 3DES).
2. Для каждого получателя сеансовый ключ шифруется с помощью открыто-
го ключа получателя и RSA
3. Для каждого получателя готовится блок данных, называемый
Recipientinfo (информация для получателя), содержащий сертификат от-
464
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
крытого ключа отправителя,4 идентификатор алгоритма, использовавшего-
ся для шифрования сеансового ключа, и шифрованный сеансовый ключ.
Содержимое сообщения шифруется с помощью сеансового ключа.
юки Recipientinfo, за которыми следует шифрованное содержимое сообще-
вместе составляют блок envelopedData. Эта информация затем кодируется в
ате base64. Вот пример такого сообщения (с исключенными заголовками
322 ).
mt-Type: application/pkcs7-mime; smime-type=enveloped-data;
•smime.p7m
int-Transfer-Encoding: base64
:nt-Disposition: attachment; filename=smime.p7m
i3'’56tbBghyHhHUujhJhjH77n8HHGT9HG4VQpfyF467GhlGfHfYT6
lGghyHhHUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jH7756tbB9H
TrfvhGhjH776tbB9HG4VQbnj7567GhIGfHfYT6ghyHhHUujpfyF4
.fHfQbnj756YT64V
обы восстановить шифрованное сообщение, получатель сначала снимает
>овку base64. Затем используется личный ключ получателя, чтобы открыть
эьый ключ. Наконец, содержимое сообщения дешифруется с помощью это-
нсового ключа.
исанные данные
п signedData (подписанные данные) предназначен для документов, подпи-
гх одной или несколькими сторонами. Для определенности мы ограничим
исследование случаем одной цифровой подписи. Для подготовки объекта
(Data MIME следует выполнить такие действия.
Выбирается алгоритм создания профиля сообщения (SHA или MD5).
Вычисляется профиль сообщения (значение хэш-функции) для содержимо-
го, которое должно быть подписано.
Профиль сообщения шифруется с помощью личного ключа стороны, под-
писывающей документ.
Подготавливается блок, называемый Signerinfo (информация подписавшей
стороны), содержащий сертификат открытого ключа подписавшей доку-
мент стороны, идентификатор алгоритма, использовавшегося для шифро-
вания профиля сообщения и шифрованного профиля сообщения.
ьект signedData формируется из ряда блоков, включающих идентификатор
1тма создания профиля сообщения, само подписываемое сообщение и блок
Info. Объект signedData может также включать набор сертификатов от-
IX ключей, достаточный для того, чтобы составить цепочку от признанного
а сертификации высшего уровня доверия к стороне, подписавшей доку-
Эта информация затем кодируется в формате base64. Вот пример такого
ения (с исключенными заголовками RFC S22).
ртификат Х.509, обсуждающийся в этом разделе ниже.
./MIME
465
Content-Type: application/pkcs7-mime; smime-type=signed-data;
name-smime. p7m
Content-Transfer-Encoding: x>ase64
Content-Disposition: attachment; f i lename-=smime. р7щ
b67GhIGfHfYT6ghyHhHUujpfyF4f3HHGTrfvhJhjH776tbB9HG4VQbnj7
77r,9HHGT 9HG4 VQpf yF4 67GhIGfHf YT 6r fvbn j 7 5 6t bBghyHhHUuj h Jh j H
HUujhJh4VQpfyF467GhlGfrifYGTrfvbnjT6jH7756ttB9H7n8HhGghyHh
6YT64VOGhIGfHfQbnj75
Чтобы восстановить подписанное сообщение и проверить подпись, получатель
сначала снимает кодировку base64. Затем используется открытый ключ стороны,
подписавшей документ, чтобы открыть профиль сообщения. Наконец, получа-
тель самостоятельно вычисляет профиль сообщения и сравнивает его с дешифро-
ванным профилем сообщения, чтобы проверить подпись.
Открытое подписанное сообщение
Открытое подписанное сообщение получается тогда, когда для содержимого
используется тип multipart и подтип signed. Как уже упоминалось, такой про-
цесс подписи не трансформирует сам<-- подписываемое сообщение, так что оно
пересылается в “открытом” виде. Таким образом, получатели с возможностями
MIME, но не S/M1ME, все равно смогут прочитать поступившее сообщение.
Сообщение типа multipart/signed включает две части. Первая часть может быть
любого типа MIME, но должна быть подготовлена так, чтобы она не была измене-
на в пути следования от источника к адресату Это значит, что если первая часть
не представлена в 7 битовой кодировке (Tbit), то данные необходимо кодировать,
используя формат base64 или quo ted printable. Затем эта часть сообщения обраба
тывается точно так же, как и в случае объекта signedData, но в данной ситуации в
результате создается объект з формате signedData, поле содержимого которого
оказывается пустым. Этот объект представляет собой отделенную подпись. Затем
он кодируется в формат base64, чтобы стать второй частью многокомпонентного
сообщения. Для типа MIME этой второй части выбирается значение application, а
для подтипа — pkcs7-signature. Вот пример такого сообщения.
Content-Type: multipart/signed;
protocol-”appiication/pkcs7-signature";
micalg*-shal; boundaxy-=boundaxy42
—boundary42
Content-Type: texr/plain
Это открытый текст подписанного сообщения.
—bour-dary42
Content-Type: application/pkcs7-signature; name=smime-p7s
Content-Transfer-Encoding: base64
Content-Disposition: attachment; fiiename^smime.p7s
466
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
ghyHhHUujhJhjH77n6HHGTrfvbnj756tbB9HG4VQpfyF467GhIGtHfYT6
4VGpfyF467GhIGfHfYT6jH7 7n8HHGghyHhHOajhJh756t.bB9HGTrfvbrij
n8HHGTrfvhJhjH776tbB9HG4VQbnj7567GhIGfHfYT6ghyHhHUujpfyF4
7GhIGfHfYT647aDnj756
—boundary42—
Значение параметра protocol указывает на то, что этот объект является двух-
компонентным открытым подписанным сообщением. Значение параметра micalg
указывает тип используемого профиля сообщения. Получатель может проверить
подпись, вычислив профиль сообщения из первой части и сравнив его с профи-
лем сообщения, который восстанавливается из подписи во второй части.
Запрос регистрации
Обычно приложение или пользователь обращается к центру сертификации по
поводу получения сертификатов открытых ключей. Объект S/MIME типа
application/pkcslO служит для того, чтобы передать запрос такого сертификата.
Запрос сертификата включает блок certification Requestinfo (информация о запросе
сертификата), за которым следует идентификатор алгоритма шифрования с откры-
тым ключом, завершающийся подписью блока certificationRequestlnfo, выполнен-
ий с помощью личного ключа отправителя Блок certificationKequestlnfo включа-
!Т имя объекта сертификации (объект, чей открытый ключ должен быть сертифи-
щрован) и представление открытого ключа пользователя в виде строки битов.
Сообщение, содержащее только сертификаты
Сообщения, содержащее только сертификаты или список отозванных сертифи-
катов (CRL), могут посылаться в ответ на запрос регистрации, Типом/подтипом
акого сообщения будет application/pkcsT-mime с параметром degenerate
эы рожденный) для smime-типа. Выполняемые при этом действия аналогичны
ем, что и при создании сообщения signedData, за исключением того, что в данном
чучае нет содержимого сообщения и поле signerinfo оказывается пустым.
)бработка сертификатов в S/MIME
S/MIME использует сертификаты открытых ключей, соответствующие версии 3
-андарта Х.509 (см. главу 11). Схема управления ключами в S/MIME является и
’котором смысле гибридом строгой иерархии сертификатов Х.509 и сетью дове-
дя PGP. Как и в модели PGP, администраторы и/или пользователи S/MIME
»лжны обеспечить каждому клиенту список надежных ключей и список отозван-
дх сертификатов Это значит, что ответственность за поддержку множества сер-
1фикатов, необходимых для проверки поступающих подписей и шифрования от-
«авляемых сообщения, ложится на локальную систему. В то же время сами сер-
фикаты подписываются уполномоченными центрами сертификации.
>ль агента пользователя
Пользователь S/MIME должен выполнять следующие функции управления
ючами.
Генерирование ключей. Для пользователя некоторой соответствующей
утилиты администрирования (например, осуществляющей управление ло-
2. S/M1ME
467
кальной сетью) ОБЯЗАТЕЛЬНО должна быть предусмотрена возможность
генерировать отдельные пары ключей Диффи-Хеллмана и DSS и
РЕКОМЕНДУЕТСЯ иметь возможность генерировать пары ключей RSA.
Каждая пара ключей ОБЯЗАТЕЛЬНО должна генерироваться с использо-
ванием случайных значений, полученных от хорошего недетерминирован-
ного источника таких значений, и должна быть некоторым образом защи-
щена. Для агента пользователя РЕКОМЕНДУЕТСЯ генерировать пары
ключей RSA с длиной ключа от 768 до 1024 битов и ни в коем случае не
генерировать ключи длиной менее 512 битов.
Регистрация. Открытый ключ пользователя должен быть зарегистрирован
с помощью уполномоченного центра сертификации для того, чтобы полу-
чить сертификат этого ключа стандарта Х.509.
Хранение и поиск сертификатов. Пользователю требуется доступ к ло-
кальному списку сертификатов, чтобы иметь возможность проверить по-
ступающие подписи и шифровать отправляемые сообщения. Такой список
может поддерживаться пользователем или некоторым локальным админи-
стративным объектом от имени группы пользователей.
Сертификаты VeriSign
Существует несколько компаний, предоставляющих услуги сертификации
(СА — Certification Authority). Например, фирма Nortel предлагает комплексное
решение проблемы сертификации для предприятий и может обеспечить под-
держку S/MIME в рамках отдельной организации. Существуют центры сертифи-
кации, использующие сеть Internet, и среди них VeriSign, GTE и U.S. Postal
Service. Из них наиболее популярна служба сертификации VeriSign, кратким
описанием которой мы сейчас и займемся.
VeriSign обеспечивает сервис сертификации, который, как предполагается, со-
вместим с S/MIME и целым рядом других приложений. VeriSign выдает сертифика-
ты стандарта Х.509, называемые цифровыми удостоверениями VeriSign (VeriSign
Digital ID). На начато 1998 года цифровые удостоверения сервера VeriSign использо-
вали свыше 35000 коммерческих Web-узлов и более миллиона цифровых удостове-
рений было выдано пользователям броузеров Netscape и Microsoft.
Информация, содержащаяся в цифровом удостоверении, зависит от типа
цифрового удостоверения и его использования. Как минимум, каждое цифровое
удостоверение содержит следующие элементы:
открытый ключ владельца,
имя владельца или его псевдоним,
дата истечения срока действия цифрового удостоверения,
номер цифрового удостоверения,
имя центра сертификации, выдавшего цифровое удостоверение,
цифровую подпись центра сертификации, выпустившего данное цифровое
удостоверение.
468
ГЛАВА 12 ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Цифровые удостоверения могут также содержать другую предоставленную
пользователем информацию, включая
• почтовый адрес,
адрес электронной почты,
основную регистрационную информацию (название страны, почтовый ин-
декс, возраст и пол).
VeriSign обеспечивает три уровня, или класса, защиты сертификатов откры-
тых ключей, как это показано в табл. 12.8. Пользователь запрашивает сертифи-
кат в интерактивном режиме с Web-узла VeriSign, или другого уполномоченного
/зла. Запросы класса 1 и класса 2 выполняются в интерактивном режиме, и в
юлыпиистве случаев их выполнение занимает всего несколько секунд. Вкратце
юответствующую процедуру можно описать следующим образом.
Для цифрового удостоверения класса 1 VeriSign подтверждает адрес электрон-
ной почты пользователя с помощью посылки PIN-кода и информации цифро-
вого удостоверения по адресу электронной почты, указанному в запросе.
Для цифрового удостоверения класса 2 VeriSign, в дополнение ко всем
проверкам, •ыполняемым для удостоверений класса I, проверяет инфор-
мацию в запросе с помощью ее автоматизированного сравнения с базой
данных потребителей. В конце концов посылается подтверждение по ука-
занному почтовому адресу, предупреждающее пользователя о том, что на
имя этого пользователя было выдано цифровое удостоверение.
Для цифрового удостоверения класса 3 VeriSign требует высшего уровня
надежности идентификации пользователя. Индивидуум должен подтвер-
дить свою личность или предъявив нотариально заверенный документ, или
явившись лично.
Сервис усовершенствованной защиты
На момент создания этой книги уже было предложено три проекта сервисов
совершенствованной защиты для Internet. Кое-что в них может измениться и
югут появиться дополнительные службы. Ниже дано описание трех сервисов, о
оторых идет речь.
Подписанные подтверждения получения. Подписанное подтверждение по-
лучения может быть запрошено в объекте SignedData. Возврат подписан-
ного подтверждения получения обеспечивает отправителю сообщения до-
казательство доставки этого сообщения и позволяет отправителю проде-
монстрировать третьей стороне, что получатель сообщение получил. По
существу, получатель подписывает все оригинальное сообщение вместе с
оригинальной подписью (отправителя) и присоединяет новую подпись,
формируя новое сообщение Б/MIME.
Ярлыки зашиты. Ярлык защиты может включаться в атрибуты аутенти-
фикации объекта SignedData. Ярлык защиты представляет касающуюся
вопросов защиты информацию о чувствительности содержимого, которое
защищается средствами инкапсуляции S/MIME. Такие ярлыки могут при-
2.2. S/MIME
469
Таблица 12.8. Классы сертификатов VeriSign открытых ключей
Процедура подтверждения личности Защита личного ключа издателя сертификатов Защита личного ключа заказчика сертификата и подписчика Задачи запрашивающих сертификаты пользователей
Класс 1 Автоматизированна я проверка одно- значности имени и адреса электронной почты РСА: надежное оборудование; СА: надежное программное обеспечение или надежное обо- рудование П^эГЧаММНО- шифрование (ЗиГЦИ ЕдеННое PIN-кодами) — рекоменду етд я, но необязательно Просмотр Web- страниц и ис- пользование для некоторых видов обмена электрон- ной почтой
Класс 2 То же, что и для класса 1, плюс ав- томатизированная проверка регистра- ционной информа- ции и автоматизи- рованная проверка адреса РСА и СА; на- дежное обору- дование Программное шифрование (защищенное PIN -кодами) — обязательно Индивидуальная, внутри- и меж- корпоративная электронная поч- та, подписка в интерактивном режиме, замена паролей и про- верка аутентич- ности программ- ного обеспечения
Класс 3 То же, что и для класса 1, плюс персональное при- сутствие и предъ- явление удостове- ряющего личность документа, а также автоматизи- рованная проверка, как для класса 2, удостоверяющего документа для инди- видуальных поль- зователей или регистрадионны х документов (файлов) для орга- низаций РСА и СА; на- дежное обору- дование Программное шифрование (защищенное PIN-кодами) — обязательно; аппаратная идентификация — рекомендует- ся, но необяза- тельна Электронные банковские опе- рации, доступ к корпоративным базам данных, интерактивные службы для заре- гистрированных членов, серверы электронной коммерции, про- верка аутентич- ности программ- ного обеспечения; аутентификация LRAA и особо защищаемых серверов
С A Certification Authority (центр сертификации)
РСА VeriSign Public Primary Certification Authority (первичный центр сертификации
VeriSign)
PIN Personal Identification Number (личный идентификационный номер)
LRAA Local Registration Authority Administrator (администратор локального отделения
регистрации)
470
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
меняться для управления доступом, указывая, каким пользователям раз-
решен доступ к данному объекту. Можно также указать приоритет
(секретный, конфиденциальный, ограниченный доступ и т.д.) или ролевое
назначение, указывающее на то, кто может увидеть данную информацию
(например, группа лечащих специалистов пациента, агенты финансовых
расчетов за лечение и т.д.).
Защищенные списки рассылки. Когда пользователь посылает сообщение не-
скольким адресатам, требуется выполнить определенный объем работы для
каждого из них, в частности использовать открытый ключ каждого получа-
теля. Пользователь может быть избавлен от этой работы за счет применения
агента списков рассылки (MLA — Mail List Agent) S/MIME. Агент списков
рассылки может взять сообщение и выполнить соответствующие операции
шифрования для каждого из адресатов, а затем передать сообщение дальше.
Автор сообщения должен только отослать сообщение агенту списков рассыл-
ки, шифрованное с использованием открытого ключа М1А.
2.3. Рекомендуемые источи и
информации
Вниманию читателей предлагаются следующие Web-узлы.
Информационная страница PGP. Посвященная PGP страница Web-узла
фирмы Network Associates, ведущего коммерческого поставщика PGP.
Посвященная распространению PGP страница МГГ (Массачусетсского тех-
нологического института). Ведущий распространитель свободно доступных
версий PGP. Содержит список часто задаваемых вопросов с ответами, дру-
гую полезную информацию и ссылки на другие посвященные PGP узлы.
Хартия S/M1ME. Самые последние документы RFC и проекты стандартов
S/MIME для Internet.
Централ S/MIME. Посвященный S/MIME узел RSA. Inc. Содержит список
часто задаваемых вопросов с ответами и другую полезную информацию.
1. В PGP используется режим шифрованной обратной связи (CFB) алгоритма
CAST-128, тогда как большинство других приложений шифрования
(отличных от приложений шифрования ключей) действует в режиме сцеп-
ления шифрованных блоков (СВС). Мы имеем
СВС.' С, = ЕК[С,.| Р,J; Р, = C/_j Ф :
CFB. С, = Р, Ф EJC..J ; Р, = С, ® Е^С^].
Оба варианта, кажется, обеспечивают одинаковую защиту. Предложите
объяснение, почему в PGP используется режим CFB.
2. Какое ожидаемое число ключей в схеме PGP будет создано до того, как
будет сгенерирован уже созданный ранее сеансовый ключ?
3. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ 471
3. Чему равна вероятность того, что в схеме PGP у пользователя с откры-
тыми ключами идентификаторы по крайней мере двух ключей совпадут?
4. Первые 16 битов 128-битового профиля сообщения в подписи PGP пересы-
лаются в открытом виде.
• Ь какой мере это компрометирует защиту алгоритма хэширования?
• В какой мере это в действительности выполняет свою функцию — а
именно помогает определить, соответствующий ли ключ RSA использо-
вался для того, чтобы дешифровать профиль сообщения?
5. На рис. 12.4 каждая запись в связке открытых ключей содержит Пиле до-
верия владельцу, значение которого указывает степень доверия, оказывае-
мого этому владельцу открытого ключа. Почему этого недостаточно?
Иными словами, если этот владелец надежен и предполагается, что дан-
ный открытый ключ принадлежит этому владельцу, то почему этого не-
достаточно, чтобы сразу разрешить PGP использовать эту открытый ключ?
G. Рассмотрим преобразование radix-64 как форму шифрования. В этом слу-
чае нет никаких ключей. Но предположим, что противник знает только о
том, что для шифрования английского текста применен некоторый алго-
ритм замены. Насколько эффективным является этот алгоритм с точки
зрения криптоанализа?
7. Фил Циммерман (Phil Zimmermann) выбрал для традиционного шифрова-
ния PGP алгоритмы IDEA, “тройной” DES с тремя ключами и CAST-128.
Укажите причины, по которым каждый из других рассмотренных в дан-
ной книге алгоритмов традиционной схемы шифрования подходит или не
подходит для PGP (DES, “тройной” DES с двумя ключами. Blowfish, RC2
и RC5).
Дополнение 12А. Сжатие данных с помощью
В PGP используется пакет сжатия данных, называемый ZIP, авторами кото-
рого являются Жан-луп Галли (Jean-loup Gailly), Марк Адлер (Mark Adler) и
Ричард Уэлз (Richard Wales). ZIP является свободно распространяемым пакетом,
написанным па языке С, выполняемым как утилита на UNIX и в некоторых
других системах. ZIP функционально равноценен PRZIP, широко доступному
условно бесплатному пакету для систем под управлением Windows, разработан-
ному PKWARE, Inc. Алгоритм ZIP обеспечивает, возможно, наиболее часто ис-
пользуемую технику сжатия данных, позволяя межплатформенный обмен дан-
ными. бесплатные и условно бесплатные версии ZIP доступны для Macintosh и
других систем так же, как для Windows и UNIX.
Алгоритм ZIP и ему подобные появились в результате исследований Джейко-
ба Зива (Jacob Ziv) и Абрахама Лсмпела (Abraham Lempel). В 1977 году они опи-
сали технологию, основанную на использовании буфера скользящего окна, со-
держащего текст, обработка которого выполнялась последней [ZIV77]. Этот ал-
горитм обычно называют LZ77. Версия именно такого алгоритма используется в
схеме сжатия ZIP (PKZ1P, gzip, zipit и т.д.).
472
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Алгоритм LZ77 и его варианты основаны на том факте, что слова и фразы
нутри потока текста (или структуры изображения в случае GIF), вероятнее все
5, повторяются. Когда это имеет место, повторная последовательность может
ыть заменена коротким кодом. Программа сжатия находит такие повторения и
гроит коды прямо по ходу выпотнения, чтобы заменить повторную последова-
;льность. В дальнейшем коды применяются повторно, чтобы обработать новые
эследовательности. Алгоритм должен быть определен таким образом, чтобы
эограмма декомпрессии данных могла построить правильное отображение ко-
>в в последовательности исходных данных
Перед тем как приступить к детальному описанию LZ77, рассмотрим простой
жмер Возьмем бессмысленную фразу
the brown fox jumped over the brown foxy jumping frog,
1ина которой равна 53 октетам (байтам.), или 424 битам. Алгоритм обрабатыва-
этот текст слева направо. Сначала каждый символ отображается в 9-битовый
10ИЧНЫЙ код, складывающийся из двоичной единицы, далее следует 8-битовый
ЗСП-код символа. В ходе дальнейшего выполнения алгоритм ищет повторяю-
иеся последовательности. Когда встречается повторение, алгоритм продолжает
анированпе до конца повторяющейся последовательности. Другими словами,
ждый раз, когда встречается повторение, алгоритм включает в повторяющую-
последовательность столько символов, сколько максимально возможно. Здесь
рвой найденной последовательностью является the brown fox. Эта последо-
тельность заменяется указателем на предыдущую последовательность и дан-
(ми о длине последовательности. В данном случае встретившаяся выше после
вательность the brown fox находится на 26 символов раньше и длина этой
следовательности равна 13 символам. Для данного примера выберем два вари-
га кодирования: 8-битовый указатель и 4-битовое значение длины или 12-
говый указатель и 6-битовое значение длины; 2-битовый заголовок указывает,
кой вариант был выбран: значение 00 обозначает первый вариант, а 01 — ВТО-
S. Таким образом, второе вхождение последовательности the brown fox ко-
эуется в виде <00bx26dxl3d>, или 00 00011010 1101.
Оставшаяся часть сжатого сообщения складывается из буквы у, исследова-
нности <00hx27dx5d>, которая заменяет последовательность из символа
)бела и следующих за ним символов jump, а также последовательности сим-
гов rng frog.
Соответствующее отображение сжатия представлено на рис. 12.9. Сжатое со-
цение состоит из 35 9-битовых символов и двух кодов, в сумме это 35x9 +
14 = 343 бита. В сравнении с 424 битами несжатого сообщения это дает ко
фщиент сжатия, равный 1,24.
горитм сжатия
Алгоритм сжатия для схемы LZ77 и его варианты используют два буфера,
‘льаящмй буфер предыстории содержит N символов источника, обработанных
ледними, а буфер упреждающей выборки содержит следующие L символов,
'оваи ьа примере из [WE1S93).
ЮЛНЕНИЕ 12А. СЖАТИЕ ДАННЫХ С ПОМОЩЬЮ ZIP
473
frog
26-
4
the brown fox -jumped over
у ob27d5ding frog
Puc. 12.9. Пример использования схемы LZ77
которые должны обрабатываться следующими (рис. 12.10(a)). Алгоритм пытает-
ся найти два или большее число символов из буфера упреждающей выборки в
строке из скользящего буфера предыстории. Если совпадений не найдено, пер
вый символ из буфера упреждающей выборки выводится как 9-битовый символ,
сам этот символ перемещается в скользящее окно, а самый старый символ из
этого окна выталкивается. Если совпадение обнаружено, алгоритм продолжает
просматривать символы в поиске совпадающей последовательности наибольшей
длины Затем совпадающая строка выводится в виде трех значений (индикатор,
указатель, длина). Для строки из К символов самые, старые К символов из
скользящего окна выталкиваются, а К символов кодированной строки сдвигают-
ся в это окно.
На рис. 12.10(6) показано действие этой схемы на последовательности из на-
шего примера, На иллюстрации изображено 39-символьное скользящее окно и
13-символьный буфер упреждающей выборки. В верхней части иллюстрации
уже обработано 40 первых символов и последние 39 из них в несжатом виде на-
ходятся я скользящем окне. Остальная часть данных источника находится в бу-
фере упреждающей выборки. Алгоритм сжатия определяет следующее повторе-
ние символов, перемещает пять символов из буфера упреждающей выборки в
скользящее окно и выводит код соответствующей строки. Состояние буфера по-
сле этих действий показано в нижней части иллюстрапии.
Схема LZ77 является эффективной и адаптирующейся к природе вводимых
данных, и, тем не менее, она имеет определенные недостатки. Алгоритм исполь-
зует ограниченное окно для поиска совпадений в предыдущем тексте. Для очень
длинных блоков текста в сравнении с размерами окна много потенциальных
совпадений будет проигнорировано. Размер окна может быть увеличен, но за это
придется платить следующим: (1) увеличением времени выполнения алгоритма
ввиду того, что необходимо выполнять сравнения строк из буфера упреждающей
выборки с каждой позицией в скользящем окне и (2) увеличением длины поля
<указатель> ввиду необходимости указывать более длинные переходы.
Алгоритм декомпрессии
Распаковка сжатого по схеме LZ77 текста выполняется просто. Алгоритм де-
компрессии должен сохранять последние N символов восстановленного вывода.
Когда встречается закодированная строка, алгоритм декомпрессии использует
значения полей <указатель> и <длина>, чтобы заменить код реальной строкой
текста
474
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Сдвиг
Источник
яюлнение 12ь, Преобразование в формат radix-64
Сак PGP, так и S/MIME применяется техника кодирования, называемая пре
азованием radix-64. Эта техника позволяет отобразить вводимые произволь-
двоичные данные в виде последовательности печатаемых символов. Данная
ма кодирования имеет следующие характеристики.
L Областью значений функции является набор символов, которые отличают-
ся универсальной формой представления, а не специальная двоичная ко-
дировка для этого набора символов. Таким образом, эти символы могут
быть закодированы в любую форму, требуемую конкретной системой. На-
пример, символ “Е” представляется в системе на базе ASCII как шестна-
дцатеричное 45, а в системе на базе EBCDIC — как шестнадцатеричное С5.
. Этот набор символов складывается из 65 печатаемых символов, один из
которых выступает в качестве заполнителя. С доступными при этом 2‘ - 64
символами каждый символ может использоваться для представления 6 би-
тов данных ввода
. Никакие управляющие символы во множество не включаются. Таким об-
разом, кодированное в формат radix-64 сообщение может беспрепятственно
пройти системы почтовой обработки, просматривающие поток данных в
поиске управляющих символов.
Символ дефиса не используется. Этот символ имеет особое значение в
формате RFC 822, и поэтому его следует избегать.
табл. 12.9 показано отображение 6-битовых вводных значений в символы.
>р символов складываются из буквенно-пифровых символов, а также симво-
*+” и “/”. Символ ” служит в качестве символа заполнителя.
ХТНЕНИЕ 12Б. ПРЕОБРАЗОВАНИЕ В ФОРМАТ RaDIX-64
475
Таблица 12.9. Кодирование Radix-64
Ь-битовое значение Символ кодиро- вания 6- битовое значение Символ кодиро- вания 6-битовое значение Симьол кодиро- вания 6-битовое значение Символ кодиро- вания
0 А 16 Q 32 g 4а W
1 В 17 R 33 h 49 X
2 С 18 S 34 Я 50 У
3 D 19 Т 35 J 51 Z
4 Е 20 и 36 к 52 0
5 F 21 V 37 1 53 1
6 G 22 W 38 m 54 2
7 Н 23 X 39 п 55 3
8 I 24 У 40 О 56 4
9 J 25 Z 41 р 57 5
10 К 26 а 42 q 58 6
11 L 27 ь 43 Г 59 7
12 М 28 с 44 S 60 8
13 N 29 d 45 t 61 9
14 О 30 е 46 U 62 +
15 Р 31 f 47 V 63 /
• (запол- нитель) =
На рис 12.11 показана простая схема отображения. Двоичный ввод обраба-
тывается блоками по 3 октета, или 24 бита. Каждый набор из б битов в 24-
битовом блоке отображается в символ. На рисунке символы представлены зако-
дированными в виде 8-битовых величин. В таком типичном случае каждые 24
бита ввода расширяются до 32 битов вывода.
Для примера рассмотрим 24-битовую текстовую последовательность 00100011
01011100 10010001, которая может быть выражена в шестнадцатеричном фор-
мате как 235С91. Разобьем эту последовательность на блоки по 6 битов.
001000 110101 110010 010001
Выделенными 6-битовыми значениями в десятичном виде являются 8, 53, 50,
17 С помощью табл. 12 9 находим кодировку этих значений в формате radix-64-
ПуК. Если эти символы сохранить в 8-битовом формате ASCII с разрядом четно-
сти, равным нулю, получим
01001001 00110001 01111001 01010010
В шестнадцатеричном представлении это 49317952. Подводя итог, получаем
следующее.
476
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
-------- -----------------------------------------------
Входные данные
Двоичное представление OOlOuOll 01011100 10010001
Шестнадцатеричное представление 235С91
Входные данные в формате Radix 64
Символьное представление IlvR
Коды ASCII (8 битов, нулевой бит четности) 01001001 00110001 01111001 01010010
Шестнадцатеричное представление 49317952
Рис. 1211. Кодирование двоичных данных в виде печатаемых символов в
формате radix-64
Дополнение 12В. Генерирование случайных чисел PGP
В PGP используется сложная и мощная схема генерирования случайных и
гсевдослучайных чисел. PGP генерирует случайные числа на основе содержимо-
о и на основе интервалов между нажатиями клавиш пользователем, а также
'севдослучайные числа с помощью алгоритма, в основу которого положен алго-
итм из документа ANSI Х12.17. PGP использует эти числа в следующих целях.
Истинно случайные числа
• применяются при создании пар ключей RSA,
• обеспечивают начальные значения для генератора псевдослучайных чисел,
• обеспечивают дополнительный ввод в процессе генерирования псевдо-
случайных чисел.
• Псевдослучайные номера
• применяются при создании сеансовых ключей,
• служат для создания векторов инициализации (IV), используемых с се-
ансовыми ключами при шифровании в режиме CFB.
ЭПОЛНЕНИЕ 12В. ГЕНЕРИРОВАНИЕ СЛУЧАЙНЫХ ЧИСЕЛ PGP
477
Истинно случайные числа
PGP поддерживает 256-байтовый буфер случайных битов. Все время PGP ожи-
дает нажатия клавиш пользователем, отразив в 32-битовом формате момент, с ко-
торого началось ожидание. Когда нажимается клавиша, записывается время нажа-
тия клавиши и 8-битовое значение нажатой клавиши. Информация о времени на-
жатия и клавише применяется при генерировании ключа, который, в свою
очередь, служит для шифрования текущего значения из буфера случайных битов.
Псевдослучайные числа
При генерировании псевдослучайных чисел используется 24-байтовое началь-
ное значение и создается 16-байтовый сеансовый ключ, 8-байтовый вектор ини
циализации и новое начальное значение, которые предполагается использовать
для получения следующего псевдослучайного числа. Алгоритм строится на осно-
ве алгоритме Х12.17, описанного в главе 5 (см. рис. 5.14), но использует для
шифрования CAST-128 вместо “тройного” DES. Алгоритм задействует следую-
щие структуры данных.
1. Ввод.
• randseed.bin (24 октета). Если этот файл пуст, он заполняется 24 ис-
тинно случайными октетами.
• Сообщение. Сеансовый ключ и IV, которые используются для шифрова-
ния сообщения, являются функциями этого сообщения. Это вносит до-
полнительную случайность для ключа и IV, но если противник уже
знает содержимое сообщения в виде открытого текста, ему нет никакой
необходимости выяснять значение сеансового ключа.
2. Вывод.
• К (24 октета). Первые 16 пктетов, KJO..15], содержат сеансовый
ключ, а последние восемь октетов, К[16 .. 23], включают значение IV.
• randseed.bin (24 октета). В этом файле размещается новое начальное
значение для генератора псевдослучайных чисел.
3. Внутренние структуры данных.
• dtbuf (8 октетов). Первые четыре октета, dtbuf [О'.. 3], инициализиру-
ются с помощью текущего значения даты-времени. Этот буфер эквива
лентен переменной DT из алгоритма XI 2.17.
• rkey (16 октетов). Ключ шифрования CAST-128, действующий на всех
стадиях алгоритма.
• rseed (8 октетов). Эквивалент переменной V, из алгоритма Х12.17.
• rbuf (8 октетов). Псевдослучайное число, генерируемое алгоритмом, Это
буфер эквивалентен переменной R, из алгоритма Х12.17.
• К' (24 октета). Временный буфер для нового значения randseed.bin.
Алгоритм состоит из девяти шагов Первый и последний шаги призваны
уменьшить долю файла randseed.bin, которая может быть перехвачена против-
ником. Остальные шаги, по существу, эквивалентны трем итерациям алгоритма
Х12.17 и иллюстрируются на рис.12.12 (сравните с рис. 5.14 в главе 5).
478
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
Рис. 12.12. Генерирование сеансового ключа и вектора инициализации PGP (шаги
G2-G8 алгоритма)
Следующее пошаговое описание алгоритма соответствует описанию, предло-
женному Стефаном Ньюхаусом (Stephan Neuhaus) в [NEUH93],
1. [Дооперационнал обработка начального значения.]
• randseed bin копируется в К[0. 23].
• Хэш-код сообщения (он уже имеется, если сообщение подписано, иначе
используется 4К первых октетов сообщения), служит в качестве ключа,
вводится нулевое значение IV, и К шифруется в режиме CFB; результат
сохраняется в К.
2. [Установка начального значения.]
• Для dtbuf [0..3] устанавливается значение, равное 32-битовому значе-
нию текущего локального времени. Значение dtbuf[4.. 7] обнуляется.
Копируется гкеу <- К [О.. 15]. Копируется rseed <- К [16.. 23].
• 64-битовое значение dtbuf шифруется с использованием 128-битового
значения гкеу в режиме ЕСВ. результат сохраняется й dtbuf.
3. [Подготовка к генерированию случайных октетов.] Устанавливается
rcount <— 0 и к <— 23 . Циклическое повторение шагов G4-G7 будет вы-
полнено 24 раза (для к = 23 ... 0), и при каждом выполнении будет полу-
чен случайный октет, помещаемый в К. Переменная rcount представляет
число еще неиспользованных случайных октетов в rbuf. Ее значение три-
жды уменьшается от 8 до 0. чтобы в результате было получено 24 октета.
4. [Доступны ли еще байты?] Если rcount = 0, следует перейти к шагу G5, в
противном случае — к шагу G7. Шаги G5 и G6 представляют однократное
выполнение алгоритма XI2.17, порождающего новый набор из восьми
случайных октетов.
5. [Генерирование новых случайных октетов.]
* rseed <— rseed Ф dtbuf .
• rbuf <— Erkey[rseed] в режиме ЕСВ.
6. [Генерирование следующего начального значения.]
• rseed t- rseed Ф dtbuf .
ЭПОЛНЕНИЕ I2B ГЕНЕРИРОВАНИЕ СЛУЧАЙНЫХ ЧИСЕЛ PGP
479
• rbuf <— Erkoy[rseed] в режиме ECB.
• Устанавливается rcount <— 8.
7. (Перенос по одному байту из rbuf в К.]
• Устанавливается rcount t— rcount -1.
• Генерируется истинно случайный байт b и устанавливается
К[к] rbuf [rcount] G b.
8. [Готово?] Если k = 0, следует перейти к шагу G9, в противном случае ус-
тановить к <- к. - 1 и перейти ь шагу G4
9. [Послеоперационная обработка начального значения и возвращение ре-
зультата.]
• Генерируется еще 24 байта методом, представленным шагами G4-G7,
но связывания с помощью операции XOR со случайным значением в G7
не производится. Результат помещается в буфер К'.
• К' шифруется в режиме CFB с ключом К[0. . 15] и вектором инициа-
лизации К[16 .. 23]; результат сохраняется в randseed.bin.
• Возвращается К.
Определить сеансовый ключ из 24 новых октетов, генерируемых на шаге G9a,
должно быть невозможно. Однако чтобы гарантировать, что сохраненный файл
randseed.bin не даст информации о последнем сеансовом ключе, шифруется 24
новых ' ктета и результат сохраняется как новое начальное значение для генера-
тора псевдослучайных чисел.
Этот тщательно разработанный алгоритм должен порождать криптографиче-
ски надежные псевдослучайные числа. Анализ алгоритма показывает, что в нем
нет внутренних зависимостей между битами сеансового ключа и что последова
тельные сеансовые ключи тоже являются независимыми [NEUH93].
480
ГЛАВА 12. ЗАЩИТА ЭЛЕКТРОННОЙ ПОЧТЫ
ГЛАВА
Защита на
уровне IP
Если секретны^ сведения оказываются раскрытыми кем то
раньше времени, то его следует, убить, равно как и того, кому
он эти секретные сведения открыл.
Супь Цзьь Поепное искусство (The Art of War)
оибшество Internet разработало механизмы защиты
для целого ряда областей применения, включая
электронную почту (S/MIME, PGP), клиент-
серверные приложения (Kerberos), доступ к ресурсам Web
(Secure Sockets Layer — протокол защищенных сокетов) и
др. Однако имеются и некоторые касающиеся защиты мо-
менты, не укладывающиеся в рамки протокола определен-
ного уровня. Например, предприятие может защищать свою
сеть TCP/IP с помощью запрета доступа к ненадежным уз-
лам, шифруя пакеты данных, покидающие рамки сети
предприятия, и требуя аутентификации пакетов, входящих
в эту сеть извне. С помощью реализации защиты на уровне
IP (Internet Protocol — протокол межсетевого взаимодейст-
вия) организация может обеспечить себе спокойную работу
в сети не только для приложений, которые имеют свои
средства защиты, но и для приложений, не обладающих
такими средствами.
Защита на уровне IP охватывает три сферы безопасности:
аутентификацию, конфиденциальность и управление ключа-
ми. Механизм аутентификации должен гарантировать, что
полученный пакет был на самом деле отправлен стороной,
указанной как источник в заголовке пакета. Кроме того, этот
механизм должен гарантировать, что пакет не был изменен в
процессе его доставки. Средства конфиденциальности должны обеспечивать воз-
можность взаимодействующим сторонам шифровать сообщения, чтобы исключить
прочтение передаваемых сообщений третьей стороной. Средства управления клю-
чами должны гарантировать защищенный обмен ключами.
Мы начинаем эту главу с обсуждения защищенного протокола IP (IPSec) и его
архитектуры. Затем мы рассмотрим каждую из трех его функций защиты в дета-
лях.1 В дополнении 13А описаны другие протоколы межсетевого взаимодействия.
Т?Т^)5^|?яБЖможностей защиты на уровне IPЦ
В 1994 году Совет по архитектуре Internet (Internet Architecture Board — TAB)
опубликовал отчет, названный ’‘Зашита в архитектуре Internet” (документ RFC
1636, “Security in the Internet Architecture”). Отчет отобразил общее мнение о том,
чти Internet нуждается в большей и лучшей защите, и определил области примене-
ния ключей в механизмах защиты. Среди прочего указывалось iia необходимость
защиты сетевой инфраструктуры от несанкционированною мониторинга и управле-
ния потоками данных, а также на необходимость защиты сквозного обмена данными
между пользователями с помощью средств аутентификации и шифрования.
Такие требования вполне оправданны. Как подтверждение этому ежегодный
отчет CERT (Computer Emergency Rresponse Team — Группа компьютерной
“скорой помощи”) от 1997 года сообщает более чем о 2500 зарегистрированных
случаях нарушений защиты, повлиявших на работу около 150000 узлов. К наи
более серьезным типам атак относились обман IP, при котором нарушители соз-
дают пакеты с ложными IP-адресами и используют приложения, предполагаю-
щие аутентификацию на основе IP, и различные формы перехвата информации и
пакетов с данными', когда нарушители читали передаваемую информацию,
включая информацию аутентификации и содержимое баз данных.
В ответ на эту угрозу JAB включил в протокол IP следующего поколения, на-
званный IPv6, требование средств аутентификации и шифрования как необхо-
димых средств защиты. К счастью, эти средства защиты таковы, что имеется
возможность их применения как с действующим сейчас протоколом IPv4, так и
с протоколом будущего IPv6. Это значит, что поставщики могут начинать пред-
лагать соответствующие возможности уже сейчас, и многие из них действитель-
но обеспечивают уже некоторые возможности IPSec в своих продуктах.
Области применения IPSec’
Протокол IPSec обеспечивает защиту обмена данными в локальных сетях
(LAN), корпоративных и открытых глобальных сетях (WAN) и в Internet. При
меры его применения включают следующее.
‘ria момент выхода данной книги многие спецификации IPSec представляли собой лишь про-
екты стандартов Internet и поэтому могли измениться. Большинство этих документов уже
прошло множество итераций подготовки и поэтому в основном должны быть достаточно ста-
бильными, но могут измениться в некоторых деталях
2
Материал этого раздела опирается на материал документа IP Security Whitepaper, изданного
CyLAN Technologies в 1997 году и доступного по адресу http://wwiv.cylaii.com/'files/whpaper.htni.
482
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
ii Защищенный доступ к филиалу организации через Internet. Компания
может построить защищенную частную виртуальную в рамках сети
Internet или другой открытой глобальной сети. Это позволяет использовать
каналы Internet и тем самым сократить расходы на создание и поддержку
частной сети.
Защищенный удаленный доступ через Internet. Конечный пользователь, в
системе которого предусмотрены протоколы защиты ТР, может с помощью
локального телефонного вызова обратиться к поставщику услуг Internet и
получить защищенный доступ к сети компании. Это сокращает транспорт-
ные расходы служащих и надомных работников.
Внутрисетев^е и межсетевое взаимодействие с партнерами. Средства IPSec
могут служить для того, чтобы обеспечить защищенную связь с другими
организациями, гарантируя аутентификацию и конфиденциальность и
обеспечивая механизм обмена ключами.
Усиление защиты электронных коммерческих операций. Даже если ка-
кие-то приложения Web и электронной коммерции имеют встроенные про-
токолы защиты данных, использование IPSec усиливает эту защиту.
Главным свойством IPSec, которое позволяет этому протоколу поддерживать
iMbie разнообразные приложения, является возможность шифрования и/или
'тентификации всего потока обмена данными на уровне IP. Таким образам, за-
ита может быть обеспечена любому распределенному приложению, включая
(аленную регистрацию, клиент-серверные приложения, электронную почту, пе-
дачу файлов, доступ в Web и т.д.
На рис. 13.1 показан типичный сценарий использования IPSec Некоторая ор-
низация поддерживает ряд локальных сетей, находящихся в разных местах. В
.мках любой локальной сети поток обмена данными IP не защищается. Для
мена данными через некоторую корпоративную или открытую внешнюю гло-
льную сеть используются протоколы IPSec. Эти протоколы действуют в уст-
йствах по периметру сети, например в маршрутизаторах или брандмауэрах,
рез которые локальные сети соединяются с внешним миром. Такое сетевое
тройство IPSec обычно шифрует и сжимает весь поток данных, отправляемых
глобальную сеть, и дешифрует и разворачивает данные получаемые из внеш-
й сети. Все выполняемые в этом случае операции не заметны для рабочих
анций и серверов локальной сети. Защищенный обмен данными возможен и с
дивидуальными пользователями, связывающимися с глобальной сетью по те-
фону. Чтобы обеспечить защиту, рабочие станции таких пользователей также
лжны применять протоколы IPSec.
ре имущест на IPSec
В [MARK97] перечислены следующие преимущества IPSec.
• Когда IPSec встроен в брандмауэр или маршрутизатор, это обеспечивает
надежную защиту, которая может быть применена ко всему потоку дан-
ных, пересекающих границу локальной сети. Поток данных внутри ло-
кальной сети компании или рабочей группы не перегружается лишними
операциями, связанными с защитой данных.
1. ОБЗОР ВОЗМОЖНОСТЕЙ ЗАЩИТЫ НА УРОВНЕ IP
483
Рис. 13.1. Сценарий защиты на уровне IP
IPSec в брандмауэре трудно обойти, если весь поток входящих данных
должен использовать 1Р и брандмауэр является единственной точкой входа
из Internet в сеть данной организации.
IPSec размещается ниже транспортного уровня (TCP, UDP) и поэтому ока-
зывается незаметным для приложений. Нет необходимости менять про-
граммное обеспечение в системах пользователя или сервера, когда в
брандмауэре или маршрутизаторе реализуется IPSec. Даже если IPSec реа-
лизуется в конечных системах, на программное обеспечение верхнего
уровня, включая приложения, это не влияет.
JPSec может быть скрыт от конечного пользователя. Нет необходимости
объяснять пользователю механизмы защиты, выдавая ему соответствую-
щие инструкции и требуя их назад, когда данный пользователь покидает
организацию.
Если это необходимо, IPSec может обеспечивать защиту индивидуальным
пользователям. Это может понадобиться для лиц, работающих вне терри-
тории предприятия, или для создания защищенной виртуальной подсети
внутри организации для работы с особо важными приложениями.
Приложения маршрутизации
Кроме поддержки конечных пользователей и защиты систем и сетей пред
приятия, ]PSec может играть важную роль в создании архитектуры маршрути-
зации, необходимой для межсетевого взаимодействия. В [HUIT98] приводится
список следующих примеров использования IPSec. Применение IPSec может га-
рантировать, что
J&4
глава 13. защита на уровне ip
извещение маршрутизатора (когда новый маршрутизатор объявляет о сво-
ем присутствии) приходит от уполномоченного маршрутизатора;
извещение соседнего маршрутизатора (когда маршрутизатор пытается ус-
тановить отношения соседства с маршрутизатором в другом домене мар-
шрутизации) приходит от уполномоченного маршрутизатора;
сообщение переадресации приходит именно от того маршрутизатора, кото-
рому изначально посылался пакет;
* обновление маршрута не является фальсификацией.
Без использования мер зашиты противник может разорвать связь или напра-
вить поток данных в обход по некоторому другому пути. Для определенных
IPSec защищенных связей между маршрутизаторами должны поддерживаться
протоколы маршрутизации типа OSPF (Open Shortest Path First — первоочеред-
ное открытие кратчайших маршрутов).
13.2. Архитектура защиты на уровне
Спецификации IPSec довольно сложны. Чтобы ио.чучить общее представление
зб архитектуре IPSec, мы начнем с обсуждения документов, определяющих IPSec.
Затем мы исследуем сервисы IPSec и определим понятие защищенных связей.
Документы IPSec
В августе 1995 года 1ETF опубликовала пять связанных с защитой сетей про-
ктов стандартов, опредетяющих возможности защиты на уровне межсетевого
13аимодействия:
RFC 1825 — обзор архитектуры защиты,
• RFC 1826 — описание расширения аутентификации пакетов IP,
RFC 1828 — конкретный механизм аутентификации,
RFC 3827 — описание расширения шифрования пакетов IP.
• RFC 1829 — конкретный механизм шифрования.
Поддержка этих возможностей обязательна для IPv6 и допустима, но не обя-
гтельна для IPv4. Е обоих случаях средства защиты реализуются в виде зато-
овков расширений, которые следуют за основным заголовком 1Р. Заголовок
асширения аутентификации называют заголовком АН (Authentication Header —
шоловок аутентификации), а заголовок расширения шифрования — заголовком
SP (Encapsulating Security Payload header — заголовок включающего защиту
слезного груза).
С момента публикации этого набора документов Рабочей группой разработки
ютокола защиты IP (IP Security Protocol Working Group), созданной IETF, бы-
i проведена немалая работа. Все документы разделены на следующие семь
упп (рис. 13.2).
• Архитектура, Содержит описание общих принципов, требования защиты,
определения и механизмы реализации технологии IPSec.
.2 АРХИТЕКТУРА ЗАЩИТЫ НА УРОВНЕ IP
485
Рис, 13.2. Общая структура документа IPSec
Включающий защиту полезный груз (ESP). Описание формата пакета и
общих принципов использования ESP для шифрования пакета и возмож-
ной аутентификации.
Заголовок аутентификации (АН). Описание формата пакета и общих
принципов использования АН для аутентификации пакета,
Алгоритм шифрования. Набор документов, определяющих использование
различных алгоритмов шифрования для ESP.
Алгоритм аутентификации. Набор документов, определяющих использо-
вание различных алгоритмов аутентификации для АН и для опции аутен-
тификации ESP.
Управление ключами. Документы, описывающие схемы отправления ключами.
и Область интерпретации (DOI — Domain of Interperetaion). Содержит зна
чения, необходимые для соответствия одних документов другим. Это, в ча-
стности, идентификаторы проверенных алгоритмов шифрования и иденти-
фикации, а также некоторые параметры, например продолжительности
жизненного цикла ключей
486
ГЛАВА 13, ЗАЩИТА НА УРОВНЕ IP
ервис IPSec
IPSec обеспечивает сервис защиты на уровне IP, позволяя системе выбрать
•обходимые протоколы зашиты, определить алгоритм (алгоритмы) для соответ-
вутощего сервиса (сервисов) и задать значения любых криптографических
ночей, требуемых для запрошенного сервиса. Для защиты используется два
ютокола: протокол аутентификации, указанный заголовком данного протокола
аголовком аутентификации АН), и комбинированный протокол шифрова
1Я/аутентификации, определенный форматом пакета для этого протокола
рогокола ESP). В данном случае обеспечиваются следующие вилы сервиса.
• контроль доступа:
целостность без установления соединений;
• аутентификация источника данных;
отторжение воспроизведенных пакетов (форма целостности последователь-
ностей);
конфиденциальность (шифрование);
ограниченная конфиденциальность транспортного потока.
В табл. 13.1 показано, какие из этих сервисов обеспечиваются протоколами
и ESP. В случае ESP есть два варианта: с использованием и без использова-
I опции аутентификации. Как АН, так и ESP имеют возможности контроля
тупа, основанного на распределении криптографических ключей и управле-
I транспортными потоками, относящимися к этим протоколам защиты.
«лица 13.1. Сервис IPSec АН ESP (только ESP (шифрование и шифрование) аутентификация)
нтроль доступа тоствость без установления соединений гентификация источника данных горжение воспроизведенных пакетов тфиденпиальность >аничейная конфиденциальность нспортного потока Z ✓
✓ V
✓ V
✓ J
✓
✓ •/
дищенные связи
ключевым объектом в механизмах аутентификации и конфиденциальности
IP является защищенная связь (Security Association). Связь представляет со-
одностороннее отношение между отправителем и получателем, применяю-
сервис защиты к транспортному потоку. Если требуется равноправное от-
щие для двустороннего защищенного обмена, необходимы две защищенные
и. Сервис защиты предоставляет возможность для защищенной связи ис-
зовать либо АН, либо ESP, но никак не обе эти возможности одновременно.
АРХИТЕКТУРА ЗАЩИТЫ НА УРОВНЕ 1Р
487
Защищенная связь однозначно определяется следующими тремя параметрами.
Индекс параметров зашиты. Строка битов, присваиваемая данной защи-
щенной связи и имеюшая только локальное значение. Индекс параметров
защиты передается в заголовках АН и ESP, чтобы дать принимающей сис-
теме возможность выбрать защищенную связь, по которой должен обраба-
тываться полученный пакет.
Адрес IP адресата- В настоящее время допускаются только однонаправ-
ленные адреса — это адрес пункта назначения в защищенной связи, кото-
рый может представлять систему конечного пользователя или сетевой объ-
ект типа брандмауэра или маршрутизатора.
Идентификатор протокола защиты. Этот идентификатор указывает, являет-
ся ли данная связь защищенной связью АН или это защищенная связь ESP.
Таким образом, в любом пакете IPJ защищенная связь однозначно идентифи-
цируется адресом пункта назначения в заголовке IPv4 или IPv6 и индексом па-
раметров защиты во вложенном заголовке расширения (АН или ESP).
Параметры защищенной связи
В каждой реализации IPSec имеется номинальная1 таблица защищенных свя-
зей (Security Association Database), которая определяет параметры, связываемые
с каждой защищенной связью. Защищенная связь обычно определяется следую-
щими параметрами.
Счетчик порядковою номера. 32-битовое значение, необходимое для поля
порядкового номера в заголовках АН или ESP, описываемое в разделе 13.3
ниже (требуется во всех реализациях).
Флаг переполнения счетчика порядкового номера. Флаг, указывающий на
переполнение счетчика порядкового номера, что должно порождать отсле-
живаемое событие и предотвращать дальнейшую передачу пакетов с при-
менением этой защищенной связи (требуется во всех реализациях).
Окно защиты от воспроизведения. Служит для того, чтобы определить,
является ли прибывающий пакет АН или пакет ESP воспроизведением,
как описано в разделе 13.3 (требуется во всех реализациях).
Информация АН. Алгоритм аутентификации, ключи, продолжительности
жизни ключей и другие необходимые параметры, используемые в АН
(требуются в реализациях АН).
Информация ESP. Алгоритм шифрования и аутентификации, ключи, зна-
чения инициализации, продолжительности жизни ключей и другие необ-
ходимые параметры, используемые в ESP (требуются в реализациях ESP).
Продолжительность жизни данной защищенной связи. Интервал времени
или значение счетчика байтов, после которого защищенная связь должна
3В этой главе термин пакет IP означает либо дейтаграмму IPv4, либо пакет IPv6.
4
Номинальная в том смысле, что функциональные возможности, обеспечиваемые таблицей за-
щищенных связей, должны иметься в любой реализации IPSec, но способ, которым эти функ
циональные возможности реализуются, выбирается разработчиком -
488
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
быть заменена новой защищенной связью (с новым индексом параметров
защиты) или завершена с указанием того, какое именно из этих действий
должно при этом произойти (требуется во всех реализациях).
• Режим протокола IPSec. Туннельный, транспортный или задаваемый
групповым символом (требуется во всех реализациях). Режимы описаны в
этом разделе ниже
Максимальная единица передачи (MTU — Maximum Transmission Unit)
маршрута. Максимальная единица передачи (максимальный размер паке-
та. который может быть передан без фрагментации) для любого допусти-
мого маршрута и переменные времени существования (требуются во всех
реализациях).
Механизм управления ключами, предназначенный для распределения клю-
чей, связывается с механизмами аутентификации и конфиденциальности только
через индекс параметров защиты. Следовательно, аутентификация и конфиден-
циальность оказываются определенными независимо от конкретного механизма
управления ключами.
Селекторы защищенной связи
IPSec обеспечивает пользователю значительную гибкость в выборе способа
применения сервиса JPSec к трафику IP. Как мы вскоре убедимся, защищенные
связи могут быть объединены различными способами, чтобы пользователь полу-
чил желаемую конфигурацию. Кроме того, IPSec обеспечивает достаточно хоро-
шую степень модульности системы, различая трафик, подлежащий защите
IPSec, и трафик, которому позволяется обойти IPSec, в первом случае сопостав-
ляя соответствующему потоку IP конкретную защищенную связь.
Средствам, которым реализуется ассоциация потока IP с конкретной защи-
щенной связью (или отсутствием таковой в случае, когда потоку Данных позво-
лено обойти IPSec), является номинальная база данных политики защиты
(Security Policy Database). В наиболее простой своей форме база данных полити-
ки защиты представляет собой набор записей, каждая из которых определяет
подмножество потока IP и указывает защищенную связь для этого подмножества
потока. В более сложных средах может определяться несколько записей, потен-
циально соответствующих одной защищенной связи, или множество защищен-
ных связей, ассоциируемых с одним элементом базы данных политики защиты.
Читатели могут обратиться к соответствующим документам IPSec за более под-
зобной информацией.)
Каждая запись базы данных политики защиты состоит из набора значений
юля IP и протоколов более высокого уровня, называемых селекторами. На са-
лом деле эти селекторы предназначены для фильтрации исходящего потока с
делью его отображения в конкретную защищенную связь. Каждый отправляе-
мый пакет IP обрабатывается следующим образом.
1. Сравниваются значения соответственных полей (полей селектора) в пакете
с полями базы данных политики защиты, чтобы найти соответствующую
запись базы данных политики защиты, в которой указано нулевое или
большее число защищенных связей.
3.2 АРХИТЕКТУРА ЗАШИТЫ НА УРОВНЕ IP
48И
2. Определяется защищенная связь и соответствующий индекс параметров
защиты для данного пакета, если таковая требуется.
3. Выполняются необходимые операции IPSec (т.е. обработка АН или ESP).
Запись базы данных политики защиты складывается из следующих селекторов
Адрес IP адресата. Это может быть одиночный адрес IP, нумерованный
список или диапазон адресов, или же группа адресов, задаваемая группо-
вым символом (маской). Последние два варианта предназначены для ука-
зания более одной системы-адресата, использующей совместно с другой
системой одну защищенную связь (например, за брандмауэром).
Адрес IP источника. Это может быть одиночный адрес IP, нумерованный
список или диапазон адресов либо группа адресов, задаваемая групповым
символом (маской). Последние два варианта обеспечивают возможность
указать более одной системы-источника, использующей совместно с другой
системой идну защищенную связь (например, за брандмауэром).
Идентификатор пользователя (UserID). Идентификатор пользователя, полу-
чаемый от операционной системы. Это не поле в заголовке JP или протокола
более высокого уровня, по что значение доступно, когда IPSec выполняется в
той же операционной системе, с которой работает пользователь.
Уровень секретности данных. Предусмотрен для систем, обеспечивающих
защиту информационного потока (например, секретный или несекретный)-
Протокол транспортного уровня. Соответствующая информация берется из
протокола IPv4 и поля Next Header (следующий заголовок) IPv6. Это мо-
жет быть конкретный номер протокола, список номеров протоколов или
диапазон номеров протоколов
Протокол IPSec (АН, или ESP, или АН/ESP). Если присутствует, то взят
из протокола IPv4 или из поля Next Header (следующий заголовок) IPv6.
Порты источника и адресата. Это либо конкретные значения портов TCP
или UDP, нумерованный список портов, либо порт, представленный груп-
повым символом.
Класе IPv6. Соответствующая информация берется из заголовка IPv6. Это
может быть конкретное значение для класса IPv6 или значение, задавае-
мое групповым символом (wildcard).
в Метка потока IPv6. Соответствующая информация берется из заголовка
IPv6 Это может быть конкретное значение для метки потока IPv6 или
значение, задаваемое групповым символом.
и Тип сервиса IPv4 (TOS — Type of Service). Соответствующая информация
берется из заголовка IPv4. Это может быть конкретное значение для типа
сервиса IPv4 или значение, задаваемое групповым символом.
Транспортный и туннельный режимы
Заголовки АН и ESP поддерживают два режима использования: транспортный
и туннельный. Суть этих двух режимов лучше всего понять в контексте описаний
заголовков .ХН и ESP, которые представлены соответственно в разделах 13.3
и 13.4. Здесь же мы ограничимся общим кратким обзором этих режимов
490
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ 1Р
эаноюртный режим
Транспортный режим обеспечивает защиту прежде всего для протоколов
icmero уровня. Это значит, что защита транспортного режима распространяет-
на полезный груз пакета 1Р. Примеры включают сегмент TCP (Transmission
enrol Protocol — протокол управления передачей) или VDP (User Data
otocol — пользовательский протокол данных), или пакет протокола ICMP
iternet Control Message Protocol — протокол управления сообщениями в сети
ternet), которые размещаются непосредственно над IP в стеке главного прото-
ла. Обычно транспортный режим обеспечивает сквозную связь двух главных
лов (например, клиента и сервера или двух рабочих станций). Когда система
пользует заголовки АН или ESP над IPv4, полезным грузом являются данные,
ычно размещаемые сразу после заголовка IP. Для IPv6 полезным грузом яв-
ются данные, обычно следующие после заголовка IP и всех имеющихся заго-
вков расширений IPv6, за возможным исключением заголовка параметров ад-
зата, который тоже может подлежать защите,
ESP в транспортном режиме шифрует и, если нужно, идентифицирует nonea-
tfl груз IP, но не заголовок IP, АН в транспортном режиме идентифицирует
лезный груз ip и некоторые части заголовка 1Р.
ннельный режим
Туннельный режим обеспечивает защиту всего пакета IP. Чтобы выполнить
’ задачу, после добавления к пакету IP полей АН или ESP весь пакет, вместе с
пями защиты, рассматривается как полезный груз некоторого нового
1ешнего” пакета IP с новым внешним заголовком IP. Весь оригинальный, или
/тренний, пакет при этом пересылается через “туннель" от одной точки сети
к другой, и ни один из маршрутизаторов на пути не может проверить внуг-
ший заголовок IP. Ввиду того что оригинальный пакет инкапсулирован в но-
fl, больший пакет может иметь совершенно другие адреса источника и адреса-
что усиливает защиту. Туннельный режим используется тогда, когда один
ж оба конца защищенной связи являются шлюзами защиты, например бранд-
ерами или маршрутизаторами, которые основаны на IPSec. При использова-
я туннельного режима системы в сетях за брандмауэрами могут осуществлять
цищенный обмен данными без применения IPSec. Незащищенные пакеты, ге-
жруемые такими системами, связываются по туннелям, проложенным через
•шние сети с помощью туннельного режима защищенной связи, установленно-
программным обеспечением IPSec в брандмауэре или защищенном маршрути-
оре на границе локальной сети.
Вот пример того, как работает туннельный режим IPSec. Узел А сети генери-
iT пакет IP с адресом узла адресата В в другой сети. Этот пакет направляется
создавшего пакет узла к брандмауэру или защищенному маршрутизатору на
нице сети А. Брандмауэр фильтрует все исходящие пакеты, чтобы выяснить
бходимость их обработки с помощью IPSec. Если направляющийся от А к В
,ет требует применения IPSec, брандмауэр выполняет функции IPSec и инкап-
ирует оригинальный пакет во внешний пакет IP. Адресом IP отправителя
го внешнего пакета IP будет данный брандмауэр, а адресом получателя может
гь брандмауэр, формирующий границу локальной сети В. Теперь пакет на-
?. АРХИТЕКТУРА ЗАЩИТЫ НА УРОВНЕ IP
491
правляется к брандмауэру узла Б, а промежуточные маршрутизаторы будут
иметь дело только с внешним заголовком IP. В брандмауэре узла В внешний за-
головок IP удаляется, а внутренний пакет доставляется узлу В.
ESP в туннельном режиме шифрует и, если нужно, идентифицирует весь
внутренний пакет IP, включая внутренний заголовок IP. АН в туннельном ре-
жиме идентифицирует весь внутренний пакет ТР и отдельные части внешнего за-
головка IP.
В табл. 13 2 представлены функциональные возможности транспортного и
туннельного режимов.
Таблица 13.2. функциональные возможности транспортного и туннельного
режимов
Транспортный режим защи- щенной связи Туннельный режим защищенной связи
АН Идентифицирует полезный груз IP. а также отдельные части за- головка IP и заголовков расши- рений IPv6 Идентифицирует весь внутренний пакет IP (заголовок и полезный груз внутреннего пакета IP), а также от- дельные части внешнего заголовка ТР и внешних заголовков расшире- ний IPv6
ESP Шифрует полезный груз IP и все заголовки расширений IPv6, следующие за заголовком ESP Шифрует внутренний пакет IP
ESP с аутен- тификацией Шифрует полезный груз IP и вес заголовки расширений IPv6, следующие за заголовком ESP. Идентифицирует полезный груз IP, но не заголовок IP Шифрует внутренний пакет IP. Идентифицирует вь'тпевдии пакет JP
13.3. Заголовок аутентификации^£в^Цц^ПЁ?
Заголовок аутентификации (АН) обеспечивает поддержку целостности данных
и аутентификации пакетов IP. Свойство целостности данных гарантирует невоз
можность незаметной модификации содержимого пакета в пути следования.
Функция аутентификации дает возможность конечной системе или сетевому уст-
ройству идентифицировать пользователя или приложение и соответственно от-
фильтровать трафик, а также защититься от очень распространенных сегодня в
Internet атак с подменой сетевых адресов. Заголовок АН также защищает от
атак воспроизведения сообщений, речь о которых пойдет ниже.
Аутентификация опирается на использование кода аутентичности сообщения
(МАС — Message Authentication Code), как объяснялось в главе 8, поэтому две
стороны должны для этого использовать общий секретный ключ.
Заголовок аутентификации состоит из следующих полей (рис 13.3).
След)тощий заголовок (8 битов). Идентифицирует тип заголовка, следую-
щего непосредственно за данным заголовком.
492
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
Бит О
16
31
8
Следующий I Длина полезного
заготовок | груза
ЗАРЕЗЕРВИРОВАНО
Индекс параметром юпциы
Порядковый номер
Данные аутентификации (переменной длины;
I.
Рис. 13.3. Заголовок аутентификации IPSec
Длина полезного груза (8 битов). Длина заголовка аутентификации в 32-
битовых словах, уменьшенная на 2. Например, установленная по умолча-
нию длина поля данных аутентификации равна 96 битам, или трем 32-
битовым словам, Вместе с заголовком фиксированной длины в три слова
общая длина всего заголовка оказывается равной шести словам, поэтому в
поле длины полезного груза в этом случае указывается значение 4.
Зарезервировано (18 бигов). Для будущего использования.
Индекс параметров защиты (32 бита). Идентифицирует защищенную связь.
Порядковый номер (32 бита). Значение счетчика, которое будет описано ниже.
Данные аутентификации (переменной длины), Поле переменной длины
(которая должна представлять собой целое число 32-битовых слов), содер-
жащее код ICV (Integrity Check Value — код контроля целостности) или
МАС для данного пакета, что будет '-писано ниже.
Сервис защиты от воспроизведения
Атаки воспроизведения сообщений заключаются в том, что противник может
получить экземпляр удостоверенного пакета и позже предъявить его предпола-
гаемому адресату. Повторное получение одинаковых удостоверенных пакетов IP
может каким-то образом нарушить сервис или иметь какие-то другие нежела-
тельные последствия, Поле порядкового номера предлагается специальна для то-
го, чтобы воспрепятствовать возможности такой формы атаки. Сначала мы обсу-
дим вопрос генерирования порядкового номера отправителем, а затем выясним,
как этот помер обрабатывается получателем.
Когда устанавливается новая защищенная связь, отправитель инициализиру-
ет счетчик порядкового номера, приняв соответствующее значение равным 0.
Каждый раз, когда по этой защищенной связи посылается пакет, отправитель
увеличивает значение данного счетчика и помещает это значение в поле поряд-
кового номера. Таким образом, первым используемым значением будет 1. Если
активна функция защиты от воспроизведения (что предполагается по умолча-
13.3 ЗАГОЛОВОК АУТЕНТИФИКАЦИИ
493
нию), отправитель не должен позволить порядковому номеру превзойти значение
2й-I и уменьшиться снова к нулю. Иначе получится несколько действитель-
ных пакетов с одним и тем же порядковым номером. Если предел 2“-1 оказы-
вается достигнутым, отправитель должен завершить данную защищенную связь
и начать переговоры о создании новой защищенной связи с новым ключом.
Ввиду того что 1Р представляет обмен без установления соединений, а значит,
является не слишком надежным сервисом, протокол не гарантирует, что пакеты
будут доставлены в требуемом порядке и даже не гарантирует, что доставлены
будут все пакеты. Поэтому документ аутентификации IPSec требует, чтобы по-
лучатель имел для этого окно размера VK; по умолчанию W = 04. Правая грани-
ца окна представляет наивысший порядковый номер N до сих пор полученных
действительных пакетов. Для любого пакета с порядковым номером из диапазо-
на от ЛЧГ + 1 до N, который принят корректно (т.е. должным образом аутенти-
фицирован), помечается соответствующий сегмент окна (рис. 13.4). Когда пакет
принимается, его обработка выполняется следующим образом.
1. Если полученный пакет попадает в рамки окна и является новым, прове-
ряется значение МАС. Если аутентификация пакета завершается успешно,
помечается соответствующий сегмент в окне.
2. Если полученный пакет попадает в область правее окна и является новым,
проверяется значение МАС. Если аутентификация пакета завершается ус-
пешно, окно раздвигается так, чтобы новый порядковый номер оказался
правой границей >кна, а в окне помечается соответствующий сегмент
3. Если полученный пакет оказывается слева от окна или аутентификация не
удается, пакет будет отвергнут. Такое событие должно фиксироваться.
Код контроля целостности
Поле данных аутентификации содержит значение, называемое кодом ICV
(кодом контроля целостности). Код ICV представляет собой код аутентичности
сообщения или усеченную версию кода, порожденного алгоритмом МАС. Имею
Увеличить окно, если получен
действительный пакет
с номером, оказывающимся
правее
пакет получен пакет еще не получен
Рис. 13.4. Механизм зашиты от воспроизведения
494
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ 1Р
щиеся сегодня спецификации требуют, чтобы любая реализация поддерживала
следующие схемы:
НМАС MD5 96,
HMAC-SHA-1-96.
Любая из этих схем предполагает использование алгоритма НМАС, в первом
случае с использованием хэш-кода MD5, а во втором — хэш-кода SHA-1 (все эти
алгоритмы описаны в главе 9). В обеих ситуациях вычисляется полное значение
НМАС, но затем оно обрезается до первых 96 битов, что является длиной по
умолчанию для поля данных аутентификации.
Для вычисления значения МАС берется следующая информация.
Поля IP, которые либо не изменяются в пути следования (неизменяемые
поля), либо имеют прогнозируемые значения в пункте назначения защи-
щенной связи АН. Поля, которые могут измениться в пути следования и
значения которых в конечной точке нельзя предсказать, обнуляются для
вычислений и в пункте отправления, и в пункте назначения.
Заголовок АН, отличный от поля данных аутентификации. Поле данных
аутентификации обнуляется для вычислений и в пункте отправления, и в
пункте назначения
Все данные протокола верхнего уровня, которые предполагаются неизмен-
ными в пути следования (например, сегмент TCP или внутренний пакет IP
в туннельном режиме).
Для IPv4 примерами неизменяемых полей являются поля длины заголовка
Internet и адреса источника. Примером изменяемого, но прогнозируемого по
значению поля служит поле адреса получателя (с приближенной или строгой
трассировкой от источника сообщения). Примерами изменяемых полей, которые
обнуляются перед вычислением ICV, являются поля времени существования и
контрольной суммы заголовка. Заметим, что поля адреса как источника, так и
адресата защищаются, так что их фальсификация исключена.
Для IPv6 примерами соответствующих типов полей в базовом заголовке яв-
ляются поля версии (неизменяемое), адреса получателя (изменяемое, но прогно-
зируемое) и метки потока (изменяемое и обнуляемое для вычислений).
Транспортный и туннельный режимы
На рис. 13 5 показано два варианта использования сервиса аутентификации
IPSec. В первом случае аутентификация выполняется непосредственно между
сервером и рабочими станциями клиентов, причем рабочие станции могут раз-
мещаться в той же сети, что и сервер, или во внешней сети. Если рабочие стан-
ции и сервер используют общие защищенные секретные ключи, процесс аутен-
тификации оказывается защищенным. В этом случае применяется транспортный
режим защищенной связи, Во втором случае удаленные рабочие станции иден-
тифицируются корпоративным брандмауэром либо для доступа ко всей внутрен-
ней сети, либо просто потому, что затребованный сервер не поддерживает функ-
ции аутентификации. В такой ситуации используется туннельный режим защи-
щенной связи.
13.3. ЗАГОЛОВОК АУТЕНТИФИКАЦИИ
495
Сервер
Рис 13.3, Аутентификация между конечными пунктами и аутентификация
между конечным и промежуточным пунктами
В этом подразделе мы рассмотрим область применения аутентификации,
обеспечиваемой с помощью протокола АН, и размещение заголовка аутентифи-
кации в каждом из двух режимов. При этом случаи IPv4 и IPv6 несколько раз-
личаются. На рис. 13.6(a) показаны типичные пакеты IPv4 и IPv6. В этом слу-
чае полезным грузом 1Р является сегмент TCP. но это могли быть данные любого
другого протокола, использующего 1Р, например протокола UDP или ICMP.
Для транспортного режима АН с применением IPv4 данные АН размещаются
непосредственно после оригинального заголовка 1Р и перед полезным грузом 1Р
(например, сегментом TCP), как показано в верхней части рис. 13.6(6). Аутенти-
фикации подлежит весь пакет, за исключением изменяемых полей в заголовке
IPv4, которые обнуляются для вычисления значения МАС.
В контексте IPv6 данные АН рассматриваются как полезный груз сквозной
передачи; т.е. проверка и обработка этих данных промежуточными маршрутиза-
торами не предполагается. Поэтому данные АН размещаются после базового за-
головка IPv6 и заголовков расширений транзита, маршрутизации и фрагмента-
ции. Заголовок расширения параметров адресации может'размещаться до или
после заголовка АН — в зависимости от требований семантики. Опять же, ау-
тентификация предполагается для всего пакета, за исключением изменяемых
полей, которые обнуляются для вычисления значения МАС.
Для туннельного режима АН удостоверяется весь оригинальный пакет IP. а
заголовок АН вставляется между оригинальным заголовком IP и новым внеш-
ним заголовком IP (рис. 13.6(b)). Внутренний заголовок IP несет адреса ориги-
нальных источника и адресата, в то время как внешний заголовок IP может со-
держать совершенно другие адреса IP (например, адреса брандмауэров или дру-
гих шлюзов защиты).
В туннельном режиме весь внутренний пакет IP, включая весь внутренний
заголовок IP, защищается средствами АН. Внешний заголовок IP (а в случае
IPv6 и внешние заголовки расширений IP) защищается с исключением изменяе-
мых и непрогнозируемых по значению полей.
496
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ ТР
оригинальный заголовок IP TCP Данные
IPv6
заголовки расширений
(если имеются)
Данные
(а) До применения АН
Удостоверяется за исключением
изменяемых полей
IPv4
Удостоверяется за исключением
изменяемых полей
оригинальный заголовок IP транзит» адресация, маршрутизация» фрагментация АН адресация TCP Данные
(б) Транспортный режим
HG
IPv4
Удостоверяется за исключением изменяемых полей
в новом заголовке IP
IPv6
Удостоверяется за исключением изменяемых полей
в новом заголовке YP и его заголовках расширений
(в) Туннельный режим
Рис. 13.6. Область применения аутентификации АН
3.4. Включающий защиту полезный груз^ЧВНВ
Протокол ESP (Encapsulating Security Payload — включающий защиту полез-
ый груз) обеспечивает сервис конфиденциальности, в том числе защиту содер-
имого сообщения и ограниченную конфиденциальность для транспортного по-
>ка. В качестве дополнительной возможности ESP может обеспечить тот же
рейс аутентификации, что и АН.
J.4. ВКЛЮЧАЮЩИЙ ЗАЩИТУ ПОЛЕЗНЫЙ ГРУЗ
497
Формат ESP
На рис. 13.7 показан формат пакета ESP. Он содержит следующие поля.
в Иядекс параметров защиты (32 бита). Идентифицирует защищенную связь.
в Порядковый номер (32 бита). Значение счетчика, обеспечивающее функ-
цию защиты от воспроизведения, как и в случае для АН.
Полезный груз (переменной длины). Это сегмент транспортного уровня (в
транспортном режиме) или пакет IP (в туннельном режиме), который за-
щищается шифрованием.
в Заполнитель (0-255 байтов). Назначение этого поля приведено ниже.
в Длина заполнителя (8 битов). Указывает число байтов заполнителя, непо-
средственно предшествующего данному полю.
в Следующий заголовок (8 битов). Идентифицирует тип данных, содержа-
щихся в поле данных полезного груза, с помощью идентификации первого
заголовка этого полезного груза (например, заголовка расширения IPv6
или протокола верхнего уровня, такого как TCP).
Данные аутентификации (переменной длины). Поте переменной длины
(которая должна представлять собой целое число 32-битовых слов), содер-
жащее код ICV (Integrity Check Value — код контроля целостности), вы-
числяемый для всего пакета ESP без поля данных аутентификации.
Шифрование и алгоритмы аутентификации
Сервис ESP предполагает шифрование полей полезного груза, заполнителя,
длины заполнителя и следующего заголовка. Если для алгоритма, используемого
при шифровании полезного груза, требуется криптографическая синхронизация
данных, например вектор инициализации (IV), то необходимые данные могут
быть перенесены в начало поля полезного груза При наличии значения IV оно
обычно не шифруется, хотя часто считается частью шифрованного текста.
Имеющиеся на сегодня спецификации требуют, чтобы любая реализация под-
держивала использование алгоритма DES в режиме СВС (режим сцепления
шифрованных блоков, описанный в главе 3). В документе DO1 определяется ряд
идентификаторов для других алгоритмов, которые таким образом, тоже легко
могут применятся для шифрования Среди таких алгоритмов необходимо на-
звать следующие:
“тройной" DES с тремя ключами,
RC5,
IDEA,
“тройной" IDEA с тремя ключами,
CAST,
Blowfish.
Все эти алгоритмы рассмотрены в главе 4.
Как и АН, протокол ESP поддерживает использование значений МАС длиной
по умолчанию 96 битов. Так же как и в случае с АН, имеющиеся сегодня спе-
цификации требуют, чтобы любая реализация поддерживала схемы HMAC-MD5-
96 и HMAC-SHA-1-96.
498
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ 1Р
Бит: 0 16 24 3!
Рис. 13.7. Формат ESP для IPSec
Использование заполнителя
Лоле заполнителя предназначено для следующих целей.
• Если алгоритм шифрования требует, чтобы длина открытого текста была
кратна некоторому целому числу байтов (например, длине одного блока
блочного шифра), поле заполнителя служит для того, чтобы дополнить от-
крытый текст (складывающийся из нолей полезного груза, заполнителя,
длины заполнителя и следующего заголовка) до нужной длины.
Формат ESP требует, чтобы поля длины заполнителя и следующего заго-
ловка были выровнены по правому краю в 32-битовом слове. Это эквива-
лентно требованию, чтобы шифрованный текст имел длину, кратную 32
битам. Поле заполнителя предназначено для того, чтобы осуществить та-
кое выравнивание. _ :
Дополнительное заполнение можно использовать тогда, когда требуется
обеспечить частичную конфиденциальность для транспортного потока,
чтобы скрыть истинную длину полезного груза.
ранспортный и туннельный режимы
На рис 13 8 показано два варианта применения сервиса ESP протокола IPSec.
верхней части рисунка шифрование (и, как опция, аутентификация) осущест-
яегся непосредственно между двумя узлами. На рис. 13.8(6) показано, как ис-
льзовать туннельный режим, чтобы организовать виртуальную частную сеть.
этом примере некоторая организация имеет четыре частные сети, связанные
эез Internet. Узлы внутренних сетей используют Internet для передачи дан-
IX, но не взаимодействуют с другими размещенными в Internet узлами. По-
>льку туннели заканчиваются в шлюзе защиты каждой внутренней сети, та-
4. ВКЛЮЧАЮЩИЙ ЗАЩИТУ ПОЛЕЗНЫЙ ГРУЗ
499
кая конфигурация позволяет внутренним узлам этих сетей избежать необходи-
мости использования механизмов защиты. В первом варианте применяется
транспортный режим защищенной связи, а в<- втором — туннельный режим.
Мы рассмотрим пределы применения ESP в каждом из этих режимов. В дан
ном случае ситуации для IPv4 и IPv6 несколько различаются. Как и в случае с
протокилом АН, для ^писания области действия мы будем использовать форма-
ты пакетов, подобные показанным на рис. 13.6(a).
Транспортный режим ESP
Транспортный режим ESP служит для шифрования и, если нужно, аутенти-
фикации данных, пересылаемых по протоколу IP (например, сегмента TCP), как
показано на рис. 13.9(a). Для этого режима в случае с IPv4 заголовок ESP раз-
мещается в пакете 1Р непосредственно перед заголовком транспортного уровня
(например, TCP, UDP. ICMP), а концевик (trailer) пакета ESP (содержащий поля
заполнителя, длины заполнителя и следующего заголовка) размещается после
пакета IP, если же используется функция аутентификации, то поле данных ау-
тентификации ESP добавляется после концевика ESP. Весь сегмент транспортно-
го уровня вместе с концевиком ESP шифруются. Аутентификация охватывает
весь шифрованный текст и заголовок ESP.
В контексте IPv6 данные ESP рассматриваются кат; предназначенный для
сквозной пересылки полезный груз, не предполагающий проверку или обработку
промежуточными маршрутизаторами. Поэтому заголовок ESP размещается после
основного заголовка IPv6 и заголовков расширений транзита, маршрутизации и
фрагментации. Заголовок расширения параметров адресата может быть помещен
до или после заголовка ESP — в зависимости от требований семантики. В случае
IPv6 шифрование охватывает весь сегмент транспортного уровня вместе с конце-
виком ESP, а также заголовок расширения параметров адресата, если этот заго-
ловок размещается после загол яка ESP. Аутентификация предполагается для
шифрованного текста и заголовка ESP.
В транспортном режиме выполняются следующие операции.
1. В узле источника блок данных, состоящий из концевика ESP и всего сег-
мента транспортного уровня, шифруется, а открытый текст этого блока за-
меняется шифрованным текстом, что формирует пакет IP для пересылки.
Если выбрана опция аутентификации, то добавляется поле аутентификации
2. Затем пакет направляется адресату. Каждый промежуточный маршрутиза-
тор должен проверить и обработать заголовок IP, а также все заголовки
расширений 1Р, доступные в нешифрованном виде. Шифрованный текст
при этом остается неизменным.
3. Узел адресата проверяет и обрабатывает заголовок IP и все заголовки рас-
ширений IP, доступные в нешифрованном виде. Затем на основе информа-
ции индекса параметров защиты в заголовке ESP дешифруются остальные
части пакета, в результате чего становится доступным сегмент транспорт-
ного уровня в виде открытого текста.
500
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ )Р
(•: Защип па транспортом уровне
(б) Виртуачьпая частяая сеть, построенная на связях в пинг льном режиме
Рис 13.8. Ш ифрование в транспортном и туннельном режимах
Использование транспортного режима обеспечивает конфиденциальность для
бого применяющего этот режим приложения, что позволяет избежать необхо-
мости реализации функций обеспечения конфиденциальности в каждом от-
тьном приложении Этот режим достаточна эффективен, а объем добавляемых
такету IP данных при этом невелик. Недостатком этого режима является то,
> при его использовании не исключается возможность анализа трафика пере-
ааемых пакетов.
чнельный режим ESP
Туннельный режим ESP предназначен для шифрования всего пакета IP (рис.
(б)). Для этого режима заголовок ЕьР добавляется к пакету как префикс, а
ем такой пакет вместе с концевиком ESP шифруются. Данный метод можно
гользовать, когда требуется исключить возможность атак, построенных на
лизе трафика.
1. ЪКЛЮЧАЮЩРГЙ. ЗАЩИТУ ПОЛЕЗНЫЙ ГРУЗ
501
Удостовержеп ч
---Шифруется
4---------------Удо, товержм <_я---------------
4--------------— Шифру» гея----------------р
(б) Тувиеявный режим
Рис 13.9. Область действия шифрования и аутентификации ESP
Ввиду того что заголовок IP содержит адрес пункта назначения и, возможно,
директивы исходной маршрутизации вместе с информапией о параметрах тран-
зита, нельзя просто передать шифрованный пакет IP с добавленным к нему в
виде префикса заголовком ESP. Промежуточные маршрутизаторы не смогут об-
работать такой пакет. Таким образом, необходимо включить весь блок
(заголовок ESP, шифрованный текст и данные аутентификации, если они есть)
во внешний пакет IP с новым заголовком, который будет содержать достаточно
информации для маршрутизации, но не для анализа трафика.
В то время как транспортный режим подходит для защиты соединений меж-
ду узлами, поддерживающими сервис ESP, туннельный режим оказывается по-
лезным в конфигурации, которая предполагает наличие брандмауэра или иного
шлюза защиты, предназначенного для зашиты надежной внутренней сети от
502
ГЛАВА 13 ЗАЩИТА НА УРОВНЕ IP
внешних сетей. В случае с туннельным режимом шифрование используется для
обмена только между внешним узлом и шлюзом защиты или между двумя шлю-
зами защиты. Это разгружает узлы внутренней сети, избавляя их от необходи-
мости шифрования данных, и упрощает процедуру распределения ключей,
уменьшая число требуемых ключей. Кроме того, такой подход усложняет про-
блему анализа потока сообщений, направляемых конкретному адресату
Рассмотрим случай, когда внешний узел соединяется с узлом внутренней се-
ти, защищенной брандмауэром, и когда ESP используется внешним узлом и
брандмауэром. Тогда при пересылке сегмента транспортного уровня от внешнего
узла к узлу внутренней сети будут выполнены следующие действия.
1. Источник готовит внутренний пакет IP с указанием адреса пункта назна-
чения, являющегося узлом внутренней сети. К этому пакету в виде пре-
фикса добавляется заголовок ESP. Затем пакет и концевик ESP шифруют-
ся и к результату могут быть добавлены данные аутентификации Полу-
ченный блок заключается во внешний пакет IP с новым заголовком 1Р
(базовый заголовок плюс необязательные расширения, например парамет-
ров маршрутизации и транзита для IPv6), в котором адресом пункта на-
значения является адрес брандмауэра.
2. Внешний пакет отправляется брандмауэру. Каждый промежуточный маршру-
тизатор нужно проверить и обработать внешний заголовок IP и все внешние
заголовки расширений IP, оставив шифрованный текст неизменным.
3. Брандмауэр-адресат проверяет и обрабатывает внешний заголовок IP и все
внешние заголовки расширений IP. Затем на основе информации индекса
параметров защиты в заголовке ESP брандмауэр дешифрует остальные части
пакета, в результате чего становится доступным внутренний пакет IP в виде
открытого текста. Этот пакет потом передается по внутренней сети,
4. Внутренний пакет направляется через маршрутизаторы внутренней сети
или непосредственно к узлу-адресату.
Отдельная защищенная связь может использовать либо протокот АН. либо
JSP, но никак не оба эти протокола одновременно, Тем не менее, иногда кон-
ретный поток обмена данными может требовать и сервиса АН, и сервиса ESP.
1роме того, конкретному потоку обмена данными может понадобиться сервис
PSec для связи между главными узлами и другой сервис для связи между шлю-
ами защиты, например брандмауэрами. Во всех этих случаях одному потоку
ля получения всего комплекса услуг IPSec требуется несколько защищенных
зязей. Здесь вводится понятие пучка защищенных связей (security association
indie), обозначающее набор защищенных связей, посредством которых потоку
элжно предоставляться необходимое множество услуг IPSec. При этом защи-
тные связи в пучке могут завершаться в различных конечных точках
Защищенные связи могут быть объединены в пучки следующими двумя спо-
S.5. КОМБИНАЦИЯ ЗАЩИЩЕННЫХ СВЯЗЕЙ
503
Транспортная смежность. Применение более одного протокола зашиты к
одному пакету IP без туннелирования. Этот подход к созданию комбина-
ции ЛИ и ESP оказывается эффективным только для одного уровня вло-
жения: дальнейшие вложения не дают дополнительного выигрыша, по-
скольку обработка выполняется в одной инстанции — IPsec (конечного)
получателя.
Повторное туннелирование. Применение нескольких уровней протоколов
защиты с помощью туннелирования IP. Этот подход допускает множество
уровней вложения, поскольку туннели могут начинаться и завершаться в
разных использующих IPsec узлах сети вдоль маршрута передачи данных.
Эти два подхода можно объединить (например, организовав в части туннель-
ной защищенной связи между шлюзами защиты транспортную защищенную
связь между находящимися на пути узлами).
Интересным вопросом, возникающим при рассмотрении пучков защищенных
связей, является порядок, в котором могут применяться аутентификация и
шифрование между данной парой конечных узлов, и то, какими способами эти
операции можно осуществить. Сейчас мы обсудим этот вопрос. Затем мы рас-
смотрим комбинации защищенных связей, предполагающие использование по
крайней мере одного туннеля.
Аутентификация плюс конфиденциальность
Шифрование и аутентификация могут комбинироваться для того, чтобы обес-
печить передаваемому пакету IP как конфиденциальность, так и аутентифика-
цию Мы рассмотрим несколько подходов к такому комбинированию.
ESP с опцией аутентификации
Этот подход иллюстрируется на рис. 13.9. Пользователь сначала применяет ESP
к требующим защиты данным, а затем добавляет поле данных аутентификации.
На самом деле в этом случае можно выделить следующие две возможности.
Транспортный режим ESP. Аутентификация и шифрование применяются
к полезному грузу IP, доставляемому к узлу адресата, но при этом заголо-
вок IP не защищается.
Туннельный режим ESP. Аутентификация применяется ко всему пакету
ТР, доставляемому по адресу IP внешнего получателя (например, бранд-
мауэра), и аутентификация выполняется в системе адресата. Весь внутрен-
ний пакет 1Р защищается механизмом секретности, поскольку предназна-
чен для доставки внутреннему адресату IP.
В обоих случаях аутентификации подлежит шифрованный, а не открытый текст.
Транспортная смежность
Другим способом применения аутентификации после шифрования является
использование пучка из двух транспортных защищенных связей, где внутренняя
связь является защищенной связью ESP, а внешняя — защищенной связью АН.
В этом случае ESP используется без опции аутентификации. Ввиду того что
504
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ 1Р
утренняя защищенная связь используется в транспортном режиме, шифрова-
г применяется к полезному грузу IP. Получаемый в результате пакет состоит
заголовка IP (и, возможно, заголовков расширений IPvG), за которым слсду-
данные ESP. Затем применяется АН в транспортном режиме, так что аутен-
рикация будет охватывать данные ESP и оригинальный заголовок IP (а также
ширения), за исключением изменяемых полей. Преимущество этого подхода
равнении с простым использованием защищенной связи ESP с опцией аутен-
рикации заключается в том, что при комбинированном подходе аутентпфика-
я охватывает больше полей, включая поля адресов IP источника и адресата,
достаток связан с использованием двух защищенных связей вместо одной.
янспортно-туннельныи пучок
Использование функций аутентификации до шифрования может быть предпоч-
ельным по нескольким причинам. Во-первых, ввиду того что данные аутенти-
сации будут защищены шифрованием, оказывается невозможным для кого бы
чи было постороннего перехватить сообщение и изменить данные аутентифика-
I без того, чтобы это было обнаружено Во-вторых, может быть желательным
ранить информацию аутентификации вместе сообщением в системе адресата
дальнейшего использования. При этом удобнее использовать аутентификацию
рытого сообщения, поскольку иначе сообщение необходимо будет повторно
рровать, если информацию аутентификации нужно будет проверить.
Вариантом применения аутентификации до шифрования при обмене данными
еду двумя узлами является использование пучка защищенных связей, со-
гщего из внутренней транспортной защищенной связи АН и внешней тун-
ьной защищенной связи ESP. В этом случае аутентификация охватывает по-
чий груз IP вместе с заголовком IP (и расширениями), за исключением изме-
мых полей. Полученный таким образом пакет ТР затем обрабатывается в
нельном режиме ESP, в результате чего весь удостоверенный внутренний на-
сказывается шифрованным и имеющим новый внешний заголовок IP (с не-
эдимыми расширениями).
новные типы комбинаций защищенных связей
1 документе, описывающем архитектуру IPSec, приведено четыре примера
бинации защищенных связей, которые должны поддерживаться использую-
яи IPSec узлами (например, рабочими станциями, серверами) или шлюзами
иты (например, брандмауэрами, маршрутизаторами). Эти примеры иллюст-
уются на рис. 13.10. В нижней части иллюстраций для каждого случая пред-
лены схемы физического соединения элементов, в в верхней части — схемы
тческого связывания с помощью одного или большего числа вложенных за-
ценных связей. Каждая защищенная связь может быть либо связью АН, ли-
1SP. Для защищенных связей между узлами используемым режимом может
ь либо транспортный, либо туннельный, в других случаях это должен быть
{ельный режим.
. КОМБИНАЦИЯ ЗАЩИЩЕННЫХ СВЯЗЕЙ
505
(а) Случая 1
(в) Случай 3
Туннельная защищенная
связь
(б) Случай 2
• - вредиадагжетсж искольаоаанке IPSec
(г) Случай 4
Рис 13.1 U. Основные типы комбинаций защищенных связей
В случае 1 защита обеспечивается между конечными системами, использую-
щими IPSec. Любые две конечные системы, сообщающиеся через защищенную
связь, должны обладать подходящими общими секретными ключами. К допус-
тимым комбинациям можно отнести следующие.
1. АН в транспортном режиме.
2. ESP в транспортном режиме.
3. АН с последующим ESP в транспортном режиме (защищенная связь АН,
вложенная в защищенную связь ESP.
4. Любая из связей, указанных в пп. а, Ь или с, внутри АН или ESP в тун-
нельном режиме.
Мы уже выяснили, как эти различные комбинации могут использоваться для
поддержки аутентификации, шифрования, аутентификации перед шифрованием
и аутентификации после шифрования.
В случае 2 защита обеспечивается только между шлюзами (маршрути-
заторами, брандмауэрами и т.п.), а в конечных узлах применения IPSec не пред-
полагается. Этот случай иллюстрирует поддержку простой виртуальной частной
сети. В документе, описывающем архитектуру защиты, говорится о том, что в
подобной ситуации требуется только одна туннельная защищенная связь. Тун-
606
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
ь может использовать АН, ESP или ESP с опцией аутентификации. Вложен
е туннелей не требуется, поскольку сервис IPSec обращается ко всему внут-
нему пакету.
Случай 3 строится на использовании схемы случая 2 с помощью добавления
изной защиты. При этом допустимыми являются те же комбинации, которые
саны выше для случаев 1 и 2. Туннель от шлюза к шлюзу обеспечивает ау-
гификацию и/или конфиденциальность для всего трафика между конечными
гемами. Когда туннель от шлюза к шлюзу использует ESP, он также обеспе-
ает ограниченную конфиденциальность потока обмена данными. Конечные
гемы могут при этом обращаться к дополнительному сервису IPSec, необхо-
ому для конкретных приложений или отдельных пользователей, используя
этого сквозные защищенные связи.
Случай 4 иллюстрирует поддержку удаленного узла, испо тьзующего Internet
того, чтобы связаться с брандмауэром организации, а затем получить доступ
екоторому серверу или рабочей станции за этим брандмауэром. Между уда-
ным узлом и брандмауэром необходимо использовать только туннельный ре.
j. Как и в случае 1, можно также применять одну или две защищенные свя-
1ежду удаленным узлом и локальным узлом.
.6, управление ключам
функции управления ключами IPSec включают определение и распределение
>етных ключей. Обычно для защищенной связи между двумя приложениями
>уется четыре ключа: по паре ключей для передачи и получения данных как
АН, так и для ESP. В документе, описывающем архитектуру IPSec, говорит-
поддержке следующих двух типов управления ключами.
। Ручное. Системный администратор вручную конфигурирует каждую сис-
тему с указанием требуемых ключей и необходимых ключей других сооб-
щающихся систем. Это вполне приемлемо для малых и относительно ста-
тичных сред.
। Автоматизированное. Автоматизированная система обеспечивает возмож-
ность создания ключей для защищенных связей по запросу и упрощает
проблему использования ключей в большой распределенной системе с час-
то меняющейся конфигурацией.
1рименяемый по умолчанию для IPSec протокол автоматизированного управ-
1я ключами называется ISAKMP/Oakley и состоит из следующих элементов.
। Протокол Oakley определения ключей. Oakley представляет собой прото-
кол обмена ключами, основанный на алгоритме Диффи-Хеллмана, но
обеспечивающий дополнительную защиту. Протокол Oakley оказывается
общим в том смысле, что он не диктует использования каких-то конкрет-
ных форматов.
Защищенная связь в Internet и протокол управления ключами (1SAKMP).
ISAKMP обеспечивает каркас схемы управления ключами в Internet и
поддержку некоторого протокола наряду с соответствующими форматами
для согласования атрибутов защиты.
. УUPABjJEHHE КЛЮЧАМИ
507
ISAKMP сам по себе не ограничивает нас каким-то конкретным алгоритмом
обмена ключами, а предлагает множество типов сообщений, которые могут ис-
пользоваться с рядом алгоритмов обмена ключами. Oakley является конкретным
алгоритмом обмена ключами, предназначенным для использования с исходной
версией ISAKMP.
Мы начнем с краткого обсуждения Oakley, а затем рассмотрим 1SAKMP.
Протокол Oakley определения ключей
Oakley представляет собой усовершенствованный вариант алгоритма Диффи-
Хеллмана обмена ключами. Напомним, что алгоритм Диффи-Хеллмана предпо-
лагает следующее взаимодействие между пользователями А и В. Должно быть
предварительное соглашение о двух глобальных параметрах: q, представляющем
собой большое простое число, и а, являющемся первообразным корнем q. Сторо
на А выбирает случайное целое число ХА, которое будет личным ключом А, и
передает стороне В открытый ключ У, = а*' . Точно так же В выбирает случай
ное целое число Х8, которое будет личным ключом В, и передает стороне А от-
крытый ключ Ув = а”’ . Каждая из сторон может теперь вычислить секретный
сеансовый ключ, как показано ниже.
К = <УВ)Х” mod д = (УА)Х’ mod q = a*** mod q .
Алгоритм Диффи-Хеллмана имеет два привлекательных свойства.
Секретные ключи создаются только тогда, когда это нужно. Нет необхо-
димости хранить секретные ключи в течение долгого периода времени, де-
лая их тем самым более уязвимыми.
Процедура обмена не требует никакой заранее подготовленной инфра
структуры, кроме соглашения о значениях глобальных параметров.
Однако, как указано в [HUIT98], алгоритм Диффи-Хеллмана не лишен не-
достатков.
Алгоритм не предлагает никакой информации, позволяющей идентифици-
ровать стороны
Алгоритм уязвим в отношении атак с использованием посредника, когда
некоторая третья сторона С выступает оз имени В для А и от имени А для
В Как А, так и В ведут переговоры о ключе со стороной С, которая затем
сможет принимать и отправлять дальше весь поток обмена данными меж
ду А и В. Сценарий такой атаки может выглядеть следующим образом.
* Сторона В посылает свой открытый ключ YB в сообщении, адресуемом
стороне А (см. рис. 6.16).
• Противник (Е) перехватывает это сообщение. После этого Е сохраняет от-
крытый ключ В и посылает стороне А сообщение, содержащее идентифи-
катор В, но открытый ключ Ув стороны Е. Это сообщение посылается
таким образом, чтобы казалось, что оно было отправлено с узла В. Сто-
рона А получает сообщение Е и сохраняет открытый ключ Е с идентифи-
катором В. Точно так же Е посылает сообщение стороне В с открытым
ключом Е, создавая впечатление что это сообщение пришло от А.
508
ГЛАВА 1Э. ЗАЩИТА НА УРОВНЕ 1?
• Сторона В вычисляет секретный ключ К, на основе личного ключа В и
YP. Сторона А вычисляет секретный ключ Ка на основе ключа А и Yc.
Сторона Е вычисляет К,, используя личный ключ Xfi и У8 и вычисля-
ет К,, используя Хь и Y,.
• С этого момента сторона Е может ретранслировать сообщения от А к В
и от В к А, неким образом меняя по пути их шифрованный вид гак,
что ни А, ни В не будут знать о том, что на самом деле они используют
связь с Е.
Алгоритм требует интенсивных вычислений. В результате он оказывается
уязвимым в отношении атак засорения, когда противник запрашивает
очень большое число ключей Жертва тратит значительные вычислитель-
ные ресурсы на бесполезные возведения в степень в арифметике классов
вычетов, вместо выполнения полезной работы.
Oakley разработан как раз для того, чтобы, сохранив преимущества алгоритма
•ффи-Хеллмана, избавиться от выявленных у последнего недостатков.
юйства Oakley
.Алгоритм Oakley характеризуется пятью важными особенностями.
1. Алгоритм Oakley использует механизм так называемых рецептов (cookies),
чтобы не допустить возможности применения атак засорения.
2. Алгоритм Oakley дает двум сторонам возможность договорится о группе,
которая, по существу, определяет глобальные параметры алгоритма обме-
на ключами Диффи-Хелл мана.
3. Алгоритм Oakley использует оказии, чтобы противостоять атакам воспро-
изведения сообщений
4. Алгоритм Oakley осуществляет обмен значениями открытых ключей Диф-
фи-Хеллмана.
5. Алгоритм Oakley выполняет аутентификацию обмена Диффп-Хеллмана,
чтобы не допустить возможности применения атак с использованием по-
средника.
Мы уже обсуждали алгоритм Диффи-Хеллмана. Давайте по очереди рассмот-
ч оставшиеся элементы списка. Сначала разберемся с проблемой атак засоре-
я. При этой атаке противник фальсифицирует адрес законного источника и
:ылает жертве открытый ключ Диффи-Хеллмана. Жертва выполняет модуль-
• возведение в степень в арифметике классов вычетов, чтобы вычислить сек-
'ный ключ Многократно повторенные сообщения такого типа могут засорить
тему атакуемой стороны бесполезной работой. Требование обмена рецептами
:ачает, что каждая из сторон должна послать в начальном сообщении псевдо-
'чайное число, рецепт, который другая сторона должна подтвердить. Это под-
рждение должно повториться в первом сообщении обмена ключами по Диф-
Хеллману, Если адрес источника был фальсифицирован, противник ответа не
ьучит. Таким образом, противник может только заставить пользователя гене-
ювать подтверждения, но не выполнять вычисления с использованием алго-
ма Диффи-Хеллмана.
3. УПРАВЛЕНИЕ КЛЮЧАМИ
509
1SAKMP требует, чтобы процедура генерирования рецептов удовлетворяла
следующим трем основным требованиям,
1. Репепт должен зависеть от параметров генерирующей его стороны. Это не
паст возможности противнику получить рецепт, используя реальные адрес
1Р и порт UDP, а затем использовать этот рецепт для того, чтобы забросать
жертву запросами с выбранных случайным образом адресов IP или портов.
2. Ни для кого другого, кроме генерирующего объекта, должно быть невоз-
можным генерировать рецепты, которые будут признаны данным объек-
том. Отсюда следует, что генерирующий объект должен использовать при
создании и последующей верификации рецептов локальную секретную ин-
формацию. Эту секретную информацию должно быть невозможно извлечь
из какого бы то ни был<- отдельного рецепта. Смысл этого требования со-
стоит в том, чтобы генерирующему объекту не приходилось хранить копии
рецептов, которые таким образом становятся более уязвимыми, а можно
было проверить поступающий с подтверждением рецепт тогда, когда это
непосредственно требуется.
3. Генерирование рецептов и их верификация должны выполняться быстро,
чтобы не дать возможности проведения атак, направленных на блокирова-
ние ресурсов процессора.
Рекомендуемый метод создания рецептов заключается в быстром вычислении
хэш-кода (например, MD5) для адресов IP источника и адресата, портов UDP ис-
точника и адресата и локально генерируемого секретного значения.
Алгоритм Oakley поддерживает применение различных групп обмена ключа-
ми Диффи-Хеллмана. В каждой группе определяются два глобальные параметра
и природа алгоритма. Имеющиеся сегодня спецификации включает следующие
группы.
Возведение в степень в арифметике классов вычетов с 768-битовым модулем:
д = 2™ - 2™ - 1 + 2м X ( [2™ х nJ + 149686 ),
а = 2.
• Возведение в степень в арифметике классов вычетов с 1024-битовым модулем:
q = - 2°“ - 1+ 2” х ([ 2й" х nJ + 129093 ),
а = 2.
Возведение в степень в арифметике классов вычетов с 1024-битовым модулем.
• Параметры должны определяться.
Группа эллиптической кривой над конечным полем из 2'“ элементов.
• Генератор (в шестнадцатеричном виде): X = 7В, Y — 1С8.
• Параметры эллиптической кривой (в шестнадцатеричном ниде): А = 0,
Y = 7338F.
Группа эллиптической кривой над конечным полем из 2’“ элементов.
* Генератор (в шестнадцатеричном виде): X = 18, Y = D.
610
глава 13. защита на уровне ip
• Параметры эллиптической кривой (в шестнадцатеричном виде): А = О,
Y = 1ЕЕ9.
Первые три группы представляют классический алгоритм Диффи-Хеллмана,
котором происходит возведение в степень в арифметике классов вычетов. По-
•дние две группы используют аналог алгоритма Диффи-Хеллмана для эллип-
геских кривых, который был описан в главе 6.
В алгоритме Oakley для защиты от атак воспроизведения сообщений приме-
отся оказии. Каждая оказия представляет собой локально порожденное леев-
лучайное число. Оказии появляются в ответах и шифруются на определенных
днях обмена данными, чтобы защитоть их при использовании.
С алгоритмом Oakley могут применяться три различных метода аутентификации.
Цифровые подписи. Аутентификация обмена данными осуществляется с по-
мощью подписи взаимно доступного хэш-кода: каждая сторона шифрует хэш-
код своим личным ключом. Такой хэш-код генерируется для каких-нибудь
важных параметров, например идентификаторов пользователей и оказий.
Шифрование с открытым ключом. Аутентификация обмена данными осу-
ществляется с помощью шифрования параметров, например таких, как
идентификаторы и оказии, с использованием личного ключа отправителя.
Шифрование с симметричным ключом. Для аутентификации обмена дан-
ными может использоваться шифрование параметров обмена по симмет-
ричной схеме с помощью некоторого ключа, получаемого с применением
какого-то дополнительного механизма.
имер обмена Oakley
Спецификации Oakley включают ряд примеров обмена, допустимых для дан-
о протокола. Чтобы вы получили представление о работе Oakley, мы приве-
один пример обмена данными, который в документе с описаниями спепифи-
ий называется энергичным обменом ключами (aggressive key exchange). На-
яие объясняется тем, что при этом требуется обмен только тремя
эщениями.
На рис. 13.11 показана схема протокола энергичного обмена ключами. На
вом шаге инициатор ] передает рецепт, группу, которую предполагается ис-
ьзовать, и свой открытый ключ Диффи-Хеллмана для данного обмена. Кроме
), сторона I также указывает предлагаемые алгоритмы шифрования с откры-
। ключом, хэширования и аутентификации, которые будут использоваться в
й обмене Еще в это сообщение включаются идентификаторы инициатора I и
тондента R, а также оказия инициатора I для этого обмена. Наконец, участ-
I присоединяет к сообщению подпись, используя личный ключ I, которая
писывает два идентификатора, оказию, группу, открытый ключ Диффи-
лмана и предлагаемые алгоритмы.
<огда R получает сообщение, R проверяет подпись, используя открытый
>ч подписи I. Затем R подтверждает сообщение, отсылая назад рецепт, иден-
икятор и оказию I, а также группу. Кроме того, R также включает в сообше-
рецепт, свой открытый ключ Диффи-Хеллмана, выбранные алгоритмы (из
. УПРАВЛЕНИЕ КЛЮЧАМИ
511
I —» R : CRY,, OK_KEYX , GRP , g’ , EHAO, NIDP, ID,, ID„ , N,,
MID, || 1D„ || N, || GRP || g* || EHAO],
R -» I: CKYB , CRY,, OKJKEYX , GRP , g’, EHAS , NIDP , ID, , ID., NB ,
N,, Sra[IDB || ID, || NB || N, || GRP || g’ || g‘ || EHAS],
I —> R : CKY,, CRY,, OK_KEYX , GRP , g* , EHAS , NIDP , ID,, ID„ , N,,
Nr , SJID, Il IDr II N, Il Nr II GRP Ц g' || g’ || EHAS].
Обозначения:
I R CKY. и CKYB OK_KEYX GRP S' и g’ — инициатор; — респондент; — рецепты инициатора и респондента; — тип сообщения обмена ключами; — имя группы Диффи Хеллмана для этого обмена: — открытые ключи инициатора и респондента, g” — сеансо- вый ключ для этого обмена;
EHAO и EHAS — функции шифрjbf,ния, хэширования, аутентификации, предложенные и используемые;
N1DP — укпзывэс! на то, что оставшаяся часть сообщения шиф]>ов11 Ш1Ю не подлежит;
ID, и IDft N, и Nr — идентификаторы инициатора и респондента; — случайные значения оказий инициатора и респондента для этого обмена;
Sn[X] и SJX] — обозначает подпись для X, использующую личный ключ (ключ подписи) инициатора и респондента.
Рис. 13.11. Пример энергичного обмена ключами Oakley
числа предложенных), идентификатор R и оказию R для этого обмена. Наконец
R присоединяет подпись, используя личный ключ R, которая подписывает два
идентификатора, две оказии, группу, два открытых ключа Диффи-Хеллмана и
выбранные алгоритмы.
Получив второе сообщение, инициатор I проверяет подпись, используя от-
крытый ключ R. Значения оказий в сообщении убеждают в том, что это не вос-
произведение старого сообщения. Чтобы завершить обмен, инициатор I должен
отослать сообщение назад R для проверки того, что I получил открытый ключ R
Протокол ISAKMP
Протокол ISAKMP определяет процедуры и форматы пакета, предназначен-
ные для использования в процессе переговоров о создании, изменении или уда-
лении защищенных связей. Как часть процесса создания защищенной связи
ISAKMP определяет полезный груз сообщений обмена ключами и аутентифика-
ции данных. Форматы полезного груза обеспечивают согласованный каркас, не
зависящий от конкретного протокола обмена ключами, алгоритма шифрования
или механизма аутентификации.
512
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
1ат заголовка ISAKMP
)бщение ISAKMP состоит из заголовка ISAKMP и следующих за ним по-
х грузов. Все это передается с помощью транспортного протокола. Специ-
ии требуют, чтобы любая реализация поддерживала использование UDP
(экспортного протокола.
рис. 13.12 показан формат заголовка сообщения ISAKMP, формируемого
дующих полей.
Рецепт инициатора (64 бита). Рецепт объекта, инициировавшего процесс
создания, изменения или удаления защищенной связи.
Рецепт респондента (64 бита). Рецепт отвечающего объекта; является пус-
гым в первом сообщении инициатора.
Следующий полезный груз (8 битов). Указывает тип первого полезного
”руза в сообщении Типы полезного груза описаны в следующем разделе.
Главный номер версии (4 бита). Указывает главный номер используемой
зерсии ISAKMP.
Хополнительвый номер версии (4 бита). Указывает дополнительный номер
«пользуемой версии.
Гил обмена (8 битов). Указывает тип обмена. Типы обмена рассмотрены ниже.
Рлаги (8 битов). Указывают параметры, установленные для данного обме-
та ISAKMP Пока что определено два бита. Бит шифрования устанавлива-
ется тогда, когда все имеющиеся полезные грузы, следующие за заголов-
ком, зашифрованы с использованием алгоритма шифрования для этой за-
цищенной связи. Бит фиксации предназначен для тш-o. чтобы
арантировать, что шифрованный материал не был получен до создания
ащищенной связи.
1дентификатор сообщения (32 бита). Уникальный идентификатор данное
ообщения.
(лива (32 бита). Дтина всего сообщения (заголовка и всех полезных гру-
>в)в байтах.
юлеэного груза ISAKMP
полезные грузы ISAKMP имеют заголовки одного типа. Структура такого
1ка показана на рис. 13.12(6). Поле следующего полезного груза имеет
те 0, если данный полезный груз является в сообщении последним, иначе
тем поля будет тип следующего полезного груза Значение поля длины
эго груза указывает длину в байтах соответствующего полезного груза,
я длину его заголовка
бл. 13.3 приведен список типов полезного груза, допустимых для ISAKMP,
шы поля, или параметры, составляющие полезный груз каждого из этих
Полезный груз типа SA (защищенная связь) служит для того, чтобы начать
создания защищенной связи. В этом случае параметр области интерпрета-
гнтифицирует DOI (область интерпретации), с использованием которой вы-
гся согласование. Использование DOI протокола IPSec является лишь одним
ТРАВЛЕНИЕ КЛЮЧАМИ
513
Формат заголовка ISAKMP
Сообщение ISAKMP состоит из заголовка ISAKMP и следующих за ним по-
лезных грузов. Все эго передается с помощью транспортного протокола. Специ-
фикации требуют, чтобы любая реализация поддерживала использование (JDP
для транспортного протокола
На рис. 13 12 показан формат заголовка сообщения ISAKMP, формируемою
из следующих полей.
Рецепт инициатора (64 бита). Рецепт объекта, инициировавшего процесс
создания, изменения или удаления защищенной связи.
Рецепт респондента (64 бита). Рецепт отвечающего объекта; является пус-
тым в первом сообщении инициатора.
Следующий полезный груз (8 битов). Указывает тип первого полезпого
груза в сообщении. Типы полезного груза описаны в следующем разделе.
Главный номер версии (4 бита). Указывает главный номер используемой
версии ISAKMP.
Дополнительный номер версии (4 бита). Указывает дополнительный номер
используемой версии.
Тип обмена (8 битов). Указывает тип обмена. Типы обмена рассмотрены ниже.
* Флаги (8 битов). Указывают параметры, установленные для данного обме-
на ISAKMP. Пока что определено два бита. Бит шифрования устанавлива-
ется тогда, когда все имеющиеся полезные грузы, следующие за заголов-
ком, зашифрованы с использованием алгоритма шифрования для этой за-
щищенной связи. Бит фиксации предназначен для того, чтобы
гарантировать, что шифрованный материал не был получен до создания
защищенной связи
Идентификатор сообщения (32 бита). Уникальный идентификатор данного
сообщения.
Длина (32 бита). Длина всего сообщения (заголовки и всех полезных гру-
зов) в байтах.
Типы полезного груза ISAKMP
Все полезные грузы ISAKMP имеют заголовки одного типа. Структура такого
заголовка показана на рис. 13.12(6). Поле следующего полезного груза имеет
заачение О, если данный полезный груз является в сообщении последним, иначе
значением поля будет тип следующего полезного груза. Значение поля длины
полезного груза указывает длину в байтах соответствующего полезного груза,
включая длину его заголовка.
В табл. 13.3 приведен список типов полезного груза, допустимых для ISAKMP,
и указаны поля, или параметры, составляющие полезный груз каждого из этих
типов. Полезный груз типа SA (защищенная связь) служит для того, чтобы начать
процесс создания защищенной связи. В этом случае параметр области интерпрета-
ции идентифицирует DOI (область интерпретации), с использованием которой вы-
полняется согласование. Использование DOI протокола IPSec является лишь одним
13 6 УПРАВЛЕНИЕ КЛЮЧАМИ
513
(6) Заголовок типичного полезного груза
Рис. 13.12. Форматы ISAKMP
примером, в других контекстах может использоваться ISAKMP. Параметр ситуа-
ции определяет политику защиты для такого процесса согласования, устанавли-
вая, по существу, уровни защиты, требуемые для шифрования и конфиденциаль-
ности (например, гриф секретности, уровень безопасности).
Полезный груз типа Р (предложение) включает информацию, используемую в
ходе согласования атрибутов создаваемой защищенной связи, а также указывает
протокол для этой защищенной связи (ESP или АН), в отношении которого ве-
дутся переговоры о соответствующих сервисах и механизмах. Полезный груз
этого типа также включает индекс параметров защиты объекта-отправителя и
число трансформаций. Каждая трансформация содержится в полезном грузе ти-
па Т (трансформация). Применение нескольких полезных грузов типа трансфор-
мации позволяет инициатору предложить на выбор несколько возможностей, из
которых отвечающая сторона должна выбрать одну или отвергнуть предложение.
Полезный груз типа Т (трансформация) определяет защитную трансформа-
цию, которая должна использоваться для защиты коммуникационного Канала в
соответствии с указанным протоколом. Номер трансформации позволяет иден-
тифицировать данный полезный груз с тем, чтобы отвечающая сторона могла со-
слаться на этот номер для указания своего решения использовать именно эту
трансформацию. Поля идентификатора трансформации и атрибутов идентифи-
цируют саму трансформацию (например, 3DES для ESP или HMAC-SHA1-96
для АН) и связанные с ней параметры (например, длину хэш-кода).
514
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ 1Р
Таблица 13.3. Типы полезного груза ISAKMP
Тип Параметры Описание
ЗаЦЦцЦеиНаЯ связь (SA) Область интерпретации, ситуация Используется для согласования атри- бутов защиты и указания области ин- терпретации и ситуации, при которых выполняется такое согласование
Предложение (Р) Номер предложения, иден- тификатор протокола, длина индекса параметров защи- ты, число трансформаций, индекс параметров защиты Используется в ходе согласования параметров создаваемой защищенной связи, указывает применяемый про- токол и число трансформаций
Т рансформация (Т) Номер трансформации, идентификатор трансфор- мации, атрибуты защи- щенной связи Применяется в ходе согласования параметров защищенней связи, ука зывает преобразование и соответст- вующие атрибуты защищенной связи
Обмен ключами (КЕ) Данные обмена ключами Поддерживает целый ряд методов обмена ключами
Идентификация (ГО) Тип идентификации, дан- ные идентификации Предназначен для обмена информа- цией идентификации
Сертификат (CERT) Кодировка сертификата, данные сертификации Служит для пересылки сертификатов и другой связанной с сертификатами информации
Запрос сертифи- ката (СК) Число типов сертификатов, тины сертификатов, число типов центров сертифика- ции, центры сертификации Используется для запросов сертифи- катов, указывает типы запрашивае- мых сертификатов и приемлемые центры сертификации
Хэширование (HASH) Данные хэширования Содержит данные, генерируемые функцией хэширования
Подпись (SIG) Данные подписи Содержит данные, генерируемые функцией цифровой подписи
Оказия (NONCE) Данные оказии Содержит оказию
Уведомление (N) Область идентификации, идентификатор протокола, длина индекса параметров защиты, тип уведомления сообщения, индекс пара- метров защиты, данные уведомления Используется для передачи данных уведомления, например, признака возникновения ошибки
Удалить(D) Область идентификации, идентификатор протокола, длина индекса параметров защиты, число индексов параметров защиты, индекс параметров защиты (один или больше) Указывает защищенную 'вязь, которая больше не является действительной 'Г . П . Г*
13.6. УПРАВЛЕНИЕ КЛЮЧАМИ Г
515
Полезный груз типа К£ (обмен ключами) может использовать целый ряд ме-
тодов обмена ключами, включая Oakley, обмен по Диффи-Хеллману и обмен
ключами RSA, предусмотренный в PGP. Ключевое поле данных обмена включа-
ет данные, требуемые, чтобы создать клавишу сеанса, и зависит от ключевого
используемого алгоритма обмена.
Полезный груз типа П) (идентификации) предназначен для идентификации
сообщающихся сторон и может служить для проверки аутентичности информа-
ции. Обычно поле данных идентификации содержит адрес IPv4 или IPv6.
Полезный груз типа CERT (сертификат) несет сертификат открытого ключа.
Поле кодировки сертификата указывает тип сертификата или связанную с сер-
тификатом информацию, которая может включать следующее:
сертификат Х.509 т упаковке KCS #7;
сертификат PGP;
подписанный ключ DNS;
сертификат Х.509 — подпись;
* сертификат Х.509 — обмен ключами;
мандаты Kerberos;
список отозванных сертификатов (CRL);
список отозванных полномочий (ARL);
сертификат SPKI.
В любой точке обмена ISAKMP отправитель может разместить полезный груз
типа CR (запрос сертификата), чтобы запросить сертификат второй из участ-
вующих в обмене сторон. Этот полезный груз может содержать список несколь-
ких типов сертификатов и нескольких центров сертификации, которые рассмат-
риваются как приемлемые.
Полезный груз типа HASH (хэширование) содержит данные, генерируемые
функцией хэширования для некоторой части сообщения и/или состояния
ISAKMP. С помощью этого полезного груза можно проверить целостность дан-
ных ь сообщении или аутентифицировать объекты, ведущие переговоры.
Полезный груз типа SIG (подпись) содержит данные, генерируемые Функцией
цифровой подписи для некоторой части сообщения и/или состояния ISAKMP.
Этот полезный груз служит для проверки целостности данных в сообщении и
может использоваться для серзиса, гарантирующего невозможность отказа от
сообщений.
Полезный груз типа NONCE (оказия) включает случайные данные, обеспечи-
вающие гарантию выполнения процесса обмена в реальном времени и защиту его
от атак воспроизведения сообщений.
Полезный груз типа N (уведомление) содержит информацию или об ошибке,
или о состоянии, связываемом с данной защищенной связью или данным про-
цессом согласования параметров защищенной связи. Были определены следую-
щие сообщения ISAKMP об ошибках.
516
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
Invalid Payload Type (неправильный тип полезного груза).
DOI Not Supported (неподдерживаемая область интерпретации).
Situation Not Supported (неподдерживаемая ситуация).
Invalid Cookie (неправильный рецепт).
Invalid Major Version (неправильный главный номер версии).
Invalid Minor Version (неправильный дополнительный номер версии).
Invalid Exchange Туре (неправильный тип обмена).
Invalid Flags (неправильные флаги).
Invalid Message ID (неправильный идентификатор сообщения).
Invalid Protocol ID (неправильный идентификатор протокола).
Invalid SP1 (неправильный индекс параметров защиты).
Invalid Transform ID (неправильный идентификатор трансформации).
Attributes Not Supported (атрибуты не поддерживаются).
No Proposal Chosen (не выбрано предложения).
Bad Proposal Syntax (неправильный синтаксис предложения).
Payload Malformed (неправильно сформированный полезный груз).
Invalid Key Information (неправильная информация о ключе).
Invalid Cert Encoding (неправильная кодировка сертификата).
Invalid Certificate (неправильный сертификат).
Bad Cert Request Syntax (неправильный синтаксис запроса сертификата).
Invalid Cert Authority (неправильный центр сертификации).
Invalid Hash Information (неправильная информация хэширования).
Authentication Failed (неудачно завершившаяся аутентификация).
Invalid Signature (неправильная подпись).
Address Notification (уведомление об адресе).
Единственным до сих пор определенным сообщением состояния ISAKMP яв-
ляется состояние Connected (соединено). В дополнение к указанным сообщениям
уведомления ISAKMP используются специальные уведомления DOI. Для IPSec
определяются следующие дополнительные сообщения состояния.
Responder-Lifetime. Продолжительность жизни защищенной связи, вы-
бранная отвечающей стороной.
Replay-Status. Служит для подтверждения положительного решения отве-
чающей стороны по вопросу о применении средств обнаружения атак вос-
произведения
Initial-Contact. Информирует другую сторону о том, что данная защищен-
ная связь является первой защищенной связью, создаваемой с удаленной
системой. Получатель такого уведомления может удалить все существую
щие защищенные связи с системой-отправителем, предположив, что сис-
тема отправителя была перезагружена и больше не имеет доступа к ста-
рым защищенным связям.
Полезный груз типа D (удаление) указывает одну или несколько защищен-
ных связей, которые предполагаются больше недействительными ввиду того, что
отправитель удалил их из своей базы данных.
13 6 УПРлЫЕНПЕ КЛЮЧАМИ
517
Обмены ISAKMP
Протокол ISAKMP обеспечивает каркас для обмена сообщениями, в качестве
строительных блоков которых служат полезные грузы. Спецификации указыва-
ют пять типов обмена, которые должны поддерживаться по умолчанию, эти ти
пы обмена приведены в табл. 13.4 Б этой таблице SA означает полезный груз
защищенной связи с соответствующими полезными грузами протокола и транс-
формации.
Базовый обмен позволяет провести обмен ключами и материалом аутентифи-
кации одновременно. Это сводит к минимуму число сообщений обмена за счет
отказа от обеспечения защиты идентификации сторон. Два первых сообщения
обеспечивают рецепты и создают защищенную связь с согласованными протоко-
лом и трансформациями; обе стороны используют оказии, чтобы застраховаться
от атак воспроизведения сообщений В оставшихся двух сообщениях происходит
обмен относящимся к ключам материалом и идентификаторами пользователей, а
полезный груз AUTH используется для того, чтобы удостоверить ключи, участ-
вующие в обмене стороны, и оказии из первых двух сообщений.
Обмен с защитой идентификации сторон является расширением базового об-
мена с целью Защиты информации об участвующих в обмене сторонах. Два пер-
вых сообщения создают защищенную связь. Два следующих сообщения осущест-
вляют обмен ключами и включают две оказии для защиты от возможности ата-
ки воспроизведения. Как только становится доступным сеансовый ключ,
стороны обмениваются шифрованными сообщениями, содержащими информа-
цию аутентификации, например цифровые подписи и в некоторых случаях сер-
тификаты открытых ключей.
Обмен только данными аутентификации используется для того, чтобы осуще-
ствить взаимную аутентификацию, без обмена ключами. Два первых сообщения
создают защищенную связь. Кроме того, отвечающая сторона использует второе
сообщение для того, чтобы передать свой идентификатор, и прибегает к аутен-
тификации, чтобы защитить это сообщение. Инициатор посылает третье сообще-
ние, чтобы передать свой удостоверенный идентификатор.
Энергичный обмен сводит к минимуму число сообщений обмена за счет отка-
зе от обеспечения защиты идентификации сторг-н. В первом сообщении инициа
тор предлагает создать защищенную связь с набором предлагаемых протоколов и
трансформаций. Кроме того, инициатор начинает обмен ключами и высылает
свой идентификатор. Во втором сообщении отвечающая сторона указывает на
принятие защищенной связи с уже конкретными протоколом и трансформацией,
завершает обмен ключами и удостоверяет передаваемую информацию. В третьем
сообщении ипициатор передает результат аутентификации предыдущей инфор-
мации, шифруя его с использованием общего секретного сеансового ключа.
Информационный обмен предназначен для односторонней пересылки инфор-
мации, касающейся параметров управления защищенной связью.
518
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
Таблица 13.4. Типы обмена ISAKMP
Обмен
Комментарий
1 а) Казовый обмен
(1) I —> R : SA , NONCE Начинается согласование ISAKMP защи- щенной связи (2) R —> I: SA , NONCE Основные параметры защищенной связи со глас-иваны (3) I —» R : KE, ID,, AUTTI Ключ сгенерирован, отвечающая сторона проверила аутентичность Инициатора (4) R —> I: КЕ, Ю,, AUTH Инициатор проверил аутентичность отве- чающей стороны, ключ сгенерирован, за- щищенная связь установлена
(61 Обмен с »ящитпй идентификации сторон
(1) I -> R : SA Начинается согласование ISAKMP защи- щенной связи (2) R —> I: SA Основные параметры защищенной связи со- гласованы (3} I —» R : KE, NONCE Ключ сгенерирован (4) R —> I: KE, NONCE Ключ сгенерирован (5)* R —> I: ID, , AUTH Отвечающая сторона проверила аутентич- ность инициатора (б)* I -» R : JD, , AUTH Инициатор проверил аутентичность отве- чающей стороны, защищенная связь уста- новлена
(в) Обмен только данными аутентификации
(1) I —> R ; SA , NONCE Начинается согласование ISAKMP защи- щенной связи (2) R —> I: SA, NONCE, ID„, AUTH Основные параметры защищенной связи со- гласованы, отвечающая сторона проверила аутентичность инициатора (3) I -> R : ID, , AUTH Инициатор проверил аутентичность отве- чающей стороны, защищенная связь уста- новлена
(г) Энергичный обмен
(1) I—»R; SA, KE, NONCE, ID, Начинается согласование ISAKMP защи- щенной связи и обмен ключами (2) R —»I: SA KE, NONCE, ID,, AUTH Отвечающая сторона проверила аутентич- ность инициатора, ключ сгенерирован, ос- новные параметры защищенной связи со- гласованы (3)" 1 —» R : AUTH Инициатор проверил аутентичность отве- чающей стороны, защищенная связь уста- новлена
<л) Информационный обмен
(1)* I-»R: N/D Уведомление об ошибке или состоянии либо удалении
Обозначения:
I — инициатор, д. ,KSV .
R — отвечающая сторона,
* — полезный груз после заголовка ISAKMP шифруется.
13.6 УПРАВЛЕНИЕ КЛЮЧАМИ
519
13.7. Рекомендуемые источники дополнительной
информации gg|
Протоколы IPv6 и IPv4 подробно описаны в [STAL97]. Хорошее изложение
вопросов межсетевого взаимодействия и IPv4 можно найти в [СОМЕ95] и
[STEV94]. В [BRAD96] содержится весьма всестороннее рассмотрение вопросов,
связанных с IPv6, книга предлагает относительно неформальное изложение тре-
бований IPv6 и истории разработки этого протокола. В [HUIT98] включено дос-
таточно формальное описание различных документов RFC, в совокупности со-
ставляющих спецификации IPv6, книга знакомит с назначением различных
функций и операций протокола. В [CHEN98J содержится хорошее обсуждение
конструкции IPSec.
ю г л шчшпг ни И 1НГ1.ГП гж и i пц< гщм.яп „ц .хц,г. ЦМИДМ" г1.Ч1№ДШ*УЦ1Р11|1 «игр ' Ц?|1П1Т||П|.П "jT/vr iHTjlflMW Jl IJLuH
BRAD96 Bradner, S and Mankin, A. IPng: Internet Protocol Next Generation Reading, MA
Addison- Wesley, 1996.
CHEN98Cneng, P., et al. “A Secunty Architecture for tne Internet Protocol.” IBM Systems
Journal, Number 1,1998
COME95a Comer, D Internetworking with TCP/IP, Volume I: Principles, Protocols
and Architecture Upper Saddle River, NJ: Prentice Hall, 1995.
HUIT98 Huitema, C. IPv6 The New Internet Protocol Upper Saddle River NJ: Prentice
Hall, 1998.
SI AL97 Stallings, W Data and Computer Communications, Fifth Edition Upper Saddle
River, NJ: Prentice Halt, 1997,
STEV94 Stevens, W. TCP/IP Illustrated, Volume I: The Protocols Reading, MA’ Addison-
Wesley, 1994
Вниманию читателей предлагаются следующие Web-узлы.
Хартия протокола защиты IP (ipsec). Самые последние версии документов
RFC и проекты стандарта IPSec для Internet.
Новости рабочей группы защиты IP. Документы рабочей группы, почтовые
архивы, соответствующие технические статьи и другой полезный материал.
Ресурсы защиты IP (IPSEC). Список компаний, предлагающих реализации
IPSec, обзор реализаций и другой полезный материал.
Задачи j
1. При обсуждении работы АН было упомянуто о том, что не все поля в заго-
ловке IP участвуют в вычислении значения МАС.
• Для каждого из полей в заголовке IPv4 укажите, будет ли это поле неиз-
менным, изменяемым, но прогнозируемым, или просто изменяемым (зна-
чение последнего перед вычислением значения ICV должно обнуляться).
• Сделайте то же самое для заголовка IPv6-
• Сделайте то же самое для заголовков расширений IPv6.
В каждом случае обоснуйте свой выбор для каждого из полей.
520
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
2. При использовании туннельного режима создается новый внешний заголо-
вок IP. Как для IPv4, так и для IPv6 свяжите каждое поле внешнего заголов-
ка IP и каждый заголовок расширения во внешнем пакете с соответствующи-
ми полями или заголовками расширений внутреннего пакета IP. Другими сло-
вами, укажите, какие внешние значения задаются на основе внутренних
значений, а какие создаются независимо от внутренних значений.
3. При связи между двумя конечными системами желательны аутентифика-
ция и шифрование. Изобразите, подобно тому, как это сделано на
рис. 13 6 и 13 9, следующие структуры.
• Транспортную смежность с шифрованием, применяемым до аутентифи-
кации.
• Транспортную защищенную связь, вложенную в туннельную защищен-
ную связь, с шифрованием, применяемым до аутентификации.
• Транспортную защищенную связь, вложенную в туннельную защищен-
ную связь, с аутентификацией, применяемой до шифрования.
4. В документе, описывающем архитектуру IPSec, утверждается, что при ком-
бинировании двух защищенных связей в транспортном режиме с целью
обеспечения возможности применения протоколов АН и ESP одновременно
для одного сквозного потока между двумя конечными системами приемле-
мым оказывается только одно упорядочение протоколов защиты — а именно
использование протокола ESP до применения протокола АН. Почему реко-
мендуется именно такой порядок, а не аутентификация до шифрования?
5. • Какой из типов обмена ISAKMP <см. табл. 13,4) соответствует энергич-
ному обмену ключами Oakley (см рис. 13.11)?
• Для каждого сообщения энергичного обмена ключами Oakley укажите,
в какой из типов полезного груза ISAKMP попадает каждый из пара-
метров соответствующего сообщения.
взаимодействия
В этом дополнении предлагается краткий обзор протоколов межсетевого
взаимодействия Мы начнем с выяснения роли этих протоколов в обеспечении
межсетевого обмена данными, а затем рассмотрим два главных протокола меж-
сетевого взаимодействия — IPv4 и IPv6.
Роль протокола межсетевого взаимодействия
Протокол межсетевого взаимодействия (IP) предоставляет функциональные
возможности для связывания конечных систем через множество сетей. Для этого
1Р реализуется в конечных системах и маршрутизаторах, являющихся внешни-
ми устройствами, обеспечивающими связь между сетями. Данные высшего уров-
ня в конечной системе-отправителе инкапсулируются в протокольной единице
данных (PDU) для передачи с использованием протокола IP. PDU затем могут
ДОПОЛНЕНИЕ 13А. ПРОТОКОЛЫ МЕЖСЕТЕВОГО ВЗАИМОДЕЙСТВИЯ
521
передаваться через несколько сетей и связывающих эти сети маршрутизаторов,
чтобы достичь конечной системы адресата.
Маршрутизатор может справиться с целым рядом различий, существующих
между сетями, включая следующие.
* Схемы адресации. Сети могут иметь различные схемы представления адре-
сов назначения внешних устройств. Например, в локальной сети IEEE 802
для внешних устройств предусмотрены либо 16-битовые, либо 48-битовые
двоичные адреса; открытая сеть с коммутацией пакетов Х.25 использует 12-
разрядные десятичные адреса (закодированные по 4 бита на разряд, в ре-
зультате чего получается 48-битовый адрес). При этом требуется некоторая
форма глобальной сетевой адресации, а также служба каталогизапии.
Максимальные размеры пакетов. Может случиться так, что пакеты одной
сети потребуется разбить на меньшие части для того, чтобы передавать их в
другой сети, что обычно называют фрагментацией. Например, в Ethernet
максимальным размером пакета является 1500 байтов, а в сетях Х.25 мак-
симальный размер пакетов равен 1000 байтов. Пакету, который передается
по сети Ethernet и принимается маршрутизатором для передачи в сеть Х.25,
может потребоваться фрагментация в два пакета меньшей длины.
Интерфейсы. Аппаратные и программные интерфейсы различных сетей
различаются. Маршрутизаторы не должны зависеть от таких различий.
Степени надежности. Разные сетевые службы могут обеспечивать самые
разные уровни надежности, начиная от надежного сквозного виртуального
канала до совершенно ненадежного сервиса. Работа маршрутизаторов не
должна зависеть от предположений о степени надежности сетей.
Как показано на рис. 13.13, функционирование маршрутизатора зависит от
применяемого протокола межсетевого взаимодействия Для показанного на ри-
сунке примера соответствующая функция выполняется протоколом межсетевого
взаимодействия (IP) связки протоколов TCP/IP. При этом IP должен быть реа-
лизован во всех конечных системах всех сетей, а также в маршрутизаторах.
Кроме того, каждая конечная система должна иметь совместимые протоколы
над 1Р, чтобы успешно взаимодействовать с такими системами Промежуточным
маршрутизаторам при этом достаточно быть согласованными только до уровня
IP включительно.
Рассмотрим передачу блока данных от конечной системы X к конечной сис-
теме У на рис. 13.13. Уровень 1Р в X получает блоки данных, которые следует
переслать системе У с использованием TCP в системе X, На уровне IP присоеди-
няется заголовок, который описывает глобальный межсетевой адрес системы У.
Такой адрес состоит из двух частей: сетевого идентификатора и идентификатора
конечной системы. Давайте назовем этот блок пакетом IP. Далее, IP выясняет,
что адресат (У) находится в другой подсети. Поэтому первым Шагом должна
быть пересылка пакета маршрутизатору — в данном случае это маршрутиза-
тор I. Для этого IP передает элемент данных ниже, на уровень LLC (Logical Link
Control — управление логическим соединением) с соответствующей информаци-
ей адресации. LLC создает протокольную единицу данных LLC, которая переда-
ется ниже, на уровень MAC (Media Access Control — управление доступом к сре-
522
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
Рис. 13.13. Пример конфигурации для случая с ТРС/1Р
де| На уровне МАС создается пакет МАС, заголовок которого содержит адрес
маршрутизатора 1.
Затем пакет направляется по локальной сети к маршрутизатору 1. Маршру-
тизатор убирает заголовки и концевики пакета и LlC, а затем анализирует заго-
ловок 1Р, чтобы определить концевой адрес конечного получателя данных, в
данном случае получателя У. Теперь маршрутизатору необходимо выбрать мар-
шрут. Здесь имеется две следующие возможности.
1. Конечная система адресата У находится непосредственно ь одной из подсе-
тей, с которыми соединен маршрутизатор. ь ‘
2, Чтобы достичь адресата, требуется использовать как минимум еще один
дополнительный маршрутизатор.
В рассматриваемом нами примере пакет адресату можно доставить только че-
рез маршрутизатор 2. Поэтому маршрутизатор 1 передает пакет IP маршрутиза-
тору 2 через промежуточную сеть. Для этого используются протоколы промежу-
точной сети. Например, если промежуточная сеть является сетью Х.25, элемент
данных IP упаковывается в пакете Х.25 с соответствующей информацией адре-
сации, позволяющей добраться до маршрутизатора 2. Когда пакет прибывает к
маршрутизатору 2, заголовок пакета убирается. Маршрутизатор выясняет, что
данный пакет JP предназначается для узла У, подсоединенного непосредственно
к подсети, к которой подсоединен и маршрутизатор. Поэтому маршрутизатор
создает пакет с адресом У и передает этот пакет в локальную сеть. Данные нако-
нец достигают У, где уже можно снять заголовки и концевики пакета, LLC и
протокола межсетевого взаимодействия.
ДОПОЛНЕНИЕ 13А. ПРОТОКОЛЫ МЕЖСЕТЕВОГО ВЗАИМОДЕЙСТВИЯ
523
Предлагаемый IP сервис является ненадежным, а это значит, что )Р не гаран-
тирует, что все данные будут доставлены или что доставляемые данные прибудут в
пункт назначения в соответствующем порядке. За исправление возникающих при
передаче ошибок несет ответственность следующий, более высокий уровень, в дан-
ном случае TCP. Такой подход обеспечивает немалую гибкость. Ввиду того что
доставка не гарантируется, нет никаких специальных требований надежности и к
подсетям, по которым выполняется доставка. Таким образом, протокол должен
работать при любой комбинации типов подсетей, В связи с тем, что гарантирован-
ного порядка доставки пакетов не предполагается, следующие один за другим па-
кеты могут передаваться различными маршрутами. Это позволяет протоколу реа-
гироьать на перегрузку и отказы в подсетях с помощью изменения маршрутов.
IPv4
В течение уже десятилетий ключевым элементом архитектуры протоколов
TCP/IP был протокол межсетевого взаимодействия (IP) версии 4. На
рис 13.14(a) показан формат заголовка IP, занимающего как минимум 20 бай-
тов, или 160 битов. Этот заголовок имеет следующие поля.
Версия (4 бита). Указывает номер версии, чтобы учесть эволюцию прото-
кола; значением является 4.
Длина заголовка межсетевого взаимодействия (IHL — Internet Header
Length) (4 бита). Длина заголовка в 32-битовых словах. Минимальным
значением является 5, что соответствует минимальной длине заголовка в
20 октетов.
а Тип сервиса (8 битов). Обеспечивает указания об относительном приорите-
те пакетов модулям IP конечной системы и маршрутизаторам на пути сле-
дования пакета.
Общая длина (16 битов). Общая длина пакета IP в байтах.
• Идентификация (16 битов). Некоторый порядковый номер, который вме-
сте с адресом источника, адресом назначения и протоколом пользователя
предназначен для того, чтобы идентифицировать пакет. Таким образом,
идентификатор должен быть уникальным для адреса источника, адреса
назначения и протокола пользователя данного пакета на протяжении всего
времени нахождения пакета в межсетевом пространстве.
Флаги (3 бита). Пока что определен*- только два из битов этого поля. Когда
пакет фрагментирован, бит More (еще) указывает, является ли данный
фрагмент последним в оригинальном пакете. Установленный бит
Not Fragment (не фрагментировать) запрещает фрагментацию. Этот бит мо-
жет оказаться полезным тогда, когда известно, что адресат не имеет воз-
можностей для повторного связывания фрагментов. Однако если этот бит ус-
тановлен, пакет будет отвергнут при условии, что его длина превышает мак-
симальный размер, разрешенный для некоторой подсети на пути следования
пакета. Таким образом, если бит установлен, может оказаться целесообраз-
ным использовать маршрутизацию источника, чтобы избежать переходов в
подсети со слишком малыми максимальными размерами пакетов.
S24
глава 13. защита на уровне ip
(а) заголовок IPv4
Рис 13.14. Заголовки IP
Смещение фрагмента (13 битов). Указывает в 64-битовых единицах, где в
оригинальном пакете размещается данный фрагмент Это значит, что для
фрагментов, не являющихся последними, длина поля данных должна быть
кратна 64 битам.
Время жизни (8 битов). Указывает в секундах, как долго пакету разреша-
ется оставаться в межсетевом пространстве. Каждый маршрутизатор, обра
батывающий пакет, должен уменьшить значение этого поля по крайней
мере на единицу, так что поле времени жизни отчасти подобно счетчику
транзитов.
ДОПОЛНЕНИЕ 13А. ПРОТОКОЛЫ МЕЖСЕТЕВОГО ВЗАИМОДЕЙСТВИЯ
525
Протокол (8 битов). Указывает протокол следующего более высокого уров-
ня. который должен принять поле данных в узле адресата; таким образом,
это поле указывает тип следующего заголовка в пакете после заголовка IP.
Контрольная сумма заголовка (16 битов). Код обнаружения ошибок, при-
меняемый Тольк- к заголовку. Поскольку некоторые поля заголовка могут
измениться в ходе транзита (например, время жизни и связанные с сег-
ментацией поля), они проверяются и их значения повторно вычисляются в
каждом маршрутизаторе. Значением поля контрольной суммы является
сумма обратных кодив (16-битовых дополнений до единицы) всех 16-
битовых слов заголовка. С целью определенности вычислений поле кон-
трольной суммы инициализируется нулевым значением.
Адрес источника (32 бита). Кодируется, чтобы имелась возможность нуж-
ным образом задать биты, указывающие сеть и конечную систему, присое
диненную к указанной сети (7 и 24 бита, 14 и 16 битов или 21 и 8 битов).
Адрес назначения (32 бита). Те же требования, что и для адреса источника,
Опции (переменной длины). Это поле представляет параметры, запраши-
ваемые отправляющим пакет пользователем; они могут включать метку
грифа (секретности), исходную маршрутизацию, запись маршрутизации и
метки даты-времени-
Заполнение (переменной длины). Служит для того, чтобы сделать длину
заголовка пакета кратной 32 битам.
IPv6
В 1995 году Проблемная группа проектирования Internet (IETF), которая раз
рабатывает стандарты протоколов для Internet, опубликовала спецификации но-
вой версии IP, версии нового поколения, получившей название IPng, Эти специ-
фикации 1996 году стали стандартом, называемым сегодня IPv6. По сравне-
нию с существующим стандартом IP (известным как IPv4) IPv6 имеет целый ряд
функциональных усовершенствований, целью которых является возможность
использования возросших скоростей передачи данных современных сетей и ком-
бинирования потоков данных, включающих графику и видео, также получаю-
щих все большее распространение. Но главной движущей силой разработки но-
вого протокола являлась необходимость применения большего числа адресов. В
IPv4 для описания источника или адресата используется 32-битовый адрес. С
бурным ростом Internet и частных сетей, связанных с Internet, эта длина для
адреса стала недостаточной, чтобы ее можно было приспособить для описания
адреса любой из требуемых систем. Как показано на рис. 13.146, в IPv6 исполь-
зуются 128 битовые поля для адресов источника и адресата. Предполагается, что
в конце концов к использованию IPv6 придут все построенные на TCP/IP систе-
мы, но этот процесс может занять много лет, если не десятилетия.
Заголовок IPv6
Заголовок IPv6 имеет фиксированную длину в 40 байтов и формируется из
следующих полей (рис. 13.14(6)).
526
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
Версия (4 бита). Номер версии протокола межсетевого взаимодействия;
значением является 6.
Класс трафика (8 битов). Данное поле доступно для использования узлом
источника и/или передающими маршрутизаторами с целью идентифика-
ции и разделения на классы по приоритетам пакетов IPv6. Преимущества
этого ноля пока не очень ясны.
Метка потока (20 битов). Может использоваться для того, чтобы пометить
те пакеты, для которых от маршрутизаторов в сети требуется специальная
обработка. Использование метки потока может сопровождать резервирова-
ние ресурсов и обработку потока в режиме реального времени.
Длина полезного груза (16 битов). Длина части пакета IPv6, следующей за
заголовком, в байтах. Другими словами, это общая длина всех заголовков
расширения плюс PDU (модуль данных протокола) транспортного уровня.
Следующий заголовок (8 битов). Идентифицирует тип заголовка, следую-
щего непосредственно за заголовком IPv6 — это либо заголовок расшире-
ния IPv6, либо заголовок высшего уровня, например TCP или UDP,
Предельное число транзитов (8 битов). Оставшееся допустимое числ’
транзитов для данного пакета. Предел для числа транзитов устанавливает-
ся равным некоторому максимальному значению источником и уменьша-
ется на 1 каждым узлом, передающим пакет далее Пакет будет отвергнут,
если значение ноля предельною числа транзитов уменьшается до нуля.
Адрес источника (128 битов). Адрес создателя пакета.
Адрес назначения (128 битов). Адрес предполагаемого получателя пакета.
На самом деле, как объясняется ниже, это может быть и не предполагае-
мый конечный получатель, если присутствует заголовок расширения мар-
шрутизации.
Хотя заголовок IPv6 и длиннее обязательной порции заголовка IPv4 (40, а не
20 байтов), он содержит меньше полей (8, а не 12). Вследствие этого с заголов-
ком IPv6 маршрутизаторы имеют меньше работы, что должно ускорить маршру-
тизацию
Заголовки расширений IPv6
Пакет IPv6 формируется из только что приведенного заголовка IPv6 и яеко
торого (возможно, нулевого) числа заголовков расширения. За пределами IPSec
определены следующие заголовки расширений.
Заголовок параметров транзита. Определяет специальные параметры, тре-
буемые для транзита.
Заголовок маршрутизации. Обеспечивает расширенные возможности мар-
шрутизации, подобные исходной маршрутизации IPv4
Заголовок фрагментации. Содержит информацию о фрагментации и по-
вторной сборке пакета.
Заголовок аутентификации. Обеспечивает целостность и аутентификацию
пакета.
ДОПОЛНЕНИЕ 13А. ПРОТОКОЛЫ МЕЖСЕТЕВОГО ВЗАИМОДЕЙСТВИЯ
627
Заголовок включающего защиту полезного груза. Обеспечивает секретность.
Заголовок параметров адресата. Содержит необязательную информацию,
которая должна быть обработана в узле адресата.
Для случая использования нескольких заголовков расширений стандарт IPv6
рекомендует, чтобы заголовки IPv6 размещались в следующем порядке.
1. Заголовок IPv6. Обязателен, должен всегда размещаться первым.
2. Заголовок параметров транзита.
3. Заголовок параметров адресата Предназначен для опций, которые должны
обрабатываться первым адресатом, указанным в поле адреса назначения
IPv6, и последующими адресатами, перечисленными в заголовке маршру-
тизации .
4. Заголовок маршрутизации.
5. Заголовок фрагментации.
6. Заголовок аутентификации.
7. Заголовок включающего защиту полезного груза
8. Заголовок параметров адресата. Для опций, которые должны обрабаты-
ваться конечным адресатом пакета.
На рис. 13.15 показан пример пакета IPv6, включающего по экземпляру ка-
ждого из заголовков, кроме заголовков защиты. Обратите внимание на то, что в
заголовке IPv6 и каждом из заголовков расширений имеется поле следующего
заголовка. В этом поле указан тип следующего заголовка. Если следующий заго-
ловок является заголовком расширения, тогда данное поле содержит идентифи-
катор типа такого заголовка. Иначе данное поле должно содержать идентифика-
тор протокола верхнего уровня, использующего IPv6 (обычно это протокол
транспортного уровня), значение которого по структуре аналогично значению
поля протокола IPv4. На рис. 13.15 протоколом верхнего уровня является TCP,
так что пересылаемые пакетом IPv6 данные верхнего уровня складываются из
заголовка TCP и следующего за ним блока данных приложения.
Заголовок параметров транзита несет дополнительную информацию, кото-
рую, если она присутствует, должен обрабатывать каждый маршрутизатор на
пути следования пакета. Этот заголовок складывается из следующих полей-
• Следующий заголовок (8 битов). Указывает тип заголовка, следующего
непосредственно за данным.
Длина заголовка расширения (8 битов). Длина данного заголовка в 64-
битовых единицах длины, не включая первые 64 бита.
Опции. Указание на одну или несколько опций. Каждая опция состоит из
трех подполей: признака, определяющего тип опции, длины и некоторого
значения
Пока что определена только одна опция: это признак очень большого полез-
ного груза, используемый тогда, когда требуется переслать пакет IPv6 с полез-
ными грузом, по длине превышающим 2'"-1 = 65535 байтов. Значение поля
параметров данных этой опции, имеющее длину 32 бита, дает длину такого па-
кета в байтах, исключая заголовок IPv6. Для таких пакетов значение поля дли-
528
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ IP
Байты:
Заголовок IPv6
Заголовок параметров
транзита
Заголовок
маршрутизации
Заголовок фрагмент*пии
Заголовок параметров
адресата
Заголовок TCP
Данные приложения
SV <
40
Переменной длины
Переменной длины
8
Переменной длины
.41 т *:
20 (плюс необязательная часть переменной длины)
-1,ЯГ-ЬЬ>
Переменной длины
Поле следующего заголовка
Рис. 13.15. Пакет IPv6 с заголовками расширений (включая сегмент TCP)
ны полезного грузе в заголовке IPv6 должно быть установлено равным нулю и
не должно быть заголовка фрагментации. С установленной указанной опцией
IPv6 поддерживает пакеты длиной до некоторого максимального значения, пре-
вышающего 4 Гбайт. Это дает возможность пересылать большие пакеты с видео-
данными и позволяет IPv6 выбрать лучшую пропускную способность в любой
передающей среде.
Заголовок маршрутизации содержит список промежуточных узлов, которые
должны быть посещены на пути к адресату пакета. Заголовок маршрутизации на-
чинается с 32-битового блока, состоящего из четырех 8-битовых полей, за которым
следуют данные маршрутизации, специфические для данного типа маршрутиза-
ции. Четырьмя указанными 8-битовыми полями являются поле следующего зато
лавка, поле длины заголовка расширения, а также два следующих поля.
Тип маршрутизации. Идентифицирует конкретный вариант заголовка
маршрутизации. Если маршрутизатор не распознает значение типа мар-
шрутизации, он должен отвергнуть пакет.
Оставшиеся сегменты. Число явно указанных промежуточных вершин, ко-
торые еще осталось посетить до того, как пакет будет доставлен конечному
адресату.
ДОПОЛНЕНИЕ 13А. ПРОТОКОЛЫ МЕЖСЕТЕВОГО ВЗАИМОДЕЙСТВИЯ
529
В дополнение к этому общему определению заголовка спецификации IPv6 оп-
ределяет заголовок маршрутизации типа 0. При использовании заголовка мар-
шрутизации типа 0 узел-источник не размещает адрес конечного получателя в
заголовке IPv6. Вместо этого такой адрес указывается в качестве последнего ад-
реса в списке заголовка маршрутизации, а в заголовок IPv6 помещается адрес
первого из требуемых маршрутизаторов па пути следования пакета. Заголовок
маршрутизации не будет обработан до тех пор, пока пакет не достигнет узла,
указанного в заголовке IPv6. В этом узле содержимое заголовка IPv6 и заголов-
ка маршрутизации изменяется и пакет передается дальше. Изменения состоят в
помещении в заголовок IPv6 адреса следующего из узлов, которые необходимо
посетить, и уменьшении на единицу значения поля оставшихся сегментов в за-
головке маршрутизации.
Протокол IPv6 требует наличия IPv6 в узле, где может возникнуть необходи-
мость вернуть пакет отправителю, чтобы узел мог восстановить уже пройденный
пакетом маршрут.
Заголовок фрагментации используется источником тогда, когда требуется
фрагментация пакета. В случае с IPv6 предполагается, что фрагментация может
быть выполнена только узлом источника, а не маршрутизаторами вдоль мар-
шрута доставки пакета. Чтобы использовать все преимущества среды межсетево-
го взаимодействия, узел должен воспользоваться алгоритмом восстановления
маршрута, что даст возможность выяснить наименьшее значение максимальной
единицы передачи (MTU), поддерживаемой всеми п (дсетями на маршруте. Дру-
гими словами, алгоритм восстановления маршрута дает узлу возможность выяс
нить MTU "узких мест” маршрута. Выяснив это значение, узел источника может
нужным образом фрагментировать пакет в зависимости от имеющегося адреса
назначения. Иначе источнику придется ограничить длины всех пакетов до 1280
байтов, что представляет собой минимальное значение MTU, которое должно
поддерживаться любой подсетью.
Кроме поля следующего заголовка, заголовок фрагментации включает сле-
дующие поля.
Смешение фрагмента (13 битов). Указывает, где в оригинальном пакете
находится полезный груз данного фрагмента. Измеряется в 64-битовых
единицах длины. Отсюда следует, что фрагменты (все, кроме последнего)
должны содержать поля данных, длины которых кратны 64 битам.
Резерв (2 бита). Зарезервировано для будущего использования.
Флаг М (1 бит). 1 означает, что еще имеются фрагменты, а 0 — что это
последний фрагмент.
Идентификация (32 бита). Поле предназначено для однозначной иденти-
фикации оригинального пакета. Идентификатор должен быть уникальным
для данных источника и адресата в течение всего времени, пока пакет ос-
тается в межсетевом пространстве. Все фрагменты с одинаковыми иденти-
фикаторами и адресами источника получателя будут повторно собраны
вместе, чтобы воссоздать оригинальный пакет.
Заголовок параметров адресата несет необязательную информацию, которая,
если она имеется, будет рассмотрена только в узле конечного получателя пакета.
Формат этого заголовка тот же, что и у заголовка параметров транзита.
530
ГЛАВА 13. ЗАЩИТА НА УРОВНЕ ЕР
ГЛАВА
14
Защита Web
4.' '•??' !*i
Пора взятия за ум.
Очнись и посмотри в глаза реальности.
(Uee your mentality
Wake up to reality)
Из лесам Коула Портера (Cole Porter)
••I’ve Got You under Mj-Skin”
Сегодня собственный Web-узел имеют не только прак-
тически все коммерческие организации и больший
,, ство государственных учреждений, но и многие ча-
стные лица. Число индивидуальных и корпоративных поль-
зователей Internet растет очень быстро, и все они имеют
Web-броузеры с графическим интерфейсом. Как следствие,
коммерческие структуры с энтузиазмом относятся к идее
использования Web в целях организации электронной тор
говли. Однако реальность такова, что Internet и Web ока-
зываются достаточно уязвимыми с точки зрения угроз са-
мого разного типа. Столкновение с действительностью за-
ставляет коммерческие структуры уделять все больше
внимания средствам обеспечения безопасности Web.
Тема защиты Web обширна сама по себе и вполне заслу-
живает отдельной книги (несколько книг, посвященных этой,
теме, рекомендуется читателю в конце главы). Мы же снача-
ла обсудим основные требования безопасности Web, а затем
перейдем к двум стандартным схемам защиты — SSL/TLS и
SET — значение которых для электронной коммерции уже
сегодня очень важно и постоянно возрастает.
14.1. Проблем
По сути, World Wide Web можно интерпретировать как
приложение типа клиент/сервер, работающее в сети
Internet и внутренних сетях предприятий на основе протокола TCP/IP. В такой
интерпретации все упоминавшиеся в данной книге подходы к обеспечению за-
щиты и соответствующие средства ее обеспечения применимы и к вопросу о
безопасности Web. Однако, как отмечено в [GARF97], в отношении Web возни-
кает и ряд новых проблем, не рассматриваемых в контексте компьютерной безо-
пасности и классической защиты сетей.
* Сеть Internet допускает двусторонний обмен информацией. В отличие от
традиционных средств распространения информации, включая даже теле-
текст, голосовую почту и автоматическую отправку факсов, Web оказыва-
ется уязвимой в отношении возможности проникновения на Web-узлы и
изменения их содержимого через Internet.
Web все чаще служит для обеспечения доступа к корпоративной информа-
ции и информации с производимых компанией продуктах, а также для
осуществления всевозможных транзакций. Поэтому нарушение работы
Web-сервера может отразиться не только на репутации компании, но и
вылиться в значительный материальный ущерб.
Хотя использовать Web-броузеры совсем просто, настраивать и поддержи-
вать Web-серверы относительно нетрудно, а для создания Web-страниц не
требуется особого мастерства — сложность соответствующего программно-
го обеспечения исключительно высока. Такое сложное программное обес-
печение может содержать множество потенциальных недостатков с точки
зрения обеспечения защиты. Весьма короткая история Web изобилует
примерами новых и новейших систем, оказавшихся весьма уязвимыми в
отношении нарушений защиты самого разного типа.
ь Web-сервер можно использовать как плацдарм для проникновения в лю-
бую часть всего компьютерного комплекса компании или организации. Ес-
ли работа Web-сервера соответствующим образом нарушена, нарушитель
может получить доступ к данным и системам, не являющимся частью
Web, а подключенным к серверу в рамках локальной сети.
Типичными потребителями услуг Web являются случайные и не имеющие
специальной подготовки (в области вопросов защиты) пользователи. Таких
пользователей, как правило, не волнует риск нарушения зашиты, они не
имеют специальных средств и достаточных знаний для того, чтобы ис-
пользовать эффективные контрмеры.
Угрозы нарушения защиты Web
В табл. 14.1 перечислены основные типы угроз нарушения зашиты, возни-
кающие при использовании Web технологий. Один из подходов к классифика-
ции этих угроз заключается в разделении нарушений на пассивные и активные.
К пассивным нарушениям защиты можно отнести перехват данных на пути ме-
жду броузером и сервером или получение доступа к закрытой информации на
Web-узле. К активным нарушениям защиты относятся, например, попытки на-
рушителя выдать себя за другого пользователя, изменение потока сообщений
между клиентом и сервером, модификация информации, составляющей содер-
жимое Web-узла.
532
ГЛАВА 14. ЗАЩИТА WEB
Таблица 14.1. Сравнительные характеристики угроз нарушения защиты
Web [RUR197]
VrpO3b» Последствия Контрмеры
Целостность • Изменение пользователь- ских данных. • Внедрение “троянских Коней". • Изменение информации в памяти. • Изменение потока сообще- ний на пути их передачи • Потеря информации. • Компрометация компьютерной системы. • Уязвимость в отно- шении угроз нару- шения зашиты всех остальных типов Криптогра- фические контрольные суммы
Кочфидев циальность • Перехват данных в сети • Кража информации, хра- нящейся на сервере. • Кража информации, хра- нящейся на компьютере- клиенте • Получение информации о конфигурации сети. • Получение информации о клиенте, обращающемся к серверу • Потеря информации. • Нарушение тайны информации Шифрование, прокси- серверы Web
Отказ в об- служивании • Прекращение сеанса досту- па пользователя. • Перегрузка машины пото- ком фальшивых попыток доступа. • Умышленное переполнение дискового пространства или оперативной памяти. • Изоляция системы путем атак на DNS-cepBt-p * Разрушительные последствия для системы • Раздражение поль- зователей. • Задержки в работе пользователей Трудно пре- дотвратить
Аутенти- фикация • Попытки нарушителя вы- дать себя за легального пользователя. • Фальсификация данных • Неправильное представление пользователей. • Доверие к иска- женным данным Криптогра- фические тех нологии
Другой подход к классификации угроз нарушения зашиты основан на ис-
пользовании информации о месте их проявления: на Web-сервере, в броузере
или потоке данных между броузером и сервером. Вопросы обеспечения защиты
сервера и броузера относятся к вопросам безопасности компьютерных систем,
поэтому их можно рассматривать в контексте материала, изложенного в ГУ части
книги Проблема зашиты потока данных относится к категории проблем защиты
сетей и будет исследована в данной главе.
14.1. ПРОБЛЕМЫ ЗАЩИТЫ WEB
533
Способы защиты потока данных в Web ‘ • ••
Существует несколько подходов к обеспечению защиты данных в Web. Все
они похожи с точки зрения предоставляемых возможностей и в некоторой сте-
пени с точки зрения используемых механизмов защиты, но различаются по об-
ластям применения и размещению соответствующих средств защиты в стеке
протоколов TCP/IP.
Эти различия иллюстрирует схема, показанная па рис. 14.1. Один из методов
защиты данных в Web состоит в использовании протокола защиты IP (IPSec)
(см. рис. 14.1(a)). Преимущество использования IPSec заключается в том, что
этот протокол прозрачен для конечного пользователя и приложений и обеспечи-
вает универсальное решение. Кроме того, протокол IPSec включает средства
фильтрации, позволяющие использовать его только для той части потока дан-
ных, для которой это действительно необходимо.
() Сетевой уровень
(б) Транспортный уровень
S/MIME { PGP SET
KeibenM SMTP НПP
UDP TCP 1
IP
(в) Уровень приложения
Рис. 14.1 Размещение средств защиты в стеке протоколов TCP/IP
Другим в какой-то мере универсальным решением является размещение
средств обеспечения безопасности сразу над протоколом TCP (рис. 14.1. (б)).
Примером современной реализации такого подхода являются стандарт SSL
(Secure Socket Layer — протокол защищенных сокетов) и его более новая вер-
сия — стандарт TLS (Transport Layer Security — протокол защиты транспортни
го уровня) безопасной передачи данных в Internet. На этом уровне для практиче-
ской реализации данного подхода имеется две возможности. Самым общим ре-
шением является внедрение средств SSL (или TLS) в набор соответствующих
протоколов, что обеспечивает прозрачность средств защиты для приложений. В
то же время средства SSL можно встраивать и в прикладные программы. На-
пример, броузеры Netscape и Microsoft Internet Explorer, а также большинство
Web-серверов имеют встроенную поддержку SSL.
Различные средства защиты могут встраиваться и в приложения, как показа-
но на рис. 14.1.( в). Преимущество данного подхода состоит в том, что соответ-
ствующие средства защиты могут быть настроены оптимальным образом в зави-
симости от требований конкретного приложения. В контексте безопасности Web
важным примером реализации такого подхода является протокол SET (Secure
Electronic Transaction — протокол защиты электронных транзакций).1
Оставшаяся часть материала дайной главы будет посвящена протоколам
SSL/TLS и SET.
На рве. 14.1 протокол SET размещен над HTTP, так как имев во такая реализация является ти-
пичней. Однако имеются реализации, где SET непосредственно использует TCP.
534
ГЛАВА 14. ЗАЩИТА WEB
Протокол SSL был предложен компанией Netscape. Версия 3 данного прото-
кола создавалась в условиях открытого обсуждения и с учетом предложений
пользователей, после чего протокол был опубликован в виде проекта стандарта
защиты данных в Internet. Впоследствии, после достижения консенсуса, прото-
кол был выдвинут на роль стандарта для Internet и в рамках IETF была сформи-
рована рабочая группа TLS, задачей которой является создание общепринятого
стандарта. В настоящее время цель работы группы —разработка первой версии
соответствующего стандарта Internet. Эта первая версия стандарта TLS должна в
своей основе совпадать с SSLv3.1 и быть очень близкой к SSLv3, а также иметь
свойства обратной совместимости с последней.
Большая часть материала данного раздела будет посвящена обсуждению
SSLv3, а в конце раздела мы обсудим основные различия между SSLv3 и TLS.
Архитектура SSL
Протокол SSL призван обеспечить возможность надежной защиты сквозной
передачи данных с использованием протокола TCP. Строго говоря, SSL пред-
ставляет собой не один протокол, а два уровня протоколов, как показано на
рис. 14.2.
Протокол записи SSL (SSL Record Protocol) обеспечивает базовый набор
средств защиты, применяемых протоколами более высоких уровней. Эти Средст-
ва, в частности, может использовать протокол передачи гипертекстовых файлов
(HTTP), призванный обеспечить обмен данными при взаимодействии клиентов и
серверов Web. Частью SSL считаются и три протокола более высокого уровня:
протокол квитирования установления связи (Handshake Protocol), протокол из-
менения параметров шифрования (Change Cipher Spec Protocol) и протокол из-
вещения (Alert Protocol). Эти протоколы служат для управления обменом дан-
ными SSL и рассмотрены ниже.
14 2 ПРОТОКОЛЫ SSL И TLS
535
Работа протокола SSL описывается в терминах двух важных понятий — сеан-
са SSL и соединения SSL.
Соединение (connection). Соединением называется транспорт (в терминах
модели OSI), обеспечивающий сервис некоторого подходящего типа. В слу-
чае SSL такие соединения представляют равноправные отношения между
узлами. Соединения являются временными. Каждое соединение ассоции-
руется только с одним сеансом.
• Сеанс (session). Сеанс SSL — это связь между клиентом и сервером. Сеан-
сы создаются протоколом квитирования SSL (SSL Handshake Protocol). Се-
анс определяет набор параметров криптографической защиты, которые мо-
гут использоваться несколькими соединениями. Сеансы позволяют избе-
жать необходимости ведения переговоров об установлении параметров
защиты для каждого нового соединения.
Между любой парой обменивающихся информацией сторон (например, приложе-
ний типа HTTP клиента и сервера) можно установить много защищенных соедине-
ний. Теоретически между сторонами можно установить и несколько одновременно
существующих сеансов, но на практике такая возможность не используется.
Каждый сеанс характеризуется тем или иным состоянием. Например, после
установления сеанса имеет место рабочее состояние (operating state) для чтения
и записи (т.е. получения и отправки информации). А ь<> время работы протокола
квитирования SSL (SSL Handshake Protocol) создается состояние ожидания
(pending state) чтения и записи. После успешного завершения работы протокола
квитирования SSL состояние ожидания переходит в рабочее состояние.
Состояние сеанса определяется следующими параметрами (определения даны
по спецификации SSL).
в Идентификатор сеанса (session identifier). Произвольная последователь-
ность байтов, генерируемая сервером для идентификации активного или
возобновляемого состояния сеанса.
и Сертификат узла (peer certificate), Сертификат X509.v3 стороны, участ-
вующей в сеансе Этот элемент состояния может быть пустым.
Метод сжатия (compression method). Алгоритм сжатия данных перед их
шифрованием.
Параметры шифрования (cipher spec). Задают алгоритм шифрования дан
пых (например, null, DES и т.п.) и алгоритм хэширования (например, MD5
или SHA-1); служит для вычисления значений МАС Кроме того, данные
параметры определяют криптографические атрибуты типа длины хэш-кода
Главный ключ (master secret). 48 байтовый секретный ключ, используе-
мый клиентом и сервером.
* Флаг возобновления (is resumable). Признак, разрешающий использовать
данный сеанс повторно для инициализации новых соединений.
Состояние соединения определяется следующими параметрами.
Случайный идентификатор. Последовательность байтов, генерируемая для
идентификации каждого соединения сервером и клиентом.
Ключ записи МАС сервера. Секретный ключ, применяемый сервером при
вычислении значений МАС для отправляемых им данных.
536
ГЛАВА 14. ЗАЩИТА WEB
• Ключ записи МАС клиента. Секретный ключ, с которым клиент вычисля-
ет значения MAC для отправляемых им данных.
Ключ записи сервера. Ключ традиционной схемы шифрования, исполь-
зуемый сервером для шифрования данных и клиентом для дешифрования
этих данных.
• Ключ записи клиента. Ключ традиционной схемы шифрования, исполь-
зуемый клиентом для шифрования данных и сервером для дешифрования
этих данных.
• Векторы инициализации. При блочном шифровании в режиме СВС
(режим сцепления шифрованных блоков) для каждого ключа требуется
вектор инициализации (IV). Первый раз это поле инициализируется про-
токолом квитирования SSL, а затем для каждой следующей записи в каче
стве IV используется сохраненный шифрованный текущий блок.
Порядковые номера. Каждая из сторон самостоятельно нумерует отправ-
ляемые и получаемые по каждому соединению сообщения. Когда одна из
сторон получает или отправляет сообщение об изменении параметров
шифрования, соответствующий порядковый номер устанавливается рав-
ным 0. Порядковые номера не превышают значения 2м - 1.
Протокол записи SSL
Протокол записи SSL (SSL Record Protocol) обеспечивает поддержку двух сле-
дующих сервисов для соединений SSL.
Конфиденциальность. Протокол квитирования SSL (SSL Handshake
Protocol) определяет общий для клиента и сервера секретный ключ, ис-
пользуемый алгоритмом традиционной схемы для шифрования данных,
передаваемых по протоколу SSL.
Целостность сообщений. Помимо обеспечения конфиденциальности, щютокол
квитирования SSL определяет общий секретный ключ для вычисления значе-
ний MAC (Message Authentication Code — код аутентичности сообщения).
На рис. 14.3 показана обшая схема работы протокола записи SSL. Этот про-
токол. получив сообщение для пересылки другой стороне, сначала фрагментиру-
ет данные, разбивая их на блоки подходящего размера, при необходимости вы-
полняет сжатие данных, применяет алгоритм вычисления МАС, шифрует дан-
ные, добавляет заголовок и передает полученные пакеты сегменту TCP.
Принятые данные дешифруются, проверяются, восстанавливаются, собираются
вновь и передаются приложениям более высокого уровня.
Первым шагом является фрагментация. Сообщение, полученное от приложе-
ния более высокого уровня, разделяется на блоки размером не более байтов
(16384 байтов). Затем, как необязательная возможность, применяется сжатие.
Такое сжатие должно происходить без потерь и не должна увеличивать размер
блока более чем на 1024 байта/ В спецификациях SSL 3 (а также в текущей
версии TLS) по умолчанию алгоритмы сжатия не применяются.
2
Конечно, от сжатия ожидается уменьшение, а не увеличение объема данных. Однако для ма-
лых (по длине) блоков данных сжатие может привести и к увеличению длины полученного в
результате блока по сравнению с длиной исходного.
J4.2. ПРОТОКОЛЫ SSL И TLS
537
Данные приложения
Рис. 14.3. Схема работы протокола записи SSL
Следующим шагом является вычисление кода аутентичности сообщения
(значения МАС) для сжатых данных. Для этого служит общий секретный ключ.
Вычисления выполняются по следующей схеме.
hash(MAC_write_secret |l pad..2 II
hBsh(MAC_write_secret ||pad_l ||seq_nuin || SSLCompressed.type l|
SSLCompressed.length || SSLCompressed. fragment)), ’ 1
где
II
MAC_wnte_secret
hash
pad_l
pad_2
seqnum
SSLCompressed -type
SSLCompressed.length
SSLCompressed.fragment
— операция конкатенации;
— общий секретный ключ;
— криптографический алгоритм хэширования
(MD5 или SHA 1);
— байт 0x36 (000 ОНО), повторенный 48 раз
(384 бита) при использовании MD5 или 40
раз (320 битов) при использовании SHA-1;
— байт 0х5С (0101 1100), повторенный 48 раз
для MD5 или 40 раз для SHA1,
— порядковый номер для данного сообщения,
— протокол более высокого уровня, используе-
мый для обработки данного фрагмента;
— длина сжатого фрагмента;
— сжатый фрагмент (если сжатие не применя-
лось, то фрагмент в виде открытого текста).
Обратите внимание на то, что данный алгоритм очень похож на алгоритм
НМАС, описанный в главе 9. Различие состоит в том, что в SSLv3 заполнители
связываются операцией конкатенации, а в НМАС — операцией XOR
538
ГЛАВА 14. ЗАЩИТА WEB
(исключающее “ИЛИ"). Дело в том, что алгоритм вычисления МАС в SSLv3 ос-
нован на оригинальном проекте стандарта internet для НМАС, в котором пред-
лагалось использование конкатенации. В окончательной же версии НМАС, опре-
деленной документом RFC 2104, используется XOR.
Затем сжатое сообщение вместе с добавленным к нему значением МАС шиф-
руется с использованием симметричной схемы шифрования. Шифрование тоже
не должно увеличивать длину блока более чем нв 1024 байта, поэтому общий
размер блока не может превысить 2“ + 2048 байтов. Допускается применение
следующих алгоритмов шифрования.
Блочное шифрование Поточное шифрование
Алгоритм Размер ключа Алгоритм Катмер ключа
ЮГА 128 RC4-40 40
RC2-40 40 RC4-128 128
DES-40 40
DHS 56
3DES 168
Fortezza 80
Алгоритм Fortezza может использоваться в схемах шифрования микропроцес-
сорных карт (smart card).
В случае применения алгоритмов поточною шифрования шифруются только
сжатое сообщение и добавленное к нему значение МАС. (Обратите внимание на
то. что значение МАС вычисляется перед шифрованием и, таким образом, шиф-
руется вместе с открытым текстом или сжатым открытым текстом сообщения.)
При использовании алгоритмов блочного шифрования после значения МАС
можно добавлять заполнитель. Заполнитель состоит из некоторого числа байтов
заполнителя, за которыми следует 1-байтовое значение, указывающее длину за-
полнителя Для общей длины заполнителя выбирается наименьшее из значений,
при котором общая длина последовательности данных, подлежащих шифрова-
нию (открытый текст + МАС + заполнитель), будет кратна длине блока шифра.
Рассмотрим пример, когда длина открытого текста (или сжатого открытого тек-
ста в случае применения сжатия) равна 58 байтам, длина значения МАС — 20
байтам (алгоритм SHA-1), а алгоритм шифрования (например, DES) использует
блоки длиной 8 байтов. С учетом байта длины заполнителя (padding, length) об-
щий размер блока составит 79 байтов Чтобы размер блока был кратен 8, в дан-
ном случае необходимо добавить один байт заполнителя.
Завершающим шагом в работе протокола записи SSL является создание заго-
ловка, состоящего из следующих полей.
Тип содержимого (8 битов). Определяет протокол лежащею выше уровня,
с помощью которого должен обрабатываться данный фрагмент.
Главный номер версии (8 битов). Указывает главный номер версии ис-
пользуемого протокола SSL. Для SSLv3 это поле содержит значение 3.
Дополнительный номер версии (8 битов). Указывает дополнительный номер
версии применяемого протоката SSL. Для SSLv3 это поле содержит значение 0.
14.2. ПРОТОКОЛЫ SSL И TLS
639
ч Длина сжатого фрагмента (16 битов). Длина в байтах данного фрагмента
открытого текста (или сжатого фрагмента при сжатии). Максимально до-
пустимое значение равно 2“ + 2048.
Для типа содержимого определены значения change_cipher_spec, alert,
bandshake и application_data. Первые три значения обозначают протоколы стека
SSL и будут описаны ниже. Обратите внимание на тог что между приложениями,
которые могут использовать SSL (например, HTTP), различий не делается; для SSL
созданные такими приложениями данные имеют совершенно одинаковое значение.
Формат записи, получаемой на выходе SSL, показан на рис. 14 4.
Рис. 14.4. Формат записи SSL
Протокол изменения параметров шифрования
Протокол изменения параметров шифрования (Change Cipher Spec Protocol)
является самым простым из трех протоколов высшего уровня стека протоколов
SSL. Протокол изменения параметров шифрования генерирует однобайтовое со-
общение, содержащее значение 1 (рис. 14.5(a)). Единственной задачей этого со-
общения является указание начать копирование параметров состояния ожидания
в текущее состояние, что приводит к обновлению комплекта шифров, исполь-
зуемых для данного соединения.
Протокол извещения
Протокол извещения (Alert Protocol) предназначен для передачи другой уча-
ствующей в обмене данными стороне извещений, касающихся работы SSL. Как и
данные любого другого приложения, использующего SSL, сообшения протокола
извещения точно так же сжимаются и шифруются в соответствии с параметрами
текущего состояния,
540
ГЛАВА 14. ЗАЩИТА WEB
1 байт
(а) Протокол изменения
параметров шифрования
1 байт 1 байт
Уровень Извещение
(б) Протокол извещения
1 байт
Збайта
г 0 байт
Тип Длин* Содержимое
* (в) Протокол квитирования
?! байт
Любое содержимое
Другой вышележащий протокол (например, HTTP)
Рис. 14 5. Формат полезного груза протокола записи SSL
. JI
Любое сообщение, генерируемое данным протоколом, состоит из двух байтов
(рис. 14.5(6)). Первый байт содержит значение, обозначающее соответственно
уровень предупреждения (1) или уровень неустранимой ошибки (2). Если указан
уровень неустранимой ошибки, протокол SSL немедленно разрывает соединение.
Другие соединения данного сеанса могут продолжать существовать, ни устано-
вить новое соединение для данного сеанса будет уже невозможно. Второй байт
содержит код, обозначающий конкретный смысл извещения. Сначала перечис-
лим извещения, указывающие на неустранимую ишибку (в соответствии со спе-
цификациями SSL).
г unexpected_message. Получено непригодное для обработки сообщение.
bad _record_mac. Получено неправильное значение МАС.
decompression_failure. Функция распаковки сжатых данных получила не-
правильные входные данные (т.е. данные невозможно распаковать или
длина получаемых в результате распаковки данных оказывается больше
максимально допустимой).
handshake_failure. Отправитель не смог согласовать с подучателем пара-
метры защиты на основе имеющихся возможностей.
a iliegal_parameter. Значение поля в сообщении квитирования выходит за рам-
ки допустимого диапазона или не согласуется со значениями других полей.
Кроме указанных, имеются следующие извещения.
close_notify. Извещает получателя о том, что отправитель больше не будет
отправлять сообщений с использованием данного соединения. Чтобы кор-
ректно закрыть режим записи любого соединения,, каждая из сторон
должна перед этим отправить извещение close_notify.
Jiu_sertificate. Может отправляться в ответ на -запрос о наличии сертифи-
ката, если у отвечающей стороны соответствующего сертификата нет.
badjsertificate. Полученный сертификат поврежден (т.е. содержит под-
пись, верификацию которой выполнить не удалось).
14.2. ПРОТОКОЛЫ SSL И TLS
541.
unsupported_sertificate. Тип полученного сертификата не поддерживается.
sertificate_revoked. Сертификат был отозван подписавшим его объектом.
* sertificate_expired. Срок годности сертификата истек.
sertificate „unknown. При обработке сертификата возникли какие то другие
проблемы, вследствие чего его использование оказывается невозможным.
Протокол квитирования —- • ------
Самым сложным в стеке протоколов SSL является протокол квитирования
(Handshake Protocol). Этот протокол позволяет серверу и клиенту выполнить
взаимную аутентификацию, а также согласовать алгоритмы шифрования, вы-
числения МАС и криптографические ключи, которые будут служить для защиты
данных, пересылаемых в записи SSL. Протокол квитирования должен использо-
ваться до начала пересылки данных прикладных программ.
В случае с протоколом квитирования генерируется несколько сообщений, ко-
торыми обмениваются клиент и сервер- Все они имеют формат, показанный на
рис. 14.6(b). Любое такое сообщение содержит три следующих поля.
Тип (1 байт). Указывает один из 10 допустимых типов сообщения. Допус-
тимые типы сообщений приведены в табл. 14.2,
• Длина (3 байта). Длина сообщения в байтах.
Содержимое (> 1 байта). Параметры, связываемые с сообщением данною
типа (см. табл. 14.2).
На рис. 14.6 показана схема обмена сообщениями, необходимыми при уста-
новлении логического соединения между клиентом и сервером. Процесс такого
обмена можно представить состоящим из следующих четырех основных этапов.
Этап 1. Определение характеристик защиты
На этом этапе приводится инициализация логического соединения и определя-
7 а блица 14.2. Типы сообщений протокола квитирования
Тип сообщения Параметры
hello_request ciient„hello Нет Версия, случайные значения, идентификатор сеанса, ком плект шифров, метод сжатия
server_hello Версия, случайные значения, идентификатор сеанса, ком- плект шифров, метод сжатия
certificate Цепочка сертификатов X.509v3
server_ key, exchange certificate_request server_done certificate_verify client_key „exchange finished Параметры, подпись Тип сертификата, названия уполномоченных объектов Нет < - : -- ” ' Подпись Параметры, подпись Хэш-код
542
ГЛАВА 14. ЗАЩИТА WEB
Сервер
Время
Клиент
Опреде тяют «арап еристики защит ы,
включая номер версии протокола,
идентификатор сеанса, комплект шифров,
метод сжатия и исходные случайные чиста
' Ш ?’Ь' > .с-< f»
J, •
II» *’
Сервер может передать сертификат,
сообщение обмена ключами и запрос
сертификата. Сервер сигнализирует
об окончании фазы привете тьенного
сообщении
Клиент передаст сертификат, если он
был запрошен Клиент передав г
сообщение обмена ключами
Клиент может передать сообщение
верификации сертификата
Смена комплекта шифров
И Завершение работы
Протокола квитирования
> : -с -,ь
Замечание, Серым цветом отмечены
.ообщения, являющиеся нсобязюелчными или
зависящими от ситуации вслсдс гвие чего не всегда
посылаемые в ходе рассматриваемого
здесь обмена данными
Рис 14.6 Схема работы протокола квитирования
ются связанные с ним характеристики защиты, Процесс инициируется клиентом,
который отправляет серверу сообщение client_hello со следующими параметрами.
Версия. Наивысший номер версии SSL, поддерживаемый клиентом.
Случайное значение. Генерируемая клиентом случайная структура, содер-
жащая 32-битовую метку даты/времени и 28 байтов, полученных с помо-
щью защищенного генератора случайных чисел. Эти значения используют-
ся в качестве оказий во время обмена ключами с целью защиты от атак
воспроизведения. -. j .. с.-.: т' j-.; ,'< i о
14,2. ПРОТОКОЛЫ SSL И TLS
543
Идентификатор сеанса. Идентификатор переменной длины для данного се-
анса. Ненулевое значение говорит о намерении клиента обновить парамет-
ры имеющегося соединения или создать новое соединение в рамках того
же сеанса. Нулевое значение вводится тогда, когда клиент намерен создать
новое соединение в новом сеансе.
Комплект шифров. Список, содержащий наборы криптографических алго-
ритмов, поддерживаемых клиентом, перечисленные в порядке убывания
их приоритета. Каждый элемент списка (каждый комплект шифров) опре-
деляет алгоритм обмена ключами и спецификации шифра (CipherSpec),
которые будут описаны ниже.
Метод сжатия. Список методов сжатия, поддерживаемых клиентом.
После отправки сообщения client_heli> (приветствие клиента) клиент ожидает
от сервера сообщения server_hello (приветствие сервера), которое содержит те же
параметры, что и сообщение client_hello Для сообщения server_heilo действуют
следующие соглашения. Поле Version (версия) содержит номер низшей из версий,
поддерживаемых клиентом, и высшей из версий, поддерживаемых сервером. Поле
Random (случайное значение) генерируется сервером и не связано со значением
поля Random в сообщении клиента. Если значение поля Session) D (идентификатор
сеанса) в сообщении клиента было отличным от нуля, го же значение применяется
и сервером. Б противном случае поле ScssionlD в сообщении сервера содержит зна-
чение идентификатора для нового сеанса. В поле CipherSuite (комплект шифров)
определяется один комплект шифров, выбранный сервером из списка, предложен
ного клиентом. В поле Compression (сжатие) определяется метод сжатия, выбран-
ный сервером из списка, предложенного клиентом.
Первым элементом поля CipherSuite определяется метод обмена ключами (т.е.
средства, с помощью которых будет происходить обмен ключами для схем тра-
диционного шифрования и вычисления значений МАС). Протокол SSL поддер-
живает следующие методы обмена ключами.
RSA Секретный ключ шифруется с помощью открытого ключа RSA полу-
чателя. Для этого отправителю должен быть доступен сертификат откры-
того ключа получателя.
Метод Диффи-Хеллмана с фиксированными параметрами (Fixed Diffie-
Hellman). Метод обмена ключами по Диффи-Хеллману, при котором сер-
тификат сервера содержит открытые параметры алгоритма Диффи-
Хеллмана, подписанные центром сертификации (СА — Certificate
Authority). Иными словами, соответствующий сертификат содержит пара-
метры открытого ключа алгоритма Диффи-Хеллмана, Клиент сообщает
свои параметры открытого ключа алгоритма Диффи-Хеллмана либо в сер-
тификате, если требуется аутентификация клиента, либо в сообщении об-
мена ключами.
Метод Диффи-Хеллмана с одноразовыми параметрами (Ephemeral Diffie-
Hellman). Этот метод служит для создания временных (одноразовых) сек-
ретных ключей. В этом случае стороны обмениваются открытыми ключа-
ми Диффи-Хеллмана, подписанными с помощью личных ключей (RSA или
DSS) отправителя. Получатель для проверки подписи может использовать
544
ГЛАВА 14. ЗАЩИТА WEB
соответствующий открытый ключ. Для аутентификации открытых ключей
применяются сертификаты. Этот метод является самым безопасным из
трех указанных здесь вариантов метода Диффи-Хеллмана, так как в ре-
зультате получается временный и подлежащий аутентификации ключ.
Анонимный метод Диффи-Хеллмана (Anonymous Diffie-Hellman) Исполь-
зуется базовый алгоритм Диффи Хеллмана, но аутентификация не выпол-
няется. Иными словами, каждая из сторон отправляет свои открытые па-
раметры для алгоритма Диффи-Хеллмана другой стороне без аутентифи-
кации. Данный подход оказывается уязвимым в отношении атак типа
"внедрения посредника”, когда с обеими сторонами по анонимному методу
Диффи-Хеллмана обмен ключами проводит противник.
Fortezza Метод, используемый в схеме шифрования Fortezza.
Затем следует элемент CipherSpec (параметры шифрования), состоящий из
следующих полей.
CipherAlgoritm. Алгоритм шифрования: любой из ранее упоминавшихся
алгоритмов (RC4, RC2, DES, 3DES, DES4U, IDEA, Fortezza),
• MACAIgorithm. Алгоритм вычисления MAC: MD5 или SHA-1.
• CipherType. Тип шифра: Stream (поточный) или Block (блочный).
IsExportable. Признак экспортируемости: True (истина) или False (ложь).
HashSize. Длина хэш-кода; 0, 16 (для MD5) или 20 (для SHA-1) байтов.
Key Material. Параметры вычисления ключей; последовательность байтов,
содержащих данные, используемые при генерировании ключей записи.
IV Size. Длина инициализационного значения для шифрования в режиме
СВС (режим сцепления шифрованных блоков).
Этап 2. Аутентификация и обмен ключами сервера
Данный этап начинается с отправки сервером его сертификата, если требуется
аутентификация сервера. Отправляемое сообщение содержит сертификат Х.509
или цепочку таких сертификатов. Сообщение certificate (сертификат) требуется
для любого из предлагаемых методов обмена ключами, кроме анонимного мето-
да Диффи-Хелл мана. Обратите внимание на то, что при использовании метода
Диффи-Хеллмана с фиксированными параметрами это сообщение сертификации
выполняет функции сообшения обмена ключами, поскольку в нем содержатся
предлагаемые сервером открытые параметры алгоритма Диффи-Хеллмана.
Затем при необходимости может быть отправлено сообщение
server _key_exchange (обмен ключами сервера). Отправка такого сообщения не
требуется в двух случаях: (1) когда сервер отправил сертификат для метода
Диффи-Хеллмана с фиксированными параметрами или (2) когда предлагается
использовать схему обмена ключами RSA. Сообщение server_key_exchange необ-
ходимо в случаях, когда используются следующие схемы.
• Анонимный метод Диффи-Хеллмана Сообщение содержит два глобаль-
ных значения, необходимых для использования метода Диффи Хеллмана
(некоторое простое число и первообразный корень этого простого числа), а
также открытый ключ сервера для алгоритма Диффи-Хелмана (см. гла-
ву б; рис. 6.16).
14 2 ПРОТОКОЛЫ SSL И TLS
645
Метод Диффи-Хеллмана с одноразовыми параметрами. Сообщение содер-
жит такие же три параметра, как и в случае анонимного метода Диффи-
Хеллмана, и еще подпись для этих параметров.
а Обмен ключами по схеме RSA, когда использующий RSA сервер имеет
ключ KSA только для подписи. В этом случае у клиента нет возможности
сразу передать секретный ключ, шифрованный открытым ключом сервера.
Сервер должен создать временную пару ключей RSA (открытый/личный
ключи) и использовать сообщение server_key_exchange, чтобы передать
клиенту такой открытый ключ. Сообщение включает два параметра вре-
менного открытого ключа RSA (значения показателя степени и модуля;
см. главу б, рис. 6.5), а также подпись для этих параметров.
Fortezza
Здесь необходимо сказать еще несколько слов о подписи. Обычно подпись
создается с помощью вычисления хэш-кода сообщения с последующим ее шиф-
рованием на основе открытого ключа отправителя. В данном случае хэширова-
ние определяется следующим образом.
hash(CIientHello.random ||ServerHeHo.random || ServerParams).
Функция хэширования вычисляется для аргумента, включающего не только
параметры Диффи-Хеллмана или RSA, но и обе оказии из оригинальных сооб-
щений приветствия. Это обеспечивает защиту от атак воспроизведения сообще-
ний и атак фальсификации ответа. В случае подписи DSS хэш-код вычисляется с
помощью алгоритма SHA-1. Если применяется подпись RSA. вычисляется два
хэш-кода (и с помощью MD5, и с помощью SHA-1), а затем используется конка-
тенация полученных хэш-кодов (36 байтов), которая шифруется с помощью от-
крытого ключа сервера
После этого неанонимный сервер (т.е. сервер, не использующий анонимный
метод Диффи-Хеллмана) может запросить сертификат клиента. Сообщение
certificate_request (запрос сертификата) включает два параметра: certificate_type
(тип сертификата) и certificate_authoriti.es (центры сертификации). Тип серти-
фиката указывает применяемый алгоритм шифрования с открытым ключом и
может быть следующим.
RSA, только для подписи.
DSS, только для подписи.
RSA для метода Диффи-Хеллмана с фиксированными параметрами (в этом
случае подпись обеспечивает только аутентификацию, выполняемую с по
мощью отправки сертификата, подписанного по методу RSA).
DSS для метода Диффи-Хеллмана с фиксированными параметрами (тоже
служит лишь для аутентификации).
RSA для метода Диффи-Хеллмана с одноразовыми параметрами.
DSS для метода Диффи-Хеллмана с одноразовыми параметрами,
Fortezza.
Вторым параметром сообщения cerlificate_request является список имев до-
пустимых центров сертификации.
546
ГЛАВА 14. ЗАЩИТА WEB
Последним (и единственным обязательным) сообщением второго этана явля-
ется сообщение server_done (готово сервера), которым сервер извещает о завер-
шении фазы приветствия сервера ввиду отправки им всех соответствующих со-
общений. Это сообщение не имеет параметров. После отправки этого сообщения
сервер переходит в режим ожидания ответа клиента.
Этан 3. Аутентификация и обмен ключами клиента
Получив сообщение server_done, клиент должен убедиться в том, что сервер
предоставил действительный сертификат (если это требуется) и что параметры
сообщения server_hello являются приемлемыми. Если проверка завершается ус-
пешно, клиент оправляет серверу одно или несколько сообщений, речь о кото-
рых пойдет ниже.
Если сервер запросил сертификат, клиент начинает данный этап с отправки
серверу сообщения certificate. Если у клиента подходящего сертификата нет,
клиент отправляет вместо него уведомление no_certificate (нет сертификата).
Следующим идет сообщение ch₽nt_key_exchange (обмен ключами клиента),
которое для этого этапа является обязательным. Содержимое этого сообщения
зависит от выбранного метода обмена ключами и может быть следующим.
* RSA. Клиент генерирует 48-баЙтовыЙ предварительный главный ключ и
шифрует его с помощью открытого ключа из сертификата сервера или с
помощью временного ключа RSA из сообщения server_key exchange. Этот
предварительный ключ позволяет вычислить главный ключ, как будет по-
казано ниже.
Метод Диффи-Хеллмана с одноразовыми параметрами, или анонимный
метод Диффи-Хеллмана. Отправляются открытые параметры клиента для
метода Диффи Хеллмана
Метод Диффи-Хеллмана с фиксированными параметрами. В данном слу-
чае открытые параметры клиента для метода Диффи-Хеллмана уже были
отправлены в сообщении certificate, поэтому содержимое данного сообще-
ния оказывается пустым.
a Fortezza. Отправляются параметры клиента для алгоритма Fortezza.
В завершение данного этапа клиент может отправить сообщение
certificate_verify (проверка сертификата), чтобы обеспечить средства прямой ве-
рификации сертификата клиента. Это сообщение отправляется вслед за сертифи-
катом клиента, поддерживающим подпись (т.е. вслед за любым сертификатом
клиента, кроме тех, которые содержат параметры Диффи Хеллмана с фиксиро
ванными параметрами). Сообщение включает подпись хэш-кода предыдущего со-
общения, вычисленную следующим образом.
Cert ificateVerify. signature, md5_ hash
MD5(master_secret ||pad_2 |l MD5(handshake_messages || master_secret |fpad_l)),
Certivicate.signature sha_hash
SHA(master_secret ||pad_2 || SHA(handshake_inessages || master_secret ||pad_l)),
где pad_l и pad_2 представляют значения, определенные выше для МАС,
handshake_messages обозначает все сообщения протокола квитирования, отправ-
14.2. ПРОТОКОЛЫ SSL И TLS
547
ленные и полученные с момента отправки сообщения client_hello (за исключени-
ем самого этого сообщения), a master_secret обозначает секретный ключ, вычис-
ляемый по схеме, которая будет приведена ниже. Если личный ключ пользова-
теля является ключом DSS, этот ключ используется для шифрования хэш-кодв
SHA-1. Если же личный ключ является ключом RSA, то такой ключ служит для
шифрования результата конкатенации хэш-кодов MD5 и SHA-1. В любом случае
преследуется цель обеспечения возможности проверки наличия у клиента лично-
го ключа его сертификата, Если даже кто-то и воспользуется сертификатом кли-
ента, он не сможет отправить такое сообщение.
Этап 4. Завершение
Этот этап завершает создание защищенного соединения. Клиент отправляет
сообщение change_cipher_spec (изменение параметров шифрования) и копирует
параметры CipherSpec состояния ожидания в поле CipherSpec текущего состоя-
ния. Обратите внимание на то, что это сообщение не считается частью протокола
квитирования, а отсылается в рамках протокола изменения параметров шифро-
вания (Change Cipher Spec Protocol). В ответ клиент немедленно отправляет со-
общение finished, шифрованное новым алгоритмом с новыми ключами и секрет-
ными значениями. Сообщение finished подтверждает, что процессы обмена клю-
чами и аутентификации завершились успешно Содержимое сообщения finished
представляет собой результат конкатенации следующих двух значений хэш-кода.
MD5(master_secret ||pad_2 || MD5(handshake_messages || Sender || masier_secret ||pad_l)),
SH.A(master_secret || pad_ 2 || SHA(handshake_messages || Sender I master _secret II pad_l)),
где Sender обозначает код, указывающий на то, что отправителем является кли-
ент, a handshake_messages обозначает все данные сообщений квитирования, за
исключением данного сообщения.
В ответ на эти два сообщения сервер посылает свое сообщение
change_cipher_spec, переводит параметры CipherSpec состояния ожидания в те-
кущее состояние и посылает свое сообщение finished. На этом процесс квитиро-
вания завершается, и теперь клиент и сервер могут начать обмен данными на
уровне приложения. ,
Криптографические вычисления
Следующими представляющими интерес вопросами являются создание в ходе
обмена ключами общего главного секретного ключа и генерирование с помощью
этого ключа криптографических параметров.
Создание главного секретного ключа
Совместно применяемый главный секретный ключ представляет собой одно-
кратно используемое 48-байтовое значение (384 бита), генерируемое для данного
сеанса в ходе защищенного обмена ключами. Создание главного ключа состоит
из двух этапов. На первом этапе согласуется значение предварительного главного
ключа (pre_n?aster_secret). а на втором обе стороны вычисляют значение главно-
го ключа (master_secret). Для передачи друг другу значения pre_master_secret у
сторон имеется два варианта. . .
548
ГЛАВА 14. ЗАШИТА WEB
й RSA Генерируемый клиентом 48-байтовый ключ pre_master_ secret шиф-
руется с помощью открытого ключа RSA сервера и отправляется клиентом
серверу, Сервер дешифрует полученный шифрованный текст с помощью
своего личного ключа и восстанавливает значение pre. master .secret.
Метод Диффи-Хеллмана. И клиент, и сервер генерируют открытые ключи
для алгоритма Диффи-Хеллмана. После обмена этими ключами каждая
сторона выполняет определенные вычисления но методу Диффи-Хеллмана,
в результате которых получается совместно используемое значение
pre_master_secret.
Теперь обе стороны могут вычислить значение master secret но схеме
master secret *= MD5(pre_master_ secret || SHA( А' ,| pre_master_secret ||
ClientHello.random II Server! leilo.random)) ||
MD5(pre_master_secret || SHA('BB' || pre.master.secret ||
ClientHello.raiidoni || ServerHel'io.random)) ||
MD5(pre_master_secret || SHAfCCC' || pre master secret ||
ClientHello.random || ServerHello.random)),
где ClientHello.random и ServerHello.random являются значениями оказий, вхо-
дящих в оригинальные сообщения приветствия сторон.
Генерирование криптографических параметров
Для поля CipherSpecs требуются секретный ключ МАС клиента для записи,
секретный ключ МАС сервера для записи, ключ клиента для записи, ключ сер-
вера для записи, вектор инициализации клиента для записи и вектор инициали-
зации сервера для записи. Все эти параметры генерируются из главного ключа
путем применения функции хэширования к главному ключу с целью получения
защищенной последовательности байтов достаточной длины.
Процедура генерирования ключей из главного ключа аналогична процедуре
генерирования главного ключа из предварительного и показана ниже.
key .block = MD5(master_secret || SH А(’А' || master.secret II
ServrrHello.random || ClieniHello.randoin.)) ||
MD5( master, secret )|SHA('BB' 1) master.secret ||
ServerHello.random [| ClientHello.random)) ||
MD5(master secret ||SHA('CCC' || master.secret ,|
ServerHellorandom || ClientHello..random)) || _
Процедура выполняется до тех пор, пока не будет сгенерирована последова-
тельность достаточной длины. Эта алгоритмическая структура представляет со-
бой псевдослучайную функцию. Значение master_secret можно рассматривать
как инициализирующее значение для этой функции. Сгенерированные клиентом
и сервером случайные числа можно рассматривать как значения модификаторов
(salt values), используемых с целью усложнения криптоанализа (подробнее ис-
пользование модификаторов описано в главе 15).
5 U 4
14 2. ПРОТОКОЛЫ SSL И TLS
549
Защита транспортного уровня
Протокол TLS представляет результат инициативы 1ETF, целью которой яв-
ляется разработка стандарта SSL для Internet. Текущая версия проекта стандар-
та TLS очень похожа на SSLv3. В следующих разделах мы рассмотрим различия
между TLS и SSLv3.
Номер версии
Формат записи TLS аналогичен формату записи SSL (рис. 14.4), и поля заго-
ловка имеют те же смысл и назначение. Единственное различие состоит в пред-
ставлении значений, задающих номера версии. Для текущего проекта стандарта
TLS значением поля главного номера версии (Major Version) является 3, а значе-
нием поля дополнительного номера версии (Minor Version) — 1.
Код аутентичности сообщения
Схемы вычисления значений МАС протоколов SSLv3 и TLS отличаются по
двум параметрам: применяемому алгоритму и области данных, для которых вы-
числяется значение МАС. В протоколе TLS используется алгоритм НМАС, опре-
деленный в RFC 2104. Вспомните, обратившись к главе 9, что алгоритм НМаС
определяется формулой
НМАСК = НЦК Ф opad) || Н[(К? Ф ipad) || М]],
где
Н — встроенная функция хэширования (для TLS это MD5 или SHA 1),
М — сообщение, подаваемое на вход алгоритма НМаС,
К‘ — секретный ключ, дополненный слева нулями, чтобы в результате
длина полученного значения равнялась длине хэш-кода (для MD5
и SHA-1 длина блока равна 512 битов),
opad — значение 00110110 (равное 36 в шестнадцатеричном формате), по-
вторенное 64 раза (512 битов),
ipad — значение 01011100 (равное 5С в шестнадцатеричном формате), по-
вторенное 64 раза (512 битов).
В протоколе SSLv3 применяется такой же алгоритм, но байты заполнителя
добавляются к секретному ключу с помощью операции конкатенации, а не свя-
зываются с дополненным до нужной длины секретным ключом с помощью опе-
рации XOR (исключающее "ИЛИ”). Уровень защищенности в обоих случаях '-на-
зывается одинаковым.
В случае с TLS процесс вычисления МАС охватывает поля, указанные в сле-
дующей формуле.
HMAC_hasWMAC_write .secret, seq_num || TLSCompressed. type ||
TLSCompressed.version || TLSCompressed. length || TLSCompressed.fragment)).
Здесь для вычисления значения МАС служат все поля, которые задействова-
ны при вычислении МАС в протоколе SSLv3, плюс поле TLSCompressed.version,
которое указывает версию применяемого протокола.
550
ГЛАВА 14. ЗАЩИТА WEB
Псевдослучайная функция
В протоколе TLS применяется псевдослучайная функция, обозначаемая PRF
(pseudorandom function) и предназначенная для размещения в блоках данных
секретных значений, используемых при генерировании ключей или проверке их
подлинности Целью ее применения является получение относительно небольшо-
го по длине совместно используемого сторонами секретного значения для гене-
рирования более длинных блоков данных, защищенных от определенных типов
атак на функции хэширования и вычисления значений МАС. В основе функции
PRF лежит следующая схема расширения данных (рис. 14.7).
P_hash(secret, seed) = irMAC._hash(secret, A(l) || seed) ||
HMAC_hash(secret, А(2) | seed) ||
HMAC_hash(secret, А(3) |' seed) ]| ...
где А() определяется как
А(0) - seed,
A(i) = HMAC_hasb( secret, A(r - 1)),
seed обозначает инициализирующее значение, a secret — секретное значение.
Функция расширения данных использует алгоритм НМАС с лежащей в его
основе функцией хэширования (MD5 или SHA-1). Как видно из приведенной
выше схемы, функцию P_hash можно итерировать необходимое число раз до по-
лучения блока данных нужной длины Например, если для получения 64-
байтового блока данных применяется P_SHA-1, то для получения 80 байтов
данных, из которых 16 последних байтов будут отброшены, эту функцию нужно
будет испотьзовать повторно 4 раза. В такой же ситуации при использовании
PMD5 также потребуется четыре итерации, но в результате будет получено
ровно 64 байта данных. Обратите внимание на то. что на каждой итерации алго-
ритм НМАС выполняется дважды и каждый раз дважды выполняется лежащий
в его основе алгоритм хэширования.
Для того чтобы сделать функцию PRF защищенной в максимальной мере, в
ней предусмотрено два разных алгоритма хэширования, что гарантирует защи-
щенность данной функции, пока по крайней мере один из этих алгоритмов оста-
ется защищенным. Функция PRF определена следующим образом.
PRF(secret, label, seed) = P_MD5(S1. label || seed) © P_SI1A-1(S2, label II seed).
На вход функции PRF поступает секретное значение, идентифицирующая
метка и инициализирующее значение, а на выход подается блок данных любой
подходящей длины Выходное значение получается путем разделения секретного
значения на две части (S1 и S2) и применения к каждой из этих частей функции
P_hash, причем при обработке одной части используется алгоритм MD5, а дру-
гой части — SHA. Два полученных значения связываются операцией
“исключающего ИЛИ”, в результате чего получается выходное значение (чтобы
для связывания операцией “исключающего ИЛИ" получились блоки данных
одинаковой длины, обычно для P_MD5 требуется использовать большее число
итераций, чем для P_SHA).
14.2. ПРОТОКОЛЫ SSL И TLS
551
Seed
Рис. 14.7 Функция P_hashf secret. seed) протокола TLS
Коды извещений
Протокол TLS поддерживает все типы извещений, определенные для SSLv3,
за исключением извещения no_certificate (нет сертификата). Но для TLS с преде-
лен целый ряд дополнительных кодов извещения. Следующие из этих дополни-
тельных кодов всегда означают неустранимую ошибку.
decription_failed. Шифрованный текст дешифрован неправильно' либо его
длина оказалась не кратной заданной длине блока, либо при проверке вы-
яснилось, что значения заполнителя некорректны.
record_overflow. Получена запись TLS с полезным грузом (шифрованным
текстом), длина которого превышает 2“ + 2048 байтов, либо после дешиф-
рования длина текста оказалась больше 2” + 1024 байтов.
unknown_са. Получена достоверная цепочка сертификата или ее часть, но
сертификат не был признан, так как сертификат соответствующего центра
сертификации не был найден или сертификат не соответствует имеющему'
ся сертификату надежного центра сертификации.
562
ГЛАВА 14. ЗАЩИТА WEB
access_denied. Получен действительный сертификат, но в процессе приме-
нения средств контроля доступа отправитель принял решение не продол-
жать переговоры,
• decode_error. Сообщение не может быть декодировано, так как одно из по-
лей содержит значение, выходящее за рамки допустимого диапазона, или
длина сообщения оказалась неправильной,
• export_restriction. В процессе переговоров было выявлено, что нарушаются
экспортные ограничения на длину ключа.
protocol_version. Номер версии протокола, предложенного клиентом в
процессе переговоров, распознан, но не поддерживается.
insufficientsecurity. Возвращается вместо handshake_failure (аварийное
завершение процесса квитирования) в тех случаях, когда переговоры за-
вершаются аварийно по причине того, что сервер требует более защищен-
ных шифров, чем те, которые поддерживаются клиентом.
internal_error. Возникла не связанная со второй стороной или корректностью
работы протокола внутренняя ошибка, не позволяющая продолжить процесс.
Ниже перечислены остальные дополнительные извещения.
• decrypt_error. Аварийное завершение некоторой криптографической опе-
рации, выполняемой в ходе переговоров, что включает, например, провер-
ку подписи, дешифрование данных обмена ключами или проверку под-
линности сообщения finished.
use г_сапсе lied. Процесс завершен по некоторой причине, не связанной с
работой протокола.
• no_renegotiation. Отсылается клиентом в ответ на запрос hello (приветствие)
или сервером в ответ на запрос hell*> клиента после инициализации процесса
переговоров. В обычной ситуации такой запрос приводит к возобновлению
переговоров, но получение данного извещения указывает на го, что его от-
правитель не может возобновить переговоры. Данное сообщение всегда явля-
ется предупреждением.
Пакеты шифров
Протоколы SSLv3 и TLS имеют следующие небольшие различия в используе-
мых ими комплектах шифров.
* Обмен ключами. TLS поддерживает все методы обмена ключами, реализо-
ванные в SSLv3, за исключением Fortezza
Алгоритмы симметричной схемы шифрования. В TLS включены все алго-
ритмы симметричной схемы шифрования, за исключением Fortezza.
Типы сертификатов клиента
Для TLS определены следующие типы сертификатов, запрашиваемых в сооб-
щении certifjcate_request (запрос сертификата): rsa_sign, dss_sign, rsa_fixed_dh
и dss_fixed_dh Все эти типы определены и для SSLv3. Кроме того, протокол
SSLv3 поддерживает типы rsa_ephemeral_dh, dss_ephemeral_dh и fortezza _kea.
14.2. ПРОТОКОЛЫ SSL И TLS
553
В алгоритме Диффи-Хеллмана с одноразовыми параметрами предполагается
подпись параметров Диффи-Хеллмана с помощью RSA или DSS. В протоколе
TLS этой функции соответствуют типы rsa_sign и dsssign, поэтому вводить от-
дельный тип для обозначения подписи параметров Диффи-Хеллмана не требует-
ся. Схема Fortezza протоколом TLS не поддерживается.
Сообщения certificate_verify и finished
В сообщении certificate_verify (проверка сертификата) протокола TLS хэш-
коды MD5 и SHA-1 вычисляются только для сообщений handshakemessages.
Напомним, что в SSLv3 при вычислении хэш-кода используются также главный
ключ и заполнители. Похоже, что добавление этих значений не увеличивает на-
дежность защиты.
Что касается сообщения finished (готово), то в TLS оно представляет собой
хэш-код, вычисленный с помощью совместно используемого сторонами значения
master_secret, предыдущих сообщений квитирования и метки, идентифицирую-
щей клиент или сервер Вычисления происходят по следующей, отличной от
SSL, схеме.
PRF(master_secret, finished „label, MD5(handshake_messages) |l SHA-l(handshake. messages)),
где finished „label обозначает строку “client finished” для клиента или
“server finished” для сервера.
Криптографические вычисления
Значение premastersecret (предварительный главный ключ) для TLS вычис-
ляется так же, как и для SSLv3. Как и случае SSLv3, значение master secret
(главный ключ) для TLS тоже вычисляется как хэш-код значения
pre „master „secret и двух случайных чисел из сообщений hello, Однако для TLS
вычисления выполняются по несколько отличной схеме, которая выглядит сле-
дующим образом.
master_secret =
PRFfpre mabter_secret, "master secret", ClientHello.random ((ServerHello.random).
Алгоритм выполняется до тех пор, пока на выходе не будет получена псевдо
случайная последовательность длиной в 48 байтов.
Вычисление блока ключей (секретные ключи МАС, сеансовые ключи шифро
вания и векторы инициализации) выполняется по схеме
key „block =
PRF(master_secret, “key expansion",
SecurityParameters.server randon'i || SecurityParameters.client_random),
и вычисления продолжаются до тех пор, пока не будет сгенерирована последова-
тельность нужной длины. Как и в случае SSLv3, значение key_block представ-
ляет функцию значения master_secret и случайных значений, сгенерированных
клиентом и сервером, но конкретный используемый для вычисления алгоритм в
TLS оказывается другим.
554
ГЛАВА 14. ЗАЩИТА WEB
Заполнение >
В SSL байты заполнителя добавляются к данным пользователя, подлежащим
шифрованию, в минимально необходимом количестве, достаточном для того,
чтобы получить общую длину данных для шифрования, кратную длине блока
шифра. В случае TLS разрешается добавлять любое число заполнителей (до 255
байтов включительно), лишь бы в результате длина блока данных получилась
кратной длине блока шифра. Например, если открытый текст (или сжатый от-
крытый текст при сжатии) вместе со значением МАС и байтом padding, length
составляют 79 байтов, то для заполнения может использоваться 1, 9, 17, ..., 249
байтов. Изменяемую длину заполнения можно использовать для того, чтобы за-
труднить попытки анализа длин передаваемых сообщений.
J4.3* Протокол защищенных электронные
транзакций (SET)
Протокол SET (Secure Electra tile Transaction — протокол защищенных элек-
тронных транзакций) представляет собой открытые спецификации шифрования и
защиты, разработанные с целью защиты транзакций, выполняемых в Internet с
помещью пластиковых платежных карточек. Текущая версия протокола, протокол
SETvl, появилась в феврале 1996 года ввиду возникшей необходимости создания
стандарта защиты для кредитных карточек MasterCard и Visa. В разработке ори-
гинальных спецификаций участвовали многие известные компании, включая IBM,
Microsoft, Netscape, RSA, Tensa и VeriSign. Начиная с 1996 года положенная в
основу протокола концепция прошла тщательную проверку практикой, и к 1998
году на рынке появились первые продукты реализации протокола SET.
SET является не платежной системой, а набором протоколов защиты и форма-
тов данных, позволяющим некоторым защищенным образом использовать сущест-
вующую инфраструктуру платежных систем пластиковых карточек в открытых
сетях типа сети Internet. По сути, SET обеспечивает три следующих вида сервиса.
Создание защищенного коммуникационного канала, связывающего все
участвующие в транзакции стороны.
* Обеспечение доверия с помощью цифровых сертификатов X509v3.
Обеспечение секретности ввиду того, что информация оказывается доступной
только участникам транзакции и только тогда и там, где она необходима.
Полная спецификация SET описывается в трех книгах, изданных в мае 1997 года.
Книга 1. Описание возможностей применения (Business Description), 80 стр.
Книга 2. Руководств। программиста (Programmer’s Guide), 629 стр.
Книга 3. Формальное определение протокола (Formal Protocol Definition),
262 стр. v „
Все вместе составляет 971 страницу спецификаций. Для сравнения заметим,
что спецификации SSLv3 занимают 63 страницы, а спецификации TLS — 71
страницу. Соответственно, в данном разделе будут приведены лишь обзорные
сведения о спецификациях SET.
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
556
Общие снедения о SET . «
Описание протокола SET лучше всего начать с обзора требований, выдвигае-
мых к SET, главных возможностей SET, а i-акже роли участников транзакций,
выполняемых на основе SET.
Требонания
В книге 1 спецификаций SET перечислены следующие требования, которые
должны соблюдаться при обработке платежей по кредитным карточкам в
Internet и других подобных сетях.
Конфиденциальность платежа и информации о заказе. Необходимо гаран-
тировать владельцам пластиковых карт, что данная информация надежно
защищена и окажется доступной только тому, кому она предназначена.
Конфиденциальность к тому же уменьшает риск возможности обманных
действий любой из участвующих в осуществлении транзакции сторон или
злоумышленных действий третьей стороны. Для обеспечения конфиденци-
альности применяется шифрование.
Гарантия целостности всех передаваемых данных означает, что в ходе пере-
дачи информация, содержащаяся в сообщении SET, не претерпит никаких из-
менений. Для обеспечения целостности служит механизм цифровой подписи.
Аутентификация предъявителя кредитной карты как законного владель-
ца соответствующего счета. Механизм, связывающий предъявителя кре-
дитной карты с соответствующим номером счета, должен уменьшать веро-
ятность мошенничества и тем самым снижать общую стоимость обработки
платежей. Для проверки того, что предъявитель кредитной карты являет-
ся законным владельцем соответствующего действительного счета, приме-
няются такие средства, как цифровая подпись и сертификаты.
Аутентификация продавца как липа, имеющего право принимать транзак-
ции по кредитным картам, с помощью выяснения его связи с соответст-
вующей финансовой организацией. Это требование дополняет предыдущее.
Владельцы платежных карт должны иметь возможность идентифицировать
продавцов, которым они могут направлять защищенные транзакции. В этом
случае тоже используются цифровые подписи и сертификаты.
* Гарантированное использование лучших конструктивных решений и ме-
тодов защиты для обеспечения наивысшей степени защиты всех легаль-
ных участников электронных коммерческих транзакций. Спецификации
SET строятся на применении криптографических алгоритмов и протоко-
лов, имеющих высокий уровень защищенности и хорошо в этом отноше-
нии проверенных.
• Независимость протокола от механизмов защиты транспортировки дан-
ных при отсутствии каких-либо ограничений на использование послед-
них. SET может обеспечивать защиту, опираясь непосредственно и исклю-
чительно на стек протоколов TCP/IP. По при этом SET никак не влияет на
работу других механизмов защиты, таких как IPSec или SSL/TLS, и не за-
висит от них.
556
ГЛАВА 14. ЗАЩИТА WEB
• Содействие и поддержка совместимости между прикладными программ-
ными и сетевыми продуктами разных поставщиков. Протоколы и форма-
ты SET не зависят от аппаратных платформ, операционных систем и про-
граммного обеспечения, предназначенного для работы в Web.
Главные возможности SET
Чтобы соответствовать описанным выше требованиям, в протоколе SET реа-
лизованы следующие возможности.
а Конфиденциальность информации Информация о счете владельца карты
и платеже защищается во время пересылки по сети. Интересная и важная
особенность SET заключается в том, что продавец при этом не может вы-
яснить номер кредитной карты ее владельца — эта информация оказыва
ется доступной только выдавшему кредитную карту банку. Для обеспече-
ния конфиденциальности используется шифрование по традиционной схе-
ме с помощью алгоритма DES.
Целостность данных. Информация о платеже, посылаемая владельцем
карты продавцу, содержит информацию о заказе, личные данные и инст-
рукции по осуществлению платежа. SET гарантирует, что содержимое со-
ответствующих сообщений не будет изменено в пути их следования по се-
ти. Целостность данных достигается с помощью цифровых подписей RSA с
использованием хэш-кодов SHA-1 Некоторые сообшсния защищаются
также с помощью алгоритма НМАС, использующего SHA-1.
Аутентификация счета владельца карты* SET дает продавцу возможность
проверки того, что предъявитель кредитной карты является законным
пользователем соответствующего карте действительного счета. Для этой
цели в SET служат цифровые сертификаты X.509v3 с подписями RSA
Аутентификация продавца. SET дает владельцу карты возможность про-
верки того, что продавец имеет отношение к соответствующей финансовой
организации, позволяющее денному продавцу принимать платежи по кре-
дитным картам. Для этой цели в SET предусмотрены цифровые сертифи-
каты X.509v3 с подписями RSA.
Обратите внимание на то, что в отличие от IPSec и SSL/TLS протокол SET
для решения каждой конкретной задачи предлагает только по одному алгорит-
му. Это объясняется тем, что SET является единым приложением, соответст-
вующим вполне конкретному набору требований, тогда как IPSec и SSL/TLS от-
носятся к универсальным протоколам, предназначенным для поддержки широ-
кого спектра приложений.
Участники транзакций SET
Участниками транзакций, осуществляемых с помощью SET, являются сле-
дующие стороны (рис. 14.8).
Владелец платежной карточки. В среде электронных платежей индивиду-
альные и корпоративные потребители взаимодействуют с продавцами со
своих персональных компьютеров с помощью Internet. Владельцем карты
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
557
в данном случае является любой зарегистрированный владелец пластико-
вой платежной карты (MasterCard, Visa и т.п.), выданной ему некоторым
уполномоченным эмитентом.
Продавец. Продавец является лицом или организацией, у которой владелец
карты может приобрести товары или услуги. Обычно такие товары или ус-
луги предлагаются на продажу на Web-узле или по электронной почте. Про-
давец, имеющий право принимать платежи по платежным карточкам, дол-
жен иметь соответствующие отношения с операционным центром.
Эмитент платежной карточки Финансовая организация (например, банк),
выдавшая платежную карту соответствующему лицу (владельцу карты).
Как правило, открыть счет можно по почте или явившись к эмитенту лич-
но. Всю ответственность по оплате задолженности владельца карты по
данной карте несет эмитент карты.
Операционный центр (acquirer). Финансовая организация, -существляю-
щая расчеты с продавцом, выполняющая авторизацию платежных карт и
осуществляющая соответствующие платежи. Продавцы обычно готовы
принимать кредитные карты разных видов, но не хотят иметь дело с
большим числом разных банковских ассоциаций или множеством отдель-
ных эмитентов платежных карт. Операционный центр проводит для про-
давца проверку того, что счет кредитной карты является активным и что
предлагаемая покупка пи стоимости не выходит за рамки допустимого
кредитного лимита. Операционный центр также выполняет электронный
перевод денежных сумм на счет продавца- Впоследствии операционный
центр получает за это определенную компенсацию от эмитента карты через
банковскую платежную сеть.
Шлюз платежной сети (payment gateway). Совокупность средств, контро-
лируемых операционным центром или уполномоченной им третьей сторо-
ной, используемых для обработки платежных сообщений продавца. Шлюз
платежной сети сопрягает SET и существующие банковские платежные се-
ти, выполняя функции авторизации и передачи платежей. Продавец обме-
нивается сообщениями SET с шлюзом платежной сети через Internet, а
шлюз платежной сети связан непосредственно или п- внутренней сети с
системой обработки финансовых документов соответствующего операцион-
ного центра.
Центр сертификация (СА — certification authority). Объект, которому до-
веряется выдавать сертификаты стандарта X.509v3 открытых ключей вла-
дельцев карт, продавцов и шлюзов платежной сети. Успешная работа SET
во многом зависит от наличия доступного для использования в соответст-
вующих целях центра сертификации с хорошо организованной инфра-
структурой. Как уже говорилось в предыдущих главах, существует целая
иерархия центров сертификации, так что сертификаты участвующим в
осуществлении электронных платежей сторонам не обязательно должны
выдаваться только главным центром сертификации.
558
с ГЛАВА 14 ЗАЩИТА WEB
Рис 14.8. Компоненты защищенной системы электронной коммерции
Теперь опишем вкратце последовательность событий, происходящих во время
транзакции, а затем остановимся подробнее на некоторых криптографических
деталях данного процесса,
1. Покупатель открывает счет. Покупатель получает счет кредитной карточ-
ки (например, MasterCard или Visa) в банке, осуществляющем электрон-
ные платежи и поддерживающем SET.
2. Покупатель получает сертификат. После определенной процедуры провер
ки личности покупатель получает цифровой сертификат X.509v3, подпи-
санный банком. Этот сертификат удостоверяет открытый ключ RSA поку-
пателя и срок действия этого ключа. Он также устанавливает гарантиро
ванное банком соответствие между парой ключей покупателя и его
кредитной карточкой.
3. Продавец получает свои сертификаты Продавец, который собирается
принимать оплату do платежной карточке определенного типа, должен по-
лучить два сертификата двух своих открытых ключей: один для цифровой
подписи, а второй — для обмена ключами. Продавцу также потребуется
копия сертификата открытого ключа шлюза платежной сети.
4. Покупатель размещает заказ. Этот процесс может предполагать, что по-
купатель сначала должен посетить Web-узел продавца, чтобы выбрать
подходящий товар и оределить цену. После этого покупатель отправляет
продавцу список нужных ему товаров, а продавец в ответ высылает бланк
заказа с указанными в нем списком выбранных товаров, ценами, общей
стоимостью заказа и номером заказа.
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
559
5. Проверка продавца. Вместе с бланком заказа продавец высылает копию
своего сертификата, чтобы покупатель имел возможность убедиться в том,
что он действительно имеет дело с настоящим продавцом.
6. Заказ и платеж отправляются продавцу. Покупатель отправляет заказ и
платежную информацию продавцу, прилагая к ним свой сертификат. За-
каз подтверждает покупку товаров, указанных в бланке заказа. Платеж-
ная информация содержит необходимые данные кредитной карточки. Пла-
тежная информация шифруется таким образом, чтобы продавец не смог ее
прочесть. Сертификат покупателя дает продавцу возможность проверить
личность покупателя.
7. Продавец запрашивает авторизацию платежа. Продавец отправляет пла-
теж нуто информацию шлюзу платежной сети, запрашивая подтверждение
того, что доступный покупателю кредит достаточен для осуществления
данного платежа.
8. Продавец подтверждает заказ. Продавец отправляет покупателю подтвер-
ждение заказа.
9. Продавец доставляет товары или обеспечивает услуги. Продавец органи-
зует доставку товаров или выполнение услуг покупателю.
10. Продавец запрашивает получение платежа Этот запрос отправляется
шлюзу платежной сети, который обрабатывает все платежные поручения.
Дуальная подпись
Прежде чем перейти к рассмотрению деталей протокола SET, мы обсудим од-
но важное нововведение SET, а именно дуальную подпись (dual signature). Целью
использования дуальной подписи является связывание двух сообщений, предна-
значенных двум разным получателям. В данном конкретном случае покупателю
требуется перестать информацию о заказе (01 — order information) продавцу и
платежную информацию (PI — payment information) банку. Продавцу не нужно
знать номер кредитной карточки покупателя, а банку не нужны подробности за-
каза. Покупатель же, разделяя эти сведения, обеспечивает тем самым дополни-
тельную защиту своих прав с точки зрения невмешательства в его личную
жизнь. При этом требуется связать эти сведения таким образом, чтобы их можно
было при необходимости использовать в случае возникновения конфликта. Та-
кая связь требуется для того, чтобы покупатель мог доказать, что данный пла-
теж предназначен для оплаты именно этого, а не какого-то другого заказа.
Чтобы понять необходимость такой связи, предположим, что покупатель от-
правляет продавцу два сообщения — подписанное сообщение 01 (заказ) и подпи
санное сообщение PI (платеж), — а покупатель пересылает сообщение Р1 в банк.
Если продавец получит от покупателя какой-то другой заказ, то продавец сможет
заявить, что данное сообщение PI оплачивает новое, я не старое сообщение 01.
Связывание предотвращает такую возможность.
На рис. 14.9 показана схема применения дуальной подписи для решения толь-
ко что сформулированной проблемы. Сначала покупатель, используя алгоритм
SHA-1, вычисляет хэш-коды для сообщений Р1 и О1. Два полученных хэш-кода
560
ГЛАВА 14. ЗАЩИТА WEB
PI
1*1 - платежная инф« -циация PfMD
01 информация о заказе OIMU
Н - функция хэширования POMD
II - конкатенация Е
- профиль сообщении PI
—профи ль -сообщения О1
— профиль комбинации сообщений заказа и платежа
— шифрование (RSA)
— ключ личной подписи покупателя
КН,
Рис. 14.9. Создание дуальной подписи
связываются итерацией конкатенации, и для результата связывания тоже вычис-
ляется хэш-код. Наконец, покупатель шифрует итоговый хэш-код с использовани-
ем своего личного ключа цифровой подписи, в результате получая дуальную под-
пись. Вся процедура формально может быть записана в следующем виде.
DS = Екя. [Н(Н(Р1) |; Н(01))] ,
где KR, обозначает личный ключ цифровой подписи покупателя. Теперь предпо-
ложим, что продавец имеет дуальную подпись (DS — dual signature), сообщение 01
и профиль сообщения Pl (PTMD — Pl message digest). Кроме того, у продавца есть
открытый ключ покупателя, который был извлечен из сертификата покупателя. В
таких условиях продавец может вычислить два следующих значения.
H(P1MD || Н(01)) и DKVr[DS],
где KUC обозначает открытый ключ цифровой подписи покупателя. Если оба
значения оказываются равными, продавец считает, что подпись проверена. Точ-
но так же, если банк имеет DS, PI, профиль сообщения О! (0IMD) и открытый
ключ покупателя, го банк может вычислить
Н(Н(Р1) |l OTMD) и D^flDS],
И вновь, если эти значения оказываются равными, банк считает, что подпись
покупателя проверена. Подводя итог, можно сказать следующее.
1. Продавец получает сообщение 01 и выполняет проверку подписи покупателя.
2. Банк получает сообщение PI и выполняет проверку подписи покупателя.
3. Сообщения OI и PI оказываются связанными, и покупатель может дока-
зать их связь.
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
561
Предположим, например, что продавец решит заменить сообщение 01 данной
транзакции другим, в надежде извлечь из этого выгоду. Для этого ему придется
найти другое сообщение 01, точно с таким же хэш-кодом 0IMD. На сегодняшний
день при использовании алгоритма SHA-1 это является практически неразреши-
мой задачей. Таким образом, у продавца нет возможности связать с данным со-
общением PI другое сообщение 01.
Обработка платежа
Типы транзакций, поддерживаемые SET, перечислены в табл. 14.3. В данном
разделе мы рассмотрим подробнее следующие типы транзакций.
Требование на закупку (Purchase Request).
Разрешение на оплату (Payment Authorization).
Получение платежа (Payment Capture).
Таблица 14.3. Типы транзакций SFT
Cardholder registration (регистрация владель- ца карты) Владельцы платежных карт должны зарегистрироваться в центре сертификации, чтобы иметь возможность отправлять сообщения SET продавцам
Merchant registration (регистрация продавца) Продавцы должны зарегистрироваться в центре сертифика- ции, чтобы иметь возможность обмениваться сообщениями SET с покупателями и шлюзами платежной сети
Purchase request (т|мЧх>вьяие Нч закупку) Сообщение, отправляемое покупателем продавцу, содержащее 0) для продавца и Р1 для банка
Payment authorization (разрешение на оплату) Последовательность сообщений, которыми обменивается прода- вец с шлюзом платежной сети для авторизации соответствую- щего платежа со счета соответствующей кредитной карточки
Payment capture (получение платежа) Позволяет продавцу сделать запрос на проведение соответст вуюшего платежа у шлюза платежной сети
Certificate inquiry and status (запрос серти- фикат н и соответст- вующего статуса) Если центр сертификации не может быстро обработать запрос на получение сертификата, в ответ покупателю или продавцу отправляется сообщение о том, что за ответом на запрос за- прашивающей стороне нужно обратиться повторно позже. Владелец платежной карточки или покупатель посылает со- общение Certificate Inquiry для того, чтобы выяснить состоя- ние процесса обработки его запроса сертификата и получить сертификат, если запрос был удовлетворен
Purchase inquiry (запрос на поставку) Позволяет владельцу платежной карты проверить состояние процесса обработки заказа после получения ответа на сообще- ние о размещении заказа. Обратите внимание на то, что это сообщение не содержит информации о недопоставленных то- варах, а только информацию о состоянии процессов выполне- ния авторизации, проводки платежей и выяснения кредитных возможностей
562
ГЛАВА 14. ЗАЩИТА WEB
Окончание табл. 14.3
Authorization reversal (отзыв запроса яа ав- торизацию платежа) Позволяет продавцу изменить ранее предъявленные запросы на разрешение произвести платеж. Если заказ не может быть выполнен вообще, продавец отзывает все данные соответст- вующего запроса. Если же заказ не может быть выполнен час- тично (например, когда поставка части товаров откладывает- ся), продавец отзывает часть подлежащей авторизации суммы
Capture reversal (отзыв запроса на осуществ- ление платежа) Позволяет продавцу исправить ошибки в запросах на осуще- ствление платежа, например в случаях, когда по ошибке слу- жащего была введена неправильная сумма
Credit (кредит) Позволяет продавцу открыть кредит в отношении счета вла- дельца платежной карточки, например на случай возврата то- вара покупателем или повреждения товара в процессе достав- ки. Обратите внимание яа то, что инициатором сообщения Credit всегда является продавец, а не владелец платежной карточки Весь обмен данными между владельцем платежной карточки и продавцом, в результате которого открывается кредит, происходит за рамками протокола SET
Credit reversal (отзыв запроса аа кредит) Позволяет продавцу изменить параметры ранее запрошенного кредита
Payment gateway certificate request (запрос сертификата шлюза платежной сети) Позволяет продавцу запросить сертификат шлюза платежной сети и получить копии текущих сертификатов ключей обмена и цифровой подписи
Batch administration (пакетное админист- рирование) Позволяет продавцу обмениваться информацией с шлюзом платежной сети по вопросам, касающимся групп платежей
Error message (сообщение об ошибке) Говорит гом, что отвечающая сторона отказала в приеме сооб- щения по причине неверного формата последнего или потому, что не удалось выполнить верификацию содержимого сообщения
1 ребование на закупку
До того как начать обмен данными требования на закупку (Purchase Request),
владелец платежной карточки должен завершить просмотр списка доступных
товаров, выбрать нужные и оформить заказ. Данный предварительный этап за-
канчивается отправкой продавцом бланка заказа покупателю. Все эти предвари-
тельные операции не связаны с SET.
Обмен данными требования на закупку состоит из четырех сообщений: Initi-
ate Request (инициирующий запрос), Initiate Response (ответ на инициирующий
запрос), Purchase Request (требование на закупку) и Purchase Response (ответ на
требование на закупку).
Для того чтобы владелец платежной карточки имел возможность отправлять
сообщения SET продавцу, необходимо получить копии сертификата продавца и
сертификата шлюза платежной сети. Запросы на получение этих сертификатов
содержатся в сообщении Initiate Request (инициирующий запрос), которое поку-
14 3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
663
патсль отправляет продавцу. Это сообщение содержит информацию о типе кре-
дитной карточки, используемой покупателем, идентификатор, назначенный по
купателем данной паре сообщений “запрос-ответ”, и значение оказии, призван-
ное гарантировать оригинальность сообщения.
Продавец генерирует ответ и подписывает его своим личным ключом цифро-
вой подписи. Ответ должен включать значение оказии покупателя, другое значе-
ние оказии, которое покупатель должен будет вернуть в следующем сообщении,
а также идентификатор данной транзакции. Кроме подписанного ответа, сооб-
щение Initiate Response (ответ на инициирующий запрос) содержит сертификат
подписи продавца и сертификат шлюза платежной сети для обмена ключами.
Владелец платежной карточки проверяет подлинность сертификатов продавца
и шлюза платежной сети путем проверки подписей соответствующих центров
сертификации, а затем создает сообщения 01 и Р1. В оба эти сообщения помеща-
ется идентификатор транзакции, сгенерированный продавцом. Сообщение 01 не-
посредственно не включает данных заказа, таких как количество или цена това-
ров, а содержит ссылку на заказ, созданный в процессе обмена сообщениями
между продавцом и покупателем на этапе согласования еще до первого сообще-
ния SET. Затем владелец платежной карточки готовит сообщение Purchase
Request (требование на закупку); см. схему на рис. 14.10. Для этого владелец
платежной карточки генерирует одноразовый ключ К, для схемы симметрично-
го шифрования. Это сообщение состоит из следующих блоков информации.
1. Информация о платеже. Пересылается продавцом шлюзу платежной сети
и содержит следующие данные.
• Данные PI
• Дуальная подпись, вычисленная для совокупности PI и 01 и подписан-
ная с использованием личного ключа подписи покупателя.
• Профиль сообщения 01 (OIMD).
2. Значение 01MD необходимо для того, чтобы шлюз платежной сети мог
проверить дуальную подпись, как объяснялось выше. Все указанные эле-
менты шифруются с помощью К„. Последним для данного блока инфор-
мации является следующий элемент.
• Цифровой конверт, Формируется путем шифрования Ks с помощью
открытого ключа шлюза платежной сети, предназначенного для обмена
ключами. Этот элемент называется цифровым конвертом, поскольку
для того, чтобы получить возможность прочитать элементы, перечис-
ленные выше, этот конверт необходимо открыть (т.е. дешифровать).
3. Значение Ка остается продавцу неизвестным. Поэтому продавец не сможет
прочитать ничего из всей этой относящейся к платежу информации.
4. Информация о заказе. Эта информация требуется продавцу и содержит
следующие данные.
• Данные 01.
• Дуальная подпись, вычисленная для совокупности Р1 и 01 и подписан-
ная с использованием личного ключа подписи покупателя.
• Профиль сообщения Pl (PJMD).
564
ГЛАВА 14. ЗАЩИТА WEB
Сообщение запроса
PIMD
7777,
+
OI
п____
□ —
□____
□ —
+
Дуальная
подпись
+
Серп ификат
ааде,1ьца
платежной
карп, ил
Пересылается
ЦроДавЦОМ ШЛЮЗ/
платежной
сети
> Получателем
являет, я
фодавец
РТ — платежная информация
OI - информация о закале
P1MD - профиль сообщения PI
OIM Г) — профиль сообщения OI
Е — шифрование (RSA для асимметричной
и DES дтя симметричной схем)
К, - временный ключ симметричной
схемы шифрования
KUb —открытый ключ банка для
обмена ключами
Рис. 14.10. Структура сообщения Purchase Request (требование на закупку), от
правляемого владельцем платежной карточки
5. Значение PIMD необходимо для того, чтобы продавец мог проверить ду-
альную подпись Заметим, что данные OI отправляются в открытом виде,
6. Сертификат владельца платежной карточки. Содержит сертификат от-
крытого ключа цифровой подписи владельца платежной карточки. Этот
сертификат необходим как продавцу, так и шлюзу платежной сети.
После получения сообщения Purchase Request продавец выполняет следую-
щие действия (рис. 14.11).
1. Проверяет сертификаты владельца платежной карточки с помощью содер-
жащихся в них подписей центров сертификации.
2. Проверяет дуальную подпись с помощью открытого ключа цифровой под-
писи владельца платежной карточки. Это позволяет убедиться в том, что
заказ не был изменен во время пересылки и что заказ был подписан вла-
дельцем платежной карточки.
3. Обрабатывает заказ и пересылает платежную информацию шлюзу платеж-
ной сети для авторизации (соответствующий процесс будет описан ниже).
4. Отправляет сообщение Purchase Response (ответ на требование на закупку)
владельцу платежной карточки. '
14.3, ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
565
Сообщение запроса
+
Цифровой
PIMD
О1
□____
□ ___
с___
с___
Дуальная
подпись
SS3
Сертификат
владельца
платежной
карточки
Пересылает* я
прпдтацом гшпоту
пае с жчия с' та
OI - информация . । заказе
01MD —профиль сообщения OI
POMD - профиль < иобщения платежного поручения
В - шифрование (RSA)
Н - функция хэширования
KUC - открытый ключ подписи покупателя
Рис 14 11. Схема обработки сообщения Purchase Request продавцом
Сообщение Purchase Response (ответ на требование на закупку) содержит
блок ответа, подтверждающий заказ и ссылающийся на соответствующей номер
транзакции. Этот блок, подписывается продавцом с помощью его личного ключа
цифровой подписи. После этого блок вместе с подписью, а также сертификат
подписи продавца отправляются владельцу платежной карточки.
Когда программное обеспечение, установленное на компьютере владельца
платежной карточки, получает сообщение Purchase Response, оно проверяет сна-
чала сертификат продавца, а затем подпись блока ответа, В конце концов, в за-
висимости от содержания ответа, выполняется соответствующее действие, на-
пример отображение на экране некоторого сообщения для пользователя или об-
новление информации о состоянии заказа в базе данных.
Разрешение на оплату
Во время обработки заказа, поступившего от владельца платежной карточки,
продавец выполняет авторизацию транзакции (получение разрешения на оплату)
с помощью шлюза платежной сети. Такое получение разрешения на оплату
(payment authorization) означает санкционирование транзакции эмитентом пла-
тежной карточки. Авторизация дает продавцу гарантию того, что он получит
плату за проданный товар, и поэтому продавец может выполнить доставку това-
566
ГЛАВА 14. ЗАЩИТА WEB
ров или услуг покупателю. Обмен данными для получения разрешения на опла-
ту формируется из двух сообщений: Authorization Request (запрос разрешения
на оплату) и Authorization Response (ответ на запрос разрешения не оплату).
Сообщение Authorization Request (запрос разрешения на оплату), отправляемое
продавцом шлюзу платежной сети, состоит из следующих блоков информации.
1. Информация о платеже. Эта информация была получена от покупателя и
содержит следующие данные.
• Данные PI
• Дуальная подпись, вычисленная для совокупности Р1 и OI и подписан-
ная с использованием личного ключа подписи покупателя.
• Профиль сообщения 01 (O1MD).
• Цифровой конверт
2. Информация авторизации. Эта информация генерируется продавцом и со-
держит следующие данные.
• Блок авторизации, включающий идентификатор транзакции, подпи-
санный личным ключом цифровой подписи продавца и шифрованный
сгенерированным продавцом одноразовым ключом схемы симметрично-
го шифрования.
• Цифровой конверт формируется в результате шифрования одноразового
ключа схемы симметричного шифрования с помощью открытого ключа
шлюза платежной сети, предназначенного для обмена ключами.
3. Сертификаты. Продавец включает в сообщение сертификат цифровой под-
писи владельца платежной карточки (служит для проверки дуальной под-
писи), сертификат ключа своей цифровой подписи (позволяет проверить
подпись продавца) и сертификат своего ключа для обмена ключами
(необходим для ответа шлюза платежной сети).
Получив эти данные, шлюз платежной сети выполняет следующие действия.
1. Проверяет все сертификаты.
2. Дешифрует сначала цифровой конверт блока данных авторизации, чтобы
получить ключ для схемы симметричного шифрования, а затем дешифрует
блок данных авторизации.
3. Проверяет подпись продавца для блока данных авторизации.
4. Дешифрует сначала цифровой конверт блока платежной информации, что
бы получить ключ для схемы симметричного шифрования, а затем де-
шифрует блок платежной информации.
б. Проверяет дуальную подпись блока платежной информации.
6. Проверяет совпадение идентификатора транзакции, полученного от про-
давца, с идентификатором, включенным в состав данных Р1, поступивших
(через продавца) от владельца платежной карточки.
7. Запрашивает и получает разрешение на оплату у эмитента платежной кар-
точки.
14.3. ПРОТОКОЛ ЗАЩИЩЕ1ШЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
667
Получив разрешение на оплату у эмитента платежной карточки, платежный
шлюз возвращает продавцу сообщение Authorization Response (ответ на запрос
разрешения на оплату). Это сообщение состоит из следующих блоков информации.
1. Информация авторизации. Включает блок авторизации, подписанный
личным ключом цифровой подписи шлюза платежной сети и шифрован-
ный сгенерированным шлюзом платежной сети одноразовым ключом для
схемы симметричного шифрования. Кроме того, включает цифровой кон-
верт, содержащий этот одноразовый ключ, шифрованный с помощью от-
крытого ключа продавца, используемого для обмена ключами.
2. Информация мандата на получение платежа (capture token). Эта инфор-
мация будет использована для осуществления платежа впоследствии. Дан-
ный блок имеет ту же форму, что и предыдущий, а именно содержит под-
писанный и шифрованный мандат с цифровым конвертом. Этот мандат не
обрабатывается продавцом, а должен быть просто возвращен им в неиз-
менном виде шлюзу платежной сети в запросе на оплату
3. Сертификат Сертификат цифровой подписи шлюза платежной сети.
Получив подтверждение авторизации платежа от шлюза платежной сети,
продавец может выполнить доставку товаров или услуг покупателю.
Получение оплаты • 1 к ‘
Чтобы получить плату за товары или услуги, продавец обращается к шлюзу
платежной сети с инициативой выполнения транзакции получения платежа, со-
стоящей из двух сообщений: сообщения запроса на получение оплаты и сообще-
ния ответа на запрос на получение оплаты.
Для сообщения Capture Request (запрос на оплату) продавец генерирует, под-
писывает и шифрует блок данных запроса на оплату, включающий сумму пла-
тежа и идентификатор транзакции. Данное сообщение должно также включать
ранее полученный (в сообщении Authorization Response) шифрованный мандат
на получение платежа для данной транзакции и, кроме того, сертификаты клю-
чей продавца для цифровой подписи и обмена ключами.
Получив это сообщение, шлюз платежной сети дешифрует и проверяет блок
данных запроса на оплату, а также дешифрует и проверяет блок мандата на по-
лучение платежа. Затем проверяется соответствие между данными этих двух
блоков. После этого шлюз платежной сети создает расчетный запрос, отсылае-
мый эмитенту платежной карточки пч закрытой платежной сети. В результате
этого запроса происходит перечисление средств на счет продавца.
Затем шлюз с помощью сообщения Capture Response (ответа на запрос на оп-
лату) извещает продавца о перечислении средств Сообщение содержит подпи-
санный и шифрованный шлюзом блок данных ответа на запрос на оплату. Кроме
того, это сообщение содержит сертификат цифровой подписи шлюза платежной
сети. Программное обеспечение, установленное на компьютере продавца, полу-
чив данное сообщение, сохраняет его для использования в программах учета и
согласования денежных средств, поступающих от операционного центра.
568
ГЛАВА 14. ЗАЩИТА WEE
иииияиявииввзЕтг’^гт^г^-. гзтг- я^.‘ г\ — . .- .. г * > «•
14.4. Рекомендуел1Пеисто^жики дополнительном
информации
Хорошими источниками информации по вопросам защиты Web являются
[PUBI97] и [GARF97] (последний носит более формализованный характер). Наи-
более подробным описанием SET является Книга 1 соответствующего набора
спецификаций, которую можно найти на Web-узлах MasterCard и VISA, посвя-
щенных SET. Другим прекрасным обзором является [MACG97].
GARF97 Garfinkel, S , and Spatford, G Web Security & Commerce Cambridge, MA O'Reilly
and Associates, 1997
MACG97 Macgregor, R., Ezvan C , Liguori, L and Han, J Secure Electronic Transactions
Credit Card Payment on the Web in Theory and Practice. IBM RedBook SG24-4978-00
1997 Доступна в Web по адресу www.redbooks ibm com/SG24497h
RUAi97 Rubin A., Geei. D.; and Ranum, M Web Security Sourcebook New York Wifey, 1997
Вниманию читателей предлагаются и следующие Web-узлы.
Посвященная SSL страница Netscape. Содержит спецификации SSL.
Хартия защиты транспортного уровня (Transport Layer Security Charter).
Самые последние документы RFC и проекты стандартов TLS.
Посвященный SET узел MasterCard. Самые последние касающиеся SET
документы, словарь терминов и информация о приложениях.
Узел Visa-Electronic Commerce. Информация, подобная той, которая пред-
ставлена на узле MasterCard.
14.5. Задачи*
1. Почему в протоколах SSL и TLS предусмотрено использование отдельного
протокола изменения параметров шифрования (Change Cipher Spec
Protocol), а не просто сообщения change_cipher_spec в рамках протокола
квитирования (Handshake Protocol)?
2. Рассмотрите следующие угрозы безопасности Web и объясните, как каж-
дая из них устраняется теми или иными средствами SSL.
• Криптоанализ с использованием простого перебора (Brute-Force
Cryptanalytic AttackJ. Перебор всех возможных вариантов ключей алго-
ритма традиционного шифрования.
• Анализ с использованием словаря известного открытого текста
(Known-Plaintext Dictionary Attack). Многие сообщения содержат от-
крытый текст определенного вида, например команды GET HTTP. Про-
тивник создает словарь, включающий все возможные варианты шифро-
вания известного открытого текста. Перехватив шифрованное сообще-
ние, противник берет содержащий шифрованный открытый текст
фрагмент сообщения и ищет в нем соответствующий шифрованный
текст из словаря. Соответствующий текст словаря и текст фрагмента
14.4. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ 669
должны быть зашифрованы одним и тем же секретным ключом. Если
обнаружено несколько совпадений, предпринимаются попытки дешиф-
ровать текст с каждым из соответствующих ключей, чтобы выяснить,
какой из них правильный. Этот метод анализа особенно эффективен в
случае малой длины ключа (до 40 битов).
• Атака с воспроизведением сообщений (Replay Attack). Противник вос-
производит ранее перехваченные им сообщения квитирования SSL.
• Атака с внедрением посредника (Man-inihe-Middle Attack). Противник
внедряется в обмен ключами между клиентом и сервером как посред-
ник, представляясь клиенту сервером, а серверу — клиентом.
• Кража пароля (Password Sniffing). Перехват пароля противником в по-
токе данных приложения HTTP или иного приложения.
• Фальсификация IP-адреса (IP Spoofing). Использование фальсифицирован-
ных IP-адресов с целью заставить главный узел принять лижиые данные.
• Захват IP-связи (IP Hijacking). Отстранение противником одной из ле-
гальных сторон текущего аутентифицированного соединения путем ее
этключения и замещения ее собой.
• Синхронная атака (SYN Flooding). Противник отправляет сообщения
SYN (символ синхронизации) протокола TCP с запросом на установле-
ние соединения, но не отвечает на завершающее сообщение, сохраняя
тем самым установленное соединение. Атакуемый модуль TCP обычно
ожидает завершения процесса открытия “полуоткрытого” соединения в
течение некоторого времени, так что многократно повторяющиеся со-
общения SYN могут полностью парализовать работу модуля TCP.
3. Основываясь на материале данной главы, можете ли вы утверждать, что
получатель имеет возможность восстановить исходный порядок поступив-
ших записей SSL, если они пришли с нарушением этого порядка? Если да,
то как это сделать? Если нет, то почему?
670
ГЛАВА 14. ЗАЩИТА WEB
< г. Г-’
ЧАСТЬ Защита систем
IV------------------
1
ГЛАВА
15
. г . -JU !!!>
Нарушители и
вирусы
Что является главной идеей защиты? — Отражение удара.
Что является характерной особенностью защиты? — Посто-
янное ожидание удара.
Карл фон Клаузевиц О войне
Они приняли решение подвергнуть Чарльза Маблдена испыта
нию. Его заданием будет — ни больше, ни меньше — раздобыть
ключ к коду Стерна. Если у него, как он утверждает, действи-
тельно есть “концы" в Аттинге, то для него раздобыть код
должно быть вполне реальным делом, и тогда остановить его
может только верность Москве. Если же он добудет ключ к
коду, то он тем самым, без всякого сомнения, докажет свою
преданность Лондону.
Руфь Реадел (Ruth Rendell). Talking to Strange Man
Одной из важных проблем безопасности сетевой среды
являются злонамеренные или по крайней мере неже-
лательные попытки вторжения в сеть, предприни-
маемые некоторыми пользователями или программным обес-
печением. Такого рода нарушения со стороны пользователей
могут иметь форму попыток несанкционированного доступа
к компьютеру или попыток легального пользователя полу-
чить привилегии либо выполнить операции, которые выхо-
дят за рамки предоставленных ему полномочий Под нару-
шениями со стороны программного обеспечения имеется в
виду работа вируса, “червя” или “троянского коня”.
Все эти нарушения относятся к вопросам защиты сетей,
поскольку вход в систему может осуществляться посредст-
вом сети. Однако эти нарушения нельзя отнести к чисто сетевым — г.ользова
тель, имеющий доступ к локальному терминалу, может предпринять попытку
проникновения в систему, не используя сетевых средств. Вирус или “троянский
конь” могут попасть в систему с дискеты. В этом смысле только “червь" может
считаться чисто сетевым средством вторжения в систему. Таким образом, вопро-
сы вторжения в систему находятся на пересечении областей, относящихся к за-
щите сетей и защите компьютерных систем.
Данная книга в чсновном посвящена вопросам защиты сетей, поэтому мы не
будем пытаться провести здесь исчерпывающий анализ атак и соответствующих
контрмер, относящихся к вторжению в компьютерную систему. Вместо этого мы
рассмотрим вопрос в более широкой постановке и обсудим проблему на концеп-
туальном уровне.
Мы начнем эту главу с классификации нарушителей. Сначала мы исследуем
природу нарушений соответствующего вида, а затем рассмотрим стратегии их
предупреждения или, если это сделать невозможно, то хотя бы обнаружения.
15.1. Нарушители*
Одной из двух самых распространенных угроз безопасности являются нару-
шители (второй угрозой являются вирусы), обычно называемые хакерами
(hacker) или взломщиками (cracker). В одной из основополагающих работ, по-
священных вторжениям в системы, Андерсон (Anderson) [ANDE80] предложил
следующую классификацию нарушителей.
• Имитатор (masquerader). Лицо, не имеющее права пользования компьюте-
ром, но преодолевшее механизм управления доступом и использующее
права доступа некоторого легального пользонателя.
Правонарушитель (misfeasor). Легальный пользователь, пытающийся по-
лучить доступ к данным, программам или ресурсам, соответствующих
прав доступа к которым он не имеет, или пользователь, который распола-
гает соответствующими правами доступа, но использует их в злонамерен-
ных целях.
Тайный пользователь (clandestine user). Лицо, завладевшее правами
управления системой и использующее эти права для обхода средств аудита
и управления доступом либо для создания препятствий в регистрации сис-
темных событий.
Имитаторами чаше всего бывают внешние пользователи, правонарушителями
обычно являются внутренние пользователи, а тайными пользователями могут
оказаться как те, гак и другие.
По уровню опасности атаки нарушителей могут быть как незначительными,
так и вполне серьезными. К незначительным по опасности нарушениям можно
отнести попытки тех, кто пытается получить доступ к соответствующей сетевой
среде просто из личного любопытства. К серьезным по уровню опасности нару-
шениям можно отнести действия лиц, пытающихся читать секретные данные,
выполнять несанкционированные изменения данных или осуществлять дейст-
вия, приводящие к повреждению системы.
15 1. НАРУШИТЕЛИ
573
Угроза, связанная с действиями нарушителей, хорошо известна отчасти благо-
даря нашумевшему инциденту с “коварным хакером” (Wily Hacker) в 1986-1987
гг., описанному Клиффом Столлом (Cliff Stoll) [STOL88, STOL89J. В 1990 году бы-
ло развернуто настоящее преследование компьютерных хакеров, сопровождавшее-
ся арестами, открытием уголовных дел, одним драматическим показательным
процессом, несколькими обвинительными приговорами, а также конфискациями
немалого объема данных и компьютерного оборудования [STER92J. Многие люди
верили, что в результате этих мер проблема была взята под контроль.
На самом деле проблема так и не была решена. Приведем лишь один при-
мер — одна из групп Bell Labs [BELL92, BELL93] опубликовала данные о посто-
янных и довольно частых атаках, которым подвергается их компьютерный ком
плеке через Internet в течение достаточно долгого периода времени со стороны
совершенно разных источников. На время подготовки отчета эта группа Bell
Labs подвергалась следующим атакам.
Попытки копировать файл паролей (о чем мы подробнее поговорим поз
же) — чаще одного раза ь два дня.
Подозрительные запросы на удаленный вызов процедур — чаще одного
раза в неделю.
Попытки подключиться к несуществующим “машинам-ловушкам” — чаше
двух раз в месяц.
С нарушителями, не имеющими злого умысла, можно было бы примириться, хо-
тя и такие нарушите ти потребляют ресурсы и тем самым снижают производитель-
ность системы для легальных пользователей. Проблема в том, что не существует ме-
тодов, позволяющих однозначно выяснить, является нарушитель злоумышленником
или нет. Поэтому даже для систем, не предназначенных для хранения особо важных
данных, имеет смысл держать данную проблему под контролем.
Данное утверждение можно проиллюстрировать на примере события, про-
изошедшего в Техасском сельскохозяйственном университете (Texas A&M Uni-
versity) [SAFF93]. В августе 1992 г. в компьютерный центр университета посту-
пило сообщение о том, что один из их компьютеров использовался для атаки по
Internet на компьютеры, принадлежащие другой организации. Установив посто-
янное наблюдение, персонал компьютерного центра обнаружил, что имеется не-
сколько внешних нарушителей, постоянно запускающих процедуры подбора па-
ролей на разных машинах (всего в объединенной сети центра было около 12000
компьютеров). Центр отключил машины со взломанной защитой, устранил все
обнаруженные изъяны в системе защиты и только после этого продолжил работу
в нормальном режиме. Но спустя несколько дней один из локальных системных
администраторов зарегистрировал новую попытку взлома. Выяснилось, что ме-
тодика, применяемая нарушителем, была гораздо сложнее, чем казалось на пер-
вый взгляд. Были обнаружены файлы, содержащие согни перехваченных паро-
лей, среди которых были и пароли, с помощью которых можно было получить
доступ к главным, до сих пор считавшимся надежно защищенными серверам. Ко
всему прочему один из локальных компьютеров был сконфигурирован как элек-
тронная доска объявлений, с помощью которой хакеры связывались друг с дру-
гом и делились успехами и опытом.
574
глава is. нарушители и вирусы
Анализ этого случая выявил, что в действительности существует два уровня
хакеров. На высшем уровне находятся хорошо подготовленные пользователи,
прекрасно разбирающиеся в технологии, а на низшем — "рядовые солдаты”,
просто использующие имеющиеся программы взлома и имеющие весьма туман-
ные представления о том, как эти программы работают. Эта рабочая команда
объединяет два весьма грозных фактора: глубокое знание методов взлома систем
защиты и тупое желание бесконечно долго “стучаться в закрытые двери”, прове-
ряя все уязвимые места системы.
В результате возросшего внимания к проблеме нарушителей были сформиро-
ваны многочисленные группы быстрого реагирования на компьютерные проис-
шествия (CERT — computer emergency response team). Эти группы, объединяю-
щие специалистов в области защиты информации, собирают и обобщают инфор-
мацию об уязвимых местах используемых систем, делая эту информацию
доступной системным администраторам. К сожалению, хакеры тоже могут иметь
доступ к отчетам CERT. При анализе инцидента, произошедшего в Техасском
сельскохозяйственном университете, выяснилось, что хакеры разработали про-
граммы, проверяющие компьютеры на предмет выявления всех возможных не-
достатков защиты, на которые указывалось в отчетах CERT. В результате, если
система защиты какой-то машины не вполне отвечала рекомендациям CERT,
машина оказывалась широко открытой для такого рода атак.
Помимо запуска программ подбора паролей, нарушители модифицировали
программу регистрации входа в сеть, что позволило им перехватывать пароли,
вводимые пользователями во время регистрации в системе Это дало нарушите-
лям возможность создать впечатляющий список скомпрометированных паролей,
который был выставлен на электронной доске объявлений, созданной на одной
из машин жертвы.
Мы начнем следующий раздел с описания методов, используемых для втор-
жения, а затем перейдем к обсуждению контрмер, позволяющих предотвратить
попытки вторжения. Если же предотвратить вторжение оказывается невозмож-
ным, то второй линией защиты должна оказаться система обнаружения наруше-
ний, о которой мы поговорим в конце раздела.
Методика вторжения
Целью нарушителя является получение доступа к системе или расширение
прав, предоставленных ему системой на законном основании. Е общем для этого
нарушителю, как правило, требуется раздобыть информацию, которая должна
быть защищенной. В большинстве случаев эта информация представлена в фор-\/
ме пароля пользователя. Зная пароль некоторого другого пользователя, наруши-
тель может войти в систему под его именем и получить все привилегии, кото-
рыми обладает этот пользователь.
Обычно в системе имеется файл, связывающий пароли с именами легальных .-
пользователей. Если этот файл не защищен, не составляет никакого труда полу-
чить к нему доступ и узнать хранящиеся в нем пароли. Файл паролей может
защищаться одним из следующих двух способов.
1S.1. НАРУШИТЕЛИ
575
Одностороннее шифрование. Система хранит пароль пользователя только
в шифрованном виде Когда пользователь вводит свой пароль, система
шифрует введенный пароль и сравнивает результат с тем значением, кото-
рое хранится в файле паролей. На практике система обычно выполняет
одностороннее (необратимое) преобразование, в котором пароль служит
для генерирования ключа функции шифрования, в результате чего полу-
чается вывод фиксированной длины.
• Управление доступом. Доступ к файлу паролей разрешается лишь одному
или очень небольшому числу пользователей.
Если используется обе или хотя бы одна из этих контрмер, потенциальному
нарушителю придется приложить определенные усилия, чтобы узнать пароли.
На основе анализа специальной литературы и интервью со многими взломщика-
ми паролей в [ALVA90] сообщается о следующих методах получения паролей.
1. Проверка паролей по умолчанию для стандартных учетных записей, по-
ставляемых с системой. Многие администраторы не утруждают себя рабо-
той по смене установленных по умолчанию значений.
2. Перебор всех коротких паролей (от одного до трех сим1 <-лов).
3 Проверка слов из системного словаря или из списка наиболее вероятных
паролей. Список последних всегда можно найти на электронных досках
объявлений хакеров.
4. Сбор информации о пользователях, включая их полные имена, имена их
супругов и детей, названия картин и фотографий па рабочих местах и даже
названия их любимых книг, по которым можно судить об их увлечениях.
5. Проверка в качестве пароля телефонных номеров, номеров социальной
страховки и номеров комнат пользователей.
в. Проверка в качестве пароля всех возможных для данного штага номерных
знаков автомобилей.
7. Использование “троянского коня” (см. раздел 15.2) для обхода ограниче-
ний доступа.
8. Подключение к линии связи между пользователем и главным узлом.
Первых шесть методов являются вариациялМи на тему подбора паролей. Если
нарушителю приходится угадывать варианты пароля в процессе регистрации в
системе, то, с одной стороны, это весьма утомительно, а с другой — легко обнару-
живается системой. Например, система может просто отвергать любые попытки
зарегистрироваться под соответствующим именем после трех неудачных попыток
ввода пароля, что заставит нарушителя разорвать связь с узлом и пытаться под-
ключиться снова В такой ситуации нет смысла проверять большое число паролей.
Однако в действительности нарушитель вряд ли станет использовать такие прими-
тивные методы. Например, если нарушитель может получить доступ к зашифро-
ванному файлу паролей как непривилегированный пользователь, то он, скорее все-
го, попытается скопировать этот файл и не спеша дешифровать его на основе из-
вестного механизма шифрования для данной конкретной системы, чтобы в
результате получить пароль, дающий более высокий уровень привилегий.
576
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Подбор паролей оказывается эффективным методом и, таким образом, пред-
ставляет собой опасность только в тех случаях, когда он может выполняться в
автоматическом режиме и без угрозы выявления факта подбора пароля. Не-
сколько ниже в этом разделе мы остановимся на методах выявления попыток
автоматического подбора пароля.
Под седьмым номером в приведенном выше списке указана атака, предпола-
гающая использование “троянских коней”, обнаружение которой представляет
собой достаточно нетривиальную задачу Пример программы, которая предна-
значена для обхода механизма управления доступом, приведен в [ALVA90]. Не-
привилегированный пользователь создал игровую программу, предлагаемую сис-
темному оператору для развлечения в свободное время. Программа действитель-
но представляла собой игру, но во время работы она также копировала файл
паролей, хранившийся в незашифрованном виде и защищенный лишь с помо-
щью системы разграничения доступа, в файл пользователя, являющегося авто-
ром программы. Поскольку игра работала в режиме доступа привилегированного
пользователя, соответствующая программа могла получить к файлу паролей не-
ограниченный доступ.
Восьмой тип атаки, заключающийся в подключении к линии связи, относит-
ся к области вопросов обеспечения физической защиты системы. В случае таких
атак возможным методом противодействия является шифрование в канале свя-
зи, которое обсуждалось в разделе 5.1 главы 5.
Теперь мы перейдем к описанию двух основных методов противодействия:
предупреждения и обнаружения нарушений. Предупреждение нарушений явля-
ется неизменной целью системы защиты и в каком-то смысле, бесконечной бит-
вой с невидимым противником. Трудность этой задачи объясняются тем фактом,
что защищающаяся сторона должна пытаться предотвратить все возможные ти-
пы атак, тогда как атакующая сторона имеет возможность выбрать самое слабое
звено в общей цепи защиты и сосредоточить все свои усилия именно в этом мес-
те. Цель обнаружения нарушений состоит в изучении типа используемой атаки
либо до ее успешного завершения, либо уже после.
Защита паролей
Первой линией защиты от нарушителей является система паролей. Практиче-
ски все многопользовательские системы требуют, чтобы пользователь при входе
в систему указывал не только свой идентификатор (имя пользователя), но и па-
роль. Пароль выполняет функции аутентификации пользователя, входящего в
систему. В свою очередь, идентификатор пользователя обеспечивает защиту по
следующим направлениям.
• По идентификатору пользователя определяется, получит ли пользователь
доступ к системе вообще. Ви многих системах доступ разрешается только
тем, кто уже имеет соответствующую идентификатору запись в системе
По идентификатору пользователя определяется набор привилегий, имею-
щихся у данного пользователя. Некоторые пользователи могут иметь статус
суперпользователя, позволяющий читать файлы и выполнять действия, для
которых в операционной системе предусмотрена особая защита. В некоторых
15 1. НАРУШИТЕЛИ
577
системах предусмотрены специальные идентификаторы для входа в систему
гостей (guest) или анонимных пользователей (anonymous), и пользователи,
регистрирующиеся с такими идентификаторами, оказываются более ограни-
ченными в правах доступа, чем обычные пользователи.
Идентификаторы пользователей играют важную роль при использовании
так называемого разграничительного контроля доступа (discretionary ac-
cess control). Например, путем предоставления списка идентификаторов
других пользователей данный пользователь может разрешить им читать
файлы, владельцем которых он является.
Уязвимое! ь паролей
Чтобы лучше понять природу соответствующих атак, рассмотрим широко
применяемую в системах UNIX схему, где пароли никогда не хранятся в откры-
том виде (рис. 15.1(a)). Каждый пользователь сам выбирает пароль длиной до
восьми алфавитно-цифровых символов. Этот пароль преобразуется в 56-битовое
значение (на основе 7-битовых кодов ASCII), которое служит вводимым значени-
ем для ключа процедуры шифрования. Процедура шифрования, имеющая на-
звание crypt(3), базируется на использовании алгоритма DES. Соответствующий
алгоритм DES оказывается несколько измененным с помощью специального 12-
битового модификатора ("salt” value). На вход такого модифицированного алго-
ритма DES сначала подается 64-битовый блок входных данных, состоящий из
одних нулей. Выходное значение подается на вход следующего шага шифрова-
ния. Процесс повторяется до тех пор, пока общее число шагов не достигнет 25.
Полученное в результате 64 битовое выходное значение преобразуется в 11-
символьную последовательность. Шифрованный таким образом пароль сохраня-
ется вместе с открытым значением модификатора в файле паролей в соответст-
вующей данному идентификатору записи
Использование модификатора решает следующие задачи.
Предотвращает возможность возникновения проблемы дублирования паро-
лей в парольном файле. Даже если два разных пользователя выберут одина-
ковые пароли, их пароли будут регистрироваться в разное время, поэтому
“расширенные” представления паролей этих пользователей будут разными
в Увеличивает эффективную длину пароля на два символа, не заставляя
пользователя запоминать эти два дополнительных символа. Следовательно,
число возможных паролей возрастает в 4096 раз, что затрудняет задачу
подбора пароля.
Предотвращает возможность применения аппаратной реализации DES, что
упрощает проведение атак с использованием простого перебора всех паролей.
Когда пользователь пытается войти в систему UNIX, он должен ввести иден-
тификатор и пароль. Операционная система использует идентификатор для на-
хождения в файле паролей открытого значения модификатора и шифрованного
значения пароля. Модификатор и введенный пользователем пароль подаются на
вход процедуры шифрования. Если в результате выполнения данной процедуры
получается значение, идентичное сохраненному шифрованному значению паро-
ля, введенный пароль принимается системой как правильный.
578
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Salt
(модификатор) Пароль
lai Загрузка нового пароля
Рис. 15.1. Схема использования системы паролей в UNIX
Процедура шифрования предназначена для того, чтобы исключить возмож-
ность угадывания пароля. Программные реализации DES более медленны в
сравнении с аппаратными реализациями, а необходимость выполнения 25 ите-
раций еще в 25 раз увеличивает время, требуемое для перебора. Однако со вре-
мени создания алгоритма ситуация изменилась в двух отношениях. Во-первых,
были разработаны более новые и более быстрые реализации алгоритма. Напри
мер. в Internet появилась программа-“червь”, которая за вполне приемлемое
15.1. НАРУШИТЕЛИ
579
время способна с помощью усовершенствованного алгоритма проверить несколь-
ко сотен вариантов пароля для входа в атакуемую систему UNIX. Во-вторых,
производительность аппаратных средств систем постоянно растет, что означает
более быстрое выполнение любых алгоритмов
Таким образом, можно обозначить две угрозы защите системы паролей, реа-
лизованной в UNIX.*Во первых, пользователь может получить доступ к машине,
используя гостевой идентификатор или какой-то другой способ, а затем запус-
тить на этой машине программу подбора паролей, обычно называемую "password
cracker”. При этом нарушитель может проверить сотни, и даже тысячи значений
пароля, не вызывая заметного расхода системных ресурсов. Кроме того, если
противнику удастся получить копию файла паролей, то программу подбора па-
ролей можно будет запустить на другом компьютере в режиме отсутствия цейт-
нота. Эго дает противнику возможность проверить многие тысячи вариантов па
ролей за вполне приемлемое время.
Пример программы подбора паролей был ^публикован в Internet в августе
1993 г. [MADS93J. На компьютере Thinking Machines Corporation была достиг-
нута производительность в 1560 вызовов процедуры шифрования в секунду на
векторную единицу. При четырех векторных единицах на процессорный узел
(что является стандартной конфигурацией) общая производительность машины,
состоящей из 128 узлов (что является вполне скромным показателем), достигает
80(1000 вызовов процедуры шифрования в секунду, а для машины, состоящей из
1024 узлов, — 6,4 млн вызовов в секунду.
Но даже этих огромных значений для нарушителя оказывается недостаточно,
чтобы успешно использовать простой перебор всех возможных вариантов пароля.
Вместо этого взломщики паролей исходят из предположения, что многие поль-
зователи имеют легко угадываемые пароли.
Нередко пользователи, если им разрешается выбрать пароль по своему усмот-
рению, выбирают очень короткие пароли. В табл. 15.1 показаны результаты ис-
следований, проведенных в Университете Пэдью (Purdue University). Целью ис-
следования было выяснение длин паролей выбираемых пользователями на 54
машинах с общим числом пользователей около 7000. Оказалось, что 3% всех
паролей имели длину в три символа или менее того. Таким образом, атакующий
может начать с проверки всех возможных комбинаций длиной до трех символов
Простейшим средством противодействия является такая настройка системы, при
которой пользователь не сможет выбрать пароль длиной меньше, скажем, шести
символов или даже потребовать, чтобы все пароли состояли в точности из восьми
символов. Большинство пользователей вряд ли станут выражать недовольство по
поводу таких ограничений.
Длина пароля — это только чдин источник возможных проблем. Многие
пользователи, если им разрешается выбрать пароль по своему усмотрению, оста-
навливают выбор на легко угадываемых словах, например на своем имени, на-
звании улицы, на которой они живут, на словах из повседневной лексики и т.п.
Это существенно упрощает задачу' подбора пароля. Взломщику достаточш про-
верить файл паролей на наличие в нем наиболее вероятных значений. Поскольку
легко угадываемые пароли используют многие люди, такая стратегия оказывает
ся эффективной практически в любой системе.
580
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Таблица 15.1. Распределение длин паролей, выбираемых пользователями
[SPAF92a]
Длина пароля Число паролей указанной длины Диля от общего числа паролей
1 55 0,004
2 87 0,006
3 212 0,02
4 149 0,03
5 1260 0,09
а 3035 0,22
7 2У17 0.21
8 5772 0,42
Всего: 13787 1,0
Демонстрация эффективности подбора пароля имеется в [K.LEI90]. Автор со-
брал файлы паролей UNIX из самых разных источников, в общей сложности им
было получено около 14000 зашифрованных паролей. Результат, который автор
справедливо называет ошеломляющим, представлен в табл. 15.2. Из всех паро
лей примерно четверть была им угадана. При этом использовалась следующая
стратегия.
1. Проверяются имена пользователя, инициалы, идентификатор учетной за-
писи и другая персональная информация. В общем для каждого пользова-
теля проверялось 130 возможных вариантов парочя.
2. Проверяются слова из различных словарей. Автор собрал словарь, содер-
жащий более 60000 слов, включая словарь справки самой системы, а так-
же другие словари, как видно из таблицы.
3. Проверяются различные модификации слов из п. 2 Варианты создавались
путем изменения первой буквы со строчной на прописную, добавления в
начато слова символа “Л”, перевода символов слова в верхний регистр, за-
писи слова в обратном порядке, замены букв “о” на цифру “О” и т.п. В ре-
зультате таких преобразований список проверяемых вариантов увеличива-
ется на 1 млн значений.
4. Проверяются варианты замены регистра символов в словах из п. 2, не уч-
тенные на этапе, представленном п. 3. В результате этого к списку прове-
ряемых вариантов добавляется еще 2 млн значений.
Таким образом, данный тест предполагает проверку примерно 3 млн слов. Если
использовать упоминавшийся выше компьютер Thinking Machines, то для шифро-
вания всех этих слов потребуется около часа. При этом необходимо понимать, что
здесь показатель успеха 25% получен в результате довольно тщательного анализа,
но в определенных случаях одного угаданного пароля может оказаться вполне дос-
таточно для того, чтобы получить привилегированный доступ к системе.
15.1. НАРУШИТЕЛИ
581
Таблица 15.2. Пароли, угаданные из выборки 13797 учетных записей
[KLFI90J
Тил пароля Число вариантов Число совпадений Доля от общего числа паролей Cooi ношение „стоимость- результат ’
Имя пользователя 130 368 2,7 % 2.830
Последовательность 866 22 0,2 % 0,025
СИМВОЛОВ
Числя 427 9 0,1 % 0,021
Китайские слова 392 56 0,4 % 0,143
Географические на звания 628 82 0 6 % 0,131
Общеизвестные названия 2239 548 4,0 % 0.245
Женские имена 4280 161 1,2 % 0,038
Мужские имена 2866 140 1,0 % 0,049
Редкие имена 4955 130 0.9 % 0,026
Мифы и легенды 1240 66 0.5 % 0,053
Персонажи Шекспира 478 11 0,1 % 0,023
Спортивные термины 238 32 0,2 % 0.134
Научная фантастика 691 59 0.4 % 0,085
Кинофильмы и актеры 99 12 0,1 % 0,121
Мультфильмы 92 9 0,1 % 0.098
Известные люди 290 55 0.4 % 0,190
Крылатые фразы и 933 253 1,8 % 0,271
выражения
ФаМИЛИИ 33 9 0,1 % 0,273
Биологические термины 58 1 0,0 % 0,017
Слова из системного 19683 1027 7,4 % 0,052
словаря -
Названия машин 9018 132 1,0 % 0,015
Мнемоника 14 2 0,0 % 0.143
Библейские названия 7525 83 0,6 % 0,011
Повседневная лексика 3212 54 0,4 % 0,017
Слова из языка идиш 56 0 0.0 % 0.U0O
Названия астероидов 2407 19 0,1 % 0,007
Всего: 62727 3340 24,2 % 0,053
'Вычисляется путем деления числа совпадений на число вариантов Чем больше вари-
антов необходима проверить, тем меньше значение этого показателя
582
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Управление доступом
Одним из методов предотвращения возможности атаки с подбором паролей яв-
ляется запрещение доступа к файлу паролей. Если часть файла, содержащая шиф-
рованные представления паролей, доступны только привилегированным пользова-
телям, нарушитель не сможет прочесть их без пароля привилегированного пользо-
вателя. В [SPAF92] отмечаются некоторые недостатки этой стратегии.
Многие системы, включая большинство систем UNIX, '-называются чувст-
вительными к непредвиденным вторжениям. Получив каким-либо образом
доступ к системе, нарушитель может пытаться получить некоторый список
паролей, чтобы каждый раз входить в систему под разными именами, тем
самым уменьшая риск своего обнаружения. Или какой-то легальный поль
зиватель системы может использовать идентификатор и пароль другого
пользователя, чтобы получить доступ к закрытым данным или нарушить
работу системы.
Один сбой системы защиты может сделать файл паролей открытым для
чтения, в результате чего все учетные записи могут оказаться скомпроме-
тированными.
Некоторые пользователи, имеющие доступ к разным машинам, вводят для
разных учетных записей одни и те же пароли. Если при этом кто-то смо-
жет узнать пароль данного пользователя на одной машине, может быть
скомпрометирована и другая машина.
Таким образом, эффективность стратегии защиты доступа к системе нераз-
дельно связана с требованием выбора пароля, который нелегко разгадать.
Стратегии выбора пароля
Урок, который можно извлечь из результатов двух описанных выше исследо-
ваний (табл. 15.1 и 15.2), заключается в том, что по собственному выбору мно-
гие пользователи создают либо слишком короткие, либо легко угадываемые па-
роли. В то же время, если пользователю предоставить пароль, состоящий из
восьми случайно выбранных алфавитно-цифровых символов, взломать такой па-
роль оказывается практически невозможным. Однако в этом случае для боль-
шинства пользователей запомнить такой пароль будет точно так же невозможно.
К счастью, если даже ограничить пространство таких паролей просто запоми-
нающимися символьными строками, то размер этого пространства все равно ока-
зывается достаточно большим для того, чтобы предотвратить возможность взло-
ма. Таким образом, цель заключается в том, чтобы исключить выбор пользова-
телем легко угадываемого пароля и и то же время сохранить возможность
выбора легко запоминающегося пароля. Решение этой задачи достигается за счет
перечисленных ниже средств.
ь Обучение пользователей.
Генерирование паролей компьютером.
Реактивная проверка пароля.
Упреждающая проверка пароля.
15.1. НАРУШИТЕЛИ
583
Пользователям можно разъяснить важность использования трудно угадывае-
мых паролей и выдать рекомендации по правильному выбору таких паролей.
Стратегия обучения пользователей в большинстве случаев оказывается малоэф-
фективной, особенно, если число пользователей велике- или имеется постоянный
приток и отток пользователей. Одни пользователи будут просто игнорировать
рекомендации, другие же просто не смогут оценить, насколько надежными яв-
ляются выбранные ими пароли. Например, многие (ошибочно) полагают, что за-
пись слова в обратном порядке или изменение последней буквы со строчной на
прописную делают невозможным расшифровку пароля.
Генерирование паролей с помощью компьютера тоже приводит к проблемам.
Если генерировать пароли в виде случайных наборов букв и цифр, пользователи
не смогут их запомнить. Даже если пароли представляют собой более или менее
произносимые слова, пользователи -*се равно, испытывая трудности с запомина-
нием таких слов, будут стремиться записать их. В общем схема генерирования
паролей с помощью компьютера имеет печальный опыт с точки зрения удобства
пользователя. Один из самых лучших автоматических генераторов паролей опи-
сан в документе FIPS PUR 181. Документ содержит не только описание приме-
няемого подхода, но и листинг исходного текста алгоритма на языке С. Алго-
ритм генерирует вполне произносимые слова с помощью комбинации произно-
симых буквосочетаний. Поток символов, формирующей буквосочетания и слова,
обеспечивается генератором случайных чисел.
Стратегия реактивной проверки паролей состоит в том, что система периоди-
чески запускает собственную программу подбора паролей, обнаруживающую
легко угадываемые пароли. Система отменяет все разгаданные пароли и извеща-
ет об этом соответствующих пользователей. Данный подход имеет ряд недостат-
ков. Во-первых, выполнение такой проверки в полном объеме требует от систе-
мы большого расхода ресурсов. Ввиду того что потенциальный противник, кото-
рый сможет получить копию файла паролей, может позволить себе бросить на
решение задачи все ресурсы своего компьютера в течение многих часов или даже
дней, эффективная программа реактивной проверки паролей находится явно в
более проигрышном положении. Кроме того, все имеющиеся пароли остаются
уязвимыми до тех пор, пока программа реактивной пповерки паролей не закон-
чит работу и легко угадываемые пароли не будут выявлены;
Самым многообещающим с точки зрения улучшения зашиты паролей являет-
ся стратегия упреждающей проверки паролей. В этом случае пользователю раз-
решается выбирать пароль по своему усмотрению, но в процессе выбора система
проверяет пароль на соответствие установленным требованиям и, если необходи-
мо, отвергает его. Такой подход основан на убеждении, что под руководством
системы из достаточно широкого пространства допустимых паролей пользова-
тель выберет пароль, который он сможет легко запомнить, но который будет
практически невозможно угадать с помощью перебора значений из словаря.
Проблема упреждающей проверки паролей состоит в необходимости достиже-
ния баланса между стойкостью пароля и приемлемостью пароля для пользовате-
ля. Если система отвергает слишком много паролей, пользователи жалуются,
что выбрать подходящий пароль слишком трудно. Если же система использует
для проверки пригодности паролей слишком простой алгоритм, то это только
584
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
дает взломщику возможность усовершенствовать свою программу подбора паро-
лей. В оставшейся части раздела мы обсудим возможные подходы к реализации
упреждающей проверки паролей.
Первый подход состоит в создании простой системы контроля за соблюдением
определенных правил. Например, можно потребовать чтобы соблюдались сле-
дующие правила.
Все пароли должны содержать не менее восьми символов.
Среди первых восьми символов должны присутствовать как минимум одна
строчная буква, одна прописная буква, одна цифра и один знак пунктуации.
Эти правила должны сопровождаться соответствующими инструкциями поль-
зователю. Хотя данный подход лучше простого обучения пользователей, он не
всегда может остановить взломщика паролей. Такая схема дает нарушителю ин-
формацию о том, какие пароли не следует проверять, но в конечном итоге не
исключает возможности успешного проведения соответствующей атаки.
Другой возможностью является простое создание большого словаря потенци-
ально "плохих” паролей. При выборе пользователем пароля система проверяет,
не попадает ли выбранный пароль в "черный список”. Данный подход чреват
следующими двумя проблемами. .»-•->
Проблема объема. Чтобы описанный выше подход был достаточно эффек-
тивным, словарь должен быть достаточно большим. Например, файл сло-
варя, использовавшегося для исследований в Университете Падью
[SPAF92a], имел объем более 30 Мбайт.
Проблема времени. Время поиска в большом словаре также может ока-
заться слишком большим. Кроме того, для проверки возможных модифи-
каций слов необходимо либо включить эти модификации в словарь, что
сделает его вообще огромным, либо тратить дополнительное время на про-
верку модификаций слов с помощью специальных алгоритмов.
На сегодняшний день перспективными представляются две методики прове-
дения эффективной и достаточна., надежной упреждающей проверки паролей.
Одна из них строится на основе использования марковской модели генерирова-
ния угадываемых паролей [DAVI93J На рис. 15.2 показана упрощенная версия
такой модели. Эта модель задает язык, алфавит которого состоит из трех симво-
лов. Состояние системы в любой момент идентифицируется последним выбран-
ным символом. Коэффициенты переходов из одного состояния в другое задаются
вероятностями следования одних символов за другими. Например, вероятность
того, что следующей буквой будет Ь при условии, что текущей является буква а,
в данной ситуации равна 0.5.
В общем случае марковская модель задается четырьмя значениями
(тп, А, Т, А], где т обозначает число состояний модели, А— пространство со-
стояний, Т — матрицу вероятностей переходов, a k — порядок модели. Для мо-
дели порядка А вероятность перехода к тому или иному символу алфавита зави-
сит от значений й предыдущих символов. На рис. 15.2 показана схема простой
модели первого порядка.
15.1. НАРУШИТЕЛИ
585
0.0
М (3, {а, Ь, с] ,Т, 1 1 ,гд«-
0.0 0.5 0.5'
Т- 0.2 0.4 0 4
1.0 0.0 '.О
пример строки. вероятной атя итого языка. вЬЬсасаЬа
пример строки, не являющейся вероят ной для этого языка; васесЬааа
Рис. 15.2. Пример марковской модели
В упомянутой выше работе строится и используется модель второго порядка.
Сначала создается словарь легко угадываемых паролей. После этого вычисляется
матрица переходов следующим образом.
1. Определяется матрица частот f, где f(i, j, k) соответствует числу появле-
ний триграмм, состоящих из i-го, j-ro и k-го символов. Например, пароль
parsnips содержит триграммы par, ars, rsn, snl, nip и ips.
2. Для каждой биграммы ij вычисляется f(/, j, <*=) как общее число триграмм,
начинающееся с у. Например, f(a, b,«.) представляет собой общее число
триграмм вида aba, abb, abc и т.д.
3. Элементы матрицы Т вычисляются по формуле
T(i, j, k) =
го,}, fr)
f(i. j. °°)
В результате получается модель, отражающая структуру слов в словаре. С
помощью этой модели вопрос “Является ли данный пароль плохим?” трансфор-
мируется в вопрос “Порождается ли данная строка (т.е. пароль) с помощью дан-
ной модели Маркова?”. Для введенного пароля можно найти вероятности пере-
ходов для всех триграмм. Затем с помощью стандартных статистических тестов
586
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
можно выяснить, оказывается ли данный пароль строкой, вероятной или неве-
роятной для данной модели. Пароли, которые с определенной долей вероятности
порождаются данной моделью, отвергаются. Авторы утверждают, что для моде-
ли второго порядка получаются хорошие результаты. Предложенная ими систе-
ма находит практически все пароли из словаря и, вместе с тем, не отбрасывает
слишком много потенциально хороших паролей, оставаясь достаточно дружест-
венной по отношению к пользователю.
Совершенно другой подход предложил Спаффорд (Spafford) [SPAF92a,
SPAF92bJ. Этот подход основан на использовании фильтра Блума (Bloom)
(BLOO70J. Сначала давайте рассмотрим принцип работы этого фильтра. Фильтр
Блума порядка Л состоит из k независимых функций хэширования Н,(х), Нг(х),
.... Н,(х), где каждая функция отображает пароль в значение хэширования из
диапазона от 0 до N -1. Таким образом,
H.(Xj = p l<i<k,l<j<D, 0<y<N-l,
где
X, — у-е слово в словаре паролей,
— число слов в словвре паролей.
Далее к словарю применяется следующая процедура.
1. Определяется таблица хэширования из N битов, все биты в которой уста-
навливаются равными 0.
2. Для каждого пароля вычисляется k соответствующих значений хэширова-
ния, и соответствующие биты в таблице хэширования устанавливаются
равными 1. Так, если некоторых i и j получается Н,(Х.) - 67, то шестьде-
сят седьмой бит таблицы хэширования устанавливается равным 1. (Если
значение этого бита уже было равно 1, то оно не меняется.)
Когда программе проверки предъявляется новый пароль, она вычисляет k
значений хэширования для этого пароля. Если все соответствующие биты табли-
цы хэширования оказываются равными 1, пароль отвергается. Все пароли из
словаря будут отвергнуты. Однако будут наблюдаться и некоторые '‘ошибочные
срабатывания” (т.е. будут отвергнуты и некоторые пароти, не включенные в
словарь, но порождающие отвергающую таблицу хэширования). Чтобы убедить-
ся в этом, рассмотрим схему с двумя функциями хэширования. Предположим,
что в словаре значатся пароли undertaker и hulkhogan, но нет пароля xG%ffjj98.
Допустим также, что
Н,(undertaker) = 25 , H,(bulkhogan) - 83, H,(xG%#jj98) = 665,
Ha(undertaker) = 998 , Hs(hulkhogan) = 665, H,(xG% #jj98) = 998.
Если системе будет предложен пароль xG%#jj98, система его отвергнет, не-
смотря на то, что его нет в словаре Если такие ошибочные срабатывания будут
наблюдаться слишком часто, пользователям будет трудно выбирать пароли. Сле-
довательно, необходимо выбрать такую схему хэширования, при которой оши
бочные срабатывания были бы сведены к минимуму. Можно доказать, что веро-
ятность ошибочного срабатывания приблизительно равна
Р = (1 -е *а/Л')* = (1-е‘*/л)*
15.1. НАРУШИТЕЛИ
587
или, что то же самое,
ln(l -P'f") ’
где
k — число функций хэширования,
N — число битов в таблице хэширования,
D — число слов в словаре.
R “ N/D — отношение размера таблицы хэширования (в битах) к раз-
меру словаря (в словах).
На рис. 15.3 изображен график Р как функция от Я для различных значений k.
Предположим, что у нас есть словарь, состоящий из 1 млп слов. Необходимо,
чтобы не указанные в словаре слова отбрасывались с вероятностью 0.01. Если
выбрать шесть функций хэширования, требуемым отношением будет Я = 9.15.
Соответствующая таблица хэширования должна содержать 9,6x10' битов, что
означает необходимость выделить примерно 1,2 Мбайт для ее хранения. Для
сравнения хранение всего словаря потребовало бы около 8 Мбайт. Таким образом
достигнут коэффициент сжатия порядка 7. Более того, проверка пароля предпо-
лагает прямое вычисление всего шести функций хеширования, не зависящих от
размеров словаря, тогда как использование для проверки полного словаря пред-
полагает долгие операции поиска.1
Обнаружение нарушителей
Даже самая хорошая система предотвращения вторжений иногда не срабатыва-
ет. Поэтому второй линией защиты должна стать система выявления нарушений,
что в последнее время привлекает внимание все большего числа исследователей.
Интерес к этим вопросам обусловлен целым рядом причин, включая следующие
1. Если нарушение будет обнаружено достаточно быстро, нарушителя можно
будет идентифицировать и лишить доступа к системе прежде, чем он успе-
ет повредить или скомпрометировать данные. Даже если нарушение будет
зафиксировано слишком поздно для того, чтобы успеть воспрепятствовать
действиям нарушителя, чем раньше нарушение будет обнаружено, тем
меньшим будет ущерб и тем быстрее будет восстановлена система.
2. Эффективная система обнаружения нарушений сама по себе может слу-
жить в качестве отпугивающего средства, отчасти выполняя функции сис-
темы предотвращения вторжений.
3. Обнаружение нарушений позволяет собирать информацию о методах втор-
жения, которую впоследствии можно использовать для усиления системы
предотвращения вторжений.
1 И модель Маркова, и фильтр Блума опираются на методы теории вероятностей. В модели
Маркова допускается небольшая вероятность того, что некоторые пароли из словаря не будут
отвер{нуты, и небольшая вероятность того, что будут отвергнуты пароли, которых в словаре
нет В случае использования фильтра Блум я имеется только небольшая вероятность того, что
будут отвергнуты пароли, которых нет в словаре. Здесь мы снова видим, что использование ве-
роятностного подхода упрощает решение задачи (см. сноску 1 в глав« 12).
588
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
1
о
о
X
I
а
= 0.01
0-001
'Z фкихиии хэширования
6 функций хэширования
4 функции кэширования
15 20
Отношение размера таблицы хэширования (в битах)
к размеру словаря (в словах)
Рис. 15.3 Графики характеристик фильтра Блума
Обнаружение нарушений основывается на предположении, что поведение на-
рушителя отличается от поведения легального пользователя и соответствующие
различия можно представить в количественном выражении. Конечно же, нельзя
ожидать, что мы сможем наблюдать совершенно разное использование ресурсов
нарушителем в сравнении с легальным пользователем. Правильнее предполо-
жить, что в иоведении и того, и другого будут общие черты.
На рис. 15.4 в очень абстрактном виде иллюстрируется' природа задачи,
стоящей перед разработчиком системы обнаружения нарушений Хотя типичное
поведение нарушителя и отличается от типичного поведения легального пользо-
вателя, характеризующие их поведение области все же пересекаются. Таким об-
разом, чем более грубо будет интерпретироваться поведение нарушителя, тем
выше будет вероятность “ошибочных срабатываний”, т.е. признания легальных
пользователей нарушителями. В то же время стремление избавиться от ошибоч-
ных срабатываний путем более строгой интерпретации поведения нарушителя
ведет к “ошибочным несрабатываниям”, т.е. ситуациям, когда нарушители ос-
таются невыявленными. Таким образом, в практике обнаружения нарушителей
присутствует элемент искусства компромисса.
В работе Андерсона (Anderson) [ANDE80] в качестве постулата принято пред-
положение о том, что отличить имитатора от легального пользователя можно с
достаточной степенью точности. Характеристика поведения может быть установ-
15.1. НАРУШИТЕЛИ
589
Плотность
распределения
пользователя
Рис. 15.4 Профили характеристик поведения нарушителей и легальных Поль
зователей
лена на основе наблюдения за действиями пользователя в прошлом, и при этом в
поведении указанных типов пользователей заметны значительные отклонения.
Андерсон полагает, что обнаружение правонарушителя (легального пользовате-
ля, выполняющего несанкционированные операции) является более сложной за-
дачей, поскольку в данном случае ненормальное поведение может почти не от-
личаться от нормального. В результате Андерсом заключает, что выявить такие
нарушения с помощью одного лишь поиска аномалий поведения невозможно.
Тем не менее, поведение правонарушителя можно обнаружить, если правильно
определить класс условий, при которых происходит несанкционированное ис-
пользование ресурсов. Наконец, выявление тайных пользователей, кажется, во-
обще выходит за рамки одних лишь методов автоматического обнаружения. Эти
выводы, сделанные еще в 1980 году, не потеряли своего значения и сегодня.
В [PORR92] указываются следующие подходы к решению проблемы обнару-
жения нарушений.
1. Обнаружение на базе статистических отклонений. Предусматривает сбор
данных, характеризующих поведение легальных пользователей, в течение
определенного времени. Затем эти данные анализируются с применением
статистических методов, чтобы с высокой степенью точности определить,
соответствует поведение определенного пользователя поведению легального
пользователя или нет.
690
ГЛАВА 15- НАРУШИТЕЛИ И ВИРУСЫ
• Использование пороговых значений. Данный подход предполагает опре-
деление не зависящих от конкретного пользователя пороговых значе-
ний, характеризующих частоту возникновения различных событий.
• Использование профиля поведения. Создается профиль активности поль-
зователя и с помощью этою профиля выявляются отклонения в поведе-
нии пользователя, регистрирующегося в системе под данным именем.
2. Обнаружение на базе правил. Предполагает разработку набора правил, на
основе которых принимается решение о том, что данный гип поведения
является поведением нарушителя.
• Выявление аномалий. Разрабатываются правила, позволяющие обнару-
жить отклонения от наблюдавшегося ранее поведения
• Идентификация вторжения. Подход на основе использования эксперт-
ной системы, выявляющей подозрительное поведение.
По сути, в подходе, основанном статистических методах, делается попытка
определить нормальное или ожидаемое поведение, тогда как в подходе, основан-
ном на правилах, делается попытка выявить истинное поведение.
Относительно типов нарушителей, определенных в начале главы, выявление
статистических аномалий эффективно против имитаторов, которые вряд ли ста-
нут подражать поведению легального пользователя, под именем которого они
входят в систему. В то же время эта методика практически неприменима в слу-
чае правонарушителей. Против такого типа атак более эффективен подход, осно-
ванный на использовании правил, позволяющих распознать отдельные события
и их последовательности, которые в определенном контексте означают вторже-
ние. На практике в системе реализуется некоторая комбинация обоих подходов,
что обеспечивает эффективное противостояние широкому спектру нарушений.
Контрольные записи
Основным средством обнаружения нарушений является контрольная запись
(audit record). Должна выполняться запись некоторых выполняемых пользовате-
лями операций для последующего применения этих записей в качестве исходных
данных системы обнаружения нарушений. Чаще всего применяют следующие
две стратегии.
Системные контрольные записи (native audit records). Практически все
многопользовательские операционные системы содержат программы для
сбора информации о действиях, выполняемых пользователями Преимуще-
ство использования этой информации заключается в том, что для этого не
требуется никакого дополнительного программного обеспечения. Недоста-
ток связан с тем, что системные контрольные записи могут не содержать
необходимой информации или могут содержать ее в неподходящей форме.
* Специальные контрольные записи (detection-specific audit records). Могут
быть разработаны и применяться специальные средства сбора информации,
генерирующие записи, содержащие только данные, необходимые для рабо-
ты системы обнаружения нарушений Преимуществом такого подхода яв-
15.1 НАРУШИТЕЛИ
591
ляется независимость от поставщика системы и переносимость на разные
платформы. В качестве недостатка следует отметить получающуюся в ре-
зультате дополнительную нагрузку на систему ввиду необходимости вы-
полнения двух программ ведения контрольных записей.
Хорошим примером специальных средств создания контрольных записей яв
ляется система, разработанная Дороти Деннинг (Dorothy Denning) [DENN87J,
Каждая контрольная запись содержит следующие поля.
* Subject (субъект). Инициатор действия Субъектом обычно является поль-
зователь терминала, но это может быть и процесс, выполняемый для поль-
зователя или группы пользователей. Все действия совершаются по коман-
дам, исходящим от субъекта. Субъекты могут быть сгруппированы ь клас-
сы по уроьням доступа, и эти классы могут пересекаться.
Action (действие). Операция, выполняемая субъектом по отношению к
объекту, например регистрация входа в систему, чтение, ввод-вывод дан-
ных, выполнение программ.
Object (объект). Рецепторы действий. Примерами объектов являются файлы,
программы, сообщения, записи, терминалы, принтеры, а также структуры,
созданные пользователями или программами. Когда рецептором действия
является субъект (например, при получении электронной почты), этот субъ-
ект гоже рассматривается в качестве объекта. Объекты могут быть сгруппи-
рованы по типам и в соответствии с типом объекта и условиями окружения.
Например, действия в базе данных могут регистрироваться как на уровне
базы данных в целом, так и на уровне отдельных записей.
Exception-Condition (исключительная ситуация). Указывает тип исключи-
тельной ситуации, если она возникла при выполнении команды возврата.
Resource-Usage (использование ресурса). Список количественных показа-
телей, в котором каждый элемент указывает объем использования того
или иного ресурса (например, число напечатанных или отображенных на
экране строк, число прочитанных или созданных записей, время использо-
вания процессора, числи задействованных каналов ввода-вывода, длитель-
ность сеанса связи).
Time-stamp (метка даты-времени). Уникальная метка даты и времени,
указывающая момент выполнения действия.
Большинство действий, выполняемых пользователем, складываются из набо-
ра элементарных операций Например, копирование файла означает выполнение
команды пользователя, предполагающей получение права доступа и создания
копии плюс чтение из одного файла, плюс запись в другой файл. Рассмотрим
команду
COPY GAME.EXE ТС <Library>GAME.EXE,
инициированную пользователем Smith с целью копирования выполняемого фай-
ла GAME из текущего каталога в каталог <Libraxy>. В этой ситуации могут ге-
нерироваться следующие контрольные записи.
592
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
| Suit th execute <Library>COPY.EXE 0 CPU=00002 11058721678 |
| Smith read <Smith>GAME.EXE 0 RECORDS=0 11058721679 |
Smith execute <Library>COPY.EXE write -viol RECORDS=0 11058721680
В нашем примере процесс копирования был завершен аварийно, поскольку
пользователь Smith не имеет права записи в каталог <Library>.
Разложение действий пользователя на элементарные операции имеет сле-
дующие преимущества.
1. Поскольку объекты в системе являются защищаемыми сущностями, ис-
пользование элементарных операций позволяет проследить за всеми дейст-
виями, выполняемыми с данным объектом. Система может обнаруживать
попытки нарушения контроля доступа (при отсутствии отклонений от
нормы извращаемых исключительных ситуаций) и выявлять успешные
случаи таких нарушений (при отсутствии отклонений от нормы в наборе
объектов, доступных данному субъекту).
2. Принцип создания контрольных записей для каждого объекта и каждого
действия упрощает модель и ее реализацию.
3. Ввиду простой и единообразной структуры специальных контрольных за-
писей, относительно просто получить соответствующую информацию или
хотя бы ее часть путем копирования из имеющихся системных контроль-
ных записей в специальные контрольные записи.
Обнаружение на базе статистических отклонений
Как уже упоминалось, методы обнаружения статистических аномалий можно
разделить на две категории: обнаружение по пороговым значениям (threshold de-
tection) и обнаружение по профилю поведения (profile-based detection). Обнару-
жение по пороговым значениям предполагает ведение учета частоты возникнове-
ния событий определенного типа за определенный интервал времени. Если час-
тота превышает значение, которое считается разумным, система рассматривает
этот инцидент как вторжение нарушителя.
Анализ пороговых значений в чистом виде оказывается слишком грубым и
неэффективным методом выявления даже в случае атак средней сложности. Не-
обходимо правильно определить и пороговые значения, и временные интервалы.
Поскольку разные пользователи работают по-разному, простое использование
пороговых значений будет приводить либо к многочисленным ошибочным сраба-
тываниям (false positive), либо к многочисленным ошибочным несрабатываниям
(false negative). Тем не менее, простой детектор превышения пороговых значе-
ний может быть полезным в совокупности с другими более сложными методами.
Обнаружение по профилю поведения строится на изучении поведения пользо-
вателя или группы пользователей, наблюдавшегося в прошлом, и сравнении это-
го поведения с текущим поведением на предмет выявления значительных откло-
нений. Профиль может состоять из набора параметров, так что отклонения по
одному из параметров может быть недостаточно для того, чтобы генерировать
системную тревогу-
15.1 НАРУШИТЕЛИ
593
Данный подход опирается на анализ содержимого контрольных записей. Кон
трильные записи обеспечивают ввод для функции обнаружения нарушений сле-
дующим образом. Во-первых, разработчик должен решить, какое число парамет-
ров необходимо отслеживать в поведении пользователя. Чтобы выявить профиль
активности типичного пользователя, можно провести анализ контрольных заии
сей на протяжении некоторого периода времени. Во-вторых, содержимое теку-
щих записей служит в качестве исходных данных, по которым выявляются на-
рушения. Таким образом, предлагаемая модель выявления нарушений предпола-
гает анализ поступающих контрольных записей поведения на предмет
отклонения этого поведения от обычного.
Примерами параметров, которые оказываются полезными при выявлении на-
рушений по профилю поведения, являются следующие.
Счетчик (counter). Неотрицательное целое число, значение которого можно
увеличивать, но не уменьшать, до тех пор, пока это значение не будет пе-
реустановлено в результате действия программы управления. Обычно под-
счет наблюдавшегося числа определенных событий ведется в течение неко-
торого промежутка времени. Примерами могут быть число попыток входа
в систему, предпринятых пользователем в течение одного часа, число вы-
зовов определенной команды в течение сеанса работы пользователя или
число неправильно введенных паролей в течение одной минуты.
Датчик (gauge). Неотрицательное целое число, значение которого может
как увеличиваться, так и уменьшаться. Обычно датчик предназначен для
регистрации текущего значения некоторой характеристики объекта. При-
мерами являются число логических соединений, установленных приложе-
нием пользователя, или число исходящих сообщений, поставленных в оче-
редь пользовательским процессом.
Интервальный таймер (interval timer). Длина периода времени между
двумя последовательными событиями. Например, длина периода времени
между двумя последовательными попытками регистрации по одной и той
же учетной записи.
Показатель использования ресурса (resource utilization). Объем потребле-
ния ресурса за определенный промежуток времени. Примерами являются
числе страниц, отпечатанных за время сеанса работы, или общее время
выполнения некоторой программы.
С этими количественными показателями можно использовать самые разные
тесты, чтобы выяснить, не выходит ли текущая деятельность пользователя за
рамки установленных границ. В [DENN87] приводится следующий список мето-
дов, которые при этом можно использовать.
Метод средних значений и среднеквадратических отклонений.
Метод многомерной модели.
Метод марковских процессов.
Метод временных рядов.
Операторный метод.
694
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Самый простой статистический тест заключается в рассмотрении средних зна-
чений и средпекяадратических отклонений параметров за определенный период
времени. Результаты характеризуют среднее поведение и его отклонение от сред-
него. Использовать средние значения и среднеквадратические отклонения можно
для широкого спектра счетчиков, таймеров и показателей использования ресурсов.
Но значения этих параметров сами по себе обычно дают слишком грубую оценку,
чтобы использовать их непосредственно в целях обнаружения вторжения.
Метод многомерной модели основывается на использовании Корреляции меж-
ду двумя или несколькими переменными. Поведение нарушителя можно харак-
теризовать с большей надежностью, рассматривая такие корреляции (например,
времени использования процессора и ресурсов или частоты входа в систему и
длительности сеанса работы).
Метод марковских процессов служит для определения вероятностей перехо-
дов между различными состояниями. Например, эта модель позволяет выяснить
характер связи между определенными командами.
Метод временных рядов основан на анализе интервалов времени с целью об-
наружения событий, которые проходят либо слишком быстро, либо слишком
медленно. При этом для того, чтобы охарактеризовать временные аномалии, то-
же можно применить различные статистические преобразования.
Наконец, операторная модель базируется, скорее, на определении того, что
считается выходящим за рамки обычного, а не на автоматическом анализе со-
держимого сохраненных контрольных записей. Обычно устанавливаются четко
определенные Гранины, и выход за пределы этих границ рассматривается как
подозрение на вторжение в систему. Этот подход лучше всего работает тогда, ко-
гда поведение нарушителя характеризуется определенными типами его дейст-
вия. Например, большое число попыток входа в систему и регистрации за ко-
роткий период времени позволяет сделать вывод о попытке вторжения.
В качестве примера использования рассмотренных выше параметров и моде-
лей рассмотрим табл. 15.3, в которой собраны сведения о различных критериях,
учитываемых в системе обнаружения нарушений IDES, используемой в Стэн-
фордском исследовательском институте (SRI — Stanford Research Institute)
(DENN87, JAVI91, LUNT88].
Главное преимущество использования статистических профилей состоит в
том, что для их применения не требуется заранее знать обо всех изъянах в сис-
теме защиты. Программа-детектор выясняет, какое поведение является
“нормальным", а затем выявляет отклонения. Данный подход не основан на ха-
рактеристиках системы и сведениях о ее уязвимости, поэтому соответствующая
реализация легко переносится с одной системы на другую.
Обнаружение на базе правил
Методы обнаружения нарушений, основанные на использовании правил,
предполагают отслеживание происходящих в системе событий и применение на-
бора правил, по которым можно вынести заключение, является ли данное пове-
дение подозрительным или нет. Грубо говоря, все такие методы можно разде-
лить на два класса; методы, основанные на выявлении аномалий, и методы,
идентифицирующие преодоление защиты.
15.1. НАРУШИТЕЛИ
595
Таблица 15.3. Критерии, используемые для обнаружения нарушений
Критерий Модель Тип выявляемых нарушений
Вход в сип ему и сеанс работы пользователя
Частота входов в систе- му по дням и часам Средние значения и среднеквадратические отклонения Нарушители, вероятнее всего, пы- таются войти в систему в нерабочее время
Частота входов в систе- му из разных мест Средние значения и среднеквадратические отклонения Нарушители могут входить в сис- тему из таких мест, где соответст- вующий пользователь бывает очень редко или не бывает никогда
Время, прошедшее с момента последнего входа в систему Операторная модель Попытка вторжения в систему по “ничейной” учетной заимей
Длительность сеансов работы Средние значения и среднеквадратические отклонения Значительные отклонения могут означать работу имитатора
Объем данных, пересы- лаемых в определенное место Средние значения и среднеквадратические отклонения Слишком большие объемы данных, передаваемые на удаленные узлы, могут означать утечку важной ин- формации
Показатель использова- ния ресурсов во время сеанса Средние значения и среднеквадратические отклонения Выходящие за рамки обычных по- казатели загрузки процессора или устройств в вода-вывода могут озна- чать работу нарушителя
Число вводов непра- вильных значений па- роля при регистрации Операторы, »я модель Попытки проникновения в систему с помощью угадывания пароля
Неудачные попытки входа в систему с опре- деленных терминалов Операторная модель Попытки вторжения в систему
Выполнение команд или программ
Частота запуска программ Средние значения и среднеквадратические отклонения Может указывать на присутствие на- рушителя, который пробует доступ- ные ему команды, или же на легаль- ного пользователя, получившего дос- туп к привилегированным командам
Использование ресурсов программами Средние значения и среднеквадратические отклонения Выходящее за рамки обычного зна- чение может означать внедрение ви- руса или троянского коня, которые в фоновом режиме выполняют опера- ции, увеличивающие загрузку систе- мы ввода-вывода или процессора
Число отказов выпол- нения Операторная модель Может означать попытки легально- го пользователя получить привиле- гии более высокого уровня
596
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Окончание табл. 15.3
Доступ к файлам
Частота выполнения операций чтения, запи- си, создания, удаления Средние значения и среднеквадратические отклонения Выходящая за рамки обычной час- тота операции доступа к файлам для чтения и записи может озна- чать присутствие имитатора или просмотр ресурсов
Чтение имеющихся за- писей и сохранение ин- формации Средние значения и среднеквадратические отклонения Выходящие за рамки обычных по- казатели могут означать попытки получить важные данные путем сбора информации и логических заключений
Подсчет неудачных по- пыток чтения, записи, создания, удаления Операторная модель Могут обнаруживать пользователей, которые постоянно пытаются полу- чить несанкционированный доступ к файлам
Подсчет выхода за пре- делы файловых ресурсов Операторная модель
Выявление аномалий в данном случае похоже по подходам и возможностям
на методы выявления статистических аномалий. При использовании базы пра-
вил анализ сохраненных контрольных записей проводится с целью выявления
характеристик типичного поведения и автоматического генерирования правил,
описывающих такое поведение. Правила могут представлять поведенческие шаб-
лоны пользователей, программ, привилегий, временных интервалов, терминалов
и т.п. Затем наблюдается текущее поведение и каждая транзакция проверяется
-о набору правил на предмет ее соответствия полученным ранее поведенческим
шаблонам.
Как и при обнаружении статистических аномалий, выявление аномалий, ос-
нованное на правилах, не требует знания уязвимых мест защиты системы. Схема
опирается на наблюдение за поведением пользователей и на предположение о
том, что в будущем это поведение не должно существенно измениться. Чтобы
этот подход оказался эффективным, потребуется достаточно большая база пра-
вил. Например, схема, описанная в {VACC89J, требует использования от 1(У до
10* правил.
Идентификация преодоления защиты основана совершенно на другом подхо-
де. связанном с технологией экспертных систем. Основной чертой таких систем
является использование правил для идентификации известных видов вторжений
или вторжений, построенных на известных недостатках системы защиты. Мож-
но определить и правила для идентификации подозрительного поведения, даже
если поведение не выходит за рамки типичного. Обычно правила, применяемые
в таких системах, зависят от конкретного типа машины и операционной систе-
мы. Кроме того, такие правила генерируются, скорее, экспертами, а не в резуль-
тате автоматического анализа контрольных записей. Чаще всего выполняется
опрос системных администраторов и аналитиков системы защиты, чтобы в ре-
зультате получить пакет известных сценариев и событий, несущих угрозу безо-
15.1 НАРУШИТЕЛИ
597
пасности защищаемой системы.7 Таким образом, успех данного подхода зависит
от профессионализма тех, кто участвует в выработке системы правил.
Простой пример типов правил, которые могут при этом использоваться, мож-
но найти в системе NDIX — одной из первых систем эвристических правил, с
помощью которых можно определить степень подозрительности той или иной
деятельности [BAUE88J. Примеры таких эвристических правил описаны ниже
1. Пользователи не должны читать файлы, находящиеся в личных каталогах
других пользователей.
2. Пользователи не имеют права записывать информацию в файлы, принад-
лежащие другим пользователям.
3. Пользователи, которые постоянно работают с системой, часто при новом
входе в систему открываю! те же файлы, которые они использовали раньше.
4. Пользователи редко открывают дисковые устройства напрямую, а используют
для этого утилиты высшего уровня, предлагаемые операционной системой.
5. Пользователи не должны открывать несколько сеансов работы с одной и
той же системой одновременно.
6. Пользователи не копируют системные программы.
Схема идентификации вторжений, реализованная в системе IDES, основана
на описанной выше стратегии. Контрольные записи по мере их появления про-
веряются по базе правил. Если обнаруживается совпадение, происходит увеличе
ние рейтинга подозрения (suspicion rating) пользователя. Если совпадения на
блюдаются для достаточно большого числа правил, рейтинг превышает заданный
порог и система генерирует отчет об обнаруженной аномалии.
Подход IDES основан на проверке контрольных записей. Слабой стороной
этого подхода является недостаточная гибкость. Например, можно реализовать
такой сценарий вторжения, когда система генерирует ряд последовательностей
контрольных записей, слабо или почти незаметно отличающихся от других. При
этом уложить такие отклонения в рамки имеющихся правил совсем непросто.
Другой метод заключается в разработке модели более высокого уровня, не зави-
сящей от данных контрольных записей. Примером такой модели является мо-
дель переходов состояний, известная под названием USTAT [ILGU93]. Модель
USTAT имеет дело с действиями в целом, а не специальными действиями, реги-
стрируемыми с помощью системы контроля UNIX. Модель USTAT реализована в
системе SunOS, где она обеспечивает создание контрольных записей для 239 ти-
пов событий. Из всех контролируемых событий 28 используются препроцессо-
ром, отображающим их в 10 действий общего характера (табл 15.4). На основе
только этих действий и параметров, необходимых для каждого из этих дейст-
вий, строится диаграмма переходов, характеризующая подозрительное поведе-
ние. Поскольку целый ряд контролируемых событий отображается в небольшой
набор действий, процесс выработки правил значительно упрощается Кроме того,
диаграмма переходов состояний модели легко модифицируется с получением но-
вых сведений о поведении нарушителей.
2 _ -
В таких опросах могут участвовать даже бывшие и настоящие взломщики систем, которые
согласны поделиться свиим опытом за определенную плату [FREE93).
59S
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Таблица 15.4. Действия USTAT и типы событий SunOS
Действие iJSTAT Тип события SunOS
Read open_r, open _rc, open_rtc, open_rwc, open_rwtc, open_rt, upen_rw, open_rwt
Write truncate, ftruncate, creat, open_rtc, open_rwc, open_rwtc. open_rt, open_rw, open_rwt, upenw, open wt, open_wc, open_wct
Create inkdir, creat, open_rc, open_rtc, open_rwc, open.rwtc, open_wc, open_wtc, mknod
Delete nndir, unlink
Execute exec, execve
Exit exit
Modify_ Owner chown, fctiown
Modify_Perm chtnod, fchmod
Rename rename
Hardltnk link
Распределенные системы обнаружения нарушений
До недавнего времени все работы по созданию системы обнаружения наруше-
ний были сосредоточены вокруг отдельно взятой вычислительной системы. Од-
нако типичной организации требуется обеспечить защиту распределенного ком-
плекса вычислительных узлов, объединенных локальной сетью или средствами
межсетевого взаимодействия. Конечно, можно защитить каждый отдельный
узел, используя в каждом из них свою систему обнаружения нарушений, но бо-
лее эффективная защита достигается путем координации и взаимодействия сис-
тем обнаружения нарушений в сети.
В работе [PORR92] Поррас (Porras) формулирует следующие главные вопро-
сы, возникающие при проектировании распределенной системы обнаружения
нарушений.
Распределенной системе обнаружения нарушений, возможно, придется
иметь дело с разными форматами контрольных записей. Е гетерогенной
среде разные системы будут использовать разные системы создания кон-
трольных записей, поэтому для обнаружения нарушений эти системы мо-
гут иметь разные форматы для создаваемых контрольных записей.
Некоторые узлы сети должны быть местом накопления и анализа данных,
поступающих к ним от всех других систем в сети. Поэтому либо сырые
контрольные данные, либо уже обработанные данные должны будут пере-
даваться по сети. Значит, необходимо обеспечить целостность и конфиден-
циальность этих данных. Целостность не позволит нарушителю маскиро-
вать свою деятельность путем изменения передаваемой контрольной ин-
формации. Конфиденциальность требуется потому, что контрольная
информация может оказаться очень важной с точки зрения поддержания
работоспособности системы.
15.1. НАРУШИТЕЛИ
599
• Система может иметь как централизованную, так и децентрализованную
архитектуру. В первом случае предполагается наличие одного центра, где
накапливаются и анализируются все контрольные данные Это упрощает
задачу согласования поступающих отчетов, но создает потенциально
“узкое место”, отказ в котором может привести к выходу из строя всей
системы. При использовании децентрализованной архитектуры имеется
несколько аналитических центров, однако при этом требуется координиро
вать их деятельность и организовать обмен информацией между ними
Хорошим примером распределенной системы обнаружения нарушений явля-
ется система, разработанная в отделении Калифорнийского университета в Дэви
се (University of California at Davis) [HEBE92, SNAP91]. На рис. 15.5 показана
общая архитектура этой системы, состоящей из следующих трех основных ком-
понентов.
• Модуль агента узла. Модуль сбора контрольной информации, выполняе-
мый в фоновом режиме в системе, за которой ведется наблюдение. Целью
модуля является сбор данных об имеющих отношение к защите узла собы-
тиях и передача этих данных модулю центрального администратора.
Модуль агента диспетчера локальной сети. Работа этого модуля аналогич-
на работе модуля агента узла, но данный модуль анализирует поток дан-
ных локальной сети, тоже передавая полученные данные модулю цен-
трального администратора.
Модуль центрального администратора. Принимает сведения, поступающие
от агентов узлов и агента диспетчера локальной сети, обрабатывает эти
сведения, выясняя их корреляцию и пытаясь обнаружить нарушение.
Схема разрабатывалась с тем, чтобы быть независимой от операционной сис-
темы и конкретных реализаций системы контроля. На рис. 15.6 [SNAP91] пока-
зана схема общего подхода, применявшегося в этом случае. Агент просматривает
каждую контрольную запись, порожденную системой регистрации контрольных
параметров соответствующей системы. Записи, не представляющие интереса с
точки зрения защиты, отфильтровываются. Оставшиеся записи преобразуются в
стандартный формат контрольной записи ведущего узла (HAR — host audit rec-
ord). Затем использующий напор шаблонов логический модуль анализирует по-
лученные записи на предмет выявления подозрительных действий. Прежде всего
агент проводит поиск в записях событий, представляющих интерес с точки зре-
ния безопасности независимо от их связи с прошлыми событиями. Примерами
таких событий являются отказы в доступе к файлам, доступ к системным фай-
лам и изменение параметров контроля доступа к файлам. На следующем уровне
поиска агент ищет последовательности событий, соответствующих уже извест-
ным попыткам взлома (так называемые сигнатуры). Наконец, агент пытается
найти аномалии поведения отдельных пользователей, основываясь на имеющем-
ся для каждого пользователя профиле, содержащем сведения о числе выполняе-
мых программ, числе файлов, к которым был получен доступ, и т.п.
600
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Диспетчер
локальной
Рис. 15.5. Архитектура распределенной системы обнаружения нарушений
Контрольная
информация ОС
Рис. 15.6. Архитектура агента
15.1. НАРУШИТЕЛИ
601
Если обнаруживается подозрительная активность, центральному администрато-
ру направляется извещение. Модуль центрального администратора включает экс-
пертную систему, способную обнаруживать взаимозависимость полученных дан-
ных. Модуль центрального администратора может также запросить у отдельных
узлов копии их записей HAR, чтобы сравнить их с записями других агентов.
Модуль агента диспетчера локальной сети тоже предоставляет собранные им
данные модулю центрального администратора. Агент диспетчера локальной сети
контролирует соединения между узлами, используемые службы и уровень тра-
фика. Этот агент регистрирует все заметные события, например резкое измене-
ние загрузки сети, использование служб защиты и сетевые операции типа rlogin.
Архитектурные решения, показанные на рис. 15.5 и 15.6, оказываются дос-
таточно общими и гибкими, чтобы лечь в основу машинно-независимого подхо-
да, позволяющего создать реализацию, масштабируемую от системы обнаруже-
ния нарушений на уровне отдельного узле до уровня всей сети, позволяя на ос-
нове сравнения активности отдельных узлов обнаруживать подозрительные
действия, которые иначе оставались бы незамеченными.
15.2. Вирус
К
По-видимому, наиболее изощренную угрозу для компьютерных систем пред-
ставляют собой программы, использующие уязвимые места самих систем. В дан-
ном контексте рассматриваются не только прикладные программы, но и служеб-
ные, такие как редакторы и компиляторы.
Мы начнем следующий раздел с обзора всего спектра программных угроз. Ос-
тальная часть раздела посвящена вирусам. Первым делом мы рассмотрим приро-
ду вирусов, а затем — соответствующие контрмеры.
Вредоносные программы
На рис. 15.7 [BOWL92] показана общая схема классификации программных
угроз, или вредоносных программ. Такие программы можно разделить на две
категории: нуждающиеся в программе-носителе и независимые программы. К
первой категории относится программный код, который не может работать неза-
висимо от некоторой реальной прикладной программы, утилиты или системной
утилиты. Ко второй категории принадлежат самостоятельные программы, кото-
рые могут быть запущены стандартными средствами операционной системы, как
любая другая программа.
Кроме того, мы разделим вредоносные программы на обычные и размножаю-
щиеся. К первым относятся фрагменты программ, которые активизируются, ко-
гда программа-носитель выполняет вполне конкретные действия. Ко второй
группе могут относиться как программные фрагменты (вирусы}, так и независи-
мые программы (“черви”, '•бактерии”), во время работы создающие свои копии,
которые могут выполняться впоследствии в той же или другой системе.
Хотя классификация, приведенная на рис. 15.7, и позволяет систематизиро-
вать информацию по этому вопросу, она не дает полного описания реальной кар-
тавы. В частности, логические бомбы и “троянские кони” могут быть частями
вируса или “червя”.
602
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Replicate
Рис. 15 7. Классификация вредоносных программ
Лазейки
Лазейка — это секретная точка входа в программу, позволяющая тому, кто
знает о существовании этой лазейки, получить доступ в обход стандартных про-
цедур защиты. Лазейки уже много лет совершенно законно используются в про-
граммистской практике для ускорения отладки и тестирования программ. Эта
возможность обычно применяется программистом при создании приложения,
имеющего процедуру аутентификации, или слишком длительную программу ус-
тановки, требующую от пользователя ввода множества различных параметров
перед каждым запуском программы. С целью ускорения процесса отладки раз-
работчик может воспользоваться специальным уровнем привилегий или обойти
процедуру установки или аутентификации. Для программиста также может быть
полезна возможность запустить программу даже тогда, когда по причине каких-
то неполадок встроенная процедура аутентификации не позволяет этого сделать.
Лазейка представляет собой программный код, который реагирует на специаль-
ную последовательность, введенную с клавиатуры, либо активизируется тогда,
когда b i »дится определенный идентификатор пользователя или в ответ на по-
следовательность каких-то маловероятных событий.
Лазейки представляют собой угрозу, когда они позволяют недобросовестным
программистам получить несанкционированный доступ. Именно лазейка была ос-
новной причиной угрозы, на которой был построен сюжет фильма “Военные игры”
(War Games) [СООР89]. Вторым примером является лазейка, использованная в
рамках программы тестирования системы Mui tics, проводимого “командой тигров”
(моделирования действий противника) ВВС США. Одним из решений была от-
правка на узел, на котором выполнялась Multics, ложного пакета с обновлениями
системы. В этом пакете содержался “троянский конь”, который активизировался
15.2. ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
603
через лазейку и позволял “тиграм” получить доступ к системе. Угроза была реали-
зована настолько хорошо, что разработчики Multics не смогли найти ее даже после
гого, как были информированы о ее существовании [ENGE80].
Реализовать контроль возможных лазеек стандартными средствами операци-
онной системы очень трудно Меры защиты в данном случае должны быть сфо-
кусированы на контроле процесса разработки программного обеспечения и его
обновления.
Логические бомбы
Одним из самых старых типов вредоносных программ, возникших еще до по-
явления вирусов и “червей”, является логическая бомба. Логическая бомба
представляет собой программный код, внедренный в какую-то полезную про-
грамму, который должен “взорваться” при выполнении определенных условий.
Примерами условий, которые запускают логическую бомбу, могут быть присут-
ствие или отсутствие каких-то файлов, наступление определенного дня недели
или определенной даты, имя конкретного пользователя, инициировавшего за-
пуск приложения. В одном ставшем широко известным случае [SPAF89] логиче-
ская бомба проверяла наличие определенного табельного номера сотрудника
(автора бомбы) и срабатывала тогда, когда этот табельный номер отсутствовал в
двух идущих подряд ведомостях по начислению зарплаты. После запуска бомба
может изменять или удалять данные или целые файлы, вызывать зависание
машины или выполнять какие-то другие разрушительные действия. Впечат-
ляющий пример того, как можно использовать логическую бомбу, дает дело о
библиотечной системе, рассматривавшееся в суде округа Монтгомери,
шт. Мэриленд [TIME9OJ. Подрядчик, разработавший компьютеризованную биб
лиотечную систему учета, затожил в ее код логическую бомбу, которая должна
была сделать систему недоступной после истечения определенного срока в том
случае, если подрядчику не заплатят за выполненную работу. Когда библиотека,
основываясь на том, что система слишком медленно реагирует на запросы, ре-
шила не оплачивать финалыгую стадию работ, подрядчик сообщил о существо-
вании бомбы и заявил, что не уберет ее до тех пор, пока не получит своих денег.
„Т риянекие кони"
“Троянский конь” представляет собой полезную или кажущуюся полезной
программу или командную процедуру, содержащую скрытый код, который после
запуска программы-носителя выполняет нежелательные или разрушительные
функции.
Программа этого типа может служить для опосредованного выполнения опе-
раций, которые несанкционированный пользователь не может выполнить непо-
средственно. Например, для получения доступа к файлам другого пользователя
на компьютере, находящемся в совместном пользовании нескольких человек,
злоумышленник может создать программу “троянского коня”, которая в ходе
выполнении изменит параметры контроля доступа к файлам соответствующего
пользователя, сделав эти файлы открытыми для всех. Создав такую программу,
автор может спровоцировать других пользователей запустить ее, поместив эту
программу в общедоступный каталог и присвоив ей имя, которое большинству
604
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
пользователей покажется именем полезной программы или утилиты Примером
может служить программа, якобы создающая список файлов пользователя в
нужном формате. После того как какой-нибудь пользователь запустит такую
программу, автор программы может получить доступ к информации, содержа-
щейся в файлах этого пользователя. Примером “троянского коня”, который
очень трудно выявить, является компилятор, модифицированный с целью вне-
дрения дополнительного кода в компилируемые программы определенного вида,
например в программы входа в систему [ТНОМ84]. Этот код представляет собой
лазейку в модуле регистрации, который позволяет автору программы войти в
систему с помощью специального пароля. Обнаружить такого “троянского коня”
по исходному коду программы входа в систему невозможно.
Вторым источником мотивации для написания “троянского коня” является
разрушение данных. В этом случае программа, которая выполняет какие-то полез-
ные функции (например, программа-калькулятор), может без каких бы то ни было
внешних проявлений удалить файлы пользователя. Так, жертвой “троянского ко-
ня” однажды оказался даже один из высокопоставленных управленцев компании
CBS, у которого эта программа уничтожила всю хранившуюся на компьютере ин-
формацию [Т1МЕ90]. “Троянский конь” был внедрен в программу обработки гра-
фических данных, распространявшуюся через электронную доску объявлений.
Вирусы
Вирус представляет собой программу, которая может “заражать” другие про-
граммы путем их модификации. В модифицированный код включается код виру-
са, в результате чего код вируса может продолжать заражать другие программы.
Биологические вирусы являются небольшими фрагментами генетического ко-
да — ДНК или РНК, — использующими механизм жизнедеятельности живой
клетки для создания тысяч абсолютных копий оригинального вируса. Подобно
своему биологическому двойнику, компьютерный вирус несет в своем программ-
ном коде рецепт создания совершенных кодий самого себя. Внесенный в компь-
ютерную систему, типичный вирус временно захватывает управление дисковой
операционной системой компьютера. Затем, при каждом контакте зараженного
компьютера с незараженным программным обеспечением очередная копия виру-
са помещается в новую программу. Таким образом инфекция мджет передавать-
ся от компьютера к компьютеру ничего не подозревающими пользователями,
обменивающимися содержимым магнитных дисков или пересылаюши.ми про-
граммы по сети. Сеть, с ее возможностями доступа к приложениям и системным
службам других компьютеров, является прекрасной “питательной средой” для
распространения вируса.
Подробнее о вирусах речь пойдет ниже в этой главе.
„Черви"
Сетевые программы-“черви” используют сетевые соединения для распростра-
нения от одной системы к другой. Во время работы на отдельном компьютере
сетевой “червь” может вести себя как компьютерный вирус или “бактерия” либо
внедрять "троянских коней”, либо выполнять какие-то другие разрушительные
или подрывные операции.
15.2. ВИРУСЫ И МРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
605
Для размножения сетевой “чернь" использует какое-нибудь из сетевых
средств доставки информации. Примерами таких средств могут быть следующие
службы.
Электронная почта. ’‘Червь” отправляет свою копию по почте в другую
систему.
Удаленный вызов программ. “Червь” запускает свою копию на выполне-
ние в другой системе..
• Доступ к удаленной системе. “Червь" входит в удаленную систему как
пользователь, а затем использует команду копирования себя из одной сис-
темы в другую.
Новая копия программы-“червя” в результате оказывается запущенной в уда-
ленной системе, где в дополнение ко всем другим предусмотренным операциям
“червь” продолжает размножаться указанным выше способом.
Сетевой “червь” во многом подобен компьютерному вирусу: у него тоже есть
инкубационный период, фаза распространения, фаза активизации и фаза выпол-
нения. В фазе распространения обычно выполняются следующие функции.
1. Поиск других систем, которые можно заразить, путем проверки списков
известных данному компьютеру узлов или других подобных объектов,
хранящих информацию об адресах удаленных систем.
2. Установление соединения с удаленной системой,
3. Копирование своего кода в удаленную систему и инициирование ее запуска там.
Перед тем как копировать себя в другую систему, сетевой “червь” может
также пытаться проверить, не была ли система уже инфицирована ранее. В мно-
гозадачной среде он может также скрывать свое присутствие с помощью назна-
чения себе названия, соответствующего системному процессу, или с помощью
использования какого-либо другого имени, не вызывающего подозрения у сис-
темного оператора.
Так же как и вирусам, сетевым “червям” трудно противостоять. Однако меры
сетевой защиты в совокупности с мерами по защите отдельных компьютерных
систем при условии их правильной разработки и применения значительно
уменьшают опасность, которую представляют собой “черви”.
Бактерии
Бактерии являются программами, не повреждающими сами по себе никаких
файлов. Единственной целью “бактерии” является воспроизведение себе подоб-
ных. Типичная программа-бактерия может просто запустить две собственные ко-
пии в многозадачной среде или создать два новых файла, содержащих по копии
оригинальной программы-"бактерии”. Затем каждая из копий может создать
еще две копии и т.д. Скорость размножения “бактерий” растет экспоненциально,
что в конце концов приводит к быстрому захвату всех ресурсов процессора, па-
мяти или дискового пространства, в результате чего происходит отказ пользова-
телям в доступе к этим ресурсам.
606
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Природа вирусов
Вирусы могут делать все, что могут делать обычные программы. Единствен-
ное различие состоит в том, что вирус присоединяется к другой программе и вы-
полняется скрытно в процессе работы программы-носителя. Во время своего вы-
полнения вирус может выполнить любую операцию, например стереть файлы
документов и программы.
Жизненный цикл типичного вируса состоит из четырех этапов.
1. Инкубационный период. Вирус никак не проявляется. В конце концов вирус
будет активизирован некоторым событием, например наступлением опреде-
ленной даты, присутствием другой программы или файла, появлением дос-
таточного места на диске. Инкубационный период имеют не все вирусы.
2. Фаза распространения. Вирус помещает свою копию в другие программы
или в определенные системные области на диске. Теперь все инфициро-
ванные программы будут содержать копию вируса, каждая их которых
тоже должна будет когда-нибудь пройти свою фазу распространения
3. Фаза активизации. Вирус активизируется для выполнения функции, с ко-
торой он создавался. Фаза активизации может быть инициирована самыми
разными системными событиями, например наличием определенного числа
копий данного вируса в системе.
4. Фаза выполнения. Выполняется содержащаяся в вирусе функция. Эта
функция может быть как вполне безобидной (например, вывод сообщения
на экран), так и совершенно деструктивной (например, уничтожение про-
грамм и файлов с данными),
Работа большинства вирусов построена в соответствии с архитектурными
принципами конкретной операционной системы и в некоторых случаях даже
конкретных аппаратных средств. Таким образом, в их основе лежит использова-
ние недостатков и нюансов тех или иных систем.
Структура вируса
Вирус может помещаться как в начало или конец исполняемой программы,
так и встраиваться в нее каким-то иным образом. Главная идея работы вируса
состоит в том, чтобы при запуске прейрэммы-носителя сначала выполнился код
вируса и только затем — код самой программы.
В самых общих чертах структура вируса показана на рис. 15.8 (приводится но
[СОНЕ94]). В данном случае код вируса V добавляется в начало инфицируемой про-
граммы в предположении, что точкой входа в программу является ее первая строка.
Выполнение инфицированной программы начинается с выполнения кода вируса
следующим образом. В первой строке кода программы указана команда перехода в
начало основною кода вируса. Вторая строка представляет собой специальный
маркер, используемый вирусом для проверки того, что программа, выбранная в
качестве потенциальной жертвы, не была заражена этим вирусом раньше. При за-
пуске инфицированной программы управление сразу же передается в основное те-
ло вируса. Программный код вируса сначала ищет незараженные файлы и заража-
ет их. После этого вирус может выполнить какие-то другие действия, обычно вра
ждебные по отношению к системе. Эти действия могут иметь место при каждом
15 2 ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
607
piogiam V
fgoio main:
1234567;
subroutine infen-executable •=
(.loop
file '5 get-random-execulable-file;
if (first-line-ot-file 5 1234567)
then goto loop
else prepend V to file; }
subroutine do-damage :*
[whatever damage is to be done)
subroutine trigger-pulled =
[return true if some condition holds)
main ir.ain-progtain
I infect-exerutable;
if trigger pulled then do-damage:
goto next;)
next-
}
Puc. 15.8. Пример простого вируса
запуске инфицированной программы или же только при выполнении определен-
ных условий. Закончив работу, вирус передает управление программе-носителю.
Если инфицирование осуществляется достаточно быстро, то пользователь вряд ли
сможет заметить при запуске программы, что «ча инфицирована.
Вирусы, построенные по только что описанному принципу, легко обнару-
жить, поскольку в результате инфицирования увеличивается длина файла ин-
фицируемой программы. Чтобы обойти столь простые методы обнаружения, ви-
рус должен сжать исполняемый файл, чтобы инфицированная и неинфициро-
ваннап версии файла оказались одинаковой длины. На рис 15.9 [СОНЕ94]
показана общая логика работы такого вируса. Наиболее важные строки вируса
пронумерованы, а соответствующие операции иллюстрируются на рис. 15.10
[СОНЕ94]. Мы предполагаем, что программа Р, инфицирована вирусом CV. Ко-
гда такая программа запускается на выполнение, управление передается вирусу,
который делает следующее
1. Обнаружив неинфицириваяный файл Р,, вирус сначала сжимает его, в ре-
зультате получая файл Р2', длина которого меньше исходной на длину ко-
да вируса.
2. Копия вируса присоединяется к началу сжатой программы.
3. Сжатая версия инфицированной оригинальной программы, PJ, распако-
вывается.
4. Распакованная оригинальная программа выполняется.
608
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
program CV :=
(goto main,
01234567
subroutine infer t-exerwable «
(loop
file gel-random-executable-file
if (first-lineol-file • 01234567) then goto loop;
(1) compress file;
(2) pi epend CV to file;
J
mam main-program "
{ifask-permission then infecr-executahle;
(3) uncompress rest-of-tile:
14) run uncompressed file;)
1
Рис. }5.9. Логика вируса, использующего сжатие
В рассмотренном выше примере вирус только размножается. Но он может со-
держать и логическую бомбу, как описано в предыдущем примере.
Начальное инфицирование
Попав в систему путем заражения некоторой программы, вирус получает воз-
можность при выполнении этой программы заразить некоторые другие или во-
обще все исполняемые файлы данного компьютера. Таким образом, появления
вирусной инфекции можно вообще не допустить, если не позволить вирусу пер-
вый раз попасть в систему Задача предотвращения вирусного заражения отно-
сится к разряду очень сложных, поскольку вирус может оказаться в любой про-
грамме, попадающей в систему извне. Таким образом, в уязвимом положении
15.2. ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
609
ленные и полученные с момента отправки сообщения client_hello (за исключени-
ем самого этого сообщения), a master_secret обозначает секретный ключ, вычис-
ляемый по схеме, которая будет приведена ниже. Если личный ключ пользова-
теля является ключом DSS, этот ключ используется для шифрования хэш-кодв
SHA-1. Если же личный ключ является ключом RSA, то такой ключ служит для
шифрования результата конкатенации хэш-кодов MD5 и SHA-1. В любом случае
преследуется цель обеспечения возможности проверки наличия у клиента лично-
го ключа его сертификата, Если даже кто-то и воспользуется сертификатом кли-
ента, он не сможет отправить такое сообщение.
Этап 4. Завершение
Этот этап завершает создание защищенного соединения. Клиент отправляет
сообщение change_cipher_spec (изменение параметров шифрования) и копирует
параметры CipherSpec состояния ожидания в поле CipherSpec текущего состоя-
ния. Обратите внимание на то, что это сообщение не считается частью протокола
квитирования, а отсылается в рамках протокола изменения параметров шифро-
вания (Change Cipher Spec Protocol). В ответ клиент немедленно отправляет со-
общение finished, шифрованное новым алгоритмом с новыми ключами и секрет-
ными значениями. Сообщение finished подтверждает, что процессы обмена клю-
чами и аутентификации завершились успешно Содержимое сообщения finished
представляет собой результат конкатенации следующих двух значений хэш-кода.
MD5(master_secret ||pad_2 || MD5(handshake_messages || Sender || masier_secret ||pad_l)),
SH.A(master_secret || pad_ 2 || SHA(handshake_messages || Sender I master _secret II pad_l)),
где Sender обозначает код, указывающий на то, что отправителем является кли-
ент, a handshake_messages обозначает все данные сообщений квитирования, за
исключением данного сообщения.
В ответ на эти два сообщения сервер посылает свое сообщение
change_cipher_spec, переводит параметры CipherSpec состояния ожидания в те-
кущее состояние и посылает свое сообщение finished. На этом процесс квитиро-
вания завершается, и теперь клиент и сервер могут начать обмен данными на
уровне приложения. ,
Криптографические вычисления
Следующими представляющими интерес вопросами являются создание в ходе
обмена ключами общего главного секретного ключа и генерирование с помощью
этого ключа криптографических параметров.
Создание главного секретного ключа
Совместно применяемый главный секретный ключ представляет собой одно-
кратно используемое 48-байтовое значение (384 бита), генерируемое для данного
сеанса в ходе защищенного обмена ключами. Создание главного ключа состоит
из двух этапов. На первом этапе согласуется значение предварительного главного
ключа (pre_n?aster_secret). а на втором обе стороны вычисляют значение главно-
го ключа (master_secret). Для передачи друг другу значения pre_master_secret у
сторон имеется два варианта. . .
548
ГЛАВА 14. ЗАШИТА WEB
й RSA Генерируемый клиентом 48-байтовый ключ pre_master_ secret шиф-
руется с помощью открытого ключа RSA сервера и отправляется клиентом
серверу, Сервер дешифрует полученный шифрованный текст с помощью
своего личного ключа и восстанавливает значение pre. master .secret.
Метод Диффи-Хеллмана. И клиент, и сервер генерируют открытые ключи
для алгоритма Диффи-Хеллмана. После обмена этими ключами каждая
сторона выполняет определенные вычисления но методу Диффи-Хеллмана,
в результате которых получается совместно используемое значение
pre_master_secret.
Теперь обе стороны могут вычислить значение master secret но схеме
master.secret *= MD5(pre_master_ secret || SHA( А' ,| pre_master_secret ||
ClientHello.random II ServerHello.random)) ||
MD5(pre_master_secret || SHA('BB' II pre.master secret ||
ClientHello.rai,aom || ServerHel'io.random)) ||
MD5(pre_master_secret || SHAfCCC' || pre master secret ||
ClientHello.random || ServerHello.random)),
где ClientHello.random и ServerHello.random являются значениями оказий, вхо-
дящих в оригинальные сообщения приветствия сторон.
Генерирование криптографических параметров
Для поля CipherSpecs требуются секретный ключ МАС клиента для записи,
секретный ключ МАС сервера для записи, ключ клиента для записи, ключ сер-
вера для записи, вектор инициализации клиента для записи и вектор инициали-
зации сервера для записи. Все эти параметры генерируются из главного ключа
путем применения функции хэширования к главному ключу с целью получения
защищенной последовательности байтов достаточной длины.
Процедура генерирования ключей из главного ключа аналогична процедуре
генерирования главного ключа из предварительного и показана ниже.
key .block = MU5(master_secret || SH А(’А' || master.secret II
ServerHello. random || ChentHello.randoin.)) ||
MD5( master.secret )|SHA('BB' 1) master.secret ||
ServerHello.random [| ClientHello.random)) ||
MD5(master secret ||SHA('CCC' || master.secret ,|
ServerHello-random || ClientHello, random)) || _
Процедура выполняется до тех пор, пока не будет сгенерирована последова-
тельность достаточной длины. Эта алгоритмическая структура представляет со-
бой псевдослучайную функцию, Значение master_secret можно рассматривать
как инициализирующее значение для этой функции. Сгенерированные клиентом
и сервером случайные числа можно рассматривать как значения модификаторов
(salt values), используемых с целью усложнения криптоанализа (подробнее ис-
пользование модификаторов описано в главе 15).
5 U 4
14 2. ПРОТОКОЛЫ SSL И TLS
549
Защита транспортного уровня
Протокол TLS представляет результат инициативы 1ETF, целью которой яв-
ляется разработка стандарта SSL для Internet. Текущая версия проекта стандар-
та TLS очень похожа на SSLv3. В следующих разделах мы рассмотрим различия
между TLS и SSLv3.
Номер версии
Формат записи TLS аналогичен формату записи SSL (рис. 14.4), и поля заго-
ловка имеют те же смысл и назначение. Единственное различие состоит в пред-
ставлении значений, задающих номера версии. Для текущего проекта стандарта
TLS значением поля главного номера версии (Major Version) является 3, а значе-
нием поля дополнительного номера версии (Minor Version) — 1.
Код аутентичности сообщения
Схемы вычисления значений МАС протоколов SSLv3 и TLS отличаются по
двум параметрам: применяемому алгоритму и области данных, для которых вы-
числяется значение МАС. В протоколе TLS используется алгоритм НМАС, опре-
деленный в RFC 2104. Вспомните, обратившись к главе 9, что алгоритм НМаС
определяется формулой
НМАСК = НЦК Ф opad) || Н[(К? Ф jpad) || М]],
где
Н — встроенная функция хэширования (для TLS это MD5 или SHA 1),
М — сообщение, подаваемое на вход алгоритма НМаС,
К‘ — секретный ключ, дополненный слева нулями, чтобы в результате
длина полученного значения равнялась длине хэш-кода (для MD5
и SHA-1 длина блока равна 512 битов),
opad — значение 00110110 (равное 36 в шестнадцатеричном формате), по-
вторенное 64 раза (512 битов),
ipad — значение 01011100 (равное 5С в шестнадцатеричном формате), по-
вторенное 64 раза (512 битов).
В протоколе SSLv3 применяется такой же алгоритм, но байты заполнителя
добавляются к секретному ключу с помощью операции конкатенации, а не свя-
зываются с дополненным до нужной длины секретным ключом с помощью опе-
рации XOR (исключающее "ИЛИ”). Уровень защищенности в обоих случаях '-на-
зывается одинаковым.
В случае с TLS процесс вычисления МАС охватывает поля, указанные в сле-
дующей формуле.
HMAC_hasli(MAC_wnte .secret, seq_num || TLSCompressed. type ||
TLSCompressed.version || TLSCompressed. length || TLSCompressed.fragment)).
Здесь для вычисления значения МАС служат все поля, которые задействова-
ны при вычислении МАС в протоколе SSLv3, плюс поле TLSCompressed.version,
которое указывает версию применяемого протокола.
550
ГЛАВА 14. ЗАЩИТА WEB
Псевдослучайная функция
В протоколе TLS применяется псевдослучайная функция, обозначаемая PRF
(pseudorandom function) и предназначенная для размещения в блоках данных
секретных значений, используемых при генерировании ключей или проверке их
подлинности Целью ее применения является получение относительно небольшо-
го по длине совместно используемого сторонами секретного значения для гене-
рирования более длинных блоков данных, защищенных от определенных типов
атак на функции хэширования и вычисления значений МАС. В основе функции
PRF лежит следующая схема расширения данных (рис. 14.7).
P_hash(secret, seed) = irMAC._hash(secret, A(l) || seed) ||
HMAC_hash(secret, А(2) | seed) ||
HMAC_hash(secret, А(3) |' seed) ]| ...
где А() определяется как
А(0) - seed,
A(i) = HMAC_hasb( secret, A(r - 1)),
seed обозначает инициализирующее значение, a secret — секретное значение.
Функция расширения данных использует алгоритм НМАС с лежащей в его
основе функцией хэширования (MD5 или SHA-1). Как видно из приведенной
выше схемы, функцию P_hash можно итерировать необходимое число раз до по-
лучения блока данных нужной длины Например, если для получения 64-
байтового блока данных применяется P_SHA-1, то для получения 80 байтов
данных, из которых 16 последних байтов будут отброшены, эту функцию нужно
будет испотьзовать повторно 4 раза. В такой же ситуации при использовании
PMD5 также потребуется четыре итерации, но в результате будет получено
ровно 64 байта данных. Обратите внимание на то. что на каждой итерации алго-
ритм НМАС выполняется дважды и каждый раз дважды выполняется лежащий
в его основе алгоритм хэширования.
Для того чтобы сделать функцию PRF защищенной в максимальной мере, в
ней предусмотрено два разных алгоритма хэширования, что гарантирует защи-
щенность данной функции, пока по крайней мере один из этих алгоритмов оста-
ется защищенным. Функция PRF определена следующим образом.
PRF(secret, label, seed) = P_MD5(S1. label || seed) © P_SI1A-1(S2, label II seed).
На вход функции PRF поступает секретное значение, идентифицирующая
метка и инициализирующее значение, а на выход подается блок данных любой
подходящей длины Выходное значение получается путем разделения секретного
значения на две части (S1 и S2) и применения к каждой из этих частей функции
P_hash, причем при обработке одной части используется алгоритм MD5, а дру-
гой части — SHA. Два полученных значения связываются операцией
“исключающего ИЛИ”, в результате чего получается выходное значение (чтобы
для связывания операцией “исключающего ИЛИ" получились блоки данных
одинаковой длины, обычно для P_MD5 требуется использовать большее число
итераций, чем для P_SHA).
14.2. ПРОТОКОЛЫ SSL И TLS
551
Seed
Рис. 14.7 Функция P_hashf secret. seed) протокола TLS
Коды извещений
Протокол TLS поддерживает все типы извещений, определенные для SSLv3,
за исключением извещения no_certificate (нет сертификата). Но для TLS с преде-
лен целый ряд дополнительных кодов извещения. Следующие из этих дополни-
тельных кодов всегда означают неустранимую ошибку.
decription_failed. Шифрованный текст дешифрован неправильно' либо его
длина оказалась не кратной заданной длине блока, либо при проверке вы-
яснилось, что значения заполнителя некорректны.
record_overflow. Получена запись TLS с полезным грузом (шифрованным
текстом), длина которого превышает 2“ + 2048 байтов, либо после дешиф-
рования длина текста оказалась больше 2” + 1024 байтов.
unknown_са. Получена достоверная цепочка сертификата или ее часть, но
сертификат не был признан, так как сертификат соответствующего центра
сертификации не был найден или сертификат не соответствует имеющему'
ся сертификату надежного центра сертификации.
562
ГЛАВА 14. ЗАЩИТА WEB
access_denied. Получен действительный сертификат, но в процессе приме-
нения средств контроля доступа отправитель принял решение не продол-
жать переговоры,
• decode_error. Сообщение не может быть декодировано, так как одно из по-
лей содержит значение, выходящее за рамки допустимого диапазона, или
длина сообщения оказалась неправильной,
• export_restriction. В процессе переговоров было выявлено, что нарушаются
экспортные ограничения на длину ключа.
protocol_version. Номер версии протокола, предложенного клиентом в
процессе переговоров, распознан, но не поддерживается.
insufficientsecurity. Возвращается вместо handshake_failure (аварийное
завершение процесса квитирования) в тех случаях, когда переговоры за-
вершаются аварийно по причине того, что сервер требует более защищен-
ных шифров, чем те, которые поддерживаются клиентом.
internal_error. Возникла не связанная со второй стороной или корректностью
работы протокола внутренняя ошибка, не позволяющая продолжить процесс.
Ниже перечислены остальные дополнительные извещения.
• decrypt_error. Аварийное завершение некоторой криптографической опе-
рации, выполняемой в ходе переговоров, что включает, например, провер-
ку подписи, дешифрование данных обмена ключами или проверку под-
линности сообщения finished.
use г_сапсе lied. Процесс завершен по некоторой причине, не связанной с
работой протокола.
• no_renegotiation. Отсылается клиентом в ответ на запрос hello (приветствие)
или сервером в ответ на запрос hell*> клиента после инициализации процесса
переговоров. В обычной ситуации такой запрос приводит к возобновлению
переговоров, но получение данного извещения указывает на го, что его от-
правитель не может возобновить переговоры. Данное сообщение всегда явля-
ется предупреждением.
Пакеты шифров
Протоколы SSLv3 и TLS имеют следующие небольшие различия в используе-
мых ими комплектах шифров.
* Обмен ключами. TLS поддерживает все методы обмена ключами, реализо-
ванные в SSLv3, за исключением Fortezza
Алгоритмы симметричной схемы шифрования. В TLS включены все алго-
ритмы симметричной схемы шифрования, за исключением Fortezza.
Типы сертификатов клиента
Для TLS определены следующие типы сертификатов, запрашиваемых в сооб-
щении certifjcate_request (запрос сертификата): rsa_sign, dss_sign, rsa_fixed_dh
и dss_fixed_dh Все эти типы определены и для SSLv3. Кроме того, протокол
SSLv3 поддерживает типы rsa_ephemeral_dh, dss_ephemeral_dh и fortezza _kea.
14.2. ПРОТОКОЛЫ SSL И TLS
553
В алгоритме Диффи-Хеллмана с одноразовыми параметрами предполагается
подпись параметров Диффи-Хеллмана с помощью RSA или DSS. В протоколе
TLS этой функции соответствуют типы rsa_sign и dsssign, поэтому вводить от-
дельный тип для обозначения подписи параметров Диффи-Хеллмана не требует-
ся. Схема Fortezza протоколом TLS не поддерживается.
Сообщения certificate_verify и finished
В сообщении certificate_verify (проверка сертификата) протокола TLS хэш-
коды MD5 и SHA-1 вычисляются только для сообщений handshakemessages.
Напомним, что в SSLv3 при вычислении хэш-кода используются также главный
ключ и заполнители. Похоже, что добавление этих значений не увеличивает на-
дежность защиты.
Что касается сообщения finished (готово), то в TLS оно представляет собой
хэш-код, вычисленный с помощью совместно используемого сторонами значения
master_secret, предыдущих сообщений квитирования и метки, идентифицирую-
щей клиент или сервер Вычисления происходят по следующей, отличной от
SSL, схеме.
PRF(master_secret, finished „label, MD5(handshake_messages) |l SHA-l(handshake. messages)),
где finished „label обозначает строку “client finished” для клиента или
“server finished” для сервера.
Криптографические вычисления
Значение premastersecret (предварительный главный ключ) для TLS вычис-
ляется так же, как и для SSLv3. Как и случае SSLv3, значение master secret
(главный ключ) для TLS тоже вычисляется как хэш-код значения
pre „master „secret и двух случайных чисел из сообщений hello, Однако для TLS
вычисления выполняются по несколько отличной схеме, которая выглядит сле-
дующим образом.
master_secret =
PRFfpre mabter_secret, "master secret", ClientHello.random ((ServerHello.random).
Алгоритм выполняется до тех пор, пока на выходе не будет получена псевдо
случайная последовательность длиной в 48 байтов.
Вычисление блока ключей (секретные ключи МАС, сеансовые ключи шифро
вания и векторы инициализации) выполняется по схеме
key „block =
PRF(master_secret, “key expansion",
SecurityParameters.server randon'i || SecurityParameters.client_random),
и вычисления продолжаются до тех пор, пока не будет сгенерирована последова-
тельность нужной длины. Как и в случае SSLv3, значение key_block представ-
ляет функцию значения master_secret и случайных значений, сгенерированных
клиентом и сервером, но конкретный используемый для вычисления алгоритм в
TLS оказывается другим.
554
ГЛАВА 14. ЗАЩИТА WEB
Заполнение >
В SSL байты заполнителя добавляются к данным пользователя, подлежащим
шифрованию, в минимально необходимом количестве, достаточном для того,
чтобы получить общую длину данных для шифрования, кратную длине блока
шифра. В случае TLS разрешается добавлять любое число заполнителей (до 255
байтов включительно), лишь бы в результате длина блока данных получилась
кратной длине блока шифра. Например, если открытый текст (или сжатый от-
крытый текст при сжатии) вместе со значением МАС и байтом padding, length
составляют 79 байтов, то для заполнения может использоваться 1, 9, 17, ..., 249
байтов. Изменяемую длину заполнения можно использовать для того, чтобы за-
труднить попытки анализа длин передаваемых сообщений.
J4.3* Протокол защищенных электронные
транзакций (SET)
Протокол SET (Secure Electra tile Transaction — протокол защищенных элек-
тронных транзакций) представляет собой открытые спецификации шифрования и
защиты, разработанные с целью защиты транзакций, выполняемых в Internet с
помещью пластиковых платежных карточек. Текущая версия протокола, протокол
SETvl, появилась в феврале 1996 года ввиду возникшей необходимости создания
стандарта защиты для кредитных карточек MasterCard и Visa. В разработке ори-
гинальных спецификаций участвовали многие известные компании, включая IBM,
Microsoft, Netscape, RSA, Tensa и VeriSign. Начиная с 1996 года положенная в
основу протокола концепция прошла тщательную проверку практикой, и к 1998
году на рынке появились первые продукты реализации протокола SET.
SET является не платежной системой, а набором протоколов защиты и форма-
тов данных, позволяющим некоторым защищенным образом использовать сущест-
вующую инфраструктуру платежных систем пластиковых карточек в открытых
сетях типа сети Internet. По сути, SET обеспечивает три следующих вида сервиса.
Создание защищенного коммуникационного канала, связывающего все
участвующие в транзакции стороны.
* Обеспечение доверия с помощью цифровых сертификатов X509v3.
Обеспечение секретности ввиду того, что информация оказывается доступной
только участникам транзакции и только тогда и там, где она необходима.
Полная спецификация SET описывается в трех книгах, изданных в мае 1997 года.
Книга 1. Описание возможностей применения (Business Description), 80 стр.
Книга 2. Руководств। программиста (Programmer’s Guide), 629 стр.
Книга 3. Формальное определение протокола (Formal Protocol Definition),
262 стр. v „
Все вместе составляет 971 страницу спецификаций. Для сравнения заметим,
что спецификации SSLv3 занимают 63 страницы, а спецификации TLS — 71
страницу. Соответственно, в данном разделе будут приведены лишь обзорные
сведения о спецификациях SET.
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
556
Общие снедения о SET . «
Описание протокола SET лучше всего начать с обзора требований, выдвигае-
мых к SET, главных возможностей SET, а i-акже роли участников транзакций,
выполняемых на основе SET.
Требонания
В книге 1 спецификаций SET перечислены следующие требования, которые
должны соблюдаться при обработке платежей по кредитным карточкам в
Internet и других подобных сетях.
Конфиденциальность платежа и информации о заказе. Необходимо гаран-
тировать владельцам пластиковых карт, что данная информация надежно
защищена и окажется доступной только тому, кому она предназначена.
Конфиденциальность к тому же уменьшает риск возможности обманных
действий любой из участвующих в осуществлении транзакции сторон или
злоумышленных действий третьей стороны. Для обеспечения конфиденци-
альности применяется шифрование.
Гарантия целостности всех передаваемых данных означает, что в ходе пере-
дачи информация, содержащаяся в сообщении SET, не претерпит никаких из-
менений. Для обеспечения целостности служит механизм цифровой подписи.
Аутентификация предъявителя кредитной карты как законного владель-
ца соответствующего счета. Механизм, связывающий предъявителя кре-
дитной карты с соответствующим номером счета, должен уменьшать веро-
ятность мошенничества и тем самым снижать общую стоимость обработки
платежей. Для проверки того, что предъявитель кредитной карты являет-
ся законным владельцем соответствующего действительного счета, приме-
няются такие средства, как цифровая подпись и сертификаты.
Аутентификация продавца как липа, имеющего право принимать транзак-
ции по кредитным картам, с помощью выяснения его связи с соответст-
вующей финансовой организацией. Это требование дополняет предыдущее.
Владельцы платежных карт должны иметь возможность идентифицировать
продавцов, которым они могут направлять защищенные транзакции. В этом
случае тоже используются цифровые подписи и сертификаты.
* Гарантированное использование лучших конструктивных решений и ме-
тодов защиты для обеспечения наивысшей степени защиты всех легаль-
ных участников электронных коммерческих транзакций. Спецификации
SET строятся на применении криптографических алгоритмов и протоко-
лов, имеющих высокий уровень защищенности и хорошо в этом отноше-
нии проверенных.
• Независимость протокола от механизмов защиты транспортировки дан-
ных при отсутствии каких-либо ограничений на использование послед-
них. SET может обеспечивать защиту, опираясь непосредственно и исклю-
чительно на стек протоколов TCP/IP. По при этом SET никак не влияет на
работу других механизмов защиты, таких как IPSec или SSL/TLS, и не за-
висит от них.
556
ГЛАВА 14. ЗАЩИТА WEB
• Содействие и поддержка совместимости между прикладными программ-
ными и сетевыми продуктами разных поставщиков. Протоколы и форма-
ты SET не зависят от аппаратных платформ, операционных систем и про-
граммного обеспечения, предназначенного для работы в Web.
Главные возможности SET
Чтобы соответствовать описанным выше требованиям, в протоколе SET реа-
лизованы следующие возможности.
а Конфиденциальность информации Информация о счете владельца карты
и платеже защищается во время пересылки по сети. Интересная и важная
особенность SET заключается в том, что продавец при этом не может вы-
яснить номер кредитной карты ее владельца — эта информация оказыва
ется доступной только выдавшему кредитную карту банку. Для обеспече-
ния конфиденциальности используется шифрование по традиционной схе-
ме с помощью алгоритма DES.
Целостность данных. Информация о платеже, посылаемая владельцем
карты продавцу, содержит информацию о заказе, личные данные и инст-
рукции по осуществлению платежа. SET гарантирует, что содержимое со-
ответствующих сообщений не будет изменено в пути их следования по се-
ти. Целостность данных достигается с помощью цифровых подписей RSA с
использованием хэш-кодов SHA-1 Некоторые сообшсния защищаются
также с помощью алгоритма НМАС, использующего SHA-1.
Аутентификация счета владельца карты* SET дает продавцу возможность
проверки того, что предъявитель кредитной карты является законным
пользователем соответствующего карте действительного счета. Для этой
цели в SET служат цифровые сертификаты X.509v3 с подписями RSA
Аутентификация продавца. SET дает владельцу карты возможность про-
верки того, что продавец имеет отношение к соответствующей финансовой
организации, позволяющее денному продавцу принимать платежи по кре-
дитным картам. Для этой цели в SET предусмотрены цифровые сертифи-
каты X.509v3 с подписями RSA.
Обратите внимание на то, что в отличие от IPSec и SSL/TLS протокол SET
для решения каждой конкретной задачи предлагает только по одному алгорит-
му. Это объясняется тем, что SET является единым приложением, соответст-
вующим вполне конкретному набору требований, тогда как IPSec и SSL/TLS от-
носятся к универсальным протоколам, предназначенным для поддержки широ-
кого спектра приложений.
Участники транзакций SET
Участниками транзакций, осуществляемых с помощью SET, являются сле-
дующие стороны (рис. 14.8).
Владелец платежной карточки. В среде электронных платежей индивиду-
альные и корпоративные потребители взаимодействуют с продавцами со
своих персональных компьютеров с помощью Internet. Владельцем карты
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
557
в данном случае является любой зарегистрированный владелец пластико-
вой платежной карты (MasterCard, Visa и т.п.), выданной ему некоторым
уполномоченным эмитентом.
Продавец. Продавец является лицом или организацией, у которой владелец
карты может приобрести товары или услуги. Обычно такие товары или ус-
луги предлагаются на продажу на Web-узле или по электронной почте. Про-
давец, имеющий право принимать платежи по платежным карточкам, дол-
жен иметь соответствующие отношения с операционным центром.
Эмитент платежной карточки Финансовая организация (например, банк),
выдавшая платежную карту соответствующему лицу (владельцу карты).
Как правило, открыть счет можно по почте или явившись к эмитенту лич-
но. Всю ответственность по оплате задолженности владельца карты по
данной карте несет эмитент карты.
Операционный центр (acquirer). Финансовая организация, -существляю-
щая расчеты с продавцом, выполняющая авторизацию платежных карт и
осуществляющая соответствующие платежи. Продавцы обычно готовы
принимать кредитные карты разных видов, но не хотят иметь дело с
большим числом разных банковских ассоциаций или множеством отдель-
ных эмитентов платежных карт. Операционный центр проводит для про-
давца проверку того, что счет кредитной карты является активным и что
предлагаемая покупка пи стоимости не выходит за рамки допустимого
кредитного лимита. Операционный центр также выполняет электронный
перевод денежных сумм на счет продавца- Впоследствии операционный
центр получает за это определенную компенсацию от эмитента карты через
банковскую платежную сеть.
Шлюз платежной сети (payment gateway). Совокупность средств, контро-
лируемых операционным центром или уполномоченной им третьей сторо-
ной, используемых для обработки платежных сообщений продавца. Шлюз
платежной сети сопрягает SET и существующие банковские платежные се-
ти, выполняя функции авторизации и передачи платежей. Продавец обме-
нивается сообщениями SET с шлюзом платежной сети через Internet, а
шлюз платежной сети связан непосредственно или п- внутренней сети с
системой обработки финансовых документов соответствующего операцион-
ного центра.
Центр сертификация (СА — certification authority). Объект, которому до-
веряется выдавать сертификаты стандарта X.509v3 открытых ключей вла-
дельцев карт, продавцов и шлюзов платежной сети. Успешная работа SET
во многом зависит от наличия доступного для использования в соответст-
вующих целях центра сертификации с хорошо организованной инфра-
структурой. Как уже говорилось в предыдущих главах, существует целая
иерархия центров сертификации, так что сертификаты участвующим в
осуществлении электронных платежей сторонам не обязательно должны
выдаваться только главным центром сертификации.
558
с ГЛАВА 14 ЗАЩИТА WEB
Рис 14.8. Компоненты защищенной системы электронной коммерции
Теперь опишем вкратце последовательность событий, происходящих во время
транзакции, а затем остановимся подробнее на некоторых криптографических
деталях данного процесса,
1. Покупатель открывает счет. Покупатель получает счет кредитной карточ-
ки (например, MasterCard или Visa) в банке, осуществляющем электрон-
ные платежи и поддерживающем SET.
2. Покупатель получает сертификат. После определенной процедуры провер
ки личности покупатель получает цифровой сертификат X.509v3, подпи-
санный банком. Этот сертификат удостоверяет открытый ключ RSA поку-
пателя и срок действия этого ключа. Он также устанавливает гарантиро
ванное банком соответствие между парой ключей покупателя и его
кредитной карточкой.
3. Продавец получает свои сертификаты Продавец, который собирается
принимать оплату do платежной карточке определенного типа, должен по-
лучить два сертификата двух своих открытых ключей: один для цифровой
подписи, а второй — для обмена ключами. Продавцу также потребуется
копия сертификата открытого ключа шлюза платежной сети.
4. Покупатель размещает заказ. Этот процесс может предполагать, что по-
купатель сначала должен посетить Web-узел продавца, чтобы выбрать
подходящий товар и оределить цену. После этого покупатель отправляет
продавцу список нужных ему товаров, а продавец в ответ высылает бланк
заказа с указанными в нем списком выбранных товаров, ценами, общей
стоимостью заказа и номером заказа.
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
559
5. Проверка продавца. Вместе с бланком заказа продавец высылает копию
своего сертификата, чтобы покупатель имел возможность убедиться в том,
что он действительно имеет дело с настоящим продавцом.
6. Заказ и платеж отправляются продавцу. Покупатель отправляет заказ и
платежную информацию продавцу, прилагая к ним свой сертификат. За-
каз подтверждает покупку товаров, указанных в бланке заказа. Платеж-
ная информация содержит необходимые данные кредитной карточки. Пла-
тежная информация шифруется таким образом, чтобы продавец не смог ее
прочесть. Сертификат покупателя дает продавцу возможность проверить
личность покупателя.
7. Продавец запрашивает авторизацию платежа. Продавец отправляет пла-
теж нуто информацию шлюзу платежной сети, запрашивая подтверждение
того, что доступный покупателю кредит достаточен для осуществления
данного платежа.
8. Продавец подтверждает заказ. Продавец отправляет покупателю подтвер-
ждение заказа.
9. Продавец доставляет товары или обеспечивает услуги. Продавец органи-
зует доставку товаров или выполнение услуг покупателю.
10. Продавец запрашивает получение платежа Этот запрос отправляется
шлюзу платежной сети, который обрабатывает все платежные поручения.
Дуальная подпись
Прежде чем перейти к рассмотрению деталей протокола SET, мы обсудим од-
но важное нововведение SET, а именно дуальную подпись (dual signature). Целью
использования дуальной подписи является связывание двух сообщений, предна-
значенных двум разным получателям. В данном конкретном случае покупателю
требуется перестать информацию о заказе (01 — order information) продавцу и
платежную информацию (PI — payment information) банку. Продавцу не нужно
знать номер кредитной карточки покупателя, а банку не нужны подробности за-
каза. Покупатель же, разделяя эти сведения, обеспечивает тем самым дополни-
тельную защиту своих прав с точки зрения невмешательства в его личную
жизнь. При этом требуется связать эти сведения таким образом, чтобы их можно
было при необходимости использовать в случае возникновения конфликта. Та-
кая связь требуется для того, чтобы покупатель мог доказать, что данный пла-
теж предназначен для оплаты именно этого, а не какого-то другого заказа.
Чтобы понять необходимость такой связи, предположим, что покупатель от-
правляет продавцу два сообщения — подписанное сообщение 01 (заказ) и подпи
санное сообщение PI (платеж), — а покупатель пересылает сообщение Р1 в банк.
Если продавец получит от покупателя какой-то другой заказ, то продавец сможет
заявить, что данное сообщение PI оплачивает новое, я не старое сообщение 01.
Связывание предотвращает такую возможность.
На рис. 14.9 показана схема применения дуальной подписи для решения толь-
ко что сформулированной проблемы. Сначала покупатель, используя алгоритм
SHA-1, вычисляет хэш-коды для сообщений Р1 и О1. Два полученных хэш-кода
560
ГЛАВА 14. ЗАЩИТА WEB
PI
1*1 - платежная инф« -циация PfMD
01 информация о заказе OIMU
Н - функция хэширования POMD
II - конкатенация Е
- профиль сообщении PI
—профи ль -сообщения О1
— профиль комбинации сообщений заказа и платежа
— шифрование (RSA)
— ключ личной подписи покупателя
КН,
Рис. 14.9. Создание дуальной подписи
связываются итерацией конкатенации, и для результата связывания тоже вычис-
ляется хэш-код. Наконец, покупатель шифрует итоговый хэш-код с использовани-
ем своего личного ключа цифровой подписи, в результате получая дуальную под-
пись. Вся процедура формально может быть записана в следующем виде.
DS = Екя. [Н(Н(Р1) |; Н(01))] ,
где KR, обозначает личный ключ цифровой подписи покупателя. Теперь предпо-
ложим, что продавец имеет дуальную подпись (DS — dual signature), сообщение 01
и профиль сообщения Pl (PTMD — Pl message digest). Кроме того, у продавца есть
открытый ключ покупателя, который был извлечен из сертификата покупателя. В
таких условиях продавец может вычислить два следующих значения.
H(P1MD || Н(01)) и DKVr[DS],
где KUC обозначает открытый ключ цифровой подписи покупателя. Если оба
значения оказываются равными, продавец считает, что подпись проверена. Точ-
но так же, если банк имеет DS, PI, профиль сообщения О! (0IMD) и открытый
ключ покупателя, го банк может вычислить
Н(Н(Р1) |l OTMD) и D^flDS],
И вновь, если эти значения оказываются равными, банк считает, что подпись
покупателя проверена. Подводя итог, можно сказать следующее.
1. Продавец получает сообщение 01 и выполняет проверку подписи покупателя.
2. Банк получает сообщение PI и выполняет проверку подписи покупателя.
3. Сообщения OI и PI оказываются связанными, и покупатель может дока-
зать их связь.
14.3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
561
Предположим, например, что продавец решит заменить сообщение 01 данной
транзакции другим, в надежде извлечь из этого выгоду. Для этого ему придется
найти другое сообщение 01, точно с таким же хэш-кодом 0IMD. На сегодняшний
день при использовании алгоритма SHA-1 это является практически неразреши-
мой задачей. Таким образом, у продавца нет возможности связать с данным со-
общением PI другое сообщение 01.
Обработка платежа
Типы транзакций, поддерживаемые SET, перечислены в табл. 14.3. В данном
разделе мы рассмотрим подробнее следующие типы транзакций.
Требование на закупку (Purchase Request).
Разрешение на оплату (Payment Authorization).
Получение платежа (Payment Capture).
Таблица 14.3. Типы транзакций SFT
Cardholder registration (регистрация владель- ца карты) Владельцы платежных карт должны зарегистрироваться в центре сертификации, чтобы иметь возможность отправлять сообщения SET продавцам
Merchant registration (регистрация продавца) Продавцы должны зарегистрироваться в центре сертифика- ции, чтобы иметь возможность обмениваться сообщениями SET с покупателями и шлюзами платежной сети
Purchase request (т|мЧх>вьяие Нч закупку) Сообщение, отправляемое покупателем продавцу, содержащее 0) для продавца и Р1 для банка
Payment authorization (разрешение на оплату) Последовательность сообщений, которыми обменивается прода- вец с шлюзом платежной сети для авторизации соответствую- щего платежа со счета соответствующей кредитной карточки
Payment capture (получение платежа) Позволяет продавцу сделать запрос на проведение соответст вуюшего платежа у шлюза платежной сети
Certificate inquiry and status (запрос серти- фикат н и соответст- вующего статуса) Если центр сертификации не может быстро обработать запрос на получение сертификата, в ответ покупателю или продавцу отправляется сообщение о том, что за ответом на запрос за- прашивающей стороне нужно обратиться повторно позже. Владелец платежной карточки или покупатель посылает со- общение Certificate Inquiry для того, чтобы выяснить состоя- ние процесса обработки его запроса сертификата и получить сертификат, если запрос был удовлетворен
Purchase inquiry (запрос на поставку) Позволяет владельцу платежной карты проверить состояние процесса обработки заказа после получения ответа на сообще- ние о размещении заказа. Обратите внимание на то, что это сообщение не содержит информации о недопоставленных то- варах, а только информацию о состоянии процессов выполне- ния авторизации, проводки платежей и выяснения кредитных возможностей
562
ГЛАВА 14. ЗАЩИТА WEB
Окончание табл. 14.3
Authorization reversal (отзыв запроса яа ав- торизацию платежа) Позволяет продавцу изменить ранее предъявленные запросы на разрешение произвести платеж. Если заказ не может быть выполнен вообще, продавец отзывает все данные соответст- вующего запроса. Если же заказ не может быть выполнен час- тично (например, когда поставка части товаров откладывает- ся), продавец отзывает часть подлежащей авторизации суммы
Capture reversal (отзыв запроса на осуществ- ление платежа) Позволяет продавцу исправить ошибки в запросах на осуще- ствление платежа, например в случаях, когда по ошибке слу- жащего была введена неправильная сумма
Credit (кредит) Позволяет продавцу открыть кредит в отношении счета вла- дельца платежной карточки, например на случай возврата то- вара покупателем или повреждения товара в процессе достав- ки. Обратите внимание яа то, что инициатором сообщения Credit всегда является продавец, а не владелец платежной карточки Весь обмен данными между владельцем платежной карточки и продавцом, в результате которого открывается кредит, происходит за рамками протокола SET
Credit reversal (отзыв запроса аа кредит) Позволяет продавцу изменить параметры ранее запрошенного кредита
Payment gateway certificate request (запрос сертификата шлюза платежной сети) Позволяет продавцу запросить сертификат шлюза платежной сети и получить копии текущих сертификатов ключей обмена и цифровой подписи
Batch administration (пакетное админист- рирование) Позволяет продавцу обмениваться информацией с шлюзом платежной сети по вопросам, касающимся групп платежей
Error message (сообщение об ошибке) Говорит гом, что отвечающая сторона отказала в приеме сооб- щения по причине неверного формата последнего или потому, что не удалось выполнить верификацию содержимого сообщения
1 ребование на закупку
До того как начать обмен данными требования на закупку (Purchase Request),
владелец платежной карточки должен завершить просмотр списка доступных
товаров, выбрать нужные и оформить заказ. Данный предварительный этап за-
канчивается отправкой продавцом бланка заказа покупателю. Все эти предвари-
тельные операции не связаны с SET.
Обмен данными требования на закупку состоит из четырех сообщений: Initi-
ate Request (инициирующий запрос), Initiate Response (ответ на инициирующий
запрос), Purchase Request (требование на закупку) и Purchase Response (ответ на
требование на закупку).
Для того чтобы владелец платежной карточки имел возможность отправлять
сообщения SET продавцу, необходимо получить копии сертификата продавца и
сертификата шлюза платежной сети. Запросы на получение этих сертификатов
содержатся в сообщении Initiate Request (инициирующий запрос), которое поку-
14 3. ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
663
патсль отправляет продавцу. Это сообщение содержит информацию о типе кре-
дитной карточки, используемой покупателем, идентификатор, назначенный по
купателем данной паре сообщений “запрос-ответ”, и значение оказии, призван-
ное гарантировать оригинальность сообщения.
Продавец генерирует ответ и подписывает его своим личным ключом цифро-
вой подписи. Ответ должен включать значение оказии покупателя, другое значе-
ние оказии, которое покупатель должен будет вернуть в следующем сообщении,
а также идентификатор данной транзакции. Кроме подписанного ответа, сооб-
щение Initiate Response (ответ на инициирующий запрос) содержит сертификат
подписи продавца и сертификат шлюза платежной сети для обмена ключами.
Владелец платежной карточки проверяет подлинность сертификатов продавца
и шлюза платежной сети путем проверки подписей соответствующих центров
сертификации, а затем создает сообщения 01 и Р1. В оба эти сообщения помеща-
ется идентификатор транзакции, сгенерированный продавцом. Сообщение 01 не-
посредственно не включает данных заказа, таких как количество или цена това-
ров, а содержит ссылку на заказ, созданный в процессе обмена сообщениями
между продавцом и покупателем на этапе согласования еще до первого сообще-
ния SET. Затем владелец платежной карточки готовит сообщение Purchase
Request (требование на закупку); см. схему на рис. 14.10. Для этого владелец
платежной карточки генерирует одноразовый ключ К, для схемы симметрично-
го шифрования. Это сообщение состоит из следующих блоков информации.
1. Информация о платеже. Пересылается продавцом шлюзу платежной сети
и содержит следующие данные.
• Данные PI
• Дуальная подпись, вычисленная для совокупности PI и 01 и подписан-
ная с использованием личного ключа подписи покупателя.
• Профиль сообщения 01 (OIMD).
2. Значение 01MD необходимо для того, чтобы шлюз платежной сети мог
проверить дуальную подпись, как объяснялось выше. Все указанные эле-
менты шифруются с помощью К„. Последним для данного блока инфор-
мации является следующий элемент.
• Цифровой конверт, Формируется путем шифрования Ks с помощью
открытого ключа шлюза платежной сети, предназначенного для обмена
ключами. Этот элемент называется цифровым конвертом, поскольку
для того, чтобы получить возможность прочитать элементы, перечис-
ленные выше, этот конверт необходимо открыть (т.е. дешифровать).
3. Значение Ка остается продавцу неизвестным. Поэтому продавец не сможет
прочитать ничего из всей этой относящейся к платежу информации.
4. Информация о заказе. Эта информация требуется продавцу и содержит
следующие данные.
• Данные 01.
• Дуальная подпись, вычисленная для совокупности Р1 и 01 и подписан-
ная с использованием личного ключа подписи покупателя.
• Профиль сообщения Pl (PJMD).
564
ГЛАВА 14. ЗАЩИТА WEB
Сообщение запроса
PIMD
7777,
+
OI
п____
□ —
□____
□ —
+
Дуальная
подпись
+
Серп ификат
ааде,1ьца
платежной
карп, ил
Пересылается
ЦроДавЦОМ ШЛЮЗ/
платежной
сети
> Получателем
являет, я
фодавец
РТ — платежная информация
OI - информация о закале
PIMD - профиль сообщения PI
OIM Г) — профиль сообщения OI
Е — шифрование (RSA для асимметричной
и DES дтя симметричной схем)
К, - временный ключ симметричной
схемы шифрования
KUb —открытый ключ банка для
обмена ключами
Рис. 14.10. Структура сообщения Purchase Request (требование на закупку), от
правляемого владельцем платежной карточки
5. Значение PIMD необходимо для того, чтобы продавец мог проверить ду-
альную подпись Заметим, что данные OI отправляются в открытом виде,
6. Сертификат владельца платежной карточки. Содержит сертификат от-
крытого ключа цифровой подписи владельца платежной карточки. Этот
сертификат необходим как продавцу, так и шлюзу платежной сети.
После получения сообщения Purchase Request продавец выполняет следую-
щие действия (рис. 14.11).
1. Проверяет сертификаты владельца платежной карточки с помощью содер-
жащихся в них подписей центров сертификации.
2. Проверяет дуальную подпись с помощью открытого ключа цифровой под-
писи владельца платежной карточки. Это позволяет убедиться в том, что
заказ не был изменен во время пересылки и что заказ был подписан вла-
дельцем платежной карточки.
3. Обрабатывает заказ и пересылает платежную информацию шлюзу платеж-
ной сети для авторизации (соответствующий процесс будет описан ниже).
4. Отправляет сообщение Purchase Response (ответ на требование на закупку)
владельцу платежной карточки. '
14.3, ПРОТОКОЛ ЗАЩИЩЕННЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
565
Сообщение запроса
+
Цифровой
PIMD
О1
□____
□ ___
с___
с___
Дуальная
подпись
SS3
Сертификат
владельца
платежной
карточки
Пересылает* я
прпдтацом гшпоту
пае с жчия с' та
OI - информация . । заказе
01MD —профиль сообщения OI
POMD - профиль < иобщения платежного поручения
В - шифрование (RSA)
Н - функция хэширования
KUC - открытый ключ подписи покупателя
Рис 14 11. Схема обработки сообщения Purchase Request продавцом
Сообщение Purchase Response (ответ на требование на закупку) содержит
блок ответа, подтверждающий заказ и ссылающийся на соответствующей номер
транзакции. Этот блок, подписывается продавцом с помощью его личного ключа
цифровой подписи. После этого блок вместе с подписью, а также сертификат
подписи продавца отправляются владельцу платежной карточки.
Когда программное обеспечение, установленное на компьютере владельца
платежной карточки, получает сообщение Purchase Response, оно проверяет сна-
чала сертификат продавца, а затем подпись блока ответа, В конце концов, в за-
висимости от содержания ответа, выполняется соответствующее действие, на-
пример отображение на экране некоторого сообщения для пользователя или об-
новление информации о состоянии заказа в базе данных.
Разрешение на оплату
Во время обработки заказа, поступившего от владельца платежной карточки,
продавец выполняет авторизацию транзакции (получение разрешения на оплату)
с помощью шлюза платежной сети. Такое получение разрешения на оплату
(payment authorization) означает санкционирование транзакции эмитентом пла-
тежной карточки. Авторизация дает продавцу гарантию того, что он получит
плату за проданный товар, и поэтому продавец может выполнить доставку това-
566
ГЛАВА 14. ЗАЩИТА WEB
ров или услуг покупателю. Обмен данными для получения разрешения на опла-
ту формируется из двух сообщений: Authorization Request (запрос разрешения
на оплату) и Authorization Response (ответ на запрос разрешения не оплату).
Сообщение Authorization Request (запрос разрешения на оплату), отправляемое
продавцом шлюзу платежной сети, состоит из следующих блоков информации.
1. Информация о платеже. Эта информация была получена от покупателя и
содержит следующие данные.
• Данные PI
• Дуальная подпись, вычисленная для совокупности Р1 и OI и подписан-
ная с использованием личного ключа подписи покупателя.
• Профиль сообщения 01 (O1MD).
• Цифровой конверт
2. Информация авторизации. Эта информация генерируется продавцом и со-
держит следующие данные.
• Блок авторизации, включающий идентификатор транзакции, подпи-
санный личным ключом цифровой подписи продавца и шифрованный
сгенерированным продавцом одноразовым ключом схемы симметрично-
го шифрования.
• Цифровой конверт формируется в результате шифрования одноразового
ключа схемы симметричного шифрования с помощью открытого ключа
шлюза платежной сети, предназначенного для обмена ключами.
3. Сертификаты. Продавец включает в сообщение сертификат цифровой под-
писи владельца платежной карточки (служит для проверки дуальной под-
писи), сертификат ключа своей цифровой подписи (позволяет проверить
подпись продавца) и сертификат своего ключа для обмена ключами
(необходим для ответа шлюза платежной сети).
Получив эти данные, шлюз платежной сети выполняет следующие действия.
1. Проверяет все сертификаты.
2. Дешифрует сначала цифровой конверт блока данных авторизации, чтобы
получить ключ для схемы симметричного шифрования, а затем дешифрует
блок данных авторизации.
3. Проверяет подпись продавца для блока данных авторизации.
4. Дешифрует сначала цифровой конверт блока платежной информации, что
бы получить ключ для схемы симметричного шифрования, а затем де-
шифрует блок платежной информации.
б. Проверяет дуальную подпись блока платежной информации.
6. Проверяет совпадение идентификатора транзакции, полученного от про-
давца, с идентификатором, включенным в состав данных Р1, поступивших
(через продавца) от владельца платежной карточки.
7. Запрашивает и получает разрешение на оплату у эмитента платежной кар-
точки.
14.3. ПРОТОКОЛ ЗАЩИЩЕ1ШЫХ ЭЛЕКТРОННЫХ ТРАНЗАКЦИЙ (SET)
667
Получив разрешение на оплату у эмитента платежной карточки, платежный
шлюз возвращает продавцу сообщение Authorization Response (ответ на запрос
разрешения на оплату). Это сообщение состоит из следующих блоков информации.
1. Информация авторизации. Включает блок авторизации, подписанный
личным ключом цифровой подписи шлюза платежной сети и шифрован-
ный сгенерированным шлюзом платежной сети одноразовым ключом для
схемы симметричного шифрования. Кроме того, включает цифровой кон-
верт, содержащий этот одноразовый ключ, шифрованный с помощью от-
крытого ключа продавца, используемого для обмена ключами.
2. Информация мандата на получение платежа (capture token). Эта инфор-
мация будет использована для осуществления платежа впоследствии. Дан-
ный блок имеет ту же форму, что и предыдущий, а именно содержит под-
писанный и шифрованный мандат с цифровым конвертом. Этот мандат не
обрабатывается продавцом, а должен быть просто возвращен им в неиз-
менном виде шлюзу платежной сети в запросе на оплату
3. Сертификат Сертификат цифровой подписи шлюза платежной сети.
Получив подтверждение авторизации платежа от шлюза платежной сети,
продавец может выполнить доставку товаров или услуг покупателю.
Получение оплаты • 1 к ‘
Чтобы получить плату за товары или услуги, продавец обращается к шлюзу
платежной сети с инициативой выполнения транзакции получения платежа, со-
стоящей из двух сообщений: сообщения запроса на получение оплаты и сообще-
ния ответа на запрос на получение оплаты.
Для сообщения Capture Request (запрос на оплату) продавец генерирует, под-
писывает и шифрует блок данных запроса на оплату, включающий сумму пла-
тежа и идентификатор транзакции. Данное сообщение должно также включать
ранее полученный (в сообщении Authorization Response) шифрованный мандат
на получение платежа для данной транзакции и, кроме того, сертификаты клю-
чей продавца для цифровой подписи и обмена ключами.
Получив это сообщение, шлюз платежной сети дешифрует и проверяет блок
данных запроса на оплату, а также дешифрует и проверяет блок мандата на по-
лучение платежа. Затем проверяется соответствие между данными этих двух
блоков. После этого шлюз платежной сети создает расчетный запрос, отсылае-
мый эмитенту платежной карточки пч закрытой платежной сети. В результате
этого запроса происходит перечисление средств на счет продавца.
Затем шлюз с помощью сообщения Capture Response (ответа на запрос на оп-
лату) извещает продавца о перечислении средств Сообщение содержит подпи-
санный и шифрованный шлюзом блок данных ответа на запрос на оплату. Кроме
того, это сообщение содержит сертификат цифровой подписи шлюза платежной
сети. Программное обеспечение, установленное на компьютере продавца, полу-
чив данное сообщение, сохраняет его для использования в программах учета и
согласования денежных средств, поступающих от операционного центра.
568
ГЛАВА 14. ЗАЩИТА WEE
иииияиявииввзЕтг’^гт^г^-. гзтг- я^.‘ г\ — . .- .. г * > «•
14.4. Рекомендуел1Пеисто^жики дополнительном
информации
Хорошими источниками информации по вопросам защиты Web являются
[PUBI97] и [GARF97] (последний носит более формализованный характер). Наи-
более подробным описанием SET является Книга 1 соответствующего набора
спецификаций, которую можно найти на Web-узлах MasterCard и VISA, посвя-
щенных SET. Другим прекрасным обзором является [MACG97].
GARF97 Garfinkel, S , and Spatford, G Web Security & Commerce Cambridge, MA O'Reilly
and Associates, 1997
MACG97 Macgregor, R., Ezvan C , Liguori, L and Han, J Secure Electronic Transactions
Credit Card Payment on the Web in Theory and Practice. IBM RedBook SG24-4978-00
1997 Доступна в Web по адресу www.redbooks ibm com/SG24497h
RUAi97 Rubin A., Geei. D.; and Ranum, M Web Security Sourcebook New York Wifey, 1997
Вниманию читателей предлагаются и следующие Web-узлы.
Посвященная SSL страница Netscape. Содержит спецификации SSL.
Хартия защиты транспортного уровня (Transport Layer Security Charter).
Самые последние документы RFC и проекты стандартов TLS.
Посвященный SET узел MasterCard. Самые последние касающиеся SET
документы, словарь терминов и информация о приложениях.
Узел Visa-Electronic Commerce. Информация, подобная той, которая пред-
ставлена на узле MasterCard.
14.5. Задачи*
1. Почему в протоколах SSL и TLS предусмотрено использование отдельного
протокола изменения параметров шифрования (Change Cipher Spec
Protocol), а не просто сообщения change_cipher_spec в рамках протокола
квитирования (Handshake Protocol)?
2. Рассмотрите следующие угрозы безопасности Web и объясните, как каж-
дая из них устраняется теми или иными средствами SSL.
• Криптоанализ с использованием простого перебора (Brute-Force
Cryptanalytic AttackJ. Перебор всех возможных вариантов ключей алго-
ритма традиционного шифрования.
• Анализ с использованием словаря известного открытого текста
(Known-Plaintext Dictionary Attack). Многие сообщения содержат от-
крытый текст определенного вида, например команды GET HTTP. Про-
тивник создает словарь, включающий все возможные варианты шифро-
вания известного открытого текста. Перехватив шифрованное сообще-
ние, противник берет содержащий шифрованный открытый текст
фрагмент сообщения и ищет в нем соответствующий шифрованный
текст из словаря. Соответствующий текст словаря и текст фрагмента
14.4. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ 669
должны быть зашифрованы одним и тем же секретным ключом. Если
обнаружено несколько совпадений, предпринимаются попытки дешиф-
ровать текст с каждым из соответствующих ключей, чтобы выяснить,
какой из них правильный. Этот метод анализа особенно эффективен в
случае малой длины ключа (до 40 битов).
• Атака с воспроизведением сообщений (Replay Attack). Противник вос-
производит ранее перехваченные им сообщения квитирования SSL.
• Атака с внедрением посредника (Man-inihe-Middle Attack). Противник
внедряется в обмен ключами между клиентом и сервером как посред-
ник, представляясь клиенту сервером, а серверу — клиентом.
• Кража пароля (Password Sniffing). Перехват пароля противником в по-
токе данных приложения HTTP или иного приложения.
• Фальсификация IP-адреса (IP Spoofing). Использование фальсифицирован-
ных IP-адресов с целью заставить главный узел принять лижиые данные.
• Захват IP-связи (IP Hijacking). Отстранение противником одной из ле-
гальных сторон текущего аутентифицированного соединения путем ее
этключения и замещения ее собой.
• Синхронная атака (SYN Flooding). Противник отправляет сообщения
SYN (символ синхронизации) протокола TCP с запросом на установле-
ние соединения, но не отвечает на завершающее сообщение, сохраняя
тем самым установленное соединение. Атакуемый модуль TCP обычно
ожидает завершения процесса открытия “полуоткрытого” соединения в
течение некоторого времени, так что многократно повторяющиеся со-
общения SYN могут полностью парализовать работу модуля TCP.
3. Основываясь на материале данной главы, можете ли вы утверждать, что
получатель имеет возможность восстановить исходный порядок поступив-
ших записей SSL, если они пришли с нарушением этого порядка? Если да,
то как это сделать? Если нет, то почему?
670
ГЛАВА 14. ЗАЩИТА WEB
< г. Г-’
ЧАСТЬ Защита систем
IV------------------
1
ГЛАВА
15
. г . -JU !!!>
Нарушители и
вирусы
Что является главной идеей защиты? — Отражение удара.
Что является характерной особенностью защиты? — Посто-
янное ожидание удара.
Карл фон Клаузевиц О войне
Они приняли решение подвергнуть Чарльза Маблдена испыта
нию. Его заданием будет — ни больше, ни меньше — раздобыть
ключ к коду Стерна. Если у него, как он утверждает, действи-
тельно есть “концы" в Аттинге, то для него раздобыть код
должно быть вполне реальным делом, и тогда остановить его
может только верность Москве. Если же он добудет ключ к
коду, то он тем самым, без всякого сомнения, докажет свою
преданность Лондону.
Руфь Реадел (Ruth Rendell). Talking to Strange Man
Одной из важных проблем безопасности сетевой среды
являются злонамеренные или по крайней мере неже-
лательные попытки вторжения в сеть, предприни-
маемые некоторыми пользователями или программным обес-
печением. Такого рода нарушения со стороны пользователей
могут иметь форму попыток несанкционированного доступа
к компьютеру или попыток легального пользователя полу-
чить привилегии либо выполнить операции, которые выхо-
дят за рамки предоставленных ему полномочий Под нару-
шениями со стороны программного обеспечения имеется в
виду работа вируса, “червя” или “троянского коня”.
Все эти нарушения относятся к вопросам защиты сетей,
поскольку вход в систему может осуществляться посредст-
вом сети. Однако эти нарушения нельзя отнести к чисто сетевым — г.ользова
тель, имеющий доступ к локальному терминалу, может предпринять попытку
проникновения в систему, не используя сетевых средств. Вирус или “троянский
конь” могут попасть в систему с дискеты. В этом смысле только “червь" может
считаться чисто сетевым средством вторжения в систему. Таким образом, вопро-
сы вторжения в систему находятся на пересечении областей, относящихся к за-
щите сетей и защите компьютерных систем.
Данная книга в чсновном посвящена вопросам защиты сетей, поэтому мы не
будем пытаться провести здесь исчерпывающий анализ атак и соответствующих
контрмер, относящихся к вторжению в компьютерную систему. Вместо этого мы
рассмотрим вопрос в более широкой постановке и обсудим проблему на концеп-
туальном уровне.
Мы начнем эту главу с классификации нарушителей. Сначала мы исследуем
природу нарушений соответствующего вида, а затем рассмотрим стратегии их
предупреждения или, если это сделать невозможно, то хотя бы обнаружения.
15.1. Нарушители*
Одной из двух самых распространенных угроз безопасности являются нару-
шители (второй угрозой являются вирусы), обычно называемые хакерами
(hacker) или взломщиками (cracker). В одной из основополагающих работ, по-
священных вторжениям в системы, Андерсон (Anderson) [ANDE80] предложил
следующую классификацию нарушителей.
• Имитатор (masquerader). Лицо, не имеющее права пользования компьюте-
ром, но преодолевшее механизм управления доступом и использующее
права доступа некоторого легального пользонателя.
Правонарушитель (misfeasor). Легальный пользователь, пытающийся по-
лучить доступ к данным, программам или ресурсам, соответствующих
прав доступа к которым он не имеет, или пользователь, который распола-
гает соответствующими правами доступа, но использует их в злонамерен-
ных целях.
Тайный пользователь (clandestine user). Лицо, завладевшее правами
управления системой и использующее эти права для обхода средств аудита
и управления доступом либо для создания препятствий в регистрации сис-
темных событий.
Имитаторами чаше всего бывают внешние пользователи, правонарушителями
обычно являются внутренние пользователи, а тайными пользователями могут
оказаться как те, гак и другие.
По уровню опасности атаки нарушителей могут быть как незначительными,
так и вполне серьезными. К незначительным по опасности нарушениям можно
отнести попытки тех, кто пытается получить доступ к соответствующей сетевой
среде просто из личного любопытства. К серьезным по уровню опасности нару-
шениям можно отнести действия лиц, пытающихся читать секретные данные,
выполнять несанкционированные изменения данных или осуществлять дейст-
вия, приводящие к повреждению системы.
15 1. НАРУШИТЕЛИ
573
Угроза, связанная с действиями нарушителей, хорошо известна отчасти благо-
даря нашумевшему инциденту с “коварным хакером” (Wily Hacker) в 1986-1987
гг., описанному Клиффом Столлом (Cliff Stoll) [STOL88, STOL89J. В 1990 году бы-
ло развернуто настоящее преследование компьютерных хакеров, сопровождавшее-
ся арестами, открытием уголовных дел, одним драматическим показательным
процессом, несколькими обвинительными приговорами, а также конфискациями
немалого объема данных и компьютерного оборудования [STER92J. Многие люди
верили, что в результате этих мер проблема была взята под контроль.
На самом деле проблема так и не была решена. Приведем лишь один при-
мер — одна из групп Bell Labs [BELL92, BELL93] опубликовала данные о посто-
янных и довольно частых атаках, которым подвергается их компьютерный ком
плеке через Internet в течение достаточно долгого периода времени со стороны
совершенно разных источников. На время подготовки отчета эта группа Bell
Labs подвергалась следующим атакам.
Попытки копировать файл паролей (о чем мы подробнее поговорим поз
же) — чаще одного раза ь два дня.
Подозрительные запросы на удаленный вызов процедур — чаще одного
раза в неделю.
Попытки подключиться к несуществующим “машинам-ловушкам” — чаше
двух раз в месяц.
С нарушителями, не имеющими злого умысла, можно было бы примириться, хо-
тя и такие нарушите ти потребляют ресурсы и тем самым снижают производитель-
ность системы для легальных пользователей. Проблема в том, что не существует ме-
тодов, позволяющих однозначно выяснить, является нарушитель злоумышленником
или нет. Поэтому даже для систем, не предназначенных для хранения особо важных
данных, имеет смысл держать данную проблему под контролем.
Данное утверждение можно проиллюстрировать на примере события, про-
изошедшего в Техасском сельскохозяйственном университете (Texas A&M Uni-
versity) [SAFF93]. В августе 1992 г. в компьютерный центр университета посту-
пило сообщение о том, что один из их компьютеров использовался для атаки по
Internet на компьютеры, принадлежащие другой организации. Установив посто-
янное наблюдение, персонал компьютерного центра обнаружил, что имеется не-
сколько внешних нарушителей, постоянно запускающих процедуры подбора па-
ролей на разных машинах (всего в объединенной сети центра было около 12000
компьютеров). Центр отключил машины со взломанной защитой, устранил все
обнаруженные изъяны в системе защиты и только после этого продолжил работу
в нормальном режиме. Но спустя несколько дней один из локальных системных
администраторов зарегистрировал новую попытку взлома. Выяснилось, что ме-
тодика, применяемая нарушителем, была гораздо сложнее, чем казалось на пер-
вый взгляд. Были обнаружены файлы, содержащие согни перехваченных паро-
лей, среди которых были и пароли, с помощью которых можно было получить
доступ к главным, до сих пор считавшимся надежно защищенными серверам. Ко
всему прочему один из локальных компьютеров был сконфигурирован как элек-
тронная доска объявлений, с помощью которой хакеры связывались друг с дру-
гом и делились успехами и опытом.
574
глава is. нарушители и вирусы
Анализ этого случая выявил, что в действительности существует два уровня
хакеров. На высшем уровне находятся хорошо подготовленные пользователи,
прекрасно разбирающиеся в технологии, а на низшем — "рядовые солдаты”,
просто использующие имеющиеся программы взлома и имеющие весьма туман-
ные представления о том, как эти программы работают. Эта рабочая команда
объединяет два весьма грозных фактора: глубокое знание методов взлома систем
защиты и тупое желание бесконечно долго “стучаться в закрытые двери”, прове-
ряя все уязвимые места системы.
В результате возросшего внимания к проблеме нарушителей были сформиро-
ваны многочисленные группы быстрого реагирования на компьютерные проис-
шествия (CERT — computer emergency response team). Эти группы, объединяю-
щие специалистов в области защиты информации, собирают и обобщают инфор-
мацию об уязвимых местах используемых систем, делая эту информацию
доступной системным администраторам. К сожалению, хакеры тоже могут иметь
доступ к отчетам CERT. При анализе инцидента, произошедшего в Техасском
сельскохозяйственном университете, выяснилось, что хакеры разработали про-
граммы, проверяющие компьютеры на предмет выявления всех возможных не-
достатков защиты, на которые указывалось в отчетах CERT. В результате, если
система защиты какой-то машины не вполне отвечала рекомендациям CERT,
машина оказывалась широко открытой для такого рода атак.
Помимо запуска программ подбора паролей, нарушители модифицировали
программу регистрации входа в сеть, что позволило им перехватывать пароли,
вводимые пользователями во время регистрации в системе Это дало нарушите-
лям возможность создать впечатляющий список скомпрометированных паролей,
который был выставлен на электронной доске объявлений, созданной на одной
из машин жертвы.
Мы начнем следующий раздел с описания методов, используемых для втор-
жения, а затем перейдем к обсуждению контрмер, позволяющих предотвратить
попытки вторжения. Если же предотвратить вторжение оказывается невозмож-
ным, то второй линией защиты должна оказаться система обнаружения наруше-
ний, о которой мы поговорим в конце раздела.
Методика вторжения
Целью нарушителя является получение доступа к системе или расширение
прав, предоставленных ему системой на законном основании. Е общем для этого
нарушителю, как правило, требуется раздобыть информацию, которая должна
быть защищенной. В большинстве случаев эта информация представлена в фор-\/
ме пароля пользователя. Зная пароль некоторого другого пользователя, наруши-
тель может войти в систему под его именем и получить все привилегии, кото-
рыми обладает этот пользователь.
Обычно в системе имеется файл, связывающий пароли с именами легальных .-
пользователей. Если этот файл не защищен, не составляет никакого труда полу-
чить к нему доступ и узнать хранящиеся в нем пароли. Файл паролей может
защищаться одним из следующих двух способов.
1S.1. НАРУШИТЕЛИ
575
Одностороннее шифрование. Система хранит пароль пользователя только
в шифрованном виде Когда пользователь вводит свой пароль, система
шифрует введенный пароль и сравнивает результат с тем значением, кото-
рое хранится в файле паролей. На практике система обычно выполняет
одностороннее (необратимое) преобразование, в котором пароль служит
для генерирования ключа функции шифрования, в результате чего полу-
чается вывод фиксированной длины.
• Управление доступом. Доступ к файлу паролей разрешается лишь одному
или очень небольшому числу пользователей.
Если используется обе или хотя бы одна из этих контрмер, потенциальному
нарушителю придется приложить определенные усилия, чтобы узнать пароли.
На основе анализа специальной литературы и интервью со многими взломщика-
ми паролей в [ALVA90] сообщается о следующих методах получения паролей.
1. Проверка паролей по умолчанию для стандартных учетных записей, по-
ставляемых с системой. Многие администраторы не утруждают себя рабо-
той по смене установленных по умолчанию значений.
2. Перебор всех коротких паролей (от одного до трех сим1 <-лов).
3 Проверка слов из системного словаря или из списка наиболее вероятных
паролей. Список последних всегда можно найти на электронных досках
объявлений хакеров.
4. Сбор информации о пользователях, включая их полные имена, имена их
супругов и детей, названия картин и фотографий па рабочих местах и даже
названия их любимых книг, по которым можно судить об их увлечениях.
5. Проверка в качестве пароля телефонных номеров, номеров социальной
страховки и номеров комнат пользователей.
в. Проверка в качестве пароля всех возможных для данного штага номерных
знаков автомобилей.
7. Использование “троянского коня” (см. раздел 15.2) для обхода ограниче-
ний доступа.
8. Подключение к линии связи между пользователем и главным узлом.
Первых шесть методов являются вариациялМи на тему подбора паролей. Если
нарушителю приходится угадывать варианты пароля в процессе регистрации в
системе, то, с одной стороны, это весьма утомительно, а с другой — легко обнару-
живается системой. Например, система может просто отвергать любые попытки
зарегистрироваться под соответствующим именем после трех неудачных попыток
ввода пароля, что заставит нарушителя разорвать связь с узлом и пытаться под-
ключиться снова В такой ситуации нет смысла проверять большое число паролей.
Однако в действительности нарушитель вряд ли станет использовать такие прими-
тивные методы. Например, если нарушитель может получить доступ к зашифро-
ванному файлу паролей как непривилегированный пользователь, то он, скорее все-
го, попытается скопировать этот файл и не спеша дешифровать его на основе из-
вестного механизма шифрования для данной конкретной системы, чтобы в
результате получить пароль, дающий более высокий уровень привилегий.
576
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Подбор паролей оказывается эффективным методом и, таким образом, пред-
ставляет собой опасность только в тех случаях, когда он может выполняться в
автоматическом режиме и без угрозы выявления факта подбора пароля. Не-
сколько ниже в этом разделе мы остановимся на методах выявления попыток
автоматического подбора пароля.
Под седьмым номером в приведенном выше списке указана атака, предпола-
гающая использование “троянских коней”, обнаружение которой представляет
собой достаточно нетривиальную задачу Пример программы, которая предна-
значена для обхода механизма управления доступом, приведен в [ALVA90]. Не-
привилегированный пользователь создал игровую программу, предлагаемую сис-
темному оператору для развлечения в свободное время. Программа действитель-
но представляла собой игру, но во время работы она также копировала файл
паролей, хранившийся в незашифрованном виде и защищенный лишь с помо-
щью системы разграничения доступа, в файл пользователя, являющегося авто-
ром программы. Поскольку игра работала в режиме доступа привилегированного
пользователя, соответствующая программа могла получить к файлу паролей не-
ограниченный доступ.
Восьмой тип атаки, заключающийся в подключении к линии связи, относит-
ся к области вопросов обеспечения физической защиты системы. В случае таких
атак возможным методом противодействия является шифрование в канале свя-
зи, которое обсуждалось в разделе 5.1 главы 5.
Теперь мы перейдем к описанию двух основных методов противодействия:
предупреждения и обнаружения нарушений. Предупреждение нарушений явля-
ется неизменной целью системы защиты и в каком-то смысле, бесконечной бит-
вой с невидимым противником. Трудность этой задачи объясняются тем фактом,
что защищающаяся сторона должна пытаться предотвратить все возможные ти-
пы атак, тогда как атакующая сторона имеет возможность выбрать самое слабое
звено в общей цепи защиты и сосредоточить все свои усилия именно в этом мес-
те. Цель обнаружения нарушений состоит в изучении типа используемой атаки
либо до ее успешного завершения, либо уже после.
Защита паролей
Первой линией защиты от нарушителей является система паролей. Практиче-
ски все многопользовательские системы требуют, чтобы пользователь при входе
в систему указывал не только свой идентификатор (имя пользователя), но и па-
роль. Пароль выполняет функции аутентификации пользователя, входящего в
систему. В свою очередь, идентификатор пользователя обеспечивает защиту по
следующим направлениям.
• По идентификатору пользователя определяется, получит ли пользователь
доступ к системе вообще. Ви многих системах доступ разрешается только
тем, кто уже имеет соответствующую идентификатору запись в системе
По идентификатору пользователя определяется набор привилегий, имею-
щихся у данного пользователя. Некоторые пользователи могут иметь статус
суперпользователя, позволяющий читать файлы и выполнять действия, для
которых в операционной системе предусмотрена особая защита. В некоторых
15 1. НАРУШИТЕЛИ
577
системах предусмотрены специальные идентификаторы для входа в систему
гостей (guest) или анонимных пользователей (anonymous), и пользователи,
регистрирующиеся с такими идентификаторами, оказываются более ограни-
ченными в правах доступа, чем обычные пользователи.
Идентификаторы пользователей играют важную роль при использовании
так называемого разграничительного контроля доступа (discretionary ac-
cess control). Например, путем предоставления списка идентификаторов
других пользователей данный пользователь может разрешить им читать
файлы, владельцем которых он является.
Уязвимое! ь паролей
Чтобы лучше понять природу соответствующих атак, рассмотрим широко
применяемую в системах UNIX схему, где пароли никогда не хранятся в откры-
том виде (рис. 15.1(a)). Каждый пользователь сам выбирает пароль длиной до
восьми алфавитно-цифровых символов. Этот пароль преобразуется в 56-битовое
значение (на основе 7-битовых кодов ASCII), которое служит вводимым значени-
ем для ключа процедуры шифрования. Процедура шифрования, имеющая на-
звание crypt(3), базируется на использовании алгоритма DES. Соответствующий
алгоритм DES оказывается несколько измененным с помощью специального 12-
битового модификатора ("salt” value). На вход такого модифицированного алго-
ритма DES сначала подается 64-битовый блок входных данных, состоящий из
одних нулей. Выходное значение подается на вход следующего шага шифрова-
ния. Процесс повторяется до тех пор, пока общее число шагов не достигнет 25.
Полученное в результате 64 битовое выходное значение преобразуется в 11-
символьную последовательность. Шифрованный таким образом пароль сохраня-
ется вместе с открытым значением модификатора в файле паролей в соответст-
вующей данному идентификатору записи
Использование модификатора решает следующие задачи.
Предотвращает возможность возникновения проблемы дублирования паро-
лей в парольном файле. Даже если два разных пользователя выберут одина-
ковые пароли, их пароли будут регистрироваться в разное время, поэтому
“расширенные” представления паролей этих пользователей будут разными
в Увеличивает эффективную длину пароля на два символа, не заставляя
пользователя запоминать эти два дополнительных символа. Следовательно,
число возможных паролей возрастает в 4096 раз, что затрудняет задачу
подбора пароля.
Предотвращает возможность применения аппаратной реализации DES, что
упрощает проведение атак с использованием простого перебора всех паролей.
Когда пользователь пытается войти в систему UNIX, он должен ввести иден-
тификатор и пароль. Операционная система использует идентификатор для на-
хождения в файле паролей открытого значения модификатора и шифрованного
значения пароля. Модификатор и введенный пользователем пароль подаются на
вход процедуры шифрования. Если в результате выполнения данной процедуры
получается значение, идентичное сохраненному шифрованному значению паро-
ля, введенный пароль принимается системой как правильный.
578
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Salt
(модификатор) Пароль
lai Загрузка нового пароля
Рис. 15.1. Схема использования системы паролей в UNIX
Процедура шифрования предназначена для того, чтобы исключить возмож-
ность угадывания пароля. Программные реализации DES более медленны в
сравнении с аппаратными реализациями, а необходимость выполнения 25 ите-
раций еще в 25 раз увеличивает время, требуемое для перебора. Однако со вре-
мени создания алгоритма ситуация изменилась в двух отношениях. Во-первых,
были разработаны более новые и более быстрые реализации алгоритма. Напри
мер. в Internet появилась программа-“червь”, которая за вполне приемлемое
15.1. НАРУШИТЕЛИ
579
время способна с помощью усовершенствованного алгоритма проверить несколь-
ко сотен вариантов пароля для входа в атакуемую систему UNIX. Во-вторых,
производительность аппаратных средств систем постоянно растет, что означает
более быстрое выполнение любых алгоритмов
Таким образом, можно обозначить две угрозы защите системы паролей, реа-
лизованной в UNIX.*Во первых, пользователь может получить доступ к машине,
используя гостевой идентификатор или какой-то другой способ, а затем запус-
тить на этой машине программу подбора паролей, обычно называемую "password
cracker”. При этом нарушитель может проверить сотни, и даже тысячи значений
пароля, не вызывая заметного расхода системных ресурсов. Кроме того, если
противнику удастся получить копию файла паролей, то программу подбора па-
ролей можно будет запустить на другом компьютере в режиме отсутствия цейт-
нота. Эго дает противнику возможность проверить многие тысячи вариантов па
ролей за вполне приемлемое время.
Пример программы подбора паролей был ^публикован в Internet в августе
1993 г. [MADS93J. На компьютере Thinking Machines Corporation была достиг-
нута производительность в 1560 вызовов процедуры шифрования в секунду на
векторную единицу. При четырех векторных единицах на процессорный узел
(что является стандартной конфигурацией) общая производительность машины,
состоящей из 128 узлов (что является вполне скромным показателем), достигает
80(1000 вызовов процедуры шифрования в секунду, а для машины, состоящей из
1024 узлов, — 6,4 млн вызовов в секунду.
Но даже этих огромных значений для нарушителя оказывается недостаточно,
чтобы успешно использовать простой перебор всех возможных вариантов пароля.
Вместо этого взломщики паролей исходят из предположения, что многие поль-
зователи имеют легко угадываемые пароли.
Нередко пользователи, если им разрешается выбрать пароль по своему усмот-
рению, выбирают очень короткие пароли. В табл. 15.1 показаны результаты ис-
следований, проведенных в Университете Пэдью (Purdue University). Целью ис-
следования было выяснение длин паролей выбираемых пользователями на 54
машинах с общим числом пользователей около 7000. Оказалось, что 3% всех
паролей имели длину в три символа или менее того. Таким образом, атакующий
может начать с проверки всех возможных комбинаций длиной до трех символов
Простейшим средством противодействия является такая настройка системы, при
которой пользователь не сможет выбрать пароль длиной меньше, скажем, шести
символов или даже потребовать, чтобы все пароли состояли в точности из восьми
символов. Большинство пользователей вряд ли станут выражать недовольство по
поводу таких ограничений.
Длина пароля — это только чдин источник возможных проблем. Многие
пользователи, если им разрешается выбрать пароль по своему усмотрению, оста-
навливают выбор на легко угадываемых словах, например на своем имени, на-
звании улицы, на которой они живут, на словах из повседневной лексики и т.п.
Это существенно упрощает задачу' подбора пароля. Взломщику достаточш про-
верить файл паролей на наличие в нем наиболее вероятных значений. Поскольку
легко угадываемые пароли используют многие люди, такая стратегия оказывает
ся эффективной практически в любой системе.
580
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Таблица 15.1. Распределение длин паролей, выбираемых пользователями
[SPAF92a]
Длина пароля Число паролей указанной длины Диля от общего числа паролей
1 55 0,004
2 87 0,006
3 212 0,02
4 149 0,03
5 1260 0,09
а 3035 0,22
7 2У17 0.21
8 5772 0,42
Всего: 13787 1,0
Демонстрация эффективности подбора пароля имеется в [K.LEI90]. Автор со-
брал файлы паролей UNIX из самых разных источников, в общей сложности им
было получено около 14000 зашифрованных паролей. Результат, который автор
справедливо называет ошеломляющим, представлен в табл. 15.2. Из всех паро
лей примерно четверть была им угадана. При этом использовалась следующая
стратегия.
1. Проверяются имена пользователя, инициалы, идентификатор учетной за-
писи и другая персональная информация. В общем для каждого пользова-
теля проверялось 130 возможных вариантов парочя.
2. Проверяются слова из различных словарей. Автор собрал словарь, содер-
жащий более 60000 слов, включая словарь справки самой системы, а так-
же другие словари, как видно из таблицы.
3. Проверяются различные модификации слов из п. 2 Варианты создавались
путем изменения первой буквы со строчной на прописную, добавления в
начато слова символа “Л”, перевода символов слова в верхний регистр, за-
писи слова в обратном порядке, замены букв “о” на цифру “О” и т.п. В ре-
зультате таких преобразований список проверяемых вариантов увеличива-
ется на 1 млн значений.
4. Проверяются варианты замены регистра символов в словах из п. 2, не уч-
тенные на этапе, представленном п. 3. В результате этого к списку прове-
ряемых вариантов добавляется еще 2 млн значений.
Таким образом, данный тест предполагает проверку примерно 3 млн слов. Если
использовать упоминавшийся выше компьютер Thinking Machines, то для шифро-
вания всех этих слов потребуется около часа. При этом необходимо понимать, что
здесь показатель успеха 25% получен в результате довольно тщательного анализа,
но в определенных случаях одного угаданного пароля может оказаться вполне дос-
таточно для того, чтобы получить привилегированный доступ к системе.
15.1. НАРУШИТЕЛИ
581
Таблица 15.2. Пароли, угаданные из выборки 13797 учетных записей
[KLFI90J
Тил пароля Число вариантов Число совпадений Доля от общего числа паролей Cooi ношение „стоимость- результат ’
Имя пользователя 130 368 2,7 % 2.830
Последовательность 866 22 0,2 % 0,025
СИМВОЛОВ
Числя 427 9 0,1 % 0,021
Китайские слова 392 56 0,4 % 0,143
Географические на звания 628 82 0 6 % 0,131
Общеизвестные названия 2239 548 4,0 % 0.245
Женские имена 4280 161 1,2 % 0,038
Мужские имена 2866 140 1,0 % 0,049
Редкие имена 4955 130 0.9 % 0,026
Мифы и легенды 1240 66 0.5 % 0,053
Персонажи Шекспира 478 11 0,1 % 0,023
Спортивные термины 238 32 0,2 % 0.134
Научная фантастика 691 59 0.4 % 0,085
Кинофильмы и актеры 99 12 0,1 % 0,121
Мультфильмы 92 9 0,1 % 0.098
Известные люди 290 55 0.4 % 0,190
Крылатые фразы и 933 253 1,8 % 0,271
выражения
ФаМИЛИИ 33 9 0,1 % 0,273
Биологические термины 58 1 0,0 % 0,017
Слова из системного 19683 1027 7,4 % 0,052
словаря -
Названия машин 9018 132 1,0 % 0,015
Мнемоника 14 2 0,0 % 0.143
Библейские названия 7525 83 0,6 % 0,011
Повседневная лексика 3212 54 0,4 % 0,017
Слова из языка идиш 56 0 0.0 % 0.U0O
Названия астероидов 2407 19 0,1 % 0,007
Всего: 62727 3340 24,2 % 0,053
'Вычисляется путем деления числа совпадений на число вариантов Чем больше вари-
антов необходима проверить, тем меньше значение этого показателя
582
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Управление доступом
Одним из методов предотвращения возможности атаки с подбором паролей яв-
ляется запрещение доступа к файлу паролей. Если часть файла, содержащая шиф-
рованные представления паролей, доступны только привилегированным пользова-
телям, нарушитель не сможет прочесть их без пароля привилегированного пользо-
вателя. В [SPAF92] отмечаются некоторые недостатки этой стратегии.
Многие системы, включая большинство систем UNIX, '-называются чувст-
вительными к непредвиденным вторжениям. Получив каким-либо образом
доступ к системе, нарушитель может пытаться получить некоторый список
паролей, чтобы каждый раз входить в систему под разными именами, тем
самым уменьшая риск своего обнаружения. Или какой-то легальный поль
зиватель системы может использовать идентификатор и пароль другого
пользователя, чтобы получить доступ к закрытым данным или нарушить
работу системы.
Один сбой системы защиты может сделать файл паролей открытым для
чтения, в результате чего все учетные записи могут оказаться скомпроме-
тированными.
Некоторые пользователи, имеющие доступ к разным машинам, вводят для
разных учетных записей одни и те же пароли. Если при этом кто-то смо-
жет узнать пароль данного пользователя на одной машине, может быть
скомпрометирована и другая машина.
Таким образом, эффективность стратегии защиты доступа к системе нераз-
дельно связана с требованием выбора пароля, который нелегко разгадать.
Стратегии выбора пароля
Урок, который можно извлечь из результатов двух описанных выше исследо-
ваний (табл. 15.1 и 15.2), заключается в том, что по собственному выбору мно-
гие пользователи создают либо слишком короткие, либо легко угадываемые па-
роли. В то же время, если пользователю предоставить пароль, состоящий из
восьми случайно выбранных алфавитно-цифровых символов, взломать такой па-
роль оказывается практически невозможным. Однако в этом случае для боль-
шинства пользователей запомнить такой пароль будет точно так же невозможно.
К счастью, если даже ограничить пространство таких паролей просто запоми-
нающимися символьными строками, то размер этого пространства все равно ока-
зывается достаточно большим для того, чтобы предотвратить возможность взло-
ма. Таким образом, цель заключается в том, чтобы исключить выбор пользова-
телем легко угадываемого пароля и и то же время сохранить возможность
выбора легко запоминающегося пароля. Решение этой задачи достигается за счет
перечисленных ниже средств.
ь Обучение пользователей.
Генерирование паролей компьютером.
Реактивная проверка пароля.
Упреждающая проверка пароля.
15.1. НАРУШИТЕЛИ
583
Пользователям можно разъяснить важность использования трудно угадывае-
мых паролей и выдать рекомендации по правильному выбору таких паролей.
Стратегия обучения пользователей в большинстве случаев оказывается малоэф-
фективной, особенно, если число пользователей велике- или имеется постоянный
приток и отток пользователей. Одни пользователи будут просто игнорировать
рекомендации, другие же просто не смогут оценить, насколько надежными яв-
ляются выбранные ими пароли. Например, многие (ошибочно) полагают, что за-
пись слова в обратном порядке или изменение последней буквы со строчной на
прописную делают невозможным расшифровку пароля.
Генерирование паролей с помощью компьютера тоже приводит к проблемам.
Если генерировать пароли в виде случайных наборов букв и цифр, пользователи
не смогут их запомнить. Даже если пароли представляют собой более или менее
произносимые слова, пользователи -*се равно, испытывая трудности с запомина-
нием таких слов, будут стремиться записать их. В общем схема генерирования
паролей с помощью компьютера имеет печальный опыт с точки зрения удобства
пользователя. Один из самых лучших автоматических генераторов паролей опи-
сан в документе FIPS PUR 181. Документ содержит не только описание приме-
няемого подхода, но и листинг исходного текста алгоритма на языке С. Алго-
ритм генерирует вполне произносимые слова с помощью комбинации произно-
симых буквосочетаний. Поток символов, формирующей буквосочетания и слова,
обеспечивается генератором случайных чисел.
Стратегия реактивной проверки паролей состоит в том, что система периоди-
чески запускает собственную программу подбора паролей, обнаруживающую
легко угадываемые пароли. Система отменяет все разгаданные пароли и извеща-
ет об этом соответствующих пользователей. Данный подход имеет ряд недостат-
ков. Во-первых, выполнение такой проверки в полном объеме требует от систе-
мы большого расхода ресурсов. Ввиду того что потенциальный противник, кото-
рый сможет получить копию файла паролей, может позволить себе бросить на
решение задачи все ресурсы своего компьютера в течение многих часов или даже
дней, эффективная программа реактивной проверки паролей находится явно в
более проигрышном положении. Кроме того, все имеющиеся пароли остаются
уязвимыми до тех пор, пока программа реактивной пповерки паролей не закон-
чит работу и легко угадываемые пароли не будут выявлены;
Самым многообещающим с точки зрения улучшения зашиты паролей являет-
ся стратегия упреждающей проверки паролей. В этом случае пользователю раз-
решается выбирать пароль по своему усмотрению, но в процессе выбора система
проверяет пароль на соответствие установленным требованиям и, если необходи-
мо, отвергает его. Такой подход основан на убеждении, что под руководством
системы из достаточно широкого пространства допустимых паролей пользова-
тель выберет пароль, который он сможет легко запомнить, но который будет
практически невозможно угадать с помощью перебора значений из словаря.
Проблема упреждающей проверки паролей состоит в необходимости достиже-
ния баланса между стойкостью пароля и приемлемостью пароля для пользовате-
ля. Если система отвергает слишком много паролей, пользователи жалуются,
что выбрать подходящий пароль слишком трудно. Если же система использует
для проверки пригодности паролей слишком простой алгоритм, то это только
584
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
дает взломщику возможность усовершенствовать свою программу подбора паро-
лей. В оставшейся части раздела мы обсудим возможные подходы к реализации
упреждающей проверки паролей.
Первый подход состоит в создании простой системы контроля за соблюдением
определенных правил. Например, можно потребовать чтобы соблюдались сле-
дующие правила.
Все пароли должны содержать не менее восьми символов.
Среди первых восьми символов должны присутствовать как минимум одна
строчная буква, одна прописная буква, одна цифра и один знак пунктуации.
Эти правила должны сопровождаться соответствующими инструкциями поль-
зователю. Хотя данный подход лучше простого обучения пользователей, он не
всегда может остановить взломщика паролей. Такая схема дает нарушителю ин-
формацию о том, какие пароли не следует проверять, но в конечном итоге не
исключает возможности успешного проведения соответствующей атаки.
Другой возможностью является простое создание большого словаря потенци-
ально "плохих” паролей. При выборе пользователем пароля система проверяет,
не попадает ли выбранный пароль в "черный список”. Данный подход чреват
следующими двумя проблемами. .»-•->
Проблема объема. Чтобы описанный выше подход был достаточно эффек-
тивным, словарь должен быть достаточно большим. Например, файл сло-
варя, использовавшегося для исследований в Университете Падью
[SPAF92a], имел объем более 30 Мбайт.
Проблема времени. Время поиска в большом словаре также может ока-
заться слишком большим. Кроме того, для проверки возможных модифи-
каций слов необходимо либо включить эти модификации в словарь, что
сделает его вообще огромным, либо тратить дополнительное время на про-
верку модификаций слов с помощью специальных алгоритмов.
На сегодняшний день перспективными представляются две методики прове-
дения эффективной и достаточна., надежной упреждающей проверки паролей.
Одна из них строится на основе использования марковской модели генерирова-
ния угадываемых паролей [DAVI93J На рис. 15.2 показана упрощенная версия
такой модели. Эта модель задает язык, алфавит которого состоит из трех симво-
лов. Состояние системы в любой момент идентифицируется последним выбран-
ным символом. Коэффициенты переходов из одного состояния в другое задаются
вероятностями следования одних символов за другими. Например, вероятность
того, что следующей буквой будет Ь при условии, что текущей является буква а,
в данной ситуации равна 0.5.
В общем случае марковская модель задается четырьмя значениями
(тп, А, Т, А], где т обозначает число состояний модели, А— пространство со-
стояний, Т — матрицу вероятностей переходов, a k — порядок модели. Для мо-
дели порядка А вероятность перехода к тому или иному символу алфавита зави-
сит от значений й предыдущих символов. На рис. 15.2 показана схема простой
модели первого порядка.
15.1. НАРУШИТЕЛИ
585
0.0
М (3, {а, Ь, с] ,Т, 1 1 ,гд«-
0.0 0.5 0.5'
Т- 0.2 0.4 0 4
1.0 0.0 '.О
пример строки. вероятной атя итого языка. вЬЬсасаЬа
пример строки, не являющейся вероят ной для этого языка; васесЬааа
Рис. 15.2. Пример марковской модели
В упомянутой выше работе строится и используется модель второго порядка.
Сначала создается словарь легко угадываемых паролей. После этого вычисляется
матрица переходов следующим образом.
1. Определяется матрица частот f, где f(i, j, k) соответствует числу появле-
ний триграмм, состоящих из i-ro, j-ro и k-го символов. Например, пароль
parsnips содержит триграммы par, ars, rsn, snl, nip и ips.
2. Для каждой биграммы ij вычисляется f(/, j, <*=) как общее число триграмм,
начинающееся с у. Например, f(a, b,«.) представляет собой общее число
триграмм вида aba, abb, abc и т.д.
3. Элементы матрицы Т вычисляются по формуле
T(i, j, k) =
го,}, fr)
f(i. j. °°)
В результате получается модель, отражающая структуру слов в словаре. С
помощью этой модели вопрос “Является ли данный пароль плохим?” трансфор-
мируется в вопрос “Порождается ли данная строка (т.е. пароль) с помощью дан-
ной модели Маркова?”. Для введенного пароля можно найти вероятности пере-
ходов для всех триграмм. Затем с помощью стандартных статистических тестов
586
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
можно выяснить, оказывается ли данный пароль строкой, вероятной или неве-
роятной для данной модели. Пароли, которые с определенной долей вероятности
порождаются данной моделью, отвергаются. Авторы утверждают, что для моде-
ли второго порядка получаются хорошие результаты. Предложенная ими систе-
ма находит практически все пароли из словаря и, вместе с тем, не отбрасывает
слишком много потенциально хороших паролей, оставаясь достаточно дружест-
венной по отношению к пользователю.
Совершенно другой подход предложил Спаффорд (Spafford) [SPAF92a,
SPAF92bJ. Этот подход основан на использовании фильтра Блума (Bloom)
(BLOO70J. Сначала давайте рассмотрим принцип работы этого фильтра. Фильтр
Блума порядка Л состоит из k независимых функций хэширования Н,(х), Нг(х),
.... Н,(х), где каждая функция отображает пароль в значение хэширования из
диапазона от 0 до N -1. Таким образом,
H.(Xj = p l<i<k,l<j<D, 0<y<N-l,
где
X, — у-е слово в словаре паролей,
— число слов в словвре паролей.
Далее к словарю применяется следующая процедура.
1. Определяется таблица хэширования из N битов, все биты в которой уста-
навливаются равными 0.
2. Для каждого пароля вычисляется k соответствующих значений хэширова-
ния, и соответствующие биты в таблице хэширования устанавливаются
равными 1. Так, если некоторых i и j получается Н,(Х.) - 67, то шестьде-
сят седьмой бит таблицы хэширования устанавливается равным 1. (Если
значение этого бита уже было равно 1, то оно не меняется.)
Когда программе проверки предъявляется новый пароль, она вычисляет k
значений хэширования для этого пароля. Если все соответствующие биты табли-
цы хэширования оказываются равными 1, пароль отвергается. Все пароли из
словаря будут отвергнуты. Однако будут наблюдаться и некоторые '‘ошибочные
срабатывания” (т.е. будут отвергнуты и некоторые пароти, не включенные в
словарь, но порождающие отвергающую таблицу хэширования). Чтобы убедить-
ся в этом, рассмотрим схему с двумя функциями хэширования. Предположим,
что в словаре значатся пароли undertaker и hulkhogan, но нет пароля xG%ffjj98.
Допустим также, что
Н,(undertaker) = 25 , H,(bulkhogan) - 83, H,(xG%#jj98) = 665,
Ha(undertaker) = 998 , Hs(hulkhogan) = 665, H,(xG% #jj98) = 998.
Если системе будет предложен пароль xG%#jj98, система его отвергнет, не-
смотря на то, что его нет в словаре Если такие ошибочные срабатывания будут
наблюдаться слишком часто, пользователям будет трудно выбирать пароли. Сле-
довательно, необходимо выбрать такую схему хэширования, при которой оши
бочные срабатывания были бы сведены к минимуму. Можно доказать, что веро-
ятность ошибочного срабатывания приблизительно равна
Р = (1 -е *а/Л')* = (1-е‘*/л)*
15.1. НАРУШИТЕЛИ
587
или, что то же самое,
ln(l -P'f") ’
где
k — число функций хэширования,
N — число битов в таблице хэширования,
D — число слов в словаре.
R “ N/D — отношение размера таблицы хэширования (в битах) к раз-
меру словаря (в словах).
На рис. 15.3 изображен график Р как функция от Я для различных значений k.
Предположим, что у нас есть словарь, состоящий из 1 млп слов. Необходимо,
чтобы не указанные в словаре слова отбрасывались с вероятностью 0.01. Если
выбрать шесть функций хэширования, требуемым отношением будет Я = 9.15.
Соответствующая таблица хэширования должна содержать 9,6x10' битов, что
означает необходимость выделить примерно 1,2 Мбайт для ее хранения. Для
сравнения хранение всего словаря потребовало бы около 8 Мбайт. Таким образом
достигнут коэффициент сжатия порядка 7. Более того, проверка пароля предпо-
лагает прямое вычисление всего шести функций хеширования, не зависящих от
размеров словаря, тогда как использование для проверки полного словаря пред-
полагает долгие операции поиска.1
Обнаружение нарушителей
Даже самая хорошая система предотвращения вторжений иногда не срабатыва-
ет. Поэтому второй линией защиты должна стать система выявления нарушений,
что в последнее время привлекает внимание все большего числа исследователей.
Интерес к этим вопросам обусловлен целым рядом причин, включая следующие
1. Если нарушение будет обнаружено достаточно быстро, нарушителя можно
будет идентифицировать и лишить доступа к системе прежде, чем он успе-
ет повредить или скомпрометировать данные. Даже если нарушение будет
зафиксировано слишком поздно для того, чтобы успеть воспрепятствовать
действиям нарушителя, чем раньше нарушение будет обнаружено, тем
меньшим будет ущерб и тем быстрее будет восстановлена система.
2. Эффективная система обнаружения нарушений сама по себе может слу-
жить в качестве отпугивающего средства, отчасти выполняя функции сис-
темы предотвращения вторжений.
3. Обнаружение нарушений позволяет собирать информацию о методах втор-
жения, которую впоследствии можно использовать для усиления системы
предотвращения вторжений.
1 И модель Маркова, и фильтр Блума опираются на методы теории вероятностей. В модели
Маркова допускается небольшая вероятность того, что некоторые пароли из словаря не будут
отвер{нуты, и небольшая вероятность того, что будут отвергнуты пароли, которых в словаре
нет В случае использования фильтра Блум я имеется только небольшая вероятность того, что
будут отвергнуты пароли, которых нет в словаре. Здесь мы снова видим, что использование ве-
роятностного подхода упрощает решение задачи (см. сноску 1 в глав« 12).
588
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
1
о
о
X
I
а
= 0.01
0-001
'Z фкихиии хэширования
6 функций хэширования
4 функции кэширования
15 20
Отношение размера таблицы хэширования (в битах)
к размеру словаря (в словах)
Рис. 15.3 Графики характеристик фильтра Блума
Обнаружение нарушений основывается на предположении, что поведение на-
рушителя отличается от поведения легального пользователя и соответствующие
различия можно представить в количественном выражении. Конечно же, нельзя
ожидать, что мы сможем наблюдать совершенно разное использование ресурсов
нарушителем в сравнении с легальным пользователем. Правильнее предполо-
жить, что в иоведении и того, и другого будут общие черты.
На рис. 15.4 в очень абстрактном виде иллюстрируется' природа задачи,
стоящей перед разработчиком системы обнаружения нарушений Хотя типичное
поведение нарушителя и отличается от типичного поведения легального пользо-
вателя, характеризующие их поведение области все же пересекаются. Таким об-
разом, чем более грубо будет интерпретироваться поведение нарушителя, тем
выше будет вероятность “ошибочных срабатываний”, т.е. признания легальных
пользователей нарушителями. В то же время стремление избавиться от ошибоч-
ных срабатываний путем более строгой интерпретации поведения нарушителя
ведет к “ошибочным несрабатываниям”, т.е. ситуациям, когда нарушители ос-
таются невыявленными. Таким образом, в практике обнаружения нарушителей
присутствует элемент искусства компромисса.
В работе Андерсона (Anderson) [ANDE80] в качестве постулата принято пред-
положение о том, что отличить имитатора от легального пользователя можно с
достаточной степенью точности. Характеристика поведения может быть установ-
15.1. НАРУШИТЕЛИ
589
Плотность
распределения
пользователя
Рис. 15.4 Профили характеристик поведения нарушителей и легальных Поль
зователей
лена на основе наблюдения за действиями пользователя в прошлом, и при этом в
поведении указанных типов пользователей заметны значительные отклонения.
Андерсон полагает, что обнаружение правонарушителя (легального пользовате-
ля, выполняющего несанкционированные операции) является более сложной за-
дачей, поскольку в данном случае ненормальное поведение может почти не от-
личаться от нормального. В результате Андерсом заключает, что выявить такие
нарушения с помощью одного лишь поиска аномалий поведения невозможно.
Тем не менее, поведение правонарушителя можно обнаружить, если правильно
определить класс условий, при которых происходит несанкционированное ис-
пользование ресурсов. Наконец, выявление тайных пользователей, кажется, во-
обще выходит за рамки одних лишь методов автоматического обнаружения. Эти
выводы, сделанные еще в 1980 году, не потеряли своего значения и сегодня.
В [PORR92] указываются следующие подходы к решению проблемы обнару-
жения нарушений.
1. Обнаружение на базе статистических отклонений. Предусматривает сбор
данных, характеризующих поведение легальных пользователей, в течение
определенного времени. Затем эти данные анализируются с применением
статистических методов, чтобы с высокой степенью точности определить,
соответствует поведение определенного пользователя поведению легального
пользователя или нет.
690
ГЛАВА 15- НАРУШИТЕЛИ И ВИРУСЫ
• Использование пороговых значений. Данный подход предполагает опре-
деление не зависящих от конкретного пользователя пороговых значе-
ний, характеризующих частоту возникновения различных событий.
• Использование профиля поведения. Создается профиль активности поль-
зователя и с помощью этою профиля выявляются отклонения в поведе-
нии пользователя, регистрирующегося в системе под данным именем.
2. Обнаружение на базе правил. Предполагает разработку набора правил, на
основе которых принимается решение о том, что данный гип поведения
является поведением нарушителя.
• Выявление аномалий. Разрабатываются правила, позволяющие обнару-
жить отклонения от наблюдавшегося ранее поведения
• Идентификация вторжения. Подход на основе использования эксперт-
ной системы, выявляющей подозрительное поведение.
По сути, в подходе, основанном статистических методах, делается попытка
определить нормальное или ожидаемое поведение, тогда как в подходе, основан-
ном на правилах, делается попытка выявить истинное поведение.
Относительно типов нарушителей, определенных в начале главы, выявление
статистических аномалий эффективно против имитаторов, которые вряд ли ста-
нут подражать поведению легального пользователя, под именем которого они
входят в систему. В то же время эта методика практически неприменима в слу-
чае правонарушителей. Против такого типа атак более эффективен подход, осно-
ванный на использовании правил, позволяющих распознать отдельные события
и их последовательности, которые в определенном контексте означают вторже-
ние. На практике в системе реализуется некоторая комбинация обоих подходов,
что обеспечивает эффективное противостояние широкому спектру нарушений.
Контрольные записи
Основным средством обнаружения нарушений является контрольная запись
(audit record). Должна выполняться запись некоторых выполняемых пользовате-
лями операций для последующего применения этих записей в качестве исходных
данных системы обнаружения нарушений. Чаще всего применяют следующие
две стратегии.
Системные контрольные записи (native audit records). Практически все
многопользовательские операционные системы содержат программы для
сбора информации о действиях, выполняемых пользователями Преимуще-
ство использования этой информации заключается в том, что для этого не
требуется никакого дополнительного программного обеспечения. Недоста-
ток связан с тем, что системные контрольные записи могут не содержать
необходимой информации или могут содержать ее в неподходящей форме.
* Специальные контрольные записи (detection-specific audit records). Могут
быть разработаны и применяться специальные средства сбора информации,
генерирующие записи, содержащие только данные, необходимые для рабо-
ты системы обнаружения нарушений Преимуществом такого подхода яв-
15.1 НАРУШИТЕЛИ
591
ляется независимость от поставщика системы и переносимость на разные
платформы. В качестве недостатка следует отметить получающуюся в ре-
зультате дополнительную нагрузку на систему ввиду необходимости вы-
полнения двух программ ведения контрольных записей.
Хорошим примером специальных средств создания контрольных записей яв
ляется система, разработанная Дороти Деннинг (Dorothy Denning) [DENN87J,
Каждая контрольная запись содержит следующие поля.
* Subject (субъект). Инициатор действия Субъектом обычно является поль-
зователь терминала, но это может быть и процесс, выполняемый для поль-
зователя или группы пользователей. Все действия совершаются по коман-
дам, исходящим от субъекта. Субъекты могут быть сгруппированы ь клас-
сы по уроьням доступа, и эти классы могут пересекаться.
Action (действие). Операция, выполняемая субъектом по отношению к
объекту, например регистрация входа в систему, чтение, ввод-вывод дан-
ных, выполнение программ.
Object (объект). Рецепторы действий. Примерами объектов являются файлы,
программы, сообщения, записи, терминалы, принтеры, а также структуры,
созданные пользователями или программами. Когда рецептором действия
является субъект (например, при получении электронной почты), этот субъ-
ект гоже рассматривается в качестве объекта. Объекты могут быть сгруппи-
рованы по типам и в соответствии с типом объекта и условиями окружения.
Например, действия в базе данных могут регистрироваться как на уровне
базы данных в целом, так и на уровне отдельных записей.
Exception-Condition (исключительная ситуация). Указывает тип исключи-
тельной ситуации, если она возникла при выполнении команды возврата.
Resource-Usage (использование ресурса). Список количественных показа-
телей, в котором каждый элемент указывает объем использования того
или иного ресурса (например, число напечатанных или отображенных на
экране строк, число прочитанных или созданных записей, время использо-
вания процессора, числи задействованных каналов ввода-вывода, длитель-
ность сеанса связи).
Time-stamp (метка даты-времени). Уникальная метка даты и времени,
указывающая момент выполнения действия.
Большинство действий, выполняемых пользователем, складываются из набо-
ра элементарных операций Например, копирование файла означает выполнение
команды пользователя, предполагающей получение права доступа и создания
копии плюс чтение из одного файла, плюс запись в другой файл. Рассмотрим
команду
COPY GAME.EXE ТС <Library>GAME.EXE,
инициированную пользователем Smith с целью копирования выполняемого фай-
ла GAME из текущего каталога в каталог <Libraxy>. В этой ситуации могут ге-
нерироваться следующие контрольные записи.
592
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
| Suit th execute <Library>COPY.EXE 0 CPU=00002 11058721678 |
| Smith read <Smith>GAME.EXE 0 RECORDS=0 11058721679 |
Smith execute <Library>COPY.EXE write -viol RECORDS=0 11058721680
В нашем примере процесс копирования был завершен аварийно, поскольку
пользователь Smith не имеет права записи в каталог <Library>.
Разложение действий пользователя на элементарные операции имеет сле-
дующие преимущества.
1. Поскольку объекты в системе являются защищаемыми сущностями, ис-
пользование элементарных операций позволяет проследить за всеми дейст-
виями, выполняемыми с данным объектом. Система может обнаруживать
попытки нарушения контроля доступа (при отсутствии отклонений от
нормы извращаемых исключительных ситуаций) и выявлять успешные
случаи таких нарушений (при отсутствии отклонений от нормы в наборе
объектов, доступных данному субъекту).
2. Принцип создания контрольных записей для каждого объекта и каждого
действия упрощает модель и ее реализацию.
3. Ввиду простой и единообразной структуры специальных контрольных за-
писей, относительно просто получить соответствующую информацию или
хотя бы ее часть путем копирования из имеющихся системных контроль-
ных записей в специальные контрольные записи.
Обнаружение на базе статистических отклонений
Как уже упоминалось, методы обнаружения статистических аномалий можно
разделить на две категории: обнаружение по пороговым значениям (threshold de-
tection) и обнаружение по профилю поведения (profile-based detection). Обнару-
жение по пороговым значениям предполагает ведение учета частоты возникнове-
ния событий определенного типа за определенный интервал времени. Если час-
тота превышает значение, которое считается разумным, система рассматривает
этот инцидент как вторжение нарушителя.
Анализ пороговых значений в чистом виде оказывается слишком грубым и
неэффективным методом выявления даже в случае атак средней сложности. Не-
обходимо правильно определить и пороговые значения, и временные интервалы.
Поскольку разные пользователи работают по-разному, простое использование
пороговых значений будет приводить либо к многочисленным ошибочным сраба-
тываниям (false positive), либо к многочисленным ошибочным несрабатываниям
(false negative). Тем не менее, простой детектор превышения пороговых значе-
ний может быть полезным в совокупности с другими более сложными методами.
Обнаружение по профилю поведения строится на изучении поведения пользо-
вателя или группы пользователей, наблюдавшегося в прошлом, и сравнении это-
го поведения с текущим поведением на предмет выявления значительных откло-
нений. Профиль может состоять из набора параметров, так что отклонения по
одному из параметров может быть недостаточно для того, чтобы генерировать
системную тревогу-
15.1 НАРУШИТЕЛИ
593
Данный подход опирается на анализ содержимого контрольных записей. Кон
трильные записи обеспечивают ввод для функции обнаружения нарушений сле-
дующим образом. Во-первых, разработчик должен решить, какое число парамет-
ров необходимо отслеживать в поведении пользователя. Чтобы выявить профиль
активности типичного пользователя, можно провести анализ контрольных заии
сей на протяжении некоторого периода времени. Во-вторых, содержимое теку-
щих записей служит в качестве исходных данных, по которым выявляются на-
рушения. Таким образом, предлагаемая модель выявления нарушений предпола-
гает анализ поступающих контрольных записей поведения на предмет
отклонения этого поведения от обычного.
Примерами параметров, которые оказываются полезными при выявлении на-
рушений по профилю поведения, являются следующие.
Счетчик (counter). Неотрицательное целое число, значение которого можно
увеличивать, но не уменьшать, до тех пор, пока это значение не будет пе-
реустановлено в результате действия программы управления. Обычно под-
счет наблюдавшегося числа определенных событий ведется в течение неко-
торого промежутка времени. Примерами могут быть число попыток входа
в систему, предпринятых пользователем в течение одного часа, число вы-
зовов определенной команды в течение сеанса работы пользователя или
число неправильно введенных паролей в течение одной минуты.
Датчик (gauge). Неотрицательное целое число, значение которого может
как увеличиваться, так и уменьшаться. Обычно датчик предназначен для
регистрации текущего значения некоторой характеристики объекта. При-
мерами являются число логических соединений, установленных приложе-
нием пользователя, или число исходящих сообщений, поставленных в оче-
редь пользовательским процессом.
Интервальный таймер (interval timer). Длина периода времени между
двумя последовательными событиями. Например, длина периода времени
между двумя последовательными попытками регистрации по одной и той
же учетной записи.
Показатель использования ресурса (resource utilization). Объем потребле-
ния ресурса за определенный промежуток времени. Примерами являются
числе страниц, отпечатанных за время сеанса работы, или общее время
выполнения некоторой программы.
С этими количественными показателями можно использовать самые разные
тесты, чтобы выяснить, не выходит ли текущая деятельность пользователя за
рамки установленных границ. В [DENN87] приводится следующий список мето-
дов, которые при этом можно использовать.
Метод средних значений и среднеквадратических отклонений.
Метод многомерной модели.
Метод марковских процессов.
Метод временных рядов.
Операторный метод.
694
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Самый простой статистический тест заключается в рассмотрении средних зна-
чений и средпекяадратических отклонений параметров за определенный период
времени. Результаты характеризуют среднее поведение и его отклонение от сред-
него. Использовать средние значения и среднеквадратические отклонения можно
для широкого спектра счетчиков, таймеров и показателей использования ресурсов.
Но значения этих параметров сами по себе обычно дают слишком грубую оценку,
чтобы использовать их непосредственно в целях обнаружения вторжения.
Метод многомерной модели основывается на использовании Корреляции меж-
ду двумя или несколькими переменными. Поведение нарушителя можно харак-
теризовать с большей надежностью, рассматривая такие корреляции (например,
времени использования процессора и ресурсов или частоты входа в систему и
длительности сеанса работы).
Метод марковских процессов служит для определения вероятностей перехо-
дов между различными состояниями. Например, эта модель позволяет выяснить
характер связи между определенными командами.
Метод временных рядов основан на анализе интервалов времени с целью об-
наружения событий, которые проходят либо слишком быстро, либо слишком
медленно. При этом для того, чтобы охарактеризовать временные аномалии, то-
же можно применить различные статистические преобразования.
Наконец, операторная модель базируется, скорее, на определении того, что
считается выходящим за рамки обычного, а не на автоматическом анализе со-
держимого сохраненных контрольных записей. Обычно устанавливаются четко
определенные Гранины, и выход за пределы этих границ рассматривается как
подозрение на вторжение в систему. Этот подход лучше всего работает тогда, ко-
гда поведение нарушителя характеризуется определенными типами его дейст-
вия. Например, большое число попыток входа в систему и регистрации за ко-
роткий период времени позволяет сделать вывод о попытке вторжения.
В качестве примера использования рассмотренных выше параметров и моде-
лей рассмотрим табл. 15.3, в которой собраны сведения о различных критериях,
учитываемых в системе обнаружения нарушений IDES, используемой в Стэн-
фордском исследовательском институте (SRI — Stanford Research Institute)
(DENN87, JAVI91, LUNT88].
Главное преимущество использования статистических профилей состоит в
том, что для их применения не требуется заранее знать обо всех изъянах в сис-
теме защиты. Программа-детектор выясняет, какое поведение является
“нормальным", а затем выявляет отклонения. Данный подход не основан на ха-
рактеристиках системы и сведениях о ее уязвимости, поэтому соответствующая
реализация легко переносится с одной системы на другую.
Обнаружение на базе правил
Методы обнаружения нарушений, основанные на использовании правил,
предполагают отслеживание происходящих в системе событий и применение на-
бора правил, по которым можно вынести заключение, является ли данное пове-
дение подозрительным или нет. Грубо говоря, все такие методы можно разде-
лить на два класса; методы, основанные на выявлении аномалий, и методы,
идентифицирующие преодоление защиты.
15.1. НАРУШИТЕЛИ
595
Таблица 15.3. Критерии, используемые для обнаружения нарушений
Критерий Модель Тип выявляемых нарушений
Вход в сип ему и сеанс работы пользователя
Частота входов в систе- му по дням и часам Средние значения и среднеквадратические отклонения Нарушители, вероятнее всего, пы- таются войти в систему в нерабочее время
Частота входов в систе- му из разных мест Средние значения и среднеквадратические отклонения Нарушители могут входить в сис- тему из таких мест, где соответст- вующий пользователь бывает очень редко или не бывает никогда
Время, прошедшее с момента последнего входа в систему Операторная модель Попытка вторжения в систему по “ничейной” учетной заимей
Длительность сеансов работы Средние значения и среднеквадратические отклонения Значительные отклонения могут означать работу имитатора
Объем данных, пересы- лаемых в определенное место Средние значения и среднеквадратические отклонения Слишком большие объемы данных, передаваемые на удаленные узлы, могут означать утечку важной ин- формации
Показатель использова- ния ресурсов во время сеанса Средние значения и среднеквадратические отклонения Выходящие за рамки обычных по- казатели загрузки процессора или устройств в вода-вывода могут озна- чать работу нарушителя
Число вводов непра- вильных значений па- роля при регистрации Операторы, »я модель Попытки проникновения в систему с помощью угадывания пароля
Неудачные попытки входа в систему с опре- деленных терминалов Операторная модель Попытки вторжения в систему
Выполнение команд или программ
Частота запуска программ Средние значения и среднеквадратические отклонения Может указывать на присутствие на- рушителя, который пробует доступ- ные ему команды, или же на легаль- ного пользователя, получившего дос- туп к привилегированным командам
Использование ресурсов программами Средние значения и среднеквадратические отклонения Выходящее за рамки обычного зна- чение может означать внедрение ви- руса или троянского коня, которые в фоновом режиме выполняют опера- ции, увеличивающие загрузку систе- мы ввода-вывода или процессора
Число отказов выпол- нения Операторная модель Может означать попытки легально- го пользователя получить привиле- гии более высокого уровня
596
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Окончание табл. 15.3
Доступ к файлам
Частота выполнения операций чтения, запи- си, создания, удаления Средние значения и среднеквадратические отклонения Выходящая за рамки обычной час- тота операции доступа к файлам для чтения и записи может озна- чать присутствие имитатора или просмотр ресурсов
Чтение имеющихся за- писей и сохранение ин- формации Средние значения и среднеквадратические отклонения Выходящие за рамки обычных по- казатели могут означать попытки получить важные данные путем сбора информации и логических заключений
Подсчет неудачных по- пыток чтения, записи, создания, удаления Операторная модель Могут обнаруживать пользователей, которые постоянно пытаются полу- чить несанкционированный доступ к файлам
Подсчет выхода за пре- делы файловых ресурсов Операторная модель
Выявление аномалий в данном случае похоже по подходам и возможностям
на методы выявления статистических аномалий. При использовании базы пра-
вил анализ сохраненных контрольных записей проводится с целью выявления
характеристик типичного поведения и автоматического генерирования правил,
описывающих такое поведение. Правила могут представлять поведенческие шаб-
лоны пользователей, программ, привилегий, временных интервалов, терминалов
и т.п. Затем наблюдается текущее поведение и каждая транзакция проверяется
-о набору правил на предмет ее соответствия полученным ранее поведенческим
шаблонам.
Как и при обнаружении статистических аномалий, выявление аномалий, ос-
нованное на правилах, не требует знания уязвимых мест защиты системы. Схема
опирается на наблюдение за поведением пользователей и на предположение о
том, что в будущем это поведение не должно существенно измениться. Чтобы
этот подход оказался эффективным, потребуется достаточно большая база пра-
вил. Например, схема, описанная в {VACC89J, требует использования от 1(У до
10* правил.
Идентификация преодоления защиты основана совершенно на другом подхо-
де. связанном с технологией экспертных систем. Основной чертой таких систем
является использование правил для идентификации известных видов вторжений
или вторжений, построенных на известных недостатках системы защиты. Мож-
но определить и правила для идентификации подозрительного поведения, даже
если поведение не выходит за рамки типичного. Обычно правила, применяемые
в таких системах, зависят от конкретного типа машины и операционной систе-
мы. Кроме того, такие правила генерируются, скорее, экспертами, а не в резуль-
тате автоматического анализа контрольных записей. Чаще всего выполняется
опрос системных администраторов и аналитиков системы защиты, чтобы в ре-
зультате получить пакет известных сценариев и событий, несущих угрозу безо-
15.1 НАРУШИТЕЛИ
597
пасности защищаемой системы.7 Таким образом, успех данного подхода зависит
от профессионализма тех, кто участвует в выработке системы правил.
Простой пример типов правил, которые могут при этом использоваться, мож-
но найти в системе NDIX — одной из первых систем эвристических правил, с
помощью которых можно определить степень подозрительности той или иной
деятельности [BAUE88J. Примеры таких эвристических правил описаны ниже
1. Пользователи не должны читать файлы, находящиеся в личных каталогах
других пользователей.
2. Пользователи не имеют права записывать информацию в файлы, принад-
лежащие другим пользователям.
3. Пользователи, которые постоянно работают с системой, часто при новом
входе в систему открываю! те же файлы, которые они использовали раньше.
4. Пользователи редко открывают дисковые устройства напрямую, а используют
для этого утилиты высшего уровня, предлагаемые операционной системой.
5. Пользователи не должны открывать несколько сеансов работы с одной и
той же системой одновременно.
6. Пользователи не копируют системные программы.
Схема идентификации вторжений, реализованная в системе IDES, основана
на описанной выше стратегии. Контрольные записи по мере их появления про-
веряются по базе правил. Если обнаруживается совпадение, происходит увеличе
ние рейтинга подозрения (suspicion rating) пользователя. Если совпадения на
блюдаются для достаточно большого числа правил, рейтинг превышает заданный
порог и система генерирует отчет об обнаруженной аномалии.
Подход IDES основан на проверке контрольных записей. Слабой стороной
этого подхода является недостаточная гибкость. Например, можно реализовать
такой сценарий вторжения, когда система генерирует ряд последовательностей
контрольных записей, слабо или почти незаметно отличающихся от других. При
этом уложить такие отклонения в рамки имеющихся правил совсем непросто.
Другой метод заключается в разработке модели более высокого уровня, не зави-
сящей от данных контрольных записей. Примером такой модели является мо-
дель переходов состояний, известная под названием USTAT [ILGU93]. Модель
USTAT имеет дело с действиями в целом, а не специальными действиями, реги-
стрируемыми с помощью системы контроля UNIX. Модель USTAT реализована в
системе SunOS, где она обеспечивает создание контрольных записей для 239 ти-
пов событий. Из всех контролируемых событий 28 используются препроцессо-
ром, отображающим их в 10 действий общего характера (табл 15.4). На основе
только этих действий и параметров, необходимых для каждого из этих дейст-
вий, строится диаграмма переходов, характеризующая подозрительное поведе-
ние. Поскольку целый ряд контролируемых событий отображается в небольшой
набор действий, процесс выработки правил значительно упрощается Кроме того,
диаграмма переходов состояний модели легко модифицируется с получением но-
вых сведений о поведении нарушителей.
2 _ -
В таких опросах могут участвовать даже бывшие и настоящие взломщики систем, которые
согласны поделиться свиим опытом за определенную плату [FREE93).
59S
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Таблица 15.4. Действия USTAT и типы событий SunOS
Действие iJSTAT Тип события SunOS
Read open_r, open _rc, open_rtc, open_rwc, open_rwtc, open_rt, upen_rw, open_rwt
Write truncate, ftruncate, creat, open_rtc, open_rwc, open_rwtc. open_rt, open_rw, open_rwt, upenw, open wt, open_wc, open_wct
Create inkdir, creat, open_rc, open_rtc, open_rwc, open.rwtc, open_wc, open_wtc, mknod
Delete nndir, unlink
Execute exec, execve
Exit exit
Modify_ Owner chown, fctiown
Modify_Perm chtnod, fchmod
Rename rename
Hardltnk link
Распределенные системы обнаружения нарушений
До недавнего времени все работы по созданию системы обнаружения наруше-
ний были сосредоточены вокруг отдельно взятой вычислительной системы. Од-
нако типичной организации требуется обеспечить защиту распределенного ком-
плекса вычислительных узлов, объединенных локальной сетью или средствами
межсетевого взаимодействия. Конечно, можно защитить каждый отдельный
узел, используя в каждом из них свою систему обнаружения нарушений, но бо-
лее эффективная защита достигается путем координации и взаимодействия сис-
тем обнаружения нарушений в сети.
В работе [PORR92] Поррас (Porras) формулирует следующие главные вопро-
сы, возникающие при проектировании распределенной системы обнаружения
нарушений.
Распределенной системе обнаружения нарушений, возможно, придется
иметь дело с разными форматами контрольных записей. Е гетерогенной
среде разные системы будут использовать разные системы создания кон-
трольных записей, поэтому для обнаружения нарушений эти системы мо-
гут иметь разные форматы для создаваемых контрольных записей.
Некоторые узлы сети должны быть местом накопления и анализа данных,
поступающих к ним от всех других систем в сети. Поэтому либо сырые
контрольные данные, либо уже обработанные данные должны будут пере-
даваться по сети. Значит, необходимо обеспечить целостность и конфиден-
циальность этих данных. Целостность не позволит нарушителю маскиро-
вать свою деятельность путем изменения передаваемой контрольной ин-
формации. Конфиденциальность требуется потому, что контрольная
информация может оказаться очень важной с точки зрения поддержания
работоспособности системы.
15.1. НАРУШИТЕЛИ
599
• Система может иметь как централизованную, так и децентрализованную
архитектуру. В первом случае предполагается наличие одного центра, где
накапливаются и анализируются все контрольные данные Это упрощает
задачу согласования поступающих отчетов, но создает потенциально
“узкое место”, отказ в котором может привести к выходу из строя всей
системы. При использовании децентрализованной архитектуры имеется
несколько аналитических центров, однако при этом требуется координиро
вать их деятельность и организовать обмен информацией между ними
Хорошим примером распределенной системы обнаружения нарушений явля-
ется система, разработанная в отделении Калифорнийского университета в Дэви
се (University of California at Davis) [HEBE92, SNAP91]. На рис. 15.5 показана
общая архитектура этой системы, состоящей из следующих трех основных ком-
понентов.
• Модуль агента узла. Модуль сбора контрольной информации, выполняе-
мый в фоновом режиме в системе, за которой ведется наблюдение. Целью
модуля является сбор данных об имеющих отношение к защите узла собы-
тиях и передача этих данных модулю центрального администратора.
Модуль агента диспетчера локальной сети. Работа этого модуля аналогич-
на работе модуля агента узла, но данный модуль анализирует поток дан-
ных локальной сети, тоже передавая полученные данные модулю цен-
трального администратора.
Модуль центрального администратора. Принимает сведения, поступающие
от агентов узлов и агента диспетчера локальной сети, обрабатывает эти
сведения, выясняя их корреляцию и пытаясь обнаружить нарушение.
Схема разрабатывалась с тем, чтобы быть независимой от операционной сис-
темы и конкретных реализаций системы контроля. На рис. 15.6 [SNAP91] пока-
зана схема общего подхода, применявшегося в этом случае. Агент просматривает
каждую контрольную запись, порожденную системой регистрации контрольных
параметров соответствующей системы. Записи, не представляющие интереса с
точки зрения защиты, отфильтровываются. Оставшиеся записи преобразуются в
стандартный формат контрольной записи ведущего узла (HAR — host audit rec-
ord). Затем использующий напор шаблонов логический модуль анализирует по-
лученные записи на предмет выявления подозрительных действий. Прежде всего
агент проводит поиск в записях событий, представляющих интерес с точки зре-
ния безопасности независимо от их связи с прошлыми событиями. Примерами
таких событий являются отказы в доступе к файлам, доступ к системным фай-
лам и изменение параметров контроля доступа к файлам. На следующем уровне
поиска агент ищет последовательности событий, соответствующих уже извест-
ным попыткам взлома (так называемые сигнатуры). Наконец, агент пытается
найти аномалии поведения отдельных пользователей, основываясь на имеющем-
ся для каждого пользователя профиле, содержащем сведения о числе выполняе-
мых программ, числе файлов, к которым был получен доступ, и т.п.
600
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Диспетчер
локальной
Рис. 15.5. Архитектура распределенной системы обнаружения нарушений
Контрольная
информация ОС
Рис. 15.6. Архитектура агента
15.1. НАРУШИТЕЛИ
601
Если обнаруживается подозрительная активность, центральному администрато-
ру направляется извещение. Модуль центрального администратора включает экс-
пертную систему, способную обнаруживать взаимозависимость полученных дан-
ных. Модуль центрального администратора может также запросить у отдельных
узлов копии их записей HAR, чтобы сравнить их с записями других агентов.
Модуль агента диспетчера локальной сети тоже предоставляет собранные им
данные модулю центрального администратора. Агент диспетчера локальной сети
контролирует соединения между узлами, используемые службы и уровень тра-
фика. Этот агент регистрирует все заметные события, например резкое измене-
ние загрузки сети, использование служб защиты и сетевые операции типа rlogin.
Архитектурные решения, показанные на рис. 15.5 и 15.6, оказываются дос-
таточно общими и гибкими, чтобы лечь в основу машинно-независимого подхо-
да, позволяющего создать реализацию, масштабируемую от системы обнаруже-
ния нарушений на уровне отдельного узле до уровня всей сети, позволяя на ос-
нове сравнения активности отдельных узлов обнаруживать подозрительные
действия, которые иначе оставались бы незамеченными.
15.2. Вирус
К
По-видимому, наиболее изощренную угрозу для компьютерных систем пред-
ставляют собой программы, использующие уязвимые места самих систем. В дан-
ном контексте рассматриваются не только прикладные программы, но и служеб-
ные, такие как редакторы и компиляторы.
Мы начнем следующий раздел с обзора всего спектра программных угроз. Ос-
тальная часть раздела посвящена вирусам. Первым делом мы рассмотрим приро-
ду вирусов, а затем — соответствующие контрмеры.
Вредоносные программы
На рис. 15.7 [BOWL92] показана общая схема классификации программных
угроз, или вредоносных программ. Такие программы можно разделить на две
категории: нуждающиеся в программе-носителе и независимые программы. К
первой категории относится программный код, который не может работать неза-
висимо от некоторой реальной прикладной программы, утилиты или системной
утилиты. Ко второй категории принадлежат самостоятельные программы, кото-
рые могут быть запущены стандартными средствами операционной системы, как
любая другая программа.
Кроме того, мы разделим вредоносные программы на обычные и размножаю-
щиеся. К первым относятся фрагменты программ, которые активизируются, ко-
гда программа-носитель выполняет вполне конкретные действия. Ко второй
группе могут относиться как программные фрагменты (вирусы}, так и независи-
мые программы (“черви”, '•бактерии”), во время работы создающие свои копии,
которые могут выполняться впоследствии в той же или другой системе.
Хотя классификация, приведенная на рис. 15.7, и позволяет систематизиро-
вать информацию по этому вопросу, она не дает полного описания реальной кар-
тавы. В частности, логические бомбы и “троянские кони” могут быть частями
вируса или “червя”.
602
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Replicate
Рис. 15 7. Классификация вредоносных программ
Лазейки
Лазейка — это секретная точка входа в программу, позволяющая тому, кто
знает о существовании этой лазейки, получить доступ в обход стандартных про-
цедур защиты. Лазейки уже много лет совершенно законно используются в про-
граммистской практике для ускорения отладки и тестирования программ. Эта
возможность обычно применяется программистом при создании приложения,
имеющего процедуру аутентификации, или слишком длительную программу ус-
тановки, требующую от пользователя ввода множества различных параметров
перед каждым запуском программы. С целью ускорения процесса отладки раз-
работчик может воспользоваться специальным уровнем привилегий или обойти
процедуру установки или аутентификации. Для программиста также может быть
полезна возможность запустить программу даже тогда, когда по причине каких-
то неполадок встроенная процедура аутентификации не позволяет этого сделать.
Лазейка представляет собой программный код, который реагирует на специаль-
ную последовательность, введенную с клавиатуры, либо активизируется тогда,
когда b i »дится определенный идентификатор пользователя или в ответ на по-
следовательность каких-то маловероятных событий.
Лазейки представляют собой угрозу, когда они позволяют недобросовестным
программистам получить несанкционированный доступ. Именно лазейка была ос-
новной причиной угрозы, на которой был построен сюжет фильма “Военные игры”
(War Games) [СООР89]. Вторым примером является лазейка, использованная в
рамках программы тестирования системы Mui tics, проводимого “командой тигров”
(моделирования действий противника) ВВС США. Одним из решений была от-
правка на узел, на котором выполнялась Multics, ложного пакета с обновлениями
системы. В этом пакете содержался “троянский конь”, который активизировался
15.2. ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
603
через лазейку и позволял “тиграм” получить доступ к системе. Угроза была реали-
зована настолько хорошо, что разработчики Multics не смогли найти ее даже после
гого, как были информированы о ее существовании [ENGE80].
Реализовать контроль возможных лазеек стандартными средствами операци-
онной системы очень трудно Меры защиты в данном случае должны быть сфо-
кусированы на контроле процесса разработки программного обеспечения и его
обновления.
Логические бомбы
Одним из самых старых типов вредоносных программ, возникших еще до по-
явления вирусов и “червей”, является логическая бомба. Логическая бомба
представляет собой программный код, внедренный в какую-то полезную про-
грамму, который должен “взорваться” при выполнении определенных условий.
Примерами условий, которые запускают логическую бомбу, могут быть присут-
ствие или отсутствие каких-то файлов, наступление определенного дня недели
или определенной даты, имя конкретного пользователя, инициировавшего за-
пуск приложения. В одном ставшем широко известным случае [SPAF89] логиче-
ская бомба проверяла наличие определенного табельного номера сотрудника
(автора бомбы) и срабатывала тогда, когда этот табельный номер отсутствовал в
двух идущих подряд ведомостях по начислению зарплаты. После запуска бомба
может изменять или удалять данные или целые файлы, вызывать зависание
машины или выполнять какие-то другие разрушительные действия. Впечат-
ляющий пример того, как можно использовать логическую бомбу, дает дело о
библиотечной системе, рассматривавшееся в суде округа Монтгомери,
шт. Мэриленд [TIME9OJ. Подрядчик, разработавший компьютеризованную биб
лиотечную систему учета, затожил в ее код логическую бомбу, которая должна
была сделать систему недоступной после истечения определенного срока в том
случае, если подрядчику не заплатят за выполненную работу. Когда библиотека,
основываясь на том, что система слишком медленно реагирует на запросы, ре-
шила не оплачивать финалыгую стадию работ, подрядчик сообщил о существо-
вании бомбы и заявил, что не уберет ее до тех пор, пока не получит своих денег.
„Т риянекие кони"
“Троянский конь” представляет собой полезную или кажущуюся полезной
программу или командную процедуру, содержащую скрытый код, который после
запуска программы-носителя выполняет нежелательные или разрушительные
функции.
Программа этого типа может служить для опосредованного выполнения опе-
раций, которые несанкционированный пользователь не может выполнить непо-
средственно. Например, для получения доступа к файлам другого пользователя
на компьютере, находящемся в совместном пользовании нескольких человек,
злоумышленник может создать программу “троянского коня”, которая в ходе
выполнении изменит параметры контроля доступа к файлам соответствующего
пользователя, сделав эти файлы открытыми для всех. Создав такую программу,
автор может спровоцировать других пользователей запустить ее, поместив эту
программу в общедоступный каталог и присвоив ей имя, которое большинству
604
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
пользователей покажется именем полезной программы или утилиты Примером
может служить программа, якобы создающая список файлов пользователя в
нужном формате. После того как какой-нибудь пользователь запустит такую
программу, автор программы может получить доступ к информации, содержа-
щейся в файлах этого пользователя. Примером “троянского коня”, который
очень трудно выявить, является компилятор, модифицированный с целью вне-
дрения дополнительного кода в компилируемые программы определенного вида,
например в программы входа в систему [ТНОМ84]. Этот код представляет собой
лазейку в модуле регистрации, который позволяет автору программы войти в
систему с помощью специального пароля. Обнаружить такого “троянского коня”
по исходному коду программы входа в систему невозможно.
Вторым источником мотивации для написания “троянского коня” является
разрушение данных. В этом случае программа, которая выполняет какие-то полез-
ные функции (например, программа-калькулятор), может без каких бы то ни было
внешних проявлений удалить файлы пользователя. Так, жертвой “троянского ко-
ня” однажды оказался даже один из высокопоставленных управленцев компании
CBS, у которого эта программа уничтожила всю хранившуюся на компьютере ин-
формацию [Т1МЕ90]. “Троянский конь” был внедрен в программу обработки гра-
фических данных, распространявшуюся через электронную доску объявлений.
Вирусы
Вирус представляет собой программу, которая может “заражать” другие про-
граммы путем их модификации. В модифицированный код включается код виру-
са, в результате чего код вируса может продолжать заражать другие программы.
Биологические вирусы являются небольшими фрагментами генетического ко-
да — ДНК или РНК, — использующими механизм жизнедеятельности живой
клетки для создания тысяч абсолютных копий оригинального вируса. Подобно
своему биологическому двойнику, компьютерный вирус несет в своем программ-
ном коде рецепт создания совершенных кодий самого себя. Внесенный в компь-
ютерную систему, типичный вирус временно захватывает управление дисковой
операционной системой компьютера. Затем, при каждом контакте зараженного
компьютера с незараженным программным обеспечением очередная копия виру-
са помещается в новую программу. Таким образом инфекция мджет передавать-
ся от компьютера к компьютеру ничего не подозревающими пользователями,
обменивающимися содержимым магнитных дисков или пересылаюши.ми про-
граммы по сети. Сеть, с ее возможностями доступа к приложениям и системным
службам других компьютеров, является прекрасной “питательной средой” для
распространения вируса.
Подробнее о вирусах речь пойдет ниже в этой главе.
„Черви"
Сетевые программы-“черви” используют сетевые соединения для распростра-
нения от одной системы к другой. Во время работы на отдельном компьютере
сетевой “червь” может вести себя как компьютерный вирус или “бактерия” либо
внедрять "троянских коней”, либо выполнять какие-то другие разрушительные
или подрывные операции.
15.2. ВИРУСЫ И МРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
605
Для размножения сетевой “чернь" использует какое-нибудь из сетевых
средств доставки информации. Примерами таких средств могут быть следующие
службы.
Электронная почта. ’‘Червь” отправляет свою копию по почте в другую
систему.
Удаленный вызов программ. “Червь” запускает свою копию на выполне-
ние в другой системе..
• Доступ к удаленной системе. “Червь" входит в удаленную систему как
пользователь, а затем использует команду копирования себя из одной сис-
темы в другую.
Новая копия программы-“червя” в результате оказывается запущенной в уда-
ленной системе, где в дополнение ко всем другим предусмотренным операциям
“червь” продолжает размножаться указанным выше способом.
Сетевой “червь” во многом подобен компьютерному вирусу: у него тоже есть
инкубационный период, фаза распространения, фаза активизации и фаза выпол-
нения. В фазе распространения обычно выполняются следующие функции.
1. Поиск других систем, которые можно заразить, путем проверки списков
известных данному компьютеру узлов или других подобных объектов,
хранящих информацию об адресах удаленных систем.
2. Установление соединения с удаленной системой,
3. Копирование своего кода в удаленную систему и инициирование ее запуска там.
Перед тем как копировать себя в другую систему, сетевой “червь” может
также пытаться проверить, не была ли система уже инфицирована ранее. В мно-
гозадачной среде он может также скрывать свое присутствие с помощью назна-
чения себе названия, соответствующего системному процессу, или с помощью
использования какого-либо другого имени, не вызывающего подозрения у сис-
темного оператора.
Так же как и вирусам, сетевым “червям” трудно противостоять. Однако меры
сетевой защиты в совокупности с мерами по защите отдельных компьютерных
систем при условии их правильной разработки и применения значительно
уменьшают опасность, которую представляют собой “черви”.
Бактерии
Бактерии являются программами, не повреждающими сами по себе никаких
файлов. Единственной целью “бактерии” является воспроизведение себе подоб-
ных. Типичная программа-бактерия может просто запустить две собственные ко-
пии в многозадачной среде или создать два новых файла, содержащих по копии
оригинальной программы-"бактерии”. Затем каждая из копий может создать
еще две копии и т.д. Скорость размножения “бактерий” растет экспоненциально,
что в конце концов приводит к быстрому захвату всех ресурсов процессора, па-
мяти или дискового пространства, в результате чего происходит отказ пользова-
телям в доступе к этим ресурсам.
606
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Природа вирусов
Вирусы могут делать все, что могут делать обычные программы. Единствен-
ное различие состоит в том, что вирус присоединяется к другой программе и вы-
полняется скрытно в процессе работы программы-носителя. Во время своего вы-
полнения вирус может выполнить любую операцию, например стереть файлы
документов и программы.
Жизненный цикл типичного вируса состоит из четырех этапов.
1. Инкубационный период. Вирус никак не проявляется. В конце концов вирус
будет активизирован некоторым событием, например наступлением опреде-
ленной даты, присутствием другой программы или файла, появлением дос-
таточного места на диске. Инкубационный период имеют не все вирусы.
2. Фаза распространения. Вирус помещает свою копию в другие программы
или в определенные системные области на диске. Теперь все инфициро-
ванные программы будут содержать копию вируса, каждая их которых
тоже должна будет когда-нибудь пройти свою фазу распространения
3. Фаза активизации. Вирус активизируется для выполнения функции, с ко-
торой он создавался. Фаза активизации может быть инициирована самыми
разными системными событиями, например наличием определенного числа
копий данного вируса в системе.
4. Фаза выполнения. Выполняется содержащаяся в вирусе функция. Эта
функция может быть как вполне безобидной (например, вывод сообщения
на экран), так и совершенно деструктивной (например, уничтожение про-
грамм и файлов с данными),
Работа большинства вирусов построена в соответствии с архитектурными
принципами конкретной операционной системы и в некоторых случаях даже
конкретных аппаратных средств. Таким образом, в их основе лежит использова-
ние недостатков и нюансов тех или иных систем.
Структура вируса
Вирус может помещаться как в начало или конец исполняемой программы,
так и встраиваться в нее каким-то иным образом. Главная идея работы вируса
состоит в том, чтобы при запуске прейрэммы-носителя сначала выполнился код
вируса и только затем — код самой программы.
В самых общих чертах структура вируса показана на рис. 15.8 (приводится но
[СОНЕ94]). В данном случае код вируса V добавляется в начало инфицируемой про-
граммы в предположении, что точкой входа в программу является ее первая строка.
Выполнение инфицированной программы начинается с выполнения кода вируса
следующим образом. В первой строке кода программы указана команда перехода в
начало основною кода вируса. Вторая строка представляет собой специальный
маркер, используемый вирусом для проверки того, что программа, выбранная в
качестве потенциальной жертвы, не была заражена этим вирусом раньше. При за-
пуске инфицированной программы управление сразу же передается в основное те-
ло вируса. Программный код вируса сначала ищет незараженные файлы и заража-
ет их. После этого вирус может выполнить какие-то другие действия, обычно вра
ждебные по отношению к системе. Эти действия могут иметь место при каждом
15 2 ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
607
piogiam V
fgoio main:
1234567;
subroutine infen-executable •=
(.loop
file '5 get-random-execulable-file;
if (first-line-ot-file 5 1234567)
then goto loop
else prepend V to file; }
subroutine do-damage :*
[whatever damage is to be done)
subroutine trigger-pulled =
[return true if some condition holds)
main ir.ain-progtain
I infect-exerutable;
if trigger pulled then do-damage:
goto next;)
next-
}
Puc. 15.8. Пример простого вируса
запуске инфицированной программы или же только при выполнении определен-
ных условий. Закончив работу, вирус передает управление программе-носителю.
Если инфицирование осуществляется достаточно быстро, то пользователь вряд ли
сможет заметить при запуске программы, что «ча инфицирована.
Вирусы, построенные по только что описанному принципу, легко обнару-
жить, поскольку в результате инфицирования увеличивается длина файла ин-
фицируемой программы. Чтобы обойти столь простые методы обнаружения, ви-
рус должен сжать исполняемый файл, чтобы инфицированная и неинфициро-
ваннап версии файла оказались одинаковой длины. На рис 15.9 [СОНЕ94]
показана общая логика работы такого вируса. Наиболее важные строки вируса
пронумерованы, а соответствующие операции иллюстрируются на рис. 15.10
[СОНЕ94]. Мы предполагаем, что программа Р, инфицирована вирусом CV. Ко-
гда такая программа запускается на выполнение, управление передается вирусу,
который делает следующее
1. Обнаружив неинфицириваяный файл Р,, вирус сначала сжимает его, в ре-
зультате получая файл Р2', длина которого меньше исходной на длину ко-
да вируса.
2. Копия вируса присоединяется к началу сжатой программы.
3. Сжатая версия инфицированной оригинальной программы, PJ, распако-
вывается.
4. Распакованная оригинальная программа выполняется.
608
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
program CV :=
(goto main,
01234567
subroutine infer t-exerwable «
(loop
file gel-random-executable-file
if (first-lineol-file • 01234567) then goto loop;
(1) compress file;
(2) pi epend CV to file;
J
mam main-program "
{ifask-permission then infecr-executahle;
(3) uncompress rest-of-tile:
14) run uncompressed file;)
1
Рис. }5.9. Логика вируса, использующего сжатие
В рассмотренном выше примере вирус только размножается. Но он может со-
держать и логическую бомбу, как описано в предыдущем примере.
Начальное инфицирование
Попав в систему путем заражения некоторой программы, вирус получает воз-
можность при выполнении этой программы заразить некоторые другие или во-
обще все исполняемые файлы данного компьютера. Таким образом, появления
вирусной инфекции можно вообще не допустить, если не позволить вирусу пер-
вый раз попасть в систему Задача предотвращения вирусного заражения отно-
сится к разряду очень сложных, поскольку вирус может оказаться в любой про-
грамме, попадающей в систему извне. Таким образом, в уязвимом положении
15.2. ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
609
оказывается любой, кто не создал собственную операционную систему и все при-
кладное программное обеспечение с помощью собственных аппаратных средств.
В большинстве случаев начальное инфицирование происходит через носители
информации, с которых зараженные программы копируются в компьютер. Мно-
гие из таких программ относятся к разряду игровых или же являются просты-
ми, но удобными утилитами, которыми служащие пользуются сначала на своих
домашних компьютерах, а затем приносят' на работу. Иногда зараженные про-
граммы содержатся даже на упакованных дистрибутивных дисках разработчиков
программного обеспечения. Только небольшая часть случаев инфицирования
происходит через сетевые соединения, и чаще всего источником инфекции слу-
жат электронные доски объявлений. Опять же, обычно служащий при этом за-
гружает из сети какую-нибудь игру или, казалось бы, полезную утилиту, кото-
рые, как выясняется впоследствии, содержат вирусы.
Типы вирусов
С тех пор как появились вирусы, началась и бесконечная борьба между авто-
рами вирусов и авторами антивирусных программ, Как только вырабатывались
эффективные методы противодействия уже известным вирусам, появлялись но-
вые типы вирусов. В [STEP93] предлагается следующая классификация наиболее
важных типов вирусов.
Паразитный вирус. Традиционная и до сих пор самая распространенная
форма вируса. Паразитный вирус добавляет свой код к исполняемым фай-
лам и размножается при каждом запуске инфицированной программы, на
ходя другие файлы, Которые можно было бы инфицировать.
Резидентный вирус. Размещается в оперативной памяти как часть рези-
дентной системной программы. С момента размещения в памяти инфици-
рует любую запускаемую программу
Загрузочный вирус. Инфицирует главную загрузочную запись или загру-
зочный сектор и распространяется, когда система загружается с заражен-
ного диска.
Вирус-невидимка. Разновидность вируса, имеющего специально преду-
смотренное свойство, защищающее вирус от обнаружения антивирусным
программным обеспечением.
Полиморфный (мимикрирующий) вирус. Вирус, код которого изменяется
при каждом новом заражении, что делает практически невозможным об-
наружить его по “сигнатуре”.
Один из примеров вируса-невидимки (stealth virus) был рассмотрен выше:
вирус, использующий сжатие, чтобы длина инфицированного файла была в точ-
ности равна длине исходного. Существуют и другие, гораздо более хитроумные
решения. Например, вирус может перехватывать обращения к функциям ввода
вывода и при попытках прочитать подозрительные части диска с помощью этих
функций возвращать оригинальные иеинфициропанные версии программ. Таким
образом, применяемая в данном случае характеристика стеле (скрытный) отно-
сится не столько к вирусам, сколько к технологии, обеспечивающей вирусу за-
щиту от обнаружения.
610
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
Полиморфный вирус создает при размножении копии, эквивалентные по
функциональности, но существенно различающиеся по двоичному представле-
нию кода. Как и в случае с вирусами-невидимками, это делается с целью проти-
востоять программам, обнаруживающим вирусы. Для таких вариаций представ-
ления кода вирус может вставлять в свой код генерируемые случайным образом
избыточные команды или же изменять порядок следования не зависящих друг
от друга команд. Более эффективным подходом является шифрование. Часть ви-
руса. называемая механизмом управления мутациями (mutation engine), гене-
рирует случайное значение ключа, с помощью которого шифрует остальной код
вируса. Ключ сохраняется вместе с вирусом, а механизм управления мутациями
видоизменяется. Во время запуска инфицированной программы вирус с помо-
щью сохраненного ключа расшифровывается. При новом инфицировании гене-
рируется новый ключ.
Еще одним оружием в арсенате авторов вирусов является пакет инструмен-
тальных средств для разработки вирусов. Такой пакет позволяет даже относи-
тельному ноаичку быстро создать целый набор вирусов разных типов. Хотя ви-
русы. созданные с помощью пакета инструментальных средств разработки,
обычно оказываются менее изощренными в сравнении с вирусами, созданными
“с нуля”, неограниченное число новых вирусов, которые можно генерировать с
помощью пакета, представляет собой достаточно серьезную проблему для схем
антивирусной защиты.
Еще одним средством разработчика вирусов являются электронные доски
объявлений, посвященные вопросам создания вирусов Целый ряд таких элек-
тронных досок объявлений имеется в США [ADAM92], немало их и в других
странах. На всех соответствующих узлах предлагаются копии вирусов, а также
рекомендации по созданию собственных вирусов.
Макривирусы
За последние годы число вирусов, регистрируемых на корпоративных узлах,
стремительно возросло (BERG97]. Практически весь этот прирост связан с рас-
пространением нового типа вирусов, называемых макро вирусами. Согласно ин-
формации NCSA (National Computer Security Agency — Национальное агентство
компьютерной безопасности США), которая доступна по адресу www.nsca.com,
макровирусы сегодня составляют две трети от общего количества вирусов.
Макровирусы особенно опасны по следующим причинам.
1. Макровирусы независимы от платформы. Так, практически все макрови-
русы поражают документы Microsoft Word. Поэтому любая аппаратно-
программная система, поддерживающая Word, может быть заражена та-
ким вирусом.
2. Макрлвирусы инфицируют документы, а не выполняемый код. А инфор-
мация, вводимая в компьютерную систему, по большей части представлена
в форме документов, а не программ.
3. Макровирусы быстро распространяются. Чаше всего распространение про-
исходит по электронной почте.
15.2. ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
611
Существование макровирусов построено на использовании средств поддержки
макросов, предлагаемых в Word и других офисных приложениях (например, Mi-
crosoft Excel). По сути, макрос представляет собой программу, встроенную в до-
кумент текстового процессора или файл какого-то другого типа. Обычно пользо-
ватели используют макросы для того, чтобы автоматизировать выполнение часто
выполняемых действий, что позволяет сэкономить время. Язык макросов чаще
всего является каким-нибудь вариантом языка программирования Basic. Поль-
зователь может записать последовательность нажатий клавиш в виде макроса, а
затем настроить программу так, чтобы записанный макрос вызывался нажатием
функциональной клавиши или какой-то специальной комбинацией клавиш.
Создание макровирусов оказывается возможным благодаря существованию ав-
томатических макросов. Это макросы, которые выполняются автоматически, без
явной активизации их пользователем. Типичными автоматически происходящими
событиями являются открытие, закрытие файла, а также запуск приложения. Во
время своего выполнения макрос может копировать себя в другой документ, уда-
лять файлы и выполнять любые другие действия, разрушающие систему пользова-
теля, В Microsoft Word имеется три типа автоматических макросов,
AutoExec. Макрос, названный зарезервированным именем AutoExec, нахо-
дится в шаблоне normal .dot или в глобальном шаблоне, хранящемся в ка-
талоге запуска (startup directory) Word, и автоматически выполняется при
запуске Word.
Автомакрос. Выполняется, когда происходит определенное событие, на
пример открытие или закрытие документа, создание нового документа или
завершение работы Word.
Командный макрос. Если находящийся в глобальном файле макросов или
связанный с текущим документом макрос имеет имя, совпадающее с на-
званием команды Word, он будет выполняться при каждом вызове этой
команды (например, команды FileSave) пользователем
Ооычно распространение макровируса происходит следующим образом. Авто-
макрос или командный макрос вставляется в документ Word, который передает-
ся в компьютерную систему по электронной почте или с вйешнего носителя ин-
формации. В какой-то момент после открытия документа макровирус начинает
выполняться. Он копирует свой код в глобальный файл макросов. При следую-
щем запуске Word становится активным инфицированный глобальный файл
макросов. При выполнении макрос может размножаться и выполнять действия,
наносящие вред системе.
В современные версии Word встроена защита от макровирусов Microsoft пре-
доставляет в распоряжение пользователя средство защиты от макровирусов, вы-
являющее подозрительные файлы Word и предупреждающее пользователя об
опасности, связанной с открытием файлов, содержащих макросы. Ведущие раз-
работчики антивирусных программ гоже создали средства для обнаружения и
удаления опасных макровирусов Однако, как и в случае любых других вирусов,
“гонка вооружений’’ в области макровирусов продолжается.
612
глава is. нарушители и вирусы
Антивирусная защита
Идеальным решением проблемы ьирусов является предотвращение инфициро-
вания: не следует допускать начального проникновения вируса в компьютерную
систему. Этой цели в общем достичь невозможно, хотя предпринятые превентив-
ные меры могут снизить число успешно завершенных вирусами атак. Почти иде-
альный подход должен обеспечивать выполнение следующих требований.
Обнаружение. Если заражение произошло, оно должно быть немедленно
обнаружено с установлением места обитания вируса.
• Идентификация. Как только заражение вирусом обнаружено, необходимо
идентифицировать тип вируса, инфицировавшего программу.
• Удаление. Как только вирус идентифицирован, следует удалить все следы
вируса из инфицированных программ и восстановить программы в их ис-
ходный вид. Важно удалить вирус из всех инфицированных систем, чтобы
болезнь не распространялась дальше.
Если вирус обнаружен, но его не удается идентифицировать или удалить из
системы, альтернативой является удаление инфицированной программы с после-
дующей ее новой загрузкой с резервной копии.
Технологии разработки вирусов и антивирусов идут рука об руку. Первые ви-
русы представляли собой сравнительно простые фрагменты кода и могли быть
удалены с помощью относительно простых антивирусных программ. По мере ус-
ложнения вирусов антивирусное программное обеспечение тоже становилось все
сложнее и изощреннее.
В [STEP93] антивирусные программы разделяются на четыре поколения.
< Первое поколение: обычные сканеры.
Второе поколение: эвристические анализаторы.
Третье поколение: мониторы.
Четвертое поколение: полнофункциональные системы защиты.
Антивирусные программы сканеры первого поколения для идентификации ви-
русов использовали характерные для соответствующих вирусов сигнатуры. Вирусы
могли содержать “групповые символы”, но все копии вируса имели в основном од-
ну и ту же структуру и неизменный код. Такие программы-сканеры, использую-
щие сигнатуры, могли обнаруживать только известные вирусы. Другой тип скане-
ров первого поколения предполагал поиск несоответствий текущих значений длин
файлов со значениями, сохраненными в специальной базе данных.
Сканеры второго поколения уже не ориентированы на конкретные сигнату-
ры. Вместо этого в них начали применять эвристический анализ, с помощью ко-
торого можно было сделать вывод о возможном наличии в программе вируса.
Одна из разновидностей таких сканеров предполагала поиск в программе фраг-
ментов кода, характерного для вирусов. Например, сканер мог искать начало
цикла шифрования, используемого полиморфным вирусом, и пытаться открыть
ключ шифрования. Получив ключ, сканер мог расшифровать тело вируса, иден-
тифицировать вирус, удалить его из программы и вернуть программу в рабочее
состояние.
16.2. ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
613
Другим подходом, применявшимся в антивирусных программах второго по-
коления, была проверка целостности. С каждой программой можно связать кон-
трольную сумму. Если вирус инфицирует программу, не меняя при этом кон-
трольной суммы, то проверка целостности обязательно это обнаружит. Чтобы
противостоять вирусам, которые при заражении могут менять соответствующую
контрольную сумму, можно использовать некоторую функцию хэширования с
шифрованием. Ключ шифра хранится отдельно от программы, чтобы вирус не
мог сгенерировать ноный хэш-код и зашифровать его. Использование функции
хэширования с шифрованием вместо обычной контрольной не дает вирусу воз-
можности модифицировать программу таким образом, чтобы результат хэширс
вания после инфицирования не изменялся.
Программы третьего поколения представляли собой резидентные программы,
выявляющие вирусы по выполняемым ими действиям, а не по их структуре в ин-
фицированной программе. Преимуществом таких программ было то, что для ких
не требовалось постоянно обновлять базу данных сигнатур и эвристик для все
большего числа вирусов. Вместо этого достаточно было ,-пределить относительно
небольшой набор действий, характеризующих возможные проявления вируса.
Продукты четвертого поколения представляют собой пакеты, объединяющие
в единое целое все существующие антивирусные технологии. Такой подход, по-
мимо выполнения сканирования и наличия компонентов, позволяющие регист-
рировать определенные действия вирусов, предполагает наличие средств управ-
ления доступом, с помощью которых можно ограничить возможности вирусов по
проникновению в систему и по внесению изменений в файлы с целью распро-
странения инфекции под видом обновления.
Вирусная “гонка вооружений” продолжается. С появлением пакетов четверто-
го поколения появилась возможность построения всеобъемлющей стратегии ан-
тивирусной защиты, являющейся органической частью общих мероприятий по
обеспечению защиты компьютерной системы.
Перспективные методы антивирусной защиты
В результате постоянной разработки все более совершенных подходов к осу-
ществлению антивирусной защиты появляются новые и более надежные продук-
ты. В следующем разделе мы остановимся на двух наиболее важных направле-
ниях развития данной области защиты систем.
Полное декодирование
Технология полного декодирования (GD — general decryption) позволяет анти-
вирусной программе легко обнаруживать даже самые сложные полиморфные ви-
русы, сохраняя при этом высокую скорость сканирования [NACH97]. Напомним,
что при выполнении содержащего полиморфный вирус файла перед активизацией
вирус должен быть расшифрован. Для выявления подобных структур выполняе-
мый файл проходит через GD-сканер, состоящий из следующих элементов.
Эмулятор процессора. Представляет собой программную реализацию вир-
туального компьютера. Команды, имеющиеся в выполняемом файле, ин-
терпретируются эмулятором вместо того, чтобы выполняться реальным
614
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
процессором. Эмулятор содержит программные версии всех регистров и
других аппаратных средств процессора, так что сам процессор оказывается
вне зоны действия программ, интерпретируемых эмулятором.
Сканер сигнатур вирусов. Модуль, выполняющий сканирование проверяе-
мого кода на предмет выявления в нем сигнатур известных вирусов.
Модуль управления эмуляцией. Управляет выполнением проверяемого кода.
Загрузив программу, эмулятор начинает интерпретировать одну за одной ко-
манды проверяемого кода. Если в программе содержится процедура дешифрова-
ния тела вируса, ее код тоже будет интерпретирован. В результате вирус сам от-
кроет себя антивирусной программе. Периодически модуль управления прерыва-
ет ход эмуляции, чтобы выполнить сканирование полученного кода на предмет
наличия в нем сигнатур вирусов.
Во время интерпретации код вируса не может нанести реального вреда ком-
пьютеру, так как код выполняется в изолированной и контролируемой вирту-
альной среде.
Самым сложным вопросом реализации GD-сканеров является определение то-
го, как долго нужно выполнять интерпретацию проверяемой программы. Обыч-
но вирус активизируется вскоре после запуска программы, но это правило не
является догмой. Чем дольше эмулятор проверяет программу, тем выше вероят-
ность обнаружения скрытых вирусов. Однако неоправданно большое время про-
верки и высокие требования к потребляемым ресурсам, очевидно, не очень удов-
летворяют пользователей.
Цифровая иммунная система
Цифровая иммунная система представляет собой сложную технологию анти-
вирусной зашиты, разработанную компанией IBM [КЕРН97а, КЕРН97Ь]. При-
чиной разработки послужила возрастающая угроза распространения вирусов че-
рез internet. Сначала мы скажем несколько слов о самой угрозе, а затем перей-
дем в описанию подхода, предложенного IBM.
В настоящее время угроза вирусной инфекции характеризуется относительно
низкой частотой появления новых вирусов и новых мутаций старых вирусов.
Антивирусное программное обеспечение обновляется, как правило, ежемесячно,
и этого оказывается достаточным для того, чтобы держать проблему под контро-
лем. Кроме того, сегодня Internet играет относительно второстепенную роль в
распространении вирусов. Однако, как отмечается в [CHES97], в ближайшие го-
ды скорость распространения вирусов может существенно возрасти под влиянием
следующих тенденций развития технологий Internet.
Интегрированные почтовые системы. Системы типа Lotus Notes и Micro-
soft Outlook допускают пересылку чего угодно кому угодно, и работа с по-
лученными по почте объектами представляется очень простым делом.
• Мобильные программы. Технологии, подобные Java и ActiveX, позволяют
программам самостоятельно перемещаться из одной системы в другую.
В ответ на угрозу распространения вирусов, которую потенциально несут эти
возможности Internet, IBM разработала прототип цифровой иммунной системы.
Эта система развивает технологию эмуляции, о которой говорилось в предыду-
15.2. ВИРУСЫ И УГРОЗЫ, СВЯЗАННЫЕ С ВИРУСАМИ
615
щем разделе, предлагая комплекс эмулятора общего назначения и системы обна-
ружения вирусов Целью цифровой иммунной системы является создание схемы
быстрого реагирования, позволяющей регистрировать вирусы практически в мо-
мент их появления. Когда новый вирус появляется в вычислительной сети орга-
низации, иммунная система находит его, анализирует, добавляет необходимые
средства обнаружения этого вируса и защиты от нею, удаляет вирус и передает
информацию о попытке проникновения вируса системам AntiVirus компании
IBM, чтобы вирус и в других местах мог быть выявлен ди того, как он начнет
выполняться.
На рис. 15.11 показана схема основных действий цифровой иммунной системы.
1. Спепиальная программа, работающая на каждом персональном компьюте-
ре, выполняет мониторинг, используя различные методы эвристического
анализа поведения системы и подозрительных изменений в программах, а
также информацию о сигнатурах известных вирусов. Обнаружив подозри-
тельные действия, программа мониторинга отправляет копию подозри-
тельной на предмет заражения программы машине-администратору сети
организации.
2. Машина-администратор шифрует полученный образец и отправляет его
центральной машине-анализатору, выполняющей анализ вирусов.
3. Машина анализатор создает виртуальную среду, в которой можно выполнить
безопасный запуск инфицированной программы для анализа. Для этого мо-
жет применяться технология программной эмуляции или создание какой-то
иной защищенной среды, в которой подозреваемая программа может быть
выполнена и изучена Обнаружив вирус, машина-анализатор генерирует ре-
комендации, касающиеся вопросов идентификации и удаления вируса.
Рис 15.Л. Цифровая иммунная система
616
ГЛАВА 15. НАРУШИТЕЛИ И ВИРУСЫ
4. Созданные рекомендации передаются обратно машине-администратору.
5. Машина-администратор пересылает рекомендации инфицированной маши-
не- клиенту.
6. Рекомендации рассылаются также всем другим машинам-клиентам орга-
низации.
7. Все другие подписчики системы также получают регулярные обновления
антивирусных пакетов, что позволяет защититься от новых вирусов.
Успех цифровой иммунной системы зависит от способности машины-
анализатора выявлять новые вирусы и их модифицированные штаммы. С помо-
щью постоянного анализа и мониторинга всех появляющихся вирусов можно
обеспечить постоянное обновление программного обеспечения цифровой иммунной
системы с целью организации надежной защиты от угрозы вирусной инфекции.
15.3. Рекомендуемые источники дополнительной fc?
информации Ц|
Самым популярным источником информации о получивших широкую огла-
ску инцидентах, связанных с вторжением в компьютерные системы, является
[STOL89]. В ISTER92] содержатся полезные исторические сведения о развитии
компьютерных правонарушений, а также описывается методика и цели основ-
ных действующих лиц: нарушителей, органов правопорядка и правозащитников.
В [DENN90J включены репринты многих основополагающих статей, речь в кото-
рых идет о нарушителях систем защиты.
В [HOFF90] и [DENN90] содержатся репринты многих важных статей, по-
священных вирусам и “червям”. Прекрасное техническое изложение технологий
создания вирусов и антивирусной защиты представлено в [COHE94J. Интересны-
ми обзорными статьями о вирусах являются [FORR97], IKEPH97] и [NACH97]
СОНЕ94 Cohen, F A Short Course on Computer Viruses New York. Wiley, 1994
DENN90 Denning, P„ editor. Computers Under Attack Intruders, Worms, and Viruses.
Reading, MA. Aodrson-Wesley, 1990.
FORR97 Forrest, S.; Hofmeyr, S , and Somayaji, A. “Computer Immunology." Communica-
tions of the ACM October 1997.
HOFF90 Hoffman, L, editor Rogue Programs Viruses, Worms and Trojan Horses. New
York. Van Nostrand Heinhold, 199П
KEPH97 Kephart, J,: Sorkrn G., Chess, D ; and White. S. “Fighting Computer Viruses” Scr-j
entific American. November 1997.
NACH97 Nachenberg, C., “Computer Virus-Antivirus Coevolution " Communications of tne
ACM. May 1997.
STER92 Sterling. R The Hacker Crackdown: Law and Disorder on the Electronic Frontier.
New York Bantam, 1992
STOL89 Stoll, C The Cuckoo s Egg New York: Doubleday, 1989
15.3. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ 617
Вниманию читателей предлагаются следующие Web-узлы.
Центр координации CERT. Организация, которая создана на основе груп-
пы быстрого реагирования на компьютерные угрозы Научно-
исследовательским агентством по передовым оборонным проектам
(DARPA — Defense Advanced Research Projects Agency). На данном узле
собрана обширная подборка информации по угрозам безопасности Internet
и уязвимым местам, а также статистические данные.
AntiVirus Online. Узел компании IBM с информацией о вирусах. Один из
лучших.
1. Предположим, что для пароля выбирается четырехсимвольная комбина-
ция из 26-буквенного алфавита. Допустим также, что противник может
проверять пароли по одному за секунду.
• Если противник не может узнать, насколько успешна его очередная по-
пытка, пока не завершится проверка, то сколько времени понадобится
на то, чтобы найти правильный пароль?
• Если противник имеет возможность сразу же узнать, что очередной
введенный символ не подходит, то сколько в таком случае понадобится
времени, чтобы найти правильный пароль?
2. Предположим, что входные элементы длины k отображаются каким-либо
равномерным образом в элементы меньшей длины р. Если каждая цифра
элемента может принимать одно из г значений, то число исходных элемен-
тов равно г", а число получаемых элементов — меньшему числу г". Каж-
дый отдельный элемент х, отображается в элемент у, .
• Какова вероятность того, что правильный входной элемент будет угадан
противником?
• Какова вероятность того, что противником будет найден другой входной
элемент х4 (х, * х,), соответствующий тому же выходному элементу у, ?
• Какова вероятность того, что правильный выходной элемент будет уга-
дан противником?
3. Генератор удобных для произношения паролей создает шестисимвольные
пароли, складывая вместе два генерируемых случайным образом сегмента.
Каждый сегмент имеет _вид CVC (согласная, гласная, согласная), где
V = < а, е, i, о, и > и С = V .
* Сколько всего паролей может быть сгенерировано?
• Какова вероятность случайного угадывания пароля противником?
4. Предположим, что в пароле можно использовать только 95 алфавитно-
цифровых символов ASCII и что все цароли имеют длину 10 символов.
Предположим также, что программа подбора паролей может выполнять
6,4 млн операций шифрования в секунду. Сколько времени потребуется
для перебора всех возможных паролей в системе UNIX.
616
ГЛАВА 16. НАРУШИТЕЛИ И ВИРУСЫ
5. Основываясь на знании слабых мест системы паролей UNIX, в документа-
ции SunOS-4.0 рекомендуется удалить файл паролей и заменить его обще-
доступным файлом /etc/publickey. Каждая запись в этом файле для поль-
зователя А должна содержать идентификатор пользователя ID* , откры-
тый ключ этого пользователя KU, и соответствующий личный ключ KR,.
Личный ключ шифруется с помощью алгоритма DES и ключа, получаемо-
го из пароля Р., вводимого пользователем при входе в систему. Когда
пользователь А регистрируется в системе, система дешифрует Е,. [КК, J,
чтобы получить КК, .
• Затем система проверяет, что введен правильный пароль Р.. Как это
делается?
• Каким образом можно атаковать такую систему?
6 В UNIX применяется однонаправленная схема шифрования паролей — по
зашифрованному паролю исходный пароль восстановить нельзя. Однако
будет ли строгим утверждение, что на самом деле выполняется хэширова
ние, а не шифрование?
7. Как упоминалось выше в тексте этой главы, использование модификатора
в схеме парольной защиты UNIX повышает сложность задачи отгадывания
пароля в 4096 раз. Но значение самого модификатора при этом хранится в
открытом виде в гой же записи, которая включает шифрованный пароль.
Поэтому автоматически добавляемые к паролю два символа оказываются
известными противнику и их не нужно угадывать. Чем же тогда объяс-
нить утверждение, что использование модификатора усиливает защиту?
8. Если вы смогли решить предыдущую задачу и разобраться с назначением
модификатора, попробуйте ответить на следующий вопрос. Почему бы не
сделать бессмысленными любые попытки взлома пароля вообще, увеличив
длину модификатора до значения, скажем, 24 или 48 битов?
9. Рассмотрим фильтр Блума, речь о котором шла в разделе 15.1 Пусть k
обозначает число используемых функций хэширования; N — число битов в
таблице хэширования, a D — число слов в словаре.
* Докажите, что ожидаемое число нулевых битов в таблице хэширования
определяется выражением
• Докажите, что вероятность того, что отсутствующее в словаре слово бу-
дет воспринято как слово из словаря, равна
Р = (1-0)"-
• Докажите, что значение Р, вычисляемое с помощью предыдущего вы-
ражения, можно аппроксимировать с помощью формулы
Р =
10. В алгоритме вируса, приведенном на рис. 15.8, имеется дефект. В чем он
заключается?
15.4. ЗАДАЧИ
619
ГЛАВА
Брандмауэры
Сильная позиция должна означать неприступность армии, за-
нимающей такую позицию.
Карл фон Клаузевиц. О войне
В день, когда будет принято командование, следует блокировать
все пограничные переходы, прекратить все официальные расчеты
и сделать невозможным проникновение любых эмиссаров
Сунь Цзы. Военное искусство (The Art of W ar)
Последней темой нашей книги являются
брандмауэры. Брандмауэры могут быть эффектив-
ным средством защиты локальной системы или
компьютерной сети от угроз, имеющих сетевую природу, в то
же время не ограничивающим связь с внешним миром через
глобальные сети и Internet.
Мы начнем эту главу с обзора функциональных возмож-
ностей брандмауэров и принципов, на основе которых вы-
полняется их проектирование. Затем мы рассмотрим вопросы
защиты самих брандмауэров и, в частности, обсудим концеп-
цию высоконадежной системы (т.е. системы:, заслуживающей
доверия с точки зрения обеспечения защиты данных) или,
другими словами, защищенной операционной системы.
16.1. Принципы разработки
> брандмауэров
Информационные системы корпораций, правительствен-
ных учреждений и других организаций постоянно развива-
ются в следующих направлениях-
Система централизованной обработки данных, рабо-
тающая на базе мэйнфрейма, к которому непосредственно подключено не-
которое число терминалов.
Локальная сеть, объединяющая персональные компьютеры и терминалы
друг с другом и мэйнфреймом.
* Объединенная сеть, состоящая из нескольких локальных сетей, связанных
друг с другом персональных компьютеров, серверов и, возможно, одного
или двух мэйнфреймов.
Сеть масштаба предприятия, состоящая из нескольких находящихся на
достаточно большом расстоянии друг от друга объединенных сетей, связы-
ваемых между собой с помощью ведомственной глобальной сети.
• Связь через Internet, при которой различные объединенные сети оказыва-
ются подключенными к Internet и могут быть также связанными друг с
другом ведомственной глобальной сетью.
Сегодня связь с Internet для большинства организаций уже является привыч
ным делом. Для многих организаций информация и услуги Internet жизненно
необходимы. Кроме того, доступ к Internet требуется и многим индивидуальным
пользователям, и если их локальная сеть не обеспечивает такого доступа, они
самостоятельно используют средства удаленного доступа для подключения своих
персональных компьютеров к Internet через поставщика услуг Internet
(провайдера). Но, хотя доступ к Internet и дает организации очевидные преиму-
щества, такой доступ в то же время предоставляет возможность доступа к ресур-
сам внутренней сети организации и внешнему миру. Ясно, что это несет в себе
определенную угрозу для организации. Для защиты от этой угрозы можно обо-
рудовать каждую рабочую станцию и каждый сервер внутренней сети надежны-
ми средствами защиты типа системы защиты от вторжений, но такой подход,
очевидно, непрактичен. Рассмотрим, например, сеть с сотнями или даже тыся-
чами отдельных систем, на которых работают самые разные версии UNIX, да
еще и Windows 95, Windows 98 и Windows NT. Если будет выявлен какой-либо
изъян в системе защиты, придется внести изменения в средства защиты всех
систем, которые потенциально могут оказаться уязвимыми Альтернативой, ко-
торая становится все более популярной, является использование брандмауэра.
Это устройство размещается между внутренней сетью организации и Internet,
обеспечивая контролируемую связь и воздвигая внешнюю стену, или границу.
Целью создания такой границы является защита внутренней сети от несанкцио-
нированного проникновения извне через Internet и организация единого центра,
в котором должны применяться средства защиты и контроля. Брандмауэр может
представлять собой как отдельный компьютер сети, так и группу специально
выделенных компьютеров, которые осуществляют функции брандмауэра сети,
взаимодействуя между собой.
В этом разделе мы сначала рассмотрим общие характеристики брандмауэров,
а затем приведем конкретные типы брандмауэров, наиболее широьо распростра-
ненных сегодня. В конце раздела будут отмечены некоторые типичные конфигу-
рации брандмауэров.
16.1. ПРИНЦИПЫ РАЗРАБОТКИ БРАНДМАУЭРОВ
621
Характеристики брандмауэров
В [BELL94] приводится следующий список основных задач, стоящих перед
разработчиками брандмауэров
1. Весь поток данных, направляемых из внутренней сети во внешний мир,
как и идущих в обратном направлении, должен проходить через брандмау-
эр. Это достигается путем физического блокирования любого доступа к ло-
кальной сети в обход брандмауэра. Как будет показано ниже, эта задача
может иметь несколько различных конструктивных решений.
2. Из всего потока поступающих к брандмауэру данных пройти брандмауэр
должно быть позволено только данным, подвергшимся аутентификации в
соответствии с локальной политикой защиты. Как будет показано ниже, в
брандмауэрах разных типов могут быть реализованы различные типы по-
литик защиты.
3. Брандмауэр сам по себе должен быть недоступен для вторжения извне. Это
предполагает наличие высоконадежной системы с защищенной операцион-
ной системой. Данная гема будет обсуждаться в разделе 16.2.
В [SMIT97] перечислены четыре основных средства, с помощью которых
брандмауэры осуществляют контроль доступа и обеспечивают реализацию поли-
тик защиты соответствующей вычислительной системы. Изначально брандмау-
эры осуществляли в основном управление сервисами, но сегодня на них возло-
жены и остальные задачи.
Управление сервисами. Определяет типы служб Internet, к которым мож-
но получать доступ из внутренней сети наружу и из внешнего окружения
вовнутрь. Брандмауэр может фильтровать поток данных на основе IP-
адресов и номеров портов TCP. может предлагать такой компонент, как
прокси-сер зер, через который может проходить каждый запрос сервиса и
который принимает решение о том, пропустить данный запрос или нет, и
наконец, может содержать и серверные компоненты, такие как Web-сервер
или почтовая служба.
Управление направлением движения. Определение направления, в кото
ром могут инициироваться и проходить через брандмауэр запросы к тем
или иным службам.
Управление пользователями. Предоставление доступа к службам в зави-
симости от прав доступа пользователей, обращающихся к этим службам.
Эта функция обычно применяется к пользователям внутри сети, защи-
щаемой с помощью брандмауэра (локальным пользователям). Однако она
может применяться и к потоку Данных, поступающему от внешних поль-
зователей, но это требует реализации в какой-то форме технологии аутен-
тификации, например обеспечиваемой протоколом IPSec (см. главу 13).
Управление поведением. Контроль за использованием отдельных служб.
Например, брандмауэр может фильтровать электронную почту, отсеивая
“спзм" или же разрешать доступ извне только к определенной части ин-
формации, находящейся на локальном Web-сервере.
622
ГЛАВА 16. БРАНДМАУЭРЫ
Перед рассмотрением особенностей конфигурации брандмауэров различных
типов, давайте определим требования, выдвигаемые к брандмауэру. Брандмауэр
может предлагать следующие возможности.
1. Брандмауэр представляет собой единственную точку входа, в которой пре-
дотвращается несанкционированный доступ внешних пользователей к за-
щищаемой сети, запрещается потенциально уязвимым службам доступ к
внутренней сети извне или отправка данных изнутри во внешний мир, а
также обеспечивается зашита от различных атак вторжения с помощью
изменения маршрута или указания ложных IP-адресов. Наличие единст-
венной точки входа упрощает задачу управления защитой, так как все
средства защиты оказываются сосредоточенными в одном месте.
2 Брандмауэр является местом, где осуществляется мониторинг событий,
имеющих отношение к защите сети. Для этого в брандмауэре могут быть
предусмотрены компоненты контроля и извещения.
3. Брандмауэр является удобной платформой для ряда функций Internet, не
имеющих непосредственною отношения к безопасности. К таким функци-
ям можно отнести транслятор сетевых адресов, преобразующий локальные
адреса в адреса Internet, а также средства управления сетью, осуществ-
ляющие контроль за использованием Internet или ведение соответствую-
щего журнала регистрации.
4. Брандмауэр может служить платформой для IPSec. Возможности туннель-
ного режима такого брандмауэра (описанные в главе 13) могут применять-
ся при построении виртуальных частных сетей.
Брандмауэры имеют свои ограничения, описанные ниже.
1. Брандмауэр не может защитить от атак, идущих в обход брандмауэра.
Внутренние компьютерные системы могут иметь средства удаленного дос-
тупа к внешнему поставщику услуг Internet. Внутренняя локальная сеть
может иметь модемную стойку, обеспечивающую удаленный доступ к сети
сотрудникам, находящимся в командировке пли работающим дома.
2. Брандмауэр не может защитить от внутренних угроз безопасности, напри-
мер со стороны неудовлетворенного сотрудника или сотрудника, вступив-
шего в сговор с внешним нарушителем.
3. Брандмауэр не может защитить от угрозы передачи инфицированных ви-
русами программ или файлов, В связи с тем что в рамках защищаемых
брандмауэром границ может использоваться множество различных опера-
ционных систем и приложений, для брандмауэра оказывается практически
невозможным проверять все входящие файлы, электронную почту и полу-
чаемые сообщения на предмет наличия вирусов.
Типы брандмауэров
На рис. 16.1, созданном на основе иллюстраций из [SEME96], показано три
типа брандмауэров: брандмауэр, пакетный фильтр, шлюзы уровня приложений и
уровня коммутации. Мы рассмотрим каждый из этих типов по очереди
16 1. ПРИНЦИПЫ РАЗРАБОТКИ БРАНДМАУЭРОВ
623
Iраница lautMrw
(а) Фатырующий маршрутизатор
Внешний узел
Внешнее
соединение
Што> уровня
причинения
(б) Штюз уровня приложения
Внешнее
соединение
Внешний узел
Шлюз уровня
коммутации
Внутренний узел
(в) Шлюз уровня коммутации
Рис. 16.1. Типы брандмауэров
Фильтрующий маршрутизатор
Фильтрующий маршрутизатор (packet-filtering router) принимает решение о
том, передавать по сети поступивший пакет IP дальше или отвергнуть его, на ос-
нове определенного набора правил. Обычно маршрутизатор настраивается таким
образом, чтобы фильтровать пакеты, приходящие в обоих направлениях (т.е. как
извне во внутреннюю сеть, так и из внутренней сети во внешний мир). Правила
624
ГЛАВА 16. БРАНДМАУЭРЫ
фильтрования основываются на значениях полей заголовка ТР, заголовка транс-
портного уровня (задающего транспортный протокол), а также номера порта ТРС
или LDP (определяющего приложение, например SNMP или TELNET).
Пакетный фильтр обычно представлен в виде списка правил, использующих
значения полей заголовка IP или TCP. Если обнаруживается соответствие одно-
му из правил, это правило служит критерием для принятия решения о том.
можно ли передать пакет дальше или же его следует отвергнуть. В отсутствие
соответствия любому из правил выполняется операция, предусмотренная для
использования по умолчанию. Для этого имеются две следующие возможности.
Default = discard. Все, что не разрешено, запрещено.
Default = forward. Все, что не запрещено, разрешено.
Очевидно, что первая политика соответствует более консервативному подходу.
Изначально все оказывается запрещенным, и добавление конкретных служб
осуществляется для каждой из них в отдельности. Эта политика более очевидна
для пользователей, по отношению к которым брандмауэр выступает как препят-
ствие. Втирая политика в значительной степени облегчает работу конечных
пользователей, но зато обеспечивает более низкий уровень защиты, поскольку в
данном случае администратору системы зашиты приходится принимать меры по
каждой новой обнаруженной угрозе безопасности.
Таблица 16.1. Примеры правил фильтрации пакетов
action ourhost port theirhost port comment
block * * SPIGOT * Мы им не доверяем
allow OUR-GW 25 * Jr Подключение к нашему SMTP- порту
action ourhost port theirhost port comment
block * ★ ★ * По умолчанию
action ourhost port theirhost port comment
allow * * * 25 Подключение к их SMTP-порту
action arc port dest port flags comment
allow {наши узлы) * * 25 Наши пакеты для их SMTP-портов
allow * 25 * * ACK Их ответы
action sre port dest port flags comment
allow (наши узлы} * * * Наши исходящие вызовы
allow * * ★ * ACK ЙГВ1Г1.' Та Ч.ЧШИ
allow * * * >1024 Поток к узлам» яе яв- ляющимся серверами
16.1 ПРИНЦИПЫ РАЗРАБОТКИ БРАНДМАУЭРОВ
625
В табл. 16.1, взятой из [BELL94], представлены примеры наборов правил для
брандмауэра, использующего фильтрацию пакетов. В каждом наборе правила
применяется “сверху вниз”. Символ “*” в поле обозначает соответствие любому
значению Предполагается, что применяется политика default = discard.
1. Разрешено поступление входящей почты (порт 25 предназначен для вхо-
дящих сообщений SMTP), но только на компьютер, выполняющий роль
шлюза (OUR-GW). Однако поступление почты с внешнего узла SPIGOT
блокируется, поскольку этот узел печально известен рассылкой сообщений
электронной почты, содержащих очень большие по объему файлы.
2. Это явное использование политики по умолчанию Все наборы правил не-
явно включают это правило в качестве последнего правила.
3. Этот набор правил указывает, что любому узлу внутренней сети позволено
отправлять сообщения во внешний мир. Пакет TCP, в котором в качестве
порта получателя указан порт 25, направляется на SMTP-сервер системы
получателя. Проблема применения этого правила заключается в том, что
использование порта 25 для SMTP является только значением по умолча-
нию. Внешняя машина может быть сконфигурирована таким образом, что
порт 25 оказывается доступен для какого либо другого приложения. При
использовании этого правила в указанной форме нарушитель может полу-
чить доступ к внутренним компьютерам сети, отправляя пакеты, в кото-
рых отправителем указан порт 25.
4. Этот набор правил решает проблему, возникающую с набором правил С. В
данном наборе правил используется одна особенность соединений TCP, за
ключающаяся в том, что после создания соединения устанавливается флаг
АСК сегмента TCP, что подтверждает отправку сегмента другой стороной.
Таким образом, данный набор правил разрешает пропускать IP-пакеты, в
которых IP-адрес источника должен быть из указанною списка адресов
внутренних узлов сети, а в качестве порта назначения TCP указан порт 25.
Кроме того, пропускаются входящие пакеты, в которых источником ука-
зан порт с номером 25 и установлен флаг АСК в сегменте TCP. Обратите
внимание на то, что здесь однозначно указаны системы отправителя и по-
лучателя, чтобы явно определить правила.
5. Данный набор правил представляет собой один из подходов к обработке
FTP-соединений. Для каждого такого соединения используется два ТСР-
соединения: управляющее соединение, предназначенное для настройки ка-
нала передачи файлов, и соединение для передачи данных, посредством
которого файлы передаются. Соединение для передачи данных использует
другой номер порта, который назначается динамически для данного со-
единения. Большинство серверов, а значит, и большинство целей наруши-
телей ориентированы на порты с малыми номерами. Исходящие же вызо-
вы обычно используют порты с более высокими номерами, чаще всего пре-
вышающими 1023. Таким образом, при использовании данного набора
правил допускаются следующие пакеты.
626
ГЛАВА 16. БРАНДМАУЭРЫ
* Пакеты, отправляемые из внутренней сети.
• Пакеты ответов на те запросы для установления соединений, которые
были инициализированы компьютером внутренней сети.
• Пакеты с указанными высокими номерами портов, предназначенные
для машин внутренней сети.
6. Данная схема требует настройки системы таким образом, чтобы задейство-
вались только порты с подходящими номерами.
С помощью набора правил Е выявляется проблема работы с приложениями на
уровне фильтрации пакетов. Другим подходом к решению задачи организации
работы с FTP и другими подобными приложениями является использование
шлюза уровня приложения, описываемого ниже.
Одно из достоинств фильтрующего маршрутизатора связано с его простотой.
Кроме того, пакетные фильтры, как правило, остаются незаметными для поль-
зователей и обеспечивают высокую скорость работы. Основными недостатками
являются сложность верного выбора правил фильтрации и отсутствие средств
аутентификации.
В [SEME96] перечислены некоторые из типов атак, которые могут предпри-
ниматься в отношении нарушения системы зашиты фильтрующего маршрутиза-
тора, а также соответствующие контрмеры.
Подмена IP-адреса. Нарушитель передает извне пакеты, в которых поле
отправителя содержит IP-адрес внутреннего узла сети. Нарушитель надеет-
ся, что использование такого адреса даст возможность проникнуть в сис-
темы, в которых реализуется простая защита адресов источника, пропус-
кающая пакеты с адресами внутренних узлов, считающихся надежными.
Контрмерой является отторжение пакетов с внутренними адресами источ-
ника, поступивших извне
Использование маршрутизации от источника. Отправитель указывает
маршрут, по которому пакет должен пересылаться по Internet, в надежде
на то, что удастся обойти средства защиты, не анализирующие информа-
цию о маршрутизации, задаваемую отправителем. Контрмера — запрет
прохождения всех пакетов, использующих данную возможность.
Разделение на мелкие фрагменты. Нарушитель использует опцию фраг-
ментации IP-пакетов для создания фрагментов исключительно малой дли-
ны, чтобы информация заголовка TCP попала в отдельный фрагмент. Этот
тип атаки ставит своей задачей обойти правила фильтрации пакетов, ис-
пользующие информацию заголовка TCP. Нарушитель надеется, что
фильтрующим маршрутизатором будет просмотрен только первый пакет, а
остальные фрагменты будут пропущены. Контрмера — отторжение всех
пакетов, в которых указан протокол TCP, а значение параметра Fragment
Offset протокола IP равно 1.
Шлюз урон ня приложения
Шлюз уровня приложения, который также часто называют прокси-сервером
(proxy server), работает как ретранслятор данных уровня приложения (см.
рис. 16.1(6)). Пользователь связывается с таким шлюзом с помощью построенно-
16.1 ПРИНЦИПЫ РАЗРАБОТКИ БРАНДМАУЭРОВ
627
го па основе TCP/IP приложения, такого как Telnet или 1’1'Р. а шлюз запраши-
вает у этого пользователя имя удаленного узла, к которому необходимо полу-
чить доступ. Если пользователь отвечает на этот запрос, сообщая правильный
идентификатор пользователя и информацию, необходимую для аутентификации,
то шлюз связывается с соответствующим приложением на удаленном узле и
ретранслирует сегменты TCP, содержащие данные приложения. Если в шлюзе не
реализована поддержка прокси-сервером того или иного приложения, соответст-
вующий сервис не предоставляется и данные соответствующего типа не могут
пройти через брандмауэр Более того, шлюз можно настроить, чтобы он поддер-
живал только определенные возможности приложения, которые администратор
сети считает приемлемыми с точки зрения обеспечения защиты.
В общем случае шлюзы уровня приложения обеспечивают более надежную
защиту, чем фильтры пакетов. Вместо того чтобы проверять многочисленные
возможные комбинации разрешений и запретов на уровне TCP и IP, шлюз уров-
ня приложения обеспечивает работу лишь ограниченного числа приложений.
Кроме того, при этом легко протоколировать и контролировать весь входящий
поток данных на уровне приложения.
Основным недостатком шлюзов данного типа является дополнительная на-
грузка на процессир, которую требует каждое соединение. На самом деле между
двумя конечными пользователями устанавливается два связанных соединения и
шлюзу приходится проверять весь поток данных в обоих направлениях и пере-
правлять его дальше.
Шлюз уровня коммутации
Третьим типом брандмауэров являются шлюзы уровня коммутации
(рис. 16.1(b)). Данный шлюз может быть реализован как в виде отдельной ком-
пьютерной системы, так и в виде специальной функции шлюза уровня приложе-
ния, предлагаемой для некоторых приложений. Шлюзы уровня коммутации не
разрешают внешним узлам устанавливать сквозные TCP-соединения с узлами
внутренней сети, а вместо этого устанавливают два TCP-соединения: одно между
самим шлюзом п внутренним узлом, а второе — между шлюзом и внешним уз
лом. После того как оба соединения установлены, шлюз обычно ретранслирует
сегменты TCP от одного соединения к другому, не проверяя их содержимого.
Защита реализуется путем разрешения или запрета тех или иных соединений.
Типичным случаем применения шлюзов уровня коммутации является ситуа
ция, когда системный администратор доверяет внутренним пользователям. Шлюз
можно настроить таким образом, чтобы он поддерживал работу на уровне прило-
жений или функции прокси-сервера для входящих соединений и функции шлюза
уровня коммутации — для исходящих. В такой конфигурации шлюз сталкивается
с высокими дополнительными нагрузками, связанными с необходимостью провер-
ки входящих данных приложений на предмет выполнения ими запрещенных
функций, однако такой нагрузки для исходящих данных можно избежать
Примером реализации шлюза уровня коммутации является пакет SOCKS
[KOBL92]. Версия 5 этого пакета описана в документе RFC 1928. В этом доку-
менте RFC пакет SOCKS определяется следующим образом.
628
ГЛАВА 16. БРАНДМАУЭРЫ
“Протокол, описанный в данном документе, должен предоставить базовую
конструкцию для приложений клиент/сервер в доменах TCP и UDP, обес-
печивающую удобное и безопасное использование сервисов брандмауэра се-
ти. Протокол концептуально является “прослойкой” между уровнем при-
ложения и транспортным уровнем, а потому не обеспечивает сервис шлюза
сетевого уровня, например пересылку сообщений ICMP”.
В пакет SOCKS включены следующие компоненты.
Сервер SOCKS, работающий в составе брандмауэра на базе UNIX.
Библиотека клиента SOCKS, работающая на внутренних узлах, защищен-
ных брандмауэром.
Адаптированные для использования с SOCKS стандартные клиентские
приложения типа FTP и TELNET. Подобная реализация протокола SOCKS
обычно требует перекомпиляции или перекомпоновки клиентских исполь-
зующих TCP приложений, чтобы последние получили возможность обра-
щения к соответствующим процедурам из библиотеки SOCKS.
Когда использующему протокол TCP клиенту необходимо установить соедине-
ние с объектом, к которому можно получить доступ только через брандмауэр
(определение факта наличия брандмауэра возложено на реализацию), клиент дол-
жен открыть TCP-соединение с соответствующим SOCKS-портом системы, на кото-
рой установлен SOCKS-сервер. По умолчанию сервис SOCKS использует порт TCP с
номером 1080. Если на запрос об установлении соединения получен положитель-
ный ответ, клиент начинает процесс согласования для выбора метода аутентифи-
кации, проходит аутентификацию в соответствии с выбранным методом, а затем
посылает запрос на ретрансляцию. SOCKS-сервер проверяет поступивший запрос и
либо устанавливает соответствующее соединение, либо посылает отказ. При ис-
пользовании протокола UDP все протекает подобным образом По существу, для
аутентификации пользователя, который намеревается отправлять и получить сег-
менты UDP, открывается специальное соединение TCP и сегменты UDP могут пе-
ресылаться до тех пор, пока указанное соединение TCP остается открытым.
Бастионный узел
Бастионный узел является системой, выбранной администратором брандмау-
эра в качестве критически важной точки в схеме защиты сети. Как правило,
бастионный узел служит платформой для шлюза уровня приложения или шлюза
уровня коммутации. Бастионный узел имеет следующие характеристики.
На аппаратных средствах бастионного узла выполняется защищенная вер-
сия операционной системы, в результате чего бастионный узел оказывает-
ся высоконадежной системой (trusted system).
На бастионном узле устанавливаются только те службы, которые сочтет
необходимыми сетевой администратор. К таким службам относятся при-
ложения-агенты (прокси-службы) типа Telnet, DNS, FTP, SMTP и средства
аутентификации пользователей.
Бастионный узел может требовать дополнительной аутентификации, пре-
жде чем предоставить пользователю доступ к прокси-службам Кроме того,
16.1. ПРИНЦИПЫ РАЗРАБОТКИ БРАНДМАУЭРОВ
629
каждая прокси-служба может выдать запрос на дополнительную аутенти-
фикацию. прежде чем предоставить пользователю доступ.
Каждая прокси-служба настроена для поддержки только определенного
набора команд из общего стандартного множества команд, поддерживае-
мых приложением.
Каждая прокси-служба настроена таким образом, чтобы предоставлять
доступ только к определенным узлам. Это значит, что вышеупомянутый
ограниченный набор команд и возможностей оказывается применимым
только к определенной части систем защищаемой сети.
Каждая прокси-служба обеспечивает широкие возможности для контроля,
регистрируя весь поток данных, каждое соединение и длительность ис-
пользования каждого соединения. Контрольный журнал является исклю-
чительно важным средством выявления попыток вторжения.
Каждый прокси-модуль представляет собой небольшой программный па-
кет, специально созданный для защиты сети. Ввиду относительной просто-
ты эти модули легко проверить с целью убедиться в отсутствии возмож-
ных изъянов в программном коде с точки зрения защиты. Например, ис-
ходный текст типичного приложения электронной почты в UNIX может
содержать свыше 20000 строк, тогда как исходный текст прокси-модуля
электронной почты может содержать менее 1000 строк (SEME96J.
Каждый прокси-модуль не зависит от других прокси-модулей бастионното
узла. Если г-ыникает проблема с работой какого-либо модуля или в нем
выявляется изъян зашиты, такой модуль может быть удален без каких-
либо последствий для других прокси-приложений. Кроме того, если поль-
зователям потребуется доступ к новой счужбе, администратор сети может
просто установить требуемый прокси-модуль на бастионный узел.
Прокси-модуль обычно не предоставляет никакого доступа к диску, кроме
чтения своего файла исходной конфигурации. Это делает задачу внедрения
‘'троянского коня” и других опасных файлов на бастионном узле очень
трудной для нарушителя.
Каждый прокси-модуль работает как непривилегированный пользователь
личном и защищенном каталоге бастионного узла.
Конфигурации брандмауэров
Помимо конфигурации, когда брандмауэр представлен отдельной системой
типа фильтрующего маршрутизатора или шлюзом (см. рис. 16.1), возможны и
более сложные конфигурации, и такие более сложные конфигурации на самом
деле используются чаще всего. На рис. 16.2, в основу которого положены соот-
ветствующие рисуньи из [SEME96], показаны три чаше всего используемые
конфигурации брандмауэров. Мы рассмотрим все эти конфигурации па очереди.
В конфигурации брандмауэра с экранированным одноточечным бастионным
узлом, показанной на рис. 16.2(a), брандмауэр состоит из двух систем: фильт-
рующего маршрутизатора и бастионного узла. Как правило, маршрутизатор при
этом настраивается следующим образом.
630
ГЛАВА 16. БРАНДМАУЭРЫ
(а) Брандмауэр с экранированным одноточечным бастионным узлом
(б) Брандмауэр с экранированным двухточечным бастионным узлом
Рис. 16.2. Конфигурации брандмауэров
1. Из потока данных, поступающего из Internet, пропускаются только IP-
пакеты, предназначенные для бастионного узла.
2. Из потока данных, поступающего из внутренней сети, пропускаются толь-
ко пакеты, исходящие из бастионного узла.
Бастионный узел выполняет задачи аутентификации и функции прокси-
сервера. Эта конфигурация обеспечивает гораздо более высокий уровень защиты,
16.1 ПРИНЦИПЫ РАЗРАБОТКИ БРАНДМАУЭРОВ
631
чем просто фильтрующий маршрутизатор или шлюз уровня приложения по сле-
дующим причинам. Во-первых, в данной конфигурации реализована фильтрация
как на пакетном уровне, так и на уровне приложения, что обеспечивает достаточ-
ную гибкость в выборе политики защиты. Во-вторых, нарушителю для вторжения
во внутреннюю сеть приходится преодолевать защиту' двух отдельных систем.
Данная конфигурация оказывается достаточно гибкой в плане прямого досту-
па к Internet. Например, внутренняя сеть может содержать общедоступный ин-
формационный сервер типа Web-сервера, для которого не требуется высокий
уровень защиты. В таком случае маршрутизатор можно настроить так, чтобы он
позволял прямой доступ к данному серверу из Internet.
Если фильтрующий маршрутизатор в только что описанной конфигурации с
одноточечным бастионным узлом будет скомпрометирован (т.е. его защита будет
взломана), поток данных из Internet может пойти прямо через маршрутизатор в
узлы внутренней частной сети Брандмауэр с экранированным двухточечным
бастионным узлом сконфигурирован таз;, чтобы физически исключить возмож-
ность появления такой бреши в системе зашиты (рис. 16.2(6)). Все преимущества
двухуровневой защиты, которыми обладает описанная выше конфигурация, ос-
таются при этом в силе. Опять же, информационный сервер и некоторые другие
узлы могут быть подключены к маршрутизатору напрямую, если это согласуется
с принятой политикой защиты.
Конфигурация брандмауэра с экранированной подсетью (рис. 16.2(b)) из всех
рассматриваемых здесь вариантов обеспечивает самую надежную защиту. В этой
конфигурации установлено два фильтрующих маршрутизатора: один между бас-
тионным узлом и Internet, а второй — между бастионным узлом и внутренней
сетью. Данная конфигурация создает изолированную подсеть, которая может со-
стоять только из бастионного узла, но может также иметь и один или несколько
информационных серверов, а также модемы, с помощью которых осуществляет-
ся удаленный доступ к сети. Обычно к узлам, входящим в состав экранирован-
ной подсети, можнч получить доступ как из Internet, так и из внутренней сети,
однако поток данных сквозь подсеть блокируется. Данная конфигурация облада-
ет следующими преимуществами.
Предусмотрено три уровня защиты от вторжения нарушителей.
Внешний маршрутизатор объявляет в Internet только о существовании эк-
ранированной подсети, поэтому внутренняя сеть остаётся для Internet не-
видимой.
Точно так же внутренний маршрутизатор сообщает узлам внутренней сети
только о существовании экранированной подсети, поэтому системы внутрен-
ней сети не имеют возможности проложить прямые маршруты в Internet.
16.2. Высокой;
с
ie системы >
Один из способов расширения возможностей системы противостоять вторже-
ниям нарушителей и вредоносных программ заключается в реализации техноло-
гии высоконадежных систем. Следующий раздел содержит краткий обзор соот-
ветствующего предмета Мы начнем с рассмотрения некоторых базовых концеп-
ций управления доступом к данным.
632
ГЛАВА 16. БРАНДМАУЭРЫ
Управление доступом к данным
Вслед за получением доступа к системе пользователь получает доступ к одно-
му или нескольким узлам и приложениям. Как правило, такое положение дел не
согласуется с требованиями безопасности для тех систем, в которых хранятся
важные данные. В ходе выполнения процедуры доступа к системе пользователь
может быть идентифицирован. Для каждого пользователя может иметься соот-
ветствующий файл профиля, в котором содержится список всех допустимых для
него действий и разрешений доступа к файлам. Операционная система может на
основе файла профиля ввести соответствующие правила работы. Но система
управления доступом к базам данных должна контролировать доступ не только
к файлам баз данных, но и к отдельным записям и даже к отдельным полям.
Например, список сотрудников компании может быть доступным для любого ра-
ботника административного отдела, но только некоторым из них должен быть
разрешен доступ к информации о зарплатах сотрудников. Кроме того, здесь мо-
жет быть и несколько уровней детализации. Если доступ к файлам и использо-
вание приложений может разрешить операционная система, после чего уже не
проводится никаких проверок на безопасность, то система управления базами
данных должна принимать решение о разрешении или запрещении доступа при
каждой попытке доступа к данным. Такое решение должно зависеть не только
от идентификатора пользователя, но и от тою, какие данные и какие части дан-
ных запрашиваются, и даже от того, какие данные были открыты данному
пользователю раньше.
Общая модель управления доступом, реализуемая на уровне файловой систе-
мы или системы управления базами данных, представляется в виде матрицы
доступа (рис. 16.3(a)). Основные элементы данной модели перечислены ниже
Субъект Сущность, которая может получать доступ к объектам. В общем
случае понятие субъекта отождествляется с понятием процесса. Любой поль-
зователь или приложение получают доступ к объекту с помощью процесса,
представляющего этого пользователя или соответствующее приложение.
Объект. Сущность, доступ к которой контролируется. Примерами являют-
ся файлы, их части, программы и сегменты памяти.
Право доступа. Способ доступа субъекта к объекту. Примерами являются
чтение, запись или выполнение.
По одной оси матрицы представлены идентифицированные субъекты, кото-
рые могут пытаться получить доступ к данным. Обычно список состоит из от-
дельных пользователей или пользовательских групп, хотя можно также контро-
лировать доступ терминалов, узлов или приложений. На другой оси отображены
объекты, к которым субъекты могут получать доступ. При самом высоким уров-
не детализации объектами могут быть отдельные поля базы данных. Более об-
щие группы (т.е. записи, файлы или же вся база данных в целом) тоже могут
быть объектами, представленными в матрице. Каждый элемент матрицы указы-
вает права доступа соответствующего субъекта к соответствующему объекту.
На практике матрица доступа обычно является почти пустой и реализуется в
виде декомпозиции одним из следующих двух методов. Матрица может быть
разделена на столбцы, в результате чего получаются списки управления досту-
пом (рис. 16.3(6)). Для каждого объекта в списке управления доступом приво-
16.2. ВЫСОКОНАДЕЖНЫЕ СИСТЕМЫ
633
Program 1
SegmentA
SegmentB
Process!
Process2
Чтение Выполнение Чтение Запигь
Чгечпе
(a> Матрица доступа
.
Список miравлення доступом для Pi < igraml
Process 1 (Чтение, Выполнение)
Список управления Доступом дли ScgmenlA
Process! (Чтение, Запись)
Список управления доступом для SegmentB
Ptocess2 (Чтение)
(б) Список управления доступом
Перечень возможностей для Process!
Program! (Чтение, Выполнение)
SegmciitA (Чтение, Запись)
Перечень возможностей Для Process?
Segment В (Чтение)
Перечень возможностей
Рис. 16.3. Структуры управления доступом
дятся пользователи и их права доступа к данному объекту. Список может со-
держать элемент, используемый по умолчанию, или элемент открытого доступа.
Использование этого элемента позволяет рассматривать пользователей, не пред-
ставленных в списке, как пользователей, имеющих определенные по умолчанию
права доступа. Элементами списка могут быть как отдельные пользователи, так
и группы пользователей,
В результате декомпозиции по строкам создаются мандаты возможностей
(рис. 16.3(b)). Мандат возможностей определяет для данного пользователя объ-
екты и операции, на использование которых пользователь имеет разрешение.
Каждый пользователь получает несколько мандатов возможностей, а кроме того,
пользователь может обладать привилегией на использование мандатов других
пользователей и предоставлять другим пользователям право использовать свои.
Поскольку мандаты могут быть распределены по всей системе, задача их защиты
634
ГЛАВА 16. БРАНДМАУЭРЫ
представляет собой гораздо более сложную задачу, чем задача защиты списков
управления доступом. В частности, необходимо предотвратить возможность
фальсификации мандатов. Одним из способов решения задачи защиты мандатов
является возложение задачи их хранения на операционную систему, которая
может поместить их в область, недоступную пользователям.
Идея использования высоконадежных систем
Многие вопросы, которые мы обсуждали на страницах этой книги до сих пор,
были связаны с проблемой защиты отдельного сообщения или объекта от пас-
сивных или активных атак отдельного пользователя. Однако существует еще од-
на задача с не менее широкой областью применения, заключающаяся в защите
данных или ресурсов на основе уровней безопасности. Эта задача часто встреча-
ется в военном деле, где информация обычно классифицируется как открытая
(U — unclassified), для служебного пользования (С — confidential), секретная
(S — secret), совершенно секретная (TS — top secret) или как-то иначе. Данный
подход применяется и в других областях, где информацию можно разбить на
большие категории, а пользователям предоставить доступ к данным той или
иной категории. Например, самый высокий уровень безопасности может требо-
ваться для документов и данных стратегического планирования предприятия, к
которым должны иметь доступ только руководители предприятия и их помощ-
ники, далее могут идти важные финансовые и персональные данные, к которым
может иметь доступ только администрация, и т.д.
Когда для данных определено несколько категорий или уровней безопасности,
говорят о многоуровневой системе безопасности. Общим требованием много-
уровневой системы безопасности является то, что субъект на более высоком
уровне не может сообщить информацию субъекту на более низком или несрав-
нимом уровне, если только соответствующий ноток не вызван действием пользо-
вателя, имеющего право на доступ к данной информации. Для упрощения реа-
лизации данное требование записывается в виде пары более простых требований,
а именно предполагается, что в многоуровневой системе безопасности должны
выполняться следующие требования.
Запрет чтения вверх. Любому субъекту разрешается выполнять операции
чтения только в отношении объектов с тем же или более низким уровнем
безопасности. Это требование часто называют простым требованием безо-
пасности (.simple security property).
Запрет записи вниз. Субъект может выполнять операции записи только в
отношении объектов с тем же или более высоким уровнем безопасности,
Это требование часто называют свойством * (*-property), что произносится
как “свойство звездочка”.1'
Сам символ здесь не означает ровно ничего. Просто никто не смог придумать подходящего
названия для этого свойства в ходе написания первого отчета ло этой модели. “Звездочка” ока-
залась замещающим символом в черновике отчета, чтобы с помощью текстового редактора
можно было быстро найти этот символ и заменить его, как только будет придумано название
для данного свойства. Но названия предложено не было, и отчет был опубликован с летавши
мися в нем “звездочками"
16.2. ВЫСОКОНАДЕЖНЫЕ СИСТЕМЫ
636
Аккуратная реализациях обоих правил обеспечивает многоуровневую систему
безопасности. Данный подход был апробирован в системах обработки данных,
где после долгих исследований была выработана концепция монитора обраще-
ний (reference monitor). Схема соответствующего подхода представлена на
рис. 16.4. Монитор обращений представляет собой контролирующий элемент,
управляющий доступом субъектов к объектам на основе параметров безопасно-
сти субъектов и объектов, реализованный на аппаратном уровне и уровне опера-
ционной системы компьютера. Монитор обращений имеет доступ к файлу, назы-
ваемому базой данных ядра безопасности, где указаны привилегии доступа
(категории допуска) субъектов и атрибуты зашиты (грифы секретности) объек-
тов. Монитор обращений реализует два упомянутых выше требования (запрет
чтения вверх и запрет записи вниз) и ему присущи следующие характеристики.
Неизбежное посредничество. Правила безопасности навязываются при любой
попытке получения доступа, а не только, скажем, при открытии файлов.
Изолированность. Монитор обращений и его база данных защищены от
внесения несанкционированных изменений.
Доказуемость. Корректность работы монитора обращений должна быть до-
казуемой. Это значит, что должна иметься возможность доказать матема-
тически, что монитор обращений обеспечивает выполнение правил безо-
пасности, гарантируя неизбежное посредничество и изолированность.
Субъекты
Мони гор
обращения
I политика.
Гу**ъек1-. категоуич
допуска
Объект: рифь,
секретно, ти
Рис. 16.4. Схема концепции монитора обращений
636
ГЛАВА 16. БРАНДМАУЭРЫ
Эти требования являются жесткими. Требование неизбежной опосредованно-
сти означает, что любая операция доступа к данным в оперативной памяти, на
диске или магнитной ленте должна быть опосредованной. Чисто программная
реализапия приводит к слишком большим потерям производительности и поэто-
му на практике не применяется. Практическое решение находится в области хо-
тя бы частичной аппаратной реализации системы. Требование изолированности
означает, что у нарушителя, независимо от уровня его квалификации, не долж-
но быть возможности изменить логику работы монитора обращений или содер-
жимое базы данных ядра безопасности. Наконец, требование математической
доказуемости в некоторых отношениях оказывается настолько сложным, на-
сколько сложной оказывается задача создания универсального компьютера. Сис-
тема. для которой обеспечена такая доказуемость, называется высоконадежной
системой (trusted system).
На рис. 16.4 показан также файл аудита. В файле аудита регистрируются со-
бытия, важные с точки зрения обеспечения безопасности, например выявленные
нарушения безопасности или авторизованные изменения в базе данных ядра
безопасности.
Министерство обороны США, с целью решения собственных задач и предос-
тавления помощи в решении соответствующих задач другим организациям, в
1981 г. учредило Центр компьютерной безопасности (CSC — Computer Security
Center) в рамках Национального агентства по безопасности (NSA — National Se-
curity Agency). Одной из целей этого центра было содействие распространению и
доступности высоконадежных компьютерных систем. Данная цель достигается с
помощью Программы оценки коммерческих продуктов (Commercial Product
Evaluation Program), начавшей работу по инициативе этого центра. В рамках
этой программы центр, по сути, пытается оценивать имеющиеся на рынке ком-
мерческие продукты на предмет их соответствия описанным выше требованиям.
Центр компьютерной безопасности классифицирует продукты по диапазону
предлагаемых ими средств защиты. Эти сведения требуются Министерству обо-
роны, но они публикуются и для шипок ой общественности. Следовательно, эти
данные могут выступать в качестве руководства и для потребителей, приобре-
тающих предлагаемое на рынке стандартное оборудование
Защита от „троянских коней"
Одним из способов защиты от атаки “троянским конем” является использова-
ние защищенной, высоконадежной операционной системы. Пример такой схемы
защиты показан на рис. 16.5. В данном случае “троянский конь” используется
для обхода стандартного механизма зашиты, применяемого большинством фай-
ловых и операционных систем: списка управления доступом. В нашем примере
пользователь Доу обращается с помощью некоторой программы к файлу, содер-
жащему критически важную с точки зрения безопасности строку
“CPE1704TKS”. Этот пользователь создал файл с правом чтения и записи, пре-
доставляемым только программам, работающим от его имени. Это значит, что
получить доступ к этому файлу могут только процессы, владельцем которых яв-
ляется Доу.
16-2. ВЫСОКОНАДЕЖНЫЕ СИСТЕМЫ
637
Рис. 16.5. "Троянский конь’’ и защищенная операционная система
Атака с использованием “троянского коня" начинается с того, что имеющий
враждебные планы пользователь Дрейк получает законный доступ к системе и
устанавтивает в ней программу “троянского коня” и личный файл, который бу-
дет выполнять в ходе атаки роль “кармана” Дрейк устанавливает себе право
чтения и записи для этого файла, а пользователю Доу — право только записи в
файл (рис. 16.5(a)). Теперь Дрейк провоцирует Доу запустить программу
“троянского коня”, например представив ее как новую полезную утилиту. Когда
программа выясняет, что она запущена пользователем Доу, она копирует сек-
ретную строку из файла Доу в “карман” Дрейка (рис. 16.5(6)). И операция чте-
ния, и операция записи в данном случае полностью соответствуют ограничени-
ям, налагаемым с помощью списка управления доступом. Дрейку остается толь-
к проверить полученный файл, чтобы узнать значение секретной строки.
Теперь рассмотрим тот же сценарий, но применительно к защищенной опера-
ционной системе (рис. 16.5(b)). В этом случае уровни допуска присваиваются
субъектам во время входа в систему на основе критериев, учитывающих, помимо
идентификатора пользователя и пароля, например, и терминал, с которого осу-
ществляется вход в систему. В данном примере имеется два уровня допуска —
секретный и открытый (предполагается, что секретный уровень допуска выше
открытого). Процессам, инициируемым Доу, и его файлам с данными присвоен
гриф секретности, а файлы и программы Дрейка имеют статус открытых. Если
Доу запустит программу Дрейка, содержащую "троянского коня” (рис. 16.5(г)),
она получит статус секретной, как процесс, инициированный Доу. Б силу про-
стого свойства безопасности данная программа сможет прочитать секретную
638
ГЛАВА 16 БРАНДМАУЭРЫ
строку. Но когда программа попытается сохранить данную строку в открытом
файле (в “кармане” Дрейка), это приведет к нарушению правила * и попытка
будет пресечена монитором обращений. Таким образом, попытка записи в файл-
“карман” будет запрещена, даже если она разрешается списком управления дос-
тупом: политика безопасности имеет более высокий приоритет в сравнении с ме-
ханизмом списков управления доступом.
16.3. Рекомендуемые источники дополнительной
Двумя классическими работами на тему брандмауэров, до сих пор заслужи-
вающими самого пристального внимания, являются [CHES94] и [СНАР95] Хоро-
шо обзорные статьи на ту же тему можно найти в [LOD198], [OPPL97] и [BELL94J.
Серьезное описание высоконадежных компьютерных систем вы найдете в
[GASS88J. Неплохим источником информации является [PFLE97]. Репринты не-
которых важных статей по этой тематике включены в [ABRA87],
ABRA87 Anrams, М and Podell, Н Computer and Network Security. Los Alamitos, CA.
IEEE Computer Society Press, 1987
BELL94 Bellovin, 6., and Cheswick, W. “Network Firewalls", IEE Communications Magazine,
September 1994
CHAP95 Chapman, D and Zwicky, E Building Internet Firewalls. Sebastopol, CA- O’Reilly, 1995
CHES94 Cheswick, W. and Bellovin, S., Firewalls ana Internet Security. Repelling the Wily
Hacker Reading, MA Addison-Wesley. 1994
GASS88 Gasser, M Building a Secure Computer System New York Van Nostrand Rein
hold, 1986
LODI98 Lodin S„ and Schuba, C. “Firewalls Fend Oft Invasions from the Net.’ IEEE Spec-
trum, February 1998
OPPL97 Opphger, R "Internet Security Firewalls and Beyond." Communications of the ACM
May 1997
PFLE97 Pfleeger, C. Security in Computing. Upper Saddle River, NJ Prentice Hall, 1997
3
16.4.
t
1, Необходимость правила “запрет чтения вверх” для многоуровневой систе-
мы безопасности достаточно очевидна. Чем продиктована необходимость
использования правила “запрет записи вниз”?
2. На рис. 16.5 одно звено в цепочке выполняемого “троянским конем” ко-
пирования с последующим просмотром разрывается. Но имеется два дру-
гих возможных варианта проведения атаки Дрейком: Дрейк может войти
в систему и попытаться прочитать строку непосредственно, и,кроме того,
Дрейк может попытаться присвоить файл у-“карману" статус секретного.
Сможет ли монитор обращений пресечь эти попытки?
16.3. РЕКОМЕНДУЕМЫЕ ИСТОЧНИКИ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ 639
Словарь терминов
При изучении Империи, Арракиса и вообще всей культуры, по
родившей Моад'Диба, может встретиться немало незнакомых
терминов. Углубление понимания является вполне похвальной
целью, поэтому ниже приводятся необходимые определения и
пояснения
Франк Херберт (Frank Herbert). Дюна (Dune)
Определения некоторых терминов для этого словаря в
оригинальном (англоязычном) издании книги взяты из
Словаря терминологии по компьютерной безопасности
(Glossary of Computer Security Terminology) [NISTO1]. Здесь
они отмечены звездочкой. я*
Абсолютная защищенность. Защищенность даже от
противника с безграничными возможностями по времени и
по вычислительным ресурсам.
Алгоритм RSА. Алгоритм шифрования с открытым
ключом, основанный на использовании возведения в сте-
пень в арифметике классов вычетов Является единствен-
ным алгоритмом шифрования с открытым ключом, полу-
чившим широкое распространение и считающимся доста-
точно защищенным.
Асимметричное шифрование. Криптосистема, в кото-
рой шифрование и дешифрование выполняются с использо-
ванием двух разных ключей, при этом один из ключей на-
зывается открытым ключом, а другой — личным. То же,
чго и шифрование с открытым ключом.
Атаки воспроизведения. Атака, при которой копия ус-
пешно завершенного процесса авторизации доступа к серви-
су используется кем -то другим для того, чтобы попытаться
повторить команды авторизации.
?Г
Аутентификатор. Дополнительная информация, присоединяемая к сообще-
нию и дающая получателю возможность убедиться в подлинности принятого со-
общения. Аутентификатор может быть как функционально независимым от со-
держимого сообщения (как это имеет месть в случае, например, оказии или
идентификатора источника сообщения), так и быть функцией содержимого (как
в случае значения хэширования или криптографической контрольной суммы).
Аутентификация.* Процесс, используемый для проверки целостности пере-
данных данных, в частности сообщения
Бактерия. Программа, поглощающая ресурсы системы путем воспроизведе-
ния себе подобных.
Биграмма. Последовательность из двух букв. В английском языке и других
языках относительная частота появления биграмм в открытом тексте может
служить для криптоанализа некоторых шифров.
Блочный шифр. Алгоритм симметричной схемы шифрования, в котором не-
который достаточно большой блок битов (как правило, 64 бита) открытого тек-
ста преобразуется как целое в блок шифрованного текста такой же длины.
Вектор инициализации. Случайный блок данных, используемый в начале шиф-
рования открытого текста, состоящего из множества блоков, когда применяется
шифрование со сцеплением шифрованных блоков. Применение векторов инициа-
лизации позволяет помешать атакам на основе известного открытого текста.
Вирус. Программный код, внедренный в программу и внедряющий свои ко-
пии в другие программы. Помимо функции распространения, вирус обычно вы-
полняет еще и некоторую нежелательную для системы функцию.
Высоконадежная система. Компьютер и операционная система, для которых
можно подтвердить реальность реализации данной политики защиты.
Генератор псевдослучайных чисел. Функция, детерминированным образом
производящая последовательность чисел, кажущуюся статистически случайной
Главный ключ Достаточно долго используемый ключ, который применяет-
ся центром распределения ключей и доверителем для шифрования данных при
передаче сеансовых ключей. Обычно главные ключи распределяются некрипто-
графическими средствами. Также называется ключом для шифрования ключей.
Дешифрование. Перевод шифрованного текста или данных (называемых
шифрованным текстом) в оригинальный текст или данные (называемые откры-
тым текстом). То же, что и расшифровывание.
Дифференциальный криптоанализ. Метод, основанный на применении ре-
зультатов шифрования избранных образцов открытого текста с заданными зна-
чениями XOR-разностей. Значения разностей получаемого при этом шифрован-
ного текста являются той информацией, которая может служить для определе-
ния ключа шифрования.
Диффузия. Криптографический подход, при котором ставится цель замас-
кировать статистические особенности открытого текста путем распределения
влияния каждого отдельного элемента открытого текста на множество элементов
шифрованного текста.
644
СЛОВАРЬ ТЕРМИНОВ
Защищенность по вычислениям. Защищенность по той причине, что затра-
ченные на преодоление защиты время и/или стоимость оказываются слишком
высокими для того, чтобы такое преодоление защиты было реальна
Код. Жесткое правили замены элемента информации (например, буквы, слова,
фразы) другим объектом, не обязательно того же сорта. В общем случае при этом
не ставится цель скрыть смысл. Примерами являются ASCII-коды символов (для
представления каждого символа используется 7 битов) и частотная манипуляция
(каждое двоичное значение представляется определенной частотой).
Код аутентичности сообщения (МАС). Криптографическая контрольная сумма
Конфузия. Криптографический подход, при котором ставится цель сделать
связь между статистическими характеристиками шифрованного текста и значе-
нием ключа шифрования настолько сложной, насколько это вообще возможно.
Это достигается за счет применения сложного алгоритма кодирования, завися-
щего и от ключа, и от вводимых данных.
Криптоанализ. Область криптологии, > которой рассматриваются вопросы
взлома шифров с целью восстановления информации в открытом виде или фаль-
сификации шифрованной информации, которая впоследствии должна быть при-
нята как подлинная.
Криптографическая контрольная сумма. Аутентификатор, являющийся
криптографической функцией как подлежащих аутентификации данных, так и
секретного ключа. Называется также кодом аутентичности сообщения (МАС —
Message Authentication Code).
Криптография. Область криптологии, в которой рассматриваются вопросы
создания алгоритмов шифрования и дешифрования с целью обеспечения гаран-
тий секретности и/или достоверности сообщений.
Криптолигия. Наука о безопасных средствах коммуникации, охватывающая
криптографию и криптоанализ.
Лавинный эффект. Характеристика алгоритма шифрования, в котором малые
изменения в открытом тексте или ключе порождают большие изменения в шифро-
ванном тексте. Для хэш-кола лавинный эффект означает большие изменения в
профиле сообщения, вызываемые малыми изменениями в самом сообщении.
Лазейка. Секретный недокументированный вход в программу, используемый
для того, чтобы получить доступ в обход обычной процедуры аутентификации.
Личный ключ. Один из двух ключей, применяемых в асимметричной схеме
шифрования. Для защищенности связи секретный ключ должен быть известен
только его владельцу.
Логическая бомба Логика, встроенная в компьютерную программу, которая
ждет выполнения в системе определенной комбинации условий. Когда эти усло-
вия удовлетворены, происходит выполнение некоторой функции, имеющей своей
целью несанкционированные действия.
Мандатный контроль за доступом. Средства ограничения доступа к объек-
там, основанные на фиксированных атрибутах безопасности, присваиваемых
пользователям, а также файлам и другим объектам. Эти средства контроля яв-
СЛОВАРЬ ТЕРМИНОВ
646
ляются мандатными (обязательными) в том смысле, что «ни не могут быть из-
менены пользователями или их программами.
Многократное шифрование. Правило использования функции шифрования с
различными ключами с целью получения более сложной зависимости шифро-
ванного текста от открытого.
Многоуровневая система безопасности. Система, в которой реализуется
контроль доступа для множества уровней классификации данных.
Нарушитель. Индивидуум, пытающийся получить или получивший несанк-
ционированный доступ к вычислительной системе или несанкционированные
привилегии в такой системе.
Односторонняя функция. Функция, которая сама легко вычисляется, но
вычисление обратной по отношению к ней практически невозможно.
Односторонняя функция с лазейкой. Функпия, которая сама легко вычис-
ляется, но вычисление обратной для которой практически невозможно, если
только неизвестна определенная конфиденциальная информация.
Оказия. Идентификатор или число, используемые только один раз
Открытый ключ. Один из двух ключей, используемых в асимметричной
схеме шифрования. Открытый ключ делается доступным всем, чтобы его можно
было использовать в паре с соответствующим личным ключом.
Открытый текст. Ввод функции шифрования или вывод функции дешифрования.
Пароль.* Строка символов, используемая для аутентификации объекта.
Знание пароля и связанного с ним идентификатора пользователя рассматривает-
ся как доказательство права на использование возможностей, связываемых с
данным идентификатором пользователя.
Поточный шифр. Алгоритм симметричной схемы шифрования, в котором
выводимый шифрованный текст получается поразрядно или байт за байтом из
Потока вводимого открытого текста.
Профиль сообщения. Функция хэширования.
Разграничительным (.дискреционный) контроль доступа.* Средства ограни-
чения доступа к объектам, основанные на идентификации субъектов и/или
групп, которым они принадлежат. Эти средства являются дискреционными в
том смысле, что субъект с определенными правами доступа имеет возможность
передать свое право (возможно, косвенным образом) любому другому субъекту
(если это не противоречит принятым обязательным ограничениям контроля).
Сеансовый ключ. Временный ключ шифрования, используемый двумя дове-
рителями (принципалами).
Секретный ключ. Ключ, применяемый в системе симметричного шифрова-
ния. Обе участвующие в обмене данными стороны должны совместно использо-
вать один и тот же ключ, который должен оставаться секретным, чтобы связь
оставалась защищенной.
Симметричное шифрование. Криптосистема, при которой шифрование и
дешифрование выполняются с использованием одного и того же ключа. То же,
что и традиционное шифрование.
646
СЛОВАРЬ ТЕРМИНОВ
Сцепление блоков. Процедура схемы симметричного блочного шифрования, в
результате выполнения которой выходной блок данных оказывается зависимым не
только от текущего вводимою блока открытого текста и ключа, но и от раннее
введенных и/или ранее выведенных данных. В результате сцепления блоков два
встречающихся в сообщении одинаковых блока открытого текста порождают раз-
ные блоки шифрованного текста, что должно затруднять криптоанализ
Тайный канал. Канал связи, который дает возможность передавать инфор-
мацию способом, не предусмотренным разработчиками средства коммуникации.
Традиционное шифрование. Симметричное шифрование
“Троянский конь".* Компьютерная программа с кажущимися или действи-
тельно полезными функциями, содержащая дополнительные (скрытые) функции,
тайком использующие законные права выполняющего ее процесса во вред защите.
Функция хэширования. Функция, отображающая блок данных переменной
длины или сообщение в значение фиксированной длины, называемое хэш-кодом.
Подобная функция выбирается таким образом, чтобы при соответствующей за-
щите она обеспечивала аутентификатор данных или сообщения. То же, что и
профиль сообщения
Центр распределения ключей. Система, уполномоченная передавать вре-
менные сеансовые ключи доверителям. Каждый сеансовый ключ передается в
шифрованном виде, для чего используется главный ключ, применяемый центром
распределения ключей совместно с доверителем, которому передаются данные.
Цифровая подпись. Механизм аутентификации, дающий создателю сообще-
ния возможность добавить к сообщению код, который может служить подписью.
Подпись гарантирует аутентичность источника и целостность сообщения.
“Червь”. Программа, которая способна воспроизводить себя, создавая копии,
и пересылать эти копии от компьютера к компьютеру через сетевые соединения.
Будучи принятым системой, “червь" может активизироваться, чтобы продолжить
размножение, и распространяться дальше. Кроме распространения, “червь” обычно
выполняет еще и некоторую нежелательную для системы функцию.
Шифр. Алгоритм шифрования и дешифрования Шифр заменяет имеющий-
ся фрагмент информации (элемент открытого текста) другим объектом с целью
сокрытия смысла, который эта информация несет. Обычно правило замены зави-
сит от секретного ключа.
Шифрование. Преобразование открытого текста или данных в форму непо-
нятного содержимого с помощью обратимой трансляции, основанной на таблице
перевода или алгоритме трансляции.
Шифрование с открытым ключом. Асимметричное шифрование.
Шифрованный текст. Данные вывода алгоритма шифрования, шифрованная
форма сообщения или данных.
Kerberos. Имя, присвоенное системе аутентификации кода проекта Athena.
СЛОВАРЬ ТЕРМИНОВ
647
Сокращения
АН Authentication Header (заголовок аутентификации)
ANSI American National Standards Institute (Амери-канский
национальный институт стандартов)
СВС Cipher Block Chaining (сцепление шифрованных блоков)
CESG Communications-Electronics Security Group (Группа
защиты электронных коммуникаций)
CFB Cipher Feedback (шифрованная обратная связь)
DES Data Encryption Standard (стандарт шифрования данных)
DSA Digital Signature Algorithm (алгоритм цифровой подписи)
DSS Digital Signature Standard (стандарт цифровой подписи)
ЕСВ Electronic Codebook (электронная шифровальная книга)
ESP Encapsulating Security Payload (включающее защиту
содержимое)
FIPS Federal Information Processing Standard (федеральный
стандарт обработки информации)
LAB Internet Architecture Board (Совет по архитектуре
Internet)
IDEA International Data Encryption Algorithm (междуна-
родный алгоритм шифрования данных)
IETF Internet Engineering Task Force (Проблемная группа
проектирования Internet)
TP Internet Protocol (протокол межсетевого взаимодействия)
IPSec IP Security (протокол защиты IP)
ISO International Organization for Standardization (Между-
народная организация no стандартизации)
ITU International Telecommunication Union (Международный
союз телекоммуникаций)
ITU-T ITU Telecommunication Standardization Sector (Сектор стандартизации
Международного союза телекоммуникаций)
IV Initialization Vector (вектор инициализации)
KDC Key Distribution Center (центр распределения ключей)
LAN Local Area Network (локальная сеть)
MAC Message Authentication Code (код аутентичности сообщения)
MIC Message Integrity Code (код целостности сообщения)
MIME Multi-Purpose Internet Mail Extension (многоцелевые расширения элек-
тронной почты в сети Internet)
MDb Message Digest, Version 5 (алгоритм вычисления профиля сообщения,
версия 5)
MTU Maximum Transmission Unit (максимальная единица передачи)
NIST National Institute of Standards and Technology (Национальный институт
стандартов и технологий)
NSA National Security Agency (Управление национальной безопасности)
OFB Output Feedback (обратная связь по выходу)
PGP Pretty Good Privacy (набор алгоритмов и программ шифрования с ис-
пользованием открытых ключей)
PRNG Pseudorandom Number Generator (генератор псевдослучайных чисел)
RFC Request for Comments (серия документов IETF, выпуск которых начат в
1969 году. Содержит описания набора протоколов Internet и связанную
с ними информацию)
RNG Random Number Generator (генератор случайных чисел)
RSA Rivest-Shamir-Adelman (алгоритм Райвеста-Шамира Аделмана)
SET Secure Electronic Transaction (протокол защищенных электронных
транзакций)
SHA Secure Hash Algorithm (защищенный алгоритм хэширования)
SI1S Secure Hash Standard (защищенный стандарт хэширования)
S/MIME Secure MIME (защищенные многоцелевые расширения электронной
почты в сети Internet)
SNMP Simple Network Management Protocol (простой протокол сетевого управ-
ления)
SNMPv3 Simple Network Management Protocol version 3 (простой протокол сете-
вого управления версии 3)
SSL Secure Sockets Layer (протокол защищенных сокетов)
TCP Transmission Control Protocol (протокол управления передачей)
TLS Transport Layer Security (протокол защиты транспортного уровня)
UDP User Datagram Protocol (пользовательский протокол данных)
WAN Wide Area Network (глобальная сеть)
СОКРАЩЕНИЯ
649
Предметный
указатель
А
АН, 486
AutoExec, 612
В
Blowfish, 153
С
CAST 128. 165
сертификат
VeriSign, 468
D
DES, 80; 88; 99
"двойной", 136
"тройной", 136
'тройной" с двумя ключами, 139
"тройной" с тремя ключами, 142
упрощенный, 81
DSS,ЗаО
Е
ESP,486
F
Fortezza, 545
Н
НМАС, 359
I
IDEA, 142
internet, 26
IPSec, 482
ISAKMP, 507; 512
К
Kerberos, 392
L
LUCIFER, 100
M
MAC, 305
MD4, 341
MD5, 335
MIME, 452
О
Oakley, 507
P
PGP, 429
R
radix-64, 435; 475
RC2, 169
RG5, 159
RFC 822, 451
RIPEMD-160, 350
RSA, 226
S
S/MIME, 451
S-DES, 81
SET, 534; 555
SHA-1, 345
SMTP, 452
SSL, 534
S-матрица, 87; 119
T
TLS, 535
X
X.509, 413
z
ZIP, 472
A
ЯВтоМакрос, 612
агент
диспетчера локальной сети, 600
пользователя, 467
списка рассылки, 471
узла, ООО
аддитивный обратный элемент, 273
алгоритм
Евклида, 281
линейный. 264
полиномиальный, 264
экспоненциальный, 264
анализ временных затрат, 235
анализ потока данных, 34; 297
антивирусная защита, 613
арифметика в классах вычетов, 271
аутентификатор, 221
аутентификация, 30; 36; 395; 399,
418; 533
взаимная, 370
двухшаговая, 420
односторонняя, 378
однотаговая, 419
трехшаговая, 420
Б
база данных ядра безопасности, 636
бактерия, 606
барабанные шифровальные машины,
73
бастионный узел, 629
безопасность
информационная, 25
компьютерная, 26
сетевая. 26
бент-функция, 132
брандмауэр, 620
с экранированной подсетью, 632
с экранированным двухточечным
бастионным узлом, 632
с экранированным одноточечным
бастионным узлом, 630
буфер упреждающей выборки, 473
В
вектор инициализации, 537
взаимно простые числа, 270
взломщик, 573
вирус, 605
загрузочный, 610
невидимка, 610
паразитный, 610
полиморфный (мимикрирующий), 610
резидентный, 610
включающий защиту полезный груз.
См. ESP
воспроизведение, 35
вредоносная программа, 602
вторжение, 575
выбор пароля. 583
высоконадежная система, 632; 637
вычет, 271
Г
генератор псевдослучайных чисел
ANSI Х9.17, 204
BBS, 205
полнопериодический. 203
генерирование псевдослучайных
чисел, 201
д
датчик, 594
делитель, 267
децентрализованное управление
ключами, 195
дискретный логарифм, 286
Диффи-Хеллмана алгоритм. 245
диффузия, 93
доказуемость, 636
доступность, 31: 38
дуальная подпись, 560
3
заголовок аутентификации. См, АН
запрет
записи вниз, 635
чтения вверх, 635
защищенная операционная система,
637
защищенная связь, 487
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
665
защищенный список рассылки, 471
14
идентификатор ключа. 438
идентификация преодоления
зашиты, 597
иерархия ключей, 193
извещение, 540
изолированность, 636
имитатор, 573
имитация, 35; 297
индекс числа, 289
интервальный таймер, 594
информационный обмен, 518
истинно случайное число, 478
К
квитирование, 542
китайская теорема об остатках, 284
ключ, 49
главный, 190; 536
записи, 536
личный, 217
открытый, 217
сеансовый, 19и
секретный, 217
код аутентичности сообщения (МАС),
298г 305; 311
код контроля целостности, 494
кодировка MIME, 457
командный макрос, 612
контрольная запись, 591
системная. 591
специальная, 591
конфиденциальность, 30; 36; 533
конфузия. 94
криптоанализ, 51
дифференциальный, 112
линейный, 115
схем с открытым ключом, 225
криптографическая контрольная
сумма, 311
криптографически защищенный
генератор псевдослучайных битов,
206
криптография
с открытым ключом, 214
криптосистема с открытым ключом,
217
критерий независимости битов, 119
критерий следующего бита, 206
Л
лавинный эффект, 108
гарантированный, 126
лазейка. 603 -.ч,
лента однократного использования,
71
логическая бомба. 604
м
макровирус, 611
максимальная единица передачи. См.
МП’
мандат возможностей, 634
марковская модель, 585
маршрут сертификации, 422
маршрутизация, 484
матрица доступа, 633
матрица кодирования, 87
матрица подстановки, 166
метод двусторонней атаки, 138
механизм защиты. 28
многоуровневая система
безопасности, 635
мобильная программа, 615
модель доверия, 448
модель защиты сети, 38
модификация
временных характеристик, 297
последовательности сообщений, 297
содержимого, 297
модификация сообщений, 35
мультипликативный обратный
элемент, 275
мэйнфрейм, 621
Н
наибольший общий делитель, 269
нарушение зашиты, 28; 32
активное, 34
пассивное. 34
нарушитель, 573
начальное инфицирование, 699
невозможность отречения, 31; 37
666
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
независимость, 199 u-
неизбежное посредничество, 636
непредсказуемость, 200
Нидхэма-Шредера схема, 372
номинальная база данных политики
зашиты, 489
О
область Kerberos, 404
область интерпретации. См. DOT
обмен рецептами, 509
обнаружение нарушителей, 588
объект доступа, 633
однородность распределения, 199
односторонность, 315
оказия, 191
омофон, 62
операционный центр, 558
операция
перестановки, 57
подстановки (замены), 57
отзыв
открытого ключа, 450
отзыв сертификата, 418
отказ в обслуживании, 533
открытый текст, 49
отречение. 297
отчет CERT, 482
П
парадокс задачи о днях рождения,
319; 328; 329
пароль, 577
перестановка, 72
повторное туннелирование, 504
подстановка, 57
подстановочно-перестановочная
схема, 95
показатель использования ресурса.
594
поле
доверия владельцу, 446
доверия подписи, 446
соответствия ключа, 446
полезный груз, 513
политика сертификации, 421
помехи в обслуживании, 36
поставщик услуг Internet, 621
право доступа, 633
правонарушитель, 573
преобразование
Уолша, 132
Фурье, 133
проблема разложения на множители,
232
провайдер, 621
проверка паролей
реактивная, 584
упреждающая, 584
прокси-сервер, 627
простое требование безопасности, 635
простое число. 267
протокол межсетевого
взаимодействия, 521
псевдослучайная функция. 551
псевдослучайное число, 478
псевдослучайные числа, 200
пучок защищенных связей, 503
Р
раскрытие содержимого. 297
раскрытие содержимого сообщений.
34
распределение ключей, 188; 236
децентрализованное, 195
распределенная система обнаружения
нарушений, 599
режим
СВС,122; 123
СРВ, 122; 125
ЕСВ, 121; 122
OFB. 122; 126
РСВС, 407; 426
транспортный, 490
туннельный, 490; 491
режимы работы блочных шифров,
121
рейтинг подозрения. 598
рецепт, 509
С
свойства *, 635
связка ключей, 436; 440
сеанс, 536
ПРЕДМЕТНЫЙ УКАЗАГЕЛЬ
667
сегментация, 431
селектор защищенной связи, 48У
сервисная служба защиты, 29
сертификат, 240 &
возвратный, 417
открытого ключа, 240; 413
пользователя, 415
прямой, 417
сжатие данных. 472
сигнатура, 600
вируса. 615
сильная сопротивляемость
коллизиям. 316 ,Л;
сканер сигнатур вирусов, 615
скользящий буфер предыстории, 473
слабая сопротивляемость коллизиям,
315
сложность алгоритма, 262
случайность, Ю9
случайные числа, 198
криптографически генерируемые, 203
содержимое MIME, 454
каноническая форма. 460
собственная форма, 460
соединение, 536
сообщение
многокомпонентное, 458
список отозванных сертификатов,
418
список управления доступом, 633
статистическая аномалия, 597
стеганография, 55
степень доверия, 446
строгий критерий лавинною
эффекта, 118
структура вируса, 607
субъект доступа, 633
субъект сертификации, 422
схема адресации. 522
схема Диффи-Хеллмана, 245
схема шифрования
безусловно защищенная, 53
защищен вал по вычислениям, 54
счетчик, 594
т
табло Виженера, 68
тайный пользователь, 573
теорема
Ферма, 275
Эйлера, 278
теория чисел, 266
технология полного декодирования,
614
транзакция, 555
транспортная смежность, 504
транспорты;» туннельный пучок, 505
требования аутентификации, 297
троянский конь, 604
управление
доступом, 583
доступом к данным. 633
открытыми ключами, 444
управление доступом, 31; 38
управление ключами
автоматизированное, 507
ручное, 507
управляющий вектор, 197
Ф
фильтрующий маршрутизатор, 624
формат BER, 464
функция
Эйлера, 277
функция хэширования, 298; 307
X
хакер, 573
ц
целостность, 30; 37; 533
центр
распределения ключей, 191; 244
сертификации, 413
центральный администратор, 600
цепочка сертификатов, 416
цифровая иммунная система, 615
цифровая подпись, 365; 431
арбитражная, 368
непосредственная, 367
ч
червь, 605
числа, сравнимые по модулю п, 271
668
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
ш
шифр
LUCIFER, 100
блочный, 89
Вернама, 71
Виженера, 68
моноалфавитный, 59
иерестановочный, 72
Плейфейера, 63
подстановочный, 58
полпалфоьитный. 68
поточный, 89
продукционный, 51
Файстеля, 89; 92
Хилла. 65
Цезаря, 58
шифрование
асимметричное, 51
блочное, 89
канальное, 181
с использованием эллиптических
кривых.253
с открытым ключом, 217
симметричное, 48; 51
сквозное, 181
традиционное, 48
шифрованный текст, 49
шлюз
платежной сети, 558
уровня коммутации, 628
уровня приложения, 627
э
экспертная система, 597
электронная почта, 428
эллиптические кривые, 249
над копс-чными полями, 250
эмитент платежной карточки, 558
эмулятор процессора, 614
энергичный обмен, 518
Я
ярлык заши-гы. 469
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
669
Научно-популярное издание
Вильям Столлингс
Криптография и защита сетей:
принципы и практика,
2-е издание
Литературный редактор
Верстка
Художественный редактор
Технический редактор
Корректоры
ИА. Шишкина
В.В. Терещенко
В.Г. Павлютин
Т.Н. Горобец
ЛА Гордиенко, Л.В. Коровкина,
О .В Мишу тина
Издательский дом “Вильямс".
10I5U9, Москва, ул. Лесная, д. 43, стр. 1.
Изд. лиц. ЛР № 090230 от 23.06.99
Госкомитета РФ по печати.
Подписано печать 24.09 2001. Формат 70x100/16.
Гарнитура Times. Печать офсетная.
Уел. печ л. 58,23. Уч.-изд. л. 42,58.
Тираж 5000 экз. Заказ № 1о91.
Отпечатано с диапозитивов в ФГУП "Печатный двор"
Министерства РФ по делам печати,
телерадиовещания и средств массовых коммуникаций.
197110, Санкт Петероург. Чкаловский пр., 15.