不要使用密钥来加密用户数据
了解为什么密钥对于身份验证非常有用,但对于数据加密却很危险。通过这一关键的安全洞察,避免锁定用户,使其无法访问自己的数据。
Mewayz Team
Editorial Team
密钥是多年来最令人兴奋的身份验证发展。它们消除了网络钓鱼,消除了密码的负担,并提供了由公钥加密技术支持的无缝登录体验。但一个危险的误解正在开发者社区中传播:如果密钥是加密的,那么它们肯定也可以加密用户数据。他们不能——并且尝试以这种方式使用它们将创建脆弱、不可靠的系统,可能会永久锁定您的用户,使其无法获取自己的信息。要理解其中的原因,需要清楚地了解密钥的实际含义、加密要求以及两者的差异,这对于任何处理敏感业务数据的平台都至关重要。
身份验证和加密是根本不同的工作
身份验证回答一个问题:“您是您所声称的那个人吗?”加密则回答了一个完全不同的问题:“除授权方之外的所有人都无法读取这些数据吗?”这两个问题共享密码原语,但工程要求却截然不同。每个会话需要进行一次身份验证,可以通过优雅的回退容忍偶尔的失败,并且不需要每次都产生相同的输出。加密需要在数据的整个生命周期(可能是几年或几十年)内进行确定性、可重复的密钥访问。
当您使用密钥进行身份验证时,您的设备会生成一个加密签名,证明您持有与您的帐户关联的私钥。服务器验证此签名并授予访问权限。服务器(甚至您的应用程序)在任何时候都无法访问私钥材料本身。这是一个特性,而不是一个限制。密钥的整个安全模型取决于私钥永远不会离开设备的安全区域。但加密要求您使用密钥来转换数据,然后使用相同的密钥(或其对应密钥)来反转转换。如果您无法可靠地访问密钥,则无法可靠地解密。
像 Mewayz 这样管理敏感业务信息(发票、工资记录、CRM 联系人、跨 207 个模块的 HR 文档)的平台需要基于持久、可恢复和一致访问的密钥构建加密策略。在专门设计用于防止密钥访问的基础上构建它是一个架构矛盾。
为什么万能钥匙拒绝用作加密密钥
支持密钥的 WebAuthn 规范是特意设计的,其限制使得加密的使用变得不切实际。了解这些限制揭示了为什么这不是一个巧妙的工程可以弥合的差距——它是一个基本的设计边界。
无密钥导出:在密钥注册期间生成的私钥存储在硬件支持的安全飞地(TPM、安全飞地或等效设备)中。操作系统和浏览器 API 不提供提取原始密钥材料的机制。您可以要求密钥签署某些内容,但您无法读取密钥本身。
非确定性密钥生成:在不同设备上为同一用户创建密钥会产生完全不同的密钥对。没有种子短语,没有派生路径,无法在另一台设备上重建相同的密钥。每个注册在加密上都是独立的。
设备绑定的可用性:即使使用密钥同步(iCloud 钥匙串、Google 密码管理器),可用性也取决于生态系统的参与。在 iPhone 上注册并随后切换到 Android 的用户可能会失去访问权限。设备丢失、被盗或恢复出厂设置的用户也会面临同样的问题。
仅质询-响应:WebAuthn API 公开 navigator.credentials.get(),它返回签名的断言,而不是原始密钥材料。您通过服务器提供的质询收到签名 - 对于证明身份很有用,但对于派生加密密钥没有用处。
没有算法灵活性:万能钥匙通常使用带有 P-256 曲线的 ECDSA。即使您可以访问密钥,ECDSA 也是一种签名算法
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.
Related Posts
获取更多类似的文章
每周商业提示和产品更新。永远免费。
您已订阅!