自己暗号化ドライブ
SSDの自己暗号化(ハードウェア暗号化)の規格にはOPALがある。
OPAL2.0は広く実装されている。
https://wiki.archlinux.jp/index.php/自己暗号化ドライブ
PBA (Pre Boot Authorization)について
日本語では起動前認証と呼ばれる。OSやブートローダーが入っているSSDを自己暗号化した場合、パーティションに関係なくすべてが暗号化されてしまうため、OSを起動するためには別の存在がディスクの暗号化を解除し、ブートローダーを起動してあげなければいけない。
SSDの暗号化を有効にすると、SSDの一部領域を暗号化せずに、復号実行前にPCへ認識させることができる。その領域をパーティショニングして、簡易的なブートローダーと復号化を実行する簡易OS(簡易Linux)を書き込む。
PBAの本体は軽量化されたLinuxになっている。initramfs内でユーザーにプロンプトを表示し、またそこで受け取ったパスワードを用いて自己暗号化ドライブに復号を依頼する機能がある。無事ドライブが復号化されるとシャットダウンされ、ブートローダー(grubなど)を起動する。
sedutilというパッケージには、このためにPBAを生成するコマンドmklinuxpba-diskimgが搭載されている。
mklinuxpba-diskimgを実行すると、内部的にmklinuxpba-initramfsが呼び出され、linuxpbaフックが追加されたinitramfsが生成される。
次に、空のGPTディスクイメージを作成し、またfat32でフォーマットしたパーティションを一つ作成する。
マウントする。
そこへ簡易ブートローダーとしてsyslinuxとその設定ファイルをコピーする。
vmlinuzと先程作成したinitramfsをコピーする。(ついでにucodeも)
最後にアンマウントし、完成したlinuxpba.diskimageをホストの/bootへ吐き出す。
MBR Shadow
こうしてドライブ復号化専用OSが出来上がったわけですが、今度はこれを暗号化されないどこかにおいて、パソコンのBIOS(UEFI)に読み込んでもらう必要がある。
USBメモリを使っても良いですが、ドライブ一つで自己暗号化ドライブを実現させるために、MBR Shadowと呼ばれる機能が生まれた。
MBR Shadow機能はSSDについてくる機能で、暗号化解除前は領域Aを、暗号化解除後は領域Bをディスクとして認識させる機能です。そして、前者はSSDの内部に付属してくる小さい領域(128MBぐらい)で、後者はSSD本体の領域。
この前者の領域を使うことで、復号化前にOSがPBAを読み込み起動することができる。
PBAイメージをこのPBA用領域に書き込むには、以下のコマンドを使用する。
code:shell
# sedutil-cli --loadPBAimage <password> <pba_file> <drive>
参考:
https://wiki.archlinux.jp/index.php/自己暗号化ドライブ
https://www.pit-navi.jp/security-opalseds-20180131/
https://www.trustedcomputinggroup.org/wp-content/uploads/JRF-WS-Nov42010_5.-TCG_JRF_Opal_Seminar_rev.1.0_HitachiGST.pdf
#Linux #セキュリティ #SSD #ドライブ