(57)【要約】  支援機能（１２）によりメモリの保安領域へのアクセスが禁止された非セキュアモード（３）と、保安領域へのアクセスが許可されたセキュアモード（２）とを含む実行モードを備えたプロセッシングユニット（１１）と、セキュアモードで稼働するハイパーバイザー（２０）とを有するシステム（１）を提供する。ハイパーバイザーは、セキュアモードで稼働する第１のＯＳ（３０）に対してメモリの保安領域および非保安領域へのアクセスを可能とすることを含む第１の動作条件（２１）を設定する第１の設定ユニット（２３）と、非セキュアモードで稼働する第２のＯＳ（４１）に対して非保安領域に対するアクセスを可能とし、支援機能を用いて保安領域へのアクセスを不可とし、さらに、第１のＯＳと共用する第１のデバイスに対するアクセスによりセキュアモードに移行することを含む第２の動作条件（２２ａ）を設定する第２の設定ユニット（２４）とを含む。
2017034008.tif 000002
【特許請求の範囲】
【請求項１】
保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットと、
前記プロセッシングユニットの前記セキュアモードで稼働するハイパーバイザーとを有するシステムであって、
前記ハイパーバイザーは、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定する第１の設定ユニットと、
前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定する第２の設定ユニットと、
前記第２のＯＳに対し前記第１のデバイスを仮想化して提供するエミュレーションユニットとを含む、システム。
【請求項２】
請求項１において、前記第１の動作条件は、低セキュアなコンピュータネットワークを含む非保安デバイスに対するアクセスを不可とすることを含み、前記第２の動作条件は、前記非保安デバイスに対するアクセスを可能とすることを含む、システム。
【請求項３】
請求項１または２において、前記ハイパーバイザーは、前記第１のＯＳおよび前記第２のＯＳを含む複数のＯＳを切り替えるＯＳ切替ユニットを含み、前記ＯＳ切替ユニットは、前記複数のＯＳの動作条件および前記複数のＯＳのコンテキストをそれぞれ前記保安領域に格納するユニットを含む、システム。
【請求項４】
請求項１ないし３のいずれかにおいて、
前記ハイパーバイザーは、ＯＳ起動準備ユニットを有し、  前記ＯＳ起動準備ユニットは、前記保安領域に格納された前記第２のＯＳのファームウェアを前記保安領域に格納された認証情報を用いて認証する第１の認証ユニットと、
前記保安領域に格納された認証済みの前記第２のＯＳのファームウェアを前記非保安領域のブート領域に実行用のインスタンスとして展開する展開ユニットとを含む、システム。
【請求項５】
請求項４において、
さらに、前記セキュアモードで稼働する更新ユニットを有し、
前記更新ユニットは、前記非保安領域にダウンロードされた更新用のファームウェアを前記保安領域に格納された認証情報を用いて認証する第２の認証ユニットと、
前記非保安領域にダウンロードされた認証済みの前記更新用のファームウェアを前記保安領域に格納する格納ユニットとを含む、システム。
【請求項６】
請求項１ないし５のいずれかにおいて、前記第１の動作条件および前記第２の動作条件は前記非保安領域に設定された共有のメモリ領域の動作条件を含む、システム。
【請求項７】
請求項６において、前記共有のメモリ領域の動作条件は、前記第２のＯＳが前記共有のメモリ領域に書き込むと前記セキュアモードへ移行することを含み、
前記ハイパーバイザーは、前記共有のメモリ領域に書き込まれたことを前記第１のＯＳに通知するユニットを含み、
前記第１のＯＳは、前記共有のメモリ領域に書き込むと割り込みにより前記第２のＯＳに通知するユニットを含む、システム。
【請求項８】
請求項１ないし７のいずれかにおいて、
前記メモリと前記プロセッシングユニットとが搭載されたシステムオンチップを有するシステム。
【請求項９】
請求項１ないし８のいずれかにおいて、
さらに、前記第２のＯＳ上で稼働するアプリケーションと、
前記アプリケーションにより制御される装置とを有するシステム。
【請求項１０】
保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳを制御する方法であって、
前記システムは、前記プロセッシングユニットの前記セキュアモードで稼働するハイパーバイザーを含み、
当該方法は、
前記ハイパーバイザーが、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定することと、
前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定することと、
前記第２のＯＳに対し前記第１のデバイスを仮想化して提供することとを含む方法。
【請求項１１】
請求項１０において、
さらに、前記ハイパーバイザーが、前記第１のＯＳおよび前記第２のＯＳを含む前記複数のＯＳを切り替えることを含み、
前記ＯＳを切り替えることは、前記複数のＯＳの動作条件および前記複数のＯＳのコンテキストをそれぞれ前記保安領域に格納することを含む、方法。
【請求項１２】
請求項１０または１１において、
さらに、前記ハイパーバイザーが、ＯＳの起動を準備することを含み、
前記ＯＳの起動を準備することは、前記保安領域に格納された前記第２のＯＳのファームウェアを前記保安領域に格納された認証情報を用いて認証することと、
前記保安領域に格納された認証済みの前記第２のＯＳのファームウェアを前記非保安領域のブート領域に実行用のインスタンスとして展開することとを含む、方法。
【請求項１３】
請求項１２において、
さらに、前記システムは、前記セキュアモードで稼働する更新ユニットを含み、
当該方法は、
前記更新ユニットが、前記非保安領域にダウンロードされた更新用のファームウェアを前記保安領域に格納された認証情報を用いて認証することと、
前記非保安領域にダウンロードされた認証済みの前記更新用のファームウェアを前記保安領域に格納することとを含む、方法。
【請求項１４】
請求項１０ないし１３のいずれかにおいて、
前記第１の動作条件および前記第２の動作条件は前記非保安領域に設定された共有のメモリ領域の動作条件を含み、
当該方法は、
前記第２のＯＳが前記共有のメモリ領域に書き込むと前記セキュアモードへ移行し、前記ハイパーバイザーが、前記共有のメモリ領域に書き込まれたことを前記第１のＯＳに通知することと、
前記第１のＯＳが、前記共有のメモリ領域に書き込むと割り込みにより前記第２のＯＳに通知することとを含む、方法。
【請求項１５】
保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳの制御を可能とするプログラムであって、
前記プロセッシングユニットの前記セキュアモードでハイパーバイザーを稼働させる命令を含み、
前記ハイパーバイザーが、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定することと、
前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定することと、
前記第２のＯＳに対し前記第１のデバイスを仮想化して提供することとを実行する、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイパーバイザーを有するシステムに関するものである。
【背景技術】
【０００２】
日本国特許公開公報２０１３−１６１４７９号には、セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法を提供する技術が開示されている。特許文献１に開示されたデータ処理装置は、オペレーションのセキュアなドメインおよび低セキュアドメインを有する処理回路を有する。セキュアドメインで動作するときに、処理回路は、低セキュアドメインでアクセス可能でないデータにアクセスできる。制御フロー変更命令の実行に応答して、処理は、ターゲットアドレスのプログラム命令に切換わる。ドメイン選択は、ターゲットアドレスの命令について処理回路が動作する選択ドメインを決定するために実施される。ドメインチェッキングは、どのドメインが、ドメイン選択によって決定される選択ドメインであることを許容されるかをチェックするために実施されうる。ドメインチェックエラーは、ドメイン選択における選択ドメインが、許容選択ドメインでない場合に引き起こされる。
【発明の開示】
【０００３】
ハードウェアレベルでセキュアドメイン（セキュアモード、セキュアワールド）および低セキュアドメイン（低セキュアモード、低セキュアワールド、ノーマルワールド、典型的には非セキュアモード（ノンセキュアモード））をサポートする機能（支援機能）を備えたデータ処理装置において、さらに安全な仮想化環境を提供することが要望されている。
【０００４】
本発明の一態様は、保安領域と非保安領域とを含むメモリの保安領域へのアクセスを禁止する支援機能を含み、支援機能により保安領域へのアクセスが禁止された低セキュアモード（低セキュア環境）、典型的には非セキュアモード（ノンセキュアモード、非安全モード）と、保安領域へのアクセスが許可されたセキュアモード（安全モード、セキュア環境）とを含む実行モード（実行環境）を備えたプロセッシングユニットと、プロセッシングユニットのセキュアモードで稼働するハイパーバイザーとを有するシステムである。ハイパーバイザーは、セキュアモードで稼働する第１のＯＳに対して保安領域および非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定する第１の設定ユニットと、低セキュアモードで稼働する第２のＯＳに対して非保安領域に対するアクセスを可能とし、支援機能を用いて保安領域へのアクセスを不可とし、さらに、第１のＯＳと共用する第１のデバイスに対するアクセスによりセキュアモードに移行することを含む第２の動作条件を設定する第２の設定ユニットと、第２のＯＳに対し第１のデバイスを仮想化して提供するエミュレーションユニットとを含む。
【０００５】
このシステムにおいて、ハイパーバイザーは、外界からのアタックが基本的に防止された安全な実行環境（セキュアワールド）を提供するセキュアモードで稼働する。したがって、低セキュアモードで稼働するリッチＯＳなどの第２のＯＳからの干渉や攻撃に晒される可能性が少なく、セキュアモードで稼働するハイパーバイザーにより、さらに安全な仮想化環境（仮想環境）を提供できる。
【０００６】
一方、低セキュアモードで稼働する第２のＯＳの動作で仮想化が必要になると、プロセッシングユニットが低セキュアモードからセキュアモードに切り替わり、処理速度が低下する要因になる。このため、ハイパーバイザーは、セキュアモードで動作する第１のＯＳの第１の動作条件（第１のコンフィグレーション）を設定する第１の設定ユニットとともに、低セキュアモードで動作する第２のＯＳの第２の動作条件（第２のコンフィグレーション）を設定する第２の設定ユニットを含み、ハイパーバイザーはセキュアモード（セキュア環境）で動作し、低セキュアモードの第２のＯＳの動作条件を設定する。
【０００７】
第２の動作条件は、非保安領域に対するアクセスを可能とし、支援機能を用いて保安領域へのアクセスを不可とし、さらに、第１のＯＳと共用する第１のデバイスに対するアクセスによりセキュアモードに移行することを含み、ハイパーバイザーは、セキュアモードにおいて、エミュレーションユニットにより、第２のＯＳに対し第１のデバイスを仮想化して提供する。この第２の動作条件により、低セキュアモードで稼働する第２のＯＳは、メモリの非保安領域へセキュアモードに移行せずにアクセス可能となり、また、セキュアモードで稼働するＯＳと共用しないデバイスに対してもセキュアモードに移行せずにアクセス可能となる。したがって、低セキュアモードで稼働する第２のＯＳにおいては、稼働中にセキュアモードへ移行するタイミングを削減でき、仮想化による処理速度の低下を抑制できる。一方、セキュアモードで稼働する第１のＯＳにおいては、第２のＯＳと共用する第１のデバイスに対するアクセスはセキュアモードにおいて仮想化され、モードの移行に伴う処理速度の低下を抑制できる。このため、リアルタイムＯＳ（ＲＴＯＳ）などの応答速度の低下が問題になるＯＳをセキュアモードにおいて、信頼性の高い状態で稼働させることができる。
【０００８】
第１の動作条件は、低セキュアなコンピュータネットワークを含む非保安デバイスに対するアクセスを不可とすることを含み、第２の動作条件は、非保安デバイスに対するアクセスを可能とすることを含んでもよい。ハイパーバイザーは、第１の動作条件により、セキュアモードで動作する第１のＯＳがセキュリティ上、重要な非保安デバイスなどのリソースへのアクセスを不可とすることにより、さらに第１のＯＳの安全性を確保できる。また、第１の動作条件および第２の動作条件により、コンピュータネットワークへのアクセスを、例えば、第２のＯＳに固定（制約）すること可能となる。
【０００９】
ハイパーバイザーが設定する各ＯＳの動作条件により、ＯＳ毎にアクセス可能なデバイスを限定することが可能となり、デバイス側から見ると、複数動作するＯＳの中のいずれかに割り当てられ、割り当てられたＯＳからのみアクセスされるように、ハイパーバイザーが仮想環境（ＯＳの動作環境）を設定できる。したがって、各ＯＳに対してリソース（デバイス）を固定化でき、固定化することによりデバイスの共有を避け、ハイパーバイザーが共有されたデバイスをエミュレーションする機会を低減することにより、ハイパーバイザーが動作する機会を低減している。このため、本システムは、ハイパーバイザーをセキュアモードで稼働することにより仮想化の安全性を確保できるとともに、低セキュアモードで稼働するＯＳの処理速度の低下を抑制できる。
【００１０】
また、ハイパーバイザーはセキュアモードで稼働する。このため、ハイパーバイザーは、第１のＯＳおよび第２のＯＳを含む複数のＯＳを切り替えるＯＳ切替ユニットを含み、ＯＳ切替ユニットは、複数のＯＳの動作条件および複数のＯＳのコンテキストをそれぞれ保安領域に格納するユニットを含むことができる。ＯＳを切り替える際のコンテキスト（ＯＳの状態）を、いっそう安全に退避させて、確実に複数のＯＳを切り替えできる。
【００１１】
セキュアモードをサポートする支援機能の一例は、ＡＲＭ社が提供するトラストゾーン機構（ＴＺ機構）であり、ＭＩＰＳテクノロジー社が提供するＶＺ機構であり、インテル社が提供するバーチャライゼーションテクノロジー（ＶＴ）機構である。第２のＯＳの一例は、リナックス（登録商標）、アンドロイドなどの機能の高いリッチで汎用性の高いＯＳである。セキュアな第１のＯＳ（セキュアＯＳ）の一例は、組み込み制御用ソフトをサポートするリアルタイムＯＳである。
【００１２】
さらに、このシステムは、ハイパーバイザーがＯＳ起動準備ユニットを有していてもよい。ハイパーバイザーはセキュアモードで稼働するので、ＯＳ起動準備ユニットは、保安領域に格納された第２のＯＳのファームウェアを、保安領域に格納された認証情報を用いて認証する第１の認証ユニットと、保安領域に格納された認証済みの第２のＯＳのファームウェアを非保安領域のブート領域に実行用のインスタンスとして展開する展開ユニットとを含むことができる。ハイパーバイザーは、低セキュアモードで稼働する第２のＯＳからはアクセスできない（見えない）保安領域に格納された認証情報により認証済みの第２のＯＳのファームウェアを用いて第２のＯＳを起動できる。このため、第２のＯＳのファームウェアが、第２のＯＳなどの低セキュアモードで稼働するＯＳおよびアプリケーションにより改変されることを防止できる。
【００１３】
さらに、このシステムは、セキュアモードで稼働する更新ユニットを有していてもよい。セキュアモードで稼働するハイパーバイザーが更新ユニットを含んでいてもよい。更新ユニットは、非保安領域にダウンロードされた更新用のファームウェアを保安領域に格納された認証情報を用いて認証する第２の認証ユニットと、非保安領域にダウンロードされた認証済みの更新用のファームウェアを保安領域に格納する格納ユニットとを含む。更新用のファームウェアのダウンロードは第２のＯＳ上で動くアプリケーションで実行してメモリの非保安領域に格納できる。更新ユニットは、セキュアモードで稼働し、第２の認証ユニットにより非保安領域に格納された更新用のファームウェアを認証してから、格納ユニットにより更新用のファームウェアを保安領域に格納する。この処理により、保安領域に格納された認証情報により認証済みのファームウェアを保安領域に格納し、保安領域に格納した状態で使用できる。このため、更新用のファームウェアが第２のＯＳなどの低セキュアモードで稼働するＯＳおよびアプリケーションにより改変されることを防止できる。
【００１４】
第１の動作条件および第２の動作条件は非保安領域に設定された共有のメモリ領域の動作条件を含んでもよい。共有のメモリ領域を非保安領域に設定することにより、第１のＯＳおよび第２のＯＳが共有のメモリ領域にアクセスする際にハイパーバイザーが介入する機会を低減でき、ＯＳ間通信に要する時間を短縮できる。共有のメモリ領域の動作条件は、第２のＯＳが共有のメモリ領域に書き込むとセキュアモードへ移行することを含み、ハイパーバイザーは、共有のメモリ領域に書き込まれたことを第１のＯＳに通知するユニットを含み、第１のＯＳは、共有のメモリ領域に書き込むと割り込みにより第２のＯＳに通知するユニットを含んでもよい。第１のＯＳは、ハイパーバイザーを介さずに第２のＯＳに通知できるので、ハイパーバイザーの応答を待たずにリアルタイムの処理を継続できる。
【００１５】
このシステムは、メモリとプロセッシングユニットとが搭載されたシステムオンチップをそなえていてもよい。また、このシステムは、第２のＯＳ上で稼働するアプリケーションと、アプリケーションにより制御される装置とを有していてもよい。ハイパーバイザーにより、非保安なデバイスを含めて多種多様なデバイスとのアクセスが可能であり、多種多様な装置を制御するアプリケーションを第２のＯＳ上で稼働できる。装置は、プリンタ、印刷装置、製本装置、加工機械などの産業用の装置であってもよく、冷蔵庫、洗濯機、電子レンジなどの家庭用の装置であってもよく、エンジン、自動車用の制御装置であってもよい。
【００１６】
本発明の他の態様の１つは、保安領域と非保安領域とを含むメモリの保安領域へのアクセスを禁止する支援機能を含み、支援機能により保安領域へのアクセスが禁止された低セキュアモードと、保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳを制御する方法である。このシステムは、プロセッシングユニットのセキュアモードで稼働するハイパーバイザーを含み、当該方法は、以下のステップを含む。
１．  ハイパーバイザーが、セキュアモードで稼働する第１のＯＳに対して保安領域および非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定すること。
２．  ハイパーバイザーが、低セキュアモードで稼働する第２のＯＳに対して非保安領域に対するアクセスを可能とし、支援機能を用いて保安領域へのアクセスを不可とし、さらに、第１のＯＳと共用する第１のデバイスに対するアクセスによりセキュアモードに移行することを含む第２の動作条件を設定すること。
３．  ハイパーバイザーが、第２のＯＳに対し第１のデバイスを仮想化して提供すること。
【００１７】
当該方法は、さらに、ハイパーバイザーが、ＯＳの起動を準備することを含み、ＯＳの起動を準備することは、保安領域に格納された第２のＯＳのファームウェアを保安領域に格納された認証情報を用いて認証することと、保安領域に格納された認証済みの第２のＯＳのファームウェアを非保安領域のブート領域に実行用のインスタンスとして展開することとを含んでもよい。
【００１８】
当該方法は、さらに、セキュアモードで稼働する更新ユニットが、非保安領域にダウンロードされた更新用のファームウェアを保安領域に格納された認証情報を用いて認証することと、非保安領域にダウンロードされた認証済みの更新用のファームウェアを保安領域に格納することとを含んでもよい。
【００１９】
当該方法は、さらに、第２のＯＳが非保安領域に設定された共有のメモリ領域に書き込むとセキュアモードへ移行し、ハイパーバイザーが、共有のメモリ領域に書き込まれたことを第１のＯＳに通知することと、第１のＯＳが、共有のメモリ領域に書き込むと割り込みにより第２のＯＳに通知することとを含んでもよい。
【００２０】
本発明のさらに異なる他の態様の１つは、保安領域と非保安領域とを含むメモリの保安領域へのアクセスを禁止する支援機能を含み、支援機能により保安領域へのアクセスが禁止された低セキュアモードと、保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳの制御を可能とするプログラム（プログラム製品）である。このプログラム（プログラム製品）は、コンピュータが読み取り可能な記録媒体に記録して提供することができる。プログラムは、プロセッシングユニットのセキュアモードでハイパーバイザーを稼働させる命令を含み、ハイパーバイザーが、セキュアモードで稼働する第１のＯＳに対して保安領域および非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定することと、低セキュアモードで稼働する第２のＯＳに対して非保安領域に対するアクセスを可能とし、支援機能を用いて保安領域へのアクセスを不可とし、さらに、第１のＯＳと共用する第１のデバイスに対するアクセスによりセキュアモードに移行することを含む第２の動作条件を設定することと、第２のＯＳに対し第１のデバイスを仮想化して提供することとを実行する。
【図面の簡単な説明】
【００２１】
【図１】ハイパーバイザーを含む組込システムの一例を示すブロック図。
【図２】ＴＺ機構を含むプラットフォームの一例。
【図３】ハイパーバイザーによりＯＳを制御する過程を示すフローチャート。
【図４】セキュアブートの処理概要を示す図。
【図５】セキュアアップデートの処理概要を示す図。
【図６】ＯＳ間通信を行うための設定手続きを示す図。
【図７】ＯＳ間通信を行うための設定手続きの異なる例を示す図。
【発明の実施の形態】
【００２２】
図１に、ハイパーバイザーを備えたシステムの一例を示している。このシステム１は、家電製品、産業機械、プリンタ、自動車などに組み込まれるコンピュータシステムであり、典型的にはＳｏＣ（システムオンチップ）である。システム１は、プロセッサユニット１１を含むハードウェアプラットフォーム１０と、その上で稼働するハイパーバイザー２０と、ハイパーバイザー２０が提供する仮想化環境で稼働するセキュアＯＳ（第１のＯＳ）３０およびリッチＯＳ（第２のＯＳ）４１〜４３とを含む。
【００２３】
プロセッサユニット１１は、複数の実行モード（実行環境）を提供するが、本実施形態では、メモリに保安領域を設定し、その保安領域へのアクセスを禁止する支援機能（メモリ保護機能）により実現されるセキュアモード２と、セキュアモード２より保安レベルが低い低セキュアモード（以降では非セキュアモード、ノンセキュアモードまたはノーマルモードと呼ぶ）３との２つの実行モードを想定する。非セキュアモード３においてはプロセッサユニット１１の支援機能によりメモリの保安領域へのアクセスが禁止される。
【００２４】
システム１は、セキュアモード２で稼働するセキュアＯＳ３０の上（セキュアワールド）で動くトラステッドアプリケーション群３５と、非セキュアモード３で稼働するリッチＯＳ４１〜４３の上（非セキュアワールド、ノーマルワールド）で動くクライアントアプリケーション群４５とを有する。非セキュアモード３で稼働するリッチＯＳ４１〜４３などのＯＳを、以下においては非セキュア（ノンセキュア）なＯＳまたはノンセキュアＯＳと記載することがある。
【００２５】
ＩｏＴ（Internet of Things）を構成する組込システムの機能は、システムソフトウェアであるＯＳ（Operating System）およびＯＳ上のアプリケーションによって規定される。ハイパーバイザー２０は複数のＯＳ環境を構築できる。本願の出願人が提供するハイパーバイザー「ＦＯＸｖｉｓｏｒ」および「ＦＥＸＥＲＯＸ」は、プロセッサ（プロセッサユニット）１１がハードウェアとして持つ支援機構１２を用いて複数のＯＳを分離することができるベアメタルタイプ（タイプＩ）のハイパーバイザーである。
【００２６】
支援機能は、ＡＲＭ系のＩＰが組み込まれたプロセッサではＴｒｕｓｔＺｏｎｅ（以下ではＴＺ機構と呼称）を用いることができ、ＭＩＰＳ系のＩＰが組み込まれたプロセッサではＶＺ機構を用いることができ、Ｉｎｔｅｌ系のプロセッサではＶＴ機構を用いることができる。支援機能は、仮想化拡張機能を含んでいてもよく、ＡＲＭ系のＩＰが組み込まれたプロセッサではバーチャルエクステンション（Virtualization Extension）およびＬＰＡＥ（Large Physical Address Extension）を挙げることができる。
【００２７】
以降においては、支援機能（セキュア支援機能、セキュア支援機構）としてＴＺ機構１２を含んだプロセッサユニット１１を参照する。ＴＺ機構１２においては、ノーマルワールドのメモリ空間１２ａとセキュアワールドのメモリ空間１２ｂとが分離でき、ノーマルワールドからセキュアワールドのメモリ空間１２ｂが見えず、アクセスできない（アクセスが禁止された）環境を構築できる。さらに、このプロセッサユニット１１においては、メモリ空間に周辺デバイス（ペリフェラルのバッファ）やレジスタを含めたリソースがマップされる。このため、ＴＺ機構１２により、デバイスを含めたリソースの特定のアドレスに対するアクセスをトラップしてセキュアモード２に移行することが可能となる。
【００２８】
図２に、ＴｒｕｓｔＺｏｎｅｓ認定のプラットフォーム（ＳｏＣ）１０の構成を示している。プラットフォーム１０は、セキュア支援機能を備えたプロセッサ１１と、汎用のフラッシュメモリ１３ｍと、汎用ＲＡＭ１８であるＤＤＲメモリとを含む。プロセッサユニット１１は、ＴＺ機構を制御する機能を備えたＣＰＵ１１ａと、ＤＤＲメモリのコントローラ１１ｂと、ＴＺ機構のアドレス空間を制御するコントローラ１１ｃと、セキュアキーＥＰＲＯＭ１５と、セキュアブートＲＯＭ１６と、セキュアカーネルＲＡＭ１７と、スタティックメモリコントローラ１３とを含む。プラットフォーム１０においては、汎用ＲＡＭのＤＤＲメモリ１８のアドレス空間のうちの保安領域（セキュア領域）１８ａは、ＴＺ機構１２により非セキュアモード（ノーマルワールド）３ではアクセスできない領域となっている。また、セキュアキーＥＰＲＯＭ１５、セキュアブートＲＯＭ１６、およびセキュアカーネルＲＡＭ１７も保安領域であり、ＴＺ機構１２により非セキュアモード３ではアクセスできない領域となっている。このプラットフォーム１０においては、ＤＤＲメモリ１８のアドレス空間領域のうちの非保安領域（非セキュア領域）１８ｂに、複数のＯＳが共通にアクセスできる共有領域１８ｃが設定される。
【００２９】
図１に戻って、ハイパーバイザー２０は、ハイパーバイザー２０の制御により稼働する複数のＯＳの起動準備を行うＯＳ起動準備ユニット２５と、プロセッサユニット１１のリソースが不足した場合などにＯＳ切り替えを行うＯＳ切替ユニット２６と、仮想デバイスとしての機能を提供するエミュレーションユニット２７と、ＯＳ間通信をサポートするＯＳ間通信ユニット２８とを含む。ハイパーバイザー２０は、システム１が起動する際に、セキュアブートＲＯＭ１６に格納されているファームウェア（プログラム、プログラム製品）１４ｈがプロセッサユニット１１のブートローダによりロードされて起動する。
【００３０】
起動準備ユニット２５は、セキュアモード２で稼働する第１のＯＳ（セキュアＯＳ）３０の起動に際し、セキュアＯＳ３０に対してメモリの保安領域および非保安領域へのアクセスを可能とすることを含む第１の動作条件（第１のコンフィグレーション）２１を設定する第１の設定ユニット２３を含む。起動準備ユニット２５は、さらに、非セキュアモード３で稼働する第２のＯＳ（リッチＯＳ、ノンセキュアＯＳ）４１〜４３のそれぞれの起動に際し、ノンセキュアＯＳ４１〜４３のそれぞれに対して非保安領域に対するアクセスを可能とし、支援機能であるＴＺ機構１２を用いて保安領域へのアクセスを不可とする第２の動作条件（第２のコンフィグレーション）２２ａ〜２２ｃを設定する第２の設定ユニット２４ａ〜２４ｃを含む。第２のコンフィグレーション２２ａ〜２２ｃは、さらに、セキュアＯＳ３０と共用するデバイス（第１のデバイス）に対するアクセスによりセキュアモード２に移行することを含む。
【００３１】
具体的には、第１のコンフィグレーション２１は、セキュアＯＳ３０のデバイスドライバ３６に対応してハードウェアプラットフォーム１０のセキュアな資源（デバイス）を割り当て、それらの資源にアクセス可能とする。第２のコンフィグレーション２２ａ〜２２ｃは、ノンセキュアなリッチＯＳ４１〜４３のそれぞれのデバイスドライバ４６に対応してハードウェアプラットフォーム１０のノンセキュアな資源（デバイス）を割り当てて、それらにアクセス可能とする。
【００３２】
したがって、ハイパーバイザー２０が、セキュアＯＳ３０に第１のコンフィグレーション２１を適用した後に起動することにより、セキュアＯＳ３０の上で動くアプリケーション３５にはセキュアな動作環境を提供できる。また、ハイパーバイザー２０が、ノンセキュアなリッチＯＳ４１〜４３に第２のコンフィグレーション２２ａ〜２２ｃを適用した後に起動することにより、リッチＯＳ４１〜４３の上で動くアプリケーション４５にはセキュアではないが汎用性の高い動作環境を提供できる。セキュアＯＳ３０およびリッチＯＳ４１〜４３は、切り替えて稼働してもよく、マルチコアのプロセッサユニット１１であれば、セキュアＯＳ３０およびノンセキュアなリッチＯＳ４１〜４３をすべて、またはそれらの一部を並列に稼働してもよい。ノンセキュアなＯＳの一例であるリッチＯＳ（第２のＯＳ）４１〜４３は、たとえば、リナックス（登録商標）、アンドロイドなどの多種多様なアプリケーションに対応した汎用ＯＳである。
【００３３】
第１のコンフィグレーション２１は、セキュアＯＳ３０に対して、メモリのセキュアな領域（保安領域）であるセキュアキーＥＰＲＯＭ１５と、セキュアブートＲＯＭ１６と、セキュアカーネルＲＡＭ１７と、汎用ＲＡＭであるＤＤＲメモリ１８のセキュア領域１８ａとを割り当ててアクセスを可能とする。第１のコンフィグレーション２１は、さらに、第１のＯＳ３０に対して、ＤＤＲメモリ１８の非セキュア領域（非保安領域）１８ｂも割り当て、ノンセキュア領域１８ｂにアクセス可能とする。セキュアＯＳ３０のデバイスドライバ３６は、ＯＳ間通信を可能とするドライバ３６ｘを含み、第１のコンフィグレーション２１は、ドライバ３６ｘに割り当てるＯＳ間通信用の共有メモリ１８ｃのマッピング情報を含む動作条件２１ｘを含む。
【００３４】
第１のコンフィグレーション２１は、非セキュアなネットワークデバイス１９ａや、汎用インタフェースデバイス１９ｂなどの非セキュアなリソースをセキュアＯＳ３０に割り当てず、セキュアＯＳ３０およびセキュアＯＳ３０の上で動くトラステッドアプリケーション３５からこれらの非セキュアなリソースへの直接的なアクセスは禁止され、許可されない。第１のコンフィグレーション２１は、ハイパーバイザー２０が提供する仮想デバイスを用い、認証などの所定の安全性を保障する手続きを介して間接的に非セキュアなリソースにアクセスする動作条件を含んでいてもよい。
【００３５】
第２のコンフィグレーション２２ａ〜２２ｃのうち、たとえば、第２のコンフィグレーション２２ａは、汎用でノンセキュアなリッチＯＳ４１に対し、ＤＤＲメモリ１８の非セキュア領域１８ｂの固定されたアドレス領域と、ネットワークデバイス１９ａと、汎用インタフェースデバイス１９ｂに含まれる特定のデバイスを固定した状態で割り当て、ノンセキュアＯＳ４１の上で動くアプリケーション４５がこれらのデバイスに、非セキュアモード３で、すなわち、セキュアモード２に移行せずにアクセス可能とする。
【００３６】
第２のコンフィグレーション２２ａは、セキュアＯＳ３０と共用するデバイス（第１のデバイス）、例えば、ＤＭＡＣ１１ｘおよびタイマ部１１ｔに対するアクセスによりセキュアモード２に移行する。リッチＯＳ４１は、セキュアモード２で稼働するハイパーバイザー２０の提供する仮想デバイスとしてこれらのデバイスにアクセスする。プロセッサユニット１１は、リッチＯＳ４１が共用のデバイスにアクセスする特定のアドレスに対するアクセスをトラップすると、セキュアモード２に移行し、ハイパーバイザー２０のエミュレーションユニット２７は、アクセスの対象となるデバイス、アクセスしているレジスタ、ゲストＯＳであるリッチＯＳ４１の状態を解析してエミュレーションする内容を決める。
【００３７】
リッチＯＳ４１のデバイスドライバ４６は、ＯＳ間通信を可能とするドライバ４６ｘを含み、第２のコンフィグレーション２２は、ドライバ４６ｘに割り当てるＯＳ間通信用の共有メモリ１８ｃのマッピング情報を含む動作条件２２ｘを含む。
【００３８】
第２のコンフィグレーション２２ａは、ノーマルワールド（非セキュアモード）で動作する条件（環境）を提供する。第２のコンフィグレーション２２ａを設定することにより、ＴＺ機構１２によりノーマルワールドのメモリ空間１２ａによりＤＤＲメモリ１８のノンセキュア領域１８ｂにアクセスできる。しかしながら、ＴＺ機構１２により、セキュアワールドのメモリ空間１２ｂのセキュア領域１８ａなどのアドレスは見えず、リッチＯＳ４１およびこのＯＳ４１の上で動作するクライアントアプリケーション４５からセキュアキーＥＰＲＯＭ１５、セキュアブートＲＯＭ１６、セキュアカーネルＲＡＭ１７、汎用ＲＡＭのセキュア領域１８ａは見えず、これらの領域へのアクセスは許可されない。
【００３９】
ＯＳ起動準備ユニット２５は、さらに、セキュアブート（安全ブート）ユニット５０と、更新ユニット（セキュアアップデートユニット）６０とを含む。セキュアブートユニット５０は、保安領域であるセキュアブートＲＯＭ１６に格納された第２のＯＳ４１のファームウェア１４ｆを保安領域であるセキュアキーＥＰＲＯＭ１５に格納された認証情報１５ａを用いて認証する第１の認証ユニット５１と、保安領域であるセキュアブートＲＯＭ１６に格納された認証済みの第２のＯＳのファームウェア１４ｆを非保安領域であるＤＤＲメモリ１８のノンセキュア領域１８ｂのブート領域１８ｓに展開して実行用のインスタンス１４ｉを形成する展開ユニット５２とを含む。
【００４０】
実行用のインスタンス１４ｉが用意されると、ハイパーバイザー２０は、第２のＯＳ４１を起動するための第２のコンフィグレーション２２ａをセットし、非セキュアモード３に切り替える。プロセッサユニット１１のブートローダが非保安領域であるノンセキュア領域１８ｂに形成された実行用のインスタンス１４ｉをロードすることにより、第２のＯＳ４１が起動される。
【００４１】
プロセッサユニット１１がマルチコアであれば、特定のＣＰＵコアの実行モードを非セキュアモード３に切り替えて、第２のコンフィグレーション２２ａを使用して第２のＯＳ４１を起動できる。したがって、プロセッサユニット１１の中で、セキュアモード２で稼働するセキュアＯＳ３０と、非セキュアモード３で稼働する第２のＯＳ（リッチＯＳ、ノンセキュアＯＳ）４１とを並列に稼働させることが可能である。プロセッサユニット１１がシングルコアであったり、複数のＯＳを並列に稼働するためにはリソースが不足する場合には、モードを切り替えてセキュアＯＳ３０とノンセキュアＯＳ４１とを順番に起動および稼働させることも可能である。他のＯＳ４２および４３においても同様である。
【００４２】
いずれの場合も、非セキュアモード３で稼働する第２のＯＳ４１からは、自らを起動するオリジナルのファームウェア１４ｆが格納されているセキュアブートＲＯＭ１６が見えず、また、書き込めない。したがって、ノンセキュアＯＳ４１が、何等かの要因により改変されることを防止できる。
【００４３】
更新ユニット６０は、非保安領域であるノンセキュアなメモリ領域１８ｂにダウンロードされたノンセキュアなリッチＯＳ４１の更新用のファームウェア１４ｎを、保安領域であるセキュアキーＥＰＲＯＭ１５に格納された認証情報１５ｂを用いて認証する第２の認証ユニット６１と、非セキュアなメモリ領域１８ｂにダウンロードされた認証済みの更新用のファームウェア１４ｎを、保安領域であるセキュアブートＲＯＭ１６に格納する格納ユニット６２とを含む。セキュアブートＲＯＭ１６に格納する際に、あるいは格納後、以前のファームウェア１４ｆを、新たにダウンロードした更新用のファームウェア１４ｎに置き換えることにより、ノンセキュアＯＳ４１のブート用のファームウェア１４ｆを安全に更新できる。他のＯＳのファームウェアについても同様に安全に更新できる。
【００４４】
更新ユニット６０は、ハイパーバイザー２０が稼働するセキュアモード２において、第２のＯＳ４１によりダウンロードされた更新用のファームウェア１４ｎを、セキュアブート用のメモリ１６に格納する前に、セキュアな環境で、第２のＯＳ４１から見えない、書けない状態で、セキュアなメモリ１５に格納されたセキュアな認証情報１５ｂを用いて認証できる。したがって、悪意があるコードを含むファームウェアをダウンロードした場合であっても、ブート用のメモリ１６に格納するまえにセキュアな状態で確認でき、悪意のあるコードを含むファームウェアを排除できる。
【００４５】
ＯＳ切替ユニット２６は、複数のＯＳの動作条件（コンフィグレーション）および複数のＯＳのコンテキスト２６ｘをそれぞれ、メモリの保安領域、例えばＤＤＲメモリ１８の保安領域１８ａに格納するユニット２６ａを含む。コンテキスト２６ｘは、対応するＯＳの稼働状態を示す情報であり、具体的には、各ＣＰＵコアのレジスタの内容を含むものである。例えば、セキュアＯＳ３０からノンセキュアＯＳ４１に切り替える場合は、ハイパーバイザー２０が稼働するセキュアモード２において、ＯＳ切替ユニット２６が、セキュアＯＳ３０が稼働していたＣＰＵコアのレジスタの内容をコア単位で取得し、コンテキスト２６ｘを生成し、セキュアＯＳ３０のコンフィグレーション２１とともに保安領域１８ａに格納する。
【００４６】
さらに、ＯＳ切替ユニット２６は、保安領域１８ａに格納されていた（一時退避されていた）ノンセキュアＯＳ４１のコンテキスト２６ｘをロードし、ロードされたコンテキスト２６ｘに基づきＣＰＵコア毎のレジスタの内容を設定する。その後、コンフィグレーション２２ａを設定し、ノンセキュアＯＳ４１を再開するプログラムカウンタを設定する。プロセッサユニット１１は、非セキュアモード３に移行し、設定されたプログラムカウンタから処理を開始することによりノンセキュアＯＳ４１を再開できる。他のＯＳを切り替えるときも同様である。このハイパーバイザー２０においては、非セキュアモード３で稼働するＯＳ同士の切り替えであっても、セキュアモード２でＯＳ切替を行うことにより、コンテキスト２６ｘを保安領域１８ａに格納することができる。したがって、非セキュアモード３でＯＳが稼働している状態でも、一時的に退避している他のＯＳの状態が改変されることを防止でき、プロセッサユニット１１およびシステム１における処理の信頼性を向上できる。
【００４７】
ＯＳ間通信ユニット２８は、第１のコンフィグレーション２１および第２のコンフィグレーション２２ａにそれぞれ含まれるＯＳ間通信用の動作条件２１ｘおよび２２ｘに基づき行われるＯＳ間通信をセキュアモード２でサポートする。動作条件２１ｘおよび２２ｘにより設定される共有メモリ領域１８ｃは、非保安領域１８ｂ内なので、セキュアモード２で稼働するセキュアＯＳ３０も、非セキュアモード３で稼働するノンセキュアＯＳ４１においてもモードを移行せずにアクセスできる。第２のコンフィグレーション２２ａに含まれる動作条件２２ｘは、ノンセキュアＯＳ４１が共有のメモリ領域１８ｃに書き込むとセキュアモード２へ移行することを含む。セキュアモード２へ移行すると、ハイパーバイザー２０は、トラップされた条件を解析し、ＯＳ間通信ユニット２８が共有のメモリ領域１８ｃに書き込まれたことをセキュアＯＳ３０に通知する。これによりセキュアＯＳ３０が共有のメモリ領域１８ｃにアクセスする（読みだす）ことによりＯＳ間通信が成立する。
【００４８】
セキュアＯＳ３０のＯＳ間通信用のデバイスドライバ３６ｘは、共有のメモリ領域１８ｃに書き込むと、セキュアモード２から非セキュアモード３へは割り込みを用いて通知できるので、ノンセキュアＯＳ４１が並列に稼働している場合は、割り込み３６ｑによりノンセキュアＯＳ４１に通知する。ノンセキュアＯＳ４１は、非セキュアモード３で共有メモリ領域１８ｃにアクセスする（読みだす）ことによりＯＳ間通信が成立する。共有のメモリ領域１８ｃを保安領域に設けハイパーバイザー２０により完全仮想化してＯＳ間通信を実現することも可能である。しかしながら、共有のメモリ領域１８ｃを非保安領域１８ｂに設けることにより、ハイパーバイザー２０がＯＳ間通信に関する処理に関わることを抑制でき、ＯＳ間通信に要する処理時間を短縮できる。さらに、セキュアＯＳ３０が割り込みを用いて通知することにより、ハイパーバイザー２０の通知終了を待つ必要がなくなる。したがって、セキュアＯＳ３０のリアルタイム対応を妨げる要素を削減できる。
【００４９】
ハイパーバイザー２０において仮想デバイスとしての機能を提供するエミュレーションユニット２７は、仮想デバイスとして３つのパターン２７ａ、２７ｂおよび２７ｃを用意している。第１のパターン２７ａは、実デバイスの共有（共用）であり、複数のＯＳが各々に用意された仮想デバイスに対して行った制御を、ハイパーバイザー２０が調停して１つの実デバイスを制御・共有する形態（パターン）である。
【００５０】
第２のパターン２７ｂは機能追加である。このパターン２７ｂでは、ハイパーバイザー２０は、存在しないデバイス機能を、仮想デバイスを通じて複数のＯＳ（ゲストＯＳ〉に提供する形態（パターン）である。ＯＳ間通信や仮想ネットワークが該当し、これらの機能は、実在のハードウェアは存在しないが、ハイパーバイザー２０により機能が提供される。
【００５１】
第３のパターン２７ｃは、機能拡張である。機能拡張のパターン２７ｃでは、あるデバイスに対してハイパーバイザー２０が機能を追加する。例えば、「仮想シリアル」がある。ゲストＯＳが仮想シリアルに送信したデータを、ハイパーバイザー２０や他のゲストＯＳがＴＣＰ／ＩＰに変換してネットワーク上に送信することが可能となる。逆方向のデータ送信も可能であり、ハイパーバイザー２０は、ネットワークから送られて来たＴＣＰ／ＩＰのデータをゲストＯＳが仮想シリアルから受信する形でデータを読み込むことを可能にする。仮想シリアルによる、ＴＣＰ／ＩＰ変換を行うハイパーバイザー２０へのデータのシリアル送信は、具体的にはＯＳ間通信を用いて行うことができる。
【００５２】
セキュアＯＳ３０として採用されるＲＴＯＳやシンプルな組み込み用ＯＳにはＴＣＰ／ＩＰの様な複雑な機能を持たないＯＳが多く存在する。ハイパーバイザー２０やＴＣＰ／ＩＰ機能を持つ他のゲストＯＳが仮想シリアルの入出力をＴＣＰ／ＩＰの入出力に変換することにより、ＴＣＰ／ＩＰの様な複雑な機能を持たないＯＳを改修することなく、ネットワーク対応のシステムを実装することが可能となる。
【００５３】
このシステム１においては、ＯＳ起動準備、ＯＳ切替、ＯＳ間通信および仮想デバイスといった仮想化の機能を提供するハイパーバイザー２０をセキュアモード２で稼働させる。したがって、仮想化の処理、特に、セキュア側で稼働するＯＳ３０と非セキュア側で稼働するゲストＯＳ４１とに関連する仮想化の処理をセキュア側で実行することが可能となり、非セキュアな環境で稼働するゲストＯＳ４１からの干渉や攻撃の可能性を低減できる。したがって、システム１においては、外界からの干渉や攻撃に強い、安全な仮想化環境を提供できる。
【００５４】
一方、ハイパーバイザー２０がセキュアモード２で稼働することにより、非セキュアモード３で稼働するゲストＯＳ４１の処理のために仮想化が必要になると、非セキュアモード３からセキュアモード２に切り替わり、システム１の処理速度が低下する要因になる。このため、ハイパーバイザー２０は、セキュアモード２で動作するセキュアＯＳ３０の第１の動作条件（第１のコンフィグレーション）２１と、非セキュアモード３で動作するノンセキュアＯＳ４１〜４３などのゲストＯＳの第２の動作条件（第２のコンフィグレーション）２２ａ〜２２ｂとを用い、それぞれのＯＳがアクセスするリソースの範囲（デバイス）を、重複を避けて固定または制約できるようにすることによりハイパーバイザー２０が介在する機会を低減し、システム１の処理速度の低下を抑制している。
【００５５】
また、非セキュアモード３で稼働するゲストＯＳ４１〜４３の動作条件を含む第２のコンフィグレーション２２ａ〜２２ｃにおいては、メモリ保護機能であるＴＺ機構１２を用いて保安領域へのアクセスを不可とし、メモリの安全性を確保したうえで、非セキュアモード３におけるハイパーバイザー２０の介在の必要性を低減している。一方、第２のコンフィグレーション２２ａ〜２２ｃは、セキュアＯＳ３０と共用するデバイスに対するアクセスによりセキュアモード２に移行することを含め、セキュアモード２で稼働するハイパーバイザー２０が、共有のデバイスを仮想デバイスとしてそれぞれのＯＳに提供できるようにしている。
【００５６】
このシステム１において、ハイパーバイザー２０がセキュアモード２への移行および非セキュアモード３への移行を制御する。セキュアモード２へ移行は、ハイパーバイザー２０に対する明示的な切替命令であってもよく、特定のアドレスへのアクセスをトラップすることであってもよく、タイマ部１１ｔや外部ハードウェアモジュールからの割り込み信号を受信したときであってもよい。ＴＺ機構１２を提供しているＡＲＭ社のプロセッサであれば、セキュアモード２への移行を示す明示的な切替命令としてはＳＭＣ（Secure Monitor Call）を用いることができる。
【００５７】
ハイパーバイザー２０がセキュアモード２で稼働することにより、セキュアモード２で稼働するセキュアＯＳ３０、特にＲＴＯＳ３０においては、モードの切り替えなしにエミュレーションユニット２７により共有のデバイスにアクセスできる。さらに、ハイパーバイザー２０は、セキュアモード２において、準仮想化によりＲＴＯＳ３０にリソース（デバイス）、例えばＤＭＡＣ１１ｘを割り当てることが可能となり、ＲＴＯＳ３０のパフォーマンスの低下を抑制できる。
【００５８】
図３に、このシステム１においてハイパーバイザー２０が複数のＯＳを制御（管理）する過程をフローチャートにより示している。システム１が起動すると、ステップ１０１において、まず、セキュアモード２が設定される。次に、ステップ１０２において、保安領域であるブートＲＯＭ１６に格納されているハイパーバイザーのファームウェア（プログラム、プログラム製品）１４ｈがロードされ、ハイパーバイザー２０が起動される。ステップ１０３において、ハイパーバイザー２０が、第１の設定ユニット２３によりセキュアＯＳ３０用のコンフィグレーション（第１のコンフィグレーション、第１の動作条件）２１をブート時のコンフィグレーショとして設定する。ステップ１０４において、プロセッサユニット１１のブートローダが、保安領域であるブートＲＯＭ１６に格納されているセキュアＯＳのファームウェア１４ｘをロードし、セキュアＯＳ３０を起動する。
【００５９】
ステップ１０５において、ハイパーバイザー２０のセキュアブートユニット５０がノンセキュアなリッチＯＳ４１のファームウェア〈インスタンス〉１４ｉをメモリの非保安領域１８ｂのブート領域１８ｓに準備する。ステップ１０６において、ハイパーバイザー２０が、ＯＳ起動準備ユニット２５の第２の設定ユニット２４ａによりリッチＯＳ４１用のコンフィグレーション（第２のコンフィグレーション、第２の動作条件）２２ａをブート時のコンフィグレーショとして設定する。ステップ１０７でプロセッサユニット１１の実行モードを非セキュアモード３に移行し、ステップ１０８において、プロセッサユニット１１のブートローダが、非保安領域のブート領域１８ｓに格納されているリッチＯＳ４１のファームウェア１４ｉをロードし、非セキュアモード３においてリッチＯＳ４１を起動する。他のＯＳ４２および４３も同様に起動できる。非セキュアモード３において複数のＯＳ４１〜４３を制御（管理）するために、複数のＯＳ４１〜４３を起動する前に、非セキュアモード３で稼働する異なるハイパーバイザーを起動してもよい。
【００６０】
複数のＯＳ３０、４１〜４３が起動すると、それらのＯＳの上でアプリケーションが稼働できる状態となり、ステップ１０９において、システム１は稼働開始となる。稼働中に、ステップ１１０において、リッチＯＳ４１でセキュアＯＳ３０との共用デバイスに対するアクセスが発生すると、プロセッサユニット１１はステップ１１１においてセキュアモード２に移行する。ハイパーバイザー２０のエミュレーションユニット２７は、ステップ１１２において、共用デバイスに対する処理をエミュレーション（シミュレーション）し、その結果をメモリの適当な、あるいは予め決められた非保安領域１８ｂに格納することにより、共用のデバイスへのアクセスを仮想化環境で実行する。ステップ１１３で、プロセッサユニット１１を非セキュアモード３に移行し、リッチＯＳ４１は処理を継続する。
【００６１】
ステップ１１４において、割り込みあるいはスケジューリングなどによりＯＳの切り替えが発生すると、ステップ１１５において、プロセッサユニット１１をセキュアモード２に移行し、ステップ１１６において、ハイパーバイザー２０のＯＳ切替ユニット２６がＯＳ切替処理を行う。具体的には、稼働していたリッチＯＳ４１の状態、具体的には各ＣＰＵコアのレジスタの内容を含むコンテキスト２６ｘをメモリの保安領域１８ａに退避する。切り替え後のＯＳのコンテキスト２６ｘをメモリの保安領域１８ａからロードし、各ＣＰＵコアのレジスタの内容を書き換える。切り替え後のＯＳが、例えばリッチＯＳ４２であれば、ステップ１１７において、プロセッサユニット１１を非セキュアモード３に移行し、リッチＯＳ４２を再稼働（再起動）させる。切り替え後のＯＳが、セキュアＯＳ３０であれば、ステップ１１７のモード切り替えを行わずに、セキュアＯＳを再稼働する。
【００６２】
ステップ１１８において、ＯＳ間通信が必要になると、ステップ１１９において、メモリの非保安領域１８ｂに設定された共有領域１８ｃを用いてＯＳ間通信処理を行う。この処理については、後でさらに詳しく説明する。
【００６３】
ステップ１２０において、リッチＯＳ４１が、非セキュアモード３において、コンピュータネットワークデバイス（ネットワークインターフェイス）１９ａなどに介してファームウェアの更新があることを検出すると更新データをロードする。ステップ１２１において、更新ユニット６０がファームウェアの更新処理を行う。この処理については、後にさらに詳しく説明する。ステップ１２２において、システム１が稼働中であれば、上記の処理を繰り返す。
【００６４】
図４に、ハイパーバイザー２０のセキュアブートユニット５０が、汎用でノンセキュアなリッチな第２のＯＳ４１を安全に起動（セキュアブート）の準備を行う過程を示している。図４（ａ）はフローチャートで起動過程を示し、図４（ｂ）〜（ｅ）は、ハイパーバイザー２０が、ハードウェアがサポートする支援機能、本例では、ＴＺ機構１２を用いてメモリ領域へのアクセスを許可および制限する様子を模式的に示している。なお、図３に示したシステム１の起動過程と重複している箇所はステップの番号をカッコに入れて示している。
【００６５】
ステップ５４において、システム１が起動すると、プロセッサユニット１１では、まず、セキュアモード２がセットされ、ハイパーバイザー２０が起動する。ステップ５５においては、セキュアモード２の状態で稼働するハイパーバイザー２０のＯＳ起動準備ユニット２５に設けられたセキュアブートユニット５０の認証ユニット５１が、保安領域のセキュアＲＯＭであるセキュアブートＲＯＭ１６に格納された第２のＯＳ４１のファームウェア１４ｆの認証処理を、保安領域のセキュアＲＯＭであるセキュアキーＥＰＲＯＭ１５に格納された認証情報１５ａを用いて行う（図４（ｂ））。
【００６６】
ステップ５６において、セキュアブートユニット５０の展開ユニット５２が、ステップ５５で認証されたファームウェア１４ｆを、非保安領域のＤＤＲメモリ１８のノンセキュア領域１８ｂのブート領域１８ｓに展開して復号し、第２のＯＳ４１のファームウェアの実行用のインスタンス１４ｉを形成する（図４（ｃ））。
【００６７】
ステップ５７において、ハイパーバイザー２０が、プロセッサユニット１１の状態をセキュアモード２から、非セキュアモード（ノーマルモード）３へ移行する。この環境では、セキュアＲＯＭ１６は見えず、アクセスが不可能になり、ノーマルＲＡＭ１８ｂおよびネットワーク１９ａにアクセスが可能となる（図４（ｄ））。
【００６８】
ステップ５８において、第２のＯＳ４１の起動処理（ブート）が行われる。ノーマルＲＡＭ１８ｂに形成された第２のＯＳ４１のファームウェアの実行用のインスタンス１４ｉがプロセッサユニット１１のブートローダによりロードされ第２のＯＳ４１が起動する（図４（ｅ））。第２のＯＳ４１は、ハイパーバイザー２０の第２の設定ユニット２４ａがブートコンフィグレーションとして設定した第２のコンフィグレーション２２ａにより定義された環境で起動され、稼働する。したがって、第２のＯＳ４１およびその上で動くクライアントアプリケーション４５からは、第２ンコンフィグレーション２２ａでアクセス可能とされているノーマルＲＡＭ１８ｂおよびネットワーク１９ａにアクセスできる。一方、ノーマルモード（非セキュアモード）３で稼働するので、ＴＺ機構１２によりセキュアＲＯＭ１６は見えず、アクセスも不可能である。このため、第２のＯＳ４１が管理している環境からは自らが起動するファームウェア１４ｆが格納されたセキュアＲＯＭ１６は見えず、書き込むこともできない。したがって、第２のＯＳ４１の上で稼働するアプリケーション群４５がファームウェア１４ｆを攻撃したり、改変したりすることは不可能であり、第２のＯＳ４１の安全性を担保できる。
【００６９】
図５に、セキュアモード２で稼働するハイパーバイザー２０に含まれる更新ユニット６０が、汎用のリッチな第２のＯＳ４１を安全に更新（セキュアアップデート）する様子を示している。この更新ユニット６０は、セキュアＯＳ３０の上で稼働するアプリケーションとして提供することも可能である。図５（ａ）は、図３に示した更新処理１２１をさらに具体的に示すフローチャートであり、図５（ｂ）〜（ｄ）は、更新処理中に、ハードウェアがサポートするメモリ保護用の支援機能、本例では、ＴＺ機構１２を用いてメモリ領域へのアクセスを許可および制限する様子を模式的に示している。
【００７０】
ステップ６５はノーマルモード（非セキュアモード）３において行われる処理であり、ノーマルモード状態のプロセッサユニット１１で稼働する第２のＯＳ（ノンセキュアＯＳ）４１が、ネットワークインターフェイス１９ａから外部ネットワークにアクセスして第２のＯＳ４１の更新用のファームウェア１４ｎがあると、ノーマルＲＡＭ１８ｂに更新用のファームウェア１４ｎをダウンロードする。この実行環境では、ＴＺ機構１２により第２のＯＳ４１からセキュアＲＯＭ１６は見えず、セキュアＲＯＭ１６が外部からの攻撃にさらされることはない（図５（ｂ））。
【００７１】
その後、適当なタイミング、例えば、システム１が起動するとき、システム１がシャットダウンされるとき、その他の要因でプロセッサユニット１１の実行モードがセキュアモード２に切り替わったときに（ステップ６６）、セキュアモード２でハイパーバイザー２０が稼働し、ステップ６７において、更新ユニット６０の認証ユニット６１が、ノーマルＲＡＭ１８ｂにダウンロードされているファームウェア１４ｎを、保安領域であるセキュアキーＥＰＲＯＭ１５に格納されている認証情報１５ｂを用いて認証する（図５（ｃ））。
【００７２】
ノーマルＲＡＭ１８ｂの更新用のファームウェア１４ｎが認証されると、ステップ６８において、更新ユニット６０の格納ユニット６２が、ノーマルＲＡＭ１８ｂの更新用のファームウェア１４ｎをセキュアＲＯＭであるセキュアブートＲＯＭ１６に格納し、必要があれば、セキュアブートＲＯＭ１６に格納されていたファームウェア１４ｆを更新されたファームウェア１４ｎに置き換える（図５（ｄ））。また、必要があれば、ノーマルＲＡＭ１８ｂにダウンロードされた更新用のファームウェア１４ｎを破棄する。
【００７３】
更新ユニット６０はセキュアモード２で稼働するので、非セキュアなノーマルモード３で稼働するノンセキュアなリッチＯＳなどの第２のＯＳ４１から遮断され、安全性が担保されないネットワークなどの非セキュアなデバイスから攻撃を受けることはない。また、非セキュアモード３ではアクセスされない保安領域のセキュアキーＥＰＲＯＭ１５に格納されている認証情報１５ｂを用いてダウンロードされたファームウェア１４ｎを認証することにより不法な改変が行われたコンテンツを排除できる。したがって、更新ユニット６０により、悪意のあるコンテンツなどでセキュアなメモリ領域が汚染されることを防止できる。このため、安全に保安領域のセキュアブートＲＯＭ１６に格納されている第２のＯＳ４１のファームウェアを更新でき、その後、上述したセキュアブートユニット５０により安全に、第２のＯＳ４１を起動できる。
【００７４】
図６に、ＯＳ間通信処理１１９を行うための手続きをタイミングチャートにより示している。２つのＯＳ、たとえば、セキュアＯＳ３０と、ノンセキュアＯＳ４１とをほぼ同時に起動したことを想定しているが、時間差で起動してもよい。また、図６に示した処理では、それぞれのＯＳ３０およびＯＳ４１のそれぞれのコンフィグレーション２１および２２ａに含まれる共有メモリ領域の動作条件２１ｘおよびお２２ｘが参照され、非保安領域に設定された共有メモリ１８ｃを介してＯＳ間通信を行う。
【００７５】
ハイパーバイザー２０で仮想化された環境で複数のＯＳが稼働するシステム１においては、マルチＯＳ環境上でのリアルタイム性が要望されており、効率のよいＯＳ間通信を実装することが求められている。ハイパーバイザー２０を介して実行されるＯＳ間通信の一例は、ハイパーバイザー２０がすべての処理を仲介するものである。本例のハイパーバイザー２０がこのような処理レベルのＯＳ間通信を担当することも可能である。ＯＳ間通信を実現する上で必要となる基本的な機能は以下の通りである。
・データ送信処理
・データ受信処理
・データ受信通知処理
・データ送信完了通知
【００７６】
ハイパーバイザー２０がすべての処理を仲介する場合、データの送信は、稼働中のあるＯＳ、たとえば、ゲストＯＳａが自発的にハイパーバイザー２０を呼び出して実行される。送信データを受け取ったハイパーバイザー２０は自身が管理する送信先の他のＯＳ、たとえばゲストＯＳｂの受信領域に送信データをコピーする。データ受信通知は、データ送信処理完了後にハイパーバイザー２０内で実行され、通知は送信先のゲストＯＳｂに対して特定の割り込みを発生させることで実現する。データ受信処理は、割り込み信号という形でデータ受信を認識したゲストＯＳｂがハイパーバイザー２０に対して受信データの取得を依頼する。このとき、ハイパーバイザー２０は受信データを依頼元のゲストＯＳｂのメモリ領域に対してコピーを行う（読み出し）。送信先のゲストＯＳｂがデータを受信するとハイパーバイザー２０は送信元のゲストＯＳａに対して送信完了のイベントを通知する。データ受信通知と同様、この通知も割り込み信号を使いゲストＯＳａへ通知される。本通知を持って送信元のゲストＯＳａは次のデータが送信可能になったと認識する。
【００７７】
このＯＳ間通信処理においては、ハイパーバイザー２０がゲストＯＳから依頼された通信処理を実行している間、通信を依頼したゲストＯＳはハイパーバイザー２０の処理が終わるまで停止状態となる。これはゲストＯＳとハイパーバイザー２０とが同じプロセッサ上で実行されている状況では避けられない仕様となる。ゲストＯＳが停止状態となる時間は数１０マイクロ秒であり、ゲストＯＳがリナックス（登録商標）やアンドロイドの場合では問題とされることはほとんどない。しかしながら、ゲストＯＳとしてリアルタイムＯＳ（ＲＴＯＳ）を実行している場合には問題になることが予想される。また、セキュアモード２で稼働するハイパーバイザー２０において、非セキュアモード３で稼働するゲストＯＳ４１および４２の間、非セキュアモード３で稼働するゲストＯＳ４１とセキュアモード２で稼働するセキュアＯＳ３０との間の通信を行おうとすると、プロセッサユニット１１の実行モードをセキュアと非セキュアとに切り替える必要があり、そのために通信に関与するＯＳの停止時間が長くなる可能性がある。
【００７８】
一般的にＲＴＯＳは、発生したイベントに対して一定時間内に処理を実行する事が要求されるシステムであり、主な用途として機械制御が挙げられる。この様に時間的な制約が強い制御システムにおいて数十マイクロ秒でも停止することは、致命的な欠陥となる可能性が高い。機械制御を例にすると、ＯＳ間通信の処理を実行中に機械の緊急停止が必要となる何らかのイベントが発生した場合、ＯＳ間通信処理が完了しないとＲＴＯＳは緊急停止処理が実行できない状態となる。
【００７９】
本例のシステム１では、ハイパーバイザー２０でゲストＯＳ間の通信に共有メモリを設定することにより、ゲストＯＳが停止しない、あるいは停止する時間が短縮されるＯＳ間通信機能を提供する。このＯＳ間通信機能においては、ハイパーバイザー２０の介入は極力制限される。ＯＳの起動時は、ハイパーバイザー２０が介入して各ＯＳ間の調停や初期化処理を実行し、ＯＳ間通信処理においては、起動しているＯＳ（ゲストＯＳ）のみでほとんどの処理を実行し、ハイパーバイザー２０は極力介入しない。ＯＳの起動時においてはハイパーバイザー２０が介入するためゲストＯＳの停止状態が発生するが、この状況はシステム１が運用状態に入る前、または対応するＯＳが運用状態に入る前なので問題としない。
【００８０】
ＯＳ間通信にハイパーバイザー２０の介入を排除することで、ＯＳ間通信処理の大部分がゲストＯＳ同士の制御下で実行される。これにより、ＲＴＯＳではＯＳ間通信処理中に緊急を要する状況が発生したとき、速やかにＯＳ間通信処理を中断して緊急処理を実行することが可能になる。
【００８１】
このシステム１において、ＯＳ間通信処理を行うために設定される共有メモリ領域１８ｃの情報（マッピング情報を含む）は、動作条件２１ｘおよび２２ｘとしてそれぞれのＯＳ３０、４１〜４３を起動する際のコンフィグレーション２１および２２ａ〜２２ｃに含めることができ、ハイパーバイザー２０が起動準備を行い、各ＯＳ３０、４１〜４３の起動時に割り当てる（マッピングする）ことができる。共有メモリ領域１８ｃは、ハイパーバイザー２０が予め設定してもよく、いずれかのＯＳが設定した情報をハイパーバイザー２０がコンフィグレーション２１または２２ａ〜２２ｃのいずれかに含めて他のＯＳが使用可能にしてもよい。
【００８２】
ＯＳ間通信処理が使用する送受信領域として共有メモリ領域１８ｃを使うことで、非セキュアモード３で稼働するＯＳ同士であれば、または、セキュアモード２で稼働するＯＳ同士であれば初期設定以外に、ＯＳ間通信処理に関するハイパーバイザー２０の介入を排除、または最小限に止めることができる。非セキュアモード３で稼働する第２のＯＳ、例えばノンセキュアＯＳ４１と、セキュアモード２で稼働するセキュアＯＳ３０との間の通信では、非セキュア側からセキュア側に通知する際にハイパーバイザー２０が関与するが、それ以外はハイパーバイザー２０の介入を排除、または最小限に止めることができる。
【００８３】
図６は、ハイパーバイザー２０が共有メモリ領域１８ｃを用意している場合に、ゲストＯＳを起動する過程でＯＳ間通信処理の設定を行う手続きを示している。ゲストＯＳは、たとえば、セキュアモード２で動作するセキュアＯＳ（ＲＴＯＳ）３０と、ノンセキュアモード３で動作するノンセキュアＯＳ４１とである。ノンセキュアなメモリ領域（非保安領域）１８に共有メモリ領域１８ｃを設定することにより、セキュアモード２で動作するＯＳ３０と、非セキュアモード３で動作するノンセキュアＯＳ４１との両ＯＳから共有メモリ領域１８ｃへアクセスできるので、リアルタイム性の高いＯＳ間通信を実現できる。
【００８４】
ハイパーバイザー２０は、ステップ７１において通信路の初期化処理を行う。この初期化処理では、共有メモリ領域１８ｃ、ＯＳ間通信に用いる割り込み番号の補足を行い、通信路状態を初期化する。次に、ステップ７２において各ゲストＯＳ、この例では、セキュアＯＳ３０とノンセキュアＯＳ４１とを起動する。これらのＯＳは同時に起動してもよく、順番に起動してもよい。
【００８５】
セキュアＯＳ３０においては、ステップ７３ａにおいてＯＳ間通信ドライバ３６ｘの初期化処理を開始する。ステップ７４ａにおいて、セキュアＯＳ３０はブート時にデバイス情報を取得してハイパーバイザー２０に提供し、ハイパーバイザー２０から共有メモリ領域情報を含むコンフィグレーション（第１のコンフィグレーション）２１を受け取る。ステップ７５ａにおいて、共有メモリ領域のマッピング、割り込みハンドラの登録を含めたデバイスドライバ３６の設定を行い、セキュアＯＳ３０の運用を開始する。
【００８６】
ノンセキュアＯＳ４１においても同様であり、ステップ７３ｂにおいてＯＳ間通信ドライバ４６ｘの初期化処理を開始する。ステップ７４ｂにおいて、デバイス情報を取得してハイパーバイザー２０に提供し、ハイパーバイザー２０から共有メモリ領域情報を含むコンフィグレーション（第２のコンフィグレーション）２２ａを受け取る。ステップ７５ｂにおいて、共有メモリ領域のマッピング、割り込みハンドラの登録を含めたデバイスドライバ４６の設定を行い、ノンセキュアＯＳ４１の運用を開始する。ただし、このケースでは、ノンセキュアＯＳ４１はセキュアモード２で稼働するセキュアＯＳ３０に対して通知を出力する必要がある。したがって、ステップ７５ｂにおいては、ハイパーバイザー２０を介してセキュアＯＳ３０に対して通知を出力するように設定する。
【００８７】
ハイパーバイザー２０は、ステップ７６において、全てのゲストＯＳがＯＳ間通信に関する情報を取得した時点で、通信路を通信可能状態に設定する。これにより、以降は、ノンセキュアＯＳ４１からセキュアＯＳ３０へ通知するときを除き、ハイパーバイザー２０が関与せずに、セキュアＯＳ３０およびノンセキュアＯＳ４１の間でＯＳ間通信処理が行われる（ステップ７７）。ノンセキュアＯＳ４１および４２の間のＯＳ間通信処理であれば、ハイパーバイザー２０が関与せずにＯＳ間通信処理が行われる。
【００８８】
共有メモリ領域１８ｃは通信を行うセキュアＯＳ３０およびノンセキュアＯＳ４１から参照可能であり、セキュアＯＳ３０およびノンセキュアＯＳ４１では互いの送受信データが直接参照可能である。これにより、ハイパーバイザー２０がデータ転送（データ入出力）を含めて介入するＯＳ間通信処理に対し、このＯＳ間通信処理ではデータの入出力をセキュアＯＳ３０およびノンセキュアＯＳ４１が行い、その部分を各ＯＳに実装することが可能となる。ハイパーバイザー２０は、初期化処理の中でセキュアＯＳ３０およびノンセキュアＯＳ４１に対し、共有メモリ１８ｃに関する情報の提供や、共有メモリ領域を確保／構築する役割を担う。
【００８９】
ＯＳ間通信処理において、セキュアＯＳ３０およびノンセキュアＯＳ４１は、データの送受信処理を実行した後、通信先のＯＳへデータ受信や送信完了を通知する。セキュアＯＳ３０からノンセキュアＯＳ４１に対する通知は割り込み信号３６ｑを使う。したがって、セキュアＯＳ（ＲＴＯＳ）３０は、ハイパーバイザー２０の処理の終了を待つ必要がなく、ＯＳ間通信処理で停止することなく、処理を継続できる。
【００９０】
一方、ノンセキュアＯＳ４１からセキュアＯＳ３０への通知は非セキュアモード３からセキュアモード２への移行が必要になるのでハイパーバイザー２０のＯＳ間通信ユニット２８が関与する。したがって、ノンセキュアＯＳ４１の処理は、この間停止することになるが、上述したようにノンセキュアＯＳ４１において数１０マイクロ秒程度の停止が問題となることはない。また、非セキュアモード３で稼働するＯＳ４１および４２同士であれば、それぞれのＯＳの割り込みコントローラを直接制御することでハイパーバイザー２０の介入が排除可能である。ハイパーバイザー２０は、コンフィグレーション２１および２２ａ〜２２ｃに共有メモリの動作条件２１ｘ、２２ｘを含めて各ＯＳ３０および４１〜４３に対し、ＯＳ間通信の通知に利用する割り込みの設定や、その情報を各ＯＳ３０および４１〜４３へ通知する役割を担う。
【００９１】
図７にゲストＯＳが共有メモリ領域１８ｃを用意する場合を示している。この例では、非セキュアモード３で稼働するノンセキュアＯＳ４１が共有メモリ領域１８ｃを用意し、その情報をハイパーバイザー２０がセキュアＯＳ３０に受け渡してＯＳ間通信を実現する。
【００９２】
図６に示した手続きに対し、ハイパーバイザー２０がセキュアＯＳ３０およびノンセキュアＯＳ４１の起動を準備し、それぞれのコンフィグレーション２１および２２ａを提供する処理までは共通するが、初期に設定されるコンフィグレーション２１および２２ａには共有メモリ領域の情報が含まれていない。ノンセキュアＯＳ４１は、コンフィグレーション２２ａに基づいてデバイスドライバ４６を設定し、割り込みハンドラの登録も行う（ステップ７８ｂ）。さらに、ステップ７９において、共有メモリ領域１８ｃを補足後、その共有メモリ領域１８ｃをハイパーバイザー２０に対してＯＳ間通信用に登録することを要求する。
【００９３】
ハイパーバイザー２０は、ステップ８０において、共有メモリ領域１８ｃを登録し、通信路を通信可能に設定する。また、ステップ８１において、ノンセキュアＯＳ４１ら通知された共有メモリ領域１８ｃを他のゲストＯＳであるセキュアＯＳ３０からアクセス可能に設定する。すなわち、共有メモリ領域の情報２１ｘをセキュアＯＳ３０に通知する。
【００９４】
セキュアＯＳ３０においては、ハイパーバイザー２０から提供されたコンフィグレーション２１により割り込みハンドラを含めたデバイスドライバの設定を行う（ステップ７８ａ）。さらに、ハイパーバイザー２０から共有メモリ領域の情報２１ｘが提供されると、ステップ８２において、共有メモリ領域１８ｃをマッピングし、共有メモリ領域１８ｃを用いたＯＳ間通信を可能とする。この後、これらのＯＳの間でＯＳ間通信が可能となる（ステップ７７）。
【００９５】
上述したように、非セキュアモード３で稼働するゲストＯＳ同士であれば直接割り込みコントローラを制御する。セキュアモード２で稼働するＯＳ３０と、非セキュアモード３で稼働するＯＳ４１との間の通信においては、セキュリティ面での考慮により、非セキュアモード３のＯＳ４１からセキュアモード２のＯＳ３０への通知処理のみをハイパーバイザー２０に依頼することによりセキュリティを犠牲にすることなく、ＯＳ間通信に要する処理時間を短縮できる。
【００９６】
上記の例はセキュアな環境を支援するためにＴＺ機構が組み込まれたプロセッサ１１を例に説明したが、ＶＺ機構またはＶＴ機構が組み込まれたプロセッサにおいても同様にセキュアブート、セキュアアップデートを実現できる。ＶＺ機構またはＶＴ機構においては、ルートモード状態がセキュアモード状態に対応し、ゲストモード状態がノーマルモード状態（非セキュアモード状態）に対応する。
【００９７】
ＲＴＯＳ３０は、セキュアな環境で動作するＯＳの一例であり、リナックス（登録商標）などのリッチなＯＳをセキュアな環境で動作させてもよく、その他の埋め込み型のＯＳ、例えば、イベントドリブン型や、ノンプリエンプティブ（non-preemptive）型のスケジューラを持つマルチタスク型の埋め込みＯＳ（multitasking embedded operating system）であってもよい。
【００９８】
以上に説明したように、システム１が含むハイパーバイザー２０は、セキュアな環境でＯＳ３０を起動する第１の動作条件（第１のコンフィグレーション）と、非セキュアな環境でＯＳ４１〜４３を起動する第２の動作条件（第２のコンフィグレーション）とを含み、複数のＯＳを異なる環境で動かすことができるベアメタルタイプのハイパーバイザーである。このハイパーバイザー２０は、コンパクトで、ハイパーバイザー２０の稼働にようするＣＰＵ負荷が非常に低く、１％程度あるいはそれ以下を実現でき、ＣＰＵ（プロセッシングユニット、プロセッサ）の使用効率が良い。したがって、ハイパーバイザー２０を備えたシステム、特に、ＳｏＣなどの組込システムは、性能がそれほど高くないＣＰＵを用いたシステムであってもセキュアな環境で様々なクライアントアプリケーション４５を動かすことができる。このため、ハイパーバイザー２０を含む組込システム１によりクライアントアプリケーション４５が制御する様々な装置、例えば、スマート家電、ヘルスウェア機器、ＨＥＭＳ，スマートメータ、プリンタなどのコンシューマ向けの周辺機器、さらに車載コンピューティング環境においてセキュアな環境を低コストで提供できる。
【図１】
2017034008.tif 000003
【図２】
2017034008.tif 000004
【図３】
2017034008.tif 000005
【図４】
2017034008.tif 000006
【図５】
2017034008.tif 000007
【図６】
2017034008.tif 000008
【図７】
2017034008.tif 000009
【手続補正書】
【提出日】平成29年2月20日(2017.2.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、ハイパーバイザーはセキュアモードで稼働する。このため、ハイパーバイザーは、第１のＯＳおよび第２のＯＳを含む複数のＯＳを切り替えるＯＳ切替ユニットを含み、ＯＳ切替ユニットは、複数のＯＳの動作条件および複数のＯＳのコンテキストをそれぞれ保安領域に格納するユニットを含む。ＯＳを切り替える際のコンテキスト（ＯＳの状態）を、いっそう安全に退避させて、確実に複数のＯＳを切り替えできる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００９８
【補正方法】変更
【補正の内容】
【００９８】
以上に説明したように、システム１が含むハイパーバイザー２０は、セキュアな環境でＯＳ３０を起動する第１の動作条件（第１のコンフィグレーション）と、非セキュアな環境でＯＳ４１〜４３を起動する第２の動作条件（第２のコンフィグレーション）とを含み、複数のＯＳを異なる環境で動かすことができるベアメタルタイプのハイパーバイザーである。このハイパーバイザー２０は、コンパクトで、ハイパーバイザー２０の稼働にようするＣＰＵ負荷が非常に低く、１％程度あるいはそれ以下を実現でき、ＣＰＵ（プロセッシングユニット、プロセッサ）の使用効率が良い。したがって、ハイパーバイザー２０を備えたシステム、特に、ＳｏＣなどの組込システムは、性能がそれほど高くないＣＰＵを用いたシステムであってもセキュアな環境で様々なクライアントアプリケーション４５を動かすことができる。このため、ハイパーバイザー２０を含む組込システム１によりクライアントアプリケーション４５が制御する様々な装置、例えば、スマート家電、ヘルスウェア機器、ＨＥＭＳ，スマートメータ、プリンタなどのコンシューマ向けの周辺機器、さらに車載コンピューティング環境においてセキュアな環境を低コストで提供できる。
本明細書には、保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットと、前記プロセッシングユニットの前記セキュアモードで稼働するハイパーバイザーとを有するシステムが開示されている。前記ハイパーバイザーは、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定する第１の設定ユニットと、前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定する第２の設定ユニットと、前記第２のＯＳに対し前記第１のデバイスを仮想化して提供するエミュレーションユニットとを含む。
上記のシステムにおいて、前記第１の動作条件は、低セキュアなコンピュータネットワークを含む非保安デバイスに対するアクセスを不可とすることを含み、前記第２の動作条件は、前記非保安デバイスに対するアクセスを可能とすることを含んでもよい。また、上記のシステムにおいて、前記ハイパーバイザーは、前記第１のＯＳおよび前記第２のＯＳを含む複数のＯＳを切り替えるＯＳ切替ユニットを含み、前記ＯＳ切替ユニットは、前記複数のＯＳの動作条件および前記複数のＯＳのコンテキストをそれぞれ前記保安領域に格納するユニットを含んでもよい。また、上記システムにおいて、前記ハイパーバイザーは、ＯＳ起動準備ユニットを有し、前記ＯＳ起動準備ユニットは、前記保安領域に格納された前記第２のＯＳのファームウェアを前記保安領域に格納された認証情報を用いて認証する第１の認証ユニットと、前記保安領域に格納された認証済みの前記第２のＯＳのファームウェアを前記非保安領域のブート領域に実行用のインスタンスとして展開する展開ユニットとを含んでもよい。このシステムは、さらに、前記セキュアモードで稼働する更新ユニットを有し、前記更新ユニットは、前記非保安領域にダウンロードされた更新用のファームウェアを前記保安領域に格納された認証情報を用いて認証する第２の認証ユニットと、前記非保安領域にダウンロードされた認証済みの前記更新用のファームウェアを前記保安領域に格納する格納ユニットとを含んでもよい。
また、上記システムの、前記第１の動作条件および前記第２の動作条件は前記非保安領域に設定された共有のメモリ領域の動作条件を含んでもよい。前記共有のメモリ領域の動作条件は、前記第２のＯＳが前記共有のメモリ領域に書き込むと前記セキュアモードへ移行することを含み、前記ハイパーバイザーは、前記共有のメモリ領域に書き込まれたことを前記第１のＯＳに通知するユニットを含み、前記第１のＯＳは、前記共有のメモリ領域に書き込むと割り込みにより前記第２のＯＳに通知するユニットを含んでもよい。
上記のシステムは、前記メモリと前記プロセッシングユニットとが搭載されたシステムオンチップを有していてもよく、さらに、前記第２のＯＳ上で稼働するアプリケーションと、前記アプリケーションにより制御される装置とを有していてもよい。
また、本明細書には、保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳを制御する方法が開示されている。前記システムは、前記プロセッシングユニットの前記セキュアモードで稼働するハイパーバイザーを含み、当該方法は、前記ハイパーバイザーが、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定することと、前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定することと、前記第２のＯＳに対し前記第１のデバイスを仮想化して提供することとを含む。
この方法は、さらに、前記ハイパーバイザーが、前記第１のＯＳおよび前記第２のＯＳを含む前記複数のＯＳを切り替えることを含み、前記ＯＳを切り替えることは、前記複数のＯＳの動作条件および前記複数のＯＳのコンテキストをそれぞれ前記保安領域に格納することを含んでもよい。この方法は、さらに、前記ハイパーバイザーが、ＯＳの起動を準備することを含み、前記ＯＳの起動を準備することは、前記保安領域に格納された前記第２のＯＳのファームウェアを前記保安領域に格納された認証情報を用いて認証することと、前記保安領域に格納された認証済みの前記第２のＯＳのファームウェアを前記非保安領域のブート領域に実行用のインスタンスとして展開することとを含んでもよい。
さらに、前記システムは、前記セキュアモードで稼働する更新ユニットを含んでもよく、当該方法は、前記更新ユニットが、前記非保安領域にダウンロードされた更新用のファームウェアを前記保安領域に格納された認証情報を用いて認証することと、前記非保安領域にダウンロードされた認証済みの前記更新用のファームウェアを前記保安領域に格納することとを含んでもよい。前記第１の動作条件および前記第２の動作条件は前記非保安領域に設定された共有のメモリ領域の動作条件を含んでもよく、当該方法は、前記第２のＯＳが前記共有のメモリ領域に書き込むと前記セキュアモードへ移行し、前記ハイパーバイザーが、前記共有のメモリ領域に書き込まれたことを前記第１のＯＳに通知することと、前記第１のＯＳが、前記共有のメモリ領域に書き込むと割り込みにより前記第２のＯＳに通知することとを含んでもよい。
また、本明細書には、保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳの制御を可能とするプログラムが開示されている。このプログラムは、前記プロセッシングユニットの前記セキュアモードでハイパーバイザーを稼働させる命令を含み、前記ハイパーバイザーが、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定することと、前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定することと、前記第２のＯＳに対し前記第１のデバイスを仮想化して提供することとを実行する。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットと、
前記プロセッシングユニットの前記セキュアモードで稼働するハイパーバイザーとを有するシステムであって、
前記ハイパーバイザーは、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定する第１の設定ユニットと、
前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定する第２の設定ユニットと、
前記第２のＯＳに対し前記第１のデバイスを仮想化して提供するエミュレーションユニットとを含み、さらに、
前記ハイパーバイザーは、前記第１のＯＳおよび前記第２のＯＳを含む複数のＯＳを切り替えるＯＳ切替ユニットを含み、前記ＯＳ切替ユニットは、前記複数のＯＳの動作条件および前記複数のＯＳのコンテキストをそれぞれ前記保安領域に格納するユニットを含む、システム。
【請求項２】
請求項１において、
前記第１の動作条件は、低セキュアなコンピュータネットワークを含む非保安デバイスに対するアクセスを不可とすることを含み、前記第２の動作条件は、前記非保安デバイスに対するアクセスを可能とすることを含む、システム。
【請求項３】
請求項１または２において、
前記ハイパーバイザーは、ＯＳ起動準備ユニットを有し、
前記ＯＳ起動準備ユニットは、前記保安領域に格納された前記第２のＯＳのファームウェアを前記保安領域に格納された認証情報を用いて認証する第１の認証ユニットと、
前記保安領域に格納された認証済みの前記第２のＯＳのファームウェアを前記非保安領域のブート領域に実行用のインスタンスとして展開する展開ユニットとを含む、システム。
【請求項４】
請求項３において、
さらに、前記セキュアモードで稼働する更新ユニットを有し、
前記更新ユニットは、前記非保安領域にダウンロードされた更新用のファームウェアを前記保安領域に格納された認証情報を用いて認証する第２の認証ユニットと、
前記非保安領域にダウンロードされた認証済みの前記更新用のファームウェアを前記保安領域に格納する格納ユニットとを含む、システム。
【請求項５】
請求項１ないし４のいずれかにおいて、
前記第１の動作条件および前記第２の動作条件は前記非保安領域に設定された共有のメモリ領域の動作条件を含む、システム。
【請求項６】
請求項５において、
前記共有のメモリ領域の動作条件は、前記第２のＯＳが前記共有のメモリ領域に書き込むと前記セキュアモードへ移行することを含み、
前記ハイパーバイザーは、前記共有のメモリ領域に書き込まれたことを前記第１のＯＳに通知するユニットを含み、
前記第１のＯＳは、前記共有のメモリ領域に書き込むと割り込みにより前記第２のＯＳに通知するユニットを含む、システム。
【請求項７】
請求項１ないし６のいずれかにおいて、
前記メモリと前記プロセッシングユニットとが搭載されたシステムオンチップを有するシステム。
【請求項８】
請求項１ないし７のいずれかにおいて、
さらに、前記第２のＯＳ上で稼働するアプリケーションと、
前記アプリケーションにより制御される装置とを有するシステム。
【請求項９】
保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳを制御する方法であって、
前記システムは、前記プロセッシングユニットの前記セキュアモードで稼働するハイパーバイザーを含み、
当該方法は、
前記ハイパーバイザーが、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定することと、
前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定することと、
前記第２のＯＳに対し前記第１のデバイスを仮想化して提供することと、
前記第１のＯＳおよび前記第２のＯＳを含む前記複数のＯＳを切り替えることとを含み、
前記ＯＳを切り替えることは、前記複数のＯＳの動作条件および前記複数のＯＳのコンテキストをそれぞれ前記保安領域に格納することを含む、方法。
【請求項１０】
請求項９において、
さらに、前記ハイパーバイザーが、ＯＳの起動を準備することを含み、
前記ＯＳの起動を準備することは、前記保安領域に格納された前記第２のＯＳのファームウェアを前記保安領域に格納された認証情報を用いて認証することと、
前記保安領域に格納された認証済みの前記第２のＯＳのファームウェアを前記非保安領域のブート領域に実行用のインスタンスとして展開することとを含む、方法。
【請求項１１】
請求項１０において、
さらに、前記システムは、前記セキュアモードで稼働する更新ユニットを含み、
当該方法は、
前記更新ユニットが、前記非保安領域にダウンロードされた更新用のファームウェアを前記保安領域に格納された認証情報を用いて認証することと、
前記非保安領域にダウンロードされた認証済みの前記更新用のファームウェアを前記保安領域に格納することとを含む、方法。
【請求項１２】
請求項１０または１１において、
前記第１の動作条件および前記第２の動作条件は前記非保安領域に設定された共有のメモリ領域の動作条件を含み、
当該方法は、
前記第２のＯＳが前記共有のメモリ領域に書き込むと前記セキュアモードへ移行し、前記ハイパーバイザーが、前記共有のメモリ領域に書き込まれたことを前記第１のＯＳに通知することと、
前記第１のＯＳが、前記共有のメモリ領域に書き込むと割り込みにより前記第２のＯＳに通知することとを含む、方法。
【請求項１３】
保安領域と非保安領域とを含むメモリの前記保安領域へのアクセスを禁止する支援機能を含み、前記支援機能により前記保安領域へのアクセスが禁止された低セキュアモードと、前記保安領域へのアクセスが許可されたセキュアモードとを含む実行モードを備えたプロセッシングユニットを有するシステムにおいて複数のＯＳの制御を可能とするプログラムであって、
前記プロセッシングユニットの前記セキュアモードでハイパーバイザーを稼働させる命令を含み、
前記ハイパーバイザーが、前記セキュアモードで稼働する第１のＯＳに対して前記保安領域および前記非保安領域へのアクセスを可能とすることを含む第１の動作条件を設定することと、
前記低セキュアモードで稼働する第２のＯＳに対して前記非保安領域に対するアクセスを可能とし、前記支援機能を用いて前記保安領域へのアクセスを不可とし、さらに、前記第１のＯＳと共用する第１のデバイスに対するアクセスにより前記セキュアモードに移行することを含む第２の動作条件を設定することと、
前記第２のＯＳに対し前記第１のデバイスを仮想化して提供することと、
前記第１のＯＳおよび前記第２のＯＳを含む前記複数のＯＳを切り替えることとを実行し、
前記ＯＳを切り替えることは、前記複数のＯＳの動作条件および前記複数のＯＳのコンテキストをそれぞれ前記保安領域に格納することを含む、プログラム。
【国際調査報告】
2017034008.tif 000010
2017034008.tif 000011
2017034008.tif 000012
2017034008.tif 000013