Хэширование и шифрование: как ваш пароль хранится на сервере

Хэширование и шифрование: как ваш пароль хранится на сервере
⏱️ 1 min read

Допустим, вы создали учетную запись на VerySecureWebsite.com. Вы вводите свой адрес электронной почты и пароль и настраиваете свою учетную запись. Чуть позже вы получаете электронное письмо, в котором сообщается, что, по иронии судьбы, веб-сайт был взломан, а имена пользователей и пароли каждого пользователя, которые хранились в открытом виде, теперь продаются в даркнете. Когда ты начинаешь менять пароли на всех своих аккаунтах (ты используешь только один, монстр), ты удивляешься:Разве это не плохая идея? Разве мой пароль не должен быть в каком-то секретном коде, чтобы хакеры не могли его просто прочитать?

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

Открытый текст и базовое шифрование

открытый текст для хранения паролей

Имя пользователя Введенный пароль Сохраненная форма
Невольный пользователь Слабый пароль Слабый пароль

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

Имя пользователя Введенный пароль Зашифровано ключом AES-128: WeakKey
Невольный пользователь Слабый пароль 38MkoXVXoKe01uAOROBLpQ==

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

Хэширование > шифрование

хэширование хранения паролей

Имя пользователя Введенный пароль Строка для хеширования Хеширование с помощью SHA-256
Невольный пользователь Слабый пароль Слабый пароль 252Е2406732308Ф9А7
Б378ЭД94Э78467Д14
077D19C8282443FCD
3D6190FCABFA

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

Вот как большинство безопасных веб-сайтов управляют своими паролями:

  1. Пользователь создает учетную запись
  2. Пароль пользователя проходит через хеш-функцию и сохраняется в базе данных.
  3. Каждый раз, когда пользователь входит в систему, база данных хэширует введенный им пароль и проверяет, соответствует ли введенный хэш хэшу, который есть в файле.
  4. Если да, пользователь может войти

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

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

Чтобы сэкономить время и вычислительную мощность, многие злоумышленники просто используют таблицу поиска (или «радужную таблицу», компактную версию таблиц поиска), предварительно сгенерированную таблицу, полную потенциальных паролей и их хэшей. Вы действительно можете попробовать хэширование открытого текста а потом использовать таблицу поиска по хэшу самим собой; это не слишком сложно. По сути, если ваш пароль вообще распространен, хэш этого пароля, вероятно, уже находится в таблице поиска. Это отличная причина не использовать общие пароли.

Соленые хэши > хэши

соль для хранения паролей

Имя пользователя Введенный пароль Строка для хеширования Хэшируется с помощью SHA-256,
соль = XcyKn42, добавленная перед
Невольный пользователь Слабый пароль XcyKn42Слабый пароль 13EB660FF7FBD29A728FC5
92297D78DF19AFF8797363
15FBF1F1C4B7123BD10C

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

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

Делаем хеши еще сильнее: другие тактики

перец для хранения паролей

Имя пользователя Введенный пароль Строка для хеширования Хеширование с помощью Bcrypt,
соль = XcyKn42, в начале,
12 раундов
Невольный пользователь Слабый пароль XcyKn42Слабый пароль $2г$12$6ОлеутQBO2iPoNvg
pyDndOU26Lqt9Y34f6PLEOx
mCELP5GoswrJT.

Алгоритмы медленного хэширования, такие как PBKDF2 или bcrypt, используют технику, известную как «растягивание ключа», для замедления атак по словарю и грубой силы. По сути, это включает настройку хэш-функции для повторения определенного количества раз (хотя это немного сложнее, чем просто запускать одно и то же снова и снова), поэтому для достижения правильного хэша вам нужно использовать много вычислений. сила. Если сайт делает все это, его безопасность довольно хороша.

Имя пользователя Введенный пароль Строка для хеширования Хеширование с помощью Bcrypt,
соль = XcyKn42, в начале,
12 раундов,
перец = |4|\/|@p3pp3r, добавленный
Невольный пользователь Слабый пароль XcyKn42WeakPassword|4|\/|@p3pp3r $2г$12$njmWr5UMydCzdCE44ElW/
OIfYp2PH9sgonCATyVY.OVKSpmoSaZlu

Для дополнительной безопасности вы также можете «приправить» свои хэши, которые, надеюсь, уже просолены. Перец, как и соль, представляет собой набор значений, прикрепляемых к паролю перед его хешированием. Однако, в отличие от соли, существует только одно значение перца, и оно держится в секрете, отдельно от солей и хэшей. Это добавляет еще один уровень безопасности к соленому хэшу, но если злоумышленнику удастся его найти, он уже не очень полезен, поскольку злоумышленник может просто использовать его для вычисления новых таблиц поиска.

Не делайте из своего хэша хэш

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

Кредиты изображений: Хэш-функция

Join our Newsletter and receive offers and updates! ✅

0 0 голоса
Article Rating
Аватар Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Читайте также:

Подписаться
Уведомить о
guest
0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x