B2B Engineering Insights & Architectural Teardowns

PostgreSQL уходит от MD5: почему схема аутентификации меняется

MD5 долго оставался стандартом для аутентификации в PostgreSQL. Но накопленные ограничения привели к планомерному отказу и переходу к более устойчивой модели.

Проблема проявляется не сразу — до момента, когда модель безопасности начинает опираться на устаревшие допущения. MD5 оказался удобным выбором: простая реализация, низкая нагрузка, минимальная задержка (latency) при аутентификации. Поэтому он закрепился как дефолтный механизм. Но фундаментальное ограничение — коллизии. Разные входные данные могут давать одинаковый хеш. Для системы аутентификации это означает, что проверка «по совпадению хеша» перестаёт быть строгой гарантией. Ситуацию усугубляет то, что атаки чаще не требуют полного взлома — достаточно подобрать совпадающий хеш через словарные или упрощённые методы.

PostgreSQL частично смягчил этот риск. В отличие от «чистого» MD5, здесь используется комбинация имени пользователя и пароля перед хешированием. Это снижает вероятность тривиальных совпадений и усложняет повторное использование хеша. Но это не устраняет базовую проблему алгоритма. Если MD5-хеш утёк, остаётся риск подбора совпадающей строки. Поэтому сообщество выбрало эволюционный путь: поэтапный отказ от MD5. Сначала — статус deprecated, затем запрет на создание новых MD5-паролей, далее — отключение аутентификации и, в финале, невозможность апгрейда с такими данными. Это снижает риск резких сбоев в продакшене и даёт время на миграцию.

Альтернатива — scram-sha-256, доступная начиная с PostgreSQL 10. Здесь меняется сама модель взаимодействия. Аутентификация становится двусторонней: клиент и сервер обмениваются ключами, а не просто сравнивают хеш. Пароль не передаётся в открытом виде. Используется более длинный хеш (256 бит) и дополнительные элементы протокола. Это увеличивает вычислительную нагрузку и усложняет реализацию, но снижает риск атак типа pass-the-hash. По сути, система уходит от статической проверки к протоколу с участием обеих сторон.

На практике переход не бесплатный. scram-sha-256 требует обновления клиентов и аккуратной настройки. Некоторые сценарии без дополнительного уровня аутентификации становятся сложнее. Также сохраняется общий принцип: любой алгоритм теоретически уязвим. Но здесь важен не абсолютный уровень защиты, а вероятность эксплуатации. В этом смысле scram-sha-256 — более устойчивый компромисс.

Итог прагматичный. MD5 в PostgreSQL не был полностью небезопасным из-за дополнительной логики, но его модель больше не соответствует текущим ожиданиям безопасности. Переход на scram-sha-256 — это не усиление «на всякий случай», а устранение известного класса рисков с контролируемыми издержками. Конкретные метрики улучшений не приводятся, но направление соответствует общему вектору индустрии: уход от простых хешей к протоколам аутентификации.

Читать

×

🚀 Deploy the Blocks

Controls: ← → to move, ↑ to rotate, ↓ to drop.
Mobile: use buttons below.