(57)【要約】【課題】プロセッサの処理能力や数が制約されていても、起動時間を守りつつ、セキュリティを確保することができるコンピュータシステムを提供すること。【解決手段】コンピュータシステムは、互いに通信可能な第１のコンピュータ及び第２のコンピュータを有し、第１のコンピュータは、第２のコンピュータとの通信を行うための第１のプログラム、第１の署名、第２のプログラム及び第２の署名を記憶する記憶部と、ブート処理において、第１のプログラムを検証する第１の検証部と、第２のプログラム及び第２の署名の少なくとも一部を送信する第１の送信部と、第２のプログラムの検証結果を受信するまで、第２のプログラムの投機実行を行い、又は第２のプログラムの実行を停止する実行調整部と、を備え、第２のコンピュータは、第２のプログラムを検証する第２の検証部と、第２のプログラムの検証結果を送信する第２の送信部と、を備える。【選択図】図５
2019105985.tif 000002
【特許請求の範囲】
【請求項１】
互いに通信可能に接続された第１のコンピュータ及び第２のコンピュータを有するコンピュータシステムであって、
前記第１のコンピュータは、
前記第２のコンピュータとの通信を行うための第１のプログラム、前記第１のプログラムの署名である第１の署名、前記第１のプログラム以外の第２のプログラム及び前記第２のプログラムの署名である第２の署名を記憶する記憶部と、
前記第１のコンピュータのブート処理において、前記第１のプログラムを前記第１の署名を用いて検証する第１の検証部と、
前記第２のプログラム及び前記第２の署名の少なくとも一部を前記第２のコンピュータに送信する第１の送信部と、
前記第２のコンピュータから前記第２のプログラムの検証結果を受信するまで、前記第２のプログラムの投機実行を行い、又は前記第２のプログラムの実行を停止する実行調整部と、
を備え、
前記第２のコンピュータは、
前記第２のプログラムを前記第２の署名を用いて検証する第２の検証部と、
前記第２のプログラムの検証結果を前記第１のコンピュータに送信する第２の送信部と、
を備えるコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関する。
【背景技術】
【０００２】
現代の自動車は、ＥＣＵ（Electronic  Control  Unit）と呼ばれるマイコンが複数搭載されており、これらのＥＣＵを使用して各部を制御している。また、運転支援技術や自動運転技術の普及に伴い、これらの制御の高度化が進み、ＥＣＵで使用されるプログラムを書き換える機会が増加している。さらに、ＥＣＵの中には、プログラムが意図されていない動作を引き起こしてしまうことを回避するため、プログラムを実行する前にプログラム検証という高負荷な処理を行うものがある。
【０００３】
例えば、特許文献１には、複数のソフトウエアを実行する第１ドメインと、第１ドメインと独立して動作し、複数のソフトウエアの各々が安全か否かを検査する第２ドメインとを備え、第２ドメインは、第１ドメインによって実行される複数のソフトウエアの実行優先順序を記憶する実行順序記憶部と、実行順序記憶部に記憶されている実行優先順序に従って、複数のソフトウエアが安全であるか否かを検査するソフトウエア検査部と、複数のソフトウエアの内、安全ではないという検査結果が得られたソフトウエアの第１ドメインによる実行を、複数のソフトウエアの全ての検査が完了する前に制限する実行制限部と、を備えることを特徴とする端末装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４９０３８１８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、自動車に搭載されているＥＣＵは、起動時間が定められているにも関わらず、例えば、コスト、動作時の発熱量及びバッテリー消費量を抑える必要があるため、プロセッサの処理能力が制約されていることが多い。また、自動車に搭載されているＥＣＵは、プロセッサを一つしか備えていないことが多いため、プロセッサの起動中や動作中の空き時間を最大限に利用してもプログラム検証を完了させることができないことが多い。
【０００６】
そこで、本発明は、プロセッサの処理能力や数が制約されていても、起動時間を守りつつ、セキュリティを確保することができるコンピュータシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様に係るコンピュータシステムは、互いに通信可能に接続された第１のコンピュータ及び第２のコンピュータを有するコンピュータシステムであって、前記第１のコンピュータは、前記第２のコンピュータとの通信を行うための第１のプログラム、前記第１のプログラムの署名である第１の署名、前記第１のプログラム以外の第２のプログラム及び前記第２のプログラムの署名である第２の署名を記憶する記憶部と、前記第１のコンピュータのブート処理において、前記第１のプログラムを前記第１の署名を用いて検証する第１の検証部と、前記第２のプログラム及び前記第２の署名の少なくとも一部を前記第２のコンピュータに送信する第１の送信部と、前記第２のコンピュータから前記第２のプログラムの検証結果を受信するまで、前記第２のプログラムの投機実行を行い、又は前記第２のプログラムの実行を停止する実行調整部と、を備え、前記第２のコンピュータは、前記第２のプログラムを前記第２の署名を用いて検証する第２の検証部と、前記第２のプログラムの検証結果を前記第１のコンピュータに送信する第２の送信部と、を備える。
【発明の効果】
【０００８】
本発明によれば、プロセッサの処理能力や数が制約されていても、起動時間を守りつつ、セキュリティを確保することができるコンピュータシステムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るコンピュータシステムのハードウエア構成の例を示す図である。
【図２】実施形態に係る第１のプログラム、第２のプログラム、第１の署名及び第２の署名の例を示す図である。
【図３】実施形態に係る第１のコンピュータのソフトウエア構成の例を示す図である。
【図４】実施形態に係る第２のコンピュータのソフトウエア構成の例を示す図である。
【図５】実施形態に係る第１のコンピュータ及び第２のコンピュータが行う処理の例を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
添付図面を参照して、本発明の好適な実施形態について説明する。なお、各図において、同一の符号を付したものは同一又は同様の構成を有する。
【００１１】
図１から図４を参照しながら、実施形態に係るコンピュータシステムについて説明する。コンピュータシステム１は、図１に示すように、第１のコンピュータ１０１、１０２、…、１０ｎ（ｎ：２以上の自然数）と、第２のコンピュータ２０１とを有する。これらｎ個の第１のコンピュータは、例えば、自動車に搭載されているマイコンの一種である制御ＥＣＵであり、自動車の各部を制御する。第２のコンピュータ２０１は、例えば、自動車に搭載されているマイコンの一種であるゲートウエイＥＣＵであり、ｎ個の制御ＥＣＵの連係動作を仲介する。
【００１２】
図１に示すように、第１のコンピュータ１０１、第１のコンピュータ１０２、…及び第１のコンピュータ１０ｎは、それぞれ処理部１１１及び記憶部１２１と、処理部１１２及び記憶部１２２と、…、処理部１１ｎ及び記憶部１２ｎとを有する。また、第２のコンピュータ２０１は、処理部２１１及び記憶部２２１を有する。これらの処理部は、プロセッサ、例えば、ＣＰＵ（Central  Processing  Unit）を含む。また、これらの記憶部は、例えば、ＲＯＭ（Read  Only  Memory）、ＲＡＭ（Random  Access  Memory）である。また、第１のコンピュータ１０１、１０２、…、１０ｎと、第２のコンピュータ２０１とは、バスＢにより互いに通信可能に接続されている。
【００１３】
記憶部１２１は、図２に示した第１のプログラムＰ、第１の署名ＳＰ、第２のプログラムＡ及び第２の署名ＳＡを記憶している。また、同様に、記憶部１２２、…、１２ｎも、第１のプログラムＰ、第１の署名ＳＰ、第２のプログラムＡ及び第２の署名ＳＡを記憶している。
【００１４】
第１のプログラムＰは、第２のコンピュータ２０１との通信に必要なプログラムであり、オペレーティングシステム（ＯＳ：Operating  System）Ｐ１、初期化Ｐ２、割込／例外Ｐ３及び入出力Ｐ４の四種類のコードを含む。第１の署名ＳＰは、第１のプログラムＰの署名であり、署名ＳＰ１、署名ＳＰ２、署名ＳＰ３及び署名ＳＰ４を含む。また、署名ＳＰ１、署名ＳＰ２、署名ＳＰ３及び署名ＳＰ４は、それぞれオペレーティングシステムＰ１、初期化Ｐ２、割込／例外Ｐ３及び入出力Ｐ４から計算したハッシュ値を暗号化したものである。
【００１５】
オペレーティングシステムＰ１は、第１のコンピュータ１０１、１０２、…、１０ｎを動作させる上で基本的かつ中核的なコードである。初期化Ｐ２は、第１のコンピュータ１０１、１０２、…、１０ｎを初期化するためのコードである。割込／例外Ｐ３は、第１のコンピュータ１０１、１０２、…又は１０ｎが実行中の処理を中断し、他の処理を強制的に行わせる割込及び第１のコンピュータ１０１、１０２、…又は１０ｎが実行中のプログラムの通常の動作を妨げる事象が発生した際に行われる例外処理を行うためのコードである。入出力Ｐ４は、オペレーティングシステムＰ１から第１のコンピュータ１０１、１０２、…、又は１０ｎに含まれるハードウエアを利用するためのコードである。なお、これらのコードは、いずれも第１のプログラムＰの構成要素である。
【００１６】
第２のプログラムＡは、第２のコンピュータ２０１との通信に必ずしも必要ではないプログラムであり、アプリケーションＡ１、Ａ２、…、Ａｎを含む。第２の署名ＳＡは、第２のプログラムＡの署名であり、これらｎ個のコード各々に付随するｎ個の署名ＳＡ１、ＳＡ２、…、ＳＡｎを含む。また、署名ＳＡ１、ＳＡ２、…、ＳＡｎは、それぞれアプリケーションＡ１、Ａ２、…、Ａｎから計算したハッシュ値を暗号化したものである。
【００１７】
図３に示すように、第１のコンピュータ１０１は、第１の検証部１０１１と、第１の認証部１０１２と、第１の送信部１０１３と、実行調整部１０１４とを有する。また、第１のコンピュータ１０２、…、１０ｎも、同様のソフトウエア構成を有する。以下、第１のコンピュータ１０１を例に挙げて第１のコンピュータ１０１、１０２、…、１０ｎに関する説明を記載する。
【００１８】
第１の検証部１０１１は、第１のコンピュータ１０１のブート処理において、第１のプログラムＰを第１の署名ＳＰを用いて検証する。この処理は、第１のプログラムＰの実行前にコード検証を行う処理であり、セキュアブートと呼ばれる。コード検証とは、プログラムに不正なコードが混入していないことを当該プログラムを構成するコードごとに確認する処理である。また、コード検証は、コードからハッシュ値を計算する高負荷な処理及び署名を復号してハッシュ値を取り出す高負荷な処理を含む。コードからハッシュ値を計算する処理の負荷は、コード量に比例して増加する。署名を復号してハッシュ値を取り出す処理の負荷は、第三者が解読することができる確率が低い程、増加する。なお、第１の検証部１０１１が行うコード検証の手法は、特に限定されない。
【００１９】
例えば、第１の検証部１０１１は、図２に示したオペレーティングシステムＰ１から計算したハッシュ値と署名ＳＰ１を復号して取り出したハッシュ値とが一致するか否かを判定する。第１の検証部１０１１は、両者が一致する場合、オペレーティングシステムＰ１に不正なコードが混入していない判定し、両者が一致しない場合、不正なコードが混入していると判定する。例えば、第１のコンピュータ１０１は、不正なコードが混入していないと判定された場合、オペレーティングシステムＰ１を実行し、不正なコードが混入していると判定された場合、オペレーティングシステムＰ１を実行しない。
【００２０】
また、第１の検証部１０１１は、第２のコンピュータ２０１に第２のプログラムＡのコード検証を要求する。さらに、第１の検証部１０１１は、当該コード検証と合わせて、検証を要求するコードのＩＤ及びデータ量の少なくとも一方を送信してもよい。
【００２１】
第１の認証部１０１２は、第２のコンピュータ２０１との間で相互認証を行う。具体的には、第１の認証部１０１２は、第２のコンピュータ２０１に乱数を送信する。この乱数は、ＨＳＭ（Hardware  Security  Module）により生成され、第２のコンピュータ２０１に対応する鍵を使って暗号化される。また、第１の認証部１０１２は、第２のコンピュータ２０１に送信した乱数と第２のコンピュータ２０１が第１のコンピュータ１０１に対応する鍵を使って復号し送り返してきた乱数とが一致するか否かを判定する。第１の認証部１０１２は、両者が一致する場合、通信相手である第２のコンピュータ２０１が正当であると判定し、両者が一致しない場合、通信相手である第２のコンピュータ２０１が正当ではないと判定する。
【００２２】
第１の送信部１０１３は、第２のプログラムＡ及び第２の署名ＳＡの少なくとも一部を第２のコンピュータ２０１に送信する。例えば、第１の送信部１０１３は、アプリケーションＡ１及び署名ＳＡ１を通信単位以下のデータ量を有するデータに分割し、これらのデータを順番に送信する。また、第１の送信部１０１３は、アプリケーションＡ２、…Ａｎ、オペレーティングシステムＰ１、初期化Ｐ２、割込／例外Ｐ３及び入出力Ｐ４についても同様の方法で第２のコンピュータ２０１に送信してもよい。
【００２３】
なお、第１の送信部１０１３は、第２のプログラムＡ及び第２の署名ＳＡを第２のコンピュータ２０１に送信する前に、第２のプログラムＡ及び第２の署名ＳＡに通信エラー検出用データを付加して暗号化してもよい。通信エラー検出用データは、例えば、分割されたデータのビット数の合計値であり、当該データの末尾に付される。暗号化の手法は、例えば、ネットワークの規格としてイーサネット（登録商標）（Ethernet）が採用されている場合、ＭＡＣｓｅｃ（Media/Medium  Access  Control  Security）、ＩＰｓｅｃ（Security  Architecture  for  Internet  Protocol）である。
【００２４】
これにより、第１の送信部１０１３は、ノイズの混入や書き換えにより送信中に破壊されてしまった第２のプログラムＡ又は第２の署名ＳＡに基づいて第２のコンピュータ２０１がコード検証を行い、誤った判定をしてしまうことを回避することができる。
【００２５】
実行調整部１０１４は、第２のコンピュータ２０１から第２のプログラムＡの検証結果を受信するまで、第２のプログラムＡの投機実行を行い、又は第２のプログラムＡの実行を保留する。また、実行調整部１０１４は、コードのハッシュ値と署名のハッシュ値とが一致することを示す情報を受信した場合、第２のプログラムＡの実行を継続又は開始し、両者が一致しないことを示す情報を受信した場合、第２のプログラムＡの投機実行を中断する。
【００２６】
図４に示すように、第２のコンピュータ２０１は、第２の認証部２０１１と、第２の検証部２０１２と、第２の送信部２０１３とを有する。
【００２７】
第２の認証部２０１１は、第１のコンピュータ１０１との間で相互認証を行う。具体的には、第２の認証部２０１１は、第１のコンピュータ１０１に乱数を送信する。この乱数は、ＨＳＭにより生成され、第１のコンピュータ１０１に対応する鍵を使って暗号化される。また、第２の認証部２０１１は、第１のコンピュータ１０１に送信した乱数と第１のコンピュータ１０１が第２のコンピュータ２０１に対応する鍵を使って復号し送り返してきた乱数とが一致するか否かを判定する。第２の認証部２０１１は、両者が一致する場合、通信相手である第２のコンピュータ１０１が正当であると判定し、両者が一致しない場合、通信相手である第１のコンピュータ１０１が正当ではないと判定する。
【００２８】
第２の検証部２０１２は、第１の検証部１０１１から受けたコード検証の要求に対し、コード検証が可能であることを示す情報を送信する。
【００２９】
第２の検証部２０１２は、第２のプログラムＡを第２の署名ＳＡを用いて検証する。すなわち、第２の検証部２０１２は、第２のプログラムＡのコード検証を行う。なお、第２の検証部２０１２が行うコード検証の手法は、特に限定されない。また、第２の検証部２０１２は、第２のプログラムＡ及び第２の署名ＳＡの暗号を解く鍵及び第２の署名ＳＡからハッシュ値を取り出すための鍵をＨＳＭから取り出すことができる。
【００３０】
さらに、第２の検証部２０１２は、第２のプログラムＡのコード検証を行う前に、通信エラー検出用データに基づいて、第２のプログラムＡ及び第２の署名ＳＡが破壊されていないかを確認してもよい。また、第２の検証部２０１２は、第２のプログラムＡのコード検証を行うためのプログラム等のコード検証を行うことができる。
【００３１】
第２の送信部２０１３は、第２のプログラムＡの検証結果を第１のコンピュータ１０１に送信する。具体的には、第２の送信部２０１３は、コードのハッシュ値と署名のハッシュ値とが一致すると判定した場合、その旨を示す情報を第１のコンピュータ１０１に送信し、両者が一致しないと判定した場合、その旨を示す情報を第１のコンピュータ１０１に送信する。
【００３２】
次に図５を参照しながら、実施形態に係るコンピュータシステムが行う好適な処理について説明する。以下、第１のコンピュータ１０１を例に挙げてコンピュータシステム１が行う処理を説明するが、第１のコンピュータ１０２、…１０ｎについても同様である。
【００３３】
ステップＳ１において、第１の検証部１０１１は、第２のコンピュータ２０１との通信に必要なコードを認証する。
【００３４】
ステップＳ２において、第１の認証部１０１２は、第２のコンピュータ２０１に乱数を送信する。
【００３５】
ステップＳ３において、第２の認証部２０１１は、第１のコンピュータ１０１に乱数を送信する。
【００３６】
ステップＳ４において、第１の認証部１０１２は、ステップＳ２で送信された乱数とステップＳ３で送信された乱数とが一致することを確認する。
【００３７】
ステップＳ５において、第２の認証部２０１１は、第１のコンピュータ１０１に乱数を送信する。
【００３８】
ステップＳ６において、第１の認証部１０１２は、第２のコンピュータ２０１に乱数を送信する。
【００３９】
ステップＳ７において、第２の認証部２０１１は、ステップＳ５で送信された乱数とステップＳ６で送信された乱数とが一致することを確認する。
【００４０】
ステップＳ８において、第１の検証部１０１１は、第２のプログラムＡのコード検証を要求する。
【００４１】
ステップＳ９において、第２の検証部２０１２は、第２のプログラムＡのコード検証が可能であることを示す情報を送信する。
【００４２】
ステップＳ１０において、第１の送信部１０１３は、第２のプログラムＡ及び第２の署名ＳＡの少なくとも一部を送信する。
【００４３】
ステップＳ１１において、第２の検証部２０１２は、第２のプログラムＡのコード検証を行う。また、第２の検証部２０１２は、コードのハッシュ値と署名のハッシュ値とが一致する場合、処理をステップＳ１３へ進め、両者が一致しない場合、処理をステップＳ１５へ進める。
【００４４】
ステップＳ１２において、実行調整部１０１４は、第２のプログラムＡの投機実行を行い、又は第２のプログラムＡの実行を保留する。また、ステップＳ１２は、図５に示すように、ステップＳ１１と並行して実行される。
【００４５】
ステップＳ１３において、第２の送信部２０１３は、コードのハッシュ値と署名のハッシュ値とが一致することを示す情報を送信し、処理をステップＳ１４へ進める。
【００４６】
ステップＳ１４において、実行調整部１０１４は、第２のプログラムＡの実行を継続又は開始する。
【００４７】
ステップＳ１５において、第２の送信部２０１３は、コードのハッシュ値と署名のハッシュ値とが一致しないことを示す情報を送信し、処理をステップＳ１６へ進める。
【００４８】
ステップＳ１６において、実行調整部１０１４は、第２のプログラムＡの投機実行を中断し、処理を終了させる。
【００４９】
なお、コンピュータシステム１は、図５に示したステップＳ２からステップＳ４を実行しなくてもよい。
【００５０】
以上、本発明の一例である実施形態について説明した。実施形態に係るコンピュータシステム１は、互いに通信可能に接続された第１のコンピュータ１０１、１０２、…、１０ｎ及び第２のコンピュータ２０１を有するコンピュータシステム１であって、例えば、第１のコンピュータ１０１は、第２のコンピュータ２０１との通信を行うための第１のプログラムＰ、第１のプログラムＰの署名である第１の署名ＳＰ、第１のプログラムＰ以外の第２のプログラムＡ及び第２のプログラムＡの署名である第２の署名ＳＡを記憶する記憶部１２１と、第１のコンピュータ１０１のブート処理において、第１のプログラムＰを第１の署名ＳＰを用いて検証する第１の検証部１０１１と、第２のプログラムＡ及び第２の署名ＳＡの少なくとも一部を第２のコンピュータ２０１に送信する第１の送信部１０１３と、第２のコンピュータ２０１から第２のプログラムＡの検証結果を受信するまで、第２のプログラムＡの投機実行を行い、又は第２のプログラムＡの実行を保留する実行調整部１０１４と、を備え、第２のコンピュータ２０１は、第２のプログラムＡを第２の署名ＳＡを用いて検証する第２の検証部２０１２と、第２のプログラムＡの検証結果を第１のコンピュータ１０１に送信する第２の送信部２０１３と、を備える。
【００５１】
このため、コンピュータシステム１は、例えば、第１のコンピュータ１０１が一つの処理部１１１しか有しておらず、かつ、処理部１１１の処理能力が限られていたとしても、起動時間内にセキュアブートを確実に完了させることができる。つまり、コンピュータシステム１は、プロセッサの処理能力や数が制約されていても、起動時間を守りつつ、セキュリティを確保することができる。
【００５２】
なお、例えば、第１のコンピュータ１０１は、第２のプログラムＡのコード検証を、第２のコンピュータ２０１ではなく、第１のコンピュータ１０２、…、１０ｎのいずれか一つに実行させてもよい。また、第１のコンピュータ１０１は、第２のプログラムＡのコード検証を、第１のコンピュータ１０２、…、１０ｎ及び第２のコンピュータ２０１のうちの少なくとも二つに手分けして実行させてもよい。
【００５３】
本発明は、上述した実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形態で実施することができる。このため、上述した実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述した各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更し、又は並列に実行することができる。
【符号の説明】
【００５４】
１…コンピュータシステム、１０１，１０２，１０ｎ…第１のコンピュータ、１１１，１１２，１１ｎ，２１１…処理部、１２１，１２２，１２ｎ，２２１…記憶部、２０１…第２のコンピュータ、１０１１…検証部、１０１２…認証部、１０１３…送信部、１０１４…実行調整部、２０１１…認証部、２０１２…検証部、２０１３…送信部、Ａ…第２のプログラム、Ａ１，Ａ２，Ａｎ…アプリケーション、Ｂ…バス、Ｐ…第１のプログラム、Ｐ１…オペレーティングシステム、Ｐ２…初期化、Ｐ３…割込／例外、Ｐ４…入出力、ＳＡ…第２の署名、ＳＡ１，ＳＡ２，ＳＡｎ，ＳＰ１，ＳＰ２，ＳＰ３，ＳＰ４…署名、ＳＰ…第１の署名
【図１】
2019105985.tif 000003
【図２】
2019105985.tif 000004
【図３】
2019105985.tif 000005
【図４】
2019105985.tif 000006
【図５】
2019105985.tif 000007