Но в любом варианте парольной аутентификации подтверждение подлинности пользователя осуществляется на основе ввода им некоторой конфиденциальной информации, которую можно подсмотреть, выманить, подобрать, угадать и т. п. Рассмотрим аутентификацию пользователей на основе модели «рукопожатия», во многом свободную от указанных недостатков.
В соответствии с этой моделью пользователь П и система С i согласовывают при регистрации пользователя в КС функцию, известную только им. Протокол аутентификации пользователя в; этом случае выглядит следующим образом:
1. С: генерация случайного значения х; вычисление у = /(х); вывод х.
2. П: вычисление у' =/'(х); ввод у'.
3. С: если у и у' совпадают, то пользователь допускается к работе в системе, иначе попытка входа в систему отклоняется.
К функции/предъявляется требование, чтобы по известным х \ и /(х) нельзя было угадать /
Преимущества аутентификации на основе модели «рукопожатия» перед парольной аутентификацией:
• между пользователем и системой не передается никакой конфиденциальной информации, которую нужно сохранять в тайне;
|
|
• каждый следующий сеанс входа пользователя в систему отличен от предыдущего, поэтому даже длительное наблюдение за этими сеансами ничего не даст нарушителю.
К недостаткам аутентификации на основе модели «рукопожатия» относится большая длительность этой процедуры по сравнению с парольной аутентификацией.
Парольная аутентификация совершенно неприменима в случае взаимного подтверждения подлинности пользователей компьютерной сети. Действительно, пусть А и Б обозначают двух пользователей сети, имеющих соответственно пароли РА и РБ. Тогда протокол взаимной аутентификации А и Б мог бы выглядеть следующим образом:
1. А->Б: А, запрос РБ.
2. Б^А: Б, запрос РА.
3. А^Б: А, РА.
4. Б^А: Б, РБ.
Но в момент отправки своего пароля (неважно, в открытой или защищенной форме) А не может быть уверен в подлинности | Б, который может воспользоваться паролем А, чтобы выдать себя за А при взаимодействии еще с одним пользователем компьютерной сети В.
Модель «рукопожатия» вполне приемлема для взаимной аутентификации:
1. А: выбор значения х; вычисление у =f(x).
2. А^Б: А, х.
3. Б: вычисление у' =(х).
4. Б—»А: Б, у'.
5. А: если у и у' совпадают, то А может доверять Б.
Затем процедура аутентификации повторяется с переменой ролей (теперь Б начинает процесс и выбирает значение х), чтобы Б мог быть также уверен в подлинности А.
Для повышения безопасности протокола взаимной аутентификации перед отправкой по сети значения х и у' (пп. 2 и 4 протокола) могут быть зашифрованы на секретном ключе, которым должны предварительно обменяться по защищенному каналу А и Б. В этом случае потенциальному нарушителю, который имеет возможность перехвата всех передаваемых по сети данных и желает выдать себя за одного из легальных пользователей сети, придется не только определить функцию, но и предварительно взломать шифротекст;
|
|
При интерактивном доступе пользователя к системе функция/ может быть задана таблицей своих значений. Рассмотрим два примера. В первом примере система предлагает пользователю ответить при регистрации его в КС на несколько вопросов, имеющих частично объективное и частично вымышленное содержание (например: «девичья фамилия Вашей матери», «в каком городе Вы проживали в июне 2002 г.», «где находится клуб», «когда откроется пул» и т. п.). При входе в систему пользователю предлагается ответить на другой список вопросов, среди которых есть некоторые из заданных ему при регистрации. Для правильной аутентификации пользователь должен дать те же ответы, которые он давал на аналогичные вопросы при регистрации.
Второй пример — аутентификация на основе модели «рукопожатия». При регистрации в КС пользователю предлагается набор небольших изображений (например, пиктограмм), среди которых он должен выбрать заданное число картинок. При последующем входе в систему ему выводится другой набор изображений, часть из которых он видел при регистрации. Для правильной аутентификации пользователь должен отметить те картинки, которые он выбрал при регистрации.