Вы используете хэши хэшей. В вашей схеме это безопасно. Видеть подробности здесь.
Вы используете PBKDF2 и тем самым защищаете производные пароли от перебора.
Но ваш подход может привести к проблемам с юзабилити. Предположим, у вас есть 100–200 учетных записей для веб-сайтов, почтовых служб, социальных сетей, видео- и аудиосервисов, интернет-магазинов, банков и т. д. Подумайте о следующих случаях:
- Один веб-сайт требует, чтобы вы меняли свой пароль один раз в год, другой — каждые 3 месяца.
- Один веб-сайт хранит пароли в простой форме. Их база паролей была скомпрометирована. Они требуют, чтобы вы изменили свои пароли в течение 3 дней.
- По ошибке вы использовали пароль для другого сайта. После нескольких попыток ваш аккаунт был заблокирован. После разблокировки вас попросят ввести новый пароль.
Чтобы изменить пароль для одного веб-сайта, вам придется изменить свой базовый пароль. Это изменит производные пароли для всех других веб-сайтов. Вот почему вам придется пойти в каждый единый веб-сайт и изменить свой пароль.
- Это может занять много времени.
- Вы можете забыть некоторые веб-сайты, потому что, поскольку вы получаете пароли автоматически, возможно, вы не ведете список. Позже вы удивитесь, что такие забытые сайты не принимают пароль.
- Некоторые веб-сайты могут быть недоступны в тот момент, когда вы хотите сменить пароль. Или у вас просто нет времени менять пароль сразу на все сайты и делать это блоками, 10 сайтов сегодня, 10 сайтов завтра и т.д. В дальнейшем вы будете не уверены, где вы уже меняли пароль и таким образом какой базовый пароль для какого веб-сайта вы должны использовать.
Вы сами решаете, приемлемо ли это для вас.
Но если вы используете некоторые менеджер паролей, вы получите надежно защищенные пароли, например. KeePass шифрует с помощью AES-256 и использует настраиваемое количество итераций для получения пароля, вам все равно нужно помнить один хороший пароль, например, на основе dicewire, но преимущество в том, что все ваши пароли к разным ресурсам остаются независимый друг на друга, и у вас не будет проблем с удобством использования, упомянутых выше.