web-dev-qa-db-ja.com

取り扱いARM TrustZones

ARMにはTrustZoneと呼ばれるものがあります。 ARMドキュメント)のとおり、プロセスはセキュア/ノンセキュアワールドで実行できることがわかります。

  1. セキュア/ノンセキュアワールドとはどういう意味ですか。それはプロセッサの実行モードに関連していますか、それともメモリ領域または他の何かの許可の設定に関連していますか?.
  2. ARMの7つの動作モードとセキュア/ノンセキュアワールドの間に何らかの関係がありますか?.
  3. ARMでTrustZoneを有効にする方法。
  4. ARMのどのバージョンから導入されましたか。
  5. このTrustZoneの使用は必須ですか? LinuxカーネルはこのTrustZone拡張機能を使用しますか?.

これを理解するのを手伝ってください。

30
Prabagaran

http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/index.html は、何かの概要を説明する、かなり優れた入門ドキュメントです少し複雑すぎて、テキストボックスに入力しても十分に説明できません。ただし、以下の直接的な質問にはお答えします。

  1. 実行モードに直交する追加の権限オプションを指します。セキュアワールドには、セキュアとしてタグ付けされたメモリアクセスを作成する機能がありますが、非セキュアアクセスも実行できます。通常の世界では安全でないアクセスしかできません。さらに、特定のプロセッサ構成オプションは、セキュアワールドでのみアクセスできます。その目的は、デバイスのメインオペレーティングシステムまたはアプリケーションソフトウェアでのソフトウェアの悪用に対して(直接)脆弱性があり得ない単純な環境で安全なソフトウェアを分離することです。
  2. それ以外は、「モニター」モードが追加されます。この監視モードは、通常の世界とセキュアな世界の間の「コンテキストスイッチ」に使用されます。
  3. TrustZoneは有効ではなく、実装されています(または実装されていません)。
  4. TrustZoneは、セキュリティ拡張機能でARMアーキテクチャバージョン6に導入されました。これをサポートする最初のプロセッサはARM1176でした。すべてのCortex-Aプロセッサがそれをサポートしています。
  5. 「いいえ」。TrustZone対応のプロセッサーは電源投入時にセキュア状態で実行を開始するため、ブートローダーがセキュリティ状態を変更するために何も行わない場合、すべてのソフトウェアはセキュアとして実行されます(セキュリティ上の利点はありません)。いいえ、TrustZone環境は、OSと直接統合するのではなく、OSと一緒に実行することを明示的に意図しています。一部のプラットフォームでは、Linuxカーネルはセキュアモニターコールを実行して、セキュアワールドに特定のシステム構成オプションの変更を要求します。
32
unixsmurf

UnixSmurfsの答えを補足するには、

セキュア/ノンセキュアワールドとはどういう意味ですか。それはプロセッサの実行モードに関連していますか、それともメモリ領域または他の何かの許可の設定に関連していますか?.

主にメモリ領域に関連しています。すべてのTrustZone互換デバイスは、AXIバスアクセスに[〜#〜] ns [〜#〜]ビットでタグ付けします。このビットは、アクセスがセキュアまたはノーマルのどちらからであるかを指定します。このようにして、/-通常ワールドの制御下にある[〜#〜] dma [〜#〜]周辺機器でさえも分離できます。

ARMの7つの動作モードとセキュア/ノンセキュアワールドの間に何らかの関係がありますか?.

あんまり。ただし、監視モードと呼ばれるの間に世界があり、明らかにそれが束の中で最も強力です。 監視モードは、セキュアノーマルの間にあるブローカーです。 セキュアワールドのシステムメモリビューを保持しながら、ノーマルワールド CP15レジスタにアクセスできます(NSビットを0としてプッシュします)。

ARMでTrustZoneを有効にする方法。

Enableは、オーバーロードされたWordのビットです。 unixsmurf が示すように、CPUに組み込まれています。デフォルトでは、TrustZone対応のCPUはセキュアの世界で起動します。何もしない場合、CPUがTrustZone対応であることに気付かない可能性があります。 通常ワールドを設定し、それに制御を渡すことによってのみ、TrustZoneが使用されます。おそらく、これはenableの意味です。

ARMのどのバージョンから導入されましたか。

2つのフレーバーがあります。

  1. TrustZone互換性があります。
  2. TrustZone有効。

TrustZoneセキュリティホワイトペーパーのセクション4.2これに答えてください。 ARM1176JZ(F)-SCortex-A8Cortex-A9Cortex-A9-MPCoreおよびCortex-A5サポートTrustZoneARM1156T2(F)-SおよびCortex-R4は互換性があります。彼らは2になることができますnd システムのコア。新しいコアが開発されると、それらがリストに追加される可能性があります。この質問は動く目標です。

このTrustZoneの使用は必須ですか? LinuxカーネルはこのTrustZone拡張機能を使用しますか?.

必須ではありませんLinuxカーネルが果たすことができる2つの役割があります。 セキュアおよびノーマルワールド。 LinuxでのTrustZoneの使用に関する情報については、 svc-handler-to-smc-call を参照してください。

UnixSmurfが暗示する、答えられないいくつかのこと;すべてのBUSマスターおよびスレーブ[〜#〜] ns [〜#〜]ビットを適切に認識していることを確認する必要があります。この情報は、CPU情報のであり、BUSアービトレータを含みます。 本のようなである別のトピック。

参照: PRD29-GENC-009492C
組み込みシステムの仮想化手法としてのARM TrustZone
ARM TrustZone
ARM Trusted Firmware

18
artless noise