(57)【特許請求の範囲】
【請求項１】
認証機関が保有する第１の秘密鍵で予め暗号化された認証データを有するアプリケーションプログラムの検証を行う検証手段を備えたデータ処理システムにおいて、
前記検証手段は、前記アプリケーションプログラムに含まれる検証用関数が実行された際にメモリに展開される情報である動的情報を取得し、予め保有している前記第１の秘密鍵に対応する第１の公開鍵を用いて前記認証データを復号することで得られる検証用動的情報と比較することで、前記アプリケーションプログラムの検証を行うことを特徴とするデータ処理システム。
【請求項２】
前記検証手段と通信するためのインタフェース機能を備える検証用モジュールが前記検証用関数に呼び出されて実行されることで、前記メモリに展開されている情報を取得し、前記検証手段に提供されることを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記動的情報は、前記検証用モジュールが前記検証用関数に呼び出されて実行された際の、前記メモリのスタック領域に確保された情報であることを特徴とする請求項２に記載のデータ処理システム。
【請求項４】
前記検証手段は、前記検証により前記アプリケーションプログラムが正規品であることが判明した場合、前記アプリケーションプログラムにおけるデータ処理を許可することを特徴とする請求項１〜３のいずれか１項に記載のデータ処理システム。
【請求項５】
前記検証手段は、前記検証により前記アプリケーションプログラムが正規品であることが判明した場合、データ配信用共通鍵を生成し、前記アプリケーションプログラムに前記データ配信用共通鍵を送信することを特徴とする請求項４に記載のデータ処理システム。
【請求項６】
前記アプリケーションプログラムは第２の秘密鍵を保有しており、
前記データ配信用共通鍵は、前記アプリケーションプログラムから提供された前記第２の秘密鍵に対応する第２の公開鍵を用いて暗号化された上で、前記アプリケーションプログラムに送信されることを特徴とする請求項５に記載のデータ処理システム。
【請求項７】
認証機関の公開鍵を格納する公開鍵格納部と、
前記公開鍵に対応する前記認証機関の秘密鍵で予め暗号化されてアプリケーションプログラムに埋め込まれた認証データを、前記公開鍵を用いて復号する認証データ復号部と、
前記アプリケーションプログラムに含まれる検証用関数が実行された際にメモリに展開される情報である動的情報をメモリから取得し、取得した前記動的情報と、前記認証データを復号することで得られる検証用動的情報とを比較することで、前記アプリケーションプログラムの検証を行う整合性確認部と、
を備えることを特徴とするデータ処理装置。
【請求項８】
認証機関の秘密鍵で暗号化されてアプリケーションプログラムに埋め込まれた認証データを、前記秘密鍵に対応する前記認証機関の公開鍵を用いて復号するステップと、
前記認証データから検証用動的情報を抽出するステップと、
前記アプリケーションプログラムに含まれる検証用関数が実行された際にメモリに展開される動的情報を前記メモリから取得するステップと、
取得した前記動的情報と前記検証用動的情報とを比較することで、前記アプリケーションプログラムの検証を行うステップと、
を備えることを特徴とするアプリケーションプログラムの検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、アプリケーションプログラムの検証機能を備えたデータ処理システム、データ処理装置、およびアプリケーションプログラムの検証方法に関する。
【背景技術】
【０００２】
近年、工場に代表される施設では、施設内からデータを収集して処理することで、生産工程、検査工程、その他の工程の管理や改善が実現されている。産業界では、現場で収集したデータを分析し現場の改善に生かそうとする機運が高まっている。それに伴い、データを分析し改善活動するためのシステムのベースとなるプラットフォームや、また、そのプラットフォームと連携して動作してデータの収集や分析を行うアプリケーションプログラムが、それぞれユーザに提供されている。【０００３】
ユーザが保有するアプリケーションプログラムが正規のアプリケーションベンダから提供されたものであるか、あるいは改竄されたものであるかを区別することは、一般ユーザにとっては非常に困難である。改竄されたアプリケーションプログラムが実行された場合、データが破壊されたり、悪意のある第三者に現場の機密データが流出してしまったり等の深刻な被害が発生することが考えられる。【０００４】
特許文献１では、データに電子署名を施しこれをOSプログラムがチェックすることにより署名情報の正当性を確認し、さらに署名者自身が悪意を持ってアプリケーションプログラムに付属するデータを改竄し再署名を行った場合でもコンピュータが改竄を検出できるように、アプリケーションプログラム自身に署名情報に基づき作成された秘匿情報の正当性を確認する機能（改竄チェックルーチン）を内在させている。この機能により、アプリケーションプログラムに付属するデータに改竄ありとアプリケーションプログラム自身が判断した場合には、アプリケーションプログラムの実行が中止される(特許文献１参照)。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−４８８６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１のシステムを用いた場合、例えばプラットフォームの管理団体がアプリケーションプログラムの認定を行いそれに対して署名を発行した後に、アプリケーションプログラムに付属するデータ（リソースデータや補助ファイル）が改竄された場合には、その改竄を検出することができる。しかしながら、改竄のチェック機能がアプリケーションプログラムに依存しているため、アプリケーションプログラムが改竄され、改竄チェックルーチンが動作しないように改変された場合には、コンピュータはアプリケーションプログラムの改竄が検知できない。したがって、コンピュータは改竄されたアプリケーションプログラムの実行を中止することができない場合があった。【０００７】
本発明は、上記の事情に鑑みなされたものであり、アプリケーションプログラムの改竄を精度よく検出できる検証技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るデータ処理システムは、認証機関が保有する第１の秘密鍵で予め暗号化された認証データを有するアプリケーションプログラムの検証を行う検証手段を備え、検証手段は、アプリケーションプログラムに含まれる検証用関数が実行された際にメモリに展開される情報である動的情報を取得し、予め保有している第１の秘密鍵に対応する第１の公開鍵を用いて認証データを復号することで得られる検証用動的情報と比較することで、アプリケーションプログラムの検証を行う。【０００９】
本発明に係るデータ処理装置は、認証機関の公開鍵を格納する公開鍵格納部と、公開鍵に対応する認証機関の秘密鍵で予め暗号化されてアプリケーションプログラムに埋め込まれた認証データを、公開鍵を用いて復号する認証データ復号部と、アプリケーションプログラムに含まれる検証用関数が実行された際にメモリに展開される情報である動的情報をメモリから取得し、取得した動的情報と、認証データを復号することで得られる検証用動的情報とを比較することで、アプリケーションプログラムの検証を行う整合性確認部と、を備える。【００１０】
本発明に係るアプリケーションプログラムの検証方法は、認証機関の秘密鍵で暗号化されてアプリケーションプログラムに埋め込まれた認証データを、秘密鍵に対応する認証機関の公開鍵を用いて復号するステップと、認証データから検証用動的情報を抽出するステップと、アプリケーションプログラムに含まれる検証用関数が実行された際にメモリに展開される動的情報をメモリから取得するステップと、取得した動的情報と検証用動的情報とを比較することで、アプリケーションプログラムの検証を行うステップと、を備える。
【発明の効果】
【００１１】
本発明のデータ処理システム、データ処理装置およびアプリケーションプログラムの検証方法においては、アプリケーションプログラムに含まれる検証用関数が実行された際にメモリに展開される情報をアプリケーションプログラムが正規品であるか否かの検証に用いるため、アプリケーションプログラムの改竄を精度よく検出することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】この発明の実施の形態に係るデータ処理システムのハードウェア構成を示す図。
【図２】この発明の実施の形態に係るデータ処理装置のハードウェア構成を示す図。
【図３】この発明の実施の形態に係るデータ処理システムのシステム構成を示す図。
【図４】この発明の実施の形態に係るアプリケーションプログラムの認証の流れを示す図。
【図５】この発明の実施の形態に係るアプリケーションプログラムの検証方法を示す図。
【図６】この発明の実施の形態に係るデータ処理部およびデータ処理制御部のシステム構成を示す図。
【図７】この発明の実施の形態に係るアプリケーションプログラムの検証の流れを示すフローチャート。
【図８】この発明の実施の形態に係るデータ処理システムのシステム構成の変形例を示す図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態に係るデータ処理システム、データ処理装置およびアプリケーションプログラムの検証方法について、図面を参照しつつ詳細に説明する。
【００１４】
実施の形態．
本実施の形態に係るデータ処理システムは、機器から送信されたデータを処理するシステムである。データ処理システムは、製品の生産システムとして工場に設置される。データ処理システムによるデータの処理は、例えば、不良品の検出および製造工程からの除外、材料の分類、又は異常の監視を実現するために実行される。データ処理システムは、データに施す処理の内容をユーザが設定する。データ処理システムのハードウェア構成を図１に示す。データ処理システムは、製品の製造工程で稼働する機器２０１，２０２と、機器２０１，２０２から送信されたデータを処理するデータ処理装置１００と、を有している。
【００１５】
データ処理装置１００は、ネットワーク２１０を介して機器２０１，２０２と接続され、機器２０１，２０２との間で信号を送受信することにより互いに通信する。データ処理装置１００と機器２０１，２０２とは、共にネットワーク２１０を介して接続されているが、異なる規格のネットワークを介して接続されてもよい。ネットワーク２１０は、産業用ネットワークである。なお、ネットワーク２１０は、シリアル通信を実現するための専用線であってもよい。
【００１６】
機器２０１は、製品の製造工程で利用されるセンサ２０１ａを備えた制御装置である。センサ２０１ａは、例えば、光センサ、圧力センサ、超音波センサ、その他の検出器である。機器２０１は、センサ２０１ａによるセンシング結果を含むデータを、データ処理装置１００から指定された周期で繰り返し、データ処理装置１００に送信する。この周期は、例えば、１０ｍｓ、１００ｍｓ、又は１ｓｅｃである。
【００１７】
機器２０２は、例えば、製品の製造工程で利用されるアクチュエータ又はロボットである。機器２０２は、データ処理装置１００によるデータの処理結果に応じて稼働する。詳細には、機器２０２は、データの処理結果として、稼働モードの指定、稼働開始、および稼働停止のいずれかを指示する動作指令をデータ処理装置１００から受信すると、この動作指令に従って稼働状態を変更する。
【００１８】
以下では、データ処理装置１００に接続される機器２０１，２０２を総称して機器２００と表記する。データ処理装置１００と機器２００とを接続するデータの伝送路は、ネットワーク２１０のような有線通信の伝送路に限定されず、無線通信の伝送路であってもよい。
【００１９】
機器２００は、センシング結果を含むデータを送信する機器とデータ処理装置１００からの動作指令に従って稼働する機器とのいずれか一方に限定されない。機器２００は、データ処理装置１００にデータを送信すると共にデータ処理装置１００からの動作指令に従って稼働する機器であってもよい。機器２００の個数は２つに限定されない。
【００２０】
データ処理装置１００は、ＰＬＣや産業用パソコンであって、機器２００から収集したデータに対して、あらかじめ設定された処理を施して処理結果を出力するＦＡ（Factory Automation）装置である。データ処理装置１００は、処理結果の出力として、機器２００へ動作指令を送信するが、これには限定されず、データを分析又は加工した品質管理情報をユーザに提示してもよいし、データ処理装置１００自体又は外部のサーバ装置へ品質管理情報を蓄積してもよい。
【００２１】
データ処理装置１００のハードウェア構成を図２に示す。データ処理装置１００は、プロセッサ１０１と、主記憶部１０２と、補助記憶部１０３と、入力部１０４と、出力部１０５と、通信部１０６と、を有するコンピュータである。主記憶部１０２、補助記憶部１０３、入力部１０４、出力部１０５および通信部１０６はいずれも、内部バス１０７を介してプロセッサ１０１に接続される。
【００２２】
プロセッサ１０１は、ＭＰＵ（Micro Processing Unit）を含む。プロセッサ１０１は、補助記憶部１０３に記憶されるプログラムを実行することにより、データ処理装置１００の種々の機能を実現して、後述の処理を実行する。
【００２３】
主記憶部１０２は、ＲＡＭ（Random Access Memory）を含む。主記憶部１０２には、補助記憶部１０３からプログラムがロードされる。そして、主記憶部１０２は、プロセッサ１０１の作業領域として用いられる。
【００２４】
補助記憶部１０３は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）に代表される不揮発性メモリを含む。補助記憶部１０３は、プログラムの他に、プロセッサ１０１の処理に用いられる種々のデータを記憶する。補助記憶部１０３は、プロセッサ１０１の指示に従って、プロセッサ１０１によって利用されるデータをプロセッサ１０１に供給し、プロセッサ１０１から供給されたデータを記憶する。なお、補助記憶部１０３には複数のプログラムが記憶されている。また、プログラムは、データ処理装置１００に予め設定されたプログラムと、データ処理装置１００のユーザによって追加されたプログラムと、を含む。
【００２５】
入力部１０４は、入力キーおよびポインティングデバイスに代表される入力デバイスを含む。入力部１０４は、データ処理装置１００のユーザによって入力された情報を取得して、取得した情報をプロセッサ１０１に通知する。
【００２６】
出力部１０５は、表示装置およびスピーカに代表される出力デバイスを含む。出力部１０５は、プロセッサ１０１の指示に従って、種々の情報をユーザに提示する。
【００２７】
通信部１０６は、外部の機器２００と通信するためのネットワークインタフェース回路を含む。通信部１０６は、機器２００から信号を受信して、この信号により示されるデータをプロセッサ１０１へ出力する。また、通信部１０６は、プロセッサ１０１から出力されたデータを示す信号を機器２００へ送信する。
【００２８】
図３は、本発明の実施の形態に係るデータ処理システムのシステム構成を表す。データ処理システムは、データ処理装置１００と機器２０１，２０２とで構成されている。データ処理装置１００は、エンジニアリングツール１４０、データ処理プラットフォーム１１０、データ収集部１３１，１３２、データ処理部１２１ａ，１２１ｂ、および検証データ送信部１５０で構成されている。
【００２９】
エンジニアリングツール１４０は、データ処理の内容をユーザが設定するデータ処理制御設定部１４１を備える。エンジニアリングツール１４０は、補助記憶部１０３に記憶されたソフトウェアが、主記憶部１０２に読み込まれ、プロセッサ１０１により実行されることにより、実現される。データ処理の内容の設定は、ユーザが入力部１０４を介して行う。
【００３０】
データ処理プラットフォーム１１０は、エンジニアリングツール１４０から受け取った設定情報データを受け取る設定情報構築部１１１と、構築した設定情報を蓄積しておく設定情報蓄積部１１２と、蓄積した設定情報を解析しデータ収集部１３１，１３２とデータ処理部１２１ａ，１２１ｂに指示を行うデータ処理制御部１１３と、を有する。設定情報構築部１１１、設定情報蓄積部１１２およびデータ処理制御部１１３は、補助記憶部１０３に記憶されたプログラムが、主記憶部１０２に読み込まれ、プロセッサ１０１により実行されることにより、実現される。設定情報蓄積部１１２は、補助記憶部１０３に設定情報を蓄積する。
【００３１】
データ収集部１３１，１３２は、データ処理制御部１１３の指示に従って、機器２０１，２０２からデータを収集し、データ処理制御部１１３に受け渡すと共に、データ処理制御部１１３から受け取ったデータを機器２０１，２０２に渡す機能を備える。データ処理制御部１１３からの指示には、例えば、収集するデータの種類、収集周期などの情報が含まれる。データ収集部１３１，１３２は、補助記憶部１０３に記憶されたプログラムが、主記憶部１０２に読み込まれ、プロセッサ１０１により実行されることにより、実現される。機器２０１，２０２との通信には、通信部１０６が用いられる。データ収集部１３１，１３２は、機器２００とデータ処理制御部１１３との間に介在し、インタフェースの変換の機能を備える。機器２００が通信プロトコルの異なるネットワークにより接続されていても、通信プロトコルの差異を吸収し、データ処理プラットフォーム１１０側で指定された形式にてデータ処理制御部１１３との通信を行う。
【００３２】
データ処理部１２１ａ，１２１ｂは、データ処理制御部１１３の指示に従って、データ処理制御部１１３から受け渡されたデータに対し、処理を行う。データ処理部１２１ａ，１２１ｂは、アプリケーションプログラムとして、アプリケーションベンダ３１０から提供されるものであって、補助記憶部１０３に記憶されたプログラムが、主記憶部１０２に読み込まれ、プロセッサ１０１により実行されることにより、実現される。データ処理制御部１１３がデータ処理部１２１ａ，１２１ｂへ与える指示には、例えば、データを出力する際のデータ形式（桁数）などのパラメータが含まれる。データ処理部１２１ａ，１２１ｂに与えるパラメータは、データ処理部１２１ａ，１２１ｂに依存する。データ処理部１２１ａ，１２１ｂは、それぞれ独立して処理を行うが、データ処理制御部１１３が介在することで、実質的に連携して処理を行うこともできる。例えば、データ処理部１２１ａがセンシングデータからノイズを除去するアプリケーションプログラムであり、データ処理部１２１ｂがセンシングデータを分析し、機器２０１の異常有無の診断を行うアプリケーションプログラムである場合がある。この場合、まずデータ処理制御部１１３が、機器２０１から収集したセンシングデータをデータ処理部１２１ａに与え、データ処理部１２１ａでノイズが除去させ、データ処理部１２１ａからノイズが除去されたセンシングデータを受け取る。そして、データ処理制御部１１３が、ノイズが除去されたセンシングデータをデータ処理部１２１ｂに与え、機器２０１の異常有無の診断を実行させる。このように、データ処理制御部１１３の働きにより、データ処理部１２１ａ，１２１ｂを実質的に連携させて、データ処理を行わせることができる。
【００３３】
検証データ送信部１５０は、アプリケーションプログラムの検証の際、検証用のデータをメモリから取得して、データ処理制御部１１３に送信する。検証データ送信部１５０は、検証用モジュールがデータ処理部１２１ａ，１２１ｂに呼び出され、実行されることで実現する機能部である。検証用モジュールはプラットフォーム提供者が予め準備し、ユーザに提供されるものであり、検証データ送信部はデータ処理制御部１１３と安全な通信を行うためのインタフェース機能を備える。検証用モジュールは、例えば、ＤＬＬ（Dynamic Link Library、動的リンクライブラリ）ファイルの形式で提供される。
【００３４】
次に、アプリケーションプログラム３０５の認証の流れについて、図４を用いて説明する。データ処理部１２１ａ，１２１ｂは、アプリケーションベンダ３１０から提供されるアプリケーションプログラム３０５をユーザ３２０がデータ処理装置１００にインストールすることで、追加することができる。アプリケーションプログラム３０５は、その性能を保証するために、認証機関３００（プラットフォーム提供者）の認証を受け、認証情報３０４が埋め込まれた状態でユーザ３２０に提供される。
【００３５】
アプリケーションベンダ３１０は、アプリケーションプログラム３０５独自の情報であるアプリ実行時情報３０２を、認証機関３００に渡す。本実施の形態において、アプリ実行時情報３０２は、データ処理装置１００等のコンピュータがアプリケーションプログラム３０５を実行した際に生成される動的情報である。当該動的情報の具体例としては、関数コール時にスタック領域に確保された情報など、アプリケーションプログラム３０５の実行時に、アプリケーションプログラム３０５が動作するデータ処理装置１００内のメモリ上に展開される情報が挙げられる。具体的には、アプリケーションプログラム３０５は検証用のデータであるアプリ実行時情報を出力するための検証用関数を備えており、この検証用関数のスタックメモリ（検証用関数が実行されたされた際に検証用関数に割り当てられたメモリ上のスタック領域）に確保された情報が、アプリ実行時情報３０２として用いられる。このスタック領域に確保された情報は、例えば、検証用関数をはじめとする一連の呼び出し元関数を記録したデータの集合であり、各関数の戻り先アドレスに関する情報が含まれる。アプリ実行時情報３０２は、スタックメモリに確保された情報以外の具体例としては、予め定められた検証用関数が実行された際における、大域変数のメモリ上でのアドレス情報や大域変数として格納されている値などでもよい。なお、ここで、メモリはデータ処理装置１００の主記憶部１０２に限定されず、プロセッサ１０１内部のキャッシュメモリを含み、キャッシュメモリ上に展開される情報を用いても良い。認証機関３００は、アプリ実行時情報３０２と認証情報３０４とをまとめ、認証機関秘密鍵３０１にて暗号化した認証データ３０３を作成し、アプリケーションベンダ３１０に提供する。認証機関秘密鍵３０１は、第１の秘密鍵に相当する。ここで、認証情報３０４とは認証機関３００が作成する電子署名であり、認証データ３０３が認証機関３００により作成されたものであることを保証する電子データである。次に、アプリケーションベンダ３１０は、受け取った認証データ３０３を、開発したアプリケーションプログラム３０５に埋め込んで、ユーザ３２０に提供する。これにより、認証機関３００の認証を受けたアプリケーションプログラム３０５がユーザ３２０に提供される。アプリ実行時情報３０２は、検証用動的情報に相当する。
【００３６】
次に、アプリケーションプログラム３０５の検証方法について、図５を用いて説明する。データ処理装置１００において、アプリケーションプログラム３０５が実行されることで実現されるデータ処理部１２１は、認証データ３０３をデータ処理制御部１１３に受け渡す。データ処理制御部１１３は出力された認証データ３０３を自身が保有している認証機関公開鍵４０１で復号し、復号された認証情報３０４とアプリ実行時情報３０２を得る。認証機関公開鍵４０１は認証データ３０３の作成時に使用された認証機関秘密鍵３０１と一対となっており、認証機関秘密鍵３０１で暗号化された認証データ３０３を復号することができ、認証機関秘密鍵３０１で暗号化されている認証データ３０３は認証機関公開鍵４０１でしか復号できない。認証機関公開鍵４０１は、第１の公開鍵に相当する。
【００３７】
データ処理制御部１１３は復号した認証データ３０３から認証情報３０４を取り出し、認証データ３０３が認証機関３００で認証された正規品であることを検証する。そして、認証データ３０３が正規の認証機関３００で認証された正規品であると判明した場合、データ処理制御部１１３はアプリケーションプログラム３０５を実行した際に生成される情報であるアプリ実行時情報４０２を取得する。データ処理制御部１１３は、検証データ送信部１５０経由で、メモリ４０３からアプリ実行時情報４０２を取得する。検証データ送信部は、データ処理部１２１が保有する検証用関数１２２により検証用モジュールが呼び出され実行されることで実現する。検証データ送信部１５０は、検証用関数１２２が実行されている状態においてメモリ４０３に展開されている情報を読み出し、データ処理制御部１１３に送信する。検証用モジュールはプラットフォーム提供者により提供されるものであり、検証データ送信部１５０は、予め規定された専用のインタフェース機能を介してデータ処理制御部１１３にデータを送信するため、アプリケーションプログラム３０５はアプリ実行時情報４０２を偽装することができない。なお、データ処理制御部１１３は、検証データ送信部１５０を経由せず、検証用関数１２２の実行時にメモリ４０３に展開される情報を直接読み出すことでアプリ実行時情報４０２を取得してもよい。この場合もメモリ４０３からアプリ実行時情報４０２を取り出すため、アプリケーションプログラム３０５は、アプリ実行時情報４０２を偽装することができない。アプリケーションプログラム３０５が改変された場合には、メモリ４０３内に展開される情報（スタック領域に確保された戻り値のアドレス等）は変化するため、メモリ４０３に展開される情報を用いることで、アプリケーションプログラム３０５の改変を精度よく検知することができる。データ処理制御部１１３は、復号した認証データ３０３から取り出したアプリ実行時情報３０２と、新たに取得したアプリ実行時情報４０２との整合性を検証し、アプリケーションプログラム３０５に埋め込まれている認証データ３０３が当該アプリケーションプログラム３０５に対して発行されたものであることを確認する。アプリ実行時情報４０２は、動的情報に相当する。
【００３８】
次に、データ処理部１２１およびデータ処理制御部１１３のシステム構成について、図６を用いて説明する。データ処理部１２１は、データ処理実行部５００と、認証データ格納部５０１と、認証データ送信部５０５と、アプリ秘密鍵格納部５０２と、暗号化／復号部５０３と、配信鍵格納部５０４と、を備える。データ処理実行部５００は、データ処理制御部１１３から受け取ったデータに対しデータ処理を行う。認証データ格納部５０１は、暗号化された認証データ３０３を格納する。認証データ送信部５０５は、認証データ３０３をデータ処理制御部１１３へ送信する。アプリ秘密鍵格納部５０２は、アプリ秘密鍵を格納する。アプリ秘密鍵は、アプリケーションプログラム３０５に予め埋め込まれているものである。アプリ秘密鍵は、第２の秘密鍵に相当する。暗号化／復号部５０３は、データ処理制御部１１３へ送信するデータの暗号化、およびデータ処理制御部１１３から受信したデータの復号を行う。配信鍵格納部５０４は、後に説明する配信鍵を格納する。データ処理実行部５００、認証データ格納部５０１、暗号化／復号部５０３は、アプリケーションプログラム３０５がプロセッサ１０１によって実行されることにより実現される。一方、認証データ格納部５０１、アプリ秘密鍵格納部５０２および配信鍵格納部５０４は、補助記憶部１０３により実現される。
【００３９】
データ処理制御部１１３は、認証機関公開鍵格納部５１１と、認証データ復号部５１２と、認証情報抽出部５１３と、アプリ実行時情報抽出部５１４と、アプリ公開鍵抽出部５１５と、整合性確認部５１６と、アプリ公開鍵格納部５１７と、配信鍵生成部５１８と、配信鍵格納部５１９と、暗号化／復号部５２０と、を備える。認証データ復号部５１２、認証情報抽出部５１３、アプリ実行時情報抽出部５１４、アプリ公開鍵抽出部５１５および整合性確認部５１６は、検証部５２１を構成する。検証部５２１は検証手段に相当する。認証機関公開鍵格納部５１１は、予め認証機関３００から与えられた認証機関公開鍵４０１を格納している。認証データ復号部５１２は、データ処理部１２１の認証データ送信部５０５から暗号化された認証データ３０３を受信し、認証機関公開鍵格納部５１１に格納されている認証機関公開鍵４０１を用いて、認証データ３０３の復号を行う。認証情報抽出部５１３は、復号された認証データ３０３から認証情報３０４を抽出し、整合性確認部５１６に渡す。アプリ実行時情報抽出部５１４は、復号された認証データ３０３から、アプリ実行時情報３０２を抽出し、整合性確認部５１６に渡す。アプリ公開鍵抽出部５１５は、復号された認証データ３０３からアプリ公開鍵を抽出し、アプリ公開鍵をアプリ公開鍵格納部５１７に格納する。アプリ秘密鍵とアプリ公開鍵は対をなすものである。アプリ公開鍵は、第２の公開鍵に相当する。整合性確認部５１６は、認証情報抽出部５１３から受け取った認証情報３０４の検証を行い、認証データ３０３が正規の認証機関３００で認証されたものであるか否かの検証を行う。また、整合性確認部５１６は、アプリ実行時情報抽出部５１４から受け取ったアプリ実行時情報３０２の検証を行い、認証データ３０３がデータ処理部１２１を実現するアプリケーションプログラム３０５に対し発行されたものであることを確認する。認証データ復号部５１２と、認証情報抽出部５１３と、アプリ実行時情報抽出部５１４と、アプリ公開鍵抽出部５１５と、整合性確認部５１６とは、各部に対応するプログラムモジュールがプロセッサ１０１に実行されることにより実現される。認証機関公開鍵格納部５１１と、アプリ公開鍵格納部５１７とは、補助記憶部１０３により実現される。
【００４０】
配信鍵生成部５１８は、整合性確認部５１６においてデータ処理部１２１の正当性の確認がとれた場合に、配信鍵を生成し、配信鍵格納部５１９に格納する。また、この配信鍵は、暗号化／復号部５２０において、アプリ公開鍵格納部５１７に格納されたアプリ公開鍵を用い暗号化されて、データ処理部１２１に渡される。一方、データ処理部１２１は、アプリ公開鍵と対をなすアプリ秘密鍵をアプリ秘密鍵格納部５０２に保有しているため、アプリ公開鍵で暗号化された配信鍵を暗号化／復号部５０３にて復号することができる。また、データ処理部１２１のみが、アプリ公開鍵と対をなすアプリ秘密鍵を保有しているため、データ処理部１２１以外は、当該アプリ公開鍵で暗号化されたデータ（配信鍵）を復号することはできない。したがって、データ処理制御部１１３とデータ処理部１２１とは、安全に配信鍵を共有することができる。ここで、配信鍵生成部５１８および暗号化／復号部５２０は、それぞれ対応するプログラムモジュールがプロセッサ１０１に実行されることにより実現される。配信鍵格納部５１９は、補助記憶部１０３により実現される。
【００４１】
配信鍵は、データ処理制御部１１３がデータ処理部１２１に処理させるデータを送信する際、およびデータ処理部１２１が処理したデータをデータ処理制御部１１３に返す際のデータの暗号化および復号に用いられる共通鍵である。データ処理制御部１１３がデータ処理部１２１に処理させるデータを送信する際は、データは配信鍵を用い配信鍵を用いて暗号化／復号部５２０で暗号化され、暗号化／復号部５０３で復号される。一方、データ処理部１２１が処理したデータをデータ処理制御部１１３に返す際は、データは配信鍵を用い暗号化／復号部５０３で暗号化され、暗号化／復号部５２０で復号される。安全に共有化された配信鍵を用いることで、データ処理制御部１１３とデータ処理部１２１との間で、安全なデータのやり取りが可能となる。
【００４２】
データ処理制御部１１３におけるアプリケーションプログラム３０５の検証の流れについて、図７のフローチャートを用いて説明する。まず、認証データ復号部５１２が、認証機関公開鍵格納部５１１に格納された認証機関公開鍵４０１を用いて、データ処理部１２１の認証データ格納部５０１から取得した認証データ３０３の復号を行う（Ｓ１０１）。次に、復号した認証データ３０３に含まれる認証情報３０４の検証を行い、認証データ３０３が正規の認証機関３００で認証されたものであるかの確認を行う（Ｓ１０２）。ここで、認証データ３０３が正規の認証機関３００で発行されたものでない場合、アプリケーションプログラム３０５の実行を禁止する（Ｓ１１０）。一方、認証データ３０３が正規の認証機関３００で発行されたものであることが確認できた場合、データ処理制御部１１３はメモリ４０３からアプリ実行時情報４０２を取得する（Ｓ１０３）。
【００４３】
次に、データ処理制御部１１３は、復号した認証データ３０３に含まれるアプリ実行時情報３０２と取得したアプリ実行時情報４０２とを比較することで、アプリ実行時情報３０２の検証を行う（Ｓ１０４）。検証の結果、正当性が確認できなかった場合は、アプリケーションプログラム３０５の実行を禁止する（Ｓ１１０）。一方、正当性が確認できた場合は、アプリケーションプログラム３０５におけるデータ処理を許可する。
【００４４】
また、アプリケーションプログラム３０５の正当性が確認できた場合、復号された認証データ３０３から、アプリ公開鍵を抽出し、アプリ公開鍵格納部５１７に格納する（Ｓ１０５）。そして、配信鍵生成部５１８が、データ処理制御部１１３とデータ処理部１２１でデータのやり取りを行う際のデータの暗号化および復号に用いる共通鍵である配信鍵を作成し、配信鍵格納部５１９に格納する（Ｓ１０６）。その後、暗号化／復号部５２０が、アプリ公開鍵を用いて配信鍵を暗号化し（Ｓ１０７）、データ処理部１２１に暗号化された配信鍵を送付する（Ｓ１０８）。配信鍵は、データ配信用共通鍵に相当する。
【００４５】
その後、図示しないが、データ処理部１２１では、アプリ公開鍵と対をなすアプリ秘密鍵を用い、アプリ公開鍵を用いて暗号化された配信鍵の復号を行い、当該配信鍵を配信鍵格納部５０４に格納する。アプリ公開鍵と対をなすアプリ秘密鍵は、データ処理部１２１のみが保有しているため、データ処理部１２１以外は、アプリ公開鍵を用いて暗号化された配信鍵の復号を行うことはできない。したがって、データ処理制御部１１３とデータ処理部１２１との間で、安全に配信鍵の共有を行うことができる。これにより、データ処理制御部１１３とデータ処理部１２１の間での暗号化通信が可能となる。
【００４６】
続いて、データ処理システムのシステム構成の変形例について、図８を用いて説明する。図３に示したデータ処理システムでは、データ処理部１２１ａ，１２１ｂと、データ処理制御部１１３とが、同じデータ処理装置１００に設けられていたが、高速な演算処理が可能な他のデータ処理装置において、データ処理を行った方が好ましい場合がある。そこで、図８に示したデータ処理システムのシステム構成では、データ処理部１２１ｃがデータ処理装置１００とは別の外部処理装置１８０上に設けられている。ここで、データ処理装置１００と外部処理装置１８０とはネットワークを介して接続され、データ処理制御部１１３とデータ処理部１２１ｃとが通信可能に構成されている。
【００４７】
他の制御装置上にアプリケーションプログラムがインストールされている場合、他の制御装置から偽装した認証情報が与えられる場合があり、アプリケーションプログラムの正当性の検証が難しい。しかしながら、本実施の形態のアプリケーションプログラムの検証方法では、プラットフォーム提供者が提供した検証用モジュールを、データ処理部１２１ｃがデータ処理部１２１ｃ保有の検証用関数１２２が呼び出して実行することで、外部処理装置１８０上に、検証データ送信部１５２が設けられる。検証データ送信部１５２はデータ処理制御部１１３と通信するためのインタフェース機能を有しているため、アプリケーションプログラム３０５が外部処理装置１８０上に設けられている場合でも、データ処理制御部１１３は外部処理装置１８０のメモリ上の情報であるアプリ実行時情報３０２を取得することができる。したがって、アプリケーションプログラム３０５が外部処理装置１８０上に設けられている場合においても、アプリケーションプログラム３０５の正当性の検証が可能である。
【符号の説明】
【００４８】
１００  データ処理装置、１０１  プロセッサ、１０２  主記憶部、１０３  補助記憶部、１０４  入力部、１０５  出力部、１０６  通信部、１０７  内部バス、１１０  データ処理プラットフォーム、１１１  設定情報構築部、１１２  設定情報蓄積部、１１３  データ処理制御部、１２１，１２１ａ，１２１ｂ，１２１ｃ  データ処理部、１２２  検証用関数、１３１，１３２  データ収集部、１４０  エンジニアリングツール、１４１  データ処理制御設定部、１５０，１５２  検証データ送信部、１８０  外部処理装置、２００，２０１，２０２  機器、２０１ａ  センサ、２１０  ネットワーク、３００  認証機関、３０１  認証機関秘密鍵、３０２  アプリ実行時情報、３０３  認証データ、３０４  認証情報、３１０  アプリケーションベンダ、３０５  アプリケーションプログラム、３２０  ユーザ、４０１  認証機関公開鍵、４０２  アプリ実行時情報、４０３  メモリ、５００  データ処理実行部、５０１  認証データ格納部、５０２  アプリ秘密鍵格納部、５０３  暗号化／復号部、５０４  配信鍵格納部、５０５  認証データ送信部、５１１  認証機関公開鍵格納部、５１２  認証データ復号部、５１３  認証情報抽出部、５１４  アプリ実行時情報抽出部、５１５  アプリ公開鍵抽出部、５１６  整合性確認部、５１７  アプリ公開鍵格納部、５１８  配信鍵生成部、５１９  配信鍵格納部、５２０  暗号化／復号部、５２１  検証部。
【要約】
データ処理システムは、認証機関が保有する第１の秘密鍵３０１で予め暗号化された認証データ３０３を有するアプリケーションプログラム３１０の検証を行う検証手段５２１を備え、検証手段５２１は、アプリケーションプログラム３１０に含まれる検証用関数１２２が実行された際にメモリ４０３に展開される情報である動的情報４０２を取得し、予め保有している第１の秘密鍵３０１に対応する第１の公開鍵４０１を用いて認証データ３０３を復号することで得られる検証用動的情報３０２と比較することで、アプリケーションプログラム３１０の検証を行うことを特徴とするデータ処理システム。【図１】
0006737424.tif 000002
【図２】
0006737424.tif 000003
【図３】
0006737424.tif 000004
【図４】
0006737424.tif 000005
【図５】
0006737424.tif 000006
【図６】
0006737424.tif 000007
【図７】
0006737424.tif 000008
【図８】
0006737424.tif 000009