暂时解密shell中的文件

时间:2012-05-30 11:01:05

标签: bash shell encryption openssl

我在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

3 个答案:

答案 0 :(得分:2)

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不会将输出留在终端中。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

当您使用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