「Dm-crypt/システム設定」の版間の差分
(同期) |
|||
10行目: | 10行目: | ||
システムの暗号化をする場合、[[mkinitcpio]] を正しく設定した後に initial ramdisk を再生成する必要があります。特にシナリオによっては、以下のフックを有効しなくてはなりません: |
システムの暗号化をする場合、[[mkinitcpio]] を正しく設定した後に initial ramdisk を再生成する必要があります。特にシナリオによっては、以下のフックを有効しなくてはなりません: |
||
+ | * {{ic|encrypt}}: root パーティションや、root よりも''前''にマウントする必要があるパーティションを暗号化する場合に必ず必要。他の場合は必要ありません。{{ic|/etc/crypttab}} などのシステム初期化スクリプトが暗号化されたパーティションの鍵を解除してくれます。 |
||
− | * {{ic|encrypt}}: always needed when encrypting the root partition, or a partition that needs to be mounted ''before'' root. It is not needed in all the other cases, as system initialization scripts like {{ic|/etc/crypttab}} take care of unlocking other encrypted partitions. |
||
− | * {{ic|shutdown}}: |
+ | * {{ic|shutdown}}: ''mkinitcpio 0.16'' 以前まではシステムのシャットダウン時にアンマウントを制御するために推奨されていました。まだ機能しますが、もう必要ありません [https://mailman.archlinux.org/pipermail/arch-dev-public/2013-December/025742.html]。 |
* {{ic|keymap}}: provides support for foreign keymaps for typing encryption passwords; it must come ''before'' the {{ic|encrypt}} hook. |
* {{ic|keymap}}: provides support for foreign keymaps for typing encryption passwords; it must come ''before'' the {{ic|encrypt}} hook. |
||
− | * {{ic|keyboard}}: |
+ | * {{ic|keyboard}}: 初期ユーザー空間で USB キーボードを使えるようにするために必須です。 |
− | ** {{ic|usbinput}}: |
+ | ** {{ic|usbinput}}: 非推奨。ただし {{ic|keyboard}} で上手く行かない場合にこちらのフックを試してみることはできます。 |
Other hooks needed should be clear from other manual steps followed during the installation of the system. |
Other hooks needed should be clear from other manual steps followed during the installation of the system. |
||
22行目: | 22行目: | ||
=== cryptdevice === |
=== cryptdevice === |
||
+ | このパラメータはコールドブート時に暗号化された root が含まれたデバイスのロックを解除するためにパスフレーズを要求するシステムプロンプトを作成します。どのデバイスに暗号化されたシステムが含まれているのか確認するために {{ic|encrypt}} フックによってパースされます: |
||
− | This parameter will make the system prompt for the passphrase to unlock the device containing the encrypted root on a cold boot. It is parsed by the {{ic|encrypt}} hook to identify which device contains the encrypted system: |
||
cryptdevice=''device'':''dmname'' |
cryptdevice=''device'':''dmname'' |
||
47行目: | 47行目: | ||
=== cryptkey === |
=== cryptkey === |
||
− | This parameter is required by the ''encrypt'' hook for reading a keyfile to unlock the ''cryptdevice''. It can have |
+ | This parameter is required by the {{ic|''encrypt''}} hook for reading a keyfile to unlock the {{ic|''cryptdevice''}}. It can have three parameter sets, depending on whether the keyfile exists as a file in a particular device, a bitstream starting on a specific location, or a file in the initramfs. |
− | For a file the format is: |
+ | For a file in a device the format is: |
cryptkey=''device'':''fstype'':''path'' |
cryptkey=''device'':''fstype'':''path'' |
||
− | *{{ic|''device''}} is the raw block device where the key exists. |
+ | * {{ic|''device''}} is the raw block device where the key exists. |
− | *{{ic|''fstype''}} is the filesystem type of {{ic|''device''}} (or auto). |
+ | * {{ic|''fstype''}} is the filesystem type of {{ic|''device''}} (or auto). |
− | *{{ic|''path''}} is the absolute path of the keyfile within the device. |
+ | * {{ic|''path''}} is the absolute path of the keyfile within the device. |
− | + | 例: {{ic|1=cryptkey=/dev/usbstick:vfat:/secretkey}}。 |
|
For a bitstream on a device the key's location is specified with the following: |
For a bitstream on a device the key's location is specified with the following: |
||
+ | |||
cryptkey=''device'':''offset'':''size'' |
cryptkey=''device'':''offset'':''size'' |
||
− | Example: {{ic|cryptkey |
+ | Example: {{ic|1=cryptkey=/dev/sdZ:0:512}} reads a 512 bit keyfile starting at the beginning of the device. |
+ | |||
+ | For a file [[mkinitcpio#BINARIES と FILES|included]] in the initramfs the format is[https://projects.archlinux.org/svntogit/packages.git/tree/trunk/encrypt_hook?h=packages/cryptsetup#n14]: |
||
+ | |||
+ | cryptkey=rootfs:''path'' |
||
+ | |||
+ | Example: {{ic|1=cryptkey=rootfs:/secretkey}} |
||
+ | |||
+ | Also note that if {{ic|cryptkey}} is not specified, it defaults to {{ic|/crypto_keyfile.bin}} (in the initramfs).[https://projects.archlinux.org/svntogit/packages.git/tree/trunk/encrypt_hook?h=packages/cryptsetup#n8] |
||
[[Dm-crypt/デバイスの暗号化#キーファイル]]を参照。 |
[[Dm-crypt/デバイスの暗号化#キーファイル]]を参照。 |
||
80行目: | 89行目: | ||
== crypttab == |
== crypttab == |
||
+ | {{ic|/etc/crypttab}} (もしくは, encrypted device table) ファイルにはシステムの起動時にロックを解除する暗号化デバイスのリストを記述します。[[fstab]] と似ています。crypttab ファイルを使うことで暗号化したスワップデバイスやセカンダリファイルシステムを自動でマウントすることが可能です。 |
||
− | The {{ic|/etc/crypttab}} (or, encrypted device table) file contains a list of encrypted devices that are to be unlocked when the system boots, similar to [[fstab]]. This file can be used for automatically mounting encrypted swap devices or secondary filesystems. |
||
+ | [[fstab]] よりも''前''に読み込まれるので、ファイルシステムの中身がマウントされる前に dm-crypt コンテナのロックを解除できます。ただし crypttab が読み込まれるのはシステムが起動した''後''なので、[[Dm-crypt/システム全体の暗号化|root を暗号化]]する場合に、[[#mkinitcpio|mkinitcpio]] フックや[[#ブートローダー|ブートローダーのオプション]]でロックを解除するのを代替することはできません。ブート時の crypttab の処理は {{ic|systemd-cryptsetup-generator}} によって自動的に行われるため、特に有効化する必要はありません。 |
||
− | It is read ''before'' [[fstab]], so that dm-crypt containers can be unlocked before the filesystem inside is mounted. Note that crypttab is read ''after'' the system has booted, so it is not a replacement for unlocking via [[#mkinitcpio|mkinitcpio]] hooks and [[#ブートローダー|boot loader options]] in the case of an [[Dm-crypt/システム全体の暗号化|encrypted root]] scenario. The boot time processing of crypttab is done by the {{ic|systemd-cryptsetup-generator}} automatically, i. e. there is no need to activate it. |
||
詳しくは crypttab の [http://linux.die.net/man/5/crypttab man page] を見て下さい。デバイスの UUID を使って設定する方法は [[#起動時にマウント]] を見て下さい。 |
詳しくは crypttab の [http://linux.die.net/man/5/crypttab man page] を見て下さい。デバイスの UUID を使って設定する方法は [[#起動時にマウント]] を見て下さい。 |
2016年1月20日 (水) 15:53時点における版
Dm-crypt に戻る。
目次
mkinitcpio
システムの暗号化をする場合、mkinitcpio を正しく設定した後に initial ramdisk を再生成する必要があります。特にシナリオによっては、以下のフックを有効しなくてはなりません:
encrypt
: root パーティションや、root よりも前にマウントする必要があるパーティションを暗号化する場合に必ず必要。他の場合は必要ありません。/etc/crypttab
などのシステム初期化スクリプトが暗号化されたパーティションの鍵を解除してくれます。shutdown
: mkinitcpio 0.16 以前まではシステムのシャットダウン時にアンマウントを制御するために推奨されていました。まだ機能しますが、もう必要ありません [1]。keymap
: provides support for foreign keymaps for typing encryption passwords; it must come before theencrypt
hook.keyboard
: 初期ユーザー空間で USB キーボードを使えるようにするために必須です。usbinput
: 非推奨。ただしkeyboard
で上手く行かない場合にこちらのフックを試してみることはできます。
Other hooks needed should be clear from other manual steps followed during the installation of the system.
ブートローダー
暗号化された root パーティションを起動できるようにするには、以下のカーネルパラメータのサブセットを設定する必要があります: 設定する方法はカーネルパラメータの使用しているブートローダーの手順を見て下さい。例えば GRUB を使用しているならブート設定を生成する前に /etc/default/grub
にパラメータを追加するのが良いでしょう。
cryptdevice
このパラメータはコールドブート時に暗号化された root が含まれたデバイスのロックを解除するためにパスフレーズを要求するシステムプロンプトを作成します。どのデバイスに暗号化されたシステムが含まれているのか確認するために encrypt
フックによってパースされます:
cryptdevice=device:dmname
device
は暗号化されたデバイスのパスです。永続的なブロックデバイスの命名を使うことを推奨します。dmname
is the device-mapper name given to the device after decryption, which will be available as/dev/mapper/dmname
.- If a LVM contains the encrypted root, the LVM gets activated first and the volume group containing the logical volume of the encrypted root serves as device. It is then followed by the respective volume group to be mapped to root. The parameter follows the form of
cryptdevice=/dev/vgname/lvname:dmname
.
root
root=
パラメータは実際の (暗号化を解除した後の) root ファイルシステムの device
を指定します:
root=device
- ファイルシステムが復号化されたデバイスファイル上に直接フォーマットされている場合、
/dev/mapper/dmname
となります。 - LVM を先に有効にして暗号化した論理ルートボリュームを含めている場合も、上記と同じになります。
- root ファイルシステムが完全に暗号化された LVM の論理ボリュームに含まれている場合、device mapper は
root=/dev/mapper/volumegroup-logicalvolume
となります。
resume
resume=device
device
は suspend2disk のために使われる復号化された (スワップ) ファイルシステムのデバイスファイルです。スワップが別のパーティション上にある場合、/dev/mapper/swap
という形式になります。Dm-crypt/スワップの暗号化を参照。
cryptkey
This parameter is required by the encrypt
hook for reading a keyfile to unlock the cryptdevice
. It can have three parameter sets, depending on whether the keyfile exists as a file in a particular device, a bitstream starting on a specific location, or a file in the initramfs.
For a file in a device the format is:
cryptkey=device:fstype:path
device
is the raw block device where the key exists.fstype
is the filesystem type ofdevice
(or auto).path
is the absolute path of the keyfile within the device.
例: cryptkey=/dev/usbstick:vfat:/secretkey
。
For a bitstream on a device the key's location is specified with the following:
cryptkey=device:offset:size
Example: cryptkey=/dev/sdZ:0:512
reads a 512 bit keyfile starting at the beginning of the device.
For a file included in the initramfs the format is[2]:
cryptkey=rootfs:path
Example: cryptkey=rootfs:/secretkey
Also note that if cryptkey
is not specified, it defaults to /crypto_keyfile.bin
(in the initramfs).[3]
crypto
This parameter is specific to pass dm-crypt plain mode options to the encrypt hook.
It takes the form
crypto=<hash>:<cipher>:<keysize>:<offset>:<skip>
引数は cryptsetup のオプションと直接関連します。Dm-crypt/デバイスの暗号化#plain モードの暗号化オプションを見て下さい。
For a disk encrypted with just plain default options, the crypto
arguments must be specified, but each entry can be left blank:
crypto=::::
A specific example of arguments is
crypto=sha512:twofish-xts-plain64:512:0:
crypttab
/etc/crypttab
(もしくは, encrypted device table) ファイルにはシステムの起動時にロックを解除する暗号化デバイスのリストを記述します。fstab と似ています。crypttab ファイルを使うことで暗号化したスワップデバイスやセカンダリファイルシステムを自動でマウントすることが可能です。
fstab よりも前に読み込まれるので、ファイルシステムの中身がマウントされる前に dm-crypt コンテナのロックを解除できます。ただし crypttab が読み込まれるのはシステムが起動した後なので、root を暗号化する場合に、mkinitcpio フックやブートローダーのオプションでロックを解除するのを代替することはできません。ブート時の crypttab の処理は systemd-cryptsetup-generator
によって自動的に行われるため、特に有効化する必要はありません。
詳しくは crypttab の man page を見て下さい。デバイスの UUID を使って設定する方法は #起動時にマウント を見て下さい。
/etc/crypttab
# Example crypttab file. Fields are: name, underlying device, passphrase, cryptsetup options. # Mount /dev/lvm/swap re-encrypting it with a fresh key each reboot swap /dev/lvm/swap /dev/urandom swap,cipher=aes-xts-plain64,size=256 # Mount /dev/lvm/tmp as /dev/mapper/tmp using plain dm-crypt with a random passphrase, making its contents unrecoverable after it is dismounted. tmp /dev/lvm/tmp /dev/urandom tmp,cipher=aes-xts-plain64,size=256 # Mount /dev/lvm/home as /dev/mapper/home using LUKS, and prompt for the passphrase at boot time. home /dev/lvm/home # Mount /dev/sdb1 as /dev/mapper/backup using LUKS, with a passphrase stored in a file. backup /dev/sdb1 /home/alice/backup.key
起動時にマウント
If you want to mount an encrypted drive at boot time, just enter the device's UUID in /etc/crypttab
. You get the UUID (partition) by using the command lsblk -f
and adding it to
/etc/crypttab
externaldrive UUID=2f9a8428-ac69-478a-88a2-4aa458565431 none luks,timeout=180
The first parameter is your preferred device mapper's name for your encrypted drive. The option none
will trigger a prompt during boot to type the passphrase for unlocking the partition. The timeout
option defines the timeout in seconds for entering the decryption password while booting.
A keyfile can also be set up and referenced instead of none
. This results in an automatic unlocking, if the keyfile is accessible during boot. Since LUKS offers the option to have multiple keys, the chosen option can also be changed later.
Use the device mapper's name you've defined in /etc/crypttab
in /etc/fstab
as shown here:
/etc/fstab
/dev/mapper/externaldrive /mnt/backup ext4 defaults,errors=remount-ro 0 2
Since /dev/mapper/externaldrive
already is the result of a unique partition mapping, there is no need to specify an UUID for it. In any case, the mapper with the filesystem will have a different UUID than the partition it is encrypted in.