Saya sedang menulis bash
skrip, dan perlu meminta kata sandi pengguna dan meneruskannya kepada openssl
. Sementara openssl
dapat membaca kata sandi itu sendiri, saya perlu dua kali menjalankan program dan tidak ingin bertanya kepada pengguna dua kali. Ini skripnya:
cp file{,.old}
read -sp 'Enter password. ' PASS; echo
export PASS
# decode | edit | encode
openssl enc -d -aes-256-cbc -k "$PASS" -in file.old | \
sed ... | openssl enc -e -aes-256-cbc -k "$PASS" -out file
unset PASS
Ini tidak aman karena kata sandi mudah tersedia dengan melihat baris perintah; seseorang dapat membacanya menggunakan ps
, misalnya.
openssl
dapat membaca kata sandi dari variabel lingkungan, jadi saya dapat menggantinya -k "$PASS"
dengan -pass env:PASS
, tetapi masih belum aman; variabel lingkungan dari setiap proses dapat dibaca secara bebas (sekali lagi, ps
dapat melakukannya).
Jadi, bagaimana saya bisa meneruskan kata sandi dengan aman ke dua openssl
contoh?
ps
membaca lingkungan dari suatu proses /proc/<pid>/environ
, tetapi file ini memiliki 0600
izin, jadi hanya root dan pengguna yang menjalankan proses dapat membaca lingkungan proses. Menurut saya itu cukup aman.