Анимация
JavaScript


Главная  Библионтека 

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

часам Боба, и только Боб проверяет созданную им метку времени .

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

(1) Алиса посылает Бобу сообщение, присланное ей Трентом на этапе (3) и новое случайное число. Eb(A, к, Tb), Ra

(2) Боб посылает Алисе другое новое случайное число и случайное число, присланное Алисой, шифруя их с е-ансовым ключом связи.

Rb, Ek(Ra)

(3) Алиса посылает Бобу его новое случайное число, шифруя его сеансовым ключом связи. Ek(Rb)

Новые случайные числа защищают от вскрытия с повторно передачей . DASS

Протоколы Распределенной служба безопасности и проверки подлинности (Distributed Authentication Security Service, DASS), созданные в Digital Equipment Corporation, также обеспечивают обоюдную проверку подлинности и обмен ключами [604, 1519, 1518]. В отличие от предыдущего протокола DASS использует как криптографию с открытыми ключами, так и симметричную криптографию . И у Алисы, и у Боба есть свой закрытый ключ. Трент подписывает копии их открытых ключей.

(1) Алиса посылает Тренту сообщение, состоящее из имени Боба. в

(2) Трент посылает Алисе открытый ключ Боба, Кв, подписанный закрытым ключом Трента, T. Подписанное сообщение содержит имя Боба.

St(B, Kb)

(3) Алиса проверяет подпись Трента, убеждаясь, что она действительно получила открытый ключ Боба. Она генерирует случайный сеансовый ключ, К, и случайную пару ключей открытый/закрытый, К,. Она шифрует метку времени ключом К, а затем подписывает время жизни, L, свое имя и своим закрытым ключом, КА. Наконец, она зашифровывает к открытым ключом Боба и подписывает его с помощью К,. Все это она отправляет Бобу.

Ek(Ta), Ska (L, а, к,), (Ek (к))

(4) Боб посылает Тренту (это может быть другой Трент) сообщение, состоящее из имени Алисы. а

(5) Трент пос1лает Бобу открытый ключ Алисы, КА, подписанный закрытым ключом Трента. Подписанное сообщение содержит имя Алисы.

St(A, Ka)

(6) Боб проверяет подпись Трента, убеждаясь, что он действительно получила открытый ключ Алисы. Затем он проверяет подпись Алисы и извлекает К,. Боб использует свой закрытый ключ, извлекая К. Затем он расшифровывает TA, проверяя, что это сообщение - текущее.

(7) Если требуется обоюдная проверка подлинности, Боб шифрует новую метку времени ключом к и пос1ла-ет ее Алисе.

Ek(Tb)

(8) Алиса расшифровывает тв ключом К, проверяя, что это сообщение - текущее.

SPX, продукт DEC, основан на DASS. Дополнительную информацию можно найти в [34].

Denning-Sacco

В этом протоколе также используется криптография с открытыми ключами [461]. Трент ведет базу данных, хранящую открытые ключи всех пользователей .



(1) Алиса посылает Тренту сообщение, состоящее из ее имени и имени Боба.

а, в

(2) Трент посылает Алисе открытый ключ Боба, Кв, подписанный закрытым ключом Трента, Т. Трент также посылает Алисе ее собственный открытый ключ, Ка, подписанный закрытым ключом Трента.

St(B, Кв), St(A, Ка)

(3) Алиса посылает Бобу случайный сеансовый ключ и метку времени, подписав их своим закрытым ключом и зашифровав открытым ключом Боба, вместе с обоими подписанными ключами.

Eb(Sa(K, Та)), St(A, Ка), St(B, Кв)

(4) Боб расшифровывает сообщение Алисы с помощью своего закрытого ключа и проверяет подпись Алисы с помощью ее открытого ключа. Он также убеждается, что метка времени правильна.

С этого момента Алиса и Боб получили K и могут провести безопасный сеанс связи. Это выгляди красиво, но есть одна тонкость - выполнив протокол с Алисой, Боб сможет выдать себя за Алису [5]. Смотрите:

(1) Боб посылает Тренту свое имя и имя Кэрол.

в, с

(2) Трент посылает Бобу подписанные открытые ключи Боба и Кэрол. St(B, Кв), St(C, Кс)

(3) Боб посылает Кэрол подписанный случайный сеансовый ключ и метку времени, ранее полученные от Алисы, зашифровав их открытым ключом Кэрол, вместе с подтверждением Алисы и подтверждением К э-рол.

Ec(Sa(K, Та)), St(A, Ка), St(C, Кс)

(4) Кэрол расшифровывает сообщение Алисы с помощью своего закрытого ключа и проверяет подпись Ал и-сы с помощью ее открытого ключа. Он также убеждается, что метка времени правильна.

Теперь Кэрол считает, что она соединилась с Алисой, Боб успешно одурачил ее . Действительно, Боб сможет дурачить любого пользователя сети, пока не закончится срок действия метки времени . Но это легко можно исправить. Просто вставьте имена в шифрованное сообщение на этапе (3) :

Eb(Sa(A, в, К, Та)), St(A, Ка), St(B, Кв)

