Анимация
JavaScript
|
Главная Библионтека (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) Алиса генерирует случайный сеансовый ключ, К, и зашифровывает М этим ключом. Ek(M) (2) Алиса получает открытый ключ Боба из базы данных. (3) Алиса шифрует К открытым ключом Боба. Eb(.K) (4) Алиса посылает Бобу шифрованные сообщение и сеансовый ключ. Ek(M), Eb(K) Для дополнительной защиты от вскрытия "человек-в-середине" Алиса подписывает передачу. (5) Боб расшифровывает сеансовый ключ Алисы, К, используя свой закрытый ключ. (6) Боб, используя сеансовый ключ, расшифровывает сообщение Алисы. Подобная смешанная система и употребляется чаще всего в системах связи . Ее можно соединить с цифр о-выми подписями, метками времени и другими протоколами обеспечения безопасн ости. Широковещательная рассылка ключей и сообщений Не существует причин, запрещающих Алисе посылать шифрованное сообщение нескольким людям . В следующем примере Алиса посылает шифрованное сообщение Бобу, Кэрол и Дэйву : (1) Алиса генерирует случайный сеансовый ключ, К, и зашифровывает М этим ключом. Ek(M) (2) Алиса получает из базы данных открытые ключи Боба, Кэрол и Дэйва. (3) Алиса шифрует К открытыми ключами Боба, Кэрол и Дэйва. Eb(K), Ec(K), Ed(K) (4) Алиса широковещательно посылает шифрованное сообщение и все шифрованные ключи своим корре с-пондентам. Ek(M), Eb(K), Ec(K), Ed(K) (5) Только Боб, Кэрол и Дэйв могут, каждый при помощи своего закрытого ключа, расшифровать ключ K. (6) Только Боб, Кэрол и Дэйв могут расшифровать сообщ ение Алисы, используя 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]. "Соль" не является панацеей, увеличение числа бит "соли" не решит всех проблем . "Соль" предохраняет 0 1 2 3 4 5 6 7 8 9 10 11 12 [ 13 ] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |