(57)【要約】      （修正有）【課題】複数のアプリがインストールされそれぞれ実行可能とされる端末機器と、端末機器と通信可能な管理機器とを備えるシステムにおいて、端末機器がセキュアブートなどの高度なセキュリティ機能を備えていなくても、信頼される管理機器と連携して、アプリの正当性を判定する電子機器およびシステムを提供する。【解決手段】管理機器１０は、端末機器１にインストールされている複数のアプリからそれぞれ一意に算出される特定値を複数のインストール時特定値として保持する。本システムは、１のアプリから一意に算出される特定値を実行時特定値として端末機器１に算出させ、算出された実行時特定値が管理機器１０に保持される複数のインストール時特定値のうちの１つと一致するときに、当該アプリを正当と判定する。【選択図】図２
2017187963.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアをインストール可能な記憶装置と、前記ソフトウェアを実行可能なプロセッサと、他の機器と通信可能なインターフェースとを備える電子機器であって、
前記他の機器は、前記電子機器にインストールされている１または複数のソフトウェアからそれぞれ一意に算出される特定値を、１または複数のインストール時特定値として保持し、
前記電子機器は、インストールされている１のソフトウェアに対応する特定値を実行時特定値として算出し、
前記電子機器は、前記電子機器、前記他の機器、または、さらに別の機器が、前記実行時特定値と前記他の機器が保持する前記１または複数のインストール時特定値とを比較することによって、前記実行時特定値が前記１または複数のインストール時特定値のうちの１つと一致するか全て不一致かを判定した結果である照合結果に基づいて、前記１のソフトウェアの正当性を判定する、
電子機器。
【請求項２】
請求項１において、
前記電子機器は、前記実行時特定値を前記他の機器に送信し、
前記他の機器が、受信した前記実行時特定値と前記１または複数のインストール時特定値とを比較し、前記照合結果を前記電子機器に伝送し、
前記電子機器は、前記照合結果が全て不一致の場合にはエラー処理を実行する、
電子機器。
【請求項３】
請求項１において、
前記電子機器は、前記実行時特定値を前記他の機器に送信し、
前記他の機器が、受信した前記実行時特定値と前記１または複数のインストール時特定値とを比較し、前記照合結果を前記電子機器に伝送し、
前記電子機器は、前記照合結果が全て不一致の場合には前記１のソフトウェアを削除する、
電子機器。
【請求項４】
請求項１において、
前記電子機器は、前記他の機器から前記１または複数のインストール時特定値を取得し、
算出した前記実行時特定値と、取得した前記１または複数のインストール時特定値とを比較し、前記照合結果が全て不一致の場合にはエラー処理を実行する、
電子機器。
【請求項５】
請求項１において、
前記電子機器は、前記他の機器から前記１または複数のインストール時特定値を取得し、
算出した前記実行時特定値と、取得した前記１または複数のインストール時特定値とを比較し、前記照合結果が全て不一致の場合には前記１のソフトウェアを削除する、
電子機器。
【請求項６】
請求項１において、
前記電子機器に新規ソフトウェアがインストールされたときには、前記電子機器は前記新規ソフトウェアから一意に算出される特定値を、当該新規ソフトウェアに対応するインストール時特定値として送出する、
前記他の機器は、当該新規ソフトウェアに対応するインストール時特定値を受信したときには、他の１または複数のインストール時特定値に追加して保持する、
電子機器。
【請求項７】
ソフトウェアがインストールされ実行される端末機器と通信可能な電子機器であって、
前記端末機器にインストールされている１または複数のソフトウェアからそれぞれ一意に算出される特定値を、１または複数のインストール時特定値として保持し、
前記端末機器に対して、インストールされている少なくとも１つのソフトウェアに対応する特定値を実行時特定値として算出させ、
前記電子機器は、前記電子機器自身、前記端末機器、または、別の機器が、前記実行時特定値と前記１または複数のインストール時特定値とを比較することによって、前記実行時特定値が前記１または複数のインストール時特定値のうちの１つと一致するか全て不一致かを判定した結果である照合結果に基づいて、前記１のソフトウェアの正当性を判定する、
電子機器。
【請求項８】
請求項７において、
前記電子機器は、前記端末機器から算出した前記実行時特定値を受信して、前記１または複数のインストール時特定値と比較し、そのうちの１つと一致するか全て不一致かを判定した結果である照合結果を前記端末機器に送信する、
電子機器。
【請求項９】
請求項７において、
前記電子機器は、前記１または複数のインストール時特定値を前記端末機器に送信し、前記端末機器に算出した前記実行時特定値との比較を実行させる、
電子機器。
【請求項１０】
請求項７において、
前記端末機器に新規ソフトウェアがインストールされたときには、前記端末機器に前記新規ソフトウェアから一意に算出される特定値を当該新規ソフトウェアに対応するインストール時特定値として算出して送信させ、
前記他電子機器は、当該新規ソフトウェアに対応するインストール時特定値を受信したときに、他の１または複数のインストール時特定値に追加して保持する、
電子機器。
【請求項１１】
１または複数のソフトウェアがインストールされそれぞれ実行可能とされる第１機器と、前記第１機器と通信可能な第２機器とを備えるシステムであって、
前記第２機器は、前記第１機器にインストールされている前記１または複数のソフトウェアからそれぞれ一意に算出される特定値を１または複数のインストール時特定値として保持し、
前記システムは、１のソフトウェアから一意に算出される特定値を実行時特定値として前記第１機器に算出させ、前記実行時特定値が前記第２機器に保持される前記１または複数のインストール時特定値のうちの１つと一致するときに、当該ソフトウェアを正当と判定する、
システム。
【請求項１２】
請求項１１において、
前記第１機器は、算出した前記実行時特定値を前記第２機器に送信し、
前記第２機器が、前記実行時特定値と前記１または複数のインストール時特定値との比較を行い、その比較結果を前記第１機器に送信し、
前記第１機器は、前記比較結果が一致の場合には前記第２機器との通信を継続し、前記比較結果がすべてのインストール時特定値との不一致を示す場合にはエラー処理を実行する、
システム。
【請求項１３】
請求項１１において、
前記第１機器は、算出した前記実行時特定値を前記第２機器に送信し、
前記第２機器が、前記実行時特定値と前記１または複数のインストール時特定値との比較を行い、その比較結果を前記第１機器に送信し、
前記第１機器は、前記比較結果が一致の場合には前記第２機器との通信を継続し、前記比較結果がすべてのインストール時特定値との不一致を示す場合には当該ソフトウェアを削除する、
システム。
【請求項１４】
請求項１１において、
前記第２機器は、前記１または複数のインストール時特定値を前記第１機器に送信し、
前記第１機器が、前記実行時特定値と前記１または複数のインストール時特定値との比較を行い、その比較結果が一致の場合には前記第２機器との通信を継続し、前記比較結果がすべてのインストール時特定値との不一致を示す場合にはエラー処理を実行する、
システム。
【請求項１５】
請求項１１において、
前記第２機器は前記第１機器に対して前記インストール時特定値を送信し、
前記第１機器は前記インストール時特定値を受信したときに前記実行時特定値を算出し、
前記第１機器は受信した前記インストール時特定値を前記実行時特定値と比較し、一致した場合には前記第２機器との間の通信処理を開始し、不一致の場合には前記ソフトウェアを削除する、
システム。
【請求項１６】
請求項１１において、前記システムは、前記第１機器と前記第２機器との通信を中継する第３機器をさらに有し、
前記第２機器は、前記複数のインストール時特定値を、前記第２機器、前記第３機器またはその他の機器のうち、当該インストール時特定値に対応するソフトウェアを前記第１機器にインストールした機器と紐付けて保持し、
前記システムは、前記実行時特定値が前記第２機器に保持される前記１または複数のインストール時特定値のうちの１つと一致するときに、当該インストール時特定値に紐付けられている機器が前記第３機器と一致する場合に当該ソフトウェアを正当と判定し、前記第３機器と不一致の場合には不正と判定する、
システム。
【請求項１７】
請求項１１において、前記システムは、前記第１機器と前記第２機器との通信を中継する第３機器をさらに有し、
前記第２機器は、前記第１機器にインストールされている前記１または複数のソフトウェアに代えて、前記第１機器にインストールされることが許されている１または複数のソフトウェアからそれぞれ一意に算出される特定値を１または複数のインストール時特定値として保持し、
前記第１機器は、前記１のソフトウェアが前記第１機器にインストールされたときに前記実行時特定値を算出し、前記第２機器は、前記実行時特定値が前記第２機器に保持される前記１または複数のインストール時特定値のうちの１つと一致するときに、当該ソフトウェアを正当と判定する、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器およびシステムに関し、特にセキュアブート機能を持たない簡便な電子機器に不正なソフトウェアがインストールされた場合に、そのソフトウェアによる不正な動作の影響が、その電子機器が接続されるシステムに波及する事態の防止に好適に利用できるものである。
【背景技術】
【０００２】
マルウェアなどの不正なソフトウェアが、コンピュータやスマートフォンなどの電子機器にインストールされて不正な動作を実行することによって、電子機器内の機器内の情報が盗まれ或いは破壊されるのを防止するための機能の一つに、セキュアブートがある。外部から提供されるソフトウェアは、提供元或いは信頼されている第三者機関による認証を受け、電子署名を伴って配布されて電子機器にインストールされる。インストールされた電子機器は、電源投入時のブートアップルーチンにおいて、電子署名を検証してそのソフトウェアが信頼のおけるサイトから提供された真正なものであることを確認した上で、そのソフトウェアを起動する。この場合のソフトウェアには、一般のアプリケーションソフトの他、通信やネットワークインターフェースなどのミドルウェア、ドライバソフトなどの中位、低位のソフトウェアおよびオペレーティングシステム（OS：Operating System）などまでもが広く含まれる。
【０００３】
特許文献１には、証明書が失効してディジタル署名が無効な状態になっても、ソフトウェアの正当性を検証することが可能な情報処理装置が開示されている。証明書が失効しておらずソフトウェアの正当性が確認されているときに、ソフトウェアから一意に計算される値を算出して記憶手段に格納しておき、ディジタル署名が無効な状態になった時に、ソフトウェアから同じ方法で一意に計算される値を算出して記憶手段に格納されている値と照合する。一致すればソフトウェアは正当なものであると判断される。
【０００４】
特許文献２には、機器制御を行うプロセッサが実行するプログラムの正当性が確認されなかった場合に、その事を確実に通知することが可能な情報処理装置が開示されている。情報処理装置は機器制御を行う第１のプロセッサとは別に第２のプロセッサを備え、第２のプロセッサは情報処理装置の起動時に第１のプロセッサが実行するプログラムの正当性検証を行い、正当性が確認された場合には第１のプロセッサを起動させ、正当性が確認されなかった場合には第１のプロセッサが備えるユーザーインターフェースとは異なる手段により異常通知を行う。
【０００５】
特許文献３には、通信データの完全性検証に基づき、正当な場合はシステムの構成装置を動作させ、不適当な場合は構成装置を動作させないで構成装置の誤制御を防止する完全性検証システムが開示されている。第１の制御装置は、通信データの完全性検証用データを生成して通信データとともに、第２の制御装置及び検知サーバへ送信する。検知サーバは、必要に応じて検証用付加情報を取得し、第１の制御装置から受信した通信データに対して完全性検証処理を行い、第２の制御装置及び制御サーバへ検証結果を送信する。第２の制御装置は、通信データの完全性の検証結果を検知サーバから受信するまで通信データに基づく制御業務を行わず、検知サーバが送信した検証結果が正当の場合には通信データに従った制御業務を行い、検証結果が不適当の場合には通信データに従った制御業務を行わず第１の制御装置にエラーを送信する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２２６１６０号公報
【特許文献２】特開２０１３−１１４６２０号公報
【特許文献３】特開２０１４−２１１４７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１、２及び３について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００８】
ＩｏＴ（Internet of Things）をはじめ、多数の電子機器がネットワークに接続され、例えば活動量計などの末端の機器がインターネットに情報を発信することも可能となってきている。このため、末端の機器にマルウェアなどの不正なソフトウェアをインストールして、個人情報などのデータを盗み取ったり改ざんしたりする攻撃などを想定した自己防衛システムの構築が急務となってきている。理論的には、このような末端の機器に上述のようなセキュアブート機能を搭載することによって、ソフトウェアの正当性を検証することが可能である。しかしながら、上述のようなセキュアブートシステムには、一般に公開鍵暗号が適用されており、暗号化や復号のための演算処理に多大な演算負荷を必要とする。本願の発明者によれば、従来のセキュアブートシステムが搭載されている電子機器では、例えば、マルチＣＰＵ（Central Processing Unit）コアがギガバイトクラスの大容量メモリを使って数ｍｓの演算時間を要すると試算された。一方、上述のような末端の機器にそのような演算負荷に耐えられるような演算回路を搭載することは、事実上不可能である。末端の機器は例えば活動量計の場合には、小型軽量であることが求められ、且つ、価格も抑えられる。従来の機器と同様のセキュアブートを機能させられるような専用の暗号演算回路を搭載することによってコストアップし、消費電力の増大に伴って電池の寿命が短縮されまたは寿命を維持するために電池が大型化することは、実用上許されないからである。
【０００９】
これに対して、特許文献３に開示される完全性検証システムに倣って、末端の機器に代わって高い演算能力を有する他の機器にセキュアブートの機能を代替させるという解決手段が考えられる。特許文献３における完全性の検証の対象は、ソフトウェアではなく通信データであるため、そもそも他の機器に伝送されることが前提とされており、したがって通信データを受信した他の機器においてその通信データの完全性を検証することは、特に大きなオーバーヘッドとはならない。一方、本願発明者が課題と位置付けているのは、ソフトウェアであるため、他の機器に伝送されることは想定されておらず、特許文献３に開示される完全性検証システムをＩｏＴなどの末端の機器に応用することはできない。セキュアブートを他の機器で実行させるために、ソフトウェア自体を伝送することは大きなオーバーヘッドとなるばかりでなく、その伝送のための通信制御ソフトの正当性をいかにして検証するかが未解決だからである。
【００１０】
特許文献２に開示される情報処理システムでは、第１のプロセッサで実行されるプログラムの正当性を確認するために、第２のプロセッサをさらに搭載する必要があり、コストアップ等の上記の課題は解決されない。
【００１１】
特許文献１に開示される情報処理装置では、ソフトウェアの正当性が保証されている時に、当該ソフトウェアから一意に計算される値を算出して記憶しておくので、証明書が失効した後のソフトウェアの正当性の検証には、当該「一意に計算される値」の算出と記憶された値との照合が演算負荷として必要となるに留まる。したがって、この部分だけを適用することができれば、上記の課題は解決されるとも考えられる。しかしながら、本願が想定しているのは、不正なソフトウェアがインストールされた場合であって、その不正なソフトウェアが不正な動作を行うことである。インストール時に電子署名を使った証明書で検証を行って、そもそも不正なソフトウェアがインストールされないように防御することができれば、上述の課題の前提がなくなる。一方、電子署名の偽造などによってそのようなインストール時の検証を欺罔してインストールされた不正なソフトウェアについては、インストール時にはそのソフトウェアが正当であるものとして当該「一意に計算される値」が算出されてしまうので、特許文献１に開示される方法を適用しても、本願の課題を解決することはできない。
【００１２】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
一実施の形態によれば、下記の通りである。
【００１４】
すなわち、１または複数のソフトウェアがインストールされそれぞれ実行可能とされる第１機器と、前記第１機器と通信可能な第２機器とを備えるシステムであって、以下のように構成される。
【００１５】
第２機器は、第１機器にインストールされている１または複数のソフトウェアからそれぞれ一意に算出される特定値を１または複数のインストール時特定値として保持する。
【００１６】
本システムは、１のソフトウェアから一意に算出される特定値を実行時特定値として第１機器に算出させ、算出された実行時特定値が第２機器に保持される１または複数のインストール時特定値のうちの１つと一致するときに、当該ソフトウェアを正当と判定する。
【発明の効果】
【００１７】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１８】
すなわち、第１機器がセキュアブートなどの高度なセキュリティ機能を備えていなくても、信頼される第２機器と連携して、ソフトウェアの正当性を判定することができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、課題についての説明図である。
【図２】図２は、実施形態１に係る機器１と機器１０を含むシステムの模式的な構成図である。
【図３】図３は、実施形態１、２及び３に係る機器１によるアプリインストール処理の動作例を示すフローチャートである。
【図４】図４は、実施形態１及び２に係る機器１０によるアプリインストール処理の動作例を示すフローチャートである。
【図５】図５は、機器１と機器１０との間で、接続処理、不正アプリ検出処理及び通信処理を実行する、機器１の動作例を示すフローチャートである。
【図６】図６は、機器１と機器１０との間で、接続処理、不正アプリ検出処理及び通信処理を実行する、機器１０の動作例を示すフローチャートである。
【図７】図７は、実施形態１に係る不正アプリ検出処理の一例としてエラー処理を行なう場合の、機器１の動作例を示すフローチャートである。
【図８】図８は、実施形態１に係る不正アプリ検出処理の一例としてエラー処理を行なう場合の、機器１０の動作例を示すフローチャートである。
【図９】図９は、実施形態１に係る不正アプリ検出処理の一例として不正アプリの削除処理を行なう場合の、機器１の動作例を示すフローチャートである。
【図１０】図１０は、実施形態１に係る不正アプリ検出処理の一例として不正アプリの削除処理を行なう場合の、機器１０の動作例を示すフローチャートである。
【図１１】図１１は、実施形態２に係る機器１と機器１０を含むシステムの模式的な構成図である。
【図１２】図１２は、実施形態２に係る不正アプリ検出処理の一例としてエラー処理を行なう場合の、機器１の動作例を示すフローチャートである。
【図１３】図１３は、実施形態２に係る不正アプリ検出処理の一例としてエラー処理を行なう場合の、機器１０の動作例を示すフローチャートである。
【図１４】図１４は、実施形態２に係る不正アプリ検出処理の一例として不正アプリの削除処理を行なう場合の、機器１の動作例を示すフローチャートである。
【図１５】図１５は、実施形態２に係る不正アプリ検出処理の一例として不正アプリの削除処理を行なう場合の、機器１０の動作例を示すフローチャートである。
【図１６】図１６は、実施形態３に係る機器１と機器１０と機器１００を含むシステムの模式的な構成図である。
【図１７】図１７は、実施形態３に係るアプリインストール処理の機器１０の動作例を示すフローチャートである。
【図１８】図１８は、実施形態３に係るアプリインストール処理の機器１００の動作例を示すフローチャートである。
【図１９】図１９は、実施形態３に係る不正アプリ検出処理の一例としてエラー処理を行なう場合の、機器１０の動作例を示すフローチャートである。
【図２０】図２０は、実施形態３に係る不正アプリ検出処理の一例としてエラー処理を行なう場合の、機器１００の動作例を示すフローチャートである。
【図２１】図２１は、実施形態４に係る機器１と機器１０と機器１００を含むシステムの模式的な構成図である。
【図２２】図２２は、実施形態４に係るアプリインストール処理の機器１の動作例を示すフローチャートである。
【図２３】図２３は、実施形態４に係るアプリインストール処理の機器１０の動作例を示すフローチャートである。
【図２４】図２４は、実施形態４に係るアプリインストール処理の機器１００の動作例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
実施の形態について詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。本願において正当性判定の対象であるソフトウェアには、一般のアプリケーションソフトウェアの他、通信やネットワークインターフェースなどのミドルウェア、ドライバソフトなどの中位、低位のソフトウェアなどが広く含まれ、オペレーティングシステム（ＯＳ）に含まれるライブラリなどＯＳの少なくとも一部が含まれてもよい。以下の実施形態及び引用する各図面では、正当性判定の対象であるソフトウェアとして、一般のアプリケーションソフトウェアを代表的な一例として説明するものとし、「アプリ」と略記する。即ち、「アプリ」は「本願における正当性判定の対象である任意のソフトウェア」と読み替えることができる。
【００２１】
実施の形態について詳述するに先立って、解決しようとする課題について、さらに詳しく説明する。
【００２２】
図１は、課題についての説明図である。機器１は、例えば活動量計やドライブレコーダなどの末端の機器であり、プロセッサ３と通信部４と不揮発性メモリ２を備えている。不揮発性メモリ２には、プロセッサ３で実行される、アプリケーションソフトウェアであるアプリＡ，アプリＢの他、通信ドライバ、ＯＳ、アプリ書換ドライバ等の、各種のソフトウェアが格納されている。機器１０は、例えばＰＣ（Personal Computer）やスマートフォンなどの機器であり、プロセッサ３、機器１とのインターフェースである通信部５、及び、インターネットなどの上位のネットワークとのインターフェースである上位通信部６を備えている。機器１０Ｘについては後述する。従来の活動量計やドライブレコーダなどの末端の機器１の多くは、ＬＡＮ（Local Area Network）などのネットワーク通信機能や無線通信機能が無く、代わりにＰＣやスマートフォンなどの機器１０と１：１接続するために有線接続端子が搭載されている。即ち通信部４と通信部５は、例えばＵＳＢ（Universal Serial Bus）などのインターフェースである。そのため、機器１に搭載されたセンサ（不図示）で取得したデータは、ＰＣやスマートフォンなどの機器１０と有線で１：１接続して転送し、機器１０を通して閲覧することができる。またデータを解析した結果を使用したサービスを受けるために、ＰＣやスマートフォンなどの機器１０がインターネットを通してサーバにデータを送信することができる。機器１のアプリに関しては、インターネット経由でサーバからアプリをＰＣやスマートフォンなどの機器１０にダウンロードし、その後、機器１０と機器１を有線で繋ぎ、ダウンロードしたアプリを機器１に転送することでアプリのインストールとアップデートが行われる。
【００２３】
ＩｏＴでは、このような構成を発展させて、機器１が取得したデータをＰＣやスマートフォンなどの機器１０からインターネットを通して、リアルタイムでサーバへ送信するシステムが提案されている。また、機器１とは別の多数の機器からもデータを送信することで、多くの機器のデータを集めることでしか提供できないサービスが提案されている。これに対して機器１と機器１０とを有線で１：１接続する従来の方式では有線ケーブルを用意する煩わしさ、有線ケーブルの取り回し（長さ含む）の煩わしさ、などがあるため、多：１または多：多のネットワーク接続に置換され、さらに有線接続から無線接続に置き換えられる。
【００２４】
これにより、収集した情報の定期的なアップロードが可能となるなど、利便性が向上する反面、セキュリティ上の脆弱性が発生する。有線接続に比べ無線接続の方が任意の機器１０からの接続試行が容易となる。そのため、悪意を持った機器１０Ｘが不正なアプリＸを図１の機器１にインストールする可能性が、１：１の有線接続に比べて高くなる。このとき機器１にセキュアブート機能など、インストールされているアプリの正当性を検証する機構が搭載されていない場合には、機器１に不正なアプリＸがインストールされていることに気付くことができない。そのため、悪意を持った機器１０Ｘに代わって本来の正当な機器１０が機器１に接続した場合であっても、不正なアプリＸの起動を阻止することができず、種々のセキュリティ攻撃を許してしまうこととなる。例えば、機器１が送信するデータが改ざんされており適切なサービスを機器１０が受けられない、機器１が不特定の機器１０にデータを送信して個人情報を盗まれる、不正なアプリによる正当なアプリ改ざん（例えば有償機能が常にオンとなるなど）、などが考えられる。
【００２５】
このようなケースで一般的には、機器１の不正なアプリや正当なアプリの改ざんを検出し、その実行を阻止するのを目的としてセキュアブートが機器１に実装されるとよい。しかし、セキュアブートは実装のハードルが高いため、現在はパソコンやスマートフォンなどの高価な製品、また、その高価な製品でも一部にしか搭載されておらず、安価な製品に搭載するのはコスト的に難しいという問題点がある。
【００２６】
〔実施形態１〕
図２は、実施形態１に係る機器１と機器１０を含むシステムの模式的な構成図である。
【００２７】
機器１は、ソフトウェアをインストール可能な記憶装置の一例である不揮発性メモリ２と、そのソフトウェアを実行可能なプロセッサ３と、他の機器１０と通信可能なインターフェースである通信部４とを備える電子機器であって、例えば、活動量計やドライブレコーダである。ここで、他の機器１０は、機器１にインストールされている１または複数のソフトウェアからそれぞれ一意に算出される特定値を、１または複数のインストール時特定値として保持している。
【００２８】
ここで、ソフトウェアからそれぞれ一意に算出される特定値とは、ソフトウェアの実行命令コード或いはソースコードの全部または一部を入力として、不可逆的に一意に定まる値であり、例えば、ハッシュ値、ＭＡＣ（Message Authentication Code）が好適である。また、インストール時特定値は正当性判定対象のソフトウェアについてのみ算出しておけばよい。正当性判定対象のソフトウェアは、通常はアプリケーションソフトウェア（アプリ）であるが、必ずしもこれに限定される必要はなく、各種ドライバやＯＳの一部（ライブラリ）などが含まれてもよい。
【００２９】
機器１は、インストールされているソフトウェアのうちの少なくとも１個の正当性判定対象のソフトウェアに対応する特定値を実行時特定値として算出する。算出された正当性判定対象のソフトウェアの実行時特定値は、インストール時特定値と比較される。このとき、実行時特定値とインストール時特定値との比較は、機器１が行っても良いし、機器１０が行っても良い。或いは、図２に示す構成とは異なるシステム構成を採用して、機器１、機器１０とは異なる他の機器が比較を行ってもよい。さらには、インストール時特定値は、機器１の外部に保管されていればよく、保管する機器と比較を行う機器は、必ずしも同一である必要はない。機器１は、実行時特定値とインストール時特定値との比較の結果が一致するときにそのソフトウェアを正当なものと判定する。複数のソフトウェアを正当性判定の対象とする場合には、対象のソフトウェアすべてについて、予めインストール時特定値が算出され、機器１０に保存されていることを前提とし、正当性判定時に対象のソフトウェアすべてについて実行時特定値を算出して、対応するインストール時特定値と比較する。全てが一致した場合には、不正なソフトウェアは検出されなかったものとして、通常の処理を開始する一方、不正なソフトウェアが検出されたときには、通信を遮断し当該ソフトウェアを削除するなどの所定のエラー処理を実行することによって、対処することができる。
【００３０】
これにより、機器１自身がセキュアブートなどの高度なセキュリティ機能を備えていなくても、信頼される外部の機器１０と連携して、ソフトウェアの正当性を判定することができる。
【００３１】
図２を引用してさらに詳しく説明する。機器１の不揮発性メモリ２には、ＯＳ、通信ドライバ、アプリ書換ドライバ、及び、アプリケーションソフトウェアであるアプリＡとアプリＢが格納されている。本実施形態では、不揮発性メモリ２にさらに特定値計算ドライバを格納し、これをプロセッサ３で実行することによって、インストール時特定値と実行時特定値を算出する。通信部４は、例えば機器１０との間で無線通信を行うためのインターフェースであって、プロセッサ３が通信ドライバを実行することによって、規格に対応した通信を行なうことができる。機器１０は、不揮発性メモリ２、プロセッサ３、通信部５、及び、上位通信部６を備える。不揮発性メモリ２には、図示が省略されているＯＳと通信ドライバが格納されており、プロセッサ３が通信部５向けの通信ドライバを実行することによって機器１との無線通信が可能であり、プロセッサ３が上位通信部６向けの通信ドライバを実行することによって、Ｅｔｈｅｒｎｅｔ（登録商標、以下同じ）などの上位のネットワークとの通信が可能である。機器１０の不揮発性メモリ２には、機器１にアプリＡとアプリＢがそれぞれインストールされたときの特定値（インストール時特定値）が格納されている。ここでインストール時とは、必ずしもアプリが新規インストールされた時に限られず、予めアプリがインストールされている機器１が初めて機器１０に接続された時であってもよい。
【００３２】
一般にセキュアブートでは公開鍵暗号方式による署名検証を実施してアプリの配布元の正当性を判断する。この署名検証は、公開鍵暗号の演算負荷が重くソフトウェアで実行するには高性能の演算性能を持つプラットフォームを必要としまたは専用のハードウェアを実装する必要があって、高いコストがかかるため、安価な機器に実装することができない。そのため、本実施形態１においてアプリの配布元の正当性の確認は、図２の機器１０のユーザ、もしくは機器１のメーカー等（具体的にはメーカーのサーバ）が実施する必要がある。本実施形態では、機器１０のユーザが信頼できる者であるとし、機器１０から機器１にインストールされたアプリは正当であることが保証されているものとしている。
【００３３】
機器１と機器１０との間の通信が、無線ネットワークなどで他の機器が接続可能な場合には、図１に示したのと同様に、悪意を持った機器１０Ｘがその無線ネットワークに侵入するなどして、不正なアプリＸを機器１にインストールすることが可能である。不正なアプリＸは機器１上で動作して上述したような種々のセキュリティ攻撃を許してしまうこととなる。しかし、悪意を持った機器１０Ｘは、通常、その無線ネットワークに侵入したまま、或いは、接続されたまま、上述の種々のセキュリティ攻撃を継続することは考えにくい。仮にそのような事態に至ったとしても、不正なデバイスが接続されてネットワークに参加しているという攻撃態様に対しては、その無線ネットワークを監視するなどの公知の種々の方法によって、不正なデバイスを検出して排除する防御手段を講じることができる。一方、悪意を持った機器１０Ｘがネットワークから離れた後も、不正なアプリＸが機器１上で動作し続け、正当な機器１０を介して種々のセキュリティ攻撃を続けることが問題である。
【００３４】
本実施形態１では、不正なアプリＸが機器１にインストールされた時点では、不正なアプリであると判定することはできず、アプリＸに対応するインストール時特定値が算出される。このとき、このインストールの主体である機器１０Ｘが悪意を持っていることも検出することはできないため、機器１は機器１０Ｘに対してアプリＸに対応するインストール時特定値を送出する。その後、悪意を持った機器１０Ｘがネットワークから離れ、正当な機器１０が機器１を動作させるときには、機器１にインストールされているアプリＡ、アプリＢ、アプリＸの実行時特定値が算出される。正当な機器１０は、正当なアプリＡとアプリＢに対応するインストール時特定値は、不揮発性メモリ２内に保持しているが、不正なアプリＸに対応するインストール時特定値は保持していない。アプリＸに対応するインストール時特定値は、インストール主体であった機器１０Ｘには返送されたものの、機器１０には送信されないからである。したがって、機器１が算出したアプリＸの実行時特定値は、比較対象がなく、一致することはないため、不正なアプリであると判定される。
【００３５】
機器１単独でソフトウェアの正当性を検証するためには、公開鍵暗号方式を用いる署名検証など、演算負荷の重いセキュアブートなど高度なセキュリティ機能が必要である。これに対して、本実施形態１では、機器１の外部に信頼できる機器を配置して、その信頼できる機器との連携によって、ソフトウェアの正当性を判定することができるため、そのための特定値の計算方法は大幅に簡略化することができる。上述したように特定値は、ソフトウェアの実行命令コード或いはソースコードの全部または一部を入力として、不可逆的に一意に定まる値であり、例えば、ハッシュ値、ＭＡＣとすることができる。また、このときには公開鍵暗号方式に代えて、それよりもはるかに演算負荷が軽い、共通鍵暗号方式を利用することができる。さらに共通鍵暗号方式は、機器１のような末端の機器においても、通信部４と通信ドライバを使った通信（例えばBluetooth（登録商標）など）でも利用されるので、同じ演算回路または演算ライブラリを特定値計算ドライバで共有することができる。
【００３６】
機器１及び機器１０の動作についてさらに詳しく説明する。
【００３７】
上述したように、インストール時特定値と実行時特定値との比較は、機器１が行っても、機器１０が行っても、さらに他の機器が行ってもよい。本実施形態では、インストール時特定値と実行時特定値との比較を機器１０が行う動作例について説明し、実施形態２では機器１が行う動作例、実施形態３及び４ではさらに他の機器が行う動作例について説明する。
【００３８】
図３と図４は、機器１０から機器１へのアプリインストール処理の動作例を示すフローチャートであり、図３には機器１の動作を、図４には機器１０の動作を、それぞれ示す。前提として、機器１０は正当な新規のアプリをダウンロードし、機器１０内の不揮発性メモリ２に保存（図２には記載していない）しているものとし、機器１と機器１０は通信部４と５を介する接続処理を予め行い、通信ができる状態になっているものとする。
【００３９】
機器１と機器１０は、アプリインストール処理をスタートさせる。機器１０は機器１へアプリインストール命令を送信した（Ｓ２１）後、新規アプリを送信する（Ｓ２２）（図４）。機器１は機器１０からアプリインストール命令を受信した（Ｓ１１）後、新規アプリを受信する（Ｓ１２）と、アプリ書き換えドライバを使用して受信した新規アプリのインストールを行う（Ｓ１３）（図３）。インストールが正常終了した場合、機器１は機器１０へ正常終了メッセージの送信（Ｓ１７）、機器１にインストールされた新規アプリに対応するインストール時特定値の計算（Ｓ１８）、その値の送信を行い（Ｓ１９）、機器１を再起動させる（Ｓ２０）（図３）。これに対し、インストールが異常終了した場合には、機器１は機器１０へ異常終了メッセージを送信し（Ｓ１５）、異常処理を行い（Ｓ１６）、アプリインストール処理を終了する（図３）。機器１０は機器１から受信したメッセージが正常終了の場合（Ｓ２３，Ｓ２４）、新規アプリに対応するインストール時特定値を受信し（Ｓ２６）、受信したインストール時特定値を不揮発性メモリ２に保存して（Ｓ２７）、アプリインストール処理を終了する（図４）。これに対し、受信したメッセージが異常終了の場合、異常処理を行い（Ｓ２５）、アプリインストール処理を終了する（図４）。
【００４０】
次に、不正アプリ検出処理ついて説明する。
【００４１】
図５と図６は、機器１と機器１０との間で実行される、接続処理、不正アプリ検出処理及び通信処理の動作例を示すフローチャートであり、図５には機器１の動作を、図６には機器１０の動作を、それぞれ示す。一般に機器１と機器１０との間の通信は、まず接続処理（図５のＳ３と図６のＳ４）を行い、接続が確立すると、通信処理（図５のＳ５と図６のＳ６）に移行する。不正アプリ検出処理（図５のＳ１と図６のＳ２）は、接続処理（図５のＳ３と図６のＳ４）が完了して接続が確立された後、通常の通信処理（図５のＳ５と図６のＳ６）が開始される前に行われるのが好適である。
【００４２】
機器１と機器１０は、それぞれまず接続処理（図５のＳ３と図６のＳ４）を開始する。機器１０は、機器１に対して接続要求を送信し（Ｓ３３）、機器１からの接続応答が確認できるのを待って（Ｓ３４）、接続処理（Ｓ４）を終える（図６）。機器１は、機器１０からの接続要求を受信すると（Ｓ２８）、接続応答を送信し（Ｓ２９）、機器１０からの接続応答が確認できるのを待って（Ｓ３０）、接続処理（Ｓ３）を終える（図５）。機器１と機器１０は、接続処理（図５のＳ３と図６のＳ４）を終えると、不正アプリ検出処理を行ない（図５のＳ１と図６のＳ２）、不正なアプリが検出されなければ、通常の通信処理（図５のＳ５と図６のＳ６）に移行する。通常の通信処理では、規格に対応した通信を、通信終了まで行う（図５のＳ３１とＳ３２、図６のＳ３５とＳ３６）。
【００４３】
図７と図８は、不正アプリ検出処理の一例としてエラー処理を行なう場合の動作例を示すフローチャートであり、図７には機器１の動作を、図８には機器１０の動作を、それぞれ示す。
【００４４】
機器１と機器１０は、接続処理（Ｓ３とＳ４）を行った後、それぞれ不正アプリ検出処理（Ｓ１とＳ２）をスタートさせる。機器１０は機器１へアプリ特定値計算・送信命令を送信する（Ｓ４２）（図８）。機器１は、この命令を受信すると（Ｓ３７）、不揮発性メモリ２上にある全アプリの特定値を特定値計算ドライバにて計算し（Ｓ３８）、機器１０へ送信する（Ｓ３９）（図７）。機器１０は機器１にインストールされている全アプリの特定値を受信する（Ｓ４３）（図８）。
【００４５】
機器１と機器１０との接続が初めての場合、機器１０は受信した特定値を不揮発性メモリ２に保存し（Ｓ４５）、通信開始命令を機器１へと送信（Ｓ４８）した後、不正アプリ検出処理（Ｓ２）を終了して通信処理（Ｓ６）を開始する（図８）。ここで、「機器１と機器１０との接続が初めての場合」とは、例えば機器１０のユーザが機器１を新規に購入して、所有する機器１０に接続するような場合を想定しており、この段階で既に機器１にプリインストールされているアプリは、全て正当なものであることが保証されているものとしている。機器１０からインストールされたわけではないが、機器１が新規に購入された段階で既にプリインストールされているアプリは、機器１のメーカー自身か機器１のメーカーが信頼する第三者によってインストールされたものであるから、配布元は信頼することができるからである。したがって、このときの特定値は、インストール時特定値であり、機器１０の不揮発性メモリ２に書き込まれて、保存される。
【００４６】
これに対し、機器１と機器１０との接続が２回目以降の場合、機器１０は、機器１から受信した特定値と機器１０の不揮発性メモリ２上の特定値とを比較する（Ｓ４６）（図８）。比較した結果が全一致であれば（Ｓ４７）、機器１０は機器１へ通信開始命令を送信して（Ｓ４８）、不正アプリ検出処理（Ｓ２）を終了して通信処理（Ｓ６）を開始する（図８）。比較した結果が全一致でない場合には、機器１０は機器１へ通信停止命令を送信し（Ｓ４９）、エラー処理（Ｓ５０）を実施したのち、不正アプリ検出処理を終了する（図８）。機器１は機器１０から受信した命令が通信開始命令であれば（Ｓ４０）、不正アプリ検出処理（Ｓ１）を終了して通信処理（Ｓ５）を開始する。これに対し、通信停止命令であれば、機器１はエラー処理（Ｓ４１）を実施したのち、不正アプリ検出処理を終了する（図７）。
【００４７】
機器１と機器１０との接続が２回目以降の場合に機器１が計算する特定値は、実行時特定値であるが、機器１は接続が初回か２回目以降かを管理していないので、インストール時特定値と実行時特定値の区別はない。また、実行時特定値とインストール時特定値との照合が機器１０で実行されるため、機器１の負荷は最小限に抑えられる。
【００４８】
次に、不正アプリを検出した場合のエラー処理の一例として、当該不正アプリを削除する動作例について説明する。なお、不正アプリの削除処理は、エラー処理の一種と位置付けてもよいし、エラー処理に代わる処理と位置付けても良い。
【００４９】
図９と図１０は、不正アプリ検出処理の一例として不正アプリの削除処理を行なう場合の動作例を示すフローチャートであり、図９には機器１の動作を、図１０には機器１０の動作を、それぞれ示す。
【００５０】
機器１と機器１０は、接続処理（Ｓ３とＳ４）を行った後、それぞれ不正アプリ検出処理（Ｓ１とＳ２）をスタートさせる。機器１０は、不揮発性メモリ２に保存している特定値があるか否か（Ｓ６５）に基づいて、機器１との接続が初回か２回目以降かを判断する（図１０）。
【００５１】
初回の場合、機器１０は初回接続メッセージを送信する（Ｓ６６）（図１０）。機器１は機器１０からのメッセージ受信を待って（Ｓ５１）、初回接続の場合は（Ｓ５２）、全アプリの特定値を計算（Ｓ３８）して機器１０に送信し（Ｓ３９）、機器１０からの通信開始命令の受信を待って（Ｓ４０）、不正アプリ検出処理（Ｓ１）を終了して通信処理（Ｓ５）を開始する（図９）。機器１０は機器１にインストールされている全アプリの特定値を受信すると（Ｓ４３）、受信した特定値を不揮発性メモリ２上に保存した（Ｓ４５）後、機器１に対して通信処理開始命令を送信し（Ｓ７６）、不正アプリ検出処理（Ｓ２）を終了して自らも機器１との通信処理（Ｓ６）を開始する（図１０）。
【００５２】
機器１と機器１０との接続が２回目以降の場合は、機器１０は、機器１に対して２回目以降の接続メッセージを送信し（Ｓ６７）、さらに１つのアプリの特定値を計算して送信させる命令（アプリ特定値計算・送信命令）を送信する（Ｓ６８）（図１０）。ここで「１つの」というのは、全てのアプリについて正当性判定を行うループにおいて順次選択される「１つ」に過ぎない。機器１はアプリ特定値計算・送信命令を受信すると（Ｓ３７）、１つのアプリの特定値を計算し（Ｓ５３）、機器１０に送信する（Ｓ５４）（図９）。機器１０は１つのアプリの特定値を機器１から受信すると（Ｓ６９）、受信した特定値と不揮発性メモリ２上に保存している特定値（インストール時特定値）との比較を行う（Ｓ４６）。一致していれば正当アプリメッセージを送信し（Ｓ７０）、不一致ならば不正アプリメッセージを送信する（Ｓ７１）（図１０）。機器１は、メッセージの受信を待って（Ｓ５５）、そのメッセージに基づいて正当か不当かを判断し（Ｓ５６）、不当である場合には特定値を計算したアプリ（正当性の判定対象アプリ）を削除し（Ｓ５７）、削除完了メッセージを機器１０に送信する（Ｓ５８）。その後、全アプリについて正当性の判定が完了したか否かを判断し（Ｓ５９）、完了していれば完了メッセージを送信し（Ｓ６１）、未完了であれば未完了メッセージを送信する（Ｓ６０）（図９）。機器１０は、機器１からのメッセージの受信を待って（Ｓ７３）、その内容が全アプリ未完であれば（Ｓ７４）、次のアプリについての特定値計算・送信命令（Ｓ６８）に戻って全アプリについて完了するまで繰り返す（図１０）。全アプリについて完了したときには（Ｓ７４）、全アプリについての特定値が一致したか否かを判定し（Ｓ７５）、全て一致の場合には機器１に対して通信処理開始命令を送信し（Ｓ７６）、不正アプリ検出処理（Ｓ２）を終了して機器１との通信処理（Ｓ６）を開始する。一方、１つでも不一致のアプリがあった場合には、機器１に対して再起動命令を送信し（Ｓ７７）、通信処理（Ｓ６）を開始することなく、接続処理（Ｓ４）に戻る（図１０）。一方、機器１は通信処理開始命令を受信したときには（Ｓ６３）、不正アプリ検出処理（Ｓ１）を終了して自らも機器１０との通信処理（Ｓ５）を開始するが、再起動命令を受信した場合には再起動処理（Ｓ６４）を行う（図９）。
【００５３】
以上説明したように、不正なアプリを削除する処理を行なうためには、機器１側でも初回接続か２回目以降の接続かによって処理フローを振り分ける必要があり、処理の内容は図７と図８に示した単純なエラー処理と比べて複雑になるが、コストアップを抑えられた機器１によってさえ、不正なアプリを削除することができるというメリットは極めて大きい。
【００５４】
〔実施形態２〕
図１１は、実施形態２に係る機器１と機器１０を含むシステムの模式的な構成図である。
【００５５】
機器１は、ソフトウェアをインストール可能な記憶装置の一例である不揮発性メモリ２と、そのソフトウェアを実行可能なプロセッサ３と、他の機器１０と通信可能なインターフェースである通信部４とを備える電子機器である。また、他の機器１０は、機器１にインストールされている１または複数のソフトウェアからそれぞれ一意に算出される特定値を、１または複数のインストール時特定値として保持している。ここまでの構成は、図２に示した実施形態１に係る機器１と機器１０を含むシステムの構成と同様であるが、本実施形態２に係る機器１は、アプリケーションソフトウェアからの書き換えが禁止されている、セキュアＲＡＭ領域を持つＲＡＭ７をさらに備える。
【００５６】
機器１は、インストールされているソフトウェアのうちの少なくとも１個の正当性判定対象のソフトウェアに対応する特定値を実行時特定値として算出する。機器１は、これと合せて、当該正当性判定対象のソフトウェアに対応するインストール時特定値を、機器１０から取得し、算出した実行時特定値とを比較し、一致するときにそのソフトウェアを正当なものと判定する。
【００５７】
これにより、実行時特定値とインストール時特定値との照合が機器１自身で実行され、照合結果を外部に出力することなく、エラー処理などに移行することができるため、照合結果を外部で改ざんする攻撃に対する耐性が強化される。
【００５８】
機器１は、インストールされている１または複数のソフトウェアについて、インストール時特定値を機器１０から取得してＲＡＭ７のセキュアＲＡＭ領域に保存しておき、実行時特定値を順次求めて対応するインストール時特定値と比較することにより、インストール時特定値が算出されているすべてのソフトウェアについての正当性の判定を実施することができる。少なくとも１つが不正と判定された場合には、エラー処理に移行するか、または、不正と判定されたソフトウェアを削除する。
【００５９】
図１１に示す他の構成と基本的な動作は、実施形態１と同様であるので、説明は省略する。
【００６０】
機器１及び機器１０の動作についてさらに詳しく説明する。
【００６１】
上述したように、インストール時特定値と実行時特定値との比較は、機器１が行っても、機器１０が行っても、さらに他の機器が行ってもよく、実施形態１では、インストール時特定値と実行時特定値との比較を機器１０が行う動作例について説明したが、本実施形態２では機器１が行う動作例について説明する。
【００６２】
機器１０から機器１へのアプリインストール処理の動作は、図３と図４を引用して説明した実施形態１と同様である。そのため、説明は省略する。また、不正アプリ検出処理の動作についても、図５と図６を引用して説明したレベルの動作は、実施形態１と同様である。そのため、そのレベルの動作についても説明は省略する。
【００６３】
図１２と図１３は、不正アプリ検出処理の一例としてエラー処理を行なう場合の動作例を示すフローチャートであり、図１２には機器１の動作を、図１３には機器１０の動作を、それぞれ示す。
【００６４】
機器１と機器１０は、接続処理（Ｓ３とＳ４）を行った後、それぞれ不正アプリ検出処理（Ｓ１とＳ２）をスタートさせる。機器１０は、不揮発性メモリ２に保存している特定値があるか否か（Ｓ６５）に基づいて、機器１との接続が初回化２回目以降かを判断する（図１３）。
【００６５】
初回の場合は初回接続メッセージを送信する（Ｓ６６）（図１３）。機器１は機器１０からのメッセージ受信を待って（Ｓ５１）、初回接続の場合は（Ｓ５２）、全アプリの特定値を計算（Ｓ３８）して機器１０に送信し（Ｓ３９）、不正アプリ検出処理（Ｓ１）を終了して通信処理（Ｓ５）を開始する（図１２）。機器１０は機器１にインストールされている全アプリの特定値を受信すると（Ｓ４３）、受信した特定値を不揮発性メモリ２上に保存した（Ｓ４５）後、不正アプリ検出処理（Ｓ２）を終了して自らも機器１との通信処理（Ｓ６）を開始する（図１３）。
【００６６】
機器１と機器１０との接続が２回目以降の場合は、機器１０は、機器１に対して２回目以降の接続メッセージを送信し（Ｓ６７）、不揮発性メモリ２上に保存している特定値（インストール時特定値）を機器１に送信する（Ｓ８６）（図１３）。
【００６７】
機器１は、全アプリの特定値の受信を完了する（Ｓ７８）と、受信した特定値をＲＡＭ７のセキュアＲＡＭ領域に保持する（Ｓ７９）（図１２）。次に、１つのアプリの特定値を計算する（Ｓ８０）。このときのアプリは正当性判定の対象であり、このときの特定値は実行時特定値である。なお「１つの」というのは、全てのアプリについて正当性判定を行うループにおいて順次選択される「１つ」に過ぎない。機器１は、算出した正当性判定対象のアプリの特定値と、ＲＡＭ７のセキュアＲＡＭ領域に保持されているそのアプリのインストール時特定値とを比較する（Ｓ８１）。一致していればセキュアＲＡＭ領域に保持されているすべての特定値に対応するアプリについての正当性判定を繰り返すために、次の１つのアプリの特定値を計算するステップ（Ｓ８０）に戻る（Ｓ８４）。一方、不一致であれば、機器１は、不正アプリ検出メッセージを送信して（Ｓ８３）、エラー処理（Ｓ４１）を実行する。全てのアプリについて正当性判定が完了した時には、正当アプリ検出メッセージを送信し（Ｓ８５）、不正アプリ検出処理（Ｓ１）を終了して通信処理（Ｓ５）を開始する（図１２）。
【００６８】
機器１０は、機器１からのメッセージの受信を待って（Ｓ８７）、不正アプリ検出メッセージであれば（Ｓ８８）、エラー処理（Ｓ５０）を実施し、正当アプリ検出メッセージであれば、不正アプリ検出処理（Ｓ２）を終了して通信処理（Ｓ６）を開始する（図１３）。
【００６９】
次に、不正アプリを検出した場合のエラー処理の一例として、当該不正アプリを削除する動作例について説明する。
【００７０】
図１４と図１５は、不正アプリ検出処理の一例として不正アプリの削除処理を行なう場合の動作例を示すフローチャートであり、図１４には機器１の動作を、図１５には機器１０の動作を、それぞれ示す。
【００７１】
機器１と機器１０は、接続処理（Ｓ３とＳ４）を行った後、それぞれ不正アプリ検出処理（Ｓ１とＳ２）をスタートさせる。機器１０は、不揮発性メモリ２に保存している特定値があるか否か（Ｓ６５）に基づいて、機器１との接続が初回化２回目以降かを判断する（図１５）。
【００７２】
初回の場合は初回接続メッセージを送信する（Ｓ６６）（図１５）。機器１は機器１０からのメッセージ受信を待って（Ｓ５１）、初回接続の場合は（Ｓ５２）、全アプリの特定値を計算（Ｓ３８）して機器１０に送信し（Ｓ３９）、不正アプリ検出処理（Ｓ１）を終了して通信処理（Ｓ５）を開始する（図１４）。機器１０は機器１にインストールされている全アプリの特定値を受信すると（Ｓ４３）、受信した特定値を不揮発性メモリ２上に保存した（Ｓ４５）後、不正アプリ検出処理（Ｓ２）を終了して自らも機器１との通信処理（Ｓ６）を開始する（図１５）。
【００７３】
機器１と機器１０との接続が２回目以降の場合は、機器１０は、機器１に対して２回目以降の接続メッセージを送信し（Ｓ６７）、さらに１つのアプリの特定値（インストール時特定値）を不揮発性メモリ２から読み出して送信する（Ｓ９４）（図１５）。ここで「１つの」というのは、全てのアプリについて正当性判定を行うループにおいて順次選択される「１つ」に過ぎない。不揮発性メモリ２に保持されている全てのアプリの特定値が送信されるまで（Ｓ９５）、全アプリ特定値未送信メッセージを機器１に送信して（Ｓ９６）、次のアプリ特定値の送信ステップ（Ｓ９４）を繰り返す。全てのアプリの特定値の送信が完了したときには（Ｓ９５）、「全アプリ特定値送信済」メッセージを機器１に送信する（Ｓ９７）。
【００７４】
機器１は、１つの（正当性判定対象の）アプリの特定値の受信を完了する（Ｓ７８）と、受信した特定値をＲＡＭ７のセキュアＲＡＭ領域に保持する（Ｓ７９）（図１４）。次に、受信した特定値に対応するアプリの特定値（実行時特定値）を計算する（Ｓ８０）。機器１は、算出した正当性判定対象のアプリの特定値と、ＲＡＭ７のセキュアＲＡＭ領域に保持されているそのアプリのインストール時特定値とを比較する（Ｓ８１）。不一致の場合（Ｓ８２）は、特定値を計算したアプリ（正当性の判定対象アプリ）を削除（Ｓ５７）した後、一致していればアプリの削除をすることなく、機器１０からのメッセージ受信を待つ（Ｓ８９）。受信したメッセージが「全アプリ特定値送信済」になるまで（Ｓ９０）、次のアプリの特定値を受信するステップ（Ｓ７８）に戻って、正当性の判定を繰り返す。受信したメッセージが「全アプリ特定値送信済」となったときには（Ｓ９０）、機器１でのアプリ削除を実施したか否かを判断し（Ｓ９１）、削除が実施されていれば再接続処理命令を機器１０に送信して（Ｓ９２）、再起動（Ｓ６４）を行う。一方、不正なアプリが検出されず、アプリの削除が実施されなかった場合には、通信処理開始命令を機器１０に送信して（Ｓ９３）、不正アプリ検出処理（Ｓ１）を終了して通信処理（Ｓ５）を開始する（図１４）。
【００７５】
機器１０は、機器１からの命令の受信を待って（Ｓ９８）、その内容が「再接続処理」の場合には、接続処理（Ｓ４）に戻り、「通信処理」の場合には不正アプリ検出処理（Ｓ２）を終了して自らも機器１との通信処理（Ｓ６）を開始する（図１５）。
【００７６】
以上説明したように、本実施形態２では、実行時特定値とインストール時特定値との照合が機器１自身で実行され、照合結果を外部に出力することなく、エラー処理などに移行することができるため、照合結果を外部で改ざんする攻撃に対する耐性が強化される。図１４と図１５を参照して説明した動作例では、実施形態１の図９と図１０の場合と同様に、コストアップを抑えられた機器１によってさえ、不正なアプリを削除することができるというメリットは極めて大きい。
【００７７】
〔実施形態３〕
図１６は、実施形態３に係る機器１と機器１０と機器１００を含むシステムの模式的な構成図である。
【００７８】
実施形態１及び２では、機器１と機器１０によるシステムについて説明したが、本実施形態３では機器１０にネットワーク１１を経由するなどして、さらに機器１００が接続される形態について説明する。
【００７９】
実施形態１では図２を参照して「機器１は、ソフトウェアをインストール可能な記憶装置の一例である不揮発性メモリ２と、そのソフトウェアを実行可能なプロセッサ３と、他の機器１０と通信可能なインターフェースである通信部４とを備える電子機器であって、例えば、活動量計やドライブレコーダである。ここで、他の機器１０は、機器１にインストールされている１または複数のソフトウェアからそれぞれ一意に算出される特定値を、１または複数のインストール時特定値として保持している。」と説明したが、ここでいう「他の機器」は必ずしも機器１と直接通信することができる機器１０に限定されるものではなく、途中に中継する機器を経由する通信であっても良い。
【００８０】
実施形態３は、その一例であって、上記「他の機器」は機器１００である。即ち、機器１は、ソフトウェアをインストール可能な記憶装置の一例である不揮発性メモリ２と、そのソフトウェアを実行可能なプロセッサ３と、他の機器１００と通信可能なインターフェースである通信部４とを備える電子機器であって、例えば、活動量計やドライブレコーダである。ここで、他の機器１００は、機器１にインストールされている１または複数のソフトウェアからそれぞれ一意に算出される特定値を、１または複数のインストール時特定値として保持している。機器１は、インストールされているソフトウェアのうちの少なくとも１個の正当性判定対象のソフトウェアに対応する特定値を実行時特定値として算出する。正当性判定対象のソフトウェアのインストール時特定値と実行時特定値とを比較し、一致するときにそのソフトウェアを正当なものと判定する。インストール時特定値と実行時特定値との比較は、機器１が行っても、機器１００が行っても、さらに他の機器が行ってもよい。
【００８１】
本実施形態３のように、機器１と機器１００が機器１０を介して通信するような形態であっても同様に、機器１自身がセキュアブートなどの高度なセキュリティ機能を備えていなくても、信頼される外部の機器１００と連携して、ソフトウェアの正当性を判定することができるという、実施形態１と同様の効果を奏する。
【００８２】
図１６を引用してさらに詳しく説明する。機器１の構成は図２と同じであるため説明を省略する。機器１０の構成も図２と同様であるが、不揮発性メモリ２はインストール時特定値を保持している必要がない。機器１００は、通信部８、プロセッサ３及びハードディスクドライブ（ＨＤＤ：Hard Disk Drive）９を備える。機器１００は、機器１０とＥｔｈｅｒｎｅｔなどのネットワーク１１を介して通信することができるように接続されており、通信部８はこのネットワーク１１とのインターフェースである。機器１００は、例えば、機器１のメーカー等がインターネット上に提供するサーバであり、機器１上で動作するアプリを自ら提供し、或いは、信頼する第三者から提供させる。例えば、機器１は活動量計、機器１０はスマートフォンであって、機器１（活動量計）のユーザは機器１０（スマートフォン）のユーザでもあり、機器１のアプリはネットワーク１１の一例であるインターネットを経由して、機器１００の一例である機器１のメーカーサーバからダウンロードされ、機器１にインストールされる。本実施形態では、機器１００が信頼できる者（物）であるとし、機器１００から機器１にインストールされたアプリは正当であることが保証されているものとしている。機器１００は、ＨＤＤ９に機器１にインストールされたアプリのインストール時特定値を保持している。ここで、機器１００は多数のユーザをサポートするサーバである場合を想定すると、ユーザごとにアプリの購入／未購入の状況が相違することとなる場合がある。そのため、アプリのインストール時特定値は、図示されるように、機器１０と接続の機器１アプリＡ特定値、機器１０と接続の機器１アプリＢ特定値のように、インストールされた機器１のみならずインストールしたのが機器１０であるという情報も、紐付けされてＨＤＤ９に保持されると、さらに好適である。配布元に依拠する正当性に加えて、購入／未購入などの契約面での正当性までも判定の対象を拡大することができる余地があるためである。
【００８３】
図３と図１７と図１８を参照して、機器１０が新規のアプリを機器１にインストールする処理について説明する。図３と図１７と図１８は、機器１０から機器１へのアプリインストール処理の動作例を示すフローチャートであり、図３には機器１の動作を、図１７には機器１０の動作を、図１８には機器１００の動作を、それぞれ示す。図３は実施形態１でも参照しているが、機器１のアプリインストール処理の動作は実施形態１及び２と同じである。
【００８４】
前提として、機器１０は正当な新規のアプリを機器１００からダウンロードして、機器１０内の不揮発性メモリ２に保存（図１６には記載していない）しているものとし、機器１と機器１０、機器１０と機器１００は、それぞれ通信部４と５、通信部６と８を介する接続処理を予め行い、通信ができる状態になっているものとする。
【００８５】
機器１と機器１０と機器１００は、アプリインストール処理をスタートさせる。機器１０は機器１へアプリインストール命令を送信した（Ｓ２１）後、新規アプリも送信する（Ｓ２２）（図１７）。機器１は機器１０からアプリインストール命令を受信した（Ｓ１１）後、新規アプリを受信する（Ｓ１２）と、アプリ書き換えドライバを使用して受信した新規アプリのインストールを行う（Ｓ１３）（図３）。インストールが正常終了した場合、機器１は機器１０へ正常終了メッセージの送信（Ｓ１７）、機器１にインストールされた新規アプリに対応するインストール時特定値の計算（Ｓ１８）、その値の送信を行い（Ｓ１９）、機器１を再起動させる（Ｓ２０）（図３）。これに対し、インストールが異常終了した場合、機器１は機器１０へ異常終了メッセージを送信し（Ｓ１５）、異常処理を行い（Ｓ１６）、アプリインストール処理を終了する（図３）。機器１０は機器１から受信したメッセージが正常終了の場合（Ｓ２３，Ｓ２４）、新規アプリに対応するインストール時特定値を受信し（Ｓ２６）、受信したインストール時特定値を機器１００に送信して（Ｓ１００）、アプリインストール処理を終了する（図１７）。これに対し、受信したメッセージが異常終了の場合には、異常処理を行い（Ｓ２５）、アプリインストール処理を終了する（図１７）。機器１００は、機器１０からの特定値を待ち（Ｓ１０１）、受信した特定値をＨＤＤ９に保存して（Ｓ１０２）、アプリインストール処理を終了する（図１８）。
【００８６】
次に、図７と図１９と図２０を参照して、不正アプリ検出処理ついて説明する。ただし、図５と図６を引用して説明したレベルの動作は、実施形態１及び２と同様であるため、そのレベルの動作についての説明は省略する。
【００８７】
図７と図１９と図２０は、不正アプリ検出処理の一例としてエラー処理を行なう場合の動作例を示すフローチャートであり、図７には機器１の動作を、図１９には機器１０の動作を、図２０には機器１００の動作を、それぞれ示す。図７は実施形態１でも参照しているが、機器１の不正アプリ検出処理の動作は実施形態１及び２と同じである。
【００８８】
機器１と機器１０と機器１００は、接続処理（Ｓ３とＳ４とＳ７）を行った後、それぞれ不正アプリ検出処理（Ｓ１とＳ２とＳ８）をスタートさせる。機器１０は機器１へアプリ特定値計算・送信命令を送信する（Ｓ４２）（図１９）。機器１は、この命令を受信すると（Ｓ３７）、不揮発性メモリ２上にある全アプリの特定値を特定値計算ドライバにて計算し（Ｓ３８）、機器１０へ送信する（Ｓ３９）（図７）。機器１０は機器１にインストールされている全アプリの特定値を受信すると（Ｓ４３）、受信した全アプリ特定値を機器１００に送信する（Ｓ１０３）（図１９）。
【００８９】
機器１００は、機器１にインストールされている全アプリの特定値を受信すると（Ｓ１０５）、その機器１との接続が初回か否かについて判断する（Ｓ１０６）（図２０）。初回接続の場合は受信した特定値をＨＤＤ９に保存（Ｓ１０７）した上で初回接続である旨のメッセージを機器１０へ送信し（Ｓ１２０）、２回目以降の接続の場合には、受信した特定値とＨＤＤ９に保存されている特定値とを比較する（Ｓ１０８）。機器１００は、Ｓ１０５で機器１にインストールされている全アプリの特定値を受信した段階では、その特定値がインストール時特定値か実行時特定値かの判断はできないので、その機器１との接続が初回であるか２回目以降であるかに基づいて判断している。初回の場合は受信した特定値をインストール時特定値とみなしてＨＤＤ９に保存し、２回目以降の場合は受信した特定値を実行時特定値とみなしてＨＤＤ９に保存しているインストール時特定値と比較している。
【００９０】
機器１００は比較結果または初回接続である旨のメッセージを機器１０に送信し（Ｓ１０９、Ｓ１２０）、不正アプリ検出処理（Ｓ８）を終了して通信処理（Ｓ９）を開始する（図２０）。Ｓ１０８の比較の結果、機器１にインストールされているアプリに不正アプリが含まれるか否かを判定することができるが、機器１０との通信処理はそのまま継続してもよい。機器１０から機器１を制御して不正アプリを削除するなどのエラー処理をさせることも可能である。一方、不正アプリが検出されたと判断し、その結果を機器１０に送信（Ｓ１０９）した後、通信処理（Ｓ９）を開始することなく機器１０との通信を遮断してもよい。どのような措置をとるかというセキュリティポリシは、任意に定めることができる。
【００９１】
機器１０は機器１００から比較結果または初回接続である旨のメッセージを受信する（Ｓ１０４）（図１９）。比較した結果が全一致であるか初回接続であれば（Ｓ４７）、機器１０は機器１へ通信開始命令を送信して（Ｓ４８）、不正アプリ検出処理（Ｓ２）を終了して通信処理（Ｓ６）を開始する。比較した結果が全一致でない場合には、機器１０は機器１へ通信停止命令を送信し（Ｓ４９）、エラー処理（Ｓ５０）を実施した後、不正アプリ検出処理を終了する。
【００９２】
機器１は機器１０から受信した命令が通信開始命令であれば（Ｓ４０）、不正アプリ検出処理（Ｓ１）を終了して通信処理（Ｓ５）を開始する。これに対し、通信停止命令であれば、機器１はエラー処理（Ｓ４１）を実施したのち、不正アプリ検出処理を終了する（図７）。
【００９３】
機器１と機器１００との接続が２回目以降の場合に機器１が計算する特定値は、実行時特定値であるが、機器１は接続が初回か２回目以降かを管理していないので、インストール時特定値と実行時特定値の区別はない。また、実行時特定値とインストール時特定値との照合が機器１００で実行されるため、機器１の負荷は最小限に抑えられる。
【００９４】
機器１００は、ＨＤＤ９にインストール時特定値を保存する時（Ｓ１０７）に、インストールされた機器１とインストールを実行した機器１０と紐付けて保存しておき、比較の時（Ｓ１０８）でも両方に紐付いた特定値を比較する。これにより、別のユーザが別の機器１０を使って同じ機器１を利用する場合に、ユーザごとにアプリの正当性を判断することができる。したがって、アプリの配布元が正当か否かだけではなく、正当に入手されているか否に基づく正当性にも拡張して、アプリの正当性を判断することができる。
【００９５】
〔実施形態４〕
実施形態１及び２と同じく実施形態３でも、信頼された機器として振舞えるのは唯１台である。すなわち、図１１では機器１０が信頼された機器とされているため、機器１０がインストールしたアプリ以外は、仮に同じ配布元の正当なアプリであってもインストールした機器が異なれば、不正アプリとして取り扱われる。これに対して、実施形態３のような紐付けを行わず、単に配布元の正当性に限定してアプリの正当性を判断するように簡略化してもよい。この場合には、機器１００によるユーザ管理が不要となり、機器１００の負荷が軽減される。
【００９６】
図２１は、実施形態４に係る機器１と機器１０と機器１００を含むシステムの模式的な構成図である。構成は図１６と同様であるので説明を省略するが、機器１００のＨＤＤ９に機器１向けに提供されているアプリＡ，Ｂ，Ｃの全ての特定値が保存されている点である。ここで機器１にはアプリＡとアプリＢのみがインストール済みで、アプリＣは未だインストールされていないものとする。
【００９７】
より具体的な例を示せば、以下のような状況がこれにあたる。即ち、機器１００は機器１（例えば活動量計）のメーカーであって、機器１にはアプリＡとアプリＢをプリインストールして販売している。機器１のメーカーは、機器１向けにアプリＣも提供しているが、この段階ではまだ機器１にインストールされていない。機器１を購入したユーザは自身の所持する機器１０（例えばスマートフォン）に接続して、さらにネットワーク１１（例えばインターネット）を介してメーカーのサーバである機器１００に接続する。そしてアプリＣを新たにダウンロードして機器１にインストールする。
【００９８】
図２２〜図２４を参照して、機器１０が新規のアプリＣを機器１にインストールする処理について説明する。図２２〜図２４は、機器１０から機器１へのアプリインストール処理の動作例を示すフローチャートであり、図２２には機器１の動作を、図２３には機器１０の動作を、図２４には機器１００の動作を、それぞれ示す。
【００９９】
前提として、機器１０は正当な新規のアプリＣを機器１００からダウンロードして、機器１０内の不揮発性メモリ２に保存（図２１には記載していない）しているものとし、機器１と機器１０、機器１０と機器１００は、それぞれ通信部４と５、通信部６と８を介する接続処理を予め行い、通信ができる状態になっているものとする。
【０１００】
機器１と機器１０と機器１００は、アプリインストール処理をスタートさせる。機器１０は機器１へアプリインストール命令を送信した（Ｓ２１）後、新規アプリＣも機器１へ送信する（Ｓ２２）（図２３）。機器１は機器１０からアプリインストール命令を受信した（Ｓ１１）後、新規アプリＣを受信する（Ｓ１２）と、アプリ書き換えドライバを使用してアプリＣのインストールを行う（Ｓ１３）（図２２）。インストールが正常終了した場合、機器１は機器１０へ正常終了メッセージの送信（Ｓ１７）、機器１にインストールされた新規アプリＣに対応するインストール時特定値の計算（Ｓ１８）、その値の送信を行う（Ｓ１９）。一方、インストールが異常終了した場合、機器１は機器１０へ異常終了メッセージを送信し（Ｓ１５）、異常処理を行い（Ｓ１６）、アプリインストール処理を終了する。
【０１０１】
機器１０は機器１から受信したメッセージが正常終了の場合（Ｓ２３，Ｓ２４）、新規アプリに対応するインストール時特定値を受信し（Ｓ２６）、受信したインストール時特定値を機器１００に送信する（Ｓ１００）（図２３）。一方、受信したメッセージが異常終了の場合、異常処理を行い（Ｓ２５）、アプリインストール処理を終了する。
【０１０２】
機器１００は、機器１０からの特定値を待ち（Ｓ１０１）、受信した特定値とＨＤＤ９に保存している機器１アプリＣの特定値とを比較し（Ｓ１１５）、一致の場合には「正当なアプリインストール検出」メッセージを、不一致の場合には「不正なアプリインストール検出」メッセージをそれぞれ機器１０に送信して（Ｓ１１９とＳ１１７）、アプリインストール処理を終了する（図２４）。ここで、一致の場合に受信した特定値を機器１０と紐付けて、「機器１０と接続の機器１アプリＣ特定値」としてＨＤＤ９に保存してもよい（Ｓ１１８）。これにより、実施形態３に示した不正アプリ検出処理を可能とすることができる。一方、機器１０との紐付けを考慮した不正アプリ検出処理を行なわない場合には、Ｓ１１８を省略してもよい。
【０１０３】
機器１０は、機器１００からメッセージを受信したときには、その内容が「正当なアプリインストール」を示すときは、機器１に対して「正当なアプリインストール検出」メッセージを送信して（Ｓ１１２）、アプリインストール処理を終了する（図２３）。一方、メッセージの内容が「不正なアプリインストール」を示すときは、機器１に対して「不正なアプリインストール検出」メッセージを送信し（Ｓ１１３）、異常処理（Ｓ１１４）を行った後にアプリインストール処理を終了する。
【０１０４】
機器１は、機器１０からメッセージを受信したとき（Ｓ１１０）には、その内容が「正当なアプリインストール」を示すときは機器１を再起動させ（Ｓ２０）、メッセージの内容が「不正なアプリインストール」を示すときは異常処理を行い（Ｓ１６）、アプリインストール処理を終了する（図２２）。
【０１０５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１０６】
例えば、自動車の車載ネットワークについて実施する形態に適用することができる。このとき、機器１として例示した末端の機器は、当該車載ネットワークの末端に接続される種々のセンサを制御する機器とされ、機器１０として例示した中間の機器は、当該車載ネットワークに搭載されるカーナビゲーション装置や自動運転装置等の電子制御ユニットとされ、機器１００として例示した上位の機器は、当該車載ネットワークが接続される車外の情報サーバなどとされる。また、自動交通システムについて実施する形態では、機器１として例示した末端の機器は、道路情報を収集するための種々のセンサを制御する機器や交通情報等を表示する表示機器とされ、機器１０として例示した中間の機器は路側機とされ、機器１００として例示した上位の機器は、当該自動交通システムを管理する情報サーバなどとされてもよい。さらに、その他の制御機器、監視機器を構成するネットワーク（ＩｏＴ）について実施する形態では、機器１として例示した末端の機器は、種々のセンサまたはアクチュエータを制御する機器であってもよい。
【符号の説明】
【０１０７】
１  末端の機器（端末機器）
１０  中間の機器（管理機器）
１０Ｘ  不正な機器
１００  上位の機器（サーバー等）
２  不揮発性メモリ
３  プロセッサ
４、５、６、８  通信部
７  ＲＡＭ
９  ハードディスクドライブ（ＨＤＤ）
１１  ネットワーク
【図１】
2017187963.tif 000003
【図２】
2017187963.tif 000004
【図３】
2017187963.tif 000005
【図４】
2017187963.tif 000006
【図５】
2017187963.tif 000007
【図６】
2017187963.tif 000008
【図７】
2017187963.tif 000009
【図８】
2017187963.tif 000010
【図９】
2017187963.tif 000011
【図１０】
2017187963.tif 000012
【図１１】
2017187963.tif 000013
【図１２】
2017187963.tif 000014
【図１３】
2017187963.tif 000015
【図１４】
2017187963.tif 000016
【図１５】
2017187963.tif 000017
【図１６】
2017187963.tif 000018
【図１７】
2017187963.tif 000019
【図１８】
2017187963.tif 000020
【図１９】
2017187963.tif 000021
【図２０】
2017187963.tif 000022
【図２１】
2017187963.tif 000023
【図２２】
2017187963.tif 000024
【図２３】
2017187963.tif 000025
【図２４】
2017187963.tif 000026