Linux/dm-crypt

dm-crypt (2015-12-21)


dm-crypt は「device-mapper crypto」のことで、指定したパーティションを暗号化したりします。
使うコマンドは、cryptsetup や cryptmount など。

暗号化モードが色々あるらしいけれど*1、具体的にどうコマンド指定するのかよく分からなかったので現時点では省略。

とりあえず、ヘルプを打ってみます。

$ cryptsetup --help
cryptsetup 1.2.0
(中略)
Default compiled-in device cipher parameters:
        plain: aes-cbc-essiv:sha256, Key: 256 bits, Password hashing: ripemd160
        LUKS1: aes-cbc-essiv:sha256, Key: 256 bits, LUKS header hashing: sha1, RNG: /dev/urandom

最後に表示されたのが暗号化に使われるデフォルト値で、

cryptsetup luksFormat <device>

のように暗号化パーティションを作るときに
オプションの --cipher(=aes-cbc-essiv:sha256)や --key-size(=256)、--hash(ripemd160 や sha1)を省略した場合の値のようです。
その環境でサポートされている暗号化方式(cipherやhash)は /proc/crypto に書かれています。

暗号化パーティションを開いたり閉じたりするコマンドは以下。

cryptsetup luksOpen <device> <name>
cryptsetup luksClose <name>

開いている場合は、/dev/mapper/<name> のように指定した名前でマッピングされた状態になるはずです。 開くときにluksFormat時に指定したパスワードが必要。

パスワードの管理を行うコマンドは

cryptsetup luksAddKey    <device> [<new key file>]
cryptsetup luksRemoveKey <device> [<key file>]
cryptsetup luksKillSlot  <device> <key slot number>

パスワードはファイル指定や対話式で複数登録できるようで(key slotに入る)、AddやKillするときにはいずれの key slot のパスワードを知っていなければならない。

さっきからしれっと使っている「luks」というのは、Linux Unified Key Setup のことで、Linuxの暗号化ファイルシステムの標準規格らしい。
cryptsetupの拡張オプションとしてLUKSが使えるということ?うん、よく分からん。

・・・あと、学習用環境にはcryptmount コマンドが見当たらないので、
試験対策として、オプションの一部を羅列します。なんとなく名前から内容が分かりそうなものを

cryptmount --mount   <target>
cryptmount --unmount <target>
cryptmount --list 
cryptmount --swapon  <target>
cryptmount --swapoff <target>
cryptmount --generate-key <target>
cryptmount --change-password <target>

上記の各オプションは頭文字だけで実行可(-uとか。--swapoff は -x)。


*1 CBC、LRW、XTS、ESSIV