Открыть сервис

Хранение паролей

Хранение паролей — это совокупность методов, технологий и практик, обеспечивающих сохранность учётных данных (логинов и паролей) от несанкционированного доступа, кражи или утраты. Относится к области управления доступом и информационной безопасности. Основная цель хранения паролей — предотвратить их компрометацию как со стороны внешних злоумышленников, так и со стороны внутренних угроз (например, небрежности сотрудников или вредоносного ПО).

История

До широкого распространения компьютеров и сетей пароли хранились в физическом виде — в блокнотах, сейфах или на бумажных носителях. С развитием многопользовательских операционных систем (например, 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 →