Dm-crypt/ja

"dm-crypt"はLinuxカーネルのcrypto APIフレームワーク及びデバイスマッパーサブシステムを利用したディスク暗号化システムです. dm-cryptを利用するとシステム管理者はディスク全体または論理ボリューム単位またはパーティション単位、あるいは一ファイル単位で暗号化をする事ができます.

dm-cryptサブシステムは"Linux Unified Key Setup (LUKS)"仕様に準じています. つまり、複数の鍵でデータの復号化ができたり、鍵の変更やパスフレーズの追加といった鍵の操作をする事ができます. dm-cryptを用いてLUKSに準じない暗号化も可能ですが、LUKSがフレキシブルで管理がしやすく広くコミュニティでサポートされている事からこの記事では主にLUKS準拠の機能について記述します.

設定
dm-cryptを使用するためには、2つの条件があります.


 * 1) Linuxカーネル設定
 * 2) のインストール

カーネル コンフィグレーション
dm-cryptを使用するにはいくつかの項目の設定が必要です.

まず、"device mapper"と"crypt target"を有効にしなければなりません.

次に、データの暗号化に使用したい暗号化APIを有効にしなければなりません. 暗号化APIの一覧は"Cryptographic API"セクション以下にあります.

rootファイルシステムも暗号化したい場合、rootファイルシステムを復号化するためのinitramfsも必要です. そのため、"initramfs support"も有効化する必要があります.

Cryptsetupのインストール
パッケージはコマンドを提供します. このコマンドはデータを暗号化や復号化したり、パスフレーズや鍵の管理をするためのコマンドです.

鍵ファイルまたはパスフレーズ
ストレージの暗号化を始めるには、管理者は暗号化鍵に何を使うかを決める必要があります. ではパスフレーズか鍵ファイルを選ぶ事ができます. 鍵ファイルはどのようなファイルでも構いませんが、適切に保護されたランダムなデータのファイルを使う事を推奨します. 誰かが鍵ファイルを読めるならばその人は暗号化されたデータもまた読めるという事になります.

コマンドを使って鍵ファイルを生成する事ができます:

次の項目では、パスフレーズの場合と鍵ファイルの場合どちらの場合のコマンドも例示します. どちらか一方のみを実行する必要があります.

暗号化ストレージの作成
暗号化ストレージ(ディスク、パーティション、ファイル等)の作成には コマンドで   を指定します.

例えば、パスフレーズを鍵としてを暗号化ストレージに指定する場合:

パスフレーズの代わりに鍵ファイルを使う場合:

の オプションは実際の暗号化鍵の鍵長を指定します. (パスフレーズや鍵ファイルはこの暗号化鍵を利用するための鍵です. )

暗号化ストレージの利用
暗号化ストレージを利用するには(つまり、データを復号化して読み取れるようにするには) オプションを指定します.

鍵ファイルを利用した場合、コマンドはこのようになります:

コマンドの実行に成功すると、という名前のデバイスが作成され、読み取る事ができるようになります.

If this is the first time this encrypted device is used, it needs to be formatted. The following example uses the Btrfs file system but of course any other file system will do:

Once the file system is formatted, or the formatting was already done in the past, then the device file can be mounted on the system:

Closing the encrypted storage
In order to close the encrypted storage (i.e. ensure that the real data is no longer accessible through transparent decryption), use the  action:

Of course, make sure that the device is no longer in use.

Manipulating LUKS keys
LUKS keys are used to access the real encryption key. They are stored in slots in the header of the (encrypted) partition, disk or file.

Listing the slots
With the  action, information about the encrypted partition, disk or file can be shown. This includes the slots:

In the above example, two slots are used. Note that  does not give away anything sensitive - it is merely displaying the LUKS header content. No decryption key has to be provided in order to call.

Adding a keyfile or passphrase
In order to add an additional keyfile or passphrase to access the encrypted storage, use the  action:

To use a keyfile to unlock the key (but still add in a passphrase):

If a keyfile is to be added (say ):

Or, to use the first keyfile to unlock the main key:

Removing a keyfile or passphrase
With the  action, a keyfile or passphrase can be removed (so they can no longer be used to decrypt the storage):

Or to remove a keyfile:

Make sure that at least one method for accessing the data is still available. Once a passphrase or keyfile is removed for use, this cannot be recovered again.

Emptying a slot
Suppose the passphrase or keyfile is no longer known, then the slot can be freed. Of course, this does require prior knowledge of which slot that the passphrase or keyfile was stored in.

For instance, to empty out slot 2 (which is the third slot as slots are numbered starting from 0):

This command will ask for a valid passphrase before continuing. Or one can pass on the keyfile to use:

Automate mounting encrypted file systems
Until now, the article focused on manual setup and mounting/unmounting of encrypted file systems. An init service exists which automates the decrypting and mounting of encrypted file systems.

Configuring dm-crypt
Edit the file and add in entries for each file system. The supported entries are well documented in the file, the below example is just that - an example:

Configuring fstab
The next step is to configure to automatically mount the (decrypted) file systems when they become available. It is recommended to first obtain the UUID of the decrypted (mounted) file system:

Then, update the file accordingly:

Add initscript to bootlevel
Don't forget to have the init service launched at boot:

さらなる情報

 * Dm-crypt full disk encryption on the Gentoo Wiki provides supplementary information on using encrypted file systems for Gentoo Linux installations
 * The cryptsetup FAQ hosted on GitLab covers a wide range of frequently asked questions.