Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #58, СЕНТЯБРЬ 2005 г.

Сделай это безопасным!

Alek Silverstone

Спецвыпуск: Хакер, номер #058, стр. 058-072-3


2. Выходное значение имеет строго фиксированный размер.

3. Значение функции от любого аргумента должно вычисляться быстро.

4. Задача нахождения аргумента функции по ее значению должна быть вычислительно трудоемкой – функция однонаправленная.

5. Задача нахождения такой пары аргументов, при которой значения функций от них одинаковы (нахождение коллизии), должна быть вычислительно трудоемкой.

Применяя хэш-функцию, можно составить протокол №2 (посмотрим на соответствующий рисунок).

В этом случае Банк сначала посылает свое сообщение открытым текстом, после этого - зашифрованное на своем секретном ключе значение хэш-функции от своего сообщения, что, по большому счету, есть не что иное, как электронно-цифровая подпись этого сообщения. Андрей расшифровывает полученное значение, хэширует исходное сообщение и сравнивает результаты – проверяет подпись. Совпадение значений хэш-функций является доказательством того, что Банк является подлинным источником информации.

Теперь будем составлять протокол передачи открытого ключа Банка Андрею. Посмотрим на первый вариант (протокол 3).

В нем Вася может выдать себя за Банк. Для этого ему всего лишь нужно иметь свою пару ключей. Он будет перехватывать все обращения Андрея Банку и отвечать на них, подставляя свой открытый и секретный ключи вместо ключей Банка. Андрей же не имеет возможности обнаружить подлог.

Эта проблема, известная как проблема распределения ключей, решается в SSL путем введения сертификатов, как и во многих протоколах (другой способ решения этой проблемы – использование доверителей – реализован, к примеру, в PGP). Сертификат выдается центром сертификации (Certification Authority, CA) и содержит следующие обязательные поля:

- Серийный номер сертификата;

- Имя центра сертификации;

- Имя объекта сертификации;

- Открытый ключ объекта сертификации;

- Срок действия сертификата.

Здесь речь идет об объекте сертификации. Это может быть все что угодно: человек, программа, сайт, оборудование и т.д. Сертификат подписывается секретным ключом CA и выкладывается в открытый доступ.

Посмотрим на рисунок "Протокол 4: сертификаты" и разберемся.

Для начала обращаю всеобщее внимание на тот факт, что и Андрей, и Банк должны полностью доверять CA, а он должен оправдывать это доверие :). Другими словами, все должны быть уверены, что сертификат Банка принадлежит именно Банку.

Получив сертификат, Андрей проверяет его подпись, объект сертификации (им должен быть Банк), срок действия и убеждается в подлинности открытого ключа Банка. Необходимый для этого открытый ключ CA выкладывается в открытый доступ. Если наш бравый Вася пошлет Андрею сертификат Банка от своего имени, то он все равно выдаст себя с головой: не зная секретного ключа Банка, он не сможет отправить последнее сообщение.

Убедившись в подлинности источника информации, Андрей генерирует симметричный сеансовый ключ, шифрует его открытым ключом Банка и отправляет. Банк дешифрует сообщение своим секретным ключом и получает сеансовый ключ. Таким образом, метод двухключевой криптографии применяется для пересылки сеансового ключа с последующим использованием его в схеме симметричного шифрования – гибридная модель. Рассмотрим этот протокол на схеме "Протокол 5".

Назад на стр. 058-072-2  Содержание  Вперед на стр. 058-072-4