【问题标题】:Store and encrypt a password locally在本地存储和加密密码
【发布时间】:2018-07-28 04:27:45
【问题描述】:

我正在为需要使用用户名和密码进行身份验证的服务编写 QML 客户端。目前我正在使用 c++ 插件来加密和解密密码,但我想用纯 QML 替换它以避免特定于平台的二进制文件。

不是一个选项:

  • 硬编码加密密钥(因为可以从包中提取)
  • 散列(因为我需要能够恢复明文密码)
  • 默默无闻的安全性(显然)

【问题讨论】:

    标签: security encryption passwords qml password-encryption


    【解决方案1】:

    不时会出现此类问题(只需搜索 stackoverflow),并且 - 基本上,一旦数据/代码位于客户端,客户端将能够访问它们。你可以让它变得更加困难。 (我知道您希望得到另一个答案,但根据您的问题,您已经发现提出“不是选项”要求,您已经没有选项了)

    许多答案建议使用凭证保险库服务,但您也需要在客户端的某处拥有服务凭证。

    (只需搜索一些公司在 DRM 上投入了多少资金以及它保持多久)

    确实,您可以在某处加密/隐藏凭据,但您需要有可用的位置和解密密钥。根据我的经验,一旦配置中的凭据不是明文,大多数用户都会放弃,但很难阻止“专用用户”。

    最后 - 恕我直言,您可以在有限的时间/预算下做的最好的事情是隐藏/加密凭据以使它们不可见:(

    【讨论】:

      【解决方案2】:

      如果您想加密/解密某些东西 - 它似乎可以做到 - 那么您将不得不在某处存储或计算密钥。

      使用受系统保护的存储是一种选择,可能由 TPM 支持。您还可以在启动时要求 单独 密码来创建自己的密钥库。如果您只想在集成期间而不是在编码期间提供密码,则可以选择将密码存储在配置文件中。

      最后,您需要一个密钥来解密。您不能只使用另一个密钥来解密解密密钥,因为您会遇到同样的问题:保护密钥。因此,您确实需要在自己的应用程序之外寻找解决问题;需要某种输入或资源。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-23
        • 2015-07-21
        • 1970-01-01
        • 2013-06-02
        • 2011-04-18
        • 1970-01-01
        • 2013-10-15
        相关资源
        最近更新 更多