(57)【要約】      （修正有）【課題】第１の検証が突破・回避されても、第２の検証により、不正メッセージから対象装置を保護することができる演算装置を提供する。【解決手段】演算装置１は、演算処理を行う第１コア１１、第２コア１２および１以上のその他のコアを備える。第１コアは、演算装置の外部から受信するメッセージに対して１回目の検証処理を行う第１検証部３１を有する。第２コアは、メッセージに含まれる識別情報に基づき、メッセージに対する２回目の検証処理を当該第２コアが実行するか否かを判断する検証先判断処理部３４を有する。【選択図】図２
2020177504.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を行う第１コア、第２コア、および１以上のその他のコアである他コアを備える演算装置であって、
前記第１コアは、前記演算装置の外部から受信するメッセージに対して１回目の検証処理を行う第１検証部を有し、
前記第２コアは、前記メッセージに含まれる識別情報に基づき、前記メッセージに対する２回目の検証処理を当該第２コアが実行するか否かを判断する検証先判断処理部を有する演算装置。
【請求項２】
請求項１に記載の演算装置において、
前記第２コアは、前記検証先判断処理部が前記２回目の検証処理を前記第２コアが実行しないと判断すると、前記識別情報に基づき前記他コアのいずれが前記２回目の検証処理を実行するかを特定して前記２回目の検証処理の実行を依頼する検証依頼処理部をさらに有する演算装置。
【請求項３】
請求項１に記載の演算装置において、
前記他コアは１つのコアであり、
前記第２コアは、前記検証先判断処理部が前記２回目の検証処理を前記第２コアが実行しないと判断すると、前記他コアに前記２回目の検証処理の実行を依頼する検証依頼処理部をさらに有する演算装置。
【請求項４】
請求項１に記載の演算装置において、
前記他コアは、前記１回目の検証処理および前記２回目の検証処理において異常が発見されないと前記メッセージに含まれる情報に基づき前記第１コア、前記第２コア、および前記他コアの少なくとも１つのコアに権限を付与する権限付与部を有する演算装置。
【請求項５】
請求項１に記載の演算装置において、
前記第２コアは、前記検証先判断処理部が前記２回目の検証処理を前記第２コアが実行すると判断すると、当該第２コアが前記２回目の検証処理を実行する演算装置。
【請求項６】
請求項２に記載の演算装置において、
前記演算装置は車両に搭載され、
前記演算装置は前記車両の外部向け通信バスおよび内部向け通信バスに接続され、
前記第１コアおよび前記第２コアは前記外部向け通信バスとのメッセージの送受信を実行し、
前記他コアに含まれる第３コアは、前記内部向け通信バスとのメッセージの送受信を実行し、
前記第２コアの前記検証先判断処理部および前記検証依頼処理部は、前記識別情報に基づき前記２回目の検証処理を当該第２コアが実行すると判断する場合であっても、前記メッセージの指示内容が所定の条件に合致する場合は前記２回目の検証処理を前記第３コアが実行すると判断する演算装置。
【請求項７】
演算処理を行う３つ以上のコアを備える演算装置であって、
前記演算装置の外部からメッセージを受信するインタフェース部と、
前記メッセージに対して１回目の検証処理を行う第１検証部と、
前記メッセージに対して２回目の検証処理を行う第２検証部と、
前記メッセージに含まれる識別情報に基づき、前記２回目の検証処理を実行する前記コアを特定する特定部とを備え、
前記第１検証部および前記第２検証部は異なる前記コアにより実現される演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置に関する。
【背景技術】
【０００２】
自動車の車載システムはセンタシステムや車外の装置と繋がりつつある。これにともない、車外からのサイバーセキュリティ攻撃に対する備えが重要になってきている。しかしながら、車載システムに搭載される制御装置の多くは限られたリソースで動作している。特許文献１には、複数のプロセッサのそれぞれが有するリソースを相互に利用させながら処理を実行させるマルチプロセッサシステムであって、第一のプロセッサによる第二のプロセッサのリソースを用いた該第二のプロセッサに属する処理の実行を許可するか否かを判定する実行許否判定手段、を備えることを特徴とするマルチプロセッサシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１７６６４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている発明では、安全対策が十分でない。特に、マルチプロセッサコアが搭載された環境において、不正なメッセージを受信した際に、第１の検証が突破・回避された際の対策が十分でない。
【課題を解決するための手段】
【０００５】
本発明の第１の態様による演算装置は、演算処理を行う第１コア、第２コア、および１以上のその他のコアである他コアを備える演算装置であって、前記第１コアは、前記演算装置の外部から受信するメッセージに対して１回目の検証処理を行う第１検証部を有し、前記第２コアは、前記メッセージに含まれる識別情報に基づき、前記メッセージに対する２回目の検証処理を当該第２コアが実行するか否かを判断する検証先判断処理部を有する。
本発明の第２の態様による演算装置は、演算処理を行う３つ以上のコアを備える演算装置であって、前記演算装置の外部からメッセージを受信するインタフェース部と、前記メッセージに対して１回目の検証処理を行う第１検証部と、前記メッセージに対して２回目の検証処理を行う第２検証部と、前記メッセージに含まれる識別情報に基づき、前記２回目の検証処理を実行する前記コアを特定する特定部とを備え、前記第１検証部および前記第２検証部は異なる前記コアにより実現される。
【発明の効果】
【０００６】
本発明によれば、マルチプロセッサコアが搭載された環境において、不正なメッセージを受信した際に、第１の検証が突破・回避されても、第２の検証により、不正メッセージから対象装置を保護することができる。
【図面の簡単な説明】
【０００７】
【図１】演算装置のハードウエア構成図
【図２】演算装置の機能構成図
【図３】検証判断情報の一例を示す図
【図４】検証依頼先情報の一例を示す図
【図５】権限管理情報の一例を示す図
【図６】認証システムの全体処理シーケンス図
【図７】図６における第１コアの動作を示すフローチャート
【図８】図６における第２コアの動作を示すフローチャート
【図９】図６における第３コアの動作を示すフローチャート
【図１０】変形例３における演算装置の機能構成図
【発明を実施するための形態】
【０００８】
―実施の形態―
以下、図１〜図９を参照して、本発明に係る演算装置の実施の形態を説明する。
【０００９】
（ハードウエア構成）
図１は、本発明に係る演算装置１のハードウエア構成図である。演算装置１は、通信バス４を介して、第１コア１１、第２コア１２、第３コア１３、インタフェース部５、ＲＡＭ６、ＲＯＭ７が接続されている。ＲＯＭ７に格納されたプログラムを第１コア１１、第２コア１２、および第３コア１３がＲＡＭ６に展開して実行することにより後述する機能を実現する。以下では、第１コア１１、第２コア１２、および第３コア１３をまとめてコア１０と呼ぶ。第１コア１１、第２コア１２、および第３コア１３のそれぞれは物理コアであり、それぞれが独立してパッケージ化されてもよいし、コア１０が１つのパッケージに封入されてもよい。
【００１０】
なおＲＯＭ７には、検証判断情報７００、検証依頼先情報８００、および権限管理情報９００が格納される。検証判断情報７００、検証依頼先情報８００、および権限管理情報９００はコア１０により参照される。検証判断情報７００、検証依頼先情報８００、および権限管理情報９００の具体的な説明は後述する。
【００１１】
インタフェース部５は、演算装置１の外部からの通信メッセージを受信し、ＲＡＭ６に保存する。またインタフェース部５は、ＲＡＭ６またはＲＡＭ７に保存された情報を通信メッセージとして演算装置１の外部に送信する。インタフェース部５が対応する通信バスの規格は、ＣＡＮ（登録商標）、ＬＩＮ（登録商標）、ＦｌｅｘＲａｙ（登録商標）、イーサネット（登録商標）などである。インタフェース部５は少なくとも１つの通信規格に対応すればよい。
【００１２】
通信メッセージとは、通信により授受される電子データであり、「パケット」、「データフレーム」、「データグラム」などとも呼ばれる。また通信メッセージは「パケット」などのそのものでなくてもよく、たとえば複数の「パケット」などを所定の手順により結合や復号をしたものであってもよい。さらに通信メッセージは、ヘッダを含めた全体であってもよいし、ヘッダを除いたペイロードのみでもよい。
【００１３】
（機能構成）
図２は、演算装置１の機能構成図である。演算装置１は、第１バス２１と、第２バス２２と、第３バス２３とに接続される。演算装置１はたとえば車両に搭載され、第１バス２１および第２バス２２は車両の外部に接続される通信バスであり、第３バス２３は車両の内部に接続される通信バスである。第２バス２２は「内部向け通信バス」、第３バス２３は「外部向け通信バス」と呼ぶこともできる。たとえば不図示の無線通信ユニットが車両の外部から受信したメッセージが第１バス２１や第２バス２２を経由して演算装置１に入力され、演算装置１を介して車両内部の第３バス２３に出力される。第３バス２３には、車両を制御する電子制御装置が接続される。本実施の形態では、第１バス２１を介して演算装置１が受信した通信メッセージの真正性の検証を説明する動作を主に説明する。
【００１４】
図２に示す通信バスとコア１０の関係は観念的なものであり、それぞれの通信バスから入力されるメッセージは、接続されたコア１０が初めに処理を行う。たとえば本実施の形態で主に説明する状況である、演算装置１が第１バス２１からメッセージを受信した場合には、第１コア１１が初めに処理を行う。具体的には第１コア１１が最初の検証を行い、他のコアが２番目の検証を行う。詳しくは後述する。なお以下では、最初の検証を「第１検証」や「第１の検証」と呼ぶことがある。なお以下では、２回目の検証を「第２検証」や「第２の検証」と呼ぶことがある。
【００１５】
なお第１バス２１、第２バス２２、および第３バス２３のそれぞれは、物理的に複数の通信バスであってもよい。第１バス２１、第２バス２２、および第３バス２３のそれぞれが対応する通信バスの規格はすべて同一でもよいし異なっていてもよい。第１バス２１、第２バス２２、および第３バス２３が対応する通信バスの規格は図１に示したインタフェース部５の規格などである。
【００１６】
演算装置１はその機能として、第１検証部３１、第２検証部３２、制御部３３、検証先判断処理部３４、検証依頼処理部３５、および権限管理部３６を備える。本実施の形態では、第１コア１１が第１検証部３１を実行し、第２コア１２が第２検証部３２、制御部３３、検証先判断処理部３４、および検証依頼処理部３５を実行し、第３コア１３が第２検証部３２、制御部３３、および権限管理部３６を実行する。
【００１７】
第２検証部３２および制御部３３は、第２コア１２と第３コア１３の両方で実行される。これは、２つのコアが協力して１つの処理を行うことを意味しているのではなく、それぞれのコアが独立して処理を実行可能であることを意味する。すなわち第２検証部３２および制御部３３のそれぞれは、第２コア１２により実行されることもあるし、第３コア１３により実行されることもある。いずれのコアが上述の処理を行うかは後述する。なお第２検証部３２および制御部３３は、ある入力に対して同一の出力が得られることから実行するコアを問わず同一の符号を付しており、それぞれを実現する手段が異なってもよい。たとえば第２コア１２が第２検証部３２を実現するためのプログラムコードと、第３コア１３が第２検証部３２を実現するためのプログラムコードとが同一でなくてもよい。
【００１８】
第１検証部３１および第２検証部３２は、演算装置１が受信した通信メッセージの真正性を検証する。第１検証部３１と第２検証部３２は、異なるコアにより実行される。本実施の形態では主に、前述のとおり、第１バス２１を介して演算装置１が受信した通信メッセージの真正性の検証を説明する。そのため、最初に通信メッセージの検証を行う第１コア１１の検証部を、便宜的に第２コア１２や第３コア１３の検証部とは異なる名称としている。第１検証部３１および第２検証部３２は同一の手法により通信メッセージの真正性を検証してもよいし、異なる手法により通信メッセージの真正性を検証してもよい。
【００１９】
第２コア１２により実行される検証先判断処理部３４は、通信メッセージの２番目の検証、すなわち第２検証部３２の動作を、第２コア１２自身が実行するか否かを判断する。第２コア１２により実行される検証依頼処理部３５は、検証先判断処理部３４が通信メッセージの２番目の検証を、自身以外のプロセッサコアに依頼すべきと判断した場合、所定のルールに該当するプロセッサコアに対して、通信メッセージの検証を依頼する。
【００２０】
第２コア１２および第３コア１３により実行される制御部３３は、与えられた権限に従って、所定の処理を実行する。
【００２１】
第２コア１２および第３コア１３により実行される権限管理部３６は、処理内容に応じてそれぞれのコア１０に付与する権限を制御する。権限の制御とはたとえば、ＲＡＭ６の特定の領域へのアクセスの許可である。権限管理部３６は、第２検証部３２の検証結果において真正性を確認された処理内容に対してだけ権限を制御する。すなわち第１検証部３１および第２検証部３２のいずれかにより真正性が確認できない場合には、権限を変更しない。なお権限管理部３６は、車外と直接接続されない第３コア１３にのみ備えられることが好ましい。
【００２２】
（検証判断情報７００）
図３は検証判断情報７００の一例を示す図である。検証判断情報７００は、複数のレコードを有し、各レコードは処理ＩＤ７０１および処理可否７０２のフィールドを有する。処理ＩＤ７０１は、実行する処理内容を識別するための識別子である。処理ＩＤ７０１は識別が可能であればフォーマットは問わず、図３に示すように何らかの数値でもよいし、ＩＰアドレスなどでもよい。処理可否７０２は、同一レコードの処理ＩＤ７０１を有する通信メッセージを第２コア１２自身が処理するか否かを示す。図３に示す例では「１」は第２コア１２自身が処理することを示し、「０」は第２コア１２以外のコアが処理することを示す。処理ＩＤ７０１は、通信メッセージに含まれていてもよく、通信メッセージごとに処理ＩＤが区別される場合は通信ＩＤを処理ＩＤとして使用してもよい。
【００２３】
検証先判断処理部３４は、検証判断情報７００を参照することで、受信した通信メッセージを第２コア１２が処理するか否かを判断する。検証先判断処理部３４は、まず受信した通信メッセージの処理ＩＤを特定する。次に検証先判断処理部３４は、特定した処理ＩＤに対応する処理の可否を検証判断情報７００から読み取る。読み取った処理可否７０２が「１」であれば第２コア１２が処理すると判断し、「０」であれば第２コア１２が処理しないと判断する。
【００２４】
（検証依頼先情報８００）
図４は検証依頼先情報８００の一例を示す図である。検証依頼先情報８００は複数のレコードを有し、各レコードは処理ＩＤ８０１およびコアＩＤ８０２のフィールドを有する。処理ＩＤ８０１は、実行する処理内容を識別するための識別子であり、検証判断情報７００の＿７０１と同一である。コアＩＤ８０２は、同一レコードの処理ＩＤ７０１を有する通信メッセージを検証するコア１０の識別子を示す。コアＩＤ８０２はたとえば第１コア１１に対応する「０ｘ００１」、第２コア１２に対応する「０ｘ００２」、第３コア１３に対応する「０ｘ００３」のいずれかである。ただし本実施の形態では、第１コア１１が最初の検証を行うため、検証依頼先情報８００のコアＩＤ８０２により示されるコア１０は、第２コア１２および第３コア１３のいずれかである。
【００２５】
検証依頼処理部３５は、検証依頼先情報８００を参照することで、受信した通信メッセージの検証依頼先を特定する。検証依頼処理部３５は、まず受信した通信メッセージの処理ＩＤを特定する。次に検証依頼処理部３５は、特定した処理ＩＤを有する通信メッセージの２回目の検証を行うコア１０を検証判断情報７００から読み取る。読み取ったコアＩＤ８０２が「０ｘ００２」であれば第２コア１２自身に処理を依頼し、「０ｘ００３」であれば第３コア１３に処理を依頼する。
【００２６】
（権限管理情報９００）
図５は権限管理情報９００の一例を示す図である。権限管理情報９００は複数のレコードを有し、各レコードは処理ＩＤ９０１、第１コア権限９０２、第２コア権限９０３、第３コア権限９０４のフィールドを有する。処理ＩＤ９０１は、実行する処理内容を識別するための識別子であり、検証判断情報７００の＿７０１や検証依頼先情報８００の＿８０１と同一である。第１コア権限９０２、第２コア権限９０３、および第３コア権限９０４のそれぞれは、第１コア１１、第２コア１２、および第３コアのそれぞれへの権限付与の有無を示す。図５に示す例では「０」は権限を付与しないことを示し、「１」は権限を付与することを示す。
【００２７】
なお図５に示す例では権限付与の有無のみを示しているが、付与する権限の種類や範囲などを合わせて示してもよい。権限の種類とは、たとえば読み込みのみ、書き込みのみ、読み込みと書き込み、などである。権限の範囲とは、たとえばアドレス空間の番地の範囲や、権限を付与する時間的な範囲である。
【００２８】
権限管理部３６は、権限管理情報９００を参照して、受信した通信メッセージに起因する処理に必要な権限の付与を行う。権限管理部３６は、まず受信した通信メッセージの処理ＩＤを特定する。次に権限管理部３６は、特定した処理ＩＤに対応するコア１０に権限を付与する。たとえば権限管理部３６は、処理ＩＤが「０ｘ００２」の場合には、第２コア１２および第３コアに権限を付与する。
【００２９】
（シーケンス図）
図６は、第１コア１１が通信メッセージを受信した場合における認証システムの全体処理シーケンス図である。ステップＳ３０１では、第１検証部３１はインタフェース部５を介して受信した通信メッセージの真正性を、所定のルールに基づいて検証する。続くステップＳ３０２では、第１コア１１は第２コア１２に通信メッセージを受信したことを通知する。なおステップＳ３０１において真正性が確認できない場合は、第１コア１１は異常対処処理を行う。
【００３０】
続くステップＳ３０３では、第２コア１２により実現される検証先判断処理部３４はステップＳ３０１において真正性を検証した通信メッセージの２回目の検証を、自身以外、すなわち第２コア１２以外のコア１０に依頼すべきか否かを判断する。ただし本図の説明においては、ステップＳ３０３において検証先判断処理部３４は自身以外のコア１０に検証を依頼すべきと判断したとする。
【００３１】
検証依頼処理部３５は通信メッセージの２回目の検証を依頼する検証先となるコア１０を決定し（ステップＳ３０４）、そのコア１０に対して検証依頼を通知する（ステップＳ３０５）。ステップＳ３０６では、第３コア１３の第２検証部３２はステップＳ３０１において最初の検証を実施した通信メッセージの真正性を、所定のルールに基づいて検証する。ステップＳ３０７では、第２検証部３２はステップＳ３０６の検証の結果である、真正性の有無を確認する。
【００３２】
ステップＳ３０８では、権限管理部３６はステップＳ３０７において真正性があると確認された場合、通信メッセージの処理において、権限の付与が必要か否かを確認する。ステップＳ３０９では、権限管理部３６はステップＳ３０８において必要と判断した権限を付与、すなわち権限を更新する。ステップＳ３１０では、第３コア１３はステップＳ３０７において確認した検証結果を第２コア１２に通知する。
【００３３】
ステップＳ３１１では、検証依頼処理部３５はステップＳ３１０において通知された検証結果により、真正性および権限付与について確認する。ステップＳ３１２では、制御部３３は通信メッセージを所定の処理に応じて実行する。ステップＳ３１３では、第２コア１２は通信メッセージの処理が完了したことを第３コア１３に通知する。
【００３４】
ステップＳ３１４では、権限管理部３６は上記ステップＳ３１３において通知された完了通知を受けた場合、上記ステップＳ３０９において権限の付与があったか否かを確認する。ステップＳ３１５では、権限管理部３６は上記ステップＳ３１４において権限の付与があったことを確認した場合、付与された権限を解除する。
【００３５】
以上のステップにより、認証処理システムは、演算装置１が装置外から通信メッセージを受信した場合、第１コア１１による第１の検証に加えて、装置外からメッセージを受信していない第２コア１２を経由し、第２コア１２または第３コア１３が第２の検証を実行させ、車外から送られてくる不正な通信に対して自動車を安全な状態で維持できる。
【００３６】
（第１コア１１のフローチャート）
図７は、図６における第１コア１１のステップＳ３０１からステップＳ３０２までに関する処理を示すフローチャートである。具体的には図７に示すフローチャートでは、通信メッセージを検証し、第２コア１２に通信メッセージの受信を通知する処理を示す。
【００３７】
ステップＳ４０１では、第１コア１１はインタフェース部５を用いて装置外からの通信メッセージを受信する。続くステップＳ４０２では、第１コア１１はステップＳ４０１で受信した通信メッセージを対象として、第１検証部３１を用いて正しい通信メッセージか否かを検証する。第１検証部３１はたとえば次の３つの判断手法のいずれかを採用してもよいし、これ以外の手法を採用してもよい。
【００３８】
第１の手法は、当該通信メッセージに含まれる通信ＩＤが予め決められた通信ＩＤの場合は正しいと判定し、該当しない通信ＩＤの場合は正しくないと判定する手法である。第２の手法は、当該通信メッセージが予め決められた通信周期内に受信した場合は正しいと判定し、通信周期内に受信しなかった場合は正しくないと判定する手法である。第３の手法は、当該通信メッセージに含まれるＭＡＣ（Message  Authentication  Code）の値と、当該通信メッセージに基づいて生成されるＭＡＣの値が一致している場合は正しいと判定し、一致していない場合は正しくないと判定する手法である。
【００３９】
ステップＳ４０３では、第１コア１１はステップＳ４０２において通信メッセージが正しいと判定した場合はステップＳ４０５に進み、正しくないと判定した場合はステップＳ４０４に進む。ステップＳ４０４では、第１コア１１は所定の異常対処処理を実行する。たとえば、第１コア１１は受信した通信メッセージを破棄してもよく、加えて、異常が発生したことを装置内および装置外に通知してもよい。
【００４０】
ステップＳ４０５では、第１コア１１は第２コア１２に通信メッセージを受信したことを通知する。ただし、第１コア１１は第２コア１２以外の予め決められたコア１０に通知してもよいし、通信メッセージに含まれる通信ＩＤに応じたコア１０に通知してもよい。また第１コア１１は、自身以外のコア１０の処理負荷を確認し、処理負荷が一定の基準以下のコア１０に通知してもよいし、自身以外のすべてのプロセッサコアに通知してもよい。
【００４１】
（第２コア１２のフローチャート）
以上のステップにより、第１コア１１は、受信した通信メッセージを検証し、検証結果に基づいて、他のプロセッサコアに通信メッセージの受信を通知できる。
【００４２】
図８は、図６における第２コア１２の処理、すなわちステップＳ３０３からステップＳ３０５まで、およびステップＳ３１１からステップＳ３１３までの処理を示すフローチャートである。具体的には図８に示すフローチャートは、通信メッセージの検証要否を判断し、判断結果に応じて検証先を決定し、検証結果に応じて制御処理を実行する処理を示す。
【００４３】
ステップＳ５０１では、第２コア１２は第１コア１１からの通信メッセージ受信の通知を受け取り、当該通信メッセージを取得する。ステップＳ５０２では、第２コア１２は受信した通信メッセージに含まれる通信ＩＤを取得する。ステップＳ５０３では、第２コア１２の検証先判断処理部３４は、検証判断情報７００を参照してステップＳ５０２で取得した通信ＩＤが第２コア１２自身の処理対象か否かを判断する。たとえば、検証先判断処理部３４は、ステップＳ５０１で取得した通信メッセージに含まれる処理ＩＤが「０ｘ００２」の場合は、図３に示す検証判断情報７００では処理可否７０２が「０」なので、検証対象ではないと判断する。
【００４４】
ステップＳ５０４では、第２コア１２はステップＳ５０１で受信した通信メッセージに対して、第２検証部３２を用いて正しい通信メッセージか否かを検証してステップＳ５０９に進む。たとえば、当該通信メッセージに含まれる通信ＩＤが予め決められた通信ＩＤの場合は正しいと判定する。
【００４５】
ステップＳ５０５では、第２コア１２の検証依頼処理部３５は検証依頼先情報８００を参照し、検証依頼先を選定する。たとえば、検証依頼処理部３５は、ステップＳ５０１で取得した通信メッセージの処理ＩＤが「０ｘ００２」の場合は、図４に示す検証依頼先情報８００ではこの処理ＩＤ８０１に紐づくコアＩＤ８０２が「０ｘ００３」なので、第３コア１３を検証依頼先として選定する。
【００４６】
ステップＳ５０６では、第２コア１２の検証依頼処理部３５はステップＳ５０５で選定した検証依頼先に対して、検証依頼通知を送信する。ステップＳ５０７では、第２コア１２はステップＳ５０６で送信した検証依頼の結果が返信されるのを待つ。ステップＳ５０８では、第２コア１２は検証結果を受信した場合はステップＳ５０９に進み、検証結果を受信していない場合はステップＳ５０７に戻る。
【００４７】
ステップＳ５０４の次、またはステップＳ５０８において肯定判断されると実行されるステップＳ５０９では、第２コア１２の第２検証部３２は２回目の検証処理の結果を確認し、異常があると判断する場合はステップＳ５１０に進み、異常がないと判断する場合はステップＳ５１１に進む。ステップＳ５１０では、第２コア１２は所定の異常対処処理を実行する。たとえば、受信した通信メッセージを破棄してもよく、加えて、異常が発生したことを装置内および装置外に通知してもよい。ステップＳ５１１では、第２コア１２は処理ＩＤに応じた所定の制御を実行する。
【００４８】
以上の処理により、第２コア１２は通信メッセージの検証要否を判断し、判断結果に応じて検証先を決定し、検証結果に応じて制御処理を実行できる。
【００４９】
（第３コア１３のフローチャート）
図９は、図６における第３コア１３のステップＳ３０６からステップＳ３１０まで、およびステップＳ３１４からステップＳ３１５までの処理を示すフローチャートである。具体的には図９に示すフローチャートは、２回目の検証処理を実施し、検証結果に応じて権限の更新を実行する処理を示す。
【００５０】
ステップＳ６０１では、第３コア１３は第２コア１２からの通信メッセージ受信の通知を受け取り、当該通信メッセージを取得する。ステップＳ６０２では、第３コア１３の第２検証部３２はステップＳ６０１で受信した通信メッセージに対して、正しい通信メッセージか否かを検証する。
【００５１】
ステップＳ６０３では、第３コア１３の第２検証部３２は２回目の検証処理の結果を確認し、異常があればステップＳ６０４に進み、異常がなければステップＳ６０５に進む。ステップＳ６０４では、第３コア１３は所定の異常対処処理を実行する。たとえば、受信した通信メッセージを破棄してもよく、加えて、異常が発生したことを装置内および装置外に通知してもよい。
【００５２】
ステップＳ６０５では、第３コア１３の権限管理部３６は通信メッセージに含まれる処理ＩＤを取得し、権限管理情報９００を参照して当該処理ＩＤが権限変更を必要とするか否かを確認する。たとえば全てのコアについて権限の付与が不要であれば、権限変更は不要である。ステップＳ６０６では、第３コア１３の権限管理部３６は、ステップＳ６０５において権限変更が必要と判断した場合はステップＳ６０７に進み、権限変更が必要ないと判断した場合はステップＳ６０８に進む。
【００５３】
ステップＳ６０７では、第３コア１３は権限管理部３６を用いて権限管理情報９００を参照し、該当する処理ＩＤの権限を更新する。ステップＳ６０８では、第３コア１３はステップＳ６０２における検証結果を第２コア１２に通知する。続くステップＳ６０９では、第３コア１３は第２コア１２からの制御完了通知を待つ。ステップＳ６１０では、第３コア１３は第２コア１２からの制御処理の完了通知を受信した場合はステップＳ６１１に進み、受信していない場合はステップＳ６０９に戻る。
【００５４】
ステップＳ６１１では、第３コア１３はステップＳ６０７における権限変更の有無を確認する。たとえば、ＲＡＭ６に初期値が「０」の更新有無フラグを格納し、第３コア１３は権限管理部３６がいずれかの権限を変更した際に更新有無フラグを「１」に更新し、権限管理部３６が更新有無フラグの値を確認することにより、権限変更の有無を判断する。
ステップＳ６１２では、第３コア１３はステップＳ６１１において権限の変更があったと判断する場合はステップＳ６１３に進み、権限の変更がなかったと判断する場合は本処理を終了する。  ステップＳ６１３では、第３コア１３は権限管理部３６を用いて上記ステップＳ６０７で更新した権限を、更新前の権限に変更する。
【００５５】
以上の処理により、第３コア１３は、第２検証処理を実施し、検証結果に応じて権限の更新を実行できる。
【００５６】
上述した実施の形態によれば、次の作用効果が得られる。
（１）演算装置１は演算処理を行う第１コア１１、第２コア１２、および第３コア１３を備える。第１コア１１は、演算装置１の外部から受信するメッセージに対して１回目の検証処理を行う第１検証部３１を有する。第２コア１２は、メッセージに含まれる識別情報、すなわち処理ＩＤに基づき、メッセージに対する２回目の検証処理を当該第２コア１２が実行するか否かを判断する検証先判断処理部３４を有する。そのため、演算装置１は、車外からの通信を介したサイバー攻撃に対して、堅牢である。具体的には、演算装置１の外部からメッセージを受信した第１コア１１における最初の検証処理が突破や回避されたとしても、物理的に異なるコアである第２コア１２または第３コア１３が２番目の認証を実行するので、マルチプロセッサコアのリソースを効率的に使用した多層防御を実現できる。
【００５７】
（２）第２コア１２は、検証先判断処理部３４が２回目の検証処理を第２コア１２が実行しないと判断すると、識別情報である処理ＩＤおよび検証依頼先情報８００に基づきいずれのコア１０が２回目の検証処理を実行するかを特定して２回目の検証処理の実行を依頼する検証依頼処理部３５をさらに有する。そのため、２回目の検証処理を実行するコア１０を特定して実行を依頼できる。
【００５８】
（３）第３コア１３は、１回目の検証処理および２回目の検証処理において異常が発見されないと（図９のＳ６０３：ＮＯ）、メッセージに含まれる情報、すなわち処理ＩＤに基づき第１コア１１、第２コア１２、および第３コア１３の少なくとも１つのコアにＲＡＭ６へのアクセス権限を付与する権限管理部３６を有する。そのため演算装置１は、２回の検証において異常が発見されなかった場合に、メッセージを処理するための権限を付与することができる。
【００５９】
（４）第２コア１２は、検証先判断処理部３４が２回目の検証処理を第２コア１２が実行すると判断すると（図８のＳ５０３：ＹＥＳ）、当該第２コア１２が２回目の検証処理を実行する（図８のＳ５０４）。
【００６０】
（変形例１）
演算装置１のＲＯＭ７には、検証判断情報７００および検証依頼先情報８００の少なくとも一方が格納されていればよい。ＲＯＭ７に検証判断情報７００が格納されていない場合は、検証先判断処理部３４は検証依頼先情報８００を検証判断情報７００の代替として利用する。すなわち＿３４は、検証依頼先情報８００を読み取り、コアＩＤ８０２が第２コア１２を示すものであるか否かを判断することで、検証判断情報７００の代替とすることができる。
【００６１】
また、ＲＯＭ７に検証依頼先情報８００が格納されていない場合は、検証依頼処理部３５は何ら参照することなく第３コア１３を検証依頼先として決定する。コアが３つだけの場合には、消去法により第３コア１３しか残らないためである。具体的には、２回目の検証処理を実行可能なコアは、最初の検証処理を行った第１コア１１を除く２つのコアであり、第２コア１２が２回目の検証処理を実行しないのであれば、２回目の検証処理を実行できるのは第３コア１３だけである。
【００６２】
本変形例によれば次の作用効果が得られる。
（５）演算装置１は３つのコアを備える。第２コア１２は、検証先判断処理部３４が２回目の検証処理を第２コア１２が実行しないと判断すると、第３コア１３に２回目の検証処理の実行を依頼する検証依頼処理部３５を有する。
【００６３】
（変形例２）
上述した実施の形態では、検証先判断処理部３４および検証依頼処理部３５は、メッセージに含まれる識別子である処理ＩＤのみから２回目の検証処理を実行するコア１０が決定された。しかし検証先判断処理部３４および検証依頼処理部３５は、メッセージの指示内容に基づき２回目の検証処理を実行するコア１０を決定してもよい。より具体的には、検証先判断処理部３４および検証依頼処理部３５は、識別情報に基づき２回目の検証処理を第２コア１２が実行すると判断する場合であっても、メッセージの指示内容が所定の条件に合致する場合は２回目の検証処理を第３コア１３が実行すると判断してもよい。
【００６４】
メッセージに関する所定の条件とは、たとえば次の２つの場合である。第１の場合は、そのメッセージの少なくとも一部を車両の内部に接続される通信バスである第３バス２３へ転送する指示が含まれる場合である。第２の場合は、そのメッセージの処理に際して権限の付与が行われる場合である。
【００６５】
本変形例によれば次の作用効果が得られる。
（６）演算装置１は車両に搭載される。演算装置１は車両の外部向け通信バスである第１バス２１、第２バス２２および内部向け通信バスである第３バス２３に接続される。第１コア１１および第２コア１２は外部向け通信バスとのメッセージの送受信を実行する。第３コア１３は、内部向け通信バスとのメッセージの送受信を実行する。第２コア１２の検証先判断処理部３４および検証依頼処理部３５は、識別情報に基づき２回目の検証処理を当該第２コア１２が実行すると判断する場合であっても、メッセージの指示内容が所定の条件に合致する場合は２回目の検証処理を第３コア１３が実行すると判断する。
【００６６】
（変形例３）
上述した実施の形態では、検証先判断処理部３４および検証依頼処理部３５は第２コア１２に備えられた。しかし検証先判断処理部３４および検証依頼処理部３５は第３コア１３に備えられてもよい。この場合には、検証先判断処理部３４および検証依頼処理部３５は第３コア１３のみに備えられてもよいし、第２コア１２および第３コア１３に備えられてもよい。
【００６７】
なお実施の形態では第１バス２１を介して演算装置１が受信した通信メッセージの真正性の検証を説明する動作を主に説明したが、実際には第２バス２２を介して演算装置１が受信した通信メッセージの真正性の検証も行うので、第１コア１１にも検証先判断処理部３４および検証依頼処理部３５が備えられる構成も想定される。
【００６８】
図１０は、変形例３における演算装置１の機能構成図である。図１０では想定される最大限の構成を示しており、メッセージの入力元により第１コア１１および第２コア１２における検証が第１検証部３１とも第２検証部３２とも呼べてしまうので、ここでは両者を兼ねたものとして検証部３０Ａを定義する。図１０に示すように、第１コア１１と第２コア１２の機能構成は同一であり、第３コア１３の機能構成は、第１コア１１や第２コア１２の機能構成に加えてさらに権限管理部３６を有する。
【００６９】
本変形例によれば次の作用効果が得られる。
（７）演算装置１は、演算処理を行う３つ以上のコアを備える。演算装置１の外部からメッセージを受信するインタフェース部５と、メッセージに対して１回目の検証処理を行う第１検証部３１と、メッセージに対して２回目の検証処理を行う第２検証部３２と、メッセージに含まれる識別情報に基づき、２回目の検証処理を実行するコアを特定する特定部、すなわち検証先判断処理部３４および検証依頼処理部３５とを備える。第１検証部３１および第２検証部３２は異なるコアにより実現される。そのため、演算装置１の機能構成に様々なバリエーションを持たせることができる。
【００７０】
（変形例４）
上述した実施の形態では、演算装置１は３つのコアを備えた。しかし演算装置１は４以上のコアを備えてもよい。この場合には検証依頼先情報８００は、コアＩＤ８０２の値のバリエーションがコアの数に応じて増加する。また権限管理情報９００は、各レコードのフィールドがコアの数に応じたフィールドを有する。ただし検証判断情報７００の処理可否７０２は「０」か「１」の値しかとりえないので形式的な違いはない。
【００７１】
（変形例５）
第１コア１１、第２コア１２、および第３コア１３の少なくとも１つが書き換え可能な論理回路であるＦＰＧＡ（Field  Programmable  Gate  Array）や特定用途向け集積回路であるＡＳＩＣ（Application  Specific  Integrated  Circuit）により実現されてもよい。この変形例５によれば、演算装置１を様々なハードウエア構成で実現できる。
【００７２】
（変形例６）
第３コア１３は、図９のステップＳ６０３において異常がないと判断した場合に制御処理を実行してもよい。すなわち実施の形態では、制御処理は第２コア１２が実行したが第３コア１３が制御処理を実行してもよい。
【００７３】
上述した各実施の形態および変形例において、機能ブロックの構成は一例に過ぎない。別々の機能ブロックとして示したいくつかの機能構成を一体に構成してもよいし、１つの機能ブロック図で表した構成を２以上の機能に分割してもよい。また各機能ブロックが有する機能の一部を他の機能ブロックが備える構成としてもよい。
【００７４】
なお、上述した実施の形態では特に説明しなかったが、暗号用の鍵及びシードは安全に配布、管理、更新されていればよく、車両のエンジン起動時／停止時、製品開発時、メンテナンス時などの任意のタイミングで配布や更新が行なわれてもよい。
【００７５】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【００７６】
１…演算装置
５…インタフェース部
１１…第１コア
１２…第２コア
１３…第３コア
２１…第１バス
２２…第２バス
２３…第３バス
３１…第１検証部
３２…第２検証部
３３…制御部
３４…検証先判断処理部
３５…検証依頼処理部
３６…権限管理部
【図１】
2020177504.tif 000003
【図２】
2020177504.tif 000004
【図３】
2020177504.tif 000005
【図４】
2020177504.tif 000006
【図５】
2020177504.tif 000007
【図６】
2020177504.tif 000008
【図７】
2020177504.tif 000009
【図８】
2020177504.tif 000010
【図９】
2020177504.tif 000011
【図１０】
2020177504.tif 000012