книги / Практическая криптография
..pdfСодержание |
|
11 |
|
Глава 1 2 . Алгоритм Диффи-Хеллмана |
231 |
||
12.1 |
Группы |
232 |
|
12.2 |
Базовый алгоритм Диффи-Хеллмана |
233 |
|
12.3 |
Атака посредника |
235 |
|
12.4 |
“Подводные камни” реализации |
237 |
|
12.5 |
Надежные простые числа |
238 |
|
12.6 |
Использование подгрупп меньшегоразмера |
239 |
|
12.7 |
Размер р |
240 |
|
12.8 |
Практические правила |
243 |
|
12.9 |
Что может пойти не так |
244 |
|
Глава 13. Алгоритм RSA |
247 |
||
13.1 |
Введение |
247 |
|
13.2 |
Китайская теорема об остатках |
248 |
|
|
13.2.1 |
Формула Гарнера |
249 |
|
13.2.2 |
Обобщение |
250 |
|
13.2.3 |
Использование |
250 |
|
13.2.4 |
Заключение |
252 |
13.3 |
Умножение по модулю п |
252 |
|
13.4 |
Определение RSA |
253 |
|
|
13.4.1 Создание цифровой подписи с помощью RSA |
254 |
|
|
13.4.2 |
Открытые показатели степеней |
254 |
|
13.4.3 |
Закрытый ключ |
255 |
|
13.4.4 |
Размер п |
257 |
|
13.4.5 |
Генерация ключей RSA |
257 |
13.5 |
“Подводные камни” использованияRSA |
259 |
|
13.6 |
Шифрование |
261 |
|
13.7 |
Подписи |
264 |
|
Глава 14. Введение в криптографические протоколы |
268 |
||
14.1 |
Роли |
|
268 |
14.2 |
Доверие |
269 |
|
|
14.2.1 |
Риск |
271 |
14.3 |
Стимул |
271 |
|
14.4 |
Доверие в криптографических протоколах |
274 |
|
14.5 |
Сообщения и действия |
275 |
|
|
14.5.1 |
Транспортный уровень |
275 |
|
14.5.2 |
Идентификация протоколов и сообщений |
276 |
|
14.5.3 |
Кодирование и анализ сообщений |
277 |
|
14.5.4 |
Состояние выполнения протокола |
278 |
|
14.5.5 |
Ошибки |
279 |
|
14.5.6 |
Воспроизведение и повторение |
281 |
12 |
|
|
Содержание |
Глава 15. Протокол согласования ключей |
284 |
||
15.1 |
Окружение |
284 |
|
15.2 |
Первая попытка |
285 |
|
15.3 |
Пусть всегда будут протоколы! |
287 |
|
15.4 |
Соглашение об аутентификации |
288 |
|
15.5 |
Вторая попытка |
289 |
|
15.6 |
Третья попытка |
290 |
|
15.7 |
Окончательная версия протокола |
292 |
|
15.8 |
Анализ протокола с различных точек зрения |
294 |
|
|
15.8.1 |
Точка зрения пользователя А |
294 |
|
15.8.2 |
Точка зрения пользователя Б |
295 |
|
15.8.3 |
Точка зрения злоумышленника |
295 |
|
15.8.4 |
Взлом ключа |
297 |
15.9 |
Вычислительная сложность протокола |
298 |
|
|
15.9.1 |
Методы оптимизации |
299 |
15.10 Сложность протокола |
299 |
||
15.11 |
Небольшое предупреждение |
301 |
|
15.12 Согласование ключей с помощью пароля |
301 |
||
Глава 16. Проблемы реализации. Часть II |
303 |
||
16.1 |
Арифметика больших чисел |
303 |
|
|
16.1.1 |
Вупинг |
305 |
|
16.1.2 Проверка вычислений алгоритма DH |
309 |
|
|
16.1.3 |
Проверка шифрования RSA |
310 |
|
16.1.4 Проверка цифровых подписей RSA |
310 |
|
|
16.1.5 |
Заключение |
311 |
16.2 |
Быстрое умножение |
311 |
|
16.3 |
Атаки с использованием побочных каналов |
313 |
|
|
16.3.1 |
Меры предосторожности |
314 |
16.4 |
Протоколы |
316 |
|
16.4.1 |
Выполнение протоколов поверх безопасного |
|
|
|
|
канала общения |
316 |
16.4.2 |
Получение сообщения |
317 |
|
16.4.3 |
Время ожидания |
319 |
|
Часть III. Управление ключами |
321 |
||
Глава 17. Часы |
322 |
||
17.1 |
Зачем нужны часы |
322 |
|
17.1.1 |
Срок действия |
322 |
|
17.1.2 |
Уникальные значения |
322 |
|
17.1.3 |
Монотонность |
323 |
Содержание |
|
13 |
|
|
17.1.4 |
Выполнение транзакций в режиме реального времени |
324 |
17.2 Использование микросхемы датчика времени |
324 |
||
17.3 |
Виды угроз |
325 |
|
|
17.3.1 |
Перевод часов назад |
325 |
|
17.3.2 |
Остановка часов |
326 |
|
17.3.3 |
Перевод часов вперед |
327 |
17.4 |
Создание надежных часов |
328 |
|
17.5 |
Проблема одного и того же состояния |
329 |
|
17.6 |
Время |
|
331 |
17.7 |
Заключение |
332 |
|
Глава 18. Серверы ключей |
333 |
||
18.1 |
Основная идея |
334 |
|
18.2 |
Kerberos |
334 |
|
18.3 |
Решения попроще |
335 |
|
|
18.3.1 |
Безопасное соединение |
336 |
|
18.3.2 |
Создание ключа |
337 |
|
18.3.3 |
Обновление ключа |
337 |
|
18.3.4 |
Другие свойства |
333 |
18.4 |
Что выбрать |
333 |
|
Глава 19. PKI: красивая мечта |
ЗЗд |
||
19.1 Краткий обзор инфраструктуры открытого ключа |
ЗЗд |
||
19.2 |
Примеры инфраструктуры открытого ключа |
34Q |
|
|
19.2.1 |
Всеобщая инфраструктура открытого ключа |
34Q |
|
19.2.2 Доступ к виртуальным частным сетям |
34^ |
|
|
19.2.3 |
Электронные платежи |
34^ |
|
19.2.4 |
Нефтеперегонный завод |
34^ |
|
19.2.5 |
Ассоциация кредитных карт |
342 |
19.3 |
Дополнительные детали |
342 |
|
|
19.3.1 |
Многоуровневые сертификаты |
342 |
|
19.3.2 |
Срок действия |
344 |
|
19.3.3 |
Отдельный центр регистрации |
344 |
19.4 |
Заключение |
345 |
|
Глава 20. PKI: жестокая реальность |
347 |
||
20.1 |
Имена |
347 |
|
20.2 |
Полномочный орган |
350 |
|
20.3 |
Доверие |
35-^ |
|
20.4 |
Непрямая авторизация |
352 |
|
20.5 |
Прямая авторизация |
352 |
|
20.6 |
Системы мандатов |
354 |
14 |
|
|
Содержание |
|
20.7 |
Измененная мечта |
|
357 |
|
20.8 |
Отзыв |
|
|
358 |
|
20.8.1 |
Список отзыва |
|
358 |
|
20.8.2 |
Быстрое устаревание |
|
360 |
|
20.8.3 |
Отзыв обязателен |
|
360 |
20.9 Где может пригодиться инфраструктура открытого ключа |
361 |
|||
20.10 Что выбрать |
|
363 |
||
Глава 21. Практические аспекты РК1 |
|
364 |
||
21.1 |
Формат сертификата |
|
364 |
|
|
21.1.1 |
Язык разрешений |
|
364 |
|
21.1.2 |
Ключ корневого ЦС |
|
365 |
21.2 |
Жизненный цикл ключа |
|
366 |
|
21.3 |
Почему ключи изнашиваются |
|
369 |
|
21.4 |
Так что же нам делать? |
|
370 |
|
Глава 22. Хранение секретов |
|
371 |
||
22.1 |
Диск |
|
|
371 |
22.2 |
Человеческая память |
|
372 |
|
|
22.2.1 |
Солим и растягиваем |
|
374 |
22.3 |
Портативное хранилище |
|
377 |
|
22.4 |
Идентификатор безопасности |
|
378 |
|
22.5 |
Безопасный пользовательский интерфейс |
|
379 |
|
22.6 |
Биометрика |
|
381 |
|
22.7 |
Однократная регистрация |
|
382 |
|
22.8 |
Риск утраты |
|
383 |
|
22.9 |
Совместное владение секретом |
|
384 |
|
22.10 Уничтожение секретов |
|
385 |
||
|
22.10.1 |
Бумага |
|
385 |
|
22.10.2 |
Магнитное хранилище |
|
386 |
|
22.10.3 Полупроводниковые записывающие устройства |
|
388 |
|
Часть IV. Разное |
|
389 |
||
Глава 23. Стандарты |
|
390 |
||
23.1 |
Процесс стандартизации |
|
390 |
|
|
23.1.1 |
Стандарт |
|
392 |
|
23.1.2 |
Функциональность |
|
392 |
|
23.1.3 |
Безопасность |
|
393 |
23.2 |
SSL |
|
|
394 |
23.3 |
AES: стандартизация на конкурсной основе |
|
395 |
Содержание |
15 |
|
Глава 24. Патенты |
397 |
|
24.1 |
Прототип |
397 |
24.2 |
Расширения |
398 |
24.3 |
Расплывчатость описаний |
399 |
24.4 |
Чтение патентов |
399 |
24.5 |
Лицензирование |
400 |
24.6 |
Защищающие патенты |
402 |
24.7 Как исправить систему патентования |
402 |
|
24.8 |
Отречение |
403 |
Глава 25. Привлечение экспертов |
404 |
|
Благодарности |
409 |
|
Список основных источников информации |
410 |
|
Предметный указатель |
418 |
Предисловие
На протяжении последнего десятилетия криптография гораздо больше способствовала разрушению безопасности цифровых систем, чем ее усовер шенствованию. В начале 90-х годов прошлого века криптография считалась настоящей панацеей, способной обеспечить безопасность в Internet. Одни вос принимали криптографию как грандиозный технологический “уравнитель” — математический аппарат, позволяющий уравнять права и возможности защи ты данных среднестатистического обывателя и крупнейших государственных разведывательных служб. Другие видели в ней оружие, применение которого может привести к гибели наций, если будет потерян контроль за поведени ем людей в киберпространстве. Третьи представляли, что это настоящий рай для наркоторговцев, террористов и распространителей детской порнографии, которые смогли бы общаться между собой в атмосфере полной секретности. Даже неисправимым реалистам стало казаться, что криптография — то са мое средство, которое приведет к расцвету глобальной коммерции в новом интерактивном сообществе.
Прошло 10 лет, и ожидания не оправдались. Несмотря на распространение криптографии, наличие государственных границ в Internet стало ощутимым более чем когда-либо. Способность обнаруживать и прослушивать перегово ры членов криминальных группировок гораздо больше зависит от политики и человеческих ресурсов, нежели от математического аппарата. У частных лиц нет никаких шансов дотянуться до уровня хорошо финансируемых го сударственных разведслужб. И наконец, наблюдавшийся расцвет глобальной коммерции никак не связан с внедрением криптографии в широкие массы.
В большинстве случаев применение криптографии не дало пользователям Internet практически ничего, кроме ложного ощущения безопасности. Крип тография обещала обеспечить безопасность обмена данными, но сделать это так и не удалось. И это плохо для всех (за исключением, разумеется, зло умышленников).
Причины подобного провала кроются не столько в криптографии как в математической науке, сколько в криптографии как в инженерной дис циплине. На протяжении последнего десятилетия мы разработали, реализо вали и выпустили в свет массу криптографических систем. Как ни печально, превратить математические перспективы криптографической безопасности
Предисловие |
17 |
в реальную безопасность оказалось намного сложнее, чем можно было пред положить. Это и есть самая трудная часть программы.
Многие разработчики относятся к криптографии как к некоему волшеб ному порошку. Стоит только “посыпать” им аппаратное или программное обеспечение, как оно тут же приобретет то самое магическое свойство без опасности. Слишком многие потребители полагаются на волшебное действие этого порошка, слепо доверяя слову “зашифрованный” в громких реклам ных кампаниях. Недалеко от них ушли и серьезные аналитики, которые на основании длины ключей шифрования провозглашали один продукт более безопасным, нежели другой.
Каждая система безопасна настолько, насколько безопасно ее самое сла бое звено, а математический аппарат криптографии никогда не был ее сла бым звеном. Фундаментальные концепции, лежащие в основе криптографии, безусловно, важны, однако гораздо важнее то, как они реализуются и ис пользуются на практике. Спорить о том, какой должна быть длина ключа — 112 или 128 бит, все равно что вкопать в землю огромный столб и надеять ся, что злоумышленник в него врежется. Вы можете долго выяснять, какой высоты должен быть столб — километр или полтора километра, а злоумыш ленник просто обойдет его стороной. Однако безопасность — это не столб, а настоящий забор: т.е. целый комплекс неких вещей, делающих криптогра фию действительно эффективной.
Практически во всех книгах по криптографии, изданных на протяжении последних 10 лет, ощущается стойкий привкус “волшебного порошка”. Все восхваляют преимущества “тройного” DES, скажем, со 112-битовым ключом шифрования, не упоминая о том, как следует генерировать или использовать ключи этого алгоритма. Книга за книгой описывает сложные протоколы, не затрагивая общественных или бизнес-ограничений, в рамках которых прихо дится применять эти протоколы, и рассматривает криптографию как чисто математическую дисциплину, не тронутую рамками и реалиями земного ми ра. Однако именно эти рамки и реалии определяют различие между мечтами
окриптографическом чуде и суровыми буднями цифровой безопасности. Книга Практическая криптография тоже посвящена этой дисциплине, од
нако здесь речь идет вовсе не о той “незапятнанной” криптографии, которая упоминалась выше. Назначение этой книги состоит в том, чтобы открыто опи сать все ограничения и аспекты применения криптографии в реальной жиз ни, а также рассказать о разработке действительно безопасных криптогра фических систем. В некотором смысле данная книга является продолжением книги Брюса Шнайера Applied. Cryptography [86], впервые опубликованной бо лее 10 лет назад. Однако, в отличие от книги Applied Cryptography, дающей широкое представление о криптографии и тысячах ее возможностей, Прак тическая криптография охватывает достаточно узкую, строго определенную
18 |
Предисловие |
область знаний. Мы не предлагаем вам десятки вариантов; мы рассматрива ем один вариант, описывая то, как его правильно реализовать. Книга Applied Cryptography демонстрирует поразительные возможности криптографии как математической науки — что возможно и что достижимо, в то время как Практическая криптография содержит конкретные советы, предназначен ные для людей, которые разрабатывают и реализуют криптографические си стемы.
Настоящая книга — это попытка сократить разрыв между теорией крип тографии и ее применением в реальной жизни, а также научить разработчи ков использовать ее для повышения безопасности систем.
Мы позволили себе взяться за написание этой книги, поскольку оба яв ляемся опытными специалистами в области криптографии. Брюса хорошо знают по его книгам Applied Cryptography (она упомянута выше) и Secrets and Lies [88], а также по информационному бюллетеню Crypto-Gram. Нильс отточил свое криптографическое мастерство, разрабатывая криптографиче ские системы платежей в институте CWI (Национальный исследовательский институт математики и информатики Нидерландов) в Амстердаме и позднее в нидерландской компании DigiCash. Брюс разработал знаменитый алгоритм шифрования Blowfish, и мы оба принимали участие в разработке алгоритма Twofish. Исследования Нильса привели к появлению первого представителя нового поколения эффективных протоколов анонимных платежей. Общее ко личество написанных нами научных статей выражается трехзначным числом.
Что еще более важно, мы оба имеем обширный опыт в разработке и по строении криптографических систем. С 1991 по 1999 годы консалтинговая компания Брюса Counterpane Systems предоставляла услуги по проектиро ванию и анализу для нескольких крупнейших компьютерных и финансовых корпораций мира. В последние годы компания Counterpane Internet Security, Inc. занимается предоставлением услуг по слежению за безопасностью и ее обеспечению для больших корпораций и правительственных служб по всему миру. Нильс тоже работал в Counterpane перед тем, как основал собственную консалтинговую компанию MacFergus. Мы живем и дышим криптографи ей. Мы наблюдаем, как она “прогибается” под тяжестью реалий разработки программных систем и, что еще хуже, под тяжестью реалий бизнеса. Мы позволили себе издать эту книгу, поскольку уже десятки раз писали ее для клиентов, которых консультируем.
Как читать эту книгу
Книгу Практическая криптография вряд ли можно назвать справочни ком. В ней прослеживается процесс проектирования криптографической си
Предисловие |
19 |
стемы от выбора конкретных алгоритмов через всевозможные наслоения во просов безопасности до построения инфраструктуры, необходимой для ра боты этой системы. На протяжении книги обсуждается одна-единственная проблема криптографии, лежащая в основе практически каждой криптогра фической системы: как обеспечить безопасность общения двух людей. Скон центрировав все внимание на одной проблеме и одной философии проектиро вания, применяемой для ее решения, мы верим, что можем рассказать больше о реальных аспектах разработки криптографических систем.
Мы оба уже издавали книги и прекрасно знаем, что это не имеет никакого отношения к точным наукам. Как бы мы ни старались, нам не удастся из бежать ошибок. Простите за откровенность, но мы просто реально смотрим на вещи. (Что интересно, криптографические системы страдают от той же проблемы; это обсуждается в нескольких главах.) Конечно же, мы приложи ли все усилия к тому, чтобы довести свою книгу до совершенства, и вместе с тем разработали процедуру, гарантирующую, что все наши ошибки (а они, увы, неизбежны) когда-нибудь будут исправлены.
•Прежде чем приступать к чтению книги, посетите Web-узел h t t p :// www.macfergus.com/pc и загрузите текущий список исправлений.
•Если вы обнаружите в книге ошибку, проверьте, не встречается ли она в списке исправлений.
•Если ее там нет, пожалуйста, сообщите о ней по адресу: practical-cryptographyQmacfergus. com
Мы непременно добавим ее к списку.
На наш взгляд, криптография — это самая интересная вещь во всей мате матике. Мы постарались наполнить книгу этим ощущением и надеемся, что вам понравится результат. Спасибо, что вы с нами.
Январь 2003 года |
Нильс Фергюсон |
Брюс Шнайер |
|
Амстердам |
Миннеаполис, Миннесота |
|
Нидерланды |
СШ А |
|
n ielsO m a cfergu s. com |
sch n eierQ cou n terp la n e. com |
Ждем ваших отзывов!
Вы, читатель этой книги, и есть главный ее критик и комментатор. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые другие замечания, которые вам хотелось бы высказать в наш адрес.
Мы ждем ваших комментариев и надеемся на них. Вы можете прислать нам бумажное или электронное письмо либо просто посетить наш Web-сервер и оставить свои замечания там. Одним словом, любым удобным для вас спо собом дайте нам знать, нравится вам эта книга или нет, а также выскажите свое мнение о том, как сделать наши книги более интересными для вас.
Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, а также ваш обратный адрес. Мы внимательно ознакомимся с ва шим мнением и обязательно учтем его при отборе и подготовке к изданию последующих книг. Наши координаты:
E-mail: |
in foQ d ia lek tik a .com |
W W W : |
h ttp ://w w w .d ia lek tik a .com |
Адреса для писем из: |
|
России: |
115419, Москва, а /я 783 |
Украины: |
03150, Киев, а /я 152 |