СМИ: Слишком Много Информации

Прежде чем разрабатывать систему защиты системы, убедись, что система не работает против тебя. Очень часто, система авторизации возвращает слишком много информации в случае неуспешного логина. Например, в абстрактной системе (веб-сайт, или FTP-сервер или SIP-софтсвич) пытается авторизоваться злоумышленник, используя случайный логин vasya.pupkin и пароль 123456. Система ищет в списке пользователя vasya.pupkin и пытается сверить хеш пароля (вы же не храните пароли в базе данных открытом виде, правда?). Система быстро убеждается в том, что пользователя с таким именем не существует и отправляет ответ, что-то вроде “Invalid Username”(Неправильное имя пользователя) или “Username Does Not Exist”(Пользователь не найден). Вот Вам прекрасный пример принципа СМИ,- слишком много информации.

Почему?
Обычно цель злоумышленника,- получить активные логин и пароль для входа в систему, для этих целей часто используется перебор по словарю (Dictionary Attack, DA) или перебор грубой силой (Brute-force attack, BA). Для начала, злоумышленнику нужно знать имя пользователя, существующее в системе, чтобы потом уже подбирать пароль. Если Ваша система отвечает на попытки неуспешной авторизации чем-то вроде "Пользователь не найден", тем самым система даёт возможность злоумышленнику или его программе перестать пробовать это имя пользователя и попробовать другое. Рано или поздно будет найдено имя пользователя, существующее в системе, и система ответит что-то вроде "Неправильный пароль", сигнализируя тем самым, что правильное имя пользователя найдено (снова СМИ!), и можно переходить непосредственно к перебору пароля. И во второй раз система даёт злоумышленнику слишком много информации, помогая осуществить своё злодеяние.

Решение:
Будьте проще! Система авторизации при любом неправильном логине должна возвращать одинаковый ответ. Тогда, вне зависимости от того, был ли введён неправильный пароль, или такого пользователя в систем не существует, система не будет подсказывать злоумышленникам следующие шаги своими ответами.
Вот примеры "правильных" ответов системы:
  • Неправильное имя пользователя или пароль
  • Не найдено пользователя с такой комбинацией логина и пароля
  • Неправильные учётные данные