鵜飼 裕司/米eEye Digital Security Senior Software Engineer

 今回は,解析対象とする組み込み機器のハードウエアとOSを解説します。

ハードウエアの基本構成


図1. 組み込みシステムのハードウエア基本構成
[画像のクリックで拡大表示]

 組み込み機器のハードウエアの基本構成は,一般的なPCとほぼ同様です。CPU,メモリー,I/O,周辺装置などの基本要素で構成されており,まさにコンピュータそのものです。

 組み込みの分野でも,昔は8086系の流れをくむCPUがよく利用されましたが,PC用のCPUはバス幅が広がったために消費電力が多くなったこと,さまざまなデバイスとの接続性があまり考慮されていなかったことなどの理由から,組み込み用CPUとして利用し続けることは難しくなりました。

 そのため,RISCタイプのCPUが注目されました。RISC CPUは,高速かつ低消費電力であり,かつ,コアのサイズを小さくできるメリットがあります。一方で,デコード回路を簡略化するために命令語長を統一しているので,特に32ビットRISCでは,CISCに比べるとコード・サイズが大きくなってしまいます。

 そこで組み込みシステムでは,16ビットと32ビットの両方の命令語長をサポートするARMアーキテクチャがよく利用されるようになってきました。現在,さまざまな半導体メーカーがARM社のライセンスを受け,ARMアーキテクチャのCPUをリリースしています。


Samsung社製 S3C4510X01
[画像のクリックで拡大表示]

Intersil社製 ISL3856CK
[画像のクリックで拡大表示]

Net Silicon社製 NET+ARM40
[画像のクリックで拡大表示]
図2. ARMコアCPUの一例

リアルタイムOS

 組み込みシステムでは,リアルタイムOSと呼ばれるOSがよく利用されます。リアルタイムOSとは,応答速度が速い「軽いOS」と誤解されることがありますが,基本的には,「システムに課せられた時間的制約をクリアできることが保証されているOS」,あるいは「時間的制約を守れない場合があったとしても,システムの時間的挙動を完全に予測可能なOS」を指します。

 現在利用されているリアルタイムOSには,μcLinuxやVxWorks,μITRONなどに代表される「スレッド型」と,OS-9やRT-Linuxなどに代表される「プロセス型」があります。

 スレッド型とプロセス型の最も大きな違いは,タスクごとにメモリー空間が独立しているか否かです。プロセス型リアルタイムOSの動作には,MMU(Memory Management Unit)のサポートが不可欠ですが,タスクごとにメモリー空間が独立していることに加え,通常のプロセス型リアルタイムOSはマルチ・ステートですので非常に安全です。

 一方,スレッド型のリアルタイムOSはタスク・スイッチのコストが低く,通常はシングル・ステートですので,システム・コールの呼び出しにコストの高いトラップを利用する必要もありません。つまり,パフォーマンス面では非常に有利です。

 OSのパフォーマンスは,コストや消費電力を抑えたいシステムでは特に重要となります。このため,スレッド型のリアルタイムOSがよく利用されています。そこで本稿では,主にスレッド型リアルタイムOSが動作するシステムを対象とします。(第4回へ続く)

 「Security Tech」は,米eEye Digital SecurityのSenior Software Engineerである鵜飼裕司氏による技術コラムです。鵜飼氏はMicrosoft製品のセキュリティ脆弱性(セキュリティ・ホール)を多数発見していることでも知られるセキュリティの専門家です。
 本コラムでは,あるテーマについて数回にわたって技術解説記事を執筆していただきます。1回目のテーマは,「組み込みシステムのセキュリティ」。全8回にわたって,組み込みシステムにおけるセキュリティ脆弱性の脅威の実際と,開発サイドに求められる組み込み機器独特の防衛策について解説していただきます。
 なお,鵜飼氏には「ITpro Watcher」も執筆していただいております。こちらのほうも,併せてお読みいただければ幸いです。(編集部より)