Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборная ответов к госэкзаменам.doc
Скачиваний:
107
Добавлен:
02.09.2019
Размер:
7 Mб
Скачать

Удостоверение подлинности с помощью однонаправленных функций

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

  • Алиса посылает главному компьютеру свой пароль.

  • Главный компьютер вычисляет однонаправленную функцию пароля.

  • Главный компьютер сравнивает полученное значение с хранящимся.

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

Вскрытия с помощью словаря и "соль"

Файл паролей, зашифрованных однонаправленной функцией, тем не менее, уязвим. Имея запас времени, злоумышленник может составить список из миллиона наиболее часто встречающихся паролей. Он обработает весь миллион однонаправленной функцией и сохранит результат. Если каждый пароль состоит из восьми байт, размер получившегося файла не превысит 8 Мбайт, и этот файл может быть размещен всего на нескольких дискетах. Теперь злоумышленник добывает шифрованный файл паролей. Он сравнивает этот файл со своим файлом шифрованных возможных паролей и ищет совпадения.

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

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

Для этого нужно много "соли". Большинство UNIX-систем используют для "соли" 12 бит. Несмотря на это Дэниел Кляйн написал программу разгадывания паролей, которая в некоторых системах за неделю часто вскрывала 40 процентов паролей. Дэвид Фельдмайер и Филип Кан составили список из 732000 наиболее часто используемых паролей, присоединив к каждому из них 4096 возможных значений "соли". По их оценкам 30 процентов паролей на любом главном компьютере могут быть взломаны с помощью этого списка.

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