我正在开发一个应用程序,它需要存储各种用户名/密码,以便自动登录到第三方服务,这样用户就不必每次打开应用程序时都插入它们。
但是,我面临着安全存储它们的问题:即使它们保存在用户的硬盘上(除了登录到第三部分应用程序(当我通过一些API将它们发送到服务器)之外,它们仍然保存在硬盘上),但没有什么能阻止恶意程序窃取文件。我希望应用程序是开源的,并且文件的位置不会是秘密的(无论如何,通过默默无闻的安全性在我看来不是一个好主意,但恰恰相反)。我认为也许让用户插入一个密码并对文件进行加密可以解决这个问题,但是我发现它有点多余:用户必须插入密码才能访问他的计算机,不是吗?
我想知道管理用户登录信息的程序(如、OneDrive等)如何在HD上安全地存储用户的密码。
发布于 2019-02-19 17:49:33
越来越多的操作系统和运行时环境提供数字钱包的API。还有一些网络让组件可以被像hashicorp和数码方舟这样的企业系统所使用。有很多可供选择的地方。
当您编写您自己的密码管理器时,您将负责您的用户的密码。您还可能将许多用户排除在外。
如果是我,我会编写一个接口,从一个单独的过程获取凭据,然后用一些简单的例子捆绑解决方案。
发布于 2019-02-15 18:13:01
您有一个典型的安全问题,很容易使用和安全级别。如果希望依赖用户的密码,那么选择一个加密密钥并对密码进行加密,并且在存储密钥时设置ACL,这样只有该用户才能读取密钥。如果您想要更好的安全性,并愿意以较少的易用性生活,那么强制用户输入密码。根据数据量的不同,您可以在密码上使用KDF来生成数据加密密钥,或者如果有大量的数据,则只是用于解密数据加密密钥的密钥加密密钥。我的猜测是,您将没有足够的数据来证明做后者的合理性,您可以只使用密码来生成数据加密密钥。
发布于 2019-02-19 14:22:13
即使它们保存在用户的硬盘上(除了我登录到第三部分应用程序之外,它们仍然保存在硬盘上),
当我通过一些API将它们发送到服务器时,没有什么能阻止恶意程序窃取文件。
我的意思是:我希望应用程序是开源的,并且文件的位置不会是秘密的。
我认为也许让用户插入一个密码并对文件进行加密可以解决这个问题,但是我发现它有点多余:用户必须插入密码才能访问他的计算机,不是吗?
我想知道管理用户登录信息的程序(如、OneDrive等)如何在HD上安全地存储用户的密码。
来自的源代码片段,显示密码数据库的解密。
browser/components/migration/ChromeProfileMigrator.js:344: let rows = await MigrationUtils.getRowsFromDBWithoutLocks(loginPath, "Chrome passwords",
browser/components/migration/ChromeProfileMigrator.js:346: password_element, password_value, signon_realm, scheme, date_created,
browser/components/migration/ChromeProfileMigrator.js:369: password: crypto.
browser/components/migration/ChromeProfileMigrator.js:370: decryptData(crypto.arrayToString(row.getResultByName("password_value")),
browser/components/migration/ChromeProfileMigrator.js:376: passwordElement: row.getResultByName("password_element"),https://security.stackexchange.com/questions/203639
复制相似问题