fr33f0r4ll

自分用雑記

Linux ディスクの暗号化

Linuxでディスクを暗号化したので手順をメモする。

ディスク暗号化

ディスクへ書き込む時点で暗号化してくれるのでファイルレベルで暗号化するより楽に管理できるし、コピーしたときとかにディスクにデータが残ってて復元されてしまったりとかの危険性は減る。 ただし、ディスクに書き込まれるデータそのものが全て暗号化されるのでディスクが破損すると全てのデータが取り出せなくなったりする危険がある。

これをやっておくとノートパソコンとかUSBとかを紛失してもすぐに中身が漏洩することはないので大事な情報を持ち運ぶときのために用意しておくと便利。 パスの管理をしっかりやっていれば、ディスク自体は使い回しても基本的には問題ないはず。 一度マウントすると復号されてデータが読み出せるので、信頼できない機器で開くのはやめた方がいい。 それと復号するときに入力した鍵がメモリに残ってたりするので、マウントしたままスリープ状態で持ち運ぶのはやめよう。

手順

最初に暗号化するディスクパーティションを用意する。 partedなりfdiskなりgpartedなりで用意するか、ディスクの領域全てを使ってもいい。 cryptsetupでLUKSを使う。

古いディスクを使い回すなら、せっかくなのでディスクの状態を診断しておくといい。 下記のサイトで紹介されているbadblocksは各セクタに書き込んで順次チェックすることができる。

Linux - badblocks コマンドで HDD 不良ブロックのチェック! - mk-mode BLOG

前に書いた記事の通りにディスクを初期化しておくと以前のデータを復元できなくなる。 ランダムなデータを書き込めば、暗号化データを識別するのも難しくなるはず。 hiziriai.hatenablog.com

/dev/sdb1のパーティションを暗号化し、マウントするときの例。

apt install cryptsetup
cryptsetup luksFormat /dev/sdb1
cryptsetup luksOpen /dev/sdb1 encrypted-disk
mkfs.ext4 /dev/mapper/encrypted-disk
mkdir /mnt/encrypted-disk
mount /dev/mapper/encrypted-disk /mnt/encrypted-disk
umount /mnt/encrypted-disk
cryptsetup luksClose /dev/mapper/encrypted-disk

luksFormatでディスクの暗号化方式とかハッシュ方式を選択できる、デフォルトでは256ビットのaesとsha1になる。 パスワードもこのとき決める。複数のパスワードも登録できるらしいが個人で使うだけなら必要ない。

luksOpenで読み書きできるようにしている。 openでもいい。指定した名前で/dev/mapper以下にアクセスできるリンクが貼られる。 luksCloseあるいはcloseするまで読み書き可能な状態になっているはず。

あとはファイルシステムを作成して(ここではext4)マウントすれば普通のディスクと同じように使える。