EC2 で TPM を利用可能とし TPM 依存のオンプレミスワークロードの EC2 移行を促進する AWS Nitro TPM が 2022年に登場します #reinvent

EC2 で TPM を利用できるようになり、TPM 依存のアプリケーションも EC2 で動かすことができるようになります。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

re:Invent 2021の怒涛の新機能の発表の中でそこまでスポットライトを浴びることもなくひっそり発表されていた新機能、AWS Nitro TPM をご存知でしょうか。

▲ この画像を見たことはあるか

Trusted Platform Module (TPM) と呼ばれる、セキュリティ機能を提供するモジュールがあります。これは従来 EC2 では対応していませんでした。そのため、TPM に依存するアプリケーションや OS を EC2 に移行することができず、オンプレミスで稼働させていたケースもあるかと思います。

AWS Nitro TPM が登場すれば EC2 で TPM が利用できるようになるため、上記の制約が理由でオンプレミスで稼働させていたワークロードを EC2 に移行できるようになります。

そんな AWS Nitro TPM が 2022 に登場するよ、という発表までが re:Invent 2021 の中で行われました。

そもそも TPM とは何か

恥ずかしながら TPM という言葉を知らなかったので、愚直に検索してみました。

TPMとは、コンピュータのマザーボードなどに装着される、セキュリティ関連の処理機能を実装した半導体チップ。業界団体のTrusted Computing Group(TCG)が標準仕様を策定しており、パソコンの企業向けモデルなどに搭載されている。

どうやらセキュリティチップのことを指す、ということを理解しました。ハイパーバイザーが仮想マシン向けに提供する仮想 TPM というものもあるようです。

そして AWS IoT Grrengrass 向けのものではありますが、以下の AWS のブログの中で「TPMとは何か」が説明がされています。

TPM は暗号化プロセッサであり、いくつかの機能を提供します。その中で以下の 3 つがピックアップされています。

  • Root of trust(信頼の基点)の確立
  • セキュアブート
  • デバイスの識別

上 2 点について、画像を引用して補足します。

Root of trust のイメージは以下です。アプリケーション、OSなどの各レイヤーは下のレイヤーを信頼する必要があり、最終的にハードウェアが適切に安全であるかが信頼されている必要があります。

root_of_trust

信頼の基点に基づいて構成されているのがセキュアブートであり、ブートプロセスが信頼された連鎖で正常に行われるかを保証するものです。セキュアブートの拡張として Measured Boot があり、ここではプロセスに参加したコンポーネントのID が TPM に記録され検証されます。

正直まだ理解が追いついていませんが、暗号化によってセキュリティ機能を提供するハードウェアコンポーネントである、というところまで押さえました。

AWS Nitro TPM についてどこで言及されたか

リーダーシップセッション「 Building on 15 years of compute innovation(CMP218-L-SGT)」の中で取り上げられました。

AWS Nitro によって提供されるセキュリティ機能について説明される中で、NitroTPM について言及されています。(24分ごろ)

NitroTPM-CMP218-L-SGT-24-2

続いて冒頭で載せたスライドを用いた説明がされます。

CMP218-L-SGT-NitroTPM25

Allows attestation of the health of EC2 instances and provide a source of trust that is rooted in silicon

Easy to migrate on-premises applications that depend on a Trusted Platform Module (TPM)

Conforms to the Trusted Platform Module 2.0 spec

(機械翻訳)

EC2インスタンスの健全性を証明し、シリコンに根ざした信頼の源を提供できる

Trusted Platform Module (TPM)に依存するオンプレミスのアプリケーションを容易に移行可能

Trusted Platform Module 2.0仕様に準拠

そして AWS Nitro System の製品ページにも AWS Nitro TPM に関する記述が追加されています。

Coming Soon in 2022: NitroTPM, a security and compatibility feature that makes it easier for customers to use applications and operating system capabilities that depend on trusted platform modules (TPMs) in their EC2 instances.

(機械翻訳)

2022年近日公開予定:NitroTPMは、お客様がEC2インスタンスでTPM(Trusted Platform Module)に依存するアプリケーションやオペレーティングシステムの機能を容易に使用できるようにするセキュリティおよび互換性の機能です。

機能一覧の中にも記述が増えています。Nitro Security Chip と似たアイコンが使用されていますね。Security Chip と同じくハードウェアコンポーネントとして提供されるのかが気になるところです。

AWS_Nitro_System_TPM_feauture

NitroTPM, a Trusted Platform Module (TPM) 2.0, is a security and compatibility feature that makes it easier for customers to use applications and operating system capabilities that depend on TPMs in their EC2 instances. It conforms to the TPM 2.0 specification, which makes it easy to migrate existing on-premises workloads that use TPM functionalities to EC2. NitroTPM provides a secure cryptographic offload using the AWS Nitro System, and allows EC2 instances to generate, store, and use keys without having access to the same keys. NitroTPM can also provide a cryptographic proof of your instances' integrity via TPM attestation mechanisms.

(機械翻訳)

TPM(Trusted Platform Module)2.0に対応したNitroTPMは、お客様がEC2インスタンスでTPMに依存するアプリケーションやOSの機能をより簡単に使用できるようにするためのセキュリティおよび互換性の機能です。TPM 2.0の仕様に準拠しているため、TPMの機能を使用している既存のオンプレミスのワークロードをEC2に簡単に移行することができます。NitroTPMは、AWS Nitro Systemを使用して安全な暗号化オフロードを提供し、EC2インスタンスが同じ鍵にアクセスすることなく、鍵の生成、保存、使用を可能にします。また、NitroTPMは、TPM認証メカニズムを介して、インスタンスの整合性を暗号で証明することができます。

EC2 における TPM

EC2 で TPM を使用できたのかについて言及されたソースを漁ってみたところ、唯一以下が見つかりました。

AWS_Security_Best_Practices_pdf

デフォルトでは、BitLocker はキーを保存するためにトラステッドプラット フォームモジュール (TPM) を必要としますが、これは Amazon EC2 ではサ ポートされていません。ただし、パスワードを使用するように設定すると、 BitLocker を使用して EBS ボリュームを保護できます。

BitLocker は TPM を使用する代表的なアプリケーションとしてよく名前が挙げられています。

また、2011年ごろに使用可否についてフォーラムで問い合わせが行われている様子も確認できました。(有効な回答なし)

Nitro Enclaves と Nitro TPM

AWS Nitro と TPM 、という文脈の中で以下の記述を発見し、TEE (Trusted Execution Environment)という概念を知りました。

TEE (Trusted Execution Environment)は特定のアプリケーションが他のソフトウェアから隔離されたEnclaveで実行されることを保証するプロセッサの拡張機能である。TEEの基本的なセキュリティ要件とインターフェース定義は標準化団体GlobalPlatformが行なっています。

TEEではハードウェアレベルの設計により、カーネルOS、ハイパーバイザなどの権限の強いシステムソフトウェアが保護領域のメモリに対して不正にアクセスできないようになっています。つまり、システムソフトウェアからのマルウェアに対してもアプリケーションが保護されます。このようなセキュリティ性質により、従来より格段に隔離性が高い環境で汎用プログラムを安全に実行できるため、機密性の高いデータを伴うアプリケーションへの応用が進められています。

代表的なTEEとして、Intel SGX、ARM TrustZone、RISC-V Keystoneなどがあげられ、AWS Nitro Enclavesも同等の性質を持ちます。また、メモリの隔離保護に加えAttestationと呼ばれる機能を持つTEEもあり、この機能により意図した実行バイナリが正規プロセッサで動作していることを保証します。まとめると、TEEは実行バイナリの秘匿性と完全性を提供する性質を持つことになります。

また、TPM (Trusted Platform Module) もプロセッサレベルの隔離実行機能の代表的な標準規格です。TPMはプログラムがチップセットにハードコードされているのに対し、TEEは一般開発者に隔離実行するプログラムの実装が拓かれている点で大きく異なります。また、Google Titan、 Apple T2、 Microsoft Plutonも同様の機能を持ちますが、実装とアップデートはあくまでプロダクトベンダのみに制限されてしまっています。

TPM と TEE はどちらも隔離された環境での実行をもたらすものであるが、前者は CPU にハードコードされたものである、という理解をしました。

AWS Nitro Enclaves は EC2 インスタンス上で隔離されたコンピュート環境を提供するものであり、重要機密を扱うアプリケーションでの使用が想定されています。

TPM に依存するアプリケーションも同様に重要機密を扱うものが主になると想像しますが、AWS Nitro TPM ではアプリケーションから見て透過的に TPM が使用できるのでしょうか。両者の違いが気になるところです。

より多くのワークロードの EC2 への移行を促進する AWS Nitro の新機能

AWS Nitro TPM が 2022年に登場する、というアナウンスでした。

EC2 では TPM が使用できないため、TPM の利用が必須であるアプリケーションや OS はオンプレミスなど他のプラットフォームで稼働せざるを得なかった。AWS Nitro TPM によってその制約が無くなるため、EC2 への移行が実現できるようになる、というお話でした。

どういったアプリケーションや OS が該当するかの知識が不足しているため具体的なケースが思い浮かばないのが悲しいところですが、「オンプレミスで稼働せざるを得ない」というケースを少しでも取り除いて多くのワークロードを EC2 へ移行させていく、という AWS の姿勢を垣間見た気がしました。

「結局何が嬉しいの?」の深掘りも含めて、2022年の正式発表を待ちたいと思います。

以上、 チバユキ (@batchicchi) がお送りしました。

参考