【问题标题】:Security issues in accepting passwords vs auto generating the password接受密码与自动生成密码的安全问题
【发布时间】:2011-06-02 04:57:45
【问题描述】:

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

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

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

这两种情况都涉及哪些安全问题?

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

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

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

代码 sn-p 看起来像

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

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

【问题讨论】:

  • 密码保护数据的生命周期是多久?
  • 听起来整个过程不是用户驱动的。在这种情况下,用户不需要参与,也不需要知道任何地方都有密码......

标签: security console passwords certificate pfx


【解决方案1】:

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

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

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

如果是自动生成的,你会显示自动生成的密码吗?

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢所有回复。密码的生命周期仅在生成 pfx 文件之前。程序将 pfx 文件安装到 Windows 证书存储区后将其删除。在这种情况下,我猜从用户那里接受密码不会比自动生成密码提供任何安全优势。
    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 2012-10-07
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多