Сделай это безопасным! Alek Silverstone Спецвыпуск: Хакер, номер #058, стр. 058-072-2 Думаю, ты прекрасно знаешь, что такое секретный и открытый ключи и как работает эта модель. Еще лучше ты знаешь, что если поменять местами секретный и открытый ключи, то получится электронно-цифровая подпись (ну, не совсем – об этом ниже). Тут я разве что обращаю всеобщее внимание на замену секретного канала аутентичным. Последний доступен противнику для пассивного перехвата - целостность и принадлежность должны по-прежнему соблюдаться. Эта схема также не лишена недостатков. Самым большим из них является низкое быстродействие: например, асимметричный алгоритм RSA примерно в 100 раз медленнее симметричного DES'а. Применение гибридной схемы наиболее желательно (рис. 4). В ней исходное сообщение шифруется симметричным ключом, который в свою очередь зашифровывается открытым ключом получателя. Последний дешифрует симметричный ключ, которым дешифрует сообщение. Симметричный ключ случаен и используется только в этом сеансе связи, потому-то он и называется сеансовым. Канал связи и противник на рисунке не уместились :). Подробнее об этой схеме в следующем разделе. Протокол SSL Пожалуй, пора несколько приблизиться к практике. В качестве примера я рассмотрю всем известный протокол SSL, точнее, ход мыслей его разработчиков :). Саму спецификацию протокола можно утянуть с wp.netscape.com/eng/ssl3. Протокол будет рассмотрен на примерах обмена между клиентом Андреем и сервером Банком. А в качестве противника выступит известный герой Василий Пупкин. Предположим, Андрей хочет проверить, действительно ли Банк является тем же лицом, за кого выдает себя. Банк имеет открытый и секретный ключи, Андрей не имеет своей пары (хотя это идеологически неверно – смотри конец этого пункта) и может пользоваться только открытым ключом Банка. Будем считать, что Андрей уже знает его (способ передачи я уточню позднее). Тогда для проверки подлинности источника информации может быть использован протокол №1 (на соответствующем рисунке). Андрей принимает сообщение и дешифрует его на открытом ключе Банка. Если результат совпадает с тем сообщением, которое отослали изначально, то Б действительно является Банком. Как же поведет себя Василий? Сообщение случайно – Вася воспользуется именно этим и реализует свою атаку так, как показано на рисунке "Атака на протокол 1". На втором шаге одного из вариантов своего поведения злобный Василий готовит невыгодный для банка договор и использует функцию сжатия для преобразования текста в двоичный шум, который может быть принят Банком за случайное сообщение. Если все прошло именно так, то Банк попал :). Всегда можно доказать, что договор был зашифрован на уникальном секретном ключе Банка. Положение может быть исправлено за счет использования хэш-функции. Напомню (или сообщу), что хэш-функцией называют функцию, обладающую следующими свойствами: 1. Входным параметром является текст произвольного размера. |