Как Дропбокс хранит пароли (blogs.dropbox.com)
Месяц назад стало известно, что в 2012 году была украдена база с паролями пользователей Дропбокса. Видимо, после этого они решили рассказать, как пароли хранятся сейчас.
Пароли оборачиваются в несколько слоев.
- Пароль хешируется с помощью SHA512. Так все пароли приводятся к одной длине (64 байта) с минимальными потерями энтропии на бит. Если этого не делать, то возможны проблемы: либо bcrypt будет брать только первые 72 байта пароля и отбрасывать всё остальное, либо он будет обрабатывать длинные пароли очень долго. Кроме того, судя по утечке, в какой-то момент в Дропбоксе хешировали одним SHA512, а потом стали использовать bcrypt. Похоже, проще всего было перейти, просто захешировав имеющиеся SHA512.
- Потом хеш подается на вход алгоритму хеширования bcrypt с рабочим фактором 10. Этот хеш вычисляется очень медленно (100 миллисекунд на серверах Дропбокса). Поэтому исходное значение трудно подобрать брутфорсом, потребуется слишком много времени. Соль уникальна для каждого пароля и тоже хранится в базе данных.
- Полученный на предыдущем шаге результат шифруется с помощью симметричного шифра AES256. Ключ (он называется перец) один для всех, он хранится отдельно от базы с паролями. Поэтому если эта база снова будет украдена, взломщики, не знающие перца, не смогут добраться даже до хешей. С другой стороны, если перец будет скомпрометирован, Дропбокс просто расшифрует хеши и зашифрует их уже с новым перцем.
Поделиться ссылкой:
ВКонтакте
Твиттер
Фейсбук
27 сентября 2016 21:08