0

このリンクで ARM Trustzone について読んでいます。TrustZone を使用すると、メモリをセキュアな領域と非セキュアな領域に分割できることを理解しています。ベンダーは、これを使用して安全な OS を実行できます。

私が興味を持っているのは、このパーティションの粒度サポートは何ですか? 「セキュア」とマークされたメモリブロックが存在する可能性があり、OSごとにそのようなメモリブロックが1つしか存在できないというだけですか? TrustZone には、個々のプロセス用にメモリを分割する容量がありますか?

Linux アプリケーション用の .so ファイル (架空の例) があるとします。プロセス A の同じコードが仮想アドレス 0x1000 から 0x2000 でセキュアとマークされ、プロセス B で仮想アドレス 0x5000 から 0x6000 でセキュアとマークされる可能性はありますか?

4

1 に答える 1

1

TrustZone のパーティショニングは物理メモリ レベルで発生するため、質問のプロセス レベルの部分は実際には当てはまりません。非セキュア OS としての Linux はセキュア メモリを認識することさえできないため、アクセスできないアドレスに仮想マッピングを設定してもほとんど役に立たないことに注意してください。ただし、安全な OS には、ページ テーブル エントリの NS ビットによって、安全な物理アドレスと非安全な物理アドレスの両方をマップする機能があります。

その物理的なパーティショニングがどのように行われるかについては、実装によって異なります。リンクが参照するTZC-380は、最小 32KB の粒度で 2 ~ 16 のリージョンをサポートします。後継のTZC-400には 9 つのリージョンがあり、4KB の粒度まで下がっています。他の実装はまだ異なる場合がありますが、MMU がオンになっている CPU ではほとんど使用できないため、4KB 未満の粒度はほとんどありません。また、システムには通常、セキュア メモリ マップのみ (たとえば、TZC のプログラミング インターフェイス) にハードワイヤードされるものがいくつかあり、専用のセキュア SRAM が含まれることがよくあります。

于 2015-09-14T08:56:50.327 に答える