組み込みシステムは誤動作せず、高い信頼性を持たなくてはなりません。ですが、「信頼」はどこまで求めることができるのでしょうか。できる限りの掘り下げを行ってみましょう。
多くのエンベデッドデザインは誤りなく完全に動作する必要があります。誤動作は、人々や財産に許容できない害を与えることがあります。最近まで、この要求事項は注意深い設計とハードウェアの信頼性によって対処されてきました。つまり、ソフトウェアとロジックに誤りがなく、ハードウェアに故障がなければシステムは問題なく動作するということです。
しかし、私たちは今日、宣戦布告なしのサイバー戦争の時代に生きています。システムを正しく動作させようとするならば、時間を持て余したハッカーから犯罪組織、有り余る資金援助を受けた研究所まで、あらゆる相手からの攻撃を想定しなければなりません。システムを守るには、何を、最終的には誰を、信頼できるかを判断しなければなりません。これを求めることは容易ではありません。不可能と言う人さえいます。しかし、必要ならば、そうせざるを得ません。
「自分のシステムを信じられるかどうか」を見極めることは非常に困難です。
見極めるにはこの根本的な大きな1つの疑問を、小さく多数の難しい“だけ”の疑問に分割する必要があります。よく使用する切り分けは、アプリケーションソフトウェア、オペレーティングシステム/ブートコード/ファームウェア、ハードウェアです。
一般にそれらの間のインタフェースを定義し、各レベルが行うと信じていることを定義することが可能であり、デザインの各レベルを個別に信じることが可能であれば、システムを信じることができます(図 1)。
信頼は包括的なものにならざるを得ません。オブジェクトソフトウェアが完璧であるならば、OSがそのアプリケーションプログラムインタフェースに正しく応答し、コードを破壊しないことを信頼しなければなりません。それには、OSを破壊するおそれのある悪質なコードがブートローダに存在しないこと、システムを乗っ取るおそれのあるトロイの木馬がハードウェアに存在しないことを信頼しなければなりません。
アーキテクトの中には、この再帰的な質問が信頼のルーツを見つけることであると表現する人がいます。しかし、この例えは楽観的に過ぎるでしょう。2015年6月のDesign Automation Conference(DAC)のセキュアシステムに関するパネルディスカッションで、米インテルの上級主席エンジニアである Vincent Zimmer(ビンセント・ジマー)氏は、ある人の「地球は亀の甲羅の上にある円盤である」という真偽の怪しい説を引き合いにしました。亀は何の上に立っていたかと尋ねられたその人は、「上から下まで亀なのです」と答えました。
最終的にどこかで再帰を終える必要があるならば、デザインでも方法でもなく特定のエンジニアのグループ、つまり人間を信頼して終えます。少なくとも何人かの専門家はそのように主張します。
このように「人はどのようにして自身のデザインした特定レイヤーを信頼するようになるのか」という明らかな疑問が生じます。「信頼のルーツ」という言葉は、いずれかの信頼できる究極のレイヤーまで掘り進んでやっと安全になることを示唆します。しかし、一般にハードウェアでもソフトウェアでも、デザインのレイヤーを信頼するには、わずかな方法しかありません。
そしてもちろん、デザイン内の自分のレイヤーを信頼したならば、それより低いレイヤーを信頼する段階に進みます。そのレイヤーから、それよりも下のデザインの動作を変更することは物理的に可能です。これは、このプロセスをさらに詳細にレイヤーごとに調査するのに役立ちます。
Copyright © ITmedia, Inc. All Rights Reserved.