安全的应用程序可以包含秘密令牌吗?

时间:2018-01-19 09:23:44

标签: c# uwp

我想为网络API创建一个UWP应用,为应用开发者提供API密钥。

基本上我需要在我的应用程序中包含一些常量值,以生成一些HMAC身份验证令牌并在请求标头中传递它们。

但是,我不熟悉如何交付和部署UWP应用程序。可能不是很安全。我担心如果我这样做,有人会简单地反编译应用程序并窃取密钥,就像常规的.NET应用程序可以被反编译一样。

所以我想知道的是,我是否可以使用秘密部署应用程序,如果没有,通常使用应用程序解决这类问题?

此外,如果可以安全地部署具有秘密的应用程序,如果我需要,我该如何更新这些秘密?

1 个答案:

答案 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