Hacker News

Не използвайте пароли за криптиране на потребителски данни

Коментари

1 min read Via blog.timcappalli.me

Mewayz Team

Editorial Team

Hacker News

Паролите са най-вълнуващата разработка за удостоверяване от години. Те елиминират фишинг, премахват тежестта на паролите и осигуряват безпроблемно изживяване при влизане, подкрепено от криптография с публичен ключ. Но опасно погрешно схващане се разпространява сред общностите на разработчиците: ако ключовете за достъп са криптографски, те със сигурност могат да криптират и потребителски данни. Те не могат - и опитите да ги използвате по този начин ще създадат крехки, ненадеждни системи, които могат да блокират вашите потребители от собствената им информация за постоянно. Разбирането защо изисква ясен поглед върху това какво всъщност представляват ключовете за достъп, какви са изискванията за криптиране и къде двете се различават по начини, които са от огромно значение за всяка платформа, обработваща чувствителни бизнес данни.

Удостоверяването и криптирането са коренно различни задачи

Удостоверяването отговаря на един въпрос: „Вие ли сте този, за който се представяте?“ Шифроването отговаря на съвсем различно: "Могат ли тези данни да останат нечетими за всички, освен за упълномощени страни?" Тези два проблема споделят криптографски примитиви, но инженерните изисквания се различават рязко. Удостоверяването трябва да се извършва веднъж на сесия, може да толерира случаен отказ с елегантни резервни връщания и не е необходимо да произвежда един и същ изход всеки път. Шифроването изисква детерминистичен, възпроизводим ключов достъп през целия живот на данните — което може да бъде години или десетилетия.

Когато се удостоверявате с ключ за достъп, вашето устройство генерира криптографски подпис, доказващ, че притежавате личния ключ, свързан с вашия акаунт. Сървърът проверява този подпис и предоставя достъп. В нито един момент сървърът - или дори вашето приложение - не получават достъп до самия материал на частния ключ. Това е функция, а не ограничение. Целият модел на защита на ключовете за достъп зависи от това, че частният ключ никога не напуска защитения анклав на вашето устройство. Но криптирането изисква да използвате ключ за трансформиране на данни и по-късно да използвате същия ключ (или негов аналог), за да обърнете трансформацията. Ако не можете надеждно да получите достъп до ключа, не можете надеждно да дешифрирате.

Платформи като Mewayz, които управляват чувствителна бизнес информация — фактури, записи за заплати, CRM контакти, документи за човешки ресурси в 207 модула — се нуждаят от стратегии за криптиране, изградени върху ключове, които са издръжливи, възстановими и постоянно достъпни. Изграждането на това върху основа, проектирана специално да предотвратява достъпа на ключове, е архитектурно противоречие.

Защо паролите не могат да бъдат използвани като ключове за шифроване

Спецификацията WebAuthn, която е в основата на ключовете за достъп, е умишлено проектирана с ограничения, които правят използването на криптиране непрактично. Разбирането на тези ограничения разкрива защо това не е празнина, която интелигентното инженерство може да преодолее — това е фундаментална граница на дизайна.

  • Без експортиране на ключ: Частните ключове, генерирани по време на регистрацията на ключ за достъп, се съхраняват в хардуерно обезпечени защитени анклави (TPM, Secure Enclave или еквивалент). API на операционната система и браузъра не предоставят механизъм за извличане на необработен ключов материал. Можете да поискате от ключа да подпише нещо, но не можете да прочетете самия ключ.
  • Генериране на недетерминиран ключ: Създаването на ключ за достъп за същия потребител на различно устройство създава напълно различна двойка ключове. Няма начална фраза, няма път за извличане, няма начин да реконструирате същия ключ на друго устройство. Всяка регистрация е криптографски независима.
  • Наличност, обвързана с устройството: Дори при синхронизиране на парола (iCloud Keychain, Google Password Manager), наличността зависи от участието на екосистемата. Потребител, който се регистрира на iPhone и по-късно премине към Android, може да загуби достъп. Потребител, чието устройство е изгубено, откраднато или нулирано до фабричните настройки, се сблъсква със същия проблем.
  • Само отговор на предизвикателство: API на WebAuthn излага navigator.credentials.get(), който връща подписано твърдение, а не необработен ключов материал. Получавате подпис върху предизвикателство, предоставено от сървъра — полезно за доказване на самоличност, безполезно за извличане на ключ за шифроване.
  • Няма гъвкавост на алгоритъма: Ключовете за достъп обикновено използват ECDSA с кривата P-256. Дори и да имате достъп до ключа, ECDSA е алгоритъм за подписване, а не алгоритъм за криптиране. Ще ви трябват допълнителни трансформации (ECDH ключово споразумение, извличане на KDF), които API не поддържа в този контекст.

