首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保软件签名密钥的安全

问确保软件签名密钥的安全
EN

Security用户
提问于 2017-02-03 14:37:48
回答 1查看 169关注 0票数 2

我正在创建一个应用程序,它将自动使用安全密钥(.key)对代码进行签名。该应用程序将在.NET环境(C#)开发的Windows环境下运行。签名很简单:源代码+键将生成签名的工件。这个已经就位了。我面临的挑战是如何尽可能安全地存储密钥。

我正在考虑的是用像VeraCrypt这样的工具加密密钥。每当应用程序需要对代码进行签名时,对文件进行加密、签名和解密。例如,VeraCrypt为此提供了命令行选项。这就引出了另一个问题:如何在应用程序中安全地存储密码。

既然我不是一个安全专家,你能给我一些建议的解决方案吗?还有哪些选择是合适的,也许更好呢?

EN

回答 1

Security用户

发布于 2017-02-03 15:34:21

您遇到了一个非常棘手的问题;在软件中存储密码密钥时,您实际上有三种选择:

  1. 将加密的密码存储在磁盘上,让用户输入密码以便在运行时解密。然后,您还需要担心安全内存管理,这是一个真正的兔子洞。
  2. 避免提示用户输入密码,方法是从硬件序列号和其他东西中获得解密密钥,这是一种奇怪的混淆技巧。
  3. 使用OS的密钥管理API。如果可能的话,也可以使用OS为您执行所有的密码操作,这样您的应用程序实际上就不会有内存中的私钥。然后,您可以相信操作系统正在安全地处理密钥,您不需要考虑它。

幸运的是,Windows和.NET拥有非常好的名为CAPI: Crypto API的密钥管理API。

首先,我会在谷歌上搜索"存储密码密钥的窗口.net“并做一些阅读。特别是这篇文章似乎是一个很好的起点:

如果您正在编写将在您控制的数据中心中运行的are服务,那么您可以考虑使用硬件安全模块。另外,像Amazon和Azure这样的托管提供商提供了API,而不是需要您自己的物理HSM。尽管如此,这些设备的起价为5,000美元,对大多数应用程序来说都是过分的。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/150299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档