kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 23.10 その40 - TPMによるディスク暗号化の試験的サポートとその実装

TPMによるディスク暗号化の試験的サポートとその実装

「Ubuntu Desktop 23.10」の「Ubuntu Desktop Installer」で「TPM(Trusted Platform Module)」を利用したボリューム全体の暗号化(FDE)が試験的にサポートされました。


以下で「TPM」によるディスク暗号化の試験的サポートとその実装に関する情報が紹介されています。

  • TPM-backed Full Disk Encryption is coming to Ubuntu

Full Disk Encryption(FDE)

「Full Disk Encryption(FDE)」とは、ディスク(ボリューム)を暗号化することです。
「TPM」に依らずとも別の仕組みを用いて「FDE」を実現することもできます。

ディスクを暗号化する目的は、ディスク内に保存されているデータを暗号化することで、ストレージの紛失や不正アクセスによるデータの漏洩リスクを軽減することです。

Trusted Platform Module(TPM)

「Trusted Platform Module(TPM)」はセキュリティーで活用される仕組みであり、ストレージの暗号化など機密情報を保護する目的で活用されています。
「Windows 11」のシステム要件でも話題になりました。

UbuntuとFDE

「TPM」による「FDE」の登場以前から「Ubuntu」では「FDE」をサポートしてきました。
従来の「FDE」ではストレージのロックを解除するため、PC起動時にユーザーからパスフレーズを入力してもらう必要がありました。

しかし「TPM」による「FDE」では、ストレージのロックを解除するのに必要な機密情報が「TPM」によって管理されるため、パスフレーズを入力することなくストレージのロックを解除できます。
これにより使い勝手が向上しています。

またPC起動時の「TPM」との連携においてソフトウェアの検証も行われるため、「悪意あるメイド攻撃」からユーザーを保護する効果も得られます。

従来のFDE

それでは「TPM」を利用しない従来の「FDE」を見てみましょう。
「Ubuntu」では「TPM」を利用しない従来の「FDE」に「Linux Unified Key Setup(LUKS)」を利用しています。

SSDやHDDなど一般的なユーザーが利用するストレージデバイスはブロックデバイスです。
「LUKS」はブロックレベルでディスクを暗号化する仕組みです。

この時「LUKS」による暗号化の主な流れは以下のようになります。

1. 暗号化の準備

「LUKS」でストレージを暗号化する場合、まずユーザーにパスフレーズもしくは鍵の入力を求めます。

2. LUKSヘッダーの作成

次に安全性の高い暗号鍵を生成するため、計算コストのかかる処理を経て暗号鍵が生成されます。
この時「1.」でユーザーが入力したパスフレーズは暗号鍵に直接使用されることはありません。

ここで生成された暗号鍵はマスター暗号鍵を暗号化するために使用されます。
またここで生成された暗号鍵は他に必要な情報とともに、暗号化するストレージの先頭に配置されるLUKSヘッダーに保存されます。

以上で「LUKS」による暗号化ストレージのセットアップは完了です。

3. Ubuntuの起動とロックの解除

さて「Ubuntu」が起動すると、「1.」でユーザーが入力したパスフレーズの入力を求める画面が「initrd」によって表示されます。
ユーザーが入力したパスフレーズは、暗号化されたLUKSヘッダーを復号化し、LUKSヘッダーに保存された暗号鍵を取り出して、ストレージのロックを解除するために使用されます。

4. デバイスマッパーによる統合と透過的なアクセスの提供

暗号化されたストレージ(パーティションもしくはディスク全体)は、デバイスマッパーサブシステムを利用して、仮想ブロックデバイスと紐付けられます。
アプリなどのソフトウェアは、この仮想ブロックデバイスを通じてデータの読み込みや書き込みを行います。

この時仮想ブロックデバイスは、暗号化ストレージにデータを書き込む時に、その場でデータ暗号化して暗号化ストレージにそのデータを保存します。

同様に仮想ブロックデバイスは、暗号化ストレージからデータを読み込む時に、その場で暗号化されたデータを復号化してソフトウェアに返します。

つまりアプリなどソフトウェアから見るとストレージの暗号化のことは意識せずに、通常のストレージのようにデータにアクセスできます。

5.柔軟なアルゴリズムとモード設定

「LUKS」では暗号の強度とパフォーマンスに影響を与えるアルゴリズムとモード設定を柔軟に設定・選択でき、利用目的に応じて柔軟なセキュリティー設定が可能です。
ちなみに「Ubuntu」では、十分な評価を得ている「XTS-AES 256」を利用しています。

セキュリティーの強度はパスフレーズの強度に依存する

さて一連の過程を見て分かることは、この方法による「FDE」のセキュリティー強度は、「1.」でユーザーが入力したパスフレーズの強度に強く依存するということです。
言い換えると短くて脆弱なパスフレーズでは、十分なセキュリティー強度は得られません。

TPMによるFDEの構成要素

上記の「TPM」を利用しない「LUKS」による「FDE」では「LUKS」が主役でした。
しかし「TPM」による「FDE」では、複数の要素を組み合わせて「FDE」を実現します。

1. UEFIセキュアブート

セキュリティーで保護されていないPCでは、OS起動時のブートプロセスが脆弱になります。
カーネルやハードウェア、周辺機器、ユーザー空間で動作するプロセスは起動時に初期化され利用可能になりますが、この時ブートファームウェアに脆弱性があった場合、その脆弱性をついた攻撃はこれらのソフトウェアも巻き込み連鎖的にシステム全体に影響を与える可能性があります。

その一例がブートキット(ルートキット)です。
ブートキットはブートプロセスの初期段階をターゲットとした悪意あるソフトウェアです。ブートキットはシステムを不正に制御し、OSやその他のソフトウェアよりも先に悪意あるコードを実行します。

そこで悪意あるコードによってシステムが侵害されていないことを検証するために、予め信頼できる検証可能な署名が施されたファームウェアやブートローダー、OS、カーネルなどブートプロセスで使用されるソフトウェアのみ実行できるように構成します。

これを実現する仕組みが、UEFIセキュアブートです。

2. TPM

「TPM」は先に紹介したとおり、機密情報を保護する目的で活用されるデバイスです。
「TPM」はマザーボード上に実装されているハードウェアベースのセキュリティーコンポーネントです。
「TPM」は暗号鍵の生成や保存、管理、そしてセキュリティー関連のタスクを実行する非常に重要な役割を担うマイクロコントローラーです。

「TPM」が管理しているキーは、システムの認証やセキュアな通信、そして機密データの保護に活用できます。

さて「TPM」には「Platform Configuration Register(PCR)」と呼ばれる暗号学的ハッシュを保存する一連のレジスターがあります。
「PCR」には重要なシステムコンポーネントの測定値が保存されます。
これらのハッシュにより信頼のチェーンを作成でき、リモートでシステムを認証することも可能になり(Remote Attestation)、システムの完全性と信頼性を確保できるようになります。

3. ブートの計測

「PCR」ではブートプロセスにおいて使用される様々なコンポーネントを暗号学的に計測し、セキュアな記録やログを作成します。
ファームウェアの初期化からOSカーネルの読み込みまで重要な時点において計測が実施されます。
この計測結果は各種コンポーネントの内容を一意に表すハッシュ値として「PCR」に保存されます。
ブートの計測では「TPM」の「PCR」を活用して測定値を安全に保存し、改ざんされないことを保証します。

この計測結果と期待される計測結果とを比較し、ブートプロセスで不正もしくは意図しない変更が発生したかどうかを確認し、改ざんや悪意あるソフトウェアによるシステムの侵害の可能性を検知することができます。

TPMによるFDEのアーキテクチャー

それでは「TPM」による「FDE」のアーキテクチャーを見てみましょう。

TPMによるFDEの利点

「TPM」による「FDE」の利点は、ユーザーが起動時にパスフレーズを手動で入力する必要がなくなり、前述のセキュリティー強度をパスフレーズの依存から切り離すことができる点です。
また企業では組織で利用するPCなどデバイスの暗号化の導入障壁が低くなり、大規模に展開されるデバイスの管理や運用効率の向上に期待できます。

また「TPM」に加えパスフレーズの導入も可能です。
パスフレーズを導入すれば攻撃者がオフラインで攻撃する「ブルートフォース攻撃」にも対抗できるようになります。

設計原則

さてこれらの利点を実現するために「TPM」による「FDE」の実装では、2つの主要な設計原則に依存しています。

1つ目は、カーネルのコマンドラインを含む「FDE」の秘密鍵をEFI Stateにシール(封/封印)することです。

2つ目は、復号鍵へのアクセスは機密データへのアクセスが承認されているソフトウェアのみがアクセスできることです。
「initrd」はデバイス起動時にセキュアブートで保護された「kernel.efi」内で復号鍵のシールを解除します。

TPMによる鍵の保護

「TPM」には様々なオブジェクト(アイテム)を保護する4つの階層があります。
「FDE」ではこの階層の内の1つ、ストレージ階層を利用します。

オブジェクトには様々な用途があります。
署名や鍵交換で利用される非対称の鍵や、対称的な暗号化や「HMAC」で使用される対称的な鍵、外部の機密データを保護するオブジェクト、他のオブジェクトを保護する目的で利用可能なストレージキーなど様々な用途を持つオブジェクトがあります。

