セキュリティ
リモートアテステーション
Remote Attestation (liamcvw.com)
要約
リモートアテステーションは、TPM(Trusted Platform Module)を使用して、ホストのハードウェア、ファームウェア、カーネル、ルートファイルシステムなどの状態を暗号学的に証明する技術です。これにより、ホストが信頼できる状態にあることを確認し、不正なホストからのアクセスを防ぐことができます。設定は複雑ですが、起動後のセキュリティを大幅に強化し、サプライチェーン攻撃などのリスクを低減します。
全文翻訳
リモートアテステーション
もしそれがアヒルらしく鳴くなら…
ホストがネットワークに接続されます。それはあなたのフリートの一部のように見えますが、本当にそうでしょうか?それはあなたのソフトウェアを実行しています、少なくともトラフィックをサービスし始めるのに十分なものです。それはアヒルらしく鳴きます。しかし、内部はどうなっているのでしょうか?
ChatGPTがそれを作成することに同意したことに驚いています。
しかし真面目な話。あなたのデータが侵害されたスタックに座っていないことをどうやって知るのでしょうか?攻撃者が制御するマシンにワークロードをスケジュールしようとしているのではないことをどうやって知るのでしょうか?ホストにセキュリティコントロールが実際に配置されていることをどうやって知るのでしょうか?そして、攻撃者が一度ホストを乗っ取ると、アップグレードや再起動を乗り越えて隠れる場所は無限にあります。
ほとんどの設定では、ホストがプロビジョニングされた後、ホストにかなりの信頼を置いています。ホストは信頼境界に配置され、それ以降、何が起こったとしてもそのまま残ります。そもそもそこにいるべきではなかったとしてもです。
そこで、この問題を(ほとんど)解決するリモートアテステーションの素晴らしい世界が登場します。TPMを使用することで、いくつかのことをリモートで暗号学的に証明できます。
ホストは期待されるハードウェアを持っている
ホストは期待されるファームウェアを持っている
ホストは期待されるカーネルと初期イメージを持っている
ホストは期待されるルートファイルシステムを持っている(セットアップによる)
ホストは定義された任意のチェックに合格した
これは、再起動後、ホストがどのような状態にあるかを正確に把握できることを意味します。広範な物理的改造や改ざんがなければ、新しい起動は信頼できる状態にするか、失敗してホストの信頼を壊すかのどちらかです。
測定起動サイクルはセキュアブートとは異なります。セキュアブートが署名された成果物に依存するのに対し、測定起動は署名された測定値に依存します。これは、かなりの複雑さを犠牲にして、はるかに大きなカバレッジを提供します。悪意のある署名されたドライバーやルートキットでさえ検出できます。
しかし、セキュアブートのように起動をブロックしないのであれば、測定する意味は何でしょうか?測定は何をもたらすのでしょうか?
これはホストをどのように信頼するかという問題になります。TPMを使用してルートファイルシステム(すべてのキーとデータがある場所)全体または一部を暗号化できます。これにより、測定された起動が成功しないと、ホストは機能的に動作不能になります。RAは、正しい測定値を提供しないホストに証明書を発行することを拒否できます(mTLSを使用していますよね?)。TPMでTLS x509証明書をバックアップすることもできます。これにより、不正に再起動されたホストはmTLSで認証できなくなります。これは、ホストの初期状態について非常に強力な保証を提供するため、ワークロードとデータが信頼できる環境にあると確信できます。
これは完璧な解決策ではありません。物理的な攻撃(メモリタップなど)は依然として問題です。しかし、堅牢なEDRと良好なLSMポリシーと組み合わせることで、多くの問題、特にユーザーランドの防御をすべて回避する厄介なカーネルおよびドライバーのサプライチェーン攻撃に対して扉を閉めることができます。
起動後の攻撃についてはどうでしょうか?
それはEDRの問題です。信頼された起動は、他の多くのプリミティブを構築するための基盤を提供します。これには、EDRがインストールされて実行されていることの暗号学的証明(起動時)、不変のファイルシステム(起動時に検証済み)、署名されたアップグレード、機密コンピューティングなどが含まれます。これなしでは、ホスト自体を信頼できず、さらなるセキュリティ保証を行うことはできません。砂上の楼閣のようなものです。
リモートアテステーションを使用するだけで、簡単です
残念ながら、組織内のすべてのホストについて、起動プロセスのすべてのステップをリモートで測定することは、途方もない作業です。これは、ファームウェア、初期イメージ、カーネルをどのように構築および配布するかに関わってきます。プラス面としては、多くのレガシーなゴミをクリーンアップする機会が得られ、おそらく考えていなかった多くのサプライチェーンの問題も明らかになるでしょう。
仕組み
TPMの魔法、ほぼ。TPMはホストに限定された暗号操作インターフェースを公開しており、そのインターフェースは暗号マテリアルへのアクセスを制御するのに十分なほどロックダウンされています。物理攻撃にも耐性がありますが、主な機能はソフトウェア攻撃を緩和することであり、物理攻撃ではありません。カーネルコードでさえ、TPMに潜り込んでプライベートマテリアルを抽出することはできません。
TPMにはPCR(Platform Configuration Registers)のセットが付属しています。それらの唯一の機能はハッシュを格納することです。それらは前方のみに進み、PCRに新しいハッシュを測定でき、以前の値と新しい値をハッシュして一意の結果を生成します。後戻りはできません。起動および初期化中に異なるアーティファクトが異なるPCRに測定され、セキュアブートと同様に、各フェーズが次のフェーズを測定します。どこかでこのチェーンが壊れると、PCR値は汚染されます。
TPMはこれらの値を気にします。それらに基づいていくつかのことを行うことができます。
TPMシーリング:PCR(選択したPCR)がチェックアウトした場合にのみロックが解除されるように、マテリアルをTPMに格納できます。
TPMクォート:TPMに常駐するキーで値を署名できます。RAは、そのキーの由来を知っています(後述)。これにより、測定値が正しいことを強く証明できます。
完全な儀式は、このようなブログ記事の範囲外です(Claudeに聞いてください)。大まかには次のようになります。
ホストが最初にプロビジョニングされるとき、TPMには製造元によって焼き付けられた復号キーであるEK(Endorsement Key)があります。EKには、製造元のPKIによって署名されたx509証明書が付属しています。したがって、EKはTPMが正当であることを証明します。
次に、EKから派生したAttestation Key(AK)をミントします。AKは制限付き署名キーであり、TPMクォートのみに署名できます(自分でクォートを作成して署名できるとしたら、これのポイントは何でしょうか?)。通常、AKは後続の再起動のために保持されます。しかし、AKがEKに結び付けられていることをどうやって知るのでしょうか?EKは復号キーであり、何も署名しません。アテスターは、EKとAKの公開キー、およびEKのx509リーフ証明書の2つの公開キーを取得するだけです。完全な答えには、私が説明するのに快適な以上の暗号数学が含まれます。TLDR:検証者はチャレンジを発行します。EK公開キーで資格情報を暗号化し、それを返します。デバイスはEK秘密キー(TPMから決して離れない)で資格情報を復号し、資格情報をアテスターに送信して、EK秘密キーを制御するデバイスと通信していることを証明します。
AKはクォートにしか署名できず、アテスターは各レジスタに対して許可されるPCR値のセットを持っています。したがって、AKはホストが期待どおりに起動したことを証明します。これは「測定起動」の話です。しかし、3番目のキー、LDevID(Locally-scoped Device ID)が必要です。これはノードIDを表します。
LDevIDはAKの子です。重要なのは、LDevIDはクォートだけでなく、あらゆるものを署名できることです。LDevIDによって署名されたものはすべて、この特定のTPMで署名されたことが証明されます。重要なのは、あらゆるものを署名できるため、署名が行われるタイミングを制限する必要があることです。そうでなければ、攻撃者がそれを制御できるようになります。多くの場合、それはゴールデンPCR値にシーリングされているため、悪い状態での再起動では使用できません。
儀式全体が完了すると、ホストは実際に正当であることを証明できます。これは実行時のセキュリティを保証するものではなく、それはあなたの責任です。これは起動に関するものだけです。これがすべて正しく設定されていれば、攻撃は再起動を生き延びません。あるいは、少なくともホストをブリックさせることしかできません。
TPMシーリングはアップグレードで問題が発生します。新しいファームウェアは異なる測定値を持つため、アテステーションが失敗します。解決策は、AuthKeyによって署名されたポリシー(TPM2_PolicyAuthorize)を承認することです。これにより、TPMは新しいPCR値を受け入れることができます。AuthKeyはノード自体が保持でき、その場合、更新を検証して受け入れるかどうかを判断する必要があります。または、権威がそれを保持し、公開キーをデバイス/TPMに配布します。デバイスまたはインフラストラクチャのどこでアップグレードを検証したいかによります。
これにより何ができますか?
インフラストラクチャが一貫してmTLSを強制する場合、アテステーションされなかったホストを拒否できます。RAはそれらに証明書を付与しないためです。TPMバックアップ証明書を使用する場合、改ざんされたホストは自然に本番環境へのアクセスを失います。
すべてのホストには由来があります。LDevID(TLSまたはその他のもの)によって署名されたデータは、特定のホストからのものであることを証明できます。
ワークロードは、ホストで実行することを拒否できます。