我可以安全地存储和显示包含 AES 加密文件和一些简单的 bash 脚本的主密码文件吗?

我可以安全地存储和显示包含 AES 加密文件和一些简单的 bash 脚本的主密码文件吗?

我想设置几个 bash 脚本来加密和解密包含银行、工作等密码的主文本文件,以便在需要查找某些内容时对其进行编辑并显示条目。我更愿意尽可能少地使用第三方来源,并且有一个可能的解决方案(?)仅使用标准终端:

  1. openssl
  2. 选择的文本编辑器
  3. 撕碎

我的问题是,有人能解释一下为什么会这样吗?不是从安全角度来看,这是个好主意吗?我的意思是,我希望避免因为黑客的随意攻击而丢失这些密码(如果 NSA 来敲门,我就放弃了)。

让我更详细地解释一下。我有下面列出的 3 个 bash 脚本,其中一个$PFILE是指向包含密码文件的目录的路径变量,另一个passfile.enc是加密文件(受害者的名字已被更改以保护他们的身份)。

  1. 我的密码:通过 打开使用 AES 256 位加密算法加密的预设密码文件openssl。它会在外部打开文件,例如,gedit这样我就可以轻松修改条目并保存更新的文件。

    #!/bin/bash
    openssl aes-256-cbc -d -in $PFILE/passfile.enc -out $PFILE/passfile.tmp
    gedit $PFILE/passfile.tmp &
    
  2. 我的密码.关闭: 关闭,即,在我编辑完文件后重新加密文件,并删除解密的文本文件。

    #!/bin/bash
    openssl aes-256-cbc -in $PFILE/passfile.tmp -out $PFILE/passfile.enc
    shred --remove $PFILE/passfile.tmp
    
  3. 我的密码.显示: 将的输出写入passfile.enc终端窗口,然后立即删除解密的文件。这个想法是查看终端输出以回忆密码,然后立即关闭它。

    #!/bin/bash
    openssl aes-256-cbc -d -in $PFILE/passfile.enc -out $PFILE/passfile.tmp
    cat $PFILE/passfile.tmp
    shred --remove $PFILE/passfile.tmp
    

例如,如果我想在文件中添加新的密码条目,我会运行mypasswds.open并输入我的(随机生成并费力记住的)主密码。例如,文本文件会打开,gedit然后我会更新它。然后我保存并关闭编辑器,然后运行mypasswds.close以重新加密并删除临时的未加密文件。

如果我只是想查找某些东西,我会运行mypasswds.display,查看终端的输出以刷新我的记忆,然后立即关闭终端窗口。

我想到的问题/疑问:

  1. 关闭终端窗口后,终端输出会存储在某处吗?还是永远消失了?
  2. 是否有shred --remove一个可以彻底销毁临时文本文件的安全选项?
  3. 如果有人获得了加密文件,是否可以解密?需要付出多少努力?

如果这个想法是为了鸟类(为什么?),那么这也是很有价值的信息!

提前致谢。

答案1

首先:请注意,任何拥有 root 权限和/或物理访问您系统权限的人都可以拦截您输入的任何密码。而且您几乎无能为力。物理访问意味着 root 权限,而 root 权限意味着对硬件的低级访问。

此外,如果某人是您系统上的用户,那么他或她已经在您的“核心圈子”中,因为提升权限(获得 root 权限)比登录随机系统要容易得多。

就我个人而言,我使用类似的系统,但我不会在那里保存任何会让我损失一生积蓄或职业声誉的信息——而是保存一些像我的 askubuntu 密码这样的信息。此外,我还实施了一些原始但不明显的加密(例如,省略所有密码的通用后缀,用其他单词或数字替换某些单词或数字,或者不存储我确信我记得的、至关重要的信息,例如某个密码所指的服务名称等)。

至于 mypasswd.display 命令的粉碎功能 —— 为什么要创建临时文件? 为什么不省略“-out”选项,而直接将其发送到 stdout?

最后给大家带来一部漫画:由 XKCD 提供

相关内容