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
人気の記事
  • Linux その450 - Canonical LXD や MicroCloud にクライアントなりすましの脆弱性・アップデートを
    Canonical LXD や MicroCloud に重大な脆弱性 2026年10月28日、Canonical LXD や MicroCloud に重大な脆弱性がみつかりました。
  • Ubuntu 26.04 その82 - Linux kernel の脆弱性 CVE-2026-98432 の対応状況
    CVE-2026-98432 の対応状況 2026年11月2日、Linux kernel の脆弱性である CVE-2026-98432 の対応状況がアナウンスされました。
  • Linux Mint その294 - Linux Mint 27 の開発とリリース方針の変更・アラーム管理アプリの開発
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.04 その78 - eMudhra 認証局の秘密鍵の侵害・アップデートを
    eMudhra 認証局の秘密鍵の侵害 2026年10月20日、eMudhra 認証局(eMudhra CA)の秘密鍵の侵害が発覚しました。
  • Ubuntu 26.04 その79 - CVE-2026-111497 に対応した Brotli のリリース・アップデートを
    Brotli のセキュリティーアップデート 2026年10月26日、CVE-2026-111497 に対応した Brotli がリリースされました。
  • Ubuntu 26.10 その39 - Ubuntu 26.10 の新機能と変更点・既知の問題
    Ubuntu 26.10 の新機能と変更点・既知の問題 リリースノートから、Ubuntu 26.10 の新機能と変更点を紹介します。
  • Ubuntu 26.04 その77 - PHP に php2shell(CVE-2026-109618/CVE-2026-109619)の脆弱性・アップデートを
    PHP に php2shell の脆弱性 PHP に php2shell と呼ばれる致命的な脆弱性が見つかりました。
  • Ubuntu 26.04 その80 - Ubuntu 26.04.2 LTS のリリーススケジュール
    Ubuntu 26.04.2 LTSのリリーススケジュール Ubuntu 26.04.2 LTS のリリーススケジュールを紹介します。
記事のピックアップ
オプション