我有一个程序可以存储受保护的密码,但是界面是终端,密码都写得很清楚。
我对安全性的了解非常有限,所以不能确定它是否安全。我希望问题与此相关。
更新。这个程序是我写的。细节不需要说明,但它本质上存储了一个我放在云端的 NumPy 数组。我所说的可见是指,在一天结束时,我正在读取该 NumPy 数组并打印到终端。我了解到这绝对不安全,感谢所有人。
有什么办法可以解决这个问题?(希望是一种简单的方法)
更新我的发行版是 Ubuntu Desktop 18.04.4
答案1
即使没有加密,终端的缓冲区也可能驻留在磁盘上(我不知道 gnome-terminal,但我正在使用 Konsole,如果你将回滚设置为无限制,那么它会在某处以未加密的形式缓冲其内容/tmp
)
~/.bash_history
另一个问题可能是您的 bash_history。如果您正确关闭终端(即系统崩溃时不会关闭),您输入的每个命令(在命令前添加空格的情况除外)都将转到您的文件中。
因此,如果您想在控制台命令中输入密码等敏感信息,则必须手动删除该行或在命令前添加一个空格(我没有在任何地方看到它,但我通过反复试验自己发现它可能不适用于除 bash 之外的其他 shell。例如,在 Z shell 中不是这种情况。并且有一天可能会从 bash 中删除。谁知道呢)
文件中~/.bashrc
有两个变量如下
HISTSIZE=2000
HISTFILESIZE=2000
如果将它们设置为负数(如 -1),则 bash 历史记录大小将不受限制。如果要禁用 bash 历史记录功能,可以将它们设置为零。(请注意,如果您忘记了发出的命令(即语法或参数),bash 历史记录将是一个有用的功能。例如,我有一个 bash_history,已有近一年的历史!几乎有 60,000 行!)
请注意,如果您在终端中以其他用户身份登录,root
那么 bash_history 将不会出现/root/.bash_history
在您的主目录中。
如果你想通过终端重新启动或停止系统(当你在服务器上工作、通过控制台登录或只是为了好玩时),那么你应该发出以下命令:
history -c && some_halt_command
以防止历史缓冲区被刷新到 bash_history 中。(尽管如果您通过前面提到的变量禁用该功能,我认为您不需要这个)
因此:
1)从历史记录中手动删除该行
2)如果你使用 bash,请在命令前添加一个空格(这是大多数(如果不是全部)发行版的默认设置)
3)禁用 bash 历史记录
答案2
这是利用现有安全工具的一种简单方法:
#!/bin/bash
# script to pack, encrypt, and copy all content of "private"
# dir to another area that is synced with Dropbox.
cd ~
tar -cvf private.tar private/
gpg --symmetric --force-mdc -o private.tar.gpg private.tar
shred -u private.tar
mv private.tar.gpg ~/Dropbox/private
您需要自己提供密码。请选择一个强密码(=长密码),例如https://www.grc.com/passwords.htm或者,创建一个 ssh 密钥对并使用它来实现完全自动化,例如使用 crontab 调度。