Це дійсно більше доповнення до розумної відповіді @ Брайана. Капелюхи вимкнено також до @Martijn Pieters для додавання подробиць про те, як жорстоко змусити старі паролі на основі поточного пароля та @ratchet freak для "дистанції забивання". Я не видаляю свою відповідь, тому що думаю, що це дає цікавий фон для їх резервного копіювання.
Сучасне зберігання паролів вимагає використання декількох раундів сильного одностороннього криптографічного хешу (SHA-512 +) з унікальною сіллю (128 біт +) для кожного користувача. Але не спокушайтесь зберігати додаткову інформацію про кожен пароль. Чим більше інформації ви будете зберігати про кожен пароль, тим більше ви підірвете безпеку алгоритму хешування.
Приклад
Поміркуйте, як легко зробити грубу силу, якщо ви знаєте, що:
- Це 7 символів
- Символи 3-5 - це великі літери (4 - нижче)
- 1 і 7 - це числа
- 6 - символ
Американська клавіатура має 95 символів для друку, тож знаючи, що пароль має 7 символів, виходить 95 ^ 7 = 69 833 729 610 000 = 7x10 ^ 13 перестановок. Якби це було по-справжньому випадковим, може знадобитися рік, щоб зламати це на одному процесорі 3 ГГц. Але:
- Всього 26 великих регістрів та 26 малих символів
- Є лише 10 цифр, що дають 100 можливостей для цих двох чисел
- Усього 32 символи
Отже (виправлено завдяки @Hellion):
26^4 (charcters 2-5 are known upper or lower-case)
x 100 (characters 1 & 7 are digits)
x 32 (character 6 is a symbol)
====
1,462,323,200 possible passwords.
Це в 50000 разів простіше зламати! Збереження хорошої інформації для запобігання подібних паролів у цьому випадку зайняло час тріщини для 7-символьного пароля від року до року. Розшифровка всіх ваших паролів на потужному багатопроцесорному робочому столі з хорошою відеокарткою і трохи терпіння зараз дуже здійсненна. Сподіваюся, цей простий приклад демонструє, що чим змістовніше ви можете порівнювати подібні паролі, тим менш безпечним буде ваше хешування.
Важливість сильного хешингу
Бази даних з паролями викрадаються регулярно, з новими щомісяця в новинах. Чорт, тільки минулого місяця штат СК втратив усі номери соціального страхування - ой! Скільки ще цих порушень прикрито?
Заключна думка
Для мене найстрашніше - коли люди обирають один і той же або подібний пароль для декількох сайтів, так що вторгнення в один дає зловмиснику доступ до них усіх. Я хотів би бачити перевірений метод запобігання подібній ситуації, хоча, думаю, запобігання найпоширенішим неправильним паролям допоможе більше, ніж заборонити окремому користувачеві повторно використовувати свій неправильний пароль на одному веб-сайті. Найкраще, що я можу запропонувати, - це політика для всієї компанії щодо використання захищеного менеджера паролів, який генерує високо випадкові паролі для кожного вашого користувача та надійно зберігає їх.