В связи с недавним взломом инфраструктуры LastPass многие пользователи сервиса задумались о сохранности своих данных. Администрация LastPass утверждает, что пользовательские данные остались недоступными злоумышленникам из-за использования алгоритма Password-Based Key Derivation Function (PBKDF2) при формировании хэша аутентификации.

Стандартная реализация PBKDF2 использует алгоритм хеширования SHA-1. LastPass  использует алгоритм хэширования SHA-256, который обеспечивает более высокий уровень защиты от bruteforce атак. Процесс  хеширования проводится на стороне клиента и составляет от 5000 до 200.000 итераций, в зависимости от производительности. LastPass также выполняет 100000 итераций PBKDF2 на стороне сервера. Эта реализация PBKDF2 на клиенте и на сервере гарантирует повышенную безопасность.

PBKDF2 (Password-Based Key Derivation Function 2 или Функция Получения Ключа На Основе Пароля 2) – это функция получения ключа, разработанная RSA Laboratories, используемая для получения стойких ключей на основе хэша. Она работает путем применения псевдослучайной хэш-функции (вроде SHA-256, SHA-512, и т. д.) к строке, в нашем случае – к паролю, вместе с солью и повторением этого процесса большое число раз. Данный процесс может быть обобщен следующей диаграммой:

PBKDF2

При использовании этого алгоритма хэшируется соль и открытый текст для получения первого хэша, затем в цикле тот же алгоритм используется для вычисления хэша от открытого текста и результата предыдущей итерации, после чего возвращается результат применения операции XOR ко всем вычисленным хэшам. Выполнив на серверной стороне данную операцию 100000 (как утверждают LastPass) или больше раз, вы с генерируете сильный, стойкий ко взлому хэш, который можно безопасно использовать для хранения паролей. Технические подробности доступны в NIST-SP800-132.