Security 如何存储用于在不同平台上进行身份验证的密码?

Security 如何存储用于在不同平台上进行身份验证的密码?,security,passwords,password-hash,Security,Passwords,Password Hash,我有不同平台的登录(比如facebook凭据),我想安全地存储在数据库中。我希望能够使用API通过应用程序(自动)登录到这些平台 是否有一种安全的方法来存储这些登录而不丢失它们(不能散列它们) 谢谢你不想知道安全的方法。你想知道安全的方法。:) 你猜怎么着,没有。想象一下。您想存储一些敏感数据。你使用加密。伟大的现在数据是安全的。你怎么处理钥匙?让用户记住它?不,您希望自动执行某些操作,因此您需要将密钥放在某个位置(而不是用户可以记住random>128位…)。那你用钥匙干什么?加密吗?你已经做

我有不同平台的登录(比如facebook凭据),我想安全地存储在数据库中。我希望能够使用API通过应用程序(自动)登录到这些平台

是否有一种安全的方法来存储这些登录而不丢失它们(不能散列它们)


谢谢

你不想知道安全的方法。你想知道安全的方法。:)

你猜怎么着,没有。想象一下。您想存储一些敏感数据。你使用加密。伟大的现在数据是安全的。你怎么处理钥匙?让用户记住它?不,您希望自动执行某些操作,因此您需要将密钥放在某个位置(而不是用户可以记住random>128位…)。那你用钥匙干什么?加密吗?你已经做过一次了。您可以混淆、隐藏、放置访问权限等。如果你想让事情自动发生,需要有一把钥匙放在某个地方


例如,请看。想象一下你可以拥有像KeePass一样安全的东西。这就是你能走的路。

你不想知道安全的路。你想知道安全的方法。:)

你猜怎么着,没有。想象一下。您想存储一些敏感数据。你使用加密。伟大的现在数据是安全的。你怎么处理钥匙?让用户记住它?不,您希望自动执行某些操作,因此您需要将密钥放在某个位置(而不是用户可以记住random>128位…)。那你用钥匙干什么?加密吗?你已经做过一次了。您可以混淆、隐藏、放置访问权限等。如果你想让事情自动发生,需要有一把钥匙放在某个地方


例如,请看。想象一下你可以拥有像KeePass一样安全的东西。这是您所能做到的。

您的应用程序为第三方存储凭据的风险可能太大。如果我是你的目标用户,我肯定不会相信某个平台会以该平台本身可以访问的方式将我的凭据存储到facebook和其他网站

假设您评估并接受了此风险,并且您的用户出于某种原因会信任您。您需要承认的一件事是,如果您的平台被破坏,存储的所有凭据都将被破坏,但您可以限制这种破坏的影响,这是您应该做的

您应该使用硬件安全模块。这在传统上是非常昂贵和复杂的,但现在您可以将HSM用作云服务。所有主要的云平台都有CloudHSM解决方案,以及基于HSM本身的更高级别服务

HSM的要点是存储的密钥永远不会释放。在HSM中生成密钥对,无法提取私钥。对于加密操作(如加密、解密),您将数据发送到HSM,它会为您执行此操作,而您永远不知道密钥。关键是,即使存在妥协,影响也是有限的,因为攻击者的访问是有时间限制的,而且您还可以对HSM本身应用适当的审核和访问控制

但HSM不存储网站凭据,而是存储密钥对。因此,您可以使用类似于Amazon Secrets Manager(或者您可以构建自己的,但这非常棘手)的东西,它本身基于AWS KMS,并使用安全存储在HSM中的密钥加密您的秘密

你会的

  • 创建一个KMS密钥,如果您有大客户,那么每个客户可能会有一个KMS密钥(或者如果是公司,他们可能会提供自己的KMS密钥,请参阅自带密钥,BYOK)
  • 使用secrets manager存储机密,最好使用客户特定的密钥进行加密
  • 使用IAM角色在say AWS中运行您的应用程序,允许其访问secrets Manager中的机密
请注意,在没有AWS或任何其他云提供商的情况下,也可以建立类似的体系结构,但它要复杂得多

这提供给你的是

  • 可审核性(谁使用了哪个密钥/机密/凭证,以及何时使用)
  • 撤销访问权的可能性
  • 对您的凭证存储进行有时限的访问,即使攻击者确实危害了您的整个应用程序
  • 一个选项,让您的用户知道是否存在妥协,在这种情况下,他们将需要更改下游服务中的凭据
  • 如上所述

请注意,这是一件相当复杂的事情,tom需要实现并正确处理,而且操作成本也不可忽略。您需要流程和技术控制来减轻许多其他风险。这只是一个简短的介绍,你可以实际做些什么来保护这些秘密。

你的应用程序为第三方存储凭据的风险可能太大了。如果我是你的目标用户,我肯定不会相信某个平台会以该平台本身可以访问的方式将我的凭据存储到facebook和其他网站

假设您评估并接受了此风险,并且您的用户出于某种原因会信任您。您需要承认的一件事是,如果您的平台被破坏,存储的所有凭据都将被破坏,但您可以限制这种破坏的影响,这是您应该做的

您应该使用硬件安全模块。这在传统上是非常昂贵和复杂的,但现在您可以将HSM用作云服务。所有主要的云平台都有CloudHSM解决方案,以及基于HSM本身的更高级别服务

HSM的要点是存储的密钥永远不会释放。在HSM中生成密钥对,无法提取私钥。对于加密操作(如加密、解密),您将数据发送到HSM,它会为您执行此操作,而您永远不知道密钥。关键是,即使有妥协,影响