我想为网络API创建一个UWP应用,为应用开发者提供API密钥。
基本上我需要在我的应用程序中包含一些常量值,以生成一些HMAC身份验证令牌并在请求标头中传递它们。
但是,我不熟悉如何交付和部署UWP应用程序。可能不是很安全。我担心如果我这样做,有人会简单地反编译应用程序并窃取密钥,就像常规的.NET应用程序可以被反编译一样。
所以我想知道的是,我是否可以使用秘密部署应用程序,如果没有,通常使用应用程序解决这类问题?
此外,如果可以安全地部署具有秘密的应用程序,如果我需要,我该如何更新这些秘密?
答案 0 :(得分:0)
您要找的是Microsoft Data Protection API
(请参阅https://msdn.microsoft.com/en-us/library/ms995355.aspx)。
操作系统基本上为您提供了一个安全地允许您存储数据的服务/ api。它使用用户身份验证来加密和解密数据。您可以随时删除/写入密钥。
我建议您在客户端和服务器(api)之间使用ECDH
(Elliptic Curive Diffie-Hellman)计算密钥,然后将共享协议存储在密钥库中。您在运行时解密密钥,您可能希望将变量存储在SecureString
中。但请记住,您的api需要跟踪生成的相互协议(也是安全的)。
Microsoft解释了如何实现DPAPI: https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection