在.NET Standard跨平台应用程序中安全地存储密钥

时间:2019-12-26 12:36:08

标签: c# .net powershell cross-platform securestring

我正在研究C#PowerShell模块,它将成为一些服务REST API的简单包装。我想以PowerShell标准/ .NET标准为目标,并使模块在所有受支持的平台上可用。

对于此应用,身份验证需要API令牌,该令牌是由用户在服务网站上发布的。每次打开会话时都输入密钥非常不便,因此我需要某种方法将API密钥安全地存储在用户个人资料中。

问题是-我找不到一种简单的方法来加密具有透明跨平台支持的数据。最初,我想使用SecureString,但它是(a)deprecated,而(b)在Linux上似乎没有很好的支持。在理想的情况下,我希望具有某种类似于Windows加密的机制-用户证书对API密钥进行加密,然后将结果放入用户文件夹中的文本文件中。

这不是财务或任务关键型应用程序,不需要一流的安全性,但仍然对我的主文件夹中的纯文本秘密敏感,这使我感到紧张。是的,我正在与您交谈,AWS开发工具包作者:)

1 个答案:

答案 0 :(得分:0)

我的第一个想法是:“只需将密钥保存到ENV变量中……” 但是,如果我正确理解了OP的问题,就必须限制未经授权就读该机密,即使是在OP的计算机上。

我可以看到的一个选择就是创建一个文件夹(或者可能是文件),并仅授予一个特定用户访问权限。最终,人们可以创建一个新的用户帐户,该帐户将用于在Powershell中运行代码,并授予该新用户专有的读取机密文件的权限。这样可以防止一些来自OP帐户的第三方程序读取机密文件。