Защита паролей WordPress и хеширование

Опубликовано: 2017-11-10

Пароли — это форма аутентификации, привязанная к пользователям или процессам. Они используются для проверки личности пользователя или процесса в компьютерной системе или ресурсах. В сегодняшней современной сети сверхсвязности, устройств IoT и мобильных устройств безопасность паролей является более серьезной темой, чем когда-либо. Утечки из базы данных паролей происходят постоянно, затрагивая такие крупные компании, как LinkedIn, Tumblr и Yahoo. Боб Дьяченко из MacKeeper Security ранее в этом году писал о гигантском списке из 560 миллионов адресов электронной почты и паролей, который свободно гулял по Интернету!

Итак, в этой статье мы поговорим о трех вещах, связанных с паролями и WordPress:

  1. Генерация надежных паролей и управление ими.
  2. Как WordPress хэширует пароли.
  3. Реализация собственного хэширования паролей.

Слабые и надежные пароли

Надежность пароля с точки зрения сложности грубой силы является предметом многочисленных споров, и понятие того, насколько надежным является пароль, в значительной степени пересматривалось на протяжении десятилетий, поскольку более мощные вычислительные ресурсы становятся легко доступными для отдельных лиц. Всемирно известный эксперт по безопасности Брюс Шнайер написал отличный пост, в котором обсуждает безопасность паролей и способы выбора надежных паролей.

Говоря о надежности пароля, необходимо учитывать контекст и уровень угрозы:

Это отличается и намного сложнее, когда злоумышленник пытается угадать ваш пароль WordPress, чем если бы он или она скомпрометировали вашу безопасность и получили доступ ко всему списку хешированных паролей.

В первой ситуации злоумышленник будет быстро заблокирован службой аутентификации из-за слишком большого количества попыток входа в систему за короткий промежуток времени. Обычно злоумышленники узнают пароли другими способами, отличными от грубой силы, такими как фишинг, вредоносное ПО и тому подобное. Однако, если цель выбрала пароль, используя относительно общедоступную информацию, такую ​​как дата, имя/фамилия и т. д., злоумышленнику будет легче его угадать.

Во второй ситуации, если злоумышленник имеет доступ к файлу паролей, это может быть просто вопросом времени, особенно если используется хэш-функция MD5. Он был сломан и оказался ненадежным давным-давно. Злоумышленник может использовать современное оборудование (например, платы графического процессора) в сочетании с предварительно вычисленными «радужными» таблицами для расшифровки всего файла паролей за очень короткое время. Кроме того, в некоторых крайних случаях пароли для всех пользователей хранятся в базе данных в открытом виде. В обоих этих случаях «надежность» вашего пароля сводится на нет.

Как генерировать и хранить надежные пароли

Лучше оставить создание паролей и управление ими на компьютере, которому вы доверяете, вместо того, чтобы пытаться регулярно придумывать надежные пароли. Вы человек, и вы неизбежно ошибетесь и выберете что-то, что компьютер расценит как слабый выбор.

Использование диспетчера паролей для создания и хранения паролей для каждой службы эффективно и с наименьшим количеством угроз. Хотя мысль о хранении всех ваших паролей в одном месте может нервировать, на самом деле это плюс: зная, что все ваши пароли находятся в одном месте, вы можете легче защитить их. Больше не нужно использовать случайные листы бумаги или перестановки слабых паролей, которые вы можете легко запомнить, но их можно легко угадать. Кроме того, менеджер паролей может помочь вам создавать надежные пароли без лишней суеты.

Самый популярный (и дорогой) вариант — 1Password, но вы можете попробовать использовать тот, который поставляется в вашей операционной системе (например, iCloud KeyChain от Apple), или использовать многоплатформенное решение с открытым исходным кодом, такое как KeePass.

Разместите свой сайт с Pressidium

60- ДНЕВНАЯ ГАРАНТИЯ ВОЗВРАТА ДЕНЕГ

ПОСМОТРЕТЬ НАШИ ПЛАНЫ

Хеширование паролей WordPress

Хэширование паролей — это метод, при котором открытый текстовый пароль передается хэш-функции и преобразуется в длинное буквенно-цифровое значение. WordPress использует это для хранения их в базе данных, не позволяя посторонним глазам напрямую читать пароли WordPress. Когда вы входите в WordPress и отправляете свой пароль, он вычисляет хэш и сравнивает его с тем, что есть в базе данных. Если он совпадает, вам предоставляется доступ, если нет, вам в нем отказано. Этот метод работает, потому что определенная текстовая строка (в данном случае пароль WordPress) всегда будет генерировать одно и то же значение хеш-функции. Поскольку хэш-значение не может быть преобразовано обратно в исходный текст, WordPress может знать, что вы ввели правильный пароль, только если хэш-значение введенного вами пароля и того, который хранится в базе данных, идентичны.

По умолчанию функция WordPress wp_hash_password() использует алгоритм MD5 с 8 проходами для генерации хэшей. Однако MD5 был успешно взломан с использованием комбинации современного оборудования и метода, называемого радужными таблицами, который содержит огромное количество предварительно вычисленных значений. Это помогает злоумышленнику пробовать миллиарды комбинаций в секунду только на одном современном графическом процессоре.

Реализуйте собственное хеширование паролей WordPress

Вы можете (и должны) выбрать другую реализацию, например Bcrypt, передав кортеж (16, FALSE) объекту PasswordHash при создании экземпляра. Обе функции wp_hash_password() и wp_set_password() являются подключаемыми, поэтому вы можете предоставить свою собственную реализацию. Их можно найти в wp-includes/pluggable.php.

Roots.io (люди, стоящие за шаблонной системой WordPress Trellis, Bedrock и Sage) также выпустили плагин WordPress, который реализует функциональность bcrypt для хеш-функций WordPress по умолчанию.

Вывод

Чтобы убедиться, что вы используете надежные пароли и часто меняете их, лучше всего использовать менеджер паролей. Это может помочь хранить все ваши пароли в одном месте и напоминать вам, когда их нужно изменить. Когда дело доходит до хеширования паролей, лучше использовать криптографически безопасный алгоритм, такой как SHA-2 или Bcrypt, вместо того, чтобы возвращаться к стандартному WordPress. Лучше избегать создания собственной хэш-функции, так как одна ошибка может привести к проблемам с безопасностью.