SafeGとは
SafeGは同一ハードウェアプラットフォーム上で、汎用OSとRTOSを安全に同時実行できる高信頼デュアルOSモニタです。SafeGでは汎用OSとRTOSの同時実行を実現するために、ARMプロセッサのTrustZoneセキュリティ拡張機能を利用します。
- ARM TrustZoneの実装されたプロセッサでは、プロセッサにトラスト状態、ノントラスト状態の2つの状態の概念が追加されます。各状態には独立に特権・非特権レベルが存在します。
- トラスト状態は、一般的なARMプロセッサの特権レベルおよび非特権レベルと同じ機能を提供します。
- 一方、ノントラスト状態で動いてるプログラムは、たとえ特権レベルであっても、トラスト用メモリやデバイスへのアクセスが禁止されます。また、一部の命令はノントラスト状態では実行できません。
トラスト状態/ノントラスト状態を制御するために、モニタモードと言う新しいモードが追加されています。SafeGは割込み禁止状態かつモニタモードで、トラスト状態とノン・トラスト状態を切り替えます。
Fig.1 SafeGのアーキテクチャ
SafeGの特徴
- シングルプロセッサで汎用OSとRTOSの同時実行を実現します。汎用OSはノントラスト状態で、RTOSはトラスト状態で実行されます。
- 汎用OSの不正なアクセスからRTOS用メモリとデバイスを保護します。RTOS 用メモリとデバイスは、トラスト状態のプロセッサからのみアクセス出来るように設定されています。残りのリソースは、どちらのプロセッサ状態からもアクセス出来ます。
- RTOSのリアルタイム性を保証します。RTOSのリアルタイム性保証のため、各状態で異なる割り込み要求ラインを使用します。
- FIQはRTOSで使用されます。
- IRQは汎用OSで使用されます。
トラスト状態ではIRQ割り込みが禁止されています。そのため、汎用OSの割り込みが、RTOSの実行に影響を与えることはありません。
一方、ノントラスト状態では、いつでもRTOSにプロセッサの制御を渡せるように、常にFIQ割り込みが許可されています。また、ノントラスト状態でFIQ割り込みを禁止出来ないように設定されています。そのため,RTOSの割込みを汎用 OSが禁止することはできません。
- ハードウェアの仮想化支援機能を使用しているため、低オーバヘッドで2つのOSの同時実行を実現できます。
- 汎用OSは少ない変更で適用可能です。必要な変更点はメモリとデバイスに関するコンフィギュレーションのみです。
- SafeGのコードは非常に小規模であり、かつ割り込み禁止状態で動作するため、検証が容易となっています。
対応ハードウェア・OS
SafeGの実行には、TrustZone搭載プロセッサが必要です。TrustZone搭載プロセッサには次のようなものがあります。
- ARM Cortex-A9
- ARM Cortex-A8
- ARM Cortex-A5
- ARM1176
加えて、ターゲットハードウェアには以下のTrustZoneサポートが必要となります。
- メモリとデバイスをトラスト側とノントラスト側に分離可能
- トラストとノントラスト割り込みを区別可能
最新のリリースでは次のボードに対応しています。
- ARM PB1176JZF-S RealView Platform Baseboard (ARM1176-JZF dev chip)
- IDEA6410 board
- MINI6410 board
- Kyoto KZM-CA9-01 board
- Freescale i.mx53 QuickStart board
最新のリリースでは次のゲストOSに対応しています。
- Trust : ASP, FMP, bare metal
- Non-Trust : ASP, FMP, Linux, Android
SafeGをビルドするため、GNUツールチェインが必要です。テストを行った環境は以下の通りです。
- Ubuntu 10.04
- GNU Make 3.81
- CodeSourcery G++ Lite ARM toolchain
- arm-none-eabi-gcc 4.2.0
- arm-none-eabi-ld 2.17
- arm-none-eabi-as 2.17
ダウンロード
SafeGの開発は名古屋大学情報科学研究科TOPPERSメンバーによって、TOPPERS内のプロジェクト管理ツールで行われています。ユーザ向けのパッケージはここからダウンロードできます。
今後の予定
- 仮想化によるintrospectionモニタ
- 新しいボードへのポーティング
- マルチコア対応SafeGにおけるロックホルダープリエンプションの解決
開発スタッフ
SafeGの開発に参加している開発スタッフは次の通りです(所属は参加した時点のもの)。
| 名前 |
所属 |
時期 |
| 高田広章 |
名古屋大学 情報科学研究科 |
2009年〜 |
| 本田晋也 |
名古屋大学 情報科学研究科 |
2009年〜 |
| Daniel Sangorrin Lopez |
名古屋大学 情報科学研究科 |
2009年〜 |
| 太田貴也 |
名古屋大学 情報科学研究科 |
2010年〜 |
※ 開発スタッフの名前は、掲載を了承された方のみ記載しています。
論文紹介
- 太田貴也,Daniel Sangorrin,本田晋也,高田広章,組込み向け高信頼デュアルOSモニタとそのマルチコア拡張,第13回 組込みシステム技術に関するサマーワークショップ(SWEST13)ポスター,予稿集, 下呂市, Sep 2011.
- 太田貴也,Daniel Sangorrin,一場利幸,本田晋也,高田広章,組込み向け高信頼デュアルOSモニタのマルチコアアーキテクチャへの適用,情報処理学会 第117回OS研究会,Apr 2011.
- "Integrated Scheduling in a Real-Time Embedded Hypervisor", Daniel Sangorrin, Shinya Honda and Hiroaki Takada, 18th SIGEMB, Hakodate Mirai University, Aug 2010.
- "Dual Operating System Architecture for Real-Time Embedded Systems", Daniel SANGORRIN, Shinya HONDA, Hiroaki TAKADA. OSPERT 2010 Brussels (Belgium)
- "セキュリティ支援ハードウェアによるハイブリッドOSシステムの高信頼化", 中嶋 健一郎, 本田 晋也, 手嶋 茂晴, 高田 広章. The IEICE Transactions on Information Systems, 93(2):7585, 2010-02-01