接受密码与自动生成密码的安全问题

时间:2011-01-01 10:23:42

标签: security console passwords certificate pfx

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

  1. 生成证书
  2. 创建一个pfx文件
  3. 安装pfx文件
  4. 对于这些步骤,我需要一个密码来保护私钥和pfx文件。 但是,这些密码仅在执行exe时使用。 我应该使用一些随机数生成算法自动生成密码还是接受用户输入的密码?

    两种方案都涉及哪些安全问题?

    感谢所有回复。密码的生存时间仅在生成pfx文件之前。程序在Windows证书库中安装后删除pfx文件。在这种情况下,我想从用户接受密码不会提供任何安全优势,而不是自动生成密码。

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

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

    代码段看起来像

    string password = AutoGenerateOrGetPassword(); GenerateCertificateAndInstall(密码);

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

2 个答案:

答案 0 :(得分:1)

自动生成或使用给定密码时,不应存在任何重大安全级别差异或问题。

但是,使用自动生成的密码可以保证一定程度的密码复杂性 - 这可以降低暴力攻击的可能性。

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

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

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

答案 1 :(得分:0)

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

如果必须通过电子邮件/ usbstick备份或转移pfx文件,我更喜欢“接受用户密码”变体,因为 提供密码的输入形式以及实现一些logigic以确保密码强大,这比组织用户通过两个独立的通道获取其pfx文件和相应的密码更容易。在一封电子邮件中发送pfx +密码与没有密码一样安全。