典型的なハイパーバイザーは、CPU のみに制限されています。他のDMA マスターに対しては保護しません。詳細については、ウィキペディアのDMA 攻撃のWeb ページを参照してください。コールド ブートなどの他の攻撃では、悪用を防ぐために、ゼロ化可能なメモリなどの他のメカニズムが必要です。つまり、TrustZoneは完全なセキュリティ ソリューションではありませんが、その大きな部分を占めています。ARM は単なる CPU であるため、他のバス マスターを制御するメカニズムは規定されていません。DMA マスターに加えて、代替 CPU もメモリの分割に脅威をもたらします。これに対処するために、一部のセカンダリ CPU はTrustZoneです。わかっている。つまり、常にNSビット ( 33番目のビット) でトランザクションにタグを付けます。
対照的に、ハイパーバイザーが2 つの世界に限定されることはめったにありません。 ハイパーバイザーは、任意の数の OS をホストします。 TrustZoneには 2 つの世界しかありません。安全で正常。各ワールドには制御用のスーパーバイザーOS を配置できますが、OS が許可する場合は、多くの個別のスレッド、タスク、またはプロセスを使用できます。
DMA 攻撃の説明: ハードウェア ビットとは対照的に、ハイパーバイザーは通常、CPU のMMUを使用してソフトウェア アクセスを制限します。これは、別の BUS マスターがメモリに到達するのを妨げません。ハイパーバイザーの制限付きソフトウェアが個別の BUS マスターを制御できる場合、保護対象のメモリを取得できます。DMA は物理アドレスを使用し、MMU をバイパスして、一般的なハイパーバイザー保護を行います。
DMA 攻撃は、CPU の外部の何かを使用してメモリにアクセスすることにより、CPU の保護を回避します。TrustZoneでは、保護はCPUではなく、BUS コントローラーにあります。参照:サンプルについてはNIC301 ARM TrustZone CPU は、CPU が 4 つのモードをサポートできるようにします。セキュア スーパーバイザ、セキュア ユーザ、通常スーパーバイザ、および通常ユーザ。通常の ARM CPU は、ユーザーで実行されているハイパーバイザーのすべてのホストされた OS で、ユーザーとスーパーバイザーの分離のみをサポートします。モード; 通常、すべての DMA ペリフェラルはスーパーバイザー特権で実行され、値は多くの場合 SOC にハードコーディングされています。
更新:元の質問には IOMMU が含まれていませんでした。
タイプ |
メリット |
TZ |
バススイッチ、マスターとペリフェラルを軽減 |
HV |
DMA 軽減策なし、シングル マスター (CPU) |
IOMMU |
IOMMU はスレーブの緩和策であり、「ワールド スイッチ」の更新が必要です |
Hypervisor + IOMMU は、DMA 攻撃に対してある程度の保護を実現できます。ただし、これは「ワールド スイッチ」で IOMMU テーブルを更新する必要があることを意味します。これにより、その周辺機器に対する DMA 攻撃が防止されます。この保護を必要とするすべての周辺機器には、IOMMU が必要です。
「通常の世界」のデバイスが安全なデバイスにアクセスして「安全な操作」を実行する場合があります。たとえば、キーにアクセスせずにデータの復号化を要求します。
ハイパーバイザー + IOMMUは信頼ゾーンと同等ではありません。Trustzone はバス マトリックスによる保護であり、すべての周辺機器とマスターが含まれます。マスターはどちらの世界状態にもなり得ます。つまり、マルチ CPU システムでは、1 つをノーマルに、もう 1 つをセキュアにすることができます。意味計算は両方で行うことができます。HV+IOMMU ソリューションは、プリエンプティブ マルチタスクに相当します。システムがそのモードに入ると、IOMMU を切り替える必要があります。
繰り返しになりますが、TZ の弱点は、2 つの「ワールド」しかサポートされていないことです。HV+IOMMU は複数の「ゲスト」をサポートできます。