1

我正在开发一个控制台应用程序。此应用程序生成一个自签名证书并将其安装在当前机器的证书存储中。涉及的步骤是:-

  1. 生成证书
  2. 创建一个 pfx 文件
  3. 安装 pfx 文件

对于这些步骤,我需要一个密码来保护私钥和 pfx 文件。但是,这些密码仅在执行 exe 期间使用。我应该使用某种随机数生成算法自动生成密码还是接受用户输入的密码?

这两种场景都涉及哪些安全问题?

感谢所有的答复。密码的生命周期仅在生成 pfx 文件之前。程序将 pfx 文件安装到 Windows 证书存储区后将其删除。在这种情况下,我猜从用户那里接受密码不会比自动生成密码提供任何安全优势。

我想进一步补充这个问题。

一旦密码可供程序使用,您如何在其生命周期内保护此密码?我正在使用 .net 并已阅读有关 .net 中的安全字符串的信息。但是必须从不能解决问题的字符串构建安全字符串。

代码片段看起来像

字符串密码 = AutoGenerateOrGetPassword(); GenerateCertificateAndInstall(密码);

如何保护在其生命周期中存储在内存中的密码?

4

2 回答 2

1

无论您是自动生成还是使用给定的密码,都不应该有任何重大的安全级别差异或问题。

但是,使用自动生成的密码可以保证一定程度的密码复杂性——这会减少暴力攻击的机会。

使用给定的密码意味着某人(物理上)知道该密码。您不会知道用户输入的密码有多复杂。给出密码“AAAA”可能不如给出“W0R!$%3D”的密码安全。

如果以自动生成的方式完成,您是否要显示自动生成的密码?

我建议你根据你的软件要求去。如果要求中没有说明,允许用户在自动生成或输入密码之间进行选择。

于 2011-01-01T10:41:09.507 回答
0

如果您确定 pfx 文件在导入后被删除,我认为在您的问题的上下文中讨论“接受密码与自动生成密码”是没有意义的。它只会在被导入“机器的证书存储”之前存在。

如果必须通过电子邮件/usbstick 备份或传输 pfx 文件,我更喜欢“从用户接受密码”变体,因为为密码提供输入表并实施一些逻辑以确保密码比组织密码更容易用户通过两个独立的渠道获得其 pfx 文件和相应的密码。在一封电子邮件中发送 pfx + 密码与没有密码一样安全。

于 2011-01-01T11:51:24.273 回答