Enc*_*ada 15 unix security ssl openssl
我们知道我们可以使用此命令使用openssl加密文件:
openssl aes-256-cbc -a -salt -in twitterpost.txt -out foo.enc -pass stdin
Run Code Online (Sandbox Code Playgroud)
密码将从stdin中读取.因此,要提前提供密码,我们所需要的只是前置
echo "someGoodPassword" |
Run Code Online (Sandbox Code Playgroud)
到上面的命令.我的问题是:我怎样才能更安全地做到这一点?上述方法看起来不够安全.
我很感激对此的一些评论,所以我可以更好地理解这个问题.
Pet*_*esh 21
几乎任何你使用的机制都是root用户可以窥探的,所以请记住这一点.
echo选项将显示在' ps'列表中,使其易受普通用户窥探和查找密码的攻击.
您可以使用-pass file:filename文件,因此您可以使用:
sumask=$(umask)
umask 077
rm -f passfile
cat >passfile <<EOM
someGoodPassword
EOM
umask $sumask
Run Code Online (Sandbox Code Playgroud)
这会创建文件,其他帐户无法读取(但仍可由root读取).假设脚本仅用于创建密码文件一次,就像您重复该过程一样,它往往位于文件中,因此您需要chmod go-rwx该文件使其他用户无法读取.
然后你用:
openssl aes-256-cbc -a -salt -in twitterpost.txt -out foo.enc -pass file:passfile
Run Code Online (Sandbox Code Playgroud)
使用预先创建的密码文件执行加密.
其他机制是-pass env:ENVVAR使用环境变量(再次将其放在那里而不透露它是诀窍)
Ric*_*lli 15
精简版
使用命名管道.
openssl aes-256-cbc -a -salt -in twitterpost.txt -out foo.enc -pass file:<( echo -n "someGoodPassword" )
Run Code Online (Sandbox Code Playgroud)
长版
使用命名管道.你可以用bash创建它
<( *output* )
Run Code Online (Sandbox Code Playgroud)
例如
<( echo -n "content" ) # without -n echo will add a newline
Run Code Online (Sandbox Code Playgroud)
它将打开一个命名管道,通常是一个FIFO队列,你会在进程列表中看到类似的东西
/dev/fd/63
Run Code Online (Sandbox Code Playgroud)
它只能由当前用户读取,并在读取后自动关闭,因此您不必担心权限和清理磁盘(如果程序崩溃,管道将关闭,而由你在另一个答案建议你会留在磁盘上).
这样它就会以最快的方式关闭,就在命令读取之后,而不是等待它完成任务(我只是做了一个测试:加密一些千兆字节并尝试读取命名管道(它在进程列表中可见) ):即使openssl需要很长时间才能加密,命名管道会立即关闭.
关于你的意见
如果计算机已被第二个应用程序破坏以获取此密码,则用户需要担心一些严重的安全问题.实际上,它可能是一些专门用于攻击我自己的软件的软件
如果您的计算机遭到黑客入侵且攻击者具有相同的用户权限,那么您就完成了.例如,攻击者可以轻松修改你的.bashrc以对openssl进行别名,这样它就会启动一个伪装的"evil-openssl"来复制你的密码和数据,然后再处理真正的openssl,让你产生错误的安全感.
那就是说,我不是安全专家,所以如果有人想要忘记我(并告诉我原因),那么欢迎你.
如果我没理解错,你的演唱会是关于
$ echo "someGoodPassword" | openssl (...) -pass stdin
Run Code Online (Sandbox Code Playgroud)
密码将在进程列表中对所有用户可见一段时间。这可以通过 bash 的<<<重定向轻松解决(但在普通的旧 POSIX shell 中不起作用):
$ openssl (...) -pass stdin <<<"someGoodPassword"
Run Code Online (Sandbox Code Playgroud)
此构造支持变量插值 ( <<<"$password"),并且命令输出可以像往常一样通过管道进一步传输或重定向到文件。
| 归档时间: |
|
| 查看次数: |
24227 次 |
| 最近记录: |