Някои разработчици са предложили заобиколни решения — използване на PRF (псевдо-случайна функция) разширение към WebAuthn, например, за извличане на симетрични ключове по време на удостоверяване. Въпреки че това разширение съществува в спецификацията, поддръжката на браузъра остава непоследователна, не е налице на много мобилни платформи и все още наследява проблема със свързването на устройството. Ключ, получен чрез PRF на едно устройство, не може да бъде възпроизведен на друго устройство с различен ключ за достъп, дори за същия потребителски акаунт.

Сценарият за загуба на данни, който никой не иска да изпрати

Помислете какво се случва, когато шифровате данните на потребител с ключ, извлечен от неговия ключ за достъп. Всичко работи прекрасно в първия ден. Потребителят влиза, ключът се извлича, данните се криптират и дешифрират безпроблемно. След това три месеца по-късно телефонът им пада в езеро.

При традиционното удостоверяване загубата на устройство е неудобство. Потребителят възстановява своя акаунт чрез имейл, настройва нови идентификационни данни и продължава да работи. Но ако техните данни са били криптирани с ключ, свързан със защитения анклав на вече потопеното устройство, тези данни са изчезнали. Не „трудно за възстановяване“ изчезна — криптографски необратимо изчезна. Никакъв билет за поддръжка на клиенти, никакъв поток за възстановяване на акаунт, никаква ескалация на изпълнителен директор не могат да обърнат математиката. Данните също може да са били изтрити.

<блоков цитат>

Основното правило на дизайна на системата за криптиране: ако вашата стратегия за управление на ключовете има някаква точка на повреда, която унищожава завинаги достъпа до потребителските данни, вие не сте изградили защитна функция — вие сте изградили механизъм за загуба на данни с допълнителни стъпки.

За бизнес, извършващ операции чрез платформа — управление на 50 клиентски взаимоотношения в CRM, обработване на месечни заплати за 30 служители, проследяване на автопарк — постоянната загуба на данни от изпуснат телефон не е незначителен UX проблем. Това е катастрофа на непрекъснатостта на бизнеса. Точно поради тази причина архитектурата на Mewayz разделя механизмите за удостоверяване от слоевете за защита на данните, като гарантира, че повреда на нито едно устройство не може да компрометира достъпа до критична бизнес информация в някой от интегрираните модули.

Какво трябва да използвате вместо това

Добрата новина е, че съществуват добре установени модели за криптиране на потребителски данни, без да попадате в капана на паролата. Тези подходи са тествани в битки, широко се поддържат и са проектирани специално за случая на използване на криптиране.

Криптирането от страна на сървъра с управлявани ключове остава най-практичният избор за по-голямата част от приложенията. Вашата платформа криптира данните в покой, като използва ключове, управлявани чрез подходяща услуга за управление на ключове (KMS) — AWS KMS, Google Cloud KMS, HashiCorp Vault или еквивалент. Потребителят се удостоверява (с пароли, ако желаете!) и сървърът обработва криптирането и декриптирането прозрачно. Това е начинът, по който повечето SaaS платформи защитават данните и той работи, защото ключовете са издръжливи, архивирани, въртящи се и независими от устройството на потребителя.