これらのオブジェクトをどこかに格納する必要があるのですが、「TPM」が提供するストレージ容量は限られており、多くのオブジェクトはストレージキーにより暗号化され、「TPM」の外部に保存されます。

「Ubuntu」の「FDE」ではディスクの暗号鍵を「TPM」の外部に保存し、「TPM」のストレージ階層内でシールされたデータオブジェクトとして保護されます。

「TPM」は機密データへのアクセスが事前に承認されているブート環境だった場合、「initramfs」のコードから鍵をアクセスできるようにします。
その一方でブート環境で使用されるコンポーネントが変更されていた場合、「TPM」は鍵へのアクセスを拒否します。
これを実現するためには「TPM」に適切な認証ポリシーが必要になります。

TPMの認証ポリシー

「TPM」リソースでは機密情報にアクセス可能な条件を指定する認証ポリシーを作成でき、この認証ポリシーで「PCR」の値が事前に計算された値と一致していることを要求する認証ポリシーを作成できます。

この認証ポリシーを利用して特定のブート環境のみが鍵にアクセスできるようにしています。
またこの認証ポリシーでは、ブート環境で使用されるコンポーネントが変更されていた場合、アクセスを拒否するように設定されています。
このコンポーネントには、ブートローダー、カーネル、「initramfs」のコード、セキュアブートの構成、カーネルのコマンドラインが含まれています。

Snapdの役割

通常「Ubuntu Dektop」ではカーネルなどPCの起動に使用されるソフトウェアはDebianパッケージ(.debパッケージ)で構成されています。

「TPM」による「FDE」は「Ubuntu Core」と同じアーキテクチャーに基づいており、その設計や実装方針は「Ubuntu Core」と共有しています。

  • Full disk encryption

つまりブートローダー(shimとGRUB)やカーネルは、Snapパッケージで提供されます。
そしてこれらのSnapパッケージを管理する役割は「snapd」が担います。

  • Snaps in Ubuntu Core

ブートローダーとカーネルを超えた部分は従来の「Ubuntu Dektop」と同じ環境になります。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Ubuntu 26.04 その42 - Ubuntu 26.04.1 LTS のリリーススケジュール
    Ubuntu 26.04.1 LTSのリリーススケジュール Ubuntu 26.04.1 LTS のリリーススケジュールを紹介します。
  • Linux Mint その292 - Linux kernel 7.0 採用の Linux Mint 22.3 リリース・システム管理ツールにカーネル管理機能追加など
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu 26.04 その68 - Ubuntu 26.04.1 LTS がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.04.1 LTS リリース 2026年8月27日、Ubuntu 26.04.1 LTS がリリースされました。
  • Linux その422 - GNOME Boxes の再構築と未来・Flatpak のみの提供やモダンな機能の実装など
    GNOME Boxes の再構築と未来 GNOME Boxes の再構築と未来が以下で紹介されています。
  • Kubuntu その117 - Kubuntu 26.04 LTS にもっと手厚いサポートを・最高の信頼性を誇る KDE 搭載ディストリビューションを目指して
    最高の信頼性を誇る KDE 搭載ディストリビューションを目指して Kubuntu 26.04 LTS に手厚いサポートが導入されました。
  • Linux その421 - GNOME Shell のデザイン構想と長期的な見通し
    GNOME Shell のデザイン構想と長期的な見通し GNOME Shell のデザイン構想と長期的な見通しが、以下で紹介されています。
  • Linux その420 - KDE Plasma で実装予定の新機能や改善・UI レイアウトの調整やリモートデスクトップの改善など
    KDE Plasma で実装予定の新機能や改善 KDE Plasma で実装予定の新機能や改善を紹介します。
  • Windows その29 - Windows 向け Coreutils 登場・Coreutils のインストールやコマンドの一覧など
    Windows 向け Coreutils 登場 Windows 向け Coreutils が登場しました。
  • Linux その386 - Arch Linux の AUR パッケージで悪意あるコミットが続く・今度はソースコードの難読化か
    Arch Linux の AUR パッケージで悪意あるコミットが続く Arch Linux の AUR パッケージで悪意あるコミット(マルウェア)が続いています。
  • Ubuntu 18.04 その195 - PolicyKitにクラッシュや権限の昇格など複数の脆弱性・今すぐアップデートを
    PolicyKitの脆弱性 2018年7月16日、クラッシュや権限の昇格など複数の脆弱性に対応した「PolicyKit」がリリースされました。
記事のピックアップ
オプション