(57)【特許請求の範囲】
【請求項１】
少なくとも使用するメモリ空間が隔離されている、通常実行環境とセキュア実行環境を有する処理装置であって、
プログラムまたはデータの完全性を確認するための検証が必要なプログラムまたはデータの識別情報、及び各プログラムまたはデータの検証に必要な期待値を含む検証リストを格納する、セキュア実行環境下で使用されるセキュア記憶領域と、
前記検証リスト内から前記プログラムまたはデータの識別情報を抽出して、通常実行環境に渡す、セキュア実行環境下で動作するセキュア処理部と、
前記セキュア処理部から渡された前記プログラムまたはデータの識別情報を格納する、通常実行環境下で使用される通常記憶領域と、
前記検証が必要なプログラムまたはデータの識別情報を参照して、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータであるか否かを判定する、通常実行環境下で動作する通常処理部と、を備え、
前記通常処理部は、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータである場合、対象のプログラムまたはデータの検証をセキュア処理部に依頼することを特徴とする処理装置。
【請求項２】
前記通常処理部は、前記処理装置の起動時において、暗号化された前記検証リストを取得して、セキュア実行環境に渡し、
前記セキュア処理部は、暗号化された前記検証リストを復号し、復号された前記検証リストから前記検証が必要なプログラムまたはデータの識別情報を抽出して、通常実行環境に渡すことを特徴とする請求項１に記載の処理装置。
【請求項３】
前記セキュア処理部は、定期的またはイベント発生ごとに前記検証が必要なプログラムまたはデータの識別情報を通常実行環境に渡す、または通常実行環境から読み込んでチェックすることを特徴とする請求項１または２に記載の処理装置。
【請求項４】
前記通常処理部は、強制アクセス制御機能を備えたセキュアＯＳ（Operating System）を起動する際、検証が必要なプログラムまたはデータの検証が終了するまでにまたは終了した後、前記強制アクセス制御機能を有効化することを特徴とする請求項１から３のいずれかに記載の処理装置。
【請求項５】
前記通常処理部は、プログラム実行時におけるアクセス要求に対する権限判定を実行するためのハンドラを実行し、
前記ハンドラに、プログラムまたはデータの完全性を確認するための検証処理における通常実行環境側の処理が記述されていることを特徴とする請求項１から４のいずれかに記載の処理装置。
【請求項６】
前記検証が必要なプログラムまたはデータには、ファイルシステムイメージが含まれることを特徴とする請求項１から５のいずれかに記載の処理装置。
【請求項７】
前記セキュア処理部は、前記ファイルシステムのキャッシュメモリに影響を与えずに、前記ファイルシステムイメージを検証することを特徴とする請求項６記載の処理装置。
【請求項８】
前記検証が必要なプログラムまたはデータには、デバイスドライバのインストールプログラム、および／またはインストール対象の前記デバイスドライバが含まれることを特徴とする請求項１から７のいずれかに記載の処理装置。
【請求項９】
請求項１から８のいずれかに記載の処理装置を備えることを特徴とする車載端末装置。
【請求項１０】
少なくとも使用するメモリ空間が隔離されている、通常実行環境とセキュア実行環境を有する処理装置の起動方法であって、
プログラムまたはデータの完全性を確認するための検証が必要なプログラムまたはデータの識別情報、及び各プログラムまたはデータの検証に必要な期待値を含む検証リストを、セキュア実行環境下で使用されるセキュア記憶領域に格納するステップと、
前記検証リスト内から前記検証が必要なプログラムまたはデータの識別情報を抽出して、通常実行環境に渡すステップと、
セキュア実行環境から渡された前記プログラムまたはデータの識別情報を、通常実行環境下で使用される通常記憶領域に格納するステップと、
通常実行環境下において、前記プログラムまたはデータの識別情報を参照して、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータであるか否かを判定し、検証が必要なプログラムまたはデータである場合、対象のプログラムまたはデータの検証をセキュア実行環境側に依頼するステップと、
を備えることを特徴とする処理装置の起動方法。
【請求項１１】
少なくとも使用するメモリ空間が隔離されている、通常実行環境とセキュア実行環境を有する処理装置の起動プログラムであって、
プログラムまたはデータの完全性を確認するための検証が必要なプログラムまたはデータの識別情報、及び各プログラムまたはデータの検証に必要な期待値を含む検証リストを、セキュア実行環境下で使用されるセキュア記憶領域に格納する機能と、
前記検証リスト内から前記プログラムまたはデータの識別情報を抽出して、通常実行環境に渡す機能と、
セキュア実行環境から渡された前記プログラムまたはデータの識別情報を、通常実行環境下で使用される通常記憶領域に格納する機能と、
通常実行環境下において、前記プログラムのリストを参照して、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータであるか否かを判定し、検証が必要なプログラムまたはデータである場合、対象のプログラムまたはデータの検証をセキュア実行環境側に依頼する機能と、
をコンピュータに実行させることを特徴とする処理装置の起動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全かつ高速な起動が求められる処理装置、車載端末装置、処理装置の起動方法、及び処理装置の起動プログラムに関する。
【背景技術】
【０００２】
自動車の利便性向上に伴う車載システムのネットワーク接続や追加アプリダウンロードにより、車載システムのセキュリティ確保が急務となっている。車載システムのセキュリティ確保においては、車載システムの完全性を保証するセキュアブート機能が必須と考えられる。特にカーナビゲーションシステムやディスプレイオーディオ等のヘッドユニット、電子化されたコックピットシステムでは、エンジン始動からシステムの起動完了までの時間制約が非常に厳しく、安全かつ高速なセキュアブート機能が求められる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１−１１４６２１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
セキュアブートでは、フラッシュメモリ等の不揮発性メモリからプログラムを読み込み、読み込んだプログラムの改ざんチェックが実行される。改ざんチェックの対象となるプログラムの数は数百にも上るため、改ざんチェックに時間がかかる。しかしながら、車載システムではプログラムの改ざんにより外部から不正操作された場合の影響が大きいため、基本的にセキュリティ強度を下げることはできない。
【０００５】
本発明はこうした状況に鑑みなされたものであり、その目的は、セキュリティ強度を確保しつつ、起動時間を短縮する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の処理装置は、少なくとも使用するメモリ空間が隔離されている、通常実行環境とセキュア実行環境を有する処理装置であって、プログラムまたはデータの完全性を確認するための検証が必要なプログラムまたはデータの識別情報、及び各プログラムまたはデータの検証に必要な期待値を含む検証リストを格納する、セキュア実行環境下で使用されるセキュア記憶領域と、前記検証リスト内から前記プログラムまたはデータの識別情報を抽出して、通常実行環境に渡す、セキュア実行環境下で動作するセキュア処理部と、前記セキュア処理部から渡された前記プログラムまたはデータの識別情報を格納する、通常実行環境下で使用される通常記憶領域と、前記検証が必要なプログラムまたはデータの識別情報を参照して、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータであるか否かを判定する、通常実行環境下で動作する通常処理部と、を備える。前記通常処理部は、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータである場合、対象のプログラムまたはデータの検証をセキュア処理部に依頼する。
【０００７】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、又はコンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、セキュリティ強度を確保しつつ、起動時間を短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る処理装置のハードウェア構成を示すブロック図である。
【図２】本発明の実施の形態に係る処理装置のソフトウェア構成を示すブロック図である。
【図３】本発明の実施の形態に係る、処理装置を起動する時におけるアプリケーションプログラムの改ざんを検出する処理を説明するためのフローチャートである。
【図４】比較例に係る、処理装置を起動する時におけるアプリケーションプログラムの改ざんを検出する処理を説明するためのフローチャートである。
【図５】図１の処理装置を備える車載端末装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
本発明の実施の形態は、車載システムにおけるセキュアブートに関する。セキュアブート機能とは、Root of Trustと呼ばれる物理的に改変不可能な領域の情報に基づいた信頼性の基点を作りこみ、そこからブートローダ、ＯＳ等のソフトウェアに対して、完全性（改ざんされていないこと）を検証しながら順次起動していく技術である。
【００１１】
一般的にセキュアブートでは改ざんを検証する範囲と、起動時間はトレードオフの関係にある。すなわち、改ざんを検証する範囲を広くすればするほど、セキュリ強度は強くなるが、起動時間は遅くなる。逆に、改ざんを検証する範囲を狭くするほど、起動時間は早くなるが、セキュリティ強度は弱くなる。セキュアブートのセキュリティ強度については、一部スマートフォンにてセキュアブートが解除される事例が報告されており、商品仕様における起動時間の制約を守りつつ、セキュリティ強度を担保した上で必要十分な範囲を改ざん検出することが重要である。
【００１２】
著作権機能を有する家電機器では、機器内に記録された著作権に関する情報資産を不正入手から防ぐため、セキュアブート機能が搭載されることが一般的であった。また、家電機器のセキュアブート機能においても、改ざんを検証する範囲と起動時間はトレードオフの関係にあった。
【００１３】
しかし、セキュアブート機能が実際に動作するタイミングがＯＳの起動時であり、かつ家電機器の場合、ＯＳの起動は電源プラグをコンセントに差し込むときや、スマートフォンの電源を入れる等、通常使用の中においては限定的であったため、車載システムと比較して起動時間の条件が比較的緩やかであった。
【００１４】
一方、車載システムにおいては、エンジン始動からヘッドユニットや電子コックピットの起動時間は、操作性の観点、及びいわゆるＫＴ法（Kids and Transportation Safety Act）の観点から、概ね２秒以内に完了する必要があるという見方が一般的である。
【００１５】
また、車載システムにおいては、バッテリーの寿命の問題から、エンジン停止時はＤＲＡＭ(Dynamic Random Access Memory)バックアップと呼ばれる、ＤＲＡＭにメモリ保持のためのリフレッシュ電流のみを供給し、それ以外のシステムは電流を供給せずに停止することが一般的である。これにより、次回のエンジン始動に伴う車載システムの起動時は、フラッシュＲＯＭからＤＲＡＭにソフトウェアをロードすることは省略可能であり、その分起動時間は短縮される。但し、ＤＲＡＭバックアップモード中にＤＲＡＭのデータが不正に書き換えられる可能性があるため、エンジン始動に伴う車載システムの起動において、ＤＲＡＭのデータに対するセキュアブートは毎回実施する必要がある。
【００１６】
以上の結果、車載システムにおけるセキュアブート機能は、一般的に数百ｍｓ以内に終了する必要があり、従来の家電機器と比較して厳しい条件となっている。そこでセキュリティ強度を維持しつつ、徹底した処理の効率化が求められる。
【００１７】
図１は、本発明の実施の形態に係る処理装置１のハードウェア構成を示すブロック図である。処理装置１は通常実行環境とセキュア実行環境を有する。セキュア実行環境は、ハードウェア的に通常実行環境と隔離された実行環境であり、少なくとも使用するメモリ空間が通常実行環境と物理的または論理的に隔離されている。セキュア実行環境は、隔離実行環境、トラステッド実行環境とも呼ばれる。例えば、ＡＲＭ社のTrustZone（登録商標）ハードウェアアーキテクチャにより通常実行環境とセキュア実行環境を有する処理装置１を構築できる。
【００１８】
処理装置１は、処理部１０、揮発性記憶部２０、不揮発性記憶部３０を備える。処理部１０は単一のＬＳＩで構成することができる。処理部１０はバス４０を介して、ＬＳＩの外部に設けられる揮発性記憶部２０及び不揮発性記憶部３０と接続される。なお、揮発性記憶部２０の一部は、セキュリティ強度を強くするため、処理部１０に内蔵されていてもよい。処理部１０は、通常実行環境下で動作する通常処理部１１と、セキュア実行環境下で動作するセキュア処理部１２を含む。通常処理部１１とセキュア処理部１２には、物理的に１つのプロセッサを時分割で使用することにより構築される２つの仮想プロセッサがそれぞれ割り当てられる。なお、セキュア処理部１２の動作を専用に実行するセキュア処理用のプロセッサを、汎用のプロセッサと別に設けてもよい。
【００１９】
揮発性記憶部２０はＳＤＲＡＭ(Synchronous Dynamic Random Access Memory) で構成でき、通常記憶領域２１及びセキュア記憶領域２２を含む。通常記憶領域２１は通常実行環境下で使用され、セキュア記憶領域２２はセキュア実行環境下で使用される。通常記憶領域２１とセキュア記憶領域２２は、物理的または論理的に異なる領域に設定される。なお、セキュア記憶領域２２は専用の別のＲＡＭチップで構成されてもよい。また、セキュア実行環境下で動作する専用のプロセッサとＲＡＭを含む別のセキュリティチップで構成してもよい。セキュア記憶領域２２には、通常処理部１１からはアクセスできず、セキュア処理部１２からのみアクセスできる。
【００２０】
図２は、本発明の実施の形態に係る処理装置１のソフトウェア構成を示すブロック図である。図２には、本実施の形態に関連するソフトウェア及びデータのみを描いている。以下、処理装置１のＯＳとして、車載システムのオープン化やネットワーク化に伴い、今後の利用が多くなっていくと予想されるLinux(登録商標)を想定する。なお、Windows（登録商標）、ITRON（登録商標）等の他のＯＳを使用することも可能である。
【００２１】
通常実行環境下では、カーネル１３０、ハンドラ１１０が実行される。カーネル１３０は、ＯＳの中核をなすプログラムであり、ハードウェア資源を管理して各アプリケーションプログラムに実行環境を提供する。SE Linux(登録商標)、TOMOYO Linux(登録商標)等の強制アクセス制御機能が追加されたセキュアＯＳでは、カーネル１３０は強制アクセス制御を実行する。強制アクセス制御とは、システム管理者により設定されたセキュリティポリシーに従い、ユーザからリソース（プロセス、ファイル、 システムデバイス等）へのアクセスに対する許可または拒否を決定する制御である。たとえファイルの所有者であっても、セキュリティポリシーにより変更が許可されていない場合は当該ファイルを変更できない。
【００２２】
ハンドラ１１０は、アプリケーションプログラム実行時のアクセス要求に対して、アクセス元の権限を判定するための権限判定プログラム１１２が記述されたハンドラである。権限判定プログラム１１２は、各アプリケーションプログラムから要求されるセキュリティイベント（ファイルアクセス等）に対して、セキュリティポリシー及び履歴情報の少なくとも一方を参照して、リソースへのアクセスを許可するか拒否するかを判定する。
【００２３】
ハンドラ１１０には、改ざん検出対象リスト１２０に基づきアプリケーションプログラムの改ざんを検出する処理を実行するための改ざん検出プログラム１１１も記述される。このように、改ざん検出プログラム１１１をカーネル１３０ではなく、ハンドラ１１０に記述することにより、改ざん検出プログラム１１１を変更した際にカーネル１３０を修正する必要がなくなる。
【００２４】
アプリケーションプログラムの改ざんを検出する処理において署名を検証する処理は、セキュア実行環境側で実行される。改ざん検出プログラム２１１は、改ざん検出対象リスト２２０に基づき、アプリケーションプログラムの署名を検証する。
【００２５】
図３は、本発明の実施の形態に係る、処理装置１を起動する時におけるアプリケーションプログラムの改ざんを検出する処理を説明するためのフローチャートである。通常実行環境下において、通常処理部１１は不揮発性記憶部３０から、暗号化された改ざん検出対象リストを読み出し、セキュア実行環境に渡す（Ｓ１０）。図３のフローチャートは改ざん検出対象リストが暗号化される場合のフローチャートであるが、秘匿性が不要で完全性のみ保証する必要がある場合、改ざん検出対象リストを暗号化せず署名またはＭＡＣのみを含める構成でもよい。通常実行環境側からセキュア実行環境側が呼び出されると処理部１０の実行環境が、通常実行環境からセキュア実行環境に切り替わる。
【００２６】
セキュア実行環境下において、セキュア処理部１２は、通常実行環境側から渡された暗号化された改ざん検出対象リストを復号する（Ｓ２０）。公開鍵暗号方式が用いられる場合、セキュア処理部１２は、改ざん検出対象リストを暗号化する際に使用された秘密鍵と対をなす公開鍵を用いて改ざん検出対象リストを復号する。
【００２７】
セキュア処理部１２は、復号された改ざん検出対象リストにハッシュ関数を適用して改ざん検出対象リストのハッシュ値を算出する。また、セキュア処理部１２は、改ざん検出対象リストの署名（暗号化状態のハッシュ値）を取得して、当該署名を生成した際に使用された秘密鍵と対をなす公開鍵を使用してハッシュ値を復元する。セキュア処理部１２は改ざん検出対象リストから算出したハッシュ値と、署名を復号して得たハッシュ値を比較して、両者が一致する場合は署名の検証が成功したと判定し、一致しない場合は署名の検証が失敗したと判定する。なお、ハッシュ値を、暗号化された状態の検出対象リストから生成する方式でもよい。
【００２８】
改ざん検出対象リストには、改ざん検出が必要なアプリケーションプログラムのリスト（以下、プログラムリストという）と、各アプリケーションプログラムの改ざん検証に必要な署名が含まれる。署名は、アプリケーションプログラムにハッシュ関数を適用して得られたハッシュ値に対して秘密鍵を使用して生成されたものである。なお、改ざん検出対象リストが暗号化されている場合は、署名の代わりにハッシュ値を使用することも可能である。改ざん検出が必要なアプリケーションプログラムは、全てのアプリケーションプログラムの内、例えば改ざん等により正常動作しないとセキュリティを低下させる可能性があるアプリケーションプログラムであり、システム管理者により予め選別されたものである。プログラムリストは、ツリー形式のディレクトリ構造で記述される。ディレクトリ構造において各プログラムはパスとして指定され、各プログラムには署名（暗号化状態のハッシュ値）が関連付けられている。
【００２９】
セキュア処理部１２は、復号した改ざん検出対象リストをセキュア記憶領域２２に格納するとともに、改ざん検出対象リストからプログラムリストを抽出し、抽出したプログラムリストを通常実行環境に渡す（Ｓ２１）。セキュア実行環境側から通常実行環境側が呼び出されると処理部１０の実行環境が、セキュア実行環境から通常実行環境に切り替わる。
【００３０】
通常実行環境下において、通常処理部１１は、セキュア実行環境側から渡されたプログラムリストを通常記憶領域２１に格納する。通常処理部１１は、アプリケーションプログラムの実行要求を受け付けると（Ｓ１１のＹ）、当該アプリケーションプログラムがプログラムリスト内に含まれているか否か判定する（Ｓ１２）。プログラムリスト内に含まれていない場合（Ｓ１２のＮ）、通常処理部１１は、当該アプリケーションプログラムを不揮発性記憶部３０から読み出し、読み出したアプリケーションプログラムを起動する（Ｓ１５）。
【００３１】
実行要求を受け付けたアプリケーションプログラムがプログラムリスト内に含まれている場合（Ｓ１２のＹ）、通常処理部１１は、当該アプリケーションプログラムを不揮発性記憶部３０から読み出し、読み出したアプリケーションプログラムをセキュア実行環境に渡すとともに、当該アプリケーションプログラムの署名の検証をセキュア実行環境に依頼する（Ｓ１３）。通常実行環境側からセキュア実行環境側が呼び出されると処理部１０の実行環境が、通常実行環境からセキュア実行環境に切り替わる。
【００３２】
セキュア実行環境下において、セキュア処理部１２は、通常実行環境側から渡されたアプリケーションプログラムにハッシュ関数を適用してハッシュ値を算出する。また、セキュア処理部１２は、改ざん検出対象リストから当該アプリケーションプログラムの署名を取得して、当該署名を生成した際に使用された秘密鍵と対をなす公開鍵を使用してハッシュ値を復元する。セキュア処理部１２は当該アプリケーションプログラムから算出したハッシュ値と、当該署名を復号して得たハッシュ値を比較して、両者が一致する場合は署名の検証が成功したと判定し、一致しない場合は署名の検証が失敗したと判定する（Ｓ２５）。セキュア処理部１２は、当該アプリケーションプログラムの署名を検証した結果を通常実行環境に渡す。セキュア実行環境側から通常実行環境側が呼び出されると処理部１０の実行環境が、セキュア実行環境から通常実行環境に切り替わる。なお、ここではハッシュ値の算出をセキュア処理部１２で実施することとしたが、セキュア処理部１２の処理量の増加は、セキュア処理部１２の処理が一定時間毎に時分割で通常実行環境に切り替えるようスケジューリングされるシステムの場合、後述の通常実行環境−セキュア実行環境間の切り替え回数の増加を引き起こし、システム全体のパフォーマンス低下を引き起こす可能性がある。これを避けるため、ハッシュ値の算出を通常実行環境側で実施し、セキュア処理部１２にハッシュ値を渡すこととしてもよい。
【００３３】
通常実行環境下において、セキュア実行環境側から渡された署名を検証した結果が成功であった場合（Ｓ１４のＹ）、通常処理部１１は、実行要求を受け付けたアプリケーションプログラムを起動する（Ｓ１５）。セキュア実行環境側から渡された署名を検証した結果が失敗であった場合（Ｓ１４のＮ）、通常処理部１１は、実行要求を受け付けたアプリケーションプログラムの起動を中止する（Ｓ１６）。
【００３４】
以上の処理フローにおいて、セキュア処理部１２は定期的にプログラムリストを通常実行環境側に渡す。通常実行環境は、外部から不正な攻撃を受けるリスクがセキュア実行環境よりも高く、プログラムリストが改ざんされるリスクが相対的に高い。そこで通常実行環境側のプログラムリストを定期的にリフレッシュする。具体的にはセキュア処理部１２は、前回、プログラムリストを通常実行環境に渡してから一定時間が経過すると（Ｓ２３のＹ）、プログラムリストを通常実行環境に渡す（Ｓ２４）。通常実行環境側では、通常処理部１１は現在のプログラムリストを、セキュア実行環境側から新たに渡されたプログラムリストで上書きする。なお、セキュア処理部１２が通常記憶領域２１に直接アクセスできる場合、セキュア処理部１２が直接、プログラムリストを上書きしてもよい。通常処理部１１を介さない方がセキュリティ強度は強くなる。
【００３５】
なお、プログラムリストのリフレッシュを定期的に実行するのではなく、イベントが発生した時に実行してもよい。例えば、イベントは、重要なアプリケーションプログラムの実行が終了したタイミングで発生してもよい。重要なアプリケーションプログラムの例として、デバイスドライバのインストールプログラム(Linux（登録商標）の場合insmodコマンド等)があげられる。特に、不正なデバイスドライバがインストールされると、カーネルが乗っ取られてしまい、ユーザランド上で動作する他のアプリケーションプログラムが乗っ取られた場合よりも危険である。この場合、ステップＳ１３において、実行対象プログラムがデバイスドライバのインストールプログラムであった場合、実行対象プログラムに加えてインストール対象のデバイスドライバについても改ざん検出を実行することとしてもよい。
【００３６】
図４は、比較例に係る、処理装置１を起動する時におけるアプリケーションプログラムの改ざんを検出する処理を説明するためのフローチャートである。ステップＳ１０、Ｓ２０の処理は、図３のフローチャートと同じ処理である。比較例では、セキュア処理部１２は、復号した改ざん検出対象リストをセキュア記憶領域２２に格納するが、プログラムリストを通常実行環境側に渡さない。
【００３７】
通常実行環境下において、通常処理部１１は、アプリケーションプログラムの実行要求を受け付けると（Ｓ１１のＹ）、当該アプリケーションプログラムを不揮発性記憶部３０から読み出し、読み出したアプリケーションプログラムをセキュア実行環境に渡すとともに、当該アプリケーションプログラムの署名の検証をセキュア実行環境に依頼する（Ｓ１３）。通常実行環境側からセキュア実行環境側が呼び出されると処理部１０の実行環境が、通常実行環境からセキュア実行環境に切り替わる。
【００３８】
セキュア実行環境下において、セキュア処理部１２は、署名の検証を依頼されたアプリケーションプログラムが改ざん検出対象リスト内に含まれているか否か判定する（Ｓ２２）。改ざん検出対象リスト内に含まれていない場合（Ｓ２２のＮ）、セキュア処理部１２は、当該アプリケーションプログラムが改ざん検出の対象でないとの判定結果を通常実行環境に返す。
【００３９】
署名の検証を依頼されたアプリケーションプログラムが改ざん検出対象リスト内に含まれる場合（Ｓ２２のＹ）、セキュア処理部１２は、通常実行環境側から渡されたアプリケーションプログラムの署名を検証し、署名の検証結果を通常実行環境に渡す（Ｓ２５）。
【００４０】
通常実行環境下において、実行対象のアプリケーションプログラムが改ざん検出の対象でない場合、または当該アプリケーションプログラムの署名の検証結果が成功であった場合（Ｓ１４のＹ）、通常処理部１１は当該アプリケーションプログラムを起動する（Ｓ１５）。当該アプリケーションプログラムの署名の検証結果が失敗であった場合（Ｓ１４のＮ）、通常処理部１１は当該アプリケーションプログラムの起動を中止する（Ｓ１６）。
【００４１】
図３のフローチャートと図４のフローチャートを比較すると、実行対象のアプリケーションプログラムが改ざん検出の対象であるか否かを判定する処理を、通常実行環境側で実行するか、セキュア実行環境側で実行するかの点で異なっている。図４のフローチャートに示される比較例では、セキュア実行環境側で実行しているため、アプリケーションプログラムの実行要求が発生する度に通常実行環境からセキュア実行環境、及びセキュア実行環境から通常実行環境への切り替えが発生している。当該切り替え処理には、一般的にレジスタの退避、メモリ管理ユニット(ＭＭＵ）の設定変更、キャッシュ処理等が伴い、オーバーヘッドが発生する。１回の切り替えに伴うオーバーヘッド時間は数ｍｓであるが、処理装置１を起動する時は数百個のアプリケーションプログラムを起動する必要があるため、起動時間が秒単位で遅くなる。図３のフローチャートに示される本実施の形態では、改ざん検出対象リストからプログラムリストを切り出して通常実行環境側に渡し、通常実行環境側で改ざん検出の対象であるか否かを判定することにより、実行環境の切り替えに係るオーバーヘッドを低減することができる。改ざん検出の対象とするアプリケーションプログラムを、システムの根幹に関わるアプリケーションプログラムに絞り込めば、実行環境の切り替え回数を大きく削減することができる。
【００４２】
改ざん検出対象リストに含まれる全てのアプリケーションプログラムの改ざんを検出する処理が終了した後、通常処理部１１は、強制アクセス制御機能を有効化する。処理装置１を起動する時における改ざんを検出する処理が実行されている間は強制アクセス制御は無効にしている。これにより、処理装置１を起動する時における改ざんを検出する処理が実行されている間、強制アクセス制御に伴い、アクセス元がリソースにアクセスする権限を有しているか否かを判定する処理が発生しなくなる。当該処理によるオーバーヘッド時間は一般的に１回につき数ｍｓであるが、前記の通常実行環境−セキュア実行環境間の切り替えと同様、処理装置１を起動する時は数百個のアプリケーションプログラムを起動する必要があるため、起動時間が秒単位で遅くなる。これにより当該処理に係るオーバーヘッドを低減することができる。なお、強制アクセス制御機能を有効化するタイミングが早いほど、オーバーヘッドの低減度合いは減少するがセキュリティ強度は上がるため、強制アクセス制御機能を有効化するタイミングはシステム要件等に応じ、処理装置１を起動する時における改ざんを検出する処理が終了するまでに実施することとしてもよい。
【００４３】
図５は、図１の処理装置１を備える車載端末装置７の構成を示すブロック図である。図５では車載端末装置７として、カーナビゲーションシステムを想定している。車載端末装置７は、処理装置１、表示部２、音声出力部３、操作部４、ＧＰＳ受信部５、及び無線通信部６を備える。
【００４４】
表示部２は液晶ディスプレイまたは有機ＥＬディスプレイを備え、処理装置１から供給される映像データを表示する。例えば、ナビゲーション画面を表示する。音声出力部３はスピーカを備え、処理装置１から供給される音声データを音声出力する。例えば、音声ガイダンスを音声出力する。操作部４は物理キー、タッチパネル等の入力手段を備え、ユーザの操作を電気信号に変換して処理装置１に出力する。ＧＰＳ受信部５はＧＰＳ受信機を備え、複数のＧＰＳ衛星から電波を受信して処理装置１の位置を測定する。ＧＰＳ受信部５は、経度緯度で規定される位置情報を処理装置１に出力する。無線通信部６は携帯電話網または無線ＬＡＮを介してインターネットに接続するための通信モジュールを備える。例えば、ネットワーク上の図示しない地図サーバと接続し、地図データおよび音声ガイダンス用の音声データを受信し、処理装置１に供給する。
【００４５】
車載端末装置７がインターネットに接続可能な構成の場合、インターネットを経由してマルウェアやウイルスが処理装置１に侵入するリスクがある。また、スマートフォンと連携して動作する場合も、スマートフォンを経由してマルウェアやウイルスが侵入するケースがある。また、ＤＶＤ等のメディアを経由して侵入する場合もある。これに対して本発明の実施の形態に係る処理装置１を使用すれば、アプリケーションプログラムを起動する前に改ざんを検出する処理を実行するため、不正な改ざんから車載端末装置７を保護することができる。従って安全かつ高速なセキュアブートを実現した車載端末装置７を構築できる。
【００４６】
以上説明したように本実施の形態によれば、プログラムリストを通常実行環境側に保持することにより、セキュア実行環境を呼び出す回数を減らすことができ、実行環境を切り替える処理によるオーバーヘッドを低減することができる。その際、改ざん検出対象リストに含まれる各アプリケーションプログラムの署名は、セキュア実行環境側から通常実行環境側に渡さないため、セキュリティ強度の低下を抑えることができる。また、通常実行環境側に保持されるプログラムリストを定期的またはイベント発生ごとにリフレッシュすることにより、外部から不正に改ざんされたプログラムリストを使用して、アプリケーションプログラムの改ざんを検出する処理が実行される可能性を極力抑えることができる。
【００４７】
また、強制アクセス制御機能の有効化を、改ざん検出対象リストに含まれる全てのアプリケーションプログラムの改ざんを検出する処理が終了した後に実行することにより、強制アクセス機能に係る処理により発生するオーバーヘッドを低減することができる。また、改ざん検出プログラム１１１をカーネル１３０ではなくハンドラ１１０に持たせることにより、改ざん検出プログラム１１１を修正した際にカーネル１３０を修正する必要がなくなる。
【００４８】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４９】
上述の実施の形態では、改ざんを検出する処理として、公開鍵暗号方式を用いて生成された署名を検証する例を説明した。この点、署名の代わりに共通鍵暗号方式を用いて生成されたメッセージ認証コード（ＭＡＣ）を検証して、改ざんを検出してもよい。また、その他の暗号方式を使用した検証方法を用いてもよい。
【００５０】
また上述の実施の形態では、強制アクセス制御機能を備えたセキュアＯＳを使用する例を説明したが、任意アクセス制御を用いたＯＳにも適用できる。その場合、改ざんを検出する処理の終了後に強制アクセス制御機能を有効化する処理はスキップされる。
【００５１】
また上述の実施の形態では、アプリケーションプログラムを対象として改ざんを検出する処理を行うこととしたが、アプリケーションプログラムではなく、ファイルシステムイメージを対象としてもよい。特に、ファイルシステムがramfsやpramfsで実現されている場合、ファイルシステムイメージは一般的に連続したメモリ領域に配置される。この場合、当該メモリ領域をマッピングすることで、アプリケーションプログラムを対象とした場合と比較して、ファイルアクセス関連のシステムコール回数を削減し、当該システムコールのオーバーヘッドを低減できる。さらに、メモリマッピングによるアクセスにより、ファイルシステムが保有するファイル読み書きに使用するキャッシュに影響を与えずに、改ざん検出処理を行うことが可能になる。これにより、当該キャッシュを使用する他のアプリケーションの処理速度を低減させることなく、改ざん検出を処理することが可能になる。ファイルシステムが保有するファイル読み書きに使用するキャッシュに影響を与えない方法として、メモリマッピング以外に、直接不揮発性記憶部を読みに行く方法と、ファイルオープンやリードの際にオプションとしてキャッシュに影響を与えない旨を指定する方法があり、これらの方法を用いてもよい。
【００５２】
また図５では、本実施の形態に係る処理装置１をカーナビゲーションシステムに適用する例を説明したが、ディスプレイオーディオ、コックピットシステム、各種ＥＣＵ（エンジンＥＣＵ等）にも適用可能である。また、本実施の形態に係る処理装置１を車載用途以外に使用することを制限するものではなく、安全かつ高速なセキュアブート機能が求められる機器であれば、当該機器に搭載してもよい。
【００５３】
なお、実施の形態は、以下の項目によって特定されてもよい。
［項目１］
少なくとも使用するメモリ空間が隔離されている、通常実行環境とセキュア実行環境を有する処理装置（１）であって、
プログラムまたはデータの完全性を確認するための検証が必要なプログラムまたはデータの識別情報、及び各プログラムまたはデータの検証に必要な期待値を含む検証リスト（２２０）を格納する、セキュア実行環境下で使用されるセキュア記憶領域（２２）と、
前記検証リスト（２２０）内から前記プログラムまたはデータの識別情報を抽出して、通常実行環境に渡す、セキュア実行環境下で動作するセキュア処理部（１２）と、
前記セキュア処理部（１２）から渡された前記プログラムまたはデータの識別情報（１２０）を格納する、通常実行環境下で使用される通常記憶領域（２１）と、
前記検証が必要なプログラムまたはデータの識別情報（１２０）を参照して、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータであるか否かを判定する、通常実行環境下で動作する通常処理部（１１）と、を備え、
前記通常処理部（１１）は、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータである場合、対象のプログラムまたはデータの検証をセキュア処理部（１２）に依頼することを特徴とする処理装置（１）。
［項目２］
前記通常処理部（１１）は、前記処理装置（１）の起動時において、暗号化された前記検証リストを取得して、セキュア実行環境に渡し、
前記セキュア処理部（１２）は、暗号化された前記検証リストを復号し、復号された前記検証リストから前記検証が必要なプログラムまたはデータの識別情報を抽出して、通常実行環境に渡すことを特徴とする項目１に記載の処理装置（１）。
［項目３］
前記セキュア処理部（１２）は、定期的またはイベント発生ごとに前記検証が必要なプログラムまたはデータの識別情報を通常実行環境に渡す、または通常実行環境から読み込んでチェックすることを特徴とする項目１または２に記載の処理装置（１）。
［項目４］
前記通常処理部（１１）は、強制アクセス制御機能を備えたセキュアＯＳ（Operating System）を起動する際、検証が必要なプログラムまたはデータの検証が終了するまでにまたは終了した後、前記強制アクセス制御機能を有効化することを特徴とする項目１から３のいずれかに記載の処理装置（１）。
［項目５］
前記通常処理部（１１）は、プログラム実行時におけるアクセス要求に対する権限判定を実行するためのハンドラ（１１０）を実行し、
前記ハンドラ（１１０）に、プログラムまたはデータの完全性を確認するための検証処理における通常実行環境側の処理が記述されていることを特徴とする項目１から４のいずれかに記載の処理装置（１）。
［項目６］
前記検証が必要なプログラムまたはデータには、ファイルシステムイメージが含まれることを特徴とする項目１から５のいずれかに記載の処理装置（１）。
［項目７］
前記セキュア処理部は、前記ファイルシステムのキャッシュメモリに影響を与えずに、前記ファイルシステムイメージを検証することを特徴とする項目６に記載の処理装置（１）。
［項目８］
前記検証が必要なプログラムまたはデータには、デバイスドライバのインストールプログラム、および／またはインストール対象の前記デバイスドライバが含まれるが含まれることを特徴とする項目１から７のいずれかに記載の処理装置（１）。
［項目９］
項目１から８のいずれかに記載の処理装置（１）を備えることを特徴とする車載端末装置（７）。
［項目１０］
少なくとも使用するメモリ空間が隔離されている、通常実行環境とセキュア実行環境を有する処理装置の起動方法であって、
プログラムまたはデータの完全性を確認するための検証が必要なプログラムまたはデータの識別情報、及び各プログラムまたはデータの検証に必要な期待値を含む検証リストを、セキュア実行環境下で使用されるセキュア記憶領域に格納するステップと、
前記検証リスト内から前記検証が必要なプログラムまたはデータの識別情報を抽出して、通常実行環境に渡すステップと、
セキュア実行環境から渡された前記プログラムまたはデータの識別情報を、通常実行環境下で使用される通常記憶領域に格納するステップと、
通常実行環境下において、前記プログラムまたはデータの識別情報を参照して、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータであるか否かを判定し、検証が必要なプログラムまたはデータである場合、対象のプログラムまたはデータの検証をセキュア実行環境側に依頼するステップと、
を備えることを特徴とする処理装置の起動方法。
［項目１１］
少なくとも使用するメモリ空間が隔離されている、通常実行環境とセキュア実行環境を有する処理装置の起動プログラムであって、
プログラムまたはデータの完全性を確認するための検証が必要なプログラムまたはデータの識別情報、及び各プログラムまたはデータの検証に必要な期待値を含む検証リストを、セキュア実行環境下で使用されるセキュア記憶領域に格納する機能と、
前記検証リスト内から前記プログラムまたはデータの識別情報を抽出して、通常実行環境に渡す機能と、
セキュア実行環境から渡された前記プログラムまたはデータの識別情報を、通常実行環境下で使用される通常記憶領域に格納する機能と、
通常実行環境下において、前記プログラムのリストを参照して、対象のプログラムまたはデータが、検証が必要なプログラムまたはデータであるか否かを判定し、検証が必要なプログラムまたはデータである場合、対象のプログラムまたはデータの検証をセキュア実行環境側に依頼する機能と、
をコンピュータに実行させることを特徴とする処理装置の起動プログラム。
【符号の説明】
【００５４】
１  処理装置、  ２  表示部、  ３  音声出力部、  ４  操作部、  ５  ＧＰＳ受信部、  ６  無線通信部、  ７  車載端末装置、  １０  処理部、  １１  通常処理部、  １２  セキュア処理部、  ２０  揮発性記憶部、  ２１  通常記憶領域、  ２２  セキュア記憶領域、  ３０  不揮発性記憶部、  ４０  バス。
【産業上の利用可能性】
【００５５】
本発明は、カーナビゲーションシステムやディスプレイオーディオ等のヘッドユニットに利用可能である。
【図１】
0006422059.tif 000002
【図２】
0006422059.tif 000003
【図３】
0006422059.tif 000004
【図４】
0006422059.tif 000005
【図５】
0006422059.tif 000006