【问题标题】:Temporarily decrypt file in shell在shell中临时解密文件
【发布时间】:2012-05-30 11:01:05
【问题描述】:

我在myfile.txt 中存储了很多秘密,我每天或多或少都必须访问它们。所以我使用openssl对其进行了加密,并在需要查看时解密:

openssl aes-256-cbc -a -d -in myfile.txt.enc

这将在我的终端中显示该文件,但它也会保留在那里 - 有没有办法仅将文件临时解密到我可以查看的缓冲区中,然后安全地擦除该缓冲区?简单至上,我只想快速从加密文件中获取一些数字。

奖励积分:如果我必须编辑我的加密文件,这是我使用的脚本 - 该方法是否安全、安全?

openssl aes-256-cbc -a -d -in myfile.txt.enc > /tmp/myfile
vim /tmp/myfile
openssl aes-256-cbc -a -e -in /tmp/myfile -out myfile.txt.enc
shred -zu /tmp/myfile

【问题讨论】:

    标签: bash shell encryption openssl


    【解决方案1】:
    read -sp Password: OPENSSLPASS
    OPENSSLPASS=$OPENSSLPASS openssl aes-256-cbc -a -d -in myfile.txt.enc -pass env:OPENSSLPASS | less
    unset OPENSSLPASS
    

    不涉及任何临时磁盘存储。您的密码在您的less 会话期间临时存储在shell 环境中(可能可以解决,因为它仅用于openssl 执行)。 less 完成后不会将输出留在终端中。

    【讨论】:

      【解决方案2】:

      数据缓冲在屏幕、终端仿真器中,而不是文件所在的系统中。唯一安全的方法是事后关闭终端。

      编辑方法对root以外的用户是可以的,对root不安全,root可以查看/tmp中的文件和你的vim交换文件。

      【讨论】:

      • 感谢您的澄清。这对我来说已经足够了——用或多或少伟大的路易十四的话来说:Le root c'est moi。
      【解决方案3】:

      安全的方法是根本不使用临时文件。

      当您使用 VIM 时,vim 可以读取加密的二进制文件, 在内存中解密 然后让你编辑它。 它会反转过程以在保存时对其进行加密。

      将以下内容添加到您的 .vimrc(或其他相关文件)中

      " OpenSSL encrypted files.
      " PBKDF v1.5 (salted) aes-256-cbc encrypted file.  (File magic "Salted__")
      augroup ossl
      autocmd!
      autocmd  BufReadPre,FileReadPre     *.ossl set binary
      autocmd  BufReadPre,FileReadPre     *.ossl set history=0 cmdheight=3 viminfo=
      autocmd  BufReadPre,FileReadPre     *.ossl set noswapfile nowritebackup
      "
      autocmd  BufReadPost,FileReadPost   *.ossl set shell=/bin/sh shellredir=>
      autocmd  BufReadPost,FileReadPost   *.ossl '[,']!openssl aes-256-cbc -d -salt
      autocmd  BufReadPost,FileReadPost   *.ossl set nobinary cmdheight& shell&
      autocmd  BufReadPost,FileReadPost   *.ossl let b:encflag=1
      autocmd  BufReadPost,FileReadPost   *.ossl exe "doau BufReadPost
      ".expand("%:r")
      autocmd  BufReadPost,FileReadPost   *.ossl redraw!
      "
      autocmd  BufWritePre,FileWritePre   *.ossl mark z
      autocmd  BufWritePre,FileWritePre   *.ossl set binary cmdheight=3
      shell=/bin/sh
      autocmd  BufWritePre,FileWritePre   *.ossl '[,']!openssl aes-256-cbc -salt
      "
      autocmd  BufWritePost,FileWritePost *.ossl undo
      autocmd  BufWritePost,FileWritePost *.ossl set nobinary cmdheight& shell&
      autocmd  BufWritePost,FileWritePost *.ossl 'z
      augroup END
      

      现在,如果您编辑任何以 .ossl 后缀结尾的文件,您将被要求输入密码来解密它。当您写入时,系统会要求您输入两次密码以重新加密。

      注意:不要单独使用 :wq 使用 :w 和 :q!

      警告:为安全起见,已专门关闭交换文件和备份文件。

      PS:此系统也适用于 PGP/GPG 文件加密以及编辑 Gzip 文件。它所需要的只是一个加密/解密流式(管道)数据的命令。

      有关此内容和其他 VIM 加密/解密方法的更多信息,请参阅... http://www.ict.griffith.edu.au/anthony/info/crypto/file_encrypt.hints

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-28
        • 2019-10-27
        • 2016-04-06
        • 2011-09-20
        • 1970-01-01
        • 2019-10-27
        • 2020-12-06
        • 1970-01-01
        相关资源
        最近更新 更多