Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Практическая криптография

..pdf
Скачиваний:
6
Добавлен:
12.11.2023
Размер:
16.23 Mб
Скачать

Содержание

 

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