2

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

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

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

我们考虑了几种方法:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4

1 回答 1

0

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

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

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

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

于 2012-01-17T18:09:16.460 回答