openssl手册页说openssl命令的“-pass pass:[password]”选项不安全,因为它对ps
这样的实用程序是可见的,但它是否通过bash安全?
像这样:
#!/bin/bash
read -s psword
openssl enc -pass pass:$psword -aes-256-cbc -in text.plaintext -out text.encrypted
我在我的电脑上运行这样的程序,所有ps
似乎都看到“openssl
”。其他实用程序是否能够看到密码?
在任何操作系统中,命令行通常都很容易从任何进程中正常获取。请参阅此answer以获取进程的命令行。因此,无论是“启动”流程,还是bash或某些自定义应用程序,都无关紧要。这就是建议的原因。
任何这些事情都归结为风险。如果您接受不安全的风险,那么没有理由不使用命令行(即它是您的机器,而您是唯一使用它的人)。如果很多人可以看到您的流程会话并且可能会看到敏感密码,则风险可能不值得。您可以自行决定风险是否可以接受。
如果要保护密码,最好将其写入只有您的进程可以访问的文件,并在命令中从该文件中读取密码。这将隐藏命令行中的纯密码,并使其对其他进程不可见。
您可以查看以下答案。它与生成openssl键有关,但与此主题类似:How to generate an openSSL key using a passphrase from the command line?