Удостоверение подлинности с помощью криптографии с открытыми ключами

Даже с использованием "соли" у первого протокола есть серьезные проблемы с безопасностью . Когда Алиса посылает свой пароль главному компьютеру, любой, у кого есть доступ пути передачи ее данных, может пр о-честь пароль. Она может получить доступ к своему главному компьютеру посредством запутанного пути пер е-дачи информации, проложив его через четырех промышленных конкурентов, три других страны и два перед о-вых университета. Ева может находиться в любой из этих точек, подслушивая передаваемую Алисой послед о-вательность. Если у Евы есть доступ к оперативной памяти главного компьютера, она сможет подсмотреть п а-роль до того, как главный компьютер сможет его хэшировать .

Криптография с открытыми ключами может решить эту проблему . Главный компьютер хранит файл откры­тых ключей всех пользователей, а все пользователи хранят свои закрытые ключи . Вот как выглядит упрощенная попытка организовать протокол подключения:

(1) Главный компьютер посылает Алисе случайную строку.

(2) Алиса шифрует эту строку своим закрытым ключом и посылает ее обратно главному компьютеру вместе со своим именем.

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

(4) Если отправленная сначала и расшифрованная строки совпадают, главный компьютер предоставляет Алисе доступ к системе

Никто другой не может воспользоваться закрытым ключом Алисы, следовательно никто не сможет выдать себя за нее. Что более важно, Алиса никогда не посылает на компьютер свой закрытый ключ . Ева, подслушивая взаимодействие, не получит никаких сведений, которые позволили бы ей вычислить закрытый ключ Алисы и выдать себя за нее.

Закрытый ключ должен быть достаточно длинным и не должен быть мнемоническим. Он будет автоматич е-ски обрабатываться аппаратурой пользователя или программным обеспечением связи . Это требует использова­ния "умного" терминала, которому Алиса доверяет, но не главный компьютер, ни линии связи не обязаны быть безопасными.

Глупо шифровать произвольные строки - не только посланные подозрительным авторов, но и вообще любые . Иначе может быть использовано схема вскрытия, обсуждаемая в разделе 19.3. Безопасные идентификационные протоколы имеют следующую, более сложную форму:

(1) Алиса выполняет вычисление, основанное на некоторых случайных числах и своем закрытом ключе, и п о-сылает результат на главный компьютер.

(2) Главный компьютер посылает другое случайное число.

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


(4)Главный компьютер выполняет некоторое вычисление для различных чисел, полученных от Алисы, и ее открытого ключа, проверяя, что ей известен ее закрытый ключ.

(5) Если проверка завершается успешно, личность Алисы подтверждается.

Если Алисы доверяет главному компьютеру не в большей степени, чем тот доверяет Алисе, то она должна потребовать подтверждения подлинности главного компьютера аналогичным образом .

Этап (1) может показаться ненужным и запутанным, но он необходим для защиты протокола от вскрытия . Различные протоколы и алгоритмы подтверждения подлинности математически подробно описываются в ра з-делах 21.1 и 21.2. См. также [935].

Обоюдное удостоверение подлинности с использованием протокола "держась за руки "

Пусть два пользователя, Алиса и Боб, хотят проверить подлинность друг друга . У каждого из них есть па­роль, известный другому пользователю: РА У Алисы и Рв у Боба. Вот как выглядит протокол, который не будет работать:

(1) Алиса и Боб обмениваются открытыми ключами.

(2) Алиса шифрует РА открытым ключом Боба и посылает его ему.

(3) Боб шифрует Рв открытым ключом Алисы и посылает его ей.

(4) Алиса расшифровывает полученное на этапе (3) и подтверждает правильность пароля.

(5) Боб расшифровывает полученное на этапе (2) и подтверждает правильность пароля. Мэллори может предпринять успешное вскрытие "человек-в-середине" (см. раздел 3.1):

 

(1) Алиса и Боб обмениваются открытыми ключами. Мэллори перехватывает оба сообщения, и посылает обоим корреспондентам свой собственный открытый ключ, подменив им их ключи.

(2) Алиса шифрует РА открытым ключом "Боба" и посылает его ему. Мэллори перехватывает сообщение, расшифровывает РА с помощью своего закрытого ключа, снова шифрует РА открытым ключом Боба и по­сылает его ему.

(3) Боб шифрует Рв открытым ключом "Алисы" и посылает его ей. Мэллори перехватывает сообщение, ра с-шифровывает Рв с помощью своего закрытого ключа, снова шифрует Рв открытым ключом Алисы и по­сылает его ей.

(4) Алиса расшифровывает Рв и подтверждает его правильность.

(5) Боб расшифровывает РА и подтверждает его правильность.

Для Алисы и Боба ничего не изменилось. Однако, Мэллори знает и РА, и Рв. Дональд Дэвис (Donald Davies) и Вильям Прайс (William Price) описывают, как протокол "держась-за-руки" (см. раздел 3.1) противодействует такому вскрытию [435]. Стив Белловин (Steve Bellovin) и Майкл Мерритт (Michael Merritt) рассматривают спо­собы вскрытия этого протокола в [110]. Если Алиса - это пользователь, а Боб - хост-компьютер , Мэллори может предпочесть быть Бобом, выполнить первые этапа протокола с Алисой и разорвать соединение . Симулирование шума на линии или сетевого отказа потребует от Мэллори настоящего артистизма, но в результате Мэллори получит пароль Алисы. Затем он сможет соединиться с Бобом и завершить протокол, получая и пароль Боба .

Протокол можно изменить так, чтобы Боб передавал свой пароль перед Алисой в предположении, что п а-роль пользователя более важен чем пароль главного компьютера. Это приведет к усложнению способа вскры­тия, также описанного в [110].