Security 在远程服务上存储敏感用户信息的最佳做法

Security 在远程服务上存储敏感用户信息的最佳做法,security,encryption-asymmetric,Security,Encryption Asymmetric,我们有一个桌面和移动应用程序,用于访问许多第三方服务。 这些服务有一些潜在的敏感信息,例如身份验证令牌,在某些情况下还有明文用户名/密码 我们希望提供一项服务,以跨多台计算机和设备同步其设置。也就是说,他们登录到我们提供的服务,然后这些信息在他们登录的任何地方同步 我们无法强制第三方应用程序停止使用明文密码 我们考虑了几种方法: 永远不要向上发送密码或身份验证令牌 当用户登录新设备时,他们需要为每个第三方服务重新输入/验证设备 优点:安全,无密码/令牌泄露风险。 缺点:对用户来说很难 使用客户端

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

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

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

我们考虑了几种方法:

  • 永远不要向上发送密码或身份验证令牌

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

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

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

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

    优点:非常安全。
    劣势:进入壁垒巨大,非营利应用难以实现

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

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

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

  • 加密服务器上的敏感信息

    优点:便于用户使用。
    缺点:对于任何抓取设置表的人来说,只比纯文本稍微多一些工作

  • 不要费心加密任何东西。(纯文本存储)

    优点:便于用户使用。
    缺点:任何人只要抓住我们的数据库,就很容易获得所有用户的密码/身份验证令牌


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

    好的,这是一个多方面的问题。你必须考虑信息的安全性,因为它是在互联网上传输的,当它在你的服务器上时。p> 关于案例1,当然最好不要冒密码泄露的风险,但是您创建的应用程序是为了方便用户。如果操作正确,信息可以安全地传递,而不会有暴露的风险。然而,要记住,正确地实现密码学并不是一项可以轻视的壮举。事实上,当我说您永远不应该实现您自己的加密,而是使用现有的经过时间测试的加密库时,请注意正确使用它们

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


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

    好的,这是一个多方面的问题。你必须考虑信息的安全性,因为它是在互联网上传输的,当它在你的服务器上时。p> 关于案例1,当然最好不要冒密码泄露的风险,但是您创建的应用程序是为了方便用户。如果操作正确,信息可以安全地传递,而不会有暴露的风险。然而,要记住,正确地实现密码学并不是一项可以轻视的壮举。事实上,当我说您永远不应该实现您自己的加密,而是使用现有的经过时间测试的加密库时,请注意正确使用它们

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

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