【问题标题】:Best Practice for Sensitive User Information Storage on Remote Service远程服务敏感用户信息存储最佳实践
【发布时间】:2011-02-22 09:12:08
【问题描述】:

我们有一个桌面和移动应用程序,用于访问许多第三方服务。 这些服务有一些潜在的敏感信息——例如身份验证令牌,在某些情况下还有明文用户名/密码。

我们希望提供一项服务,以在多台计算机和设备之间同步他们的设置。也就是说 - 他们登录我们提供的服务,然后在他们登录的任何地方同步该信息。

我们无法强制第三方应用程序停止使用明文密码。

我们考虑了几种方法:

  1. 永远不要发送密码或身份验证令牌。

    当用户在新设备上登录时,他们需要为每个第三方服务重新输入/验证设备。

    优点:安全,没有密码/令牌泄露的风险。
    缺点:对用户来说很难。

  2. 使用客户端证书或硬件令牌加密敏感信息。

    当用户想要登录时,他们会提供证书/硬件令牌。

    优点:非常安全。
    劣势:进入门槛高,非营利性应用难以实施。

  3. 使用用户提供的密码加密敏感信息

    当用户在新设备上登录时,系统会提示他们提供密码。
    如果密码不正确,他们需要重新输入/验证所有其他设备。

    优点:安全,如果用户提供强密码。
    缺点:如果用户重置密码,他们需要为所有第三方应用程序重新验证设备。

  4. 加密我们服务器上的敏感信息。

    优点:对用户来说很容易。
    缺点:对于抓取设置表的任何人来说,工作量只比明文多一点。

  5. 不要费心加密任何东西。 (明文存储)

    优点:对用户来说很容易。
    缺点:任何获取我们数据库的人都可以轻松获取所有用户的密码/身份验证令牌。

我的问题是:我们还没有考虑过更好的方法吗?

【问题讨论】:

    标签: security encryption-asymmetric


    【解决方案1】:

    好的,这是一个多方面的问题。您必须考虑信息在 Internet 上传输时以及在服务器上时的安全性。

    关于第一种情况,当然最好不要冒密码泄露的风险,但是您创建的应用程序是为了方便用户。如果操作正确,则可以安全地传递信息而没有暴露的风险。但是,请记住,正确实施密码学并不是一件可以掉以轻心的壮举。事实上,当我说你永远不应该实现自己的密码学时,应该使用现有的经过时间考验的密码库并注意正确使用它们。

    至于第二条,虽然您是正确的,您不应该自己实现加密,但有许多程序和库用于生成公钥和私钥并使用它们来保护信息。

    您 100% 需要加密存储在数据库中的信息。如果有足够的时间/动机,每台服务器都是不安全的。然而,如果没有适当的信息,加密的信息可能在计算上是不可行的。

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 2020-12-24
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多