Ключовете за шифроване, извлечени от парола (с помощта на Argon2id или scrypt за извличане на ключ) са подходящи, когато имате нужда от истинско шифроване с нулево знание, при което дори сървърът не може да чете потребителски данни. Компромисът е, че загубата на паролата означава загуба на данните, но паролите могат да бъдат запомнени, записани и съхранени в мениджъри на пароли - те не са заключени в хардуерен анклав. Услуги като 1Password и Standard Notes използват този подход ефективно.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →
  1. Използвайте пароли (или друг силен метод) за удостоверяване — потвърждаване на самоличността на потребителя.
  2. След удостоверяване, извлечете или извлечете ключове за шифроване чрез отделна, специално създадена система за управление на ключове.
  3. Внедрете механизми за ескроу или възстановяване на ключове — ключове за възстановяване, синхронизиране на ключове с множество устройства или попечителство на организационни ключове за бизнес акаунти.
  4. Шифроване на данни в покой и в транзит чрез AES-256-GCM или XChaCha20-Poly1305 с ключове от вашия KMS.
  5. Сменете ключовете периодично и поддържайте криптирани резервни копия на ключове, които оцеляват при всяка една точка на повреда.

Това разделяне на проблемите не е просто най-добра практика — това е единствената архитектура, която ви позволява да надграждате методите за удостоверяване независимо от вашата стратегия за криптиране. Когато ключовете за достъп в крайна сметка се развият или бъдат заменени с нещо по-добро, вашите криптирани данни остават напълно достъпни.

Разширението PRF: обещания и клопки

Разработчиците, които следват спецификацията WebAuthn, може да посочат разширението prf като потенциален мост между паролите и криптирането. Това разширение позволява на разчитащата страна да поиска псевдослучайна стойност, получена от секретния материал на ключа за достъп по време на церемония за удостоверяване. На теория тази стойност може да служи като криптиращ ключ или семе.

На практика PRF разширението е изправено пред значителни бариери за приемане. От началото на 2026 г. поддръжката варира драстично в различните браузъри и платформи. Реализацията на Safari се различава от тази на Chrome. Много устройства с Android изобщо не го поддържат. Хардуерните ключове за сигурност имат непоследователна поддръжка. За всяка платформа, обслужваща разнообразна потребителска база – а Mewayz обслужва 138 000+ потребители във всяка основна операционна система и тип устройство – изграждането на криптиране върху функция с неравномерна наличност е оперативно несъстоятелно.

По-фундаментално, PRF не решава проблема с множество устройства. Псевдослучайният изход се извлича от конкретния ключ за достъп на конкретното устройство. Потребител, който регистрира пароли както на лаптопа, така и на телефона си, получава два различни PRF изхода за един и същи акаунт. Ще трябва да шифровате данни с извлечения ключ на едно устройство и след това по някакъв начин да шифровате отново или да споделите този ключ с другото устройство — което така или иначе ви връща обратно към изграждането на подходяща система за управление на ключове. В този момент извлеченият от парола ключ добавя сложност, без да добавя сигурност.

Уроци за строители: Използвайте правилния инструмент за правилния слой

Изкушението да се използват пароли за криптиране идва от добър инстинкт — разработчиците искат да използват силна криптография и да намалят броя на тайните, които потребителите трябва да управляват. Но инженерството по сигурността е основно свързано с използването на правилния примитив на правилния слой. И ключалката, и сейфът защитават ценности, но не бихте поставили резе в трезор или не бихте се опитали да носите сейф в джоба си.

Ключовете за достъп превъзхождат предназначението си. Те са намалили свързаните с фишинг поглъщания на акаунти с до 99,9% във вътрешното внедряване на Google. Те елиминират изцяло атаките с пълнене на идентификационни данни. Те осигуряват изживяване при влизане, което е едновременно по-сигурно и по-удобно от паролите. Това е забележително постижение и е достатъчно. Искането на пароли също така да разреши криптиране е като да поискате вашата защитна стена да служи и като резервна система - тя не разбира архитектурата.

