皆さん こんにちは トラストゾーン対応 STM32 L5マイコンで組み込み機器のセキュリティ対策にようこそ このビデオではトラストゾーンを次のように定義します ハードウェア とソフトウェアを2つの明確なエリアに分割アイソレーションする メカニズムです 2つのエリアとはセキュア空間と非セキュア空間 を差します このアイソレーションメカニズムにより 私たちは資産 の保護レベルを向上させることができます 私たちはセミナー やトレーニングにおいてこの定義を紹介すると 次のような質問 を受けることがあります セキュア空間と非セキュア空間にそれぞれ 何を置くべきでしょうか セキュア空間にすべてのものを置くこと はできますか なぜセキュリティが向上するのか 実例を紹介して くださいなどです そこでこのビデオでは簡単な例の紹介を通じて アイソレーションの考え方を紹介します ここでSD Microelectronics のマイコン STM32-L5を紹介しますSTM32-L5はアームションのコアテクス M33をコアに採用しており トラストゾーンを有効にせずアイソレーション を使用しない設定とトラストゾーンを有効にしてアイソレーション を使用する設定の2つのモードで使用することができます コアテクス M33のトラストゾーンは アームションによって実装されて おり TMAやGPIOなどコア以外のシステム上のトラストゾーン機能はSTにより 実装されています トラストゾーンを有効にした場合 全てのIP フラッシュメモリーの一部およびラムの一部をセキュア空間 また は非セキュア空間に割り当てることができます 非セキュア空間 では非セキュア空間にしかアクセスできません セキュアコード やセキュアに割り当てられたフラッシュメモリー上で動作するコード は全ての空間にアクセスできますここで新泊数形アートレートモニター の例を紹介します 新泊を計測するセンサーがあり RFモジュールを通じて 遠隔にアクセスすることができます この動作を考えてみましょう ある 遠隔ユーザーが1000度ミデータリクエストを送信すると その リクエストはRFモジュールからI2Cインターフェースを通じ てSTM32に届きます STM32ではフラッシュメモリー上の新しいリクエスト 受信を処理するためのコードを実行し このリクエストが正しいかどうか を解析します その後 SPIインターフェースを通じてセンサーから値を取得し 値を暗号化します 暗号化するのは値が個人にかかわるセンシティブ な情報だからです 私たちはその値を誰にも見られたくない ので フラッシュメモリーの内部に保存された秘密鍵を使って 暗号化を行います 暗号化された体はI2Cを通じてRFモジュレー と送られ 最終的に変革ユーザーへと変身されます ハッカーの場合 を考えてみましょう この例でも先度見出たリクエストが送信され ますが 通常のリクエストではなくある攻撃が仕込まれています このリクエストが受信されると先ほどと同様にフラッシュメモリー 内のコードが実行されますが実はこのコードにはある脆弱性 があります このコードはバッファーオーバーフローの攻撃に弱いの です このビデオではこの種の攻撃についての説明は行いません インターネットや様々な書籍で紹介されていますので参照して みてください この攻撃により行われるのはラムエのコードの 注入です ハッカーが私たちのコードに脆弱性があることを 見つけるとラムに何らかのコードを注入します ここで注入 されたコードはセンサーから値を取得し ステップ5へとジャンプ するコードです その結果 値が暗号化されることなしに延伸 されることになります これはハッカーが心拍数計の値にアクセス できたことを意味し まさに私たちを保護したいものです この構成 についてよく見てみると 注入されたコードはセンサーの値だけ ではなく フラッシュメモリー上の秘密鍵をも取得できること が容易に想像できます 何も保護されていない秘密鍵を取得 することにより 最悪のケースではハッカーが秘密鍵を使って 全て の通信を複合し防止することが可能になります トラストゾーン を有効にしてみましょう つなわちアイソレーションを使用します 積約 空間と非積約空間にそれぞれ何を配置すればよいでしょうか 基本 的にはあなたが保護したいものを積約空間に配置してください 私たちが保護したいもの それは浸泊数計のセンサーとその 値でした ここでは不遂いするSPIインターフェースとGPIOのアクセス も含みます フラッシュメモリーをセキュア領域と非セキュア領域 に分割し SPIをもちろん暗号化の機能と秘密鍵をセキュア領域 に配置します 秘密鍵も保護したいものの一つであり 誰 にもアクセスさせたくないものです ここでたった一つだけ のAPIを非セキュア領域に定義します 非セキュア空間は暗号化 された値を取得するためにたった一つだけのこのAPIを置くことができ このAPIは既に暗号化されたセンサーの値を返します これは非セキュア 空間は秘密鍵に直接アクセスできず暗号化された値を要求 することしかできないことを意味します そのほかのすべてのもの を非セキュア空間に配置しますライブとの通信がありますが ここ には機能的に何も秘密はなく隠す価値のない一般的なコード があるだけです 仮にハッカーがここへのアクセスを試みたとして もハッカーにとって興味の対象にならない通信スタッグが見える だけです これがアイソレーションの意味になります もう一度ハッカー に戻ってみましょう ハッカーがリクエストを送信します ここ ではまだコードに脆弱性が残っています しかしアイソレーション によってコードの注入を阻止できますラムに何らかのコードが注入される かもしれません しかし新しく受信したリクエストを処理するコード は非セキュア空間にありラムの非セキュア領域にしかアクセス できません そのため何らかのコードが注入されたとしても それ は非セキュア領域にありそのコードが秘密情報にアクセス しようとしてもアイソレーションにより拒否されるのです 非セキュア ラムで動作しているコードは非セキュア空間にしかアクセス できず できることといえばAPI読み足して既に暗号化されたデータ を要求することだけですしかしそれは通常と同じ動作を しているだけでありハッカーにとって何の価値もありません これ がこのビデオで紹介したかったアイソレーションがいかに して攻撃を防ぐかの使用例です同じ例でその他の攻撃について 考えてみましょう 例えばSBIを再設定してしまう火用成功劇が考えられ ます 同様にI用の再設定やクロップの切断を狙う場合もあります これは いずれも機能を向こうにすることによりアプリケーションの 振る前にインパクトを与え 新パクス系のセンサーを使用停止 に追い込むものです ハッカーはより大規模な攻撃を仕掛ける ためのきっかけとしてこのようなアプリケーションにとって 想定 外の車与意図的に引き起こし利用します 一方 SCM32L5では代謝 をさまざまなST独自のセキュリティ機能の実装によりトラストゾーン の効果を最大限に高めることができます この例の場合 SPIは保護 されており SPIが使用するGPI用とクロックも保護されています これら に対する火用成功劇は必死的アコードを起源とする ため 適切なアイソレーションを設定することにより防ぐこと ができます STM32L5ではアプリケーションがDMAを使用する場合も同様に DMAのアイソレーションを設定することができます まとめです このビデオではSTM32L5のトラストゾーンを使用したアイソレーション の考え方とセキュリティレベルを上げる使い方を紹介しました ST独自の実装によりSTM32L5のトラストゾーンによるアイソレーション はシステムのすべての部分に柔軟に拡張されます ビデオでは紹介 しておりませんが STのソフトウェア開発ツールであるSTM32 Cubemaxはユーザー によるコードの設定を支援し コードのアイソレーションをさらにアクセス しやすくします またSTM32のファミリーではMPUやファイアーウォール セキュアーメモリーなどトラストゾーンだけではなく他にもアイソレーション のメカニズムを提供していますそれぞれのメカニズムには違い があり保護できる対象も異なっておりますので興味のある方はぜひ 一度各製品のリファレンスマニュアルを参照してみてください 以上 ご成長ありがとうございました