Если вы участвуете в разработке программного продукта, использование которого подразумевает доступ к данным пользователя, эта статья для вас.
Сегодняшний материал подготовлен специалистами центра компетенции по тестированию безопасности . Из него вы узнаете:
- Какие пароли можно считать надежными;
- Какие механизмы могут защитить пароли от перебора;
- Чем поможет тестирование продукта на проникновение.
Прежде чем говорить о самих паролях разберемся, как они могут быть украдены. Украсть пароль можно у самого пользователя, у сервиса или на пути от клиента к сервису.
Нас интересует только первый вариант, поскольку только он относится непосредственно к парольной безопасности. Два других варианта связаны с уязвимостями веб-приложений и шифрованием данных, при этом вероятность похищения пароля никак не зависит от его сложности.
Итак, каким образом злоумышленник может украсть пароль у пользователя?
- Прямым перебором аутентификационных данных жертвы (guessing, cracking, brute force attack и т.д.). Это самый простой способ.
- Методами , которые позволяют узнать аутентификационные данные пользователя (например, позвонить и представиться администратором, рассылка писем от лица того же администратора и т.д.). Этот способ более изощренный и требует определенных усилий от атакующего (сбор информации о жертве и его окружении). Для этого злоумышленник должен владеть специальными навыками и инструментами и обладать определенными познаниями в психологии.
- Подсмотреть пароль при прямом общении с жертвой или на его/ее рабочем месте (установить кейлогер в компьютер жертвы, найти стикер с паролем).
Если успешность проведения двух последних пунктов зависит не от разработчика продукта, а от самого пользователя, то воспрепятствовать автоматическому перебору паролей можно на стадии разработки, внедрив следующие механизмы:
- CAPTCHA (капча). При аутентификации пользователю необходимо дополнительно ввести символы с картинки.
- Двухфакторная аутентификация с использованием различных средств. Например, отправка SMS с кодом на мобильное устройство пользователя для авторизации в приложении или использование генераторов одноразовых паролей.
- Временная блокировка пользователя после определенного количества неудачных попыток аутентификации. Например, аккаунт пользователя блокируется на 30 минут после 5 неудачных попыток.
- Определение требований к паролю. На этом моменте остановимся поподробнее.
- Оптимальное количество символов в пароле – 8-12.
- В состав пароля входят цифры, латинские буквы и специальные символы («$», «?», «!», «<», «>». «”», «#», «%», «@» и другие).
- Сочетание цифровых и буквенных символов (заглавных и строчных) – самое надежное.
- Устойчивые словосочетания.
- Наборы символов, представляющие собой комбинации клавиш, расположенных подряд на клавиатуре: qwerty, 123456789, qazxsw и т. д.
- Персональные данные: имена и фамилии, даты рождения (свою и родственников), клички домашних животных, адреса, номера паспортов, страховых свидетельств и т. п., пароли, созданные для доступа к другим сервисам.
Также вы можете предусмотреть принудительную смену пароля с определенной периодичностью (например, раз в 90 дней). Если для подбора пароля требуется время превышающее данный период, то риск подбора пароля заметно сокращается.
Наконец, пользователь должен знать, какую последовательность действий предпринять, если пароль был похищен или есть подозрения на это.
Продолжение статьи читайте по ссылке -