Отправитель и получатель. Сообщения и шифрование 5 глава
1. Он выглядит случайно. Это означает, что он проходит все тесты на случайность, которые нам удалось найти. (Начните с приведенных в [863].)
Множество усилий было затрачено на создание хороших псевдослучайных последовательностей на компьютере. Обсуждение генераторов в большом количестве можно найти в академической литературе вместе с различными тестами на случайность. Все эти генераторы периодичны (этого невозможно избежать), но, если их период - 2256 и выше, они могут быть использованы в самых серьезных приложениях.
Проблема именно в этих таинственных корреляциях и странных результатах. Каждый генератор псевдослучайных последовательностей создает такие странности, если вы используете его определенным образом. А это именно то, что нужно криптоаналитику для взлома системы.
Криптографически безопасные псевдослучайные последовательности
Криптографические приложения предъявляют к генератору псевдослучайных последовательностей более высокие требования по сравнению с другими приложениями. Криптографическая случайность не ограничивается статистической случайностью, хотя и включает ее. Чтобы последовательность была криптографически безопасной псевдослучайной последовательностью, она должна обладать следующим свойством:
2. Она непредсказуема. Должно быть очень трудно (с точки зрения применения вычислительных мощностей) предсказать, каким будет следующий случайный бит, даже если полностью известен алгоритм или устройство, генерирующее последовательность, и все предыдущие биты потока.
Криптографически безопасные псевдослучайные последовательности не должны сжиматься..., если вам неизвестен ключ. Ключом обычно является заданное начальное состояние генератора.
Как и любой криптографический алгоритм, генераторы криптографически безопасных псевдослучайных последовательностей представляют собой предмет вскрытия. Также как и криптографический алгоритм может быть взломан и генератор криптографически безопасных псевдослучайных последовательностей. Создание устойчивых к вскрытию генераторов является основой криптографии.
Настоящие случайные последовательности
Теперь мы вторгаемся в область, принадлежащую философам. Существует ли такая вещь как случайность? Что такое случайная последовательность? Как узнать, что последовательность случайна? Является ли "101110100" более случайной чем "101010101"? Квантовая механика убеждает нас в том, что в реальном мире существует настоящая случайность. Но как сохранить эту случайность в предопределенном мире компьютерных микросхем и конечных автоматов?
В сторону философию, с нашей точки зрения генератор последовательности действительно случаен, если он обладает третьим свойством:
3. Создаваемая им последовательность не может быть уверенно воспроизведена. Если вы запускаете генератор случайных чисел дважды с одним и тем же входом (по крайней мере, насколько это в человеческих силах), то вы получите две совершенно независимые случайные последовательности.
Выход генератора, удовлетворяющего всем трем приведенным требованиям, будет достаточно хорош для одноразового блокнота, генерации ключа и других криптографических применений, требующих генерации действительно случайных последовательностей. Трудность в том, чтобы понять, действительно ли последовательность случайна? Если я повторно зашифрую строку, используя DES и заданный ключ, я получу хороший, выглядящий случайным образом результат, вы не сможете сказать, что он не случаен, пока вы не наймете взломщика DES из NSA.
3 Основные протоколы
3.1 Обмен ключами
Общепринятой криптографической техникой является шифрование каждого индивидуального обмена сообщениями отдельным ключом. Такой ключ называется сеансовым, так как он используется для единственного отдельного сеанса обмена информацией. В разделе 8.5 говорится о том, что сеансовые ключи полезны, так как время их существования определяется длительностью сеанса связи. Передача этого общего сеансового ключа в руки обменивающихся информацией представляет собой сложную проблему.
Обмен ключами с помощью симметричной криптографии
Этот протокол предполагает, что пользователи сети, Алиса и Боб, получают секретный ключ от Центра распределения ключей (Key Distribution Center, KDC) [1260] - Трента наших протоколов. Перед началом протокола эти ключи уже должны быть у пользователей. (Протокол игнорирует очень насущную проблему доставки этих секретных ключей, предполагается, что ключи уже у пользователей, и Мэллори не имеет о них никакой информации.)
(1) Алиса обращается к Тренту и запрашивает сеансовый ключ для связи с Бобом.
(2) Трент генерирует случайный сеансовый ключ. Он зашифровывает две копии ключа: одну для Алисы, а другую - для Боба. Затем Трент посылает обе копии Алисе.
(3) Алиса расшифровывает свою копию сеансового ключа.
(4) Алиса посылает Бобу его копию сеансового ключа.
(5) Боб расшифровывает свою копию сеансового ключа.
(6) Алиса и Боб используют этот сеансовый ключ для безопасного обмена информацией.
Этот протокол основан на абсолютной надежности Трента, для роли которого больше подходит заслуживающая доверия компьютерная программа, чем заслуживающий доверия человек. Если Мэллори получит доступ к Тренту, скомпрометированной окажется вся сеть. В его руках окажутся все секретные ключи, выделенные пользователям Трентом, он сможет прочесть все переданные сообщения, которые ему удалось перехватить, и все будущие сообщения. Ему останется только подключиться к линиям связи и подслушивать зашифрованный поток сообщений.
Другой проблемой такой системы является то, что Трент потенциально является ее узким местом. Он должен участвовать в каждом обмене ключами. Если с ним что-то случится, это разрушит всю систему.
Обмен ключами, используя криптографию с открытыми ключами
Базовая смешанная криптосистема обсуждалась в разделе 1.5. Для согласования сеансового ключа Алиса и Боб применяют криптографию с открытыми ключами, а затем используют этот сеансовый ключ для шифрования данных. В некоторых реализациях подписанные ключи Алисы и Боба доступны в некоторой базе данных. Это значительно облегчает протокол, теперь Алиса, даже если Боб о ней никогда не слышал, может безопасно послать Бобу сообщение:
(1) Алиса получает открытый ключ Боба из KDC.
(2) Алиса генерирует случайный сеансовый ключ, зашифровывает его открытым ключом Боба и посылает его Бобу.
(3) Боб расшифровывает сообщение Алисы с помощью своего закрытого ключа.
(4) Алиса и Боб шифруют свой обмен информацией этим сеансовым ключом.
Вскрытие "человек-в-середине"
В то время, как Ева не может сделать ничего лучшего, чем пытаться взломать алгоритм с открытыми ключами или выполнить вскрытие с использованием только шифротекста, у Мэллори гораздо больше возможностей. Он не только может подслушать сообщения Алисы и Боба, но и изменить сообщения, удалить сообщения и создать совершенно новые. Мэллори может выдать себя за Боба, сообщающего что-то Алисе, или за Алису, сообщающую что-то Бобу. Вот как будет выполнено вскрытие:
(1) Алиса посылает Бобу свой открытый ключ. Мэллори перехватывает его и посылает Бобу свой собственный открытый ключ.
(2) Боб посылает Алисе свой открытый ключ. Мэллори перехватывает его и посылает Алисе Бобу собственный открытый ключ.
(3) Когда Алиса посылает сообщение Бобу, зашифрованное открытым ключом "Боба", Мэллори перехватывает его. Так как сообщение в действительности зашифровано его собственным открытым ключом, он расшифровывает его, снова зашифровывает открытым ключом Боба и посылает Бобу.
(4) Когда Боб посылает сообщение Алисе, зашифрованное открытым ключом "Алисы", Мэллори перехватывает его. Так как сообщение в действительности зашифровано его собственным открытым ключом, он расшифровывает его, снова зашифровывает открытым ключом Алисы и посылает Алисе.
Это вскрытие будет работать, даже если открытые ключи Алисы и Боба хранятся в базе данных. Мэллори может перехватить запрос Алисы к базе данных и подменить открытый ключ Боба своим собственным. То же самое он может сделать и с открытым ключом Алисы. Или, еще лучше, он может исподтишка взломать базу данных и подменить открытые ключи Бобо и Алисы своим. Теперь он может преуспеть, просто дождавшись, пока Алиса и Боб начнут обмениваться сообщениями, и начав перехватывать и изменять эти сообщения.
Такое вскрытие "человек-в-середине" работает, так как у Алисы и Боба нет способа проверить, действительно ли они общаются именно друг с другом. Если вмешательство Мэллори не приводит к заметным задержкам в сети, оба корреспондента и не подумают, что кто-то, сидящий между ними, читает всю их секретную почту.
Протокол "держась за руки"
Протокол "держась за руки", изобретенный Роном Ривестом (Ron Rivest) и Эди Шамиром (Adi Shamir) [1327], предоставляет неплохую возможность избежать вскрытия "человек-в-середине". Вот как он работает:
(1) Алиса посылает Бобу свой открытый ключ.
(2) Боб посылает Алисе свой открытый ключ.
(3) Алиса зашифровывает свое сообщение открытым ключом Боба. Половину зашифрованного сообщения она отправляет Бобу.
(4) Боб зашифровывает свое сообщение открытым ключом Алисы. Половину зашифрованного сообщения он отправляет Алисе.
(5) Алиса отправляет Бобу вторую половину зашифрованного сообщения.
(6) Боб складывает две части сообщения Алисы и расшифровывает его с помощью своего закрытого ключа. Боб отправляет Алисе вторую половину своего зашифрованного сообщения.
(7) Алиса складывает две части сообщения Боба и расшифровывает его с помощью своего закрытого ключа.
Идея в том, что половина зашифрованного сообщения бесполезна без второй половины, она не может быть дешифрирована. Боб не сможет прочитать ни одной части сообщения Алисы до этапа (6), а Алиса не сможет прочитать ни одной части сообщения Боба до этапа(7). Существует множество способов разбить сообщение на части:
— Если используется блочный алгоритм шифрования, половина каждого блока (например, каждый второй бит) может быть передана в каждой половине сообщения.
— Дешифрирование сообщения может зависеть от вектора инициализации (см. раздел 9.3), который может быть передан во второй части сообщения.
— Первая половина сообщения может быть однонаправленной хэш‑функцией шифрованного сообщения (см. раздел 2.4), а во вторая половина - собственно шифрованным сообщением.
Чтобы понять, как такой протокол помешает Мэллори, давайте рассмотрим его попытку нарушить протокол. Как и раньше, он может подменить открытые ключи Алисы и Боба своим на этапах (1) и (2). Но теперь, перехватив половину сообщения Алисы на этапе (3), он не сможет расшифровать ее своим закрытым ключом и снова зашифровать открытым ключом Боба. Он может создать совершенно новое сообщение и отправить половину его Бобу. Перехватив половину сообщения Боба Алисе на этапе (4), Мэллори столкнется с этой же проблемой. Он не сможет расшифровать ее своим закрытым ключом и снова зашифровать открытым ключом Алисы. Ему придется создать совершенно новое сообщение и отправить половину его Алисе. К тому времени, когда он перехватит вторые половины настоящих сообщений на этапах (5) и (6), подменять созданные им новые сообщения будет слишком поздно. Обмен данными между Алисой и Бобом изменится радикально.
Мэллори может попытаться избежать такого результата. Если он достаточно хорошо знает обоих корреспондентов, чтобы сымитировать их при обмене данными, они могут никогда не заметить подмены. Но все-таки это сложнее, чем просто сидеть между корреспондентами, перехватывая и читая их сообщения.
Обмен ключами с помощью цифровых подписей
Использование цифровой подписи в протоколе обмена сеансовым ключом также позволяет избежать вскрытия "человек-в-середине". Трент подписывает открытые ключи Алисы и Боба. Подписанные ключи включают подписанное заверение подлинности. Получив ключи, и Алиса, и Боб проверяют подпись Трента. Теперь они уверены, что присланный открытый ключ принадлежит именно указанному корреспонденту. Затем выполняется протокол обмена ключами.
Мэллори сталкивается с серьезными проблемами. Он не может выдать себя за Алису или Боба, ведь он не знает их закрытых ключей. Он не может подменить их открытые ключи своим, потому что при подписи его ключа Трент указал, что это ключ Мэллори. Все, что ему остается - это прослушивать зашифрованный поток сообщений или испортить линии связи, мешая обмену информации Алисы и Боба.
Трент выступает участником этого протокола, но риск компрометации KDC меньше, чем в первом протоколе. Если Мэллори компрометирует Трента (взламывает KDC), он получает только закрытый ключ Трента. Этот ключ позволит ему только подписывать новые ключи, а не расшифровывать сеансовые ключи ил читать произвольный поток сообщений. Для чтения сообщений Мэллори придется выдать себя за пользователя сети и обманывать честных пользователей, шифруя сообщения своим поддельным открытым ключом.
Мэллори может предпринять такое вскрытие. Используя закрытый ключ Трента, он может создать поддельные подписанные ключи, чтобы обмануть Алису и Боба. Затем он может либо подменить этими ключами настоящие ключи в базе данных, либо перехватывать запросы пользователей к базе данных и посылать в ответ поддельные ключи. Это позволит ему осуществить вскрытие "человек-в-середине" и читать сообщения пользователей.
Такое вскрытие будет работать, но помните, что для этого Мэллори должен уметь перехватывать и изменять сообщения. В ряде сетей это намного сложнее, чем просто пассивно сидеть, просматривая сообщения в сети по мере их поступления. В широковещательных каналах, таких как радиосеть, почти невозможно подменить одно сообщение другим - хотя можно забить всю сеть. В компьютерных сетях это менее сложно и, кажется, с каждым днем становится проще и проще. Обратите внимание на подмену IP-адреса, вскрытие маршрутизатора и т.п. Активное вскрытие не обязательно означает, что кто-то засовывает зонд в люк, да и выполнять их теперь могут не только правительственные агентства.
Передача ключей и сообщений
Алисе и Бобу не обязательно выполнять протокол обмена ключами перед обменом сообщениями. В этом протоколе Алиса отправляет Бобу сообщение без предварительного протокола обмена ключами:
(1) Алиса генерирует случайный сеансовый ключ, K, и зашифровывает M этим ключом.
EK(M)
(2) Алиса получает открытый ключ Боба из базы данных.
(3) Алиса шифрует K открытым ключом Боба.
EB(K)
(1) Алиса посылает Бобу шифрованные сообщение и сеансовый ключ.
EK(M), EB(K)
Для дополнительной защиты от вскрытия "человек-в-середине" Алиса подписывает передачу.
(2) Боб расшифровывает сеансовый ключ Алисы, K, используя свой закрытый ключ.
(3) Боб, используя сеансовый ключ, расшифровывает сообщение Алисы.
Подобная смешанная система и употребляется чаще всего в системах связи. Ее можно соединить с цифровыми подписями, метками времени и другими протоколами обеспечения безопасности.
Широковещательная рассылка ключей и сообщений
Не существует причин, запрещающих Алисе посылать шифрованное сообщение нескольким людям. В следующем примере Алиса посылает шифрованное сообщение Бобу, Кэрол и Дэйву:
(1) Алиса генерирует случайный сеансовый ключ, K, и зашифровывает M этим ключом.
EK(M)
(2) Алиса получает из базы данных открытые ключи Боба, Кэрол и Дэйва.
(3) Алиса шифрует K открытыми ключами Боба, Кэрол и Дэйва.
EB(K), EC(K), ED(K)
(1) Алиса широковещательно посылает шифрованное сообщение и все шифрованные ключи своим корреспондентам.
EK(M), EB(K), EC(K), ED(K)
(2) Только Боб, Кэрол и Дэйв могут, каждый при помощи своего закрытого ключа, расшифровать ключ K.
(3) Только Боб, Кэрол и Дэйв могут расшифровать сообщение Алисы, используя K.
Этот протокол может быть реализован для сетей электронной почты. Центральный сервер может отправить сообщение Алисы Бобу, Кэрол и Дэйву вместе с конкретным шифрованным ключом. Сервер не должен быть надежным и безопасным, так как он не может расшифровать ни одно из сообщений.
3.2 Удостоверение подлинности
Когда Алиса подключается к главному компьютеру (или к автоматическому, или к телефонной банковской системе, или к какому-нибудь другому терминалу), как главный компьютер узнает, кто она? Откуда главный компьютер узнает, что это не Ева, пытающаяся выдать себя за Алису? Обычно эта проблема решается с помощью паролей. Алиса вводит свой пароль, и главный компьютер проверяет его правильность. Таким образом, и Алисе, и главному компьютеру известна некоторая секретная информация, которую главный компьютер запрашивает всякий раз, когда Алиса пытается подключится.
Удостоверение подлинности с помощью однонаправленных функций
Роджер Неедхэм (Roger Needham) и Майк Гай (Mike Guy) показали, что главному компьютеру не нужно знать сами пароли, вполне достаточно, чтобы главный компьютер мог отличать правильные пароли от неправильных. Этого легко достичь с помощью однонаправленных функций [1599, 526,1274, 1121]. При этом на главном компьютере хранятся значения однонаправленных функций паролей, а не сами пароли.
(1) Алиса посылает главному компьютеру свой пароль.
(2) Главный компьютер вычисляет однонаправленную функцию пароля.
(3) Главный компьютер сравнивает полученное значение с хранящимся.
Раз главный компьютер больше не хранит таблицу правильных паролей всех пользователей, снижается угроза того, что кто-то проникнет в главный компьютер и выкрадет таблицу паролей. Список паролей, обработанный однонаправленной функцией, бесполезен, так как однонаправленную функцию не удастся инвертировать для получения паролей.
Вскрытия с помощью словаря и "соль"
Файл паролей, зашифрованных однонаправленной функцией, тем не менее, уязвим. Имея запас времени, Мэллори может составить список из миллиона наиболее часто встречающихся паролей. Он обработает весь миллион однонаправленной функцией и сохранит результат. Если каждый пароль состоит из восьми байт, размер получившегося файла не превысит 8 Мбайт, и этот файл может быть размещен всего на нескольких на дискетах. Теперь Мэллори добывает шифрованный файл паролей. Он сравнивает этот файл со своим файлом шифрованных возможных паролей и ищет совпадения.
Это вскрытие с помощью словаря может быть удивительно успешным (см. раздел 8.1). "Соль" - это способ затруднить его. "Соль" представляет собой случайную строку, добавляемую к паролям перед обработкой их однонаправленной функцией. Затем в базе данных главного компьютера сохраняются и значение "соли", и результат однонаправленной функции. Использование достаточно большого числа возможных значений "соли" практически устраняет возможность вскрытия с помощью словаря, так как Мэллори придется вычислять значение однонаправленной хэш‑функции для каждого возможного значения "соли". Это простейший пример использование вектора инициализации (см. раздел 9.3).
Идея состоит в том, чтобы заставить Мэллори выполнить пробное шифрование каждого пароля из его словаря при каждой попытке узнать чей-то чужой пароль вместо одноразовой обработки всех возможных паролей.
Для этого нужно много "соли". Большинство UNIX-систем используют для "соли" 12 бит. Несмотря на это Дэниел Кляйн (Daniel Klein) написал программу разгадывания паролей, которая в некоторых системах за неделю часто вскрывала 40 процентов паролей [847,848] (см. раздел 8.1). Дэвид Фельдмайер (David Feldmeier) и Филип Кан (Philip Karn) составили список из 732000 наиболее часто используемых паролей, присоединив к каждому из них 4096 возможных значений "соли". По их оценкам 30 процентов паролей на любом главном компьютере могут быть взломаны с помощью этого списка [561].
"Соль" не является панацеей, увеличение числа бит "соли" не решит всех проблем. "Соль" предохраняет только от самых обычных вскрытий файла паролей с использованием словаря, а не от согласованной атаке одного пароля. Она защищает людей, использующих один и тот же пароль на различных машинах, но не делает лучше плохо выбранный пароль.
SKEY
SKEY - это программа удостоверения подлинности, обеспечивающая безопасность с помощью однонаправленной функции. Это легко объяснить.
Регистрируясь в системе, Алиса задает случайное число, R.Компьютер вычисляет f(R), f(f(R)), f(f(f(R))), и так далее, около сотни раз. Обозначим эти значения как x1, x2, x3, ..., x100.Компьютер печатает список этих чисел, и Алиса прячет его в безопасное место. Компьютер также открытым текстом ставит в базе данных подключения к системе в соответствие Алисе число x101.
Подключаясь впервые, Алиса вводит свое имя и x100.Компьютер рассчитывает f(x100) и сравнивает его с x101,если значения совпадают, права Алисы подтверждаются. Затем компьютер заменяет в базе данных x101 на x100. Алиса вычеркивает x100 из своего списка.
Алиса, при каждом подключении к системе, вводит последнее невычеркнутое число из своего списка: xi. Компьютер рассчитывает f(xi) и сравнивает его с xi+1,хранившемся в базе данных. Так как каждый номер используется только один раз, Ева не сможет добыть никакой полезной информации. Аналогично, база данных бесполезна и для взломщика. Конечно же, как только список Алисы исчерпается ей придется перерегистрироваться в системе.
Удостоверение подлинности с помощью криптографии с открытыми ключами
Даже с использованием "соли" у первого протокола есть серьезные проблемы с безопасностью. Когда Алиса посылает свой пароль главному компьютеру, любой, у кого есть доступ пути передачи ее данных, может прочесть пароль. Она может получить доступ к своему главному компьютеру посредством запутанного пути передачи информации, проложив его через четырех промышленных конкурентов, три других страны и два передовых университета. Ева может находиться в любой из этих точек, подслушивая передаваемую Алисой последовательность. Если у Евы есть доступ к оперативной памяти главного компьютера, она сможет подсмотреть пароль до того, как главный компьютер сможет его хэшировать.
Криптография с открытыми ключами может решить эту проблему. Главный компьютер хранит файл открытых ключей всех пользователей, а все пользователи хранят свои закрытые ключи. Вот как выглядит упрощенная попытка организовать протокол подключения:
(1) Главный компьютер посылает Алисе случайную строку.
(2) Алиса шифрует эту строку своим закрытым ключом и посылает ее обратно главному компьютеру вместе со своим именем.
(3) Главный компьютер находит в базе данных открытый ключ Алисы и дешифрирует сообщение, используя этот открытый ключ.
(4) Если отправленная сначала и расшифрованная строки совпадают, главный компьютер предоставляет Алисе доступ к системе
Никто другой не может воспользоваться закрытым ключом Алисы, следовательно никто не сможет выдать себя за нее. Что более важно, Алиса никогда не посылает на компьютер свой закрытый ключ. Ева, подслушивая взаимодействие, не получит никаких сведений, которые позволили бы ей вычислить закрытый ключ Алисы и выдать себя за нее.
Закрытый ключ должен быть достаточно длинным и не должен быть мнемоническим. Он будет автоматически обрабатываться аппаратурой пользователя или программным обеспечением связи. Это требует использования "умного" терминала, которому Алиса доверяет, но ни главный компьютер, ни линии связи не обязаны быть безопасными.
Глупо шифровать произвольные строки - не только посланные подозрительным автором, но и вообще любые. Иначе может быть использовано схема вскрытия, обсуждаемая в разделе 19.3. Безопасные идентификационные протоколы имеют следующую, более сложную форму:
(1) Алиса выполняет вычисление, основанное на некоторых случайных числах и своем закрытом ключе, и посылает результат на главный компьютер.
(2) Главный компьютер посылает другое случайное число.
(3) Алиса выполняет некоторое вычисление, основанное на случайных числах (как созданном ею, так и полученном от главного компьютера) и своем закрытом ключе, и посылает результат на главный компьютер.
(4) Главный компьютер выполняет некоторое вычисление для различных чисел, полученных от Алисы, и ее открытого ключа, проверяя, что ей известен ее закрытый ключ.
(5) Если проверка завершается успешно, личность Алисы подтверждается.
Если Алисы доверяет главному компьютеру не в большей степени, чем тот доверяет Алисе, то она должна потребовать подтверждения подлинности главного компьютера аналогичным образом.
Этап (1) может показаться ненужным и запутанным, но он необходим для защиты протокола от вскрытия. Различные протоколы и алгоритмы подтверждения подлинности математически подробно описываются в разделах 21.1 и 21.2. См. также [935].
Обоюдное удостоверение подлинности с использованием протокола "держась за руки"
Пусть два пользователя, Алиса и Боб, хотят проверить подлинность друг друга. У каждого из них есть пароль, известный другому пользователю: PA у Алисы и PB у Боба. Вот как выглядит протокол, который не будет работать:
(1) Алиса и Боб обмениваются открытыми ключами.
(2) Алиса шифрует PA открытым ключом Боба и посылает его ему.
(3) Боб шифрует PB открытым ключом Алисы и посылает его ей.
(4) Алиса расшифровывает полученное на этапе (3) и подтверждает правильность пароля.
(5) Боб расшифровывает полученное на этапе (2) и подтверждает правильность пароля.
Мэллори может предпринять успешное вскрытие "человек-в-середине" (см. раздел 3.1):
(1) Алиса и Боб обмениваются открытыми ключами. Мэллори перехватывает оба сообщения, и посылает обоим корреспондентам свой собственный открытый ключ, подменив им их ключи.
(2) Алиса шифрует PA открытым ключом "Боба" и посылает его ему. Мэллори перехватывает сообщение, расшифровывает PA с помощью своего закрытого ключа, снова шифрует PA открытым ключом Боба и посылает его ему.
(3) Боб шифрует PB открытым ключом "Алисы" и посылает его ей. Мэллори перехватывает сообщение, расшифровывает PB с помощью своего закрытого ключа, снова шифрует PB открытым ключом Алисы и посылает его ей.
(4) Алиса расшифровывает PB и подтверждает его правильность.
(5) Боб расшифровывает PA и подтверждает его правильность.
Для Алисы и Боба ничего не изменилось. Однако, Мэллори знает и PA, и PB. Дональд Дэвис (Donald Davies) и Вильям Прайс (William Price) описывают, как протокол "держась-за-руки" (см. раздел 3.1) противодействует такому вскрытию [435]. Стив Белловин (Steve Bellovin) и Майкл Мерритт (Michael Merritt) рассматривают способы вскрытия этого протокола в [110]. Если Алиса - это пользователь, а Боб - хост-компьютер, Мэллори может предпочесть быть Бобом, выполнить первые этапа протокола с Алисой и разорвать соединение. Симулирование шума на линии или сетевого отказа потребует от Мэллори настоящего артистизма, но в результате Мэллори получит пароль Алисы. Затем он сможет соединиться с Бобом и завершить протокол, получая и пароль Боба.
Протокол можно изменить так, чтобы Боб передавал свой пароль перед Алисой в предположении, что пароль пользователя более важен, чем пароль главного компьютера. Это приведет к усложнению способа вскрытия, также описанного в [110].
SKID
SKID2 и SKID3 - это симметричные криптографические протоколы идентификации, разработанные для проекта RACE RIPE [1305] (см. раздел 25.7). Они используют MAC (см. раздел 2.4) для обеспечения безопасности и предполагают, что Алиса и Боб используют общий секретный ключ, K.SKID2 позволяет Бобу доказать свою подлинность Алисе. Вот этот протокол:
(1) Алиса выбирает случайное число, RA. (Документами RIPE определяется 64-битовое число). Она посылает это число Бобу.
(2) Боб выбирает случайное число, RB. (Документами RIPE определяется 64-битовое число). Он посылает Алисе.
RB, HK(RA, RB, B)
HK - это MAC. (В документах RIPE предлагается функция RIPE-MAC, см. раздел 18.4.) B - это имя Боба.
(1) Алиса рассчитывает HK(RA, RB, B) и сравнивает результат со значением, полученным от Боба. Если результаты совпадают, Алиса убеждается в том, что она соединилась именно с Бобом.
SKID3 обеспечивает совместную проверку подлинности Алисой и Бобом. Этапы (1) - (3) совпадают с протоколом SKID2, а затем выполняются следующие действия:
(4) Алиса посылает Бобу:
HK(RB, A)
A - это имя Алисы.
(5) Боб рассчитывает HK(RB, A) и сравнивает результат со значением, полученным от Алисы. Если результаты совпадают, Боб убеждается в том, что она соединилась именно с Алисой.
Этот протокол неустойчив к вскрытию "человек-в-середине". В общем случае, вскрытие "человек-в-середине" может угрожать любому протоколу, в который не входит какой-нибудь секрет.
Дата добавления: 2021-01-26; просмотров: 398;