Когато се изграждат платформи, които обработват чувствителни бизнес операции, архитектурата трябва да отразява ясни граници. Удостоверяването удостоверява самоличността. Упълномощаването определя достъпа. Шифроването защитава данните в покой и при пренос. Управлението на ключове гарантира, че ключовете за криптиране оцеляват при загуба на устройство, текучество на служители и промени в инфраструктурата. Всеки слой има специално създадени инструменти и смесването им създава крехкост, която се появява в най-лошите възможни моменти – когато потребителят има най-голяма нужда от достъп до данните си, но не може.

Правилно осигуряване на сигурността без излишно усложняване

За повечето SaaS приложения и бизнес платформи практическата препоръка е проста: приемете пароли с ентусиазъм за удостоверяване и управлявайте криптирането изцяло от страната на сървъра с управляван KMS. Това дава на вашите потребители най-доброто изживяване при влизане, налично днес, като същевременно защитава данните им с инфраструктура, проектирана специално за издръжливост и възстановяване.

Ако вашият модел на заплаха наистина изисква криптиране от край до край, когато сървърът няма достъп до данни в обикновен текст, инвестирайте в подходяща архитектура за криптиране от страна на клиента с ключове, извлечени от парола, кодове за възстановяване и дескрипиране на организационен ключ — не преки пътища, извлечени от ключ за достъп. Инженерната инвестиция е по-голяма, но алтернативата е доставка на система, която в крайна сметка ще унищожи нечии данни безвъзвратно.

Решенията за сигурност се натрупват с времето. Пряк път, предприет днес, се превръща в кошмар за миграция след три години, когато основният примитив се промени, екосистемата на устройството промени своята политика за синхронизиране или браузърът отхвърля разширение. Надграждането на правилните абстракции от самото начало – удостоверяване като удостоверяване, криптиране като криптиране, всяко със собствен жизнен цикъл на ключове – е основата, която позволява на платформите да се мащабират до стотици хиляди потребители без тиктакаща бомба със закъснител, заровена в криптографската система.

Често задавани въпроси

Защо паролите не могат да се използват за криптиране на потребителски данни?

Паролите са предназначени изключително за удостоверяване, а не за криптиране. Те разчитат на криптография с публичен ключ, за да потвърдят вашата самоличност по време на влизане, но частният ключ никога не напуска вашето устройство и не е достъпен за приложения. Шифроването изисква стабилни, възпроизводими ключове, които могат последователно да дешифрират данните във времето. Ключовете за достъп нямат тази възможност по дизайн, което ги прави фундаментално неподходящи за защита на съхранена потребителска информация.

Какво се случва, ако все пак се опитате да шифровате данни с пароли?

Рискувате да изградите крехка система, при която потребителите остават завинаги блокирани от собствените си данни. Ключовете за достъп могат да бъдат отменени, ротирани или заменени на различни устройства без предупреждение. Ако шифрованите данни са свързани с конкретен ключ за достъп, който се изтрива или актуализира, няма път за възстановяване. Това създава катастрофален сценарий за загуба на данни, който никакво инженерно решение не може надеждно да предотврати.

Какво трябва да използват разработчиците вместо пароли за криптиране на данни?

Разработчиците трябва да използват специално създадени решения за шифроване като AES-256 с подходящо управление на ключове, шифроване на плик или установени библиотеки като libsodium. Съхранявайте удостоверяването и криптирането като отделни въпроси. Използвайте ключове за достъп за това, в което те се отличават – влизане без парола – и специални ключове за криптиране, управлявани чрез сигурни системи за извличане на ключове и съхранение за защита на чувствителни потребителски данни.

Как Mewayz се справя с удостоверяването и сигурността на данните за бизнеса?

Mewayz предоставя бизнес операционна система с 207 модула, започваща от $19/месец, която разделя удостоверяването от защитата на данните, като използва най-добрите практики в индустрията. Вместо да злоупотребява с пароли, платформата на app.mewayz.com внедрява подходящи слоеве за криптиране заедно със сигурни потоци за влизане, като гарантира, че фирмите могат да защитават надеждно клиентските данни, без да рискуват сценариите за блокиране, които произтичат от смесването на удостоверяване с криптиране.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime