1

我有很多秘密存储在 中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
4

3 回答 3

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

于 2012-05-30T11:18:51.907 回答
1

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

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

于 2012-05-31T00:37:52.100 回答
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

于 2012-07-27T06:30:05.270 回答