微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C# 中存储敏感数据的最佳方法KeePass、Symmetric Encryp.、..

如何解决在 C# 中存储敏感数据的最佳方法KeePass、Symmetric Encryp.、..

我正在努力寻找保存和读取密码或敏感数据的最安全和最佳方法,例如我可以在用 C# 编写的 selenium 测试自动化中使用这些方法

存储和保护敏感数据似乎是一个非常棘手的话题。 stackoverflow 中的问题很少有超过 8 年的历史并且没有帮助我解决问题。

我的要求是:

  • 密码不允许在代码或任何文件中可见,只能打开它
  • 同事应该能够使用它,而无需为其运行投入太多工作。 (例如 KeePass 可以工作,因为用户需要 2 个文件(key 和 key-db)才能从 keepass 中读取密码)
  • 我们使用 bitbucket 上传解决方案或分支。 Bitbucket 运行所有代码,甚至不需要 Visual Studio(SonarQube 等)的测试。我们可以上传 .key 文件(例如来自 KeePass)来解密密码。

目前我发现的用于存储/隐藏敏感数据的方法

  • 加密和解密: 我认为这是最常见和最常用的方法。据我的同事说,这不是公司想要使用的东西,因为在知道加密方法的情况下解密密文太容易了。

  • 环境变量(ty Prophet 告诉我的): 似乎是存储/隐藏密码的超级安全方式。敏感数据存储在 windows 环境变量中,您只能在本地使用它。 这里的问题是:我的每个同事都需要在 Windows 中添加变量,我们使用 bitbucket 将我们的解决方上传到服务器上,我们可以在其中启动自动化测试,而无需使用 Visual Studio。不确定这对我们来说是否可行。

  • KeePass(软件): 似乎是存储和读取密码的最安全方式。用户需要 2 个文件Database.keyDatabase.kdbx)才能访问密码。但是堆栈溢出中只有一个问题已经超过 10 年了 Link to question。从那时起,就没有任何更新和有用的问题或 YouTube 视频可以帮助我在 C# 中设置 keepass。但是在 Visual Studio 中有 KeePass 的金块包。

  • 密码学(对称算法):我今天发现了一个微软视频 Link to video,他们在视频中讨论了 .NET 中的所有不同类型的密码学核。他们提到了 symmetric algorithm,它的工作方式似乎与 KeePass 类似。要解密密文,用户需要一个 secret key。尚不确定此方法是否可以解决我的问题,或者我是否可以使用它。

如您所见,我努力寻找解决方案。我仍然是编写代码的初学者。但是我取得了很大的进步,并在网络中深入搜索了提高我技能的解决方案。尽管如此,这个话题还是让我发疯了,我没有足够的经验,不知道如何从 0 或从哪里开始编写代码

也许这里有人愿意在 How to set up KeePass in C# 和设置 Symmetric Cryptography 上投入一些精力和时间,因为这些主题过去还没有那么多关注。

如果这个问题得到一些关注就好了,所以也许它会帮助其他正在寻找相同答案的人。

解决方法

看看 ProtectedData 类,它是 Windows DPAPI(数据保护 API)的包装器。它可用于对每个 Windows 用户1 的数据进行加密,因此其他用户无法对其进行解密。

显然,如果有人可以以相同的 Windows 用户(通过 DPAPI 加密数据)的身份登录,他们可以通过要求 DPAPI 为他们解密数据。但是,如果您信任 Windows 用户并且他/她没有遭到破坏(此时您可能会遇到更大的问题),这应该是一个不错的测试解决方案。

编辑:我不确定这在 bitbucket 下如何工作。我会把答案留在这里,以防有人觉得它有帮助...


1DataProtectionScope.CurrentUser

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。