Идентификация и аутентификация

Прежде чем получить доступ к АСОИ, пользователь должен идентифицировать себя, а затем средства защиты системы должны подтвердить подлинность этого пользователя, т.е. проверить, является ли данный пользователь действительно тем, за кого он себя выдает. В случае успешной аутентификации пользователь авторизируется в системе, т.е. ему предоставляется санкционированный доступ к информации в соответствии с его правами доступа. Если на этапе идентификации/аутентификации злоумышленнику удастся выдать себя за легального пользователя, то он получит несанкционированный доступ к системе. Поэтому, надежность процедур идентификации/аутентификации во многом определяют эффективность защиты от НСД в целом.

Идентификация пользователя является относительно не сложной процедурой, в отличие от аутентификации. И более того, именно от аутентификации, прежде всего, и зависти качество защиты. Способы аутентификации пользователей в АСОИ можно подразделить на три группы.

К первой группе относятся способы аутентификации, основанные на том, что пользователь знает некоторую подтверждающую его подлинность информацию (парольная аутентификация и аутентификация на основе модели "рукопожатия").

Ко второй группе относятся способы аутентификации, основанные на том, что пользователь имеет некоторый материальный объект, который может подтвердить его подлинность (например, пластиковую карту с идентифицирующей пользователя информацией).

К третьей группе относятся способы аутентификации, основанные на таких данных, которые позволяют однозначно считать, что пользователь и есть тот самый субъект, за которого себя выдает (биометрические данные, особенности клавиатурного почерка и росписи мышью и т.п.).

5.2.1 Аутентификация пользователя на основе паролей и процедуры "рукопожатия"

Традиционно каждый законный пользователь компьютерной системы получает идентификационный номер и/или пароль. В начале сеанса работы пользователь указывает системе свой идентификационный номер (идентификатор пользователя), которая затем запрашивает у пользователя пароль.

Простейший метод подтверждения подлинности с использованием пароля основан на сравнении представляемого пользователем пароля РА исходным значением Р'А, хранящимся в компьютерном центре (рис. 5.1). Поскольку пароль должен храниться в тайне, его следует шифровать перед пересылкой по незащищенному каналу. Если значения РА и Р'А совпадают, то пароль РА считается подлинным, а пользователь – законным. EK и DK –процедуры шифрования и расшифрования соответственно.

 

Рис. 5.1. Схема простой аутентификации с помощью пароля.

 

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

1) пароль должен быть секретным:

· пароль не должен отображаться на экране и в распечатках;

· пароль нельзя записывать в местах, доступных неавторизованным лицам, например, на листочках, приклеиваемых к монитору;

· всегда, когда это возможно, пароль не следует сохранять в компьютере даже в специальных защищенных файлах – на соответствующее приглашение операционной системы или других программ нужно всегда отвечать отказом;

· файл паролей должен иметь надежную защиту от несанкционированного доступа и, желательно, криптографическую защиту;

· пароль не должен пересылаться по электронной почте, передаваться по телефону, факсу или по другим недостаточно надежно защищенным каналам связи;

2) пароль должен эффективно противостоять подбору или угадыванию:

· пароль должен состоять не менее чем из 6 – 8 символов, иначе он легко может быть взломан программами прямого перебора;

· пароль должен содержать не только буквы, как прописные, так и строчные, но и цифры, а также различные символы (' ! @ # $ % ^ &*() _ + - = { } [ ] \ : " ; < > ? , . /), причем, желательно, с изменениями раскладки клавиатуры;

· недопустимо совпадение пароля с логином или использование в качестве пароля имени, фамилии, дней рождения, номеров телефонов пользователя или его родственников, клички любимых собак или кошек, название футбольной команды;

· для защиты от атаки со словарем пароль не должен представлять собой распространенные слова и имена;

· не следует использовать подсказки к паролям, предлагающие при задании пароля указать дополнительные сведения (рост, любимое блюдо, девичью фамилию матери и т.п.) и в случае, если пользователь забыл пароль, разрешающие допуск в систему, при правильном ответе на соответствующий пароль – злоумышленнику может оказаться легче подобрать ответ на подсказку, чем пароль;

· лучшими паролями являются пароли, сгенерированные как случайные последовательности;

3) пароль должен быть непредсказуемым:

· пароль должен значительно отличаться от паролей, использовавшихся ранее;

· пароль должен регулярно меняться, но изменения должны осуществляться случайным образом, а не по графику;

· каждый пароль должен использоваться уникально – только одним пользователем и для получения доступа только к одной из систем или программ, т. е. нельзя использовать один и тот же пароль для доступа, например, к сеансу работы с компьютером и для доступа к электронному почтовому ящику.

Если кто-нибудь, не имеющий полномочий для входа в систему, узнает каким-либо образом пароль и идентификационный номер законного пользователя, он получит доступ в систему.

Иногда получатель не должен раскрывать исходную открытую форму пароля. В этом случае отправитель должен пересылать вместо открытой формы пароля отображение пароля, получаемое с использованием односторонней функции a(.). Это преобразование должно гарантировать невозможность раскрытия противником пароля по его отображению, так как противник наталкивается на неразрешимую числовую задачу.


Например, функция a(.) может быть определена следующим образом:

a (Р) = ЕP(ID),

где Р – пароль отправителя; ID – идентификатор отправителя; Ер – процедура шифрования, выполняемая с использованием пароля Р в качестве ключа.

Такие функции особенно удобны, если длина пароля и длина ключа одинаковы. В этом случае подтверждение подлинности с помощью пароля состоит из пересылки получателю отображения a(Р) и сравнения его с предварительно вычисленным и хранимым эквивалентом a'(Р).

На практике пароли состоят только из нескольких букв, чтобы дать возможность пользователям запомнить их. Короткие пароли уязвимы к атаке полного перебора всех вариантов. Для того чтобы предотвратить такую атаку, функцию a(Р) определяют иначе, а именно:a(Р) = ЕР Å К(ID), где К и ID – соответственно ключ и идентификатор отправителя.

Очевидно, значение a(Р) вычисляется заранее и хранится в виде a'(Р) в идентификационной таблице у получателя (рис. 5.2). Подтверждение подлинности состоит из сравнения двух отображений пароля a(РА) и a'(РА) и признания пароля РА, если эти отображения равны. Конечно, любой, кто получит доступ к идентификационной таблице, может незаконно изменить ее содержимое, не опасаясь, что эти действия будут обнаружены.

 

Рис. 5.2. Схема аутентификации с помощью пароля с использованием идентификационной таблицы.

 

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

Идея этого подхода состоит в следующем: пользователь получает список паролей P1, P2,…,Pi, …, Pn. Каждый из паролей действует только на один сеанс получения доступа (P1 – на первый, P2 – на второй и т.д.). В этом случае знание уже использовавшегося пароля ничего не даст злоумышленнику, а при каждом входе легального пользователя возможна проверка на использование данного пароля кем-либо еще.

Недостатками такой схемы одноразовых паролей является:

· организация защищенного хранения длинного списка паролей;

· неясность с номером следующего пароля, если после ввода предыдущего пароля из списка вход пользователя в систему не был осуществлен из-за сбоя в работе системы аутентификации.

Эти недостатки могут быть устранены, если список паролей не хранить, а генерировать с помощью некоторой односторонней функции, например функции хэширования. Пусть P – начальный пароль пользователя, a(.) – одностороння функция, a i(P.) = a(a(…a(P)…)) – функция a(.) примененная последовательно i раз, тогда список одноразовых паролей создается следующим образом: P1 = a n(P), P2 = a n–1(P),…, Pn1 =a (a(P.)), Pn =a(P).

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

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

Рассмотрим в качестве примера процедуру рукопожатия для двух пользователей А и В. (Это допущение не влияет на общность рассмотрения. Такая же процедура используется, когда вступающие в связь стороны не являются пользователями). Пусть применяется симметричная криптосистема. Пользователи А и В разделяют один и тот же секретный ключ КАВ. Вся процедура показана на рис. 5.3.

Последовательность действий процедуры рукопожатия следующая.

1. Пользователь А инициирует процедуру рукопожатия, отправляя пользователю В свой идентификатор IDА в открытой форме.

2. Пользователь В, получив идентификатор IDА, находит в базе данных секретный ключ КАВ и вводит его в свою криптосистему.

3. Тем временем пользовательА генерирует случайную последовательность S с помощью псевдослучайного генератора PG и отправляет ее пользователю Вв виде криптограммы ЕКАВ(S).

4. Пользователь В расшифровывает эту криптограмму и раскрывает исходный вид последовательности S.

5. Затем оба пользователя А и В преобразуют последовательность S, используя открытую одностороннюю функцию a(.).

6. Пользователь В шифрует сообщение a(S) и отправляет эту криптограмму пользователюА.

7. Наконец, пользователь А расшифровывает эту криптограмму и сравнивает полученное сообщение a'(S) с исходным a(S). Если эти сообщения равны, пользователь А признает подлинность пользователя В.

 

Рис. 5.3. Схема процедуры рукопожатия (пользователь A проверяет подлинность пользователя B).

 

Очевидно, пользователь В проверяет подлинность пользователя А таким же способом. Обе эти процедуры образуют процедуру рукопожатия, которая обычно выполняется в самом начале любого сеанса связи между любыми двумя сторонами в компьютерных сетях.

Достоинством модели рукопожатия является то, что ни один из участников сеанса связи не получает никакой секретной информации во время процедуры подтверждения подлинности.