Теперь Боб не сможет повторно послать Кэрол старое сообщение, потому что оно явно предназначено для сеанса связи между Алисой и Бобом.

Woo-Lam

В этом протоколе также используется криптография с открытыми ключами [1610, 1611]:

(1) Алиса посылает Тренту сообщение, состоящее из ее имени и имени Боба.

а, в

(2) Трент посылает Алисе открытый ключ Боба, Кв, подписанный закрытым ключом Трента, Т.

St(.Kb)

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

а, Eb(Rb)

(4) Боб посылает Тренту свое имя, имя Алисы и случайное число Алисы, шифрованное открытым ключом Трента, КТ.

а, в, (Ra)

(5) Трент посылает Бобу открытый ключ Алисы, Ка, подписанный закрытым ключом Трента. Он также п о-сылает Бобу случайное число Алисы, случайный сеансовый ключ, имена Алисы и Боба, подписав все это закрытым ключом Трента и зашифровав открытым кл ючом Боба.

8т(.Ка), Ek(St (Ra, к а, В))

(6) Боб проверяет подписи Трента. Затем он посылает Алисе вторую часть сообщения Трента, полученного на этапе (5), и новое случайное число, зашифровав все открытым ключом Алисы.



Ek:a(St (Ra, к, a, В), Rb)

(7) Алиса проверяет подпись Трента и свое случайное число. Затем она посылает Бобу второе случайное чи с-ло, шифрованное сеансовым ключом.

Ek(Rb)

(8) Боб расшифровывает свое случайное число и проверяет, что оно не изменилось. Другие протоколы

В литературе описано множество протоколов. Протоколы X.509 рассматриваются в разделе 24.9, Kryp-toKnight - в разделе 24.6, а Шифрованный обмен ключами (Encrypted Key Exchange) - в разделе 22.5.

Другим новым протоколом с открытыми ключами является Kuperee [694]. Ведется работа на протоколами, использующими маяки - заслуживающие доверия узлы сети, которые непрерывно и широковещательно пер е-дают достоверные метки времени [783].

Выводы

Из приведенных протоколов, как из тех, которые вскрываются, так и из надежных, можно извлечь ряд ва ж-ных уроков:

- Многие протоколы терпят неудачу, так как их разработчики пытались быть слишком умными. Они опт и-мизировали протоколы, убирая важные элементы - имена, случайные числа и т.п. - и пытаясь сделать протоколы как можно более прозрачными [43, 44].

- Оптимизация - эта манящая ловушка - сильно зависит от сделанных предположений. Пример: наличие достоверного времени позволяет вам реализовать многие вещи, невозможные в проти вном случае.

- Выбираемый протокол зависит от архитектуры используемых средств связи. Хотите ли вы минимизир о-вать размер сообщений или их количество? Могут ли сторона взаимодействовать каждый с каждым или круг их общения будет ограничен?

Именно подобные вопросы и привели к созданию формальных методов анализа протоколов .

3.4 Формальный анализ протоколов проверки подлинности и обмена ключами

Проблема выделения безопасного сеансового ключа для пары компьютеров (или людей) в сети настолько фундаментальна, что стала причиной многих исследований . Некоторые исследования заключались в разработке протоколов, подобных рассматриваемым в разделах 3.1, 3.2 и 3.3. Это, в свою очередь, привело к появлению более важной и интересной задачи: формальному анализу протоколов проверки подлинности и обмена ключами. Иногда прорехи в протоколах, кажущихся вполне надежными, обнаруживались спустя много лет п осле их разработки, и разработчикам потребовались средства, позволяющие сразу же проверять безопасность протокола. Хотя большая часть этого инструментария применима и к более общим криптографическим прот о-колам, особое внимание уделялось проверке подлинности и обмену ключами . Существует четыре основных подхода к анализу криптографических протоколов [1045]:

1. Моделирование и проверка работы протокола с использованием языков описания и средств проверки, не разработанных специально для анализа криптографических протоколов.

2. Создание экспертных систем, позволяющих конструктору протокола разрабатывать и исследовать различные сценарии.

3. Выработка требований к семейству протоколов, используя некую логику для анализа понятий "знание" и "доверие".

4. Разработка формальных методов, основанных на записи свойств криптографических систем в алге б-раическом виде.

Полное описание этих четырех подходов и связанных с ними исследований выходит за рамки данной книги. Хорошее введение в эту тему дано в [1047, 1355], я же собираюсь коснуться только основных вопросов.

Первый из подходов пытается доказать правильность протокола, рассматривая его как обычную компьюте р-ную программу. Ряд исследователей представляют протокол как конечный автомат [1449, 1565], другие используют расширения методов исчисления предиката первого порядка [822], а третьи для анализа протоколов используют языки описания [1566]. Однако, доказательство правильности отнюдь не является доказательством безопасности, и этот подход потерпел неудачу при анализе многих "дырявых" протоколов . И хотя его применение поначалу широко изучалось, с ростом популярности третьего из подходов работы в этой области были п е-реориентированы.



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