Хранение паролей¶
Хранение паролей — это совокупность методов, технологий и практик, обеспечивающих сохранность учётных данных (логинов и паролей) от несанкционированного доступа, кражи или утраты. Относится к области управления доступом и информационной безопасности. Основная цель хранения паролей — предотвратить их компрометацию как со стороны внешних злоумышленников, так и со стороны внутренних угроз (например, небрежности сотрудников или вредоносного ПО).
¶История
До широкого распространения компьютеров и сетей пароли хранились в физическом виде — в блокнотах, сейфах или на бумажных носителях. С развитием многопользовательских операционных систем (например, UNIX в 1970-х годах) возникла необходимость в цифровом хранении. Первоначально пароли хранились в открытом виде в файлах /etc/passwd. Это приводило к массовым утечкам: любой, кто получал доступ к файлу, мог прочитать все пароли.
В 1976 году Роберт Моррис (США) предложил использовать хеширование для хранения паролей в UNIX. Вместо пароля в файл записывался результат его обработки криптографической хеш-функцией (DES). При проверке введённый пароль хешировался повторно и сравнивался с сохранённым значением. Это решило проблему хранения в открытом виде, но не защитило от атак по словарю.
С 1990-х годов начали применяться соли (случайные строки, добавляемые к паролю перед хешированием) для предотвращения атак с использованием радужных таблиц. В 2000-х годах были разработаны специализированные медленные хеш-функции (bcrypt, scrypt, Argon2), устойчивые к аппаратному ускорению перебора.
С развитием облачных сервисов и веб-приложений в 2010-х годах возникла потребность в менеджерах паролей — программах, которые централизованно хранят зашифрованные пароли пользователя и автоматически заполняют формы входа. Параллельно развивались технологии аутентификации без паролей (например, WebAuthn, FIDO2), но полный отказ от паролей пока не произошёл.
¶Методы хранения
¶Хранение в открытом виде
Наиболее опасный метод. Пароль сохраняется в базе данных или файле без какой-либо обработки. При утечке данных злоумышленник получает все пароли в читаемом виде. В настоящее время считается недопустимым для любых систем, кроме демонстрационных или учебных.
¶Хеширование
Пароль преобразуется с помощью криптографической хеш-функции (например, SHA-256, MD5). Полученный хеш сохраняется. При проверке введённый пароль хешируется и сравнивается с сохранённым. Недостаток: одинаковые пароли дают одинаковые хеши, что позволяет использовать радужные таблицы для обратного поиска. MD5 и SHA-1 считаются устаревшими и небезопасными из-за коллизий и высокой скорости вычислений.
¶Хеширование с солью
К каждому паролю перед хешированием добавляется уникальная случайная строка (соль). Соль хранится вместе с хешем. Это делает радужные таблицы бесполезными: даже одинаковые пароли разных пользователей дают разные хеши. Однако при использовании быстрых хеш-функций (например, SHA-256) злоумышленник может перебирать пароли с высокой скоростью (миллиарды попыток в секунду на GPU).
¶Медленные хеш-функции (Key Derivation Functions, KDF)
Специализированные алгоритмы, разработанные для хранения паролей. Они намеренно медленные и требуют значительных вычислительных ресурсов (памяти и времени). Примеры:
- bcrypt — использует Blowfish-шифрование, настраиваемый фактор стоимости (число раундов).
- scrypt — требует большого объёма памяти, что затрудняет атаки на GPU и ASIC.
- Argon2 — победитель конкурса Password Hashing Competition (2015). Поддерживает настройку времени, памяти и параллелизма. Рекомендуется современными стандартами (например, OWASP).
¶Шифрование
Пароль может быть зашифрован симметричным алгоритмом (например, AES). Ключ шифрования хранится отдельно (например, в аппаратном модуле безопасности или в памяти процесса). Этот метод используется в менеджерах паролей, где мастер-пароль пользователя служит ключом для расшифровки хранилища. Шифрование не защищает от атак на сам сервер, если ключ скомпрометирован.
¶Менеджеры паролей
Менеджер паролей — это программное обеспечение, которое хранит пароли пользователя в зашифрованном виде и предоставляет к ним доступ по одному мастер-паролю или биометрическому ключу. Основные функции:
- Генерация сложных случайных паролей.
- Автозаполнение форм входа на сайтах и в приложениях.
- Синхронизация между устройствами (через облачное хранилище).
- Проверка уязвимых или повторно используемых паролей.
Популярные менеджеры: 1Password, Bitwarden, KeePass, LastPass, Dashlane. Некоторые из них имеют открытый исходный код (Bitwarden, KeePass), что позволяет независимо проверять их безопасность. Риски использования менеджеров паролей включают утечку мастер-пароля, компрометацию облачного хранилища или уязвимости в самом приложении.
¶Безопасность хранения на стороне сервера
¶Требования к серверному хранению
- Пароли никогда не должны храниться в открытом виде.
- Должна использоваться медленная хеш-функция с солью (рекомендуется Argon2id, bcrypt или scrypt).
- Соль должна быть уникальной для каждого пользователя и иметь достаточную длину (не менее 16 байт).
- Хеш и соль должны храниться в защищённой базе данных, доступ к которой ограничен.
- Необходимо использовать HTTPS для защиты паролей при передаче по сети.
- Рекомендуется внедрять многофакторную аутентификацию (MFA) для снижения риска при утечке хешей.
¶Атаки на серверное хранение
- Утечка базы данных — злоумышленник получает файл с хешами и солями. Далее он может проводить атаки перебора (брутфорс) или по словарю.
- Атака по словарю — перебор наиболее распространённых паролей (например, из списка RockYou).
- Радужные таблицы — предварительно вычисленные таблицы соответствия хешей и паролей. Соль делает их бесполезными.
- Атака на GPU/ASIC — использование специализированного оборудования для ускорения перебора. Медленные хеш-функции (Argon2, scrypt) затрудняют такие атаки.
¶Безопасность хранения на стороне пользователя
¶Локальное хранение
- Пароли могут храниться в браузере (встроенный менеджер паролей). Браузеры (Chrome, Firefox, Edge) шифруют пароли мастер-паролем или ключом операционной системы, но уязвимости браузера могут привести к их краже.
- Пароли в файлах (например, в текстовых документах) — крайне небезопасно, особенно при отсутствии шифрования диска.
- Менеджеры паролей с локальным хранилищем (KeePass) — более безопасный вариант, но требуют ручного резервного копирования.
¶Физические носители
- Бумажные блокноты — защищены от цифровых атак, но уязвимы для физической кражи или утери.
- Аппаратные ключи (YubiKey, Titan) — хранят криптографические ключи, а не пароли. Используются для многофакторной аутентификации.
¶Критика и проблемы
- Человеческий фактор: пользователи часто выбирают слабые пароли, повторно используют их на разных сайтах или записывают на стикерах.
- Утечки данных: даже при правильном хешировании, если пароль слабый (например, «123456»), он будет подобран перебором за секунды.
- Сложность управления: большое количество учётных записей вынуждает пользователей либо использовать менеджеры паролей (что создаёт единую точку отказа), либо нарушать правила безопасности.
- Регуляторные требования: в некоторых отраслях (финансы, медицина, госсектор) существуют стандарты (например, PCI DSS, GDPR, 152-ФЗ), которые предписывают определённые методы хранения и защиты паролей. В России действует Федеральный закон «О персональных данных» (152-ФЗ), требующий обеспечения безопасности персональных данных, включая пароли.
¶Интересные факты
- Первая известная утечка паролей произошла в 1970-х годах в системе CTSS (MIT), где пароли хранились в открытом виде.
- В 2012 году произошла утечка базы данных LinkedIn (6,5 млн хешей SHA-1 без соли), что позволило восстановить большинство паролей.
- Алгоритм Argon2 был разработан российской командой криптографов (Алексей Бирюков, Дмитрий Ховратович и др.) и стал стандартом де-факто для хранения паролей.
- По данным исследования NordPass (2023), самым популярным паролем в мире остаётся «123456», который можно подобрать менее чем за секунду.
¶Источники
- OWASP Password Storage Cheat Sheet
- NIST Special Publication 800-63B (Digital Identity Guidelines)
- Федеральный закон «О персональных данных» № 152-ФЗ (Российская Федерация)
- RFC 9106 (Argon2)
- «Password Hashing Competition» — официальный сайт конкурса
- NordPass — «Top 200 Most Common Passwords of 2023»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


