問題タブ [trust-zone]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arm - セキュリティ ブート シーケンスは armv7 と armv8 で異なりますか?
arm trustzone テクノロジーを使用したセキュアなシステムを構築します。しかし、armv7 と armv8 ではセキュア ブート シーケンスが異なると言われています。私は違いが何であるか知りたいですか?また、セキュア ブートのみが異なるか、armv7 と armv8 のブート シーケンスが異なりますか?
どんな種類の助けも大歓迎です。
linux-kernel - 通常の世界で Linux を起動する
i.MX53クイック スターティング ボードでTrustZone (ARM セキュリティ拡張機能) を調べています。セキュアワールドイメージとノーマルワールドイメージのベアメタルシステムの作成に成功しました。u-bootを使用して 2 つのイメージを RAM にロードし、セキュア ワールドを起動します。セキュア ワールドは、モニター システムを初期化し、通常のワールド イメージに手を差し伸べます。
同じ制度を利用したい。しかし、今回は通常の世界の基本イメージを使用する代わりに、 Linux Kernel Imageを使用したいと思います。安全な世界にいるときに、i.MX53 リファレンス マニュアルと i.MX53 セキュリティ リファレンス マニュアルで見つけたいくつかの構成を行いました。構成は次のとおりです。
CSU を設定します。
CSL0-31 to 0x00FF_00FF
TZIC (割り込み)
TZIC_INTSEC0-3 to 0xFFFF_FFFF
を構成しTZIC_PRIORITY0-31 to 0x1F1F_1F1F
、TZIC_INTCTRL to 0x8001_0001
セキュア構成レジスタの構成:
NS=0 IRQ=0 FIQ=0 EA=0 FW=1 AW=1 => 0x30
Linux カーネルに手を差し伸べると、ブート プロセスが開始されます。出力の一部を以下に示します。
レギュレーター: コア バージョン 0.5
NET: 登録済みプロトコル ファミリ 16
i.MX IRAM プール: 128 KB@0xec840000
IRAM パーティションの解放に失敗しました
CPU は i.MX0 リビジョン 0.0
未処理の障害: 0xec82c00c での非ラインフェッチ (0x1008) での外部アボート
内部エラー: : 1008 [#1] PREEMPT
最後の sysfs ファイル:
リンクされているモジュール:
CPU: 0 汚染されていません (2.6.35.3 #1)
PC は mxc_cpu_lp_set+0x1c/0x16c にあります
LR は arch_idle+0x60/0x294 にあります
pc : [<8003a958>] lr : [<8003ab08>] psr: 60000093
sp: 80835f78 IP: 00000003 fp: 8088fb68
....
出力でわかるように、 IRAMに問題があり(通常は IRAM READY と表示されるため)、データの中断があります。これらのエラーに関連する画面が表示された後、Linux カーネルのブート プロセスが停止します。
それを解決する方法のアイデアはありますか? 構成が不足していますか? ありがとうございました
linux-kernel - ARM Trustzone のユースケースを知りたい
私は現在、ARM trustzone テクノロジを理解しています。Zynq ボードでのプロトタイプ開発のためのトラスト ゾーンの基本的なユース ケースを提案してください。
security - ARM TrustZone を使用して、非セキュア ワールドからメモリ領域へのアクセスを防止する
環境
通常の世界では機能豊富なGNU/Linux OS を実行し、セキュアな世界ではモニターが統合された小さな OS を実行したいと考えています。
要件
セキュア ワールドのメモリ領域にアクセスするには、ノーマル ワールドを絶対に避けなければなりません。
質問
この要件を満たすために、 TrustZone のどの機能を使用/アクティブ化する必要がありますか? 必要な機能だけを使用して、必要な作業を最小限に抑えたい。
詳細
私はかなり多くのARM TrustZoneドキュメントを読みました。セキュリティ拡張機能を備えたTZPC、TZASC、MMU については知っていますが、次の脅威を回避する方法がわかりません。
カーネル空間へのアクセス権を取得したハッカーが MMU を非アクティブ化し、セキュア ワールドの物理メモリ領域に直接アクセスするのを止めるにはどうすればよいでしょうか?
たぶん、これは想像もできないし、実行可能ではないでしょうか? しかし、もしそうなら、これを防ぐためにTZPCが義務付けられていると思いますよね? それとも、2 つのTrustZoneワールドを「単に」使用するだけで十分ですか?
linux - TrustZone メモリのパーティショニング
このリンクで ARM Trustzone について読んでいます。TrustZone を使用すると、メモリをセキュアな領域と非セキュアな領域に分割できることを理解しています。ベンダーは、これを使用して安全な OS を実行できます。
私が興味を持っているのは、このパーティションの粒度サポートは何ですか? 「セキュア」とマークされたメモリブロックが存在する可能性があり、OSごとにそのようなメモリブロックが1つしか存在できないというだけですか? TrustZone には、個々のプロセス用にメモリを分割する容量がありますか?
Linux アプリケーション用の .so ファイル (架空の例) があるとします。プロセス A の同じコードが仮想アドレス 0x1000 から 0x2000 でセキュアとマークされ、プロセス B で仮想アドレス 0x5000 から 0x6000 でセキュアとマークされる可能性はありますか?