在本地存储和加密密码

时间:2018-02-17 11:19:32

标签: security encryption passwords qml password-encryption

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

不是选项:

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

2 个答案:

答案 0 :(得分:1)

有时会出现这种类型的问题(只是搜索堆栈溢出),并且 - 基本上一旦数据/代码驻留在客户端,客户端就能够访问它们。你可以让它变得更加困难。 (我知道你希望得到另一个答案,但根据你提出的问题,你已经发现放置"不是一个选项"要求,你没有选择)

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

(只是搜索一些公司在DRM中投入多少资金以及保持不间断的时间)

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

最后 - 恕我直言,你可以用有限的时间/预算做的最好的事情就是隐藏/加密凭证以使它们脱离明显的视线:(

答案 1 :(得分:1)

如果你想加密/解密某些东西 - 似乎也是如此 - 那么你必须在某处存储或计算密钥

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

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