使用用户密码加密密钥密码 - 不好主意?

时间:2015-01-15 18:07:33

标签: php security encryption cryptography passwords

我目前有一个私钥,用于签署当前存储在密钥库中的文档。尽管服务器专门用于此任务(即:除了通过https运行的签名服务之外,没有人可以访问它),我不愿意以明文形式保存密钥库的密码。我认识到如果有人有权访问服务器,这可能是一个潜在的风险。

我认为合适的方法是使用用户密码保存服务器中加密的密钥库密码。因此,每当用户想要使用私钥时,就必须提供他的密码。密码更改不会有问题,因为加密的密码可以用旧密码解密并用新密码加密。

对于攻击者获取PK的访问权限,有必要猜测某人的密码并访问服务器以解密密码以访问KeyStore。可以强制执行强密码策略以避免弱密码,并且不是所有用户都可以签署文档。

当我发现此评论(评分为-8)时,我正在阅读OpenSSL PHP page

  

使用OpenSSL生成密钥对后,可以存储公钥   以纯文本格式。然后,我使用加密私钥本身   定期mcrypt与我选择的人类可记忆的密钥和   使用base64_encode将其转换为ACSII。然后获取私钥   回来,我只是用mcrypt解密它。这样我就可以存储了   服务器上加密的私钥,无需担心   没有加密的东西。

     

当然,这只会和人类可记忆的关键一样好   如果您愿意,可能会降低脚本的安全性   简单或不使用盐的东西。

那么,这是一个坏主意还是可以在生产中使用?

1 个答案:

答案 0 :(得分:1)

取决于我们所谓的坏主意。安全的整个想法是使违规行为更加昂贵且难以发生。但是,有时存在一种权衡,在这种情况下你会失去对增加安全性的可用性,或者在这种情况下,如果更多的用户在这种情况下应该使用不同的密码而不是同一个用户,则更有可能开始忘记密码 - 帐户密码。

您必须考虑是否需要每次更改用户密码,用户可能会感到困惑和忘记,然后放弃并开始在桌面上的文件中编写密码!这真的有帮助吗?我知道小型和大型组织为用户提供PGP证书,其密码与用户的帐户密码相同。所以最后它真的是你的选择!如果是我,如果它不是我正在处理的绝密文件,我将使用与用户帐户相同的密码。