cryptsetup
情報を保存するためにLUKSファイルベースのデバイスを作成しています。
# create a file as a container
dd if=/dev/zero of=zulu.bin bs=1024 count=102400
# create a key
dd if=/dev/urandom bs=1 count=8192 2>/dev/null | \
base64 | \
cut -b 1-8192 | \
tr -d '\n' | \
gpg2 --output zulu-key.gpg -aser DEADBEEF
# format the file-based "device"
gpg2 --decrypt zulu-key.gpg | \
cryptsetup luksFormat --iter-time=10000 --hash sha256 \
--cipher aes-cbc-essiv:sha256 --key-size 256 --key-file - \
zulu.bin
ここには理想的ではないものがたくさんあります。つまり、ブロックデバイス暗号化は暗号化認証などを提供しない。
とにかく、root以外のユーザーではデバイスを開くことはできません。
$ gpg2 --decrypt zulu-key.gpg | \
cryptsetup open -d - zulu.bin zulu
Cannot initialize device-mapper, running as non-root user.
私にとって本質的に必要なのは暗号化されていますが、ファイルに保存されるファイルシステム全体です。権限を高めることなく、この暗号化されたファイルシステムを自由に開閉できなければなりません。
私は単にtmpfsまたはramfsを生成し、単にdd
「デバイス」をGnuPGに直接接続することを検討しました。その後、GnuPGの暗号化、認証、否認防止機能を得ることができましたが、それが可能かどうかはわかりません。
任意のサイズのファイルシステムをGnuPGを介して暗号化されたファイルに割り当てるためのよく知られた方法はありますか? RAMで開いた後、暗号化のためにGnuPGに再度パイプしてデバイスをオフラインに戻すことはできますか?一般ユーザーとしてFUSEを使用してこれを実行できますか?
マイユースケースでは、ファイルシステムにファイルを書き込むプログラムが暗号化について全く知る必要がないように、任意のサイズの暗号化されたファイルシステムが必要であり、デバイスが「閉じて」いてパスワードテキストがディスクにファイルとして書き込まれるときに暗号化を処理します.することです。 。
答え1
ホームフォルダに空の画像とフォルダを作成します。
cd
dd if=/dev/zero of=zulu.bin bs=1024 count=102400
mkdir myvault
以下を追加してください/etc/cryptmount/cmtab
。
LUKS {
keyformat=luks
dev=/home/user/zulu.bin keyfile=/home/user/zulu.bin
dir=/home/user/myvault/ fstype=ext2
}
でroot
次のコマンドを実行します。
cryptmount --generate-key 32 LUKS
cryptmount --prepare LUKS
mke2fs /dev/mapper/LUKS
cryptmount --release LUKS
これで、ユーザーは次のように入力してイメージをインストールできます。
cryptmount LUKS
入力して削除します。
cryptmount -u LUKS
chown
//を使用すると、他のユーザーをブロックできますchgrp
。chmod
myvault
GPG2をここにインポートする方法はわかりませんが、cryptmount
マンページによれば、cmtab
キーファイルとパスワードをファイルに割り当てることができます。