Hacker News

Nie używaj kluczy do szyfrowania danych użytkownika

Dowiedz się, dlaczego hasła doskonale nadają się do uwierzytelniania, ale są niebezpieczne w przypadku szyfrowania danych. Dzięki tej krytycznej analizie bezpieczeństwa unikaj blokowania użytkownikom dostępu do ich własnych danych.

7 min. przeczytaj

Mewayz Team

Editorial Team

Hacker News

Klucze dostępu to najbardziej ekscytujący rozwój uwierzytelniania od lat. Eliminują phishing, usuwają obciążenie związane z hasłami i zapewniają bezproblemowe logowanie wspierane przez kryptografię klucza publicznego. Jednak wśród społeczności programistów szerzy się niebezpieczne błędne przekonanie: jeśli klucze są kryptograficzne, z pewnością mogą również szyfrować dane użytkownika. Nie mogą — a próba użycia ich w ten sposób spowoduje utworzenie kruchych i zawodnych systemów, które mogą trwale zablokować użytkownikom dostęp do ich własnych informacji. Zrozumienie dlaczego wymaga jasnego spojrzenia na to, czym właściwie są klucze dostępu, jakie są wymagania dotyczące szyfrowania i gdzie te dwa elementy różnią się w sposób, który ma ogromne znaczenie dla każdej platformy obsługującej wrażliwe dane biznesowe.

Uwierzytelnianie i szyfrowanie to zasadniczo różne zadania

Uwierzytelnianie odpowiada na jedno pytanie: „Czy jesteś tym, za kogo się podajesz?” Szyfrowanie odpowiada na zupełnie inne pytanie: „Czy te dane mogą pozostać nieczytelne dla wszystkich oprócz upoważnionych stron?” Te dwa problemy mają wspólne podstawy kryptograficzne, ale wymagania inżynieryjne znacznie się od siebie różnią. Uwierzytelnianie musi odbywać się raz na sesję, może tolerować sporadyczne niepowodzenia z płynnymi awariami i nie musi generować za każdym razem tego samego wyniku. Szyfrowanie wymaga deterministycznego, powtarzalnego dostępu do klucza przez cały okres istnienia danych – który może wynosić lata lub dekady.

Podczas uwierzytelniania za pomocą hasła urządzenie generuje podpis kryptograficzny potwierdzający, że posiadasz klucz prywatny powiązany z kontem. Serwer weryfikuje ten podpis i udziela dostępu. W żadnym momencie serwer — ani nawet Twoja aplikacja — nie uzyskuje dostępu do samego materiału klucza prywatnego. Jest to cecha, a nie ograniczenie. Cały model bezpieczeństwa kluczy opiera się na tym, że klucz prywatny nigdy nie opuszcza bezpiecznej enklawy Twojego urządzenia. Jednak szyfrowanie wymaga użycia klucza do przekształcenia danych, a później użycia tego samego klucza (lub jego odpowiednika) do odwrócenia transformacji. Jeśli nie możesz wiarygodnie uzyskać dostępu do klucza, nie możesz niezawodnie odszyfrować.

Platformy takie jak Mewayz, które zarządzają wrażliwymi informacjami biznesowymi – fakturami, dokumentacją płacową, kontaktami CRM i dokumentami HR w 207 modułach – wymagają strategii szyfrowania zbudowanych na kluczach, które są trwałe, możliwe do odzyskania i stale dostępne. Budowanie tego na fundamencie zaprojektowanym specjalnie tak, aby uniemożliwić dostęp do kluczy, jest architektoniczną sprzecznością.

Dlaczego klucze dostępu nie są używane jako klucze szyfrujące

Specyfikacja WebAuthn, która stanowi podstawę kluczy dostępu, została celowo zaprojektowana z ograniczeniami, które sprawiają, że szyfrowanie jest niepraktyczne. Zrozumienie tych ograniczeń pokazuje, dlaczego nie jest to luka, którą sprytna inżynieria może wypełnić – to podstawowa granica projektowa.

Brak eksportu kluczy: klucze prywatne wygenerowane podczas rejestracji klucza dostępu są przechowywane w bezpiecznych enklawach wspieranych sprzętowo (TPM, Secure Enclave lub równoważne). Interfejsy API systemu operacyjnego i przeglądarki nie zapewniają mechanizmu wyodrębniania surowego materiału klucza. Możesz poprosić klucz o podpisanie czegoś, ale samego klucza nie możesz odczytać.

💡 CZY WIESZ?

Mewayz replaces 8+ business tools in one platform

CRM · Fakturowanie · HR · Projekty · Rezerwacje · eCommerce · POS · Analityka. Darmowy plan dostępny na zawsze.

Zacznij za darmo →

Niedeterministyczne generowanie kluczy: utworzenie hasła dla tego samego użytkownika na innym urządzeniu daje zupełnie inną parę kluczy. Nie ma frazy początkowej, ścieżki wyprowadzenia, nie ma możliwości zrekonstruowania tego samego klucza na innym urządzeniu. Każda rejestracja jest niezależna kryptograficznie.

Dostępność na poziomie urządzenia: nawet w przypadku synchronizacji kluczy (pęk kluczy iCloud, Menedżer haseł Google) dostępność zależy od udziału ekosystemu. Użytkownik, który zarejestruje się na iPhonie, a później przejdzie na Androida, może utracić dostęp. Użytkownik, którego urządzenie zostało zgubione, skradzione lub przywrócone do ustawień fabrycznych, staje przed tym samym problemem.

Tylko wyzwanie-odpowiedź: interfejs API WebAuthn udostępnia metodę navigator.credentials.get(), która zwraca podpisaną asercję, a nie surowy klucz. Otrzymujesz podpis w ramach wyzwania dostarczonego przez serwer — przydatny do potwierdzenia tożsamości, bezużyteczny do uzyskania klucza szyfrowania.

Brak elastyczności algorytmu: klucze zwykle wykorzystują ECDSA z krzywą P-256. Nawet jeśli mógłbyś uzyskać dostęp do klucza, ECDSA jest algorytmem podpisywania

Frequently Asked Questions

Why can't passkeys be used to encrypt user data?

Passkeys are designed exclusively for authentication, not encryption. They rely on public-key cryptography to verify your identity during login, but the private key never leaves your device and isn't accessible to applications. Encryption requires stable, reproducible keys that can consistently decrypt data over time. Passkeys lack this capability by design, making them fundamentally unsuitable for protecting stored user information.

What happens if you try to encrypt data with passkeys anyway?

You risk building a brittle system where users get permanently locked out of their own data. Passkeys can be revoked, rotated, or replaced across devices without warning. If encrypted data is tied to a specific passkey that gets deleted or updated, there is no recovery path. This creates a catastrophic data-loss scenario that no amount of engineering workaround can reliably prevent.

What should developers use instead of passkeys for data encryption?

Developers should use purpose-built encryption solutions such as AES-256 with proper key management, envelope encryption, or established libraries like libsodium. Keep authentication and encryption as separate concerns. Use passkeys for what they excel at — passwordless login — and dedicated encryption keys managed through secure key derivation and storage systems for protecting sensitive user data.

How does Mewayz handle authentication and data security for businesses?

Mewayz provides a 207-module business OS starting at $19/mo that separates authentication from data protection using industry best practices. Rather than misusing passkeys, the platform at app.mewayz.com implements proper encryption layers alongside secure login flows, ensuring businesses can protect customer data reliably without risking the lockout scenarios that come from conflating authentication with encryption.

Wypróbuj Mewayz za Darmo

Kompleksowa platforma dla CRM, fakturowania, projektów, HR i więcej. Karta kredytowa nie jest wymagana.

Zacznij dziś zarządzać swoją firmą mądrzej.

Dołącz do 30,000+ firm. Plan darmowy na zawsze · Bez karty kredytowej.

Uznałeś to za przydatne? Udostępnij to.

Gotowy, aby wprowadzić to w życie?

Dołącz do 30,000+ firm korzystających z Mewayz. Darmowy plan forever — karta kredytowa nie jest wymagana.

Rozpocznij darmowy okres próbny →

Gotowy, by podjąć działanie?

Rozpocznij swój darmowy okres próbny Mewayz dziś

Platforma biznesowa wszystko w jednym. Karta kredytowa nie jest wymagana.

Zacznij za darmo →

14-dniowy darmowy okres próbny · Bez karty kredytowej · Anuluj w dowolnym momencie