11 Лекция. Аутентификация
Аутентификация
http://ru.wikipedia.org/wiki/Аутентификация
Аутентификация (Authentication) — проверка принадлежности субъекту доступа по предъявленному им идентификатору (пароль, ключ и т.д.); подтверждение подлинности.
Методы аутентификации:
- парольные (PIN коде и т.д.) - уникальная последовательность символов, которую пользователь должен знать.
- "ключе" - в случае электронных систем это электронный ключ, который хранится на носителе (смарт-карты, электронные таблетки iButton, USB-токены и т. д.)
- биометрические (отпечаток пальца, рисунок радужной оболочки глаза, форма лица, параметры голоса и т. д.)
- криптографические
Рис. Методы аутентификации
Аутентификация по многоразовым паролям
Используется один пароль многократно.
Хотя аутентификация может использоваться не только к удаленным системам, методы аутентификации будем рассматривать сразу на примерах к удаленным системам
Протоколы аутентификации
PAP (Password Authentication Protocol)
http://ru.wikipedia.org/wiki/Password_Authentication_Protocol
PAP - аутентификация по имени и паролю пользователя. Протокол PAP ненадежен при использовании в сетях, т.к. пароли можно перехватить.
Алгоритм PAP:
- клиент посылает имя и пароль серверу
- сервер сверяет присланный пароль с паролем в своем хранилище
Рис. Протокол PAP
Преимущества:
- простота
Недостатки и пути решения:
- подбор паролей
- просмотр паролей в системе
- перехват паролей при передачи
-
пароль можно «подсмотреть» при вводе
-
человеческий фактор – человек не может запомнить сложные пароли (записывает), диктует открытым способом (по телефону) и т.д.
-
каждый раз нужно набирать на клавиатуре
-
нужна предварительная регистрация пользователя в системе
Решение проблемы "подбора паролей" :
- использовать "сильные" пароли
- блокировка при неправильных попытках (например: 5 раз) ввода пароля
Рис. Плохие пароли
Почему эти пароли плохие:
"2" - один символ, легко перебрать.
"123456" - один из популярных паролей (еще примеры - 123; 111; qwerty; qazwsx; qazwsxedc; password; "ваш логин"; "номер телефона"; "дата рождения" и т.д.).
"пароль" - словарное слово, после перебора популярных паролей, перебирают слова из словаря.
"Gjhs6129dgGF_9eK_sj2vc9d" - пароль очень сложный, его не запомнят, а запишут и приклеят к монитору, пароль должен быть только в голове (или в сейфе).
Наиболее хорошим вариантом являются пароли построенные на фразах:
- хорошо запоминаются
- достаточно длинные
- словарные атаки не проходят
Рис. Хорошие пароли
Решение проблемы "просмотра паролей в системе" :
- шифрование (для расшифровывания нужно будет при себе носить ключ шифрования, при хранении на диске не защищенного ключа шифрования шифрование пароля не имеет смысла).
- не хранить пароль в системе, а хранить его контрольную сумму или хэш.
Рис. Пароли не хранятся в системе, а хранятся их хэши
Пароли в системе не хранятся, при этом пользователь проходит аутентификацию по паролю.
В большинстве современных систем именно так и сделано. Не только в ОС, но и в СУБД, форумах, сайтах и т.д.
Решение проблемы "перехвата паролей при передачи":
- шифровать передаваемые пароли
- использовать алгоритмы без передачи паролей (рассмотрены ниже (CHAP))
Рис. Шифрование передаваемых паролей
В настоящее время чаще всего для шифрования паролей используется протокол SSL (Secure Sockets Layer — уровень защищённых сокетов, http://ru.wikipedia.org/wiki/SSL).
Протоколы аутентификации вызов-ответ
http://ru.wikipedia.org/wiki/Вызов-ответ_(аутентификация)
CHAP (Challenge Handshake Authentication Protocol)
http://ru.wikipedia.org/wiki/CHAP
CHAP - аутентификация без передачи пароля.
Алгоритм CHAP:
- пользователь посылает серверу запрос на доступ (login)
- сервер отправляет клиенту случайное число
- на основе этого случайного числа и пароля пользователя клиент вычисляет хеш
- клиент пересылает хеш серверу
- сервер сверяет присланный хеш со своим вычисленным
- в случайные промежутки времени сервер отправляет новый и повторяет шаги с 2 по 5.
Рис. Протокол CHAP
Основной недостаток - необходимо хранить пароль на сервере.
CRAM - (challenge-response authentication mechanism)
http://ru.wikipedia.org/wiki/CRAM-MD5
Основан на вычислении имитовставки по алгоритму HMAC, роль симметричного ключа выполняет пароль.
В зависимости от алгоритма хэширования - CRAM-MD5, CRAM-MD4, CRAM-SHA1 и т.д.
Алгоритм CRAM:
- пользователь посылает серверу запрос на доступ (login)
- сервер вычисляет имитовставку с секретным ключом-паролем пользователя для строки (случайное число + временная метка + доменное имя сервера) (например: <1896.697170952@postoffice.reston.mci.net>)
- сервер отправляет клиенту имитовставку
- клиент вычисляет имитовставку из строки - (идентификатор клиента (login) + пробел + имитовставка сервера)
- отправляет серверу
- сервер сверяет полученное с ожидаемым
Рис. Протокол CRAM
В CRAM вместо пароля на сервере может хранится хэш.
Digest access authentication (DIGEST-MD5)
http://ru.wikipedia.org/wiki/Дайджест_аутентификация
Схема аналогичная CHAP.
Протокол:
- запрос клиента (без аутентификации)
- ответ сервера (Unauthorized), содержащий
"realm" - строка (например: realm=testrealm@host.com)
"nonce" - случайное число сервера (например: nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093") - клиент вычисляет хэш HA1 = MD5 (username: realm: password)
- клиент вычисляет хэш HA2 = MD5 (URI)
- клиент вычисляет хэш для ответа Response = MD5(HA1:nonce:nc:cnonce:qop:HA2)
"nc" - счётчика запросов
"cnonce" - клиентское случайное значение
"qop" - код качества защиты - клиент посылает ответ
- сервер сравнивает значение полученное и вычисленное
Пример:
HA1 = MD5( "Mufasa:testrealm@host.com:Circle Of Life" )
= 939e7578ed9e3c518a452acee763bce9
HA2 = MD5( "GET:/dir/index.html" ) = 39aff3a2bab6126f332b942af96d3366
Response = MD5( "939e7578ed9e3c518a452acee763bce9:\
dcd98b7102dd2f0e8b11d0f600bfb0c093:\
00000001:0a4f113b:auth:\
39aff3a2bab6126f332b942af96d3366" )
= 6629fae49393a05397450978507c4ef1
Взаимная аутентификация
Т.к. сервер может быть ложным, необходимо провести взаимную аутентификацию.
- клиент отправляет запрос серверу, содержащий его login и случайное число N1
- сервер зашифровывает число N1, генерирует случайное число N2, и отправляет их оба клиенту
- клиент расшифровывает числа (N1,N2) и сравнивает первое (N1) число с N1. Идентичность означает, что сервер обладает тем же уникальным ключом, что и клиент
- клиент зашифровывает число N2 и результат отправляет серверу
- сервер расшифровывает полученное сообщение. При совпадении результата с исходным числом N2, взаимная аутентификация прошла успешно.
Рис. Протокол взаимной аутентификации
Аутентификация по одноразовым паролям (One-time password)
http://ru.wikipedia.org/wiki/Одноразовый_пароль
Различные подходы к созданию одноразовых паролей:
- использующие математические алгоритмы для создания нового пароля на основе предыдущих (пароли фактически составляют цепочку, и должны быть использованы в определённом порядке).
- основанные на временной синхронизации между сервером и клиентом, обеспечивающей пароль (пароли действительны в течение короткого периода времени)
- использующие математический алгоритм, где новый пароль основан на запросе (например. случайное число, выбираемое сервером или части входящего сообщения) и/или счётчике.
Одноразовые пароли клиент может получать:
- на бумаге
- в токене
- пересылкой (по СМС)
Рис. пример банковской карты
Многофакторная аутентификация
Иногда используются сразу несколько методов аутентификации.
Например: электронный ключ и логин.
При использовании SIM-карт в мобильных телефонах. Субъект вставляет свою SIM-карту в телефон и при включении вводит свой PIN-код (пароль).
В случае банковской карты. Субъект вставляет свою банковскую карту в банкомат и вводит свой PIN-код (пароль).