Этот сайт автоматически переводится на несколько языков с помощью программного обеспечения, разработанного Коэем Коянаги. Для точности см. оригинал на английском .

Как мы защищаем ваши пароли

Splync никогда не хранит ваш пароль в открытом виде

В предыдущих статьях мы обсуждали, как HTTPS защищает маршрут между вашим приложением и нашим сервером, а SSH — сам сервер. Теперь пора заглянуть внутрь сервера и узнать, как Splync сохраняет ваш пароль в безопасности, когда он поступает туда. Если кто-то получит ваш пароль, он сможет войти в ваш аккаунт и получить доступ к конфиденциальной информации, включая записи расходов. Поэтому Splync никогда не хранит пароли в открытом виде. Вместо этого каждый пароль преобразуется в хешированную версию, прежде чем быть сохраненным в базе данных. Что это значит? Хеширование — это одностороннее преобразование, которое нельзя обратить, чтобы вернуть оригинальный пароль. Этот метод используется повсеместно в интернете, от банков до крупных облачных сервисов, однако многие люди не знают, как именно он работает. Давайте разберем это на простом, повседневном примере.

Основы хеширования: блендер, который всегда смешивает одинаково

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

Пример SHA-256: как проверять пароли, не зная их

SHA-256 — один из самых распространенных алгоритмов хеширования. Например, он хеширует пароль "splync1234" в “9cdafa20d069ecfb202e5f0bc937c73071cc6cd85634cc2d95d30ddcf2a71d41”. За миллисекунды, каждый раз, когда существующий пользователь вводит пароль для входа, SHA-256 всегда производит тот же хешированный пароль. Приложение просто снова хеширует введенный пароль и проверяет, соответствует ли он сохранённому хешу. Система никогда не знает оригинальный пароль пользователя. Но что, если злоумышленник заранее создает список распространенных паролей и их хешей (так называемая атака радужной таблицы), чтобы быстро угадывать пароли пользователей? Эта угроза реальна. Поэтому современные системы, включая Splync, не полагаются на простой SHA-256.

Splync хеширует пароли с помощью bcrypt — сильнее, чем SHA-256

Bcrypt использует случайную соль для каждого пользователя и кодирует эту соль (и фактор стоимости) непосредственно в строку сохраненного хеша. Представьте bcrypt как блендер с секретной специей (солью) и медленным мотором (фактором работы) — он делает каждую смесь уникальной и труднокопируемой. Поскольку соль составляет 128 бит (≈3×10³⁸ возможностей), один и тот же пароль может соответствовать астрономическому количеству различных сохраненных хешей. Это делает предвычисленные радужные таблицы бесполезными в масштабе. Во время входа в систему Splync считывает соль и стоимость из сохраненной строки bcrypt, повторно запускает bcrypt на введенном пароле с этими параметрами и сравнивает результат с сохраненным хешем. Если они совпадают, пароль верный — но поскольку bcrypt намеренно медленный, а соли уникальны, атаки методом подбора становятся гораздо более затратными для злоумышленника.

Простой пример с bcrypt

Давайте посмотрим, как это выглядит на практике. Если вы хешируете пароль "splync1234" с помощью bcrypt (используя стоимость 12), вы можете получить строку типа: `$2b$12$gBeouKYdue9uvvuV0HtGgeVPymnrojMqP/wcRw28HFlGEGIQbyw7O`. В этой строке bcrypt, `$2b` указывает версию алгоритма, `$12` показывает коэффициент стоимости (сколько раз обрабатывается пароль), `gBeouKYdue9uvvuV0HtGgeV` — это уникальная случайная соль, а `PymnrojMqP/wcRw28HFlGEGIQbyw7O` — окончательный хешированный пароль. Поскольку сам хеш содержит соль и стоимость, Splync может воспроизвести тот же процесс хеширования для проверки, извлекая эти значения из сохраненной строки и сравнивая результат. С другой стороны, если злоумышленник не знает соль и стоимость, он не может создать единую радужную таблицу, которая работает для каждого пользователя.

Хешированные пароли обеспечивают двойную защиту

У этого подхода есть еще одно важное преимущество. Поскольку Splync никогда не хранит пароли в открытом виде, даже если база данных будет утекла или украдена, пользователи не будут подвержены немедленной угрозе. Злоумышленники не могут напрямую войти, используя украденные данные, потому что у них есть только зашифрованные строки. Такой подход дает пользователям дополнительный уровень защиты сверх уже существующих мер безопасности вокруг самого сервера. Хеширование паролей не уникально для Splync; это стандарт в технологической индустрии, используемый такими гигантами, как Google, Apple и Amazon. Splync был построен с высокой степенью безопасности, и он станет только безопаснее по мере того, как мы будем продолжать улучшать защиту с помощью таких функций, как проверка электронной почты, защита от грубой силы и постоянный мониторинг.