(57)【要約】【課題】第三者による通信への割り込みを効率的に防止することを実現する電子機器を提供する。【解決手段】実施形態によれば、電子機器は、第１デバイスと、第２デバイスと、記憶領域と、Mailbox通信制御部とを備える。第１デバイスは、第１データを記憶領域に格納し、Mailbox送信シグナルの生成をMailbox通信制御部に依頼する。Mailbox通信制御部は、Mailbox送信シグナルを生成し、第１デバイスの識別子を保存する。第２デバイスは、第１デバイスの識別子をMailbox通信制御部から読み出し、読み出された識別子と第２デバイスに保存される識別子とを比較し、記憶領域からの第１データの取得の可否を判定する。記憶領域からの第１データの取得が許可された場合、第２デバイスは、記憶領域から第１データ を読み出す。【選択図】図２
2020024503.tif 000002
【特許請求の範囲】
【請求項１】
第１デバイスと、
第２デバイスと、
前記第１デバイスおよび前記第２デバイスによって共有される記憶領域と、
前記記憶領域を介してデータを送受信するMailbox通信を仲介するMailbox通信制御部と、
を具備し、
前記Mailbox通信によって前記第２デバイスへ第１データを送信する前記第１デバイスは、
前記第１データを前記記憶領域に格納する共有情報設定部と、
前記Mailbox通信によるデータの送信を前記第２デバイスへ通知するためのMailbox送信シグナルの生成を前記Mailbox通信制御部に依頼する送信シグナル設定部と、
を具備し、
前記Mailbox通信制御部は、
前記第１デバイスからの依頼に応じて、前記Mailbox送信シグナルを生成して前記第２デバイスへ送信する送信シグナル生成部と、
前記第１デバイスの識別子を保存する識別子保存部と、
を具備し、
前記Mailbox通信によって前記第１デバイスから前記第１データを受信する前記第２デバイスは、
前記Mailbox通信によってデータを送信する前記第１デバイスの識別子を保存するための実行許可識別子保存領域と、
前記Mailbox送信シグナルが受信された場合、前記Mailbox通信制御部に保存されている前記第１デバイスの識別子を前記Mailbox通信制御部から読み出す識別子読出部と、
前記読み出された識別子と、前記実行許可識別子保存領域に保存されている識別子とを比較して、前記記憶領域からの前記第１データの取得の可否を判定する共有情報実行許可部と、
前記共有情報実行許可部によって前記記憶領域からの前記第１データの取得が許可された場合、前記記憶領域から前記第１データを読み出す共有情報読出部と、
を具備する電子機器。
【請求項２】
前記第２デバイスは、
前記第１デバイスを含む他のデバイスとの間でバスを介して通信するためのセッションを管理するセッション管理部をさらに具備し、
前記セッション管理部は、セッションが確立されていない状況下で前記Mailbox送信シグナルを受信した場合、セッションの受け入れ処理を行ってセッションの受け入れ可否を判定し、セッションの受け入れを許可してセッションを確立した場合、前記識別子読出部によって前記Mailbox通信制御部から読み出される識別子を前記実行許可識別子保存領域に保存する、
請求項１に記載の電子機器。
【請求項３】
前記Mailbox通信制御部は、前記送信シグナル生成部によって前記Mailbox送信シグナルが生成される場合、前記第１デバイスによって前記記憶領域に格納されたデータの検証子を生成する検証子生成部をさらに具備し、
前記第２デバイスは、前記記憶領域から読み出されたデータの検証子を生成し、前記Mailbox通信制御部によって生成された検証子と比較して、前記記憶領域から読み出されたデータの改ざん検証を行う検証子確認部をさらに具備する、
請求項１または２に記載の電子機器。
【請求項４】
前記第１デバイスは、前記第１デバイスの識別子を用いて前記記憶領域に格納されるデータを暗号化する暗号化部をさらに具備し、
前記第２デバイスは、前記Mailbox通信制御部から読み出された前記第１デバイスの識別子を用いて前記記憶領域から読み出された暗号化されたデータを復号する復号部をさらに具備する、
請求項１乃至３のいずれか１項に記載の電子機器。
【請求項５】
前記第１デバイスは、前記第２デバイスが前記セッションの受け入れ可否の判定に用いる情報を第３デバイスに通知して、前記第３デバイスが前記Mailbox通信によって前記第２デバイスへデータを送信することを許可するセッション処理部をさらに具備する請求項２に記載の電子機器。
【請求項６】
前記共有情報実行許可部は、前記読み出された前記第１デバイスの識別子と、前記実行許可識別子保存領域に保存される識別子とが一致しない場合、前記記憶領域からの前記第１データの取得を禁止し、前記電子機器を異常終了させる請求項１乃至５のいずれか１項に記載の電子機器。
【請求項７】
前記識別子は、デバイス間の通信に用いられるバスの使用に関して各デバイスに割り当てられるバスＩＤである請求項１乃至５のいずれか１項に記載の電子機器。
【請求項８】
記憶領域を介在させるMailbox通信によって第１デバイスから第２デバイスへデータを送信するデータ送受信方法であって、
前記第１デバイスが、
第１データを前記記憶領域に格納することと、
前記Mailbox通信によるデータの送信を前記第２デバイスへ通知するためのMailbox送信シグナルの生成を、前記Mailbox通信を仲介するMailbox通信制御部に依頼することと、
を具備し、
前記Mailbox通信制御部が、
前記第１デバイスからの依頼に応じて、前記Mailbox送信シグナルを生成して前記第２デバイスへ送信することと、
前記Mailbox送信シグナルの生成を依頼した前記データの送信側のデバイスの識別子を保存することと、
を具備し、
前記第２デバイスが、
前記Mailbox送信シグナルが受信された場合、前記Mailbox通信制御部に保存される前記データの送信側のデバイスの識別子を前記Mailbox通信制御部から読み出すことと、
前記読み出された識別子と、前記第２デバイス内に保存されている識別子とを比較して、前記記憶領域からの前記第１データの取得の可否を判定することと、
前記記憶領域からの前記第１データの取得が許可された場合、前記記憶領域から前記第１データを読み出すことと、
を具備するデータ送受信方法。
【請求項９】
前記第２デバイスが、前記第１デバイスを含む他のデバイスとの間でバスを介して通信するためのセッションが確立されていない状況下で前記Mailbox送信シグナルを受信した場合、セッションの受け入れ処理を行ってセッションの受け入れ可否を判定し、セッションの受け入れを許可してセッションを確立した場合、前記Mailbox通信制御部から読み出される識別子を保存することをさらに具備する請求項８に記載のデータ送受信方法。
【請求項１０】
前記Mailbox通信制御部が、前記Mailbox送信シグナルが生成される場合、前記第１デバイスによって前記記憶領域に格納されたデータの検証子を生成することをさらに具備し、
前記第２デバイスが、前記記憶領域から読み出されたデータの検証子を生成し、前記Mailbox通信制御部によって生成された検証子と比較して、前記記憶領域から読み出されたデータの改ざん検証を行うことをさらに具備する、
請求項８または９に記載のデータ送受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、電子機器およびデータ送受信方法に関する。
【背景技術】
【０００２】
たとえばＣＰＵ間通信などに適用される通信方法の１つとして、共有メモリを介してデータを送受信するMailbox通信がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００５−５０７１０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
Mailbox通信でデータを受信する側は、送信側を確認する方法を持たないため、意図しない相手からのデータを受けて処理を実行してしまうおそれがある。たとえば秘密情報を使って送信側を確認することなども考えられるが、たとえばMailbox通信の度に送信側と受信側とで秘密情報を共有することが必要となるような方策は、リアルタイム性が求められる電子機器では適用することが困難である。
【０００５】
本発明が解決しようとする課題は、第三者による通信への割り込みを効率的に防止することを実現する電子機器およびデータ送受信方法を提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、電子機器は、第１デバイスと、第２デバイスと、記憶領域と、Mailbox通信制御部とを具備する。記憶領域は、前記第１デバイスおよび前記第２デバイスによって共有される。Mailbox通信制御部は、前記記憶領域を介してデータを送受信するMailbox通信を仲介する。前記Mailbox通信によって前記第２デバイスへ第１データを送信する前記第１デバイスは、共有情報設定部と、送信シグナル設定部とを具備する。共有情報設定部は、前記第１データを前記記憶領域に格納する。送信シグナル設定部は、前記Mailbox通信によるデータの送信を前記第２デバイスへ通知するためのMailbox送信シグナルの生成を前記Mailbox通信制御部に依頼する。Mailbox通信制御部は、送信シグナル生成部と、識別子保存部とを具備する。送信シグナル生成部は、前記第１デバイスからの依頼に応じて、前記Mailbox送信シグナルを生成して前記第２デバイスへ送信する。識別子保存部は、前記第１デバイスの識別子を保存する。前記Mailbox通信によって前記第１デバイスから前記第１データを受信する前記第２デバイスは、実行許可識別子保存領域と、識別子読出部と、共有情報実行許可部と、共有情報読出部とを具備する。実行許可識別子保存領域は、前記Mailbox通信によってデータを送信する前記第１デバイスの識別子を保存する。識別子読出部は、前記Mailbox送信シグナルが受信された場合、前記Mailbox通信制御部に保存されている前記第１デバイスの識別子を前記Mailbox通信制御部から読み出す。共有情報実行許可部は、前記読み出された識別子と、前記実行許可識別子保存領域に保存される識別子とを比較して、前記記憶領域からの前記第１データの取得の可否を判定する。共有情報読出部は、前記共有情報実行許可部によって前記記憶領域からの前記第１データ の取得が許可された場合、前記記憶領域から前記第１データ を読み出す。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態の電子機器の一構成例および一接続例を示す図。
【図２】第１実施形態の電子機器の機能構成を例示するブロック図。
【図３】第１実施形態の電子機器におけるMailbox通信の処理の流れを説明するための図。
【図４】第１実施形態の電子機器のMailbox送信時における処理手順を示すフローチャート。
【図５】第１実施形態の電子機器のMailbox受信時における処理手順を示すフローチャート。
【図６】第２実施形態の電子機器の機能構成を例示するブロック図。
【図７】第２実施形態の電子機器におけるMailbox通信の処理の流れを説明するための図。
【図８】第２実施形態の電子機器のMailbox受信時における処理手順を示すフローチャート。
【図９】第２実施形態の電子機器のセッション受け入れ時における処理手順を示すフローチャート。
【図１０】第３実施形態の電子機器の機能構成を例示するブロック図。
【図１１】第３実施形態の電子機器におけるMailbox通信の処理の流れを説明するための図。
【図１２】第３実施形態の電子機器のMailbox送信時における処理手順を示すフローチャート。
【図１３】第３実施形態の電子機器のMailbox受信時におけるデータ改ざん検証に関する処理手順を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、実施の形態について図面を参照して説明する。
（第１実施形態）
まず、第１実施形態について説明する。
図１は、本実施形態の電子機器１の一構成例および一接続例を示す図である。
この電子機器１は、たとえば、図１には示されないＮＡＮＤフラッシュメモリまたはハードディスクにデータを蓄積するＳＳＤ（Solid State Drive）またはＨＤＤ（Hard Disk Drive）などのストレージ装置などとして実現される。電子機器１は、たとえばＰＣＩｅ(登録商標)などのインタフェースを介してホスト２と接続される。電子機器１は、図１に示されるように、ＣＰＵ［０］１１、ＣＰＵ［１］１２、Mailboxハードウェア１３、たとえばＤＲＡＭなどである共有メモリ１４、インタフェース１５などを有する。これらは、バス１６を介して接続される。バス１６を介して接続される、ＣＰＵ［０］１１、ＣＰＵ［１］１２、Mailboxハードウェア１３、共有メモリ１４およびインタフェース１５は、たとえばＳｏＣ（System on a Chip）などとしても構成され得る。
【０００９】
ここでは、電子機器１は、ホスト２からの要求をインタフェース１５が受け付け、その要求に対応する処理をＣＰＵ［０］１１とＣＰＵ［１］１２とが協働して実行し、その処理結果をインタフェース１５がホスト２へ送信することを想定する。また、ここでは、ＣＰＵ［０］１１からＣＰＵ［１］１２へのデータの受け渡しが行われ、ＣＰＵ［１］１２は、ＣＰＵ［０］１１から受け取ったデータを用いて、ホスト２からの要求に対応する処理を実行することを想定する。ＣＰＵ［０］１１からＣＰＵ［１］１２へのデータの受け渡しは、共有メモリ１４を介して行われる。つまり、ＣＰＵ［０］１１とＣＰＵ［１］１２との間のデータの送受信は、Mailbox通信によって行われる。本実施形態の電子機器１においては、このMailbox通信を仲介するMailboxハードウェア１３が設けられる。
【００１０】
なお、ここでは、ＣＰＵ［０］１１からＣＰＵ［１］１２へのデータの受け渡しにMailbox通信が行われることを想定しているが、ＣＰＵ［１］１２からＣＰＵ［０］１１へMailbox通信によるデータの受け渡しは行われ得るし、図１に示されないたとえばＡＳＩＣ（Application Specific Integrated Circuit）などのハードウェア間でもMailbox通信は行われ得る。また、ここでは、共有メモリ１４を介在させたMailbox通信を例示するが、Mailbox通信は、共有メモリ１４に限らず、たとえばレジスタを用いるものであってもよい。
【００１１】
図２は、本実施形態の電子機器１の機能構成を例示するブロック図である。
図２に示されるように、データを送信する側のＣＰＵ［０］１１は、共有情報送信部１１０を有し、また、データを受信する側のＣＰＵ［１］１２は、共有情報受信部１２０を有する。ここでは、ＣＰＵ［０］１１からＣＰＵ［１］１２へデータが受け渡される場合を例に説明を行うため、共有情報送信部１１０をＣＰＵ［０］１１のみに示し、共有情報受信部１２０をＣＰＵ［１］１２のみに示している。しかしながら、前述したように、ＣＰＵ［１］１２からＣＰＵ［０］１１へMailbox通信によるデータの受け渡しも行われ得るので、共有情報送信部１１０と共有情報受信部１２０との両方が、ＣＰＵ［０］１１およびＣＰＵ［１］１２に各々設けられてもよい。
【００１２】
共有情報送信部１１０は、共有情報設定部１１１および送信シグナル設定部１１２の各処理部を有する。共有情報送信部１１０の各処理部は、たとえば電子機器１内のストレージに格納されるプログラムをＣＰＵ［０］１１が実行することによって実現されてもよいし、専用の集積回路（電気回路）として実現されてもよい。つまり、共有情報送信部１１０の各処理部は、ソフトウェアによっても実現し得るし、ハードウェアによっても実現し得る。また、一部がソフトウェアによって実現され、その他の一部がハードウェアによって実現されてもよい。
【００１３】
共有情報設定部１１１は、通信データを共有メモリ１４に格納する。共有情報設定部１１１は、共有メモリ１４上における通信データの格納位置を示す情報（ポインタ）を送信シグナル設定部１１２に通知する。送信シグナル設定部１１２は、Mailbox通信によるデータ転送を通知するための割り込み信号であるMailbox送信シグナルをＣＰＵ［１］１２向けに生成することをMailboxハードウェア１３に依頼する。この依頼時、送信シグナル設定部１１２は、共有情報設定部１１１から通知されたポインタをMailboxハードウェア１３に送信する。
【００１４】
共有情報受信部１２０は、シグナル受信部１２１、共有情報実行許可部１２２、ハードウェアＩＤ読出部１２３および共有情報読出部１２４の各処理部と、実行許可ＩＤ保存領域１２５のデータ部とを有する。実行許可ＩＤ保存領域１２５は、共有情報読出部１２４などの処理部がアクセス可能な、たとえばＲＡＭ、ＮＡＮＤフラッシュメモリ、ハードディスクなどの電子機器１内のストレージの記憶領域上に設けられる。または、実行許可ＩＤ保存領域１２５は、ＣＰＵ［１］１２内のレジスタが割り当てられて構成される。共有情報受信部１２０の各処理部も、たとえば電子機器１内のストレージに格納されるプログラムをＣＰＵ［１］１２が実行することによって実現されてもよいし、専用の集積回路（電気回路）として実現されてもよい。つまり、共有情報受信部１２０の各処理部も、ソフトウェアによっても実現し得るし、ハードウェアによっても実現し得る。また、一部がソフトウェアによって実現され、その他の一部がハードウェアによって実現されてもよい。
【００１５】
シグナル受信部１２１は、Mailboxハードウェア１３からMailbox送信シグナルを受信する。Mailbox送信シグナルには、前述のポインタが含まれている。共有情報実行許可部１２２は、シグナル受信部１２１によって受信されたMailbox送信シグナルに対応するMailbox通信の実行可否を判定する。具体的には、共有情報実行許可部１２２は、後述するハードウェアＩＤ読出部１２３によってMailboxハードウェア１３から読み出されたハードウェアＩＤが、実行許可ＩＤ保存領域１２５に保存されるハードウェアＩＤと一致する場合、Mailbox通信の実行を許可する。
【００１６】
ハードウェアＩＤは、ＣＰＵ［０］１１を含む各ハードウェアを識別するための識別子である。ハードウェアＩＤは、各ハードウェアを識別できる値であればどのような値でもよく、たとえばバス１６の使用に関して各ハードウェアに割り当てられるバスＩＤなどであってもよい。また、ハードウェアＩＤは、必ずしも電子機器１内でユニークな値でなくともよく、たとえば電子機器１内にMailbox通信を行うハードウェアの組みが複数組み存在する場合、ある組みで用いられる値が他の組みで用いられてもよい。たとえば、コア間でMailbox通信を行う各プロセッサコアで同一の値が用いられてもよい。
【００１７】
ハードウェアＩＤ読出部１２３は、共有情報実行許可部１２２からの要求に応じて、Mailboxハードウェア１３からハードウェアＩＤを読み出す。共有情報読出部１２４は、ハードウェアＩＤ読出部１２３によってMailboxハードウェア１３から読み出されたハードウェアＩＤに基づき、シグナル受信部１２１によって受信されたMailbox送信シグナルに対応するMailbox通信の実行が共有情報実行許可部１２２によって許可された場合、そのMailbox送信シグナルに含まれるポインタを用いて、通信データを共有メモリ１４から読み出す。
【００１８】
Mailboxハードウェア１３は、ハードウェアＩＤ設定部１３１、送信シグナル生成部１３２、ハードウェアＩＤ保存部１３３の各処理部を有する。Mailboxハードウェア１３の各処理部も、たとえば、Mailboxハードウェア１３に内蔵されるプロセッサがMailboxハードウェア１３に内蔵されるメモリに格納されるプログラムを実行することによって実現されてもよいし、専用の集積回路（電気回路）として実現されてもよい。つまり、Mailboxハードウェア１３の各処理部も、ソフトウェアによっても実現し得るし、ハードウェアによっても実現し得る。また、一部がソフトウェアによって実現され、その他の一部がハードウェアによって実現されてもよい。
【００１９】
ハードウェアＩＤ設定部１３１は、Mailbox送信シグナルの生成を依頼したハードウェアのハードウェアＩＤを取得し、ハードウェアＩＤ保存部１３３に取得したハードウェアＩＤの保存を依頼する。ハードウェアＩＤ設定部１３１は、前述したように、たとえばバスＩＤなどをハードウェアＩＤとして取得する。送信シグナル生成部１３２は、Mailbox送信シグナルを生成してデータ転送先のハードウェアに送信する。このMailbox送信シグナルには、ＣＰＵ［０］１１から受信したポインタが含まれる。ハードウェアＩＤ保存部１３３は、ハードウェアＩＤ設定部１３１から受け取ったハードウェアＩＤを保存する。
【００２０】
ここで、図３を参照して、本実施形態の電子機器１におけるＣＰＵ［０］１１からＣＰＵ［１］１２へのMailbox通信の処理の流れについて説明する。
ＣＰＵ［０］１１は、通信データ５０を共有メモリ１４に格納し（ａ１１）、Mailboxハードウェア１３にMailbox送信シグナルの生成を依頼する（ａ１２）。
【００２１】
Mailboxハードウェア１３は、Mailbox送信シグナルの生成の依頼を受けると、依頼元のＣＰＵ［０］１１のハードウェアＩＤを保存し（ａ２１）、また、Mailbox送信シグナルを生成してデータ転送先のＣＰＵ［１］１２へ送信する（ａ２２）。
【００２２】
Mailbox送信シグナルを受信したＣＰＵ［１］１２は、まず、Mailboxハードウェア１３からハードウェアＩＤを読み出す（ａ３１）。ＣＰＵ［１］１２は、読み出したハードウェアＩＤと、ＣＰＵ［１］１２内に保存されているハードウェアＩＤとを比較して、共有メモリ１４からの通信データ５０の読み出し可否、つまりMailbox通信の実行可否を判定する（ａ３２）。ここでは、正規の相手であるＣＰＵ［０］１１のハードウェアＩＤがＣＰＵ［１］１２内に保存されているものとする。ハードウェアＩＤが一致した場合、ＣＰＵ［１］１２は、通信データ５０の読み出しを許可し、共有メモリ１４から通信データ５０を読み出す（ａ３３）。ハードウェアＩＤが一致しない場合、ＣＰＵ［１］１２は、不正なMailbox通信であることを検出できる。
【００２３】
送信側と受信側とで秘密情報を共有することなどが不要で、Mailboxハードウェア１３を介在させてハードウェアＩＤをチェックする本実施形態の電子機器１においては、第三者によるMailbox通信への割り込みを効率的に防止することを実現できる。
【００２４】
図４は、電子機器１のMailbox送信時における処理手順を示すフローチャートである。
共有情報設定部１１１は、共有メモリ１４に通信データを配置する（ステップＡ１）。送信シグナル設定部１１２は、Mailboxハードウェア１３、より詳しくは、送信シグナル生成部１３２にMailbox送信シグナルの生成を依頼する（ステップＡ２）。
【００２５】
この依頼を受けた送信シグナル生成部１３２は、ハードウェアＩＤ設定部１３１にMailbox送信シグナルの生成を依頼したハードウェアのハードウェアＩＤの保存を依頼する（ステップＡ３）。この依頼を受けたハードウェアＩＤ設定部１３１は、Mailbox送信シグナルの生成を依頼したハードウェアのハードウェアＩＤを取得し、ハードウェアＩＤ保存部１３３に保存する（ステップＡ４）。
【００２６】
送信シグナル生成部１３２は、Mailbox送信シグナルを生成し、データ転送先のハードウェア、より詳しくは、共有情報受信部１２０へ送信する（ステップＡ５）。
図５は、電子機器１のMailbox受信時における処理手順を示すフローチャートである。
【００２７】
シグナル受信部１２１は、Mailbox送信シグナルを受信し、共有情報実行許可部１２２に通知する（ステップＢ１）。この通知を受けた共有情報実行許可部１２２は、ハードウェアＩＤ読出部１２３にMailboxハードウェア１３からのハードウェアＩＤの読み出しを依頼する（ステップＢ２）。この依頼を受けたハードウェアＩＤ読出部１２３は、Mailboxハードウェア１３、より詳しくは、ハードウェアＩＤ保存部１３３からハードウェアＩＤを読み出す（ステップＢ３）。
【００２８】
共有情報実行許可部１２２は、ハードウェアＩＤ読出部１２３によって読み出されたハードウェアＩＤと、実行許可ＩＤ保存領域１２５に保存されているハードウェアＩＤとを比較し、Mailbox通信の実行可否を判断する（ステップＢ４）。ハードウェアＩＤ読出部１２３によって読み出されたハードウェアＩＤが、実行許可ＩＤ保存領域１２５に保存されているハードウェアＩＤ、つまり実行許可ＩＤの場合（ステップＢ５：ＹＥＳ）、共有情報読出部１２４は、Mailbox送信シグナルに含まれるポインタを用いて、共有メモリ１４上の通信データを取得する（ステップＢ６）。実行許可ＩＤではない場合（ステップＢ５：ＮＯ）、共有情報実行許可部１２２は、不正なMailbox通信の発生を検出し（ステップＢ６）、電子機器１を異常終了させる。たとえば、不正なMailbox通信が発生したことがホスト２へ通知されて、電子機器１が動作不能状態となる。
【００２９】
このように、本実施形態の電子機器１は、第三者による通信への割り込みを効率的に防止することを実現する。
（第２実施形態）
次に、第２実施形態について説明する。なお、第１実施形態と同一の構成要素については同一の符号を用い、それらについての重複する説明については省略する。
【００３０】
図６は、本実施形態の電子機器１の機能構成を例示するブロック図である。
図６に示されるように、本実施形態においては、共有情報受信部１２０は、セッション管理部１２６を有する。ＣＰＵ［０］１１とＣＰＵ［１］１２との間でのMailbox通信の場合、ＣＰＵ［０］１１とMailboxハードウェア１３および共有メモリ１４との間でデータの授受が行われ、また、ＣＰＵ［１］１２とMailboxハードウェア１３および共有メモリ１４との間でデータの授受が行われる。つまり、Mailbox通信の場合、ＣＰＵ［０］１１とＣＰＵ［１］１２とは直接的には通信しないので、本来、バス１６を介した通信を行うためのセッションが、ＣＰＵ［０］１１とＣＰＵ［１］１２との間で確立されている必要はない。
【００３１】
本実施形態においては、共有メモリ１４からデータを取り出す受信側が、共有メモリ１４へ格納されたデータが正規の相手によって格納されたデータであることを確認するために、Mailbox通信の送信側と受信側との間でセッションを確立させる。具体的には、ＣＰＵ［１］１２は、ＣＰＵ［０］１１からのデータを共有メモリ１４から取り出す場合、セッションの確立によって得られる情報をＣＰＵ［０］１１の確認に利用する。共有情報受信部１２０のセッション管理部１２６は、セッション状態の確認やセッションの受け入れ可否の判定など、セッションについての管理を行う。
【００３２】
ここで、図７を参照して、本実施形態の電子機器１におけるＣＰＵ［０］１１からＣＰＵ［１］１２へのMailbox通信の処理の流れについて説明する。
Mailboxハードウェア１３がＣＰＵ［１］１２へMailbox送信シグナルを送信するまでの処理の流れは第１実施形態と同様である（ａ１１〜ａ１２，ａ２１〜ａ２２）。ここでは、ＣＰＵ［０］１１とＣＰＵ［１］１２との間でセッションは確立されていない状態であることを想定する。
【００３３】
ＣＰＵ［１］１２は、Mailbox送信シグナルを受信すると、セッション状態を確認する（ｂ２１）。セッションがない場合、ＣＰＵ［１］１２は、セッションの受け入れ処理を行い、当該セッションの受け入れ可否を判定する（ｂ２２）。ＣＰＵ［１］１２は、たとえば、ＣＰＵ［０］１１との間で事前に交換している何らかの秘密情報であるパスフレーズが一致するか否かによって、セッションの受け入れ可否を判定する。セッションの受け入れが可能であると判定した場合、ＣＰＵ［１］１２は、ＣＰＵ［０］１１のハードウェアＩＤを保存する（実行許可ＩＤ保存領域１２５のハードウェアＩＤ５１Ａ）。前述したように、ここでは、バス１６の使用に関してＣＰＵ［０］１１に割り当てられるバスＩＤがハードウェアＩＤとして保存される。本実施形態においては、実行許可ＩＤ保存領域１２５には、セッションが確立している相手のハードウェアＩＤが１つ保存される。
【００３４】
このハードウェアＩＤの保存によって、共有メモリ１４からの通信データ５０の読み出しが許可されることになり（ａ３１〜ａ３２）、ＣＰＵ［１］１２は、共有メモリ１４から通信データ５０を読み出す（ａ３３）。たとえばパスフレーズが一致しない正規の相手以外からのセッションの受け入れを拒否することで、ＣＰＵ［１］１２は、正規の相手以外からのMailbox通信によるデータの受信を防止することができる。
【００３５】
なお、ＣＰＵ［０］１１からＣＰＵ［１］１２へのMailbox通信が複数回連続して実行される場合、ＣＰＵ［０］１１とＣＰＵ［１］１２との間のセッションは、すべてが完了するまで維持され続けてもよいし、都度確立するようにしてもよい。
図８は、本実施形態の電子機器１のMailbox受信時における処理手順を示すフローチャートである。
【００３６】
シグナル受信部１２１は、Mailbox送信シグナルを受信し、セッション管理部１２６にセッション状態の確認を依頼する（ステップＣ１）。具体的には、ＣＰＵ［１］１２に現在セッションが存在しているか否かの確認を依頼する。この依頼を受けたセッション管理部１２６は、セッション状態を確認する（ステップＣ２）。セッションがない場合（ステップＣ３：ＮＯ）、セッション管理部１２６は、セッションの受け入れ処理を行い、セッションの受け入れ可否を判断する（ステップＣ４）。セッション管理部１２６は、たとえばＣＰＵ［０］１１との間で事前に交換しているパスフレーズが一致するか否かによって、当該セッションの受け入れ可否を判定する。受け入れ不可の場合（ステップＣ５：ＮＯ）、セッション管理部１２６は、不正なMailbox通信の発生を検出し（ステップＣ６）、電子機器１を異常終了させる。たとえば、不正なMailbox通信が発生したことがホスト２へ通知されて、電子機器１が動作不能状態となる。
【００３７】
受け入れ可の場合（ステップＣ５：ＹＥＳ）、セッション管理部１２６は、セッション受け入れ時の処理を行う（ステップＣ７）。セッション受け入れ時の処理については、図９を参照して後述する。セッション受け入れ時の処理が行われ、または、セッションありと判断された場合（ステップＣ３：ＹＥＳ）、セッション管理部１２６は、共有情報実行許可部１２２にMailbox通信の実行可否判断を依頼する（ステップＣ８）。Mailbox通信の実行可否判断は、第１実施形態と同様の手順（図５：ステップＢ２〜ステップＢ５）で実行される。実行可と判断されると、共有情報読出部１２４が共有メモリ１４上の通信データを取得する（ステップＣ９）。
【００３８】
図９は、本実施形態の電子機器１のセッション受け入れ時における処理手順を示すフローチャートである。
セッション管理部１２６は、ハードウェアＩＤ読出部１２３にMailboxハードウェアからのハードウェアＩＤの読み出しを依頼する（ステップＤ１）。この依頼を受けたハードウェアＩＤ読出部１２３は、Mailboxハードウェア１３、より詳しくは、ハードウェアＩＤ保存部１３３からハードウェアＩＤを読み出す（ステップＤ２）。セッション管理部１２６は、ハードウェアＩＤ読出部１２３によって読み出されたハードウェアＩＤを実行許可ＩＤ保存領域１２５に保存する（ステップＤ３）。
【００３９】
このように、本実施形態の電子機器１は、Mailbox通信においてセッションを確認することで、第三者によるMailbox通信への割り込みを、より確実に防止する。
（第３実施形態）
次に、第３実施形態について説明する。なお、第１または第２実施形態と同一の構成要素については同一の符号を用い、それらについての重複する説明については省略する。
【００４０】
図１０は、本実施形態の電子機器１の機能構成を例示するブロック図である。
図１０に示されるように、本実施形態においては、共有情報受信部１２０は、検証子確認部１２７を有し、Mailboxハードウェア１３は、検証子生成部１３４を有する。
【００４１】
本実施形態においては、ＣＰＵ［０］１１によって共有メモリ１４に格納されたデータの検証子をMailboxハードウェア１３の検証子生成部１３４が生成する。共有情報受信部１２０の検証子確認部１２７は、この検証子をMailboxハードウェア１３から取得するとともに、共有メモリ１４から取り出したデータから検証子を生成し、２つの検証子を比較することによって、第三者による改ざんが行われていないか検証する。検証子の生成方法はいかなる方法を用いてもよく、代表的な方法として、ＳＨＡ２５６などがある。
【００４２】
ＣＰＵ［０］１１とＣＰＵ［１］１２とが、たとえば、互いを確認したり、授受するデータを確認したりするための秘密情報を共有しない場合には、ＣＰＵ［０］１１が共有データの検証子を生成して共有メモリ１４に格納したとしても、検証子ごと置き換えるリプレイ攻撃に脆弱である。本実施形態の電子機器１では、Mailbox送信シグナル生成時にMailboxハードウェア１３が検証子を生成して保存することで、通信データに対するリプレイ攻撃を防止する。
【００４３】
ここで、図１１を参照して、本実施形態の電子機器１におけるＣＰＵ［０］１１からＣＰＵ［１］１２へのMailbox通信の処理の流れについて説明する。
本実施形態においては、ＣＰＵ［０］１１は、Mailboxハードウェア１３にMailbox送信シグナルの生成を依頼する（ａ１２）ことに加えて、Mailboxハードウェア１３に検証子の生成を依頼する（ｃ１１）。この依頼を受けたMailboxハードウェア１３は、Mailbox送信シグナルの生成が依頼された際にＣＰＵ［０］１１から受信したポインタを用いて共有メモリ１４から通信データ５０を取り出し、通信データ５０の検証子５２を生成して保存する（ｃ２１）。
【００４４】
ＣＰＵ［１］１２は、Mailbox送信シグナルを受信すると、第１実施形態と同様の処理の流れで共有メモリ１４から通信データ５０を取り出す（ａ３１〜ａ３３）。本実施形態においては、ＣＰＵ［１］１２は、さらに、Mailboxハードウェア１３から検証子５２を取り出す（ｃ３１）。ＣＰＵ［１］１２は、共有メモリ１４から取り出した通信データ５０の検証子を生成し、２つの検証子を比較する（ｃ３２）。一致していれば、ＣＰＵ［１］１２は、通信データ５０が改ざんされていないことを確認でき、一致していなければ、通信データ５０の改ざんを検出できる。
【００４５】
図１２は、本実施形態の電子機器１のMailbox送信時における処理手順を示すフローチャートである。
図１２中、ステップＡ１〜ステップＡ５は、第１実施形態において示した図４のステップＡ１〜ステップＡ５に対応する。本実施形態では、さらに、ステップＡ４とステップＡ５との間で、ステップＡ１１とステップＡ１２との処理を実行する。
【００４６】
具体的には、Mailboxハードウェア１３は、ハードウェアＩＤ保存部１３３によってＣＰＵ［０］１１のハードウェアＩＤが保存されると（ステップＡ４）、送信シグナル生成部１３２が、検証子生成部１３４に共有メモリ１４上の通信データの検証子生成を依頼する（ステップＡ１１）。この依頼を受けた検証子生成部１３４は、共有メモリ１４上の通信データの検証子を生成する（ステップＡ１２）。この検証子を検証子Ａとする。なお、ステップＡ３〜Ａ４のハードウェアＩＤの保存と、ステップＡ１１〜Ａ１２の検証子の生成とは、逆の順序で行われてもよいし、並列に行われてもよい。
【００４７】
図１３は、本実施形態の電子機器１のMailbox受信時におけるデータ改ざん検証に関する処理手順を示すフローチャートである。
検証子確認部１２７は、Mailboxハードウェア１３、より詳しくは、検証子生成部１３４が生成した検証子Ａを取得する（ステップＥ１）。また、検証子確認部１２７は、共有情報読出部１２４によって共有メモリ１４から取得された通信データから検証子を生成する（ステップＥ２）。この検証子を検証子Ｂとする。
【００４８】
検証子確認部１２７は、検証子Ａと検証子Ｂとを比較し（ステップＥ３）、一致する場合（ステップＥ４：ＹＥＳ）、共有メモリ１４から取得された通信データは改ざんされていないことが確認できたとして（ステップＥ５）、データの改ざん検証を終了する。一致しない場合（ステップＥ４：ＮＯ）、検証子確認部１２７は、共有メモリ１４から取得された通信データの改ざんを検出し（ステップＥ６）、電子機器１を異常終了させる。たとえば、通信データの改ざんがホスト２へ通知されて、電子機器１が動作不能状態となる。
【００４９】
このように、本実施形態の電子機器１は、さらに、第三者による通信データの改ざんを検出することを実現する。
ところで、第１乃至第３実施形態の電子機器１では、Mailboxハードウェア１３が保存するハードウェアＩＤを、共有メモリ１４に格納されるデータの読み取り可否を判断するために用いる例を説明したが、さらに、このハードウェアＩＤを使って、共有メモリ１４に格納されるデータを暗号化するようにしてもよい。つまり、共有情報送信部１１０が暗号化部を有し、共有情報受信部１２０が復号部を有してもよい。これにより、たとえば送信側と受信側とで暗号化のための秘密情報を共有しなくとも、第三者による通信データの盗難を防止することができる。
【００５０】
また、第２実施形態の電子機器１では、ＣＰＵ［０］１１がＣＰＵ［１］１２へMailbox通信によってデータを転送するにあたり、ＣＰＵ［１］１２が、共有メモリ１４上のデータがＣＰＵ［０］１１によって格納されたデータであることを確認するために、セッションの受け入れ処理を行う例を説明した。その一変形例として、ＣＰＵ［０］１１が、たとえばＣＰＵ［１］１２との間で事前に交換しているパスフレーズを他のハードウェアへ通知することで、ＣＰＵ［０］１１の制御の下、他のハードウェアがＣＰＵ［１］１２へMailbox通信によってデータを転送することを許可するようにしてもよい。つまり、共有情報送信部１１０が、他のハードウェアがＣＰＵ［１］１２へMailbox通信によってデータを転送することを許可する処理部、より詳しくは、たとえばＣＰＵ［１］１２との間で事前に交換しているパスフレーズを他のハードウェアへ通知し、他のハードウェアによるMailbox通信時にＣＰＵ［１］１２が行うセッション受け入れ処理で当該セッションを受け入れ可能と判定させるセッション処理部を有してもよい。
【００５１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５２】
１…電子機器、２…ホスト、１１…ＣＰＵ［０］、１２…ＣＰＵ［１］、１３…Mailboxハードウェア、１４…共有メモリ、１５…インタフェース、１６…バス、１１０…共有情報送信部、１１１…共有情報設定部、１１２…送信シグナル設定部、１２０…共有情報受信部、１２１…シグナル受信部、１２２…共有情報実行許可部、１２３…ハードウェアＩＤ読出部、１２４…共有情報読出部、１２５…実行許可ＩＤ保存領域、１２６…セッション管理部、１２７…検証子確認部、１３１…ハードウェアＩＤ設定部、１３２…送信シグナル生成部、１３３…ハードウェアＩＤ保存部、１３４…検証子生成部。
【図１】
2020024503.tif 000003
【図２】
2020024503.tif 000004
【図３】
2020024503.tif 000005
【図４】
2020024503.tif 000006
【図５】
2020024503.tif 000007
【図６】
2020024503.tif 000008
【図７】
2020024503.tif 000009
【図８】
2020024503.tif 000010
【図９】
2020024503.tif 000011
【図１０】
2020024503.tif 000012
【図１１】
2020024503.tif 000013
【図１２】
2020024503.tif 000014
【図１３】
2020024503.tif 000015