Цей сайт автоматично перекладено кількома мовами за допомогою ПЗ, розробленого Kohei Koyanagi. Для точності зверніться до оригіналу англійською .

Як ми захищаємо ваші паролі

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 побудовано дуже безпечно, і воно ставатиме лише безпечнішим, оскільки ми продовжуємо вдосконалювати безпеку за допомогою таких функцій, як перевірка електронної пошти, захист від атак грубою силою та постійний моніторинг.