web-dev-qa-db-ja.com

TPMのストレージルートキー(SRK)によってラップされたキーの復号化

TPMでストレージルートキー(SRK)でラップされた対称キーがあるとします。攻撃者はSRKを読み取ることができないため、SRKを使用して復号化を実行し、対称鍵を使用してメモリ内の対称鍵を取得し、その後の操作を実行します。メモリ内の対称鍵のセキュリティはどのように取得されますか?標準のLinux(Android)では、メモリの内容をダンプして対称鍵を取得できませんか?では、トラストゾーンとは何ですか?SRKでラップすると何ができますか?この対称鍵とそれ以降のすべての操作を対称鍵を使用して保護する方法はありますか?トラストゾーンでは、署名されたコードのみを実行できますが、暗号化されたメモリをセキュリティで保護する必要はありませんが、前に読んだ覚えがありますかメモリ内のキーを保護することによって暗号化されたメモリを取得するトラストゾーンモードはありますか?

Android解決する方法は?Androidで暗号化されたメモリを使用するオプションがある場合、メモリはどのように暗号化され、どのキーでどのようにプロビジョニング/生成されますか?

3
user220201

TrustZoneとTPM(およびそのSRK)は、2つの非常に異なるものです。私はあなたが説明したことを達成するためにそれらがどのように使用されることができるかを説明する前にそれらの両方を延期するように試みます。

TrustZoneは、ARMプラットフォーム環境です。これは、セキュリティを確保するための第2の環境を提供します。つまり、セキュリティを確保するために多くの機能を利用できます。

あなたの例では、通常の環境(TrustZoneの用語では豊かな世界)はAndroidと実行され、いわゆる信頼された/安全なカーネル(TEE)はTrustZone側(安全な世界)にありますこれらの保護はTEE自体によって定義され、その実際の目標に依存します。セキュアワールドで実行されているものは、通常の世界(Android)によって書き込み/読み取りできない保護されたメモリを使用し、一部のデバイスは、 TrustZoneカーネルも。

TPMのSRKによってラップされた対称キーは、通常、いったんアンラップされると直接メモリに公開されると言うのはあなたの言うとおりです。 TPMはその時点では何も提供しません。信頼された環境からのみこれを行うことが前提です。ただし、TPMとTrustZoneの両方に参加する場合は、SRK(対称キーなど)を使用してデータを暗号化/復号化し、プレーンテキストのみを安全な世界に公開して、通常のWord、Androidから保護することができます。

これは基本的にAppleが賢明な情報/プロセスを保護する方法です(明らかに大幅に簡略化されています)。

1
northox

質問がTPMからTrustZoneに途中で切り替わります。これらは異なるテクノロジーであり、異なる機能を提供し、異なるセキュリティプロパティを備えており、さまざまな(大部分は互いに素である)プラットフォームのセットで利用できます。それらが共通しているのは、どちらも、接続されているデバイスに固有の秘密鍵を含み、そのデバイスで実行されているメインオペレーティングシステムから保護されているコンピューティング環境であることです。

TPMは、固定された一連のサービスを提供する独立したチップです。これらのサービスの1つは、TPMを残さないキーでキーをラップすることにより、保存されているキーを保護することです。このキーをアプリケーションで使用するには、アプリケーションがTPMからキーを取得する必要があり、その時点でキーはメインのオペレーティングシステム内に格納されます。 TPMは、x86プロセッサーに接続されていることがほとんどです。

TrustZone(および関連テクノロジ)は、デバイスのメインオペレーティングシステムと同じプロセッサで実行される分離された環境を提供します。これを使用して、保存されているキーを保護し、プロセッサのTrustZone側で実行されているアプリケーションによってキーが操作された場合に、実行時にキーを保護することもできます(トラステッド実行環境(TEE))。 TrustZoneはARM=機能です。

TPMは主要なストレージ機能を提供します。 AndroidはKeymasterサービスを介してこの機能を提供します。最近の多くのAndroid電話では、keymasterサービスは hardware-backed で実行されていますTrustZoneの安全な世界ですが、結局のところ、それを使用するアプリケーションがキーを取得する必要があります。

TrustZoneは、セキュアな世界でカスタムアプリケーションを実行する追加機能を提供する可能性があります。それができれば、安全な世界を離れない鍵を手に入れることができます。

一部のごく最近のx86プロセッサーには、 [〜#〜] sgx [〜#〜] と呼ばれる同様の機能があります。メインオペレーティングシステムから保護されたコンテキストでアプリケーションを実行できます。

アプリケーションをTrustZoneまたはSGXに展開できる場合、次の問題は、暗号化またはキーで署名されたデータの処理方法です。そのデータが安全なチャネルを使用してサーバーと交換される場合、メインのオペレーティングシステムをまったく信頼する必要がない場合があります。その後の問題は、多くのアプリケーションにとって、特定のデバイスとの関係を確立する方法、つまりプロビジョニングです。それには、やや重いインフラストラクチャが必要になる傾向があります。