(57)【要約】【課題】システム構成に応じてセキュリティの強度が選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得する。【解決手段】外部からデータを受信し、データを記憶する制御機器であって、外部の書き込み手段からのデータ受信前、及びデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンが付加されたデータを前記書き込み手段から取得し、パターンに基づいて復号処理の要否を判定する第１判定手段と、第１判定手段により復号処理が必要と判定された場合、データを復号する第１復号手段と、第１復号手段により復号されたデータ、又は第１判定手段により復号処理が不要と判定されたデータを記憶する前記第１記憶手段とを備える。【選択図】図３
2014060618.tif 000002
【特許請求の範囲】
【請求項１】
外部からデータを受信し、該データを記憶する制御機器であって、
外部の書き込み手段からのデータ受信前、及びデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンが付加されたデータを前記書き込み手段から取得し、該パターンに基づいて復号処理の要否を判定する第１判定手段と、
前記第１判定手段により復号処理が必要と判定された場合、前記データを復号する第１復号手段と、
前記第１復号手段により復号されたデータ、又は前記第１判定手段により復号処理が不要と判定された前記データを記憶する前記第１記憶手段と
を備える制御機器。
【請求項２】
前記所定のタイミングに、第２記憶手段への書き込み前を含み、
前記第１記憶手段から読み出されたデータに対し、前記パターンに基づいて復号処理が必要か否かを判定する第２判定手段と、
前記第２判定手段により復号処理が必要と判定された場合、前記読み出されたデータを復号する第２復号手段と、
前記第２復号手段により復号されたデータ、又は前記第２判定手段により復号処理が不要と判定された前記読み出されたデータを記憶する前記第２記憶手段と
をさらに備える請求項１記載の制御機器。
【請求項３】
各復号処理で用いられる鍵を生成するための鍵生成情報が、前記データに付加される請求項１又は２記載の制御機器。
【請求項４】
前記データは、前記制御機器を動作させるためのプログラムデータである請求項１乃至３いずれか一項に記載の制御機器。
【請求項５】
外部からデータを受信し、該データを記憶する制御機器と、
書き込み手段からの前記制御機器へのデータ送信前、及び前記制御機器でのデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンに基づいてデータの暗号化を行い、暗号化データに前記パターンを付加する暗号化手段と、
前記パターンが付加された暗号化データを取得し、前記パターンに基づいて復号処理が必要と判定された場合は前記暗号化データに復号処理が行われたデータを、又は前記パターンに基づいて復号処理が不要と判定された場合は前記暗号化データを前記制御機器に送信する書き込み手段と、を備え、
前記制御機器は、
前記書き込み手段からデータを取得し、前記パターンに基づいて復号処理の要否を判定する第１判定手段と、
前記第１判定手段により復号処理が必要と判定された場合、前記書き込み手段から取得されたデータを復号する第１復号手段と、
前記第１復号手段により復号されたデータ、又は前記第１判定手段により復号処理が不要と判定された前記書き込み手段から取得されたデータを記憶する前記第１記憶手段と
を備える制御システム。
【請求項６】
外部からデータを受信し、該データを記憶する制御機器に対する書き込み手段からのデータ送信前、及び前記制御機器でのデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンに基づいてデータに暗号化を行い、暗号化されたデータに前記パターンを付加する暗号化ステップと、
前記書き込み手段が、前記パターンが付加された暗号化データを取得し、前記パターンに基づいて復号処理が必要と判定された場合は前記暗号化データに復号処理が行われたデータを、又は前記パターンに基づいて復号処理が不要と判定された場合は前記暗号化データを前記制御機器に送信する書き込みステップと、
前記書き込み手段からデータを取得し、前記パターンに基づいて復号処理の要否を判定する第１判定ステップと、
前記第１判定ステップにより復号処理が必要と判定された場合、前記書き込み手段から取得されたデータを復号する第１復号ステップと、
前記第１復号ステップにより復号されたデータ、又は前記第１判定ステップにより復号処理が不要と判定された前記書き込み手段から取得されたデータを前記第１記憶手段に記憶する第１記憶ステップと
を有するデータ格納方法。
【請求項７】
外部からデータを受信し、該データを記憶するコンピュータに実行させるためのプログラムであって、
外部の書き込み手段からのデータ受信前、及びデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンが付加されたデータを前記書き込み手段から取得し、該パターンに基づいて復号処理の要否を判定する第１判定ステップと、
前記第１判定ステップにより復号処理が必要と判定された場合、前記データを復号する第１復号ステップと、
前記第１復号ステップにより復号されたデータ、又は前記第１判定ステップにより復号処理が不要と判定された前記データを前記第１記憶手段に記憶する記憶ステップと
を有するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを格納する際にセキュリティを考慮する制御機器、制御システム、データ格納方法及びプログラムに関する。
【背景技術】
【０００２】
従来、プログラムの書き換えに関する方式について、複数の提案がなされている。一方で、暗号化されたプログラムデータは、復号処理を実行しなければ実行ができないプログラムデータである。プログラムデータの性質から暗号化と復号処理のレベルは、同一レベルとして予め決めておく必要がある。
【０００３】
このプログラムデータを格納するプロセッサに対し、セキュリティを高めた技術がある。例えば、このプロセッサは、データのロード、データのストアを行う機能及び暗号化と復号処理の機能を有し、暗号化と復号処理を実行する場合には、選択した鍵を用いてデータの書き換えを可能とする（例えば特許文献１参照）。
【０００４】
また、暗号化された素材の動的な変換に対し、暗号化されたデータを復号処理機能へデータ転送することなく、変換機能を通過させることで、即時に復号処理を実行することができ、リアルタイムの復号処理を提供する方式がある（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２３３１５７号公報
【特許文献２】特開２００８−１９３７２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、データに対する暗号化レベルや、データの復号処理を実行する場所（又はタイミング）を容易に変更することができなかった。つまり、従来技術では、秘匿したいデータに対し、シングル暗号化から多重暗号化までの暗号化レベルと、復号処理を行うタイミングとを選択できないため、システム構成に応じたセキュリティの強度を選択できないという問題点があった。
【０００７】
そこで、以下に開示する技術では、システム構成に応じてセキュリティの強度が選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得することができる制御機器、制御システム、データ格納方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様における制御機器は、外部からデータを受信し、該データを記憶する制御機器であって、外部の書き込み手段からのデータ受信前、及びデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンが付加されたデータを前記書き込み手段から取得し、該パターンに基づいて復号処理の要否を判定する第１判定手段と、前記第１判定手段により復号処理が必要と判定された場合、前記データを復号する第１復号手段と、前記第１復号手段により復号されたデータ、又は前記第１判定手段により復号処理が不要と判定された前記データを記憶する前記第１記憶手段とを備える。
【０００９】
また、本発明の他の態様における制御システムは、外部からデータを受信し、該データを記憶する制御機器と、書き込み手段からの前記制御機器へのデータ送信前、及び前記制御機器でのデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンに基づいてデータの暗号化を行い、暗号化データに前記パターンを付加する暗号化手段と、前記パターンが付加された暗号化データを取得し、前記パターンに基づいて復号処理が必要と判定された場合は前記暗号化データに復号処理が行われたデータを、又は前記パターンに基づいて復号処理が不要と判定された場合は前記暗号化データを前記制御機器に送信する書き込み手段と、を備え、前記制御機器は、前記書き込み手段からデータを取得し、前記パターンに基づいて復号処理の要否を判定する第１判定手段と、前記第１判定手段により復号処理が必要と判定された場合、前記書き込み手段から取得されたデータを復号する第１復号手段と、前記第１復号手段により復号されたデータ、又は前記第１判定手段により復号処理が不要と判定された前記書き込み手段から取得されたデータを記憶する前記第１記憶手段とを備える。
【００１０】
また、本発明の他の態様におけるデータ格納方法は、外部からデータを受信し、該データを記憶する制御機器に対する書き込み手段からのデータ送信前、及び前記制御機器でのデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンに基づいてデータに暗号化を行い、暗号化されたデータに前記パターンを付加する暗号化ステップと、前記書き込み手段が、前記パターンが付加された暗号化データを取得し、前記パターンに基づいて復号処理が必要と判定された場合は前記暗号化データに復号処理が行われたデータを、又は前記パターンに基づいて復号処理が不要と判定された場合は前記暗号化データを前記制御機器に送信する書き込みステップと、前記書き込み手段からデータを取得し、前記パターンに基づいて復号処理の要否を判定する第１判定ステップと、前記第１判定ステップにより復号処理が必要と判定された場合、前記書き込み手段から取得されたデータを復号する第１復号ステップと、前記第１復号ステップにより復号されたデータ、又は前記第１判定ステップにより復号処理が不要と判定された前記書き込み手段から取得されたデータを前記第１記憶手段に記憶する第１記憶ステップとを有する。
【００１１】
また、本発明の他の態様におけるプログラムは、外部からデータを受信し、該データを記憶するコンピュータに実行させるためのプログラムであって、外部の書き込み手段からのデータ受信前、及びデータ受信後における第１記憶手段への書き込み前を含む所定のタイミングで復号処理が必要か否かを示すパターンが付加されたデータを前記書き込み手段から取得し、該パターンに基づいて復号処理の要否を判定する第１判定ステップと、前記第１判定ステップにより復号処理が必要と判定された場合、前記データを復号する第１復号ステップと、前記第１復号ステップにより復号されたデータ、又は前記第１判定ステップにより復号処理が不要と判定された前記データを前記第１記憶手段に記憶する記憶ステップとを有する。
【発明の効果】
【００１２】
開示の技術によれば、システム構成に応じてセキュリティの強度が選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得することができる。
【図面の簡単な説明】
【００１３】
【図１】実施例におけるシステム構成の一例を示す図。
【図２】実施例における制御機器が組み込まれた第３情報処理装置のハードウェアの一例を示すブロック図。
【図３】実施例における各装置の機能の一例を示すブロック図。
【図４】レベルパターンテーブル（その１）の一例を示す図。
【図５】暗号化データのデータ構造（その１）の一例を示す図。
【図６】具体例（その１）を説明する図。
【図７】具体例（その２）を説明する図。
【図８】実施例における格納処理（その１）の一例を示すフローチャート。
【図９】実施例における格納処理（その２）の一例を示すフローチャート。
【図１０】実施例における格納処理（その３）の一例を示すフローチャート。
【図１１】レベルパターンテーブル（その２）の一例を示す図。
【図１２】具体例（その３）を説明する図。
【図１３】暗号化データのデータ構造（その２）の一例を示す図。
【発明を実施するための形態】
【００１４】
以下、システム構成に応じてセキュリティの強度が柔軟に選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得する実施例について、添付図面を参照しながら説明する。
【００１５】
［実施例］
＜システム構成＞
図１は、実施例におけるシステム構成の一例を示す図である。図１に示す制御システム１は、開発環境で用いられる第１情報処理装置１０と、ローダとしても機能する第２情報処理装置２０と、ファームウェアを有する制御機器３０とを備える。各装置（制御機器３０も含む）は、有線又は無線によりデータ通信可能となっている。
【００１６】
第１情報処理装置１０は、暗号化ツールを有しており、データに対して所定の暗号化を行う。所定の暗号化は、シングル暗号化、多重暗号化双方を行うことが可能である。所定の暗号化は、どの暗号化を行うかを示すパターンにより決定される。このパターンは、どのタイミングで復号処理が必要か否かを示すパターンでもあり、レベルパターンとも称される。
【００１７】
第１情報処理装置１０は、暗号化されたデータに対し、レベルパターンを管理情報として付加する。付加する位置は、暗号化データのヘッダ、フッタ、又は予め決められた位置のいずれでもよい。第１情報処理装置１０は、レベルパターンが付加された暗号化データを第２情報処理装置２０に送信する。
【００１８】
第２情報処理装置２０は、レベルパターンが付加された暗号化データを取得し、レベルパターンに基づいて、制御機器３０への書き込み前に、暗号化データの復号処理の要否を判定する。
【００１９】
第２情報処理装置２０は、暗号化データの復号処理が必要であれば復号処理を行う。また、第２情報処理装置２０は、復号化されたデータ、又は復号処理が不要と判定された場合の暗号化データをローダとしての機能を用いて、制御機器３０のメモリ（記憶部）に書き込むよう通信を行う。ローダは、データ書き込み用のソフトウェアである。
【００２０】
制御機器３０は、第２情報処理装置２０からデータを受信し、メモリに書き込む前に、復号処理が必要か否かを判定する。制御機器３０は、自身が有するプロセッサにより、データに付加されたレベルパターンに基づいて復号処理の要否を判定する。
【００２１】
制御機器３０は、復号処理が必要であれば、受信されたデータに対して復号処理を行い、復号後のデータをメモリに書き込む。また、制御機器３０は、復号処理が不要であれば、受信されたデータをそのままメモリに書き込む。
【００２２】
なお、制御機器３０は、マルチプロセッサを有する場合もある。この場合、他のプロセッサを動作するのに必要なデータに対して、一方のプロセッサが、レベルパターンに基づいて復号処理の要否を判定する。復号処理が必要であれば、一方のプロセッサが復号処理を行って、他のプロセッサが読み出すメモリに復号後のデータを書き込む。復号処理が不要であれば、一方のプロセッサは復号処理を行わずに、他のプロセッサが読み出すメモリに、他のプロセッサに必要なデータを書き込む。
【００２３】
＜ハードウェア構成＞
次に、制御機器３０が組み込まれた情報処理装置について説明する。図２は、実施例における制御機器３０が組み込まれた第３情報処理装置５０のハードウェアの一例を示すブロック図である。図２に示す例では、第３情報処理装置５０は、制御機器３０と、ドライブ装置１０５と、通信部１０７とを有する。各構成は、バスを介してそれぞれデータ通信可能なように接続されている。
【００２４】
制御機器３０は、第１プロセッサ１０１と、第２プロセッサ１０３とを有する。制御機器３０は、プロセッサを１つだけ有してもよいし、３つ以上有してもよい。制御機器３０は、例えば、制御基板やマザーボードである。
【００２５】
第１プロセッサ１０１は、第１演算部１１１と、第１ＲＡＭ（Random Access Memory）１１３と、第１ＲＯＭ（Read Only Memory）１１５とを有する。なお、第１ＲＡＭ１１３、第１ＲＯＭ１１５のいずれか、又は両方は、第１プロセッサ１０１に内蔵されていなくてもよい。
【００２６】
第１演算部１１１は、例えば、第１ＲＡＭ１１３又は第１ＲＯＭ１１５に記憶された所定のプログラムを実行し、第３情報処理装置５０の所定の処理を実行する。また、第１演算部１１１は、第１ＲＯＭ１１５に書き込まれる前のデータに対し、復号処理が必要か否かを判定し、必要であれば復号処理を実行する。
【００２７】
第１ＲＡＭ１１３は、例えば、第１演算部１１１で処理されたデータやロードされたプログラムデータなどを記憶する。
【００２８】
第１ＲＯＭ１１５は、例えば、第２情報処理装置２０から書き込まれたデータを記憶する。このデータが第１ＲＯＭ１１５に書き込まれる際、第１演算部１１１により、復号処理が必要であれば復号処理が行われる。
【００２９】
第２プロセッサ１０３は、第２演算部１３１と、第２ＲＡＭ１３３とを有する。なお、第２ＲＡＭ１３３は、第２プロセッサ１０３に内蔵されていなくてもよい。
【００３０】
第２演算部１３１は、例えば、第２ＲＡＭ１３３に記憶された所定のプログラムを実行し、第３情報処理装置５０の所定の処理を実行する。また、第１演算部１１１は、例えば電源ＯＮ時に、イニシャル処理として、第１ＲＯＭ１１５から必要なデータを読み出し、このデータに対し、第２ＲＡＭ１３３に書き込まれる前に、復号処理が必要か否かを判定し、必要であれば復号処理を実行したりする。
【００３１】
第２ＲＡＭ１３３は、例えば、電源ＯＮ時に、第１演算部１１１によって復号処理されたデータや、第１ＲＯＭ１１５から読み出されたデータなどを記憶する。
【００３２】
ドライブ装置１０５は、記録媒体１０９、例えばフレキシブルディスクやＣＤ（Compact Disc）から所定のプログラムを読み出し、記憶装置にインストールする。
【００３３】
また、記録媒体１０９に、所定のプログラムを格納し、この記録媒体１０９に格納されたプログラムは、ドライブ装置１０５を介して処理装置にインストールされる。インストールされた所定のプログラムは、第３情報処理装置５０により実行可能となる。
【００３４】
通信部１０７は、有線又は無線で周辺機器とデータ通信を行う。通信部１０７は、例えばネットワークを介して、第２情報処理装置２０からデータを受信し、第１ＲＯＭ１１５などに記憶する。
【００３５】
なお、第１情報処理装置１０、及び第２情報処理装置２０のハードウェアは、第３情報処理装置５０と同様であるため、その説明を省略する。第１情報処理装置１０や、第２情報処理装置２０は、シングルプロセッサでもよく、また、入力部や表示部を有していてもよい。
【００３６】
＜機能構成＞
次に、各装置の機能につい説明する。図３は、実施例における各装置の機能の一例を示すブロック図である。なお、以降では、秘匿するデータの一例として、制御機器３０を動作させるためのプログラムデータを例に挙げて説明する。
【００３７】
図３に示す例では、第１情報処理装置１０は、コンパイル手段１５１と、暗号化手段１５３とを有する。第２情報処理装置２０は、書き込み手段１７１を有する。制御機器３０は、第１判定手段２０１と、第１復号手段２０３と、第１記憶手段２０５と、第２判定手段２０７と、第２復号手段２０９と、第２記憶手段２１１とを有する。以下、各装置の機能について順番に説明する。
【００３８】
《第１情報処理装置１０》
コンパイル手段１５１は、制御機器３０を動作させるためのプログラムをコンパイルし、例えばＨＥＸファイルを生成する。
【００３９】
暗号化手段１５３は、ＨＥＸファイルに対し、所定の暗号化を行う。暗号化は、例えばＡＥＳ（Advanced Encryption Standard）が用いられる。所定の暗号化については、設定手段１５５により設定された暗号化レベルを示すパターン（レベルパターン）に基づいて、シングル又は多重的に行われる。このパターンは、どのタイミングで復号処理が必要か否かを示すパターンでもある。
【００４０】
設定手段１５５は、暗号化レベルの設定が可能である。設定手段１５５は、ユーザに設定されたレベルパターンを保持する。なお、レベルパターンは、予め複数のパターンが用意されている。
【００４１】
図４は、レベルパターンテーブル（その１）の一例を示す図である。図４に示す例では、レベルパターンは、０〜７の８個を有し、３ビットを用いてどのタイミングで復号処理が必要となるかを表している。
【００４２】
３ビットのうち、０ビット目が、ローダ（例えば第２情報処理装置２０）での復号処理の要否を示す。また、１ビット目が、フラッシュメモリ（例えば第１記憶手段２０５）にストアする前での復号処理の要否を示す。また、２ビット目が、フラッシュメモリからプログラムデータを読み込み、ＲＡＭ（例えば第２記憶手段２１１）へ転送する前での復号処理の要否を示す。
【００４３】
例えば、パターン１では、ローダで復号処理を行うだけで、プログラムデータは平文に戻る。パターン３では、ローダで復号処理を行い、さらに、フラッシュメモリへの書き込み前にも２重に復号処理が行われる。パターン７では、ローダで復号処理を行い、さらに、フラッシュメモリへの書き込み前にも復号処理が行われ、さらに、フラッシュメモリからプログラムを読み込み、ＲＡＭへの転送（書き込み）前に３重に復号処理が行われる。
【００４４】
暗号化手段１５３は、設定手段１５５で設定されたパターンに従って、プログラムデータに対し、シングル又は多重的に鍵を用いて暗号化する。また、暗号化手段１５３は、利用したパターンを示すパターン情報を暗号化データに付加する。
【００４５】
暗号化に用いる鍵は、各暗号化で同じ鍵を用いてもよいし、異なる鍵を用いてもよい。セキュリティを考慮すると、異なる鍵を用いる方がよいため、以下では異なる鍵を用いる例について説明する。
【００４６】
また、多重的に暗号化が行われる場合は、全て同じ暗号化アルゴリズムが用いられてもよいし、異なる暗号化アルゴリズムが用いられてもよい。暗号化手段１５３は、パターンを示すビット列において少なくとも「１」が２つある場合は、多重暗号化を行う。暗号化手段１５３は、多重的に暗号化する場合、暗号化したプログラムデータをさらに暗号化して多重暗号化を行う。
【００４７】
暗号化手段１５３は、暗号化されたプログラムデータを第２情報処理装置２０に送信する。図５は、暗号化データのデータ構造（その１）の一例を示す図である。図５に示す例では、暗号化データは、付加部に含まれる管理情報と、データ部に含まれるデータとを含む。データは、暗号化されたプログラムデータ、又は多重暗号化の場合は多重で暗号化されたプログラムデータ（管理情報を含む暗号化データでもよい）である。管理情報は、パターン情報を含む。図５に示す例では、管理情報は、ヘッダ部分に付加されているが、フッタ部分に付加されてもよいし、データの途中の予め決められた位置に付加されてもよい。
【００４８】
なお、コンパイル手段１５１、暗号化手段１５３は、例えば第１情報処理装置１０のプロセッサにより暗号化プログラムが実行されることで機能する。
【００４９】
これにより、第１情報処理装置１０では、暗号化データに対する復号タイミング、シングル暗号化又は多重暗号化を含む暗号化レベルを適宜選択することができるようになる。
【００５０】
例えば、プログラムデータの暗号化処理を実行する場合には、設定されたレベルパターンを基にして暗号化し、さらにそのレベルパターンの組み合せによってシングル暗号化又は多重暗号化の対応レベルを選択することができる。暗号化処理を実行する場合に、暗号化したプログラムデータには、復号処理を実行するタイミングを示すビット情報（パターン情報）が含まれるようにする。
【００５１】
《第２情報処理装置２０》
次に、第２情報処理装置２０の機能について説明する。図３に戻り、書き込み手段１７１は、ローダとして機能する手段である。書き込み手段１７１は、例えば制御装置３０とは異なる外部に存在する手段である。書き込み手段１７１は、第１情報処理装置１０から取得した暗号化データを、必要に応じて復号処理を行い、制御機器３０に書き込む。そのため、書き込み手段１７１は、判定手段１７３と、復号手段１７５とを有する。
【００５２】
判定手段１７３は、取得された暗号化データに付加されたパターン情報が示すパターン（レベルパターン）に基づいて、復号処理の要否を判定する。判定手段１７３は、例えばパターンの０ビット目を参照し、０ビット目が「１」であれば復号処理が必要と判定し、０ビット目が「０」であれば復号処理が不要と判定する。判定手段１７３は、判定結果を復号手段１７５に通知する。
【００５３】
復号手段１７５は、判定手段１７３により復号処理が必要と判定された場合、鍵１を用いて復号処理を行う。また、復号手段１７５は、判定手段１７３により復号処理が不要と判定された場合、何もしない。
【００５４】
よって、書き込み手段１７１は、パターンに基づいて復号処理が必要と判定された場合は暗号化データに復号処理が行われたデータを、又はパターンに基づいて復号処理が不要と判定された場合は暗号化データを制御機器３０に書き込むために送信する。
【００５５】
なお、書き込み手段１７１は、例えば第２情報処理装置２０のプロセッサにより書き込みプログラムが実行されることで機能する。
【００５６】
これにより、第２情報処理装置２０は、暗号化レベルを示すパターンに基づいて、自身で復号処理をするかしないかを判定し、必要であれば復号処理を行ったデータを制御機器３０に書き込むことができる。
【００５７】
《制御機器３０》
次に、制御機器３０の機能について説明する。第１判定手段２０１、第１復号手段２０３は、例えば第１演算部１１１により実現され、第１記憶手段２０５は、例えば第１ＲＯＭ１１５により実現される。また、第２判定手段２０７、第２復号手段２０９は、例えば第１演算部１１１により実現され、第２記憶手段２１１は、例えば第２ＲＡＭ１３３により実現される。また、各復号処理は、例えばファームウェアとして制御機器３０に実装されたプログラムにより実行される。
【００５８】
第１判定手段２０１は、書き込み手段１７１からデータを取得し、データに付加されたパターン情報が示すパターンに基づいて、復号処理の要否を判定する。第１判定手段２０１は、例えばパターンの１ビット目が「１」であれば復号処理が必要と判定し、１ビット目が「０」であれば復号処理が不要と判定する。第１判定手段２０１は、復号処理が不要と判定した場合、書き込み手段１７１から取得したデータを第１記憶手段２０５に書き込む。第１判定手段２０１は、判定結果を第１復号手段２０３に通知する。
【００５９】
第１復号手段２０３は、第１判定手段２０１により復号処理が必要と判定された場合、書き込み手段１７１から取得したデータに対し、復号処理を行う。第１復号手段２０３は、復号したデータを第１記憶手段２０５に書き込む。第１復号手段２０３は、第１判定手段２０１により復号処理が不要と判定された場合、書き込み手段１７１から取得されたデータに対し、何もしない。
【００６０】
第１記憶手段２０５は、第１復号手段２０３により復号されたデータ、又は第１判定手段２０１により復号処理が不要と判定された、書き込み手段１７１から取得したデータを記憶する。第１記憶手段２０５内の記憶領域のうち、第１プロセッサ１０１で必要となるデータの記憶領域を領域Ａとし、第２プロセッサ１０３で必要となるデータの記憶領域を領域Ｂとする。
【００６１】
第１記憶手段２０５には、データの種類に応じて領域Ａか領域Ｂかに記憶される。例えば、第１復号手段２０３により復号された平文のプログラムデータが第１プロセッサ１０１により実行される場合は、このプログラムデータは領域Ａに記憶される。また、例えば第１判定手段２０１により直接記憶されたプログラムデータが第２プロセッサ１０３により実行される場合は、このプログラムデータは領域Ｂに記憶される。
【００６２】
第２判定手段２０７は、第１記憶手段２０５の領域Ｂからデータを読み出し、データに付加されたパターン情報が示すパターンに基づいて、復号処理の要否を判定する。第２判定手段２０７は、例えばパターンの２ビット目が「１」であれば復号処理が必要と判定し、２ビット目が「０」であれば復号処理が不要と判定する。第２判定手段２０７は、復号処理が不要と判定した場合、第１記憶手段２０５から取得したデータを第２記憶手段２１１に書き込む。第２判定手段２０７は、判定結果を第２復号手段２０９に通知する。
【００６３】
第２復号手段２０９は、第２判定手段２０７により復号処理が必要と判定された場合、第１記憶手段２０５から読み出されたデータに対し、復号処理を行う。第２復号手段２０９は、復号したデータを第２記憶手段２１１に書き込む。第２復号手段２０９は、第２判定手段２０７により復号処理が不要と判定された場合、第１記憶手段２０５から読み出されたデータに対し、何もしない。
【００６４】
第２記憶手段２１１は、第２復号手段２０９により復号されたデータ、又は第２判定手段２０７により復号処理が不要と判定された、第１記憶手段２０５から読み出されたデータを記憶する。第２記憶手段２１１内の記憶領域のうち、第２プロセッサ１０３で必要となるデータの記憶領域を領域Ｃとする。領域Ｃには、第２プロセッサ１０３がデータを判読可能なように平文であるデータが記憶される。
【００６５】
例えば、制御機器３０を含む第３情報処理装置５０の電源がＯＮになったときに、第１プロセッサ１０１は、第１記憶手段２０５（例えば第１ＲＯＭ１１５）の領域Ｂに記憶されたデータを読み出す。このデータに付加されたパターンに基づいて、第１プロセッサ１０１は、必要であれば復号処理を行って、第２記憶手段２１１（例えば第２ＲＡＭ１３３）にデータを記憶する。これにより、第２プロセッサ１０３は、第２記憶手段２１１に記憶された平文のデータを用いて動作を実行することができる。
【００６６】
＜具体例＞
次に、実施例における処理の具体例について説明する。実施例では、データはプログラムデータとし、制御機器３０には、２つのプロセッサが実装されているとする。また、第１記憶手段２０５は、例えばフラッシュメモリとする。
【００６７】
図６は、具体例（その１）を説明する図である。図６に示す例では、プログラムデータＡ（プログラムＡ）は、第１プロセッサ１０１により実行され、プログラムデータＢ（プログラムＢ）は、第２プロセッサ１０３により実行されるとする。
【００６８】
まず、プログラムＡ及びプログラムＢは、コンパイルされ、平文のプログラムデータとなる。平文のプログラムデータは、例えばxxxxx.exeという名称のプログラムファイルとする。平文のプログラムデータとなったプログラムＡ及びプログラムＢは、暗号化ツール（暗号化手段１５３）により、暗号化処理が実行される。
【００６９】
このとき、プログラムＡ、プログラムＢそれぞれに設定された暗号化レベルのパターンに従って暗号化処理が行われる。例えば、プログラムＡには、パターン３が設定され、プログラムＢには、パターン５が設定されているとする。パターンについては図４を参照されたい。
【００７０】
暗号化ツールは、対応するパターンの鍵を用いてそれぞれのプログラムデータを暗号化する。この暗号化には多重暗号化も含まれる。例えば、暗号化ツールは、プログラムＡについては、鍵２を用いて暗号化した後に、鍵１を用いてさらに暗号化を行う。
【００７１】
また、暗号化ツールでは、暗号化に用いたパターンＸを管理情報として暗号化ファイルに付加する。管理情報は、パターンＸを示すビット列（図６に示す例では３ビット）である。
【００７２】
ここで、パターンが示す復号タイミングについて３つのタイミングを例に挙げて説明する。
（１）ローダで復号
（２）フラッシュストア前（フラッシュメモリに書き込む前）
（３）プログラムロード前（電源ＯＮ時にＲＡＭにプログラムがロードされる前）
ローダ（書き込み手段１７１）は、暗号化ツールにより暗号化された暗号化ファイルを取得する。図６に示すように暗号化ファイルには管理情報が含まれる。ローダは、管理情報を参照し、０ビット目が「１」の場合は、鍵１を用いて復号用ＤＬＬ（ダイナミックリンクライブラリ）により復号処理を行う。ここで、プログラムＡ及びプログラムＢの管理情報はともに０ビット目が「１」であるため、ローダで復号処理が行われる。
【００７３】
ローダは、復号処理を行ったプログラムＡ及びプログラムＢのそれぞれのデータを、通信を行うことで制御機器３０のフラッシュメモリに書き込む。
【００７４】
制御機器３０の第１演算部１１１（第１判定手段２０１）は、ローダから取得されたプログラムデータに付加されるパターンに基づいて、復号処理の要否を判定する。図６に示す例では、プログラムＡのパターンの１ビット目が「１」であり、プログラムＢのパターンの１ビット目が「０」である。
【００７５】
よって、第１演算部１１１（第１復号手段２０３）は、プログラムＡのデータに対してのみ、鍵２を用いて２重に復号処理を行う。これにより、プログラムＡは、第１プロセッサ１０１で実行されるプログラムであるため、平文でフラッシュメモリ（例えば第１記憶手段２０５）に記憶される。
【００７６】
第１演算部１１１は、プログラムＢのデータを、暗号文のままフラッシュメモリに記憶する。
【００７７】
次に、電源が投入され電源ＯＮになったときに、第１演算部１１１（第２判定手段２０７）は、フラッシュメモリからプログラムＢのデータを読み出し、プログラムＢのデータに付加されたパターンに基づいて、復号処理の要否を判定する。プログラムＢのパターンの２ビット目は「１」であるため、復号処理が行われる。
【００７８】
第１演算部１１１（第２復号手段２０９）は、プログラムＢのデータに対して、鍵３を用いて２重に復号処理を行う。これにより、プログラムＢは、第２プロセッサ１０３で実行されるプログラムであるため、平文でＲＡＭ（第２記憶手段２１１）に記憶される。よって、第２プロセッサ１０３は、ＲＡＭに記憶された平文のプログラムＢを判読して実行することができるようになる。
【００７９】
次に、具体例（その２）について説明する。図７は、具体例（その２）を説明する図である。図７に示す例では、プログラムデータＣ（プログラムＣ）は、第１プロセッサ１０１により実行され、プログラムデータＤ（プログラムＤ）は、第２プロセッサ１０３により実行されるとする。
【００８０】
図７に示す例では、暗号化ツールにおいて、プログラムＣ、プログラムＤそれぞれに設定された暗号化レベルのパターンに従って暗号化処理が行われる。例えば、プログラムＣには、パターン１が設定され、プログラムＤには、パターン７が設定されているとする。パターンについては図４を参照されたい。
【００８１】
暗号化ツール（暗号化手段１５３）は、対応するパターンの鍵を用いてそれぞれのプログラムデータを暗号化する。この暗号化には多重暗号化も含まれる。例えば、暗号化ツールは、プログラムＤについては、鍵３を用いて暗号化した後に、鍵２を用いてさらに暗号化し、さらに、鍵１を用いて３重に暗号化を行う。
【００８２】
また、暗号化ツールは、暗号化に用いたパターンＸを管理情報として暗号化ファイルに付加する。管理情報は、パターンＸを示すビット列（図７に示す例では３ビット）である。
【００８３】
ローダ（書き込み手段１７１）は、暗号化ツールにより暗号化された暗号化ファイルを取得する。図７に示すように暗号化ファイルには管理情報が含まれる。ローダは、管理情報を参照し、０ビット目が「１」の場合は、鍵１を用いて復号用ＤＬＬ（ダイナミックリンクライブラリ）により復号処理を行う。ここで、プログラムＣ及びプログラムＤの管理情報はともに０ビット目が「１」であるため、ローダで復号処理が行われる。
【００８４】
ローダは、復号処理を行ったプログラムＣ及びプログラムＤのそれぞれのデータを、通信を行うことで制御機器３０のフラッシュメモリに書き込む。
【００８５】
制御機器３０の第１演算部１１１（第１判定手段２０１）は、ローダから取得されたプログラムデータに付加されるパターンに基づいて、復号処理の要否を判定する。図７に示す例では、プログラムＤのパターンの１ビット目が「１」であり、プログラムＣのパターンの１ビット目が「０」である。
【００８６】
よって、第１演算部１１１（第１復号手段２０３）は、プログラムＤのデータに対してのみ、鍵２を用いて２重に復号処理を行う。第１演算部１１１は、プログラムＣの平文のデータを、フラッシュメモリに記憶する。
【００８７】
次に、電源が投入され、電源ＯＮになったときに、第１演算部１１１（第２判定手段２０７）は、フラッシュメモリからプログラムＤのデータを読み出し、プログラムＤのデータに付加されたパターンに基づいて、復号処理の要否を判定する。プログラムＤのパターンの２ビット目は「１」であるため、復号処理が行われる。
【００８８】
第１演算部１１１（第２復号手段２０９）は、プログラムＤのデータに対して、鍵３を用いて３重に復号処理を行う。これにより、プログラムＤは、第２プロセッサ１０３で実行されるプログラムであるため、平文でＲＡＭ（第２記憶手段２１１）に記憶される。よって、第２プロセッサ１０３は、ＲＡＭに記憶された平文のプログラムＤを判読して実行することができるようになる。
【００８９】
以上の機能、構成を有する制御システム１は、暗号化したデータを判読可能にするために、復号処理を実行するタイミングを示したビット情報を、暗号化したデータと共に設定する。これにより、制御システム１は、復号処理を実行するタイミングを選択し、さらにビット情報の組み合せによって、シングル暗号化又は多重暗号化の対応レベルを選択することができる。
【００９０】
＜動作＞
次に、実施例における制御システム１の動作について説明する。図８は、実施例における格納処理（その１）の一例を示すフローチャートである。格納処理（その１）は、ローダ（第２情報処理装置２０）で行われる処理である。なお、データをメモリへ記憶する処理を格納処理とも称す。
【００９１】
ステップＳ１０１で、第２情報処理装置２０は、暗号化手段１５３により暗号化されたデータを受信する。暗号化されたデータには、管理情報が付加されている。
【００９２】
ステップＳ１０２で、判定手段１７３は、暗号化データに付加されたレベルパターンを取得する。
【００９３】
ステップＳ１０３で、判定手段１７３は、復号処理の要否判定を行う。つまり、判定手段１７３は、レベルパターンの０ビット目が「１」であるか否かを判定する。０ビット目が「１」であれば（ステップＳ１０３−ＹＥＳ）ステップＳ１０４に進み、０ビット目が「０」であれば（ステップＳ１０３−ＮＯ）ステップＳ１０５に進む。
【００９４】
ステップＳ１０４で、復号手段１７５は、暗号化されたデータに対し、鍵１を用いて復号処理を行う。
【００９５】
ステップＳ１０５で、書き込み手段１７１は、レベルパターンに基づいて復号処理が必要と判定された場合は復号処理が行われたデータを、又はレベルパターンに基づいて復号処理が不要と判定された場合は暗号化データを制御機器３０に書き込むために、復号処理が行われたデータ又は暗号化データを制御機器３０に送信する。
【００９６】
図９は、実施例における格納処理（その２）の一例を示すフローチャートである。図９に示す格納処理（その２）は、第１演算部１１１により、第１ＲＯＭ１１５（第１記憶手段２０５、フラッシュメモリ）にデータが書き込まれる前に行われる処理である。
【００９７】
ステップＳ２０１で、制御機器３０は、ローダとの通信により、データを受信する。ステップＳ２０２で、第１判定手段２０１は、取得されたデータに付加されたレベルパターンを取得する。
【００９８】
ステップＳ２０３で、第１判定手段２０１は、復号処理の要否判定を行う。つまり、第１判定手段２０１は、レベルパターンの１ビット目が「１」であるか否かを判定する。１ビット目が「１」であれば（ステップＳ２０３−ＹＥＳ）ステップＳ２０４に進み、１ビット目が「０」であれば（ステップＳ２０３−ＮＯ）ステップＳ２０６に進む。
【００９９】
ステップＳ２０４で、第１復号手段２０３は、ローダから取得されたデータに対し、鍵２を用いて復号処理を行う。
【０１００】
ステップＳ２０５で、第１復号手段２０３は、復号したデータをフラッシュメモリ（第１記憶手段２０５）に記憶する。
【０１０１】
ステップＳ２０６で、第１判定手段２０１は、受信されたデータをそのままフラッシュメモリに記憶する。
【０１０２】
図１０は、実施例における格納処理（その３）の一例を示すフローチャートである。図１０に示す格納処理（その３）は、第１演算部１１１により、第２ＲＡＭ１３３（第２記憶手段２１１）にデータが書き込まれる前に行われる処理である。
【０１０３】
ステップＳ３０１で、第１演算部１１１は、電源がＯＮになったときに、第２演算部１３１での処理が行われるための初期化処理を行う。
【０１０４】
ステップＳ３０２で、第２判定手段２０７は、フラッシュメモリからデータを読み出し、このデータに付加されたレベルパターンを取得する。
【０１０５】
ステップＳ３０３で、第２判定手段２０７は、復号処理の要否判定を行う。つまり、第２判定手段２０７は、レベルパターンの２ビット目が「１」であるか否かを判定する。２ビット目が「１」であれば（ステップＳ３０３−ＹＥＳ）ステップＳ３０４に進み、２ビット目が「０」であれば（ステップＳ３０３−ＮＯ）ステップＳ３０８に進む。
【０１０６】
ステップＳ３０４で、第２復号手段２０９は、フラッシュメモリからデータの一部を読み出す。第２復号手段２０９は、例えばプログラムデータはデータ量が多いので図１０に示すように分割してデータを読み出すようにしてもよい。なお、第２復号手段２０９は、読み出す対象のデータのデータ量が小さい場合には、一度に全てのデータを読み出すようにしてもよい。
【０１０７】
ステップＳ３０５で、第２復号手段２０９は、読み出したデータに対し、鍵３を用いて復号処理を行う。
【０１０８】
ステップＳ３０６で、第２復号手段２０９は、復号したデータを第２記憶手段２１１（第２プロセッサ１０３の第２ＲＡＭ１３３）に転送する（書き込む）処理を行う。
【０１０９】
ステップＳ３０７で、第２復号手段２０９は、読み出したデータがデータの最後か否かを判定する。データの最後であれば（ステップＳ３０７−ＹＥＳ）処理を終了し、データの最後でなければ（ステップＳ３０７−ＮＯ）ステップＳ３０４に戻る。
【０１１０】
ステップＳ３０８で、第２判定手段２０７は、読み出したデータを第２記憶手段２１１に転送する処理を行う。
【０１１１】
以上、実施例による制御システム１は、システム構成に応じてセキュリティの強度が選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得することができる。また、一般的に、多重暗号化を実施すると、重複して復号処理を実行するため、復号処理に時間がかかる。そこで、制御システム１では、レベルパターンを固定にするのではなく、システム構成によってセキュリティの強度を柔軟に選択することによって、性能面を重視したい場合には、シングル暗号化を選択し、セキュリティを強化したい場合には、多重暗号化を選択することができる。
【０１１２】
［変形例］
次に、上記実施例の変形例について説明する。
【０１１３】
（変形例１）
まず、変形例１は、制御機器３０に１つのプロセッサしか実装してない場合である。この変形例１のレベルパターンは、図１１に示す通りである。
【０１１４】
図１１は、レベルパターンテーブル（その２）の一例を示す図である。図１１に示すように、制御機器３０には１つのプロセッサしかないので、復号処理を行うタイミングは、（１）ローダと、（２）フラッシュメモリへの書き込み前の２つである。よって、レベルパターンは、２ビットで表すことができる。
【０１１５】
次に、変形例１における具体例について説明する。図１２は、具体例（その３）を説明する図である。図１２に示す例では、プログラムデータＥ（プログラムＥ）は、第１プロセッサ１０１により実行されるとする。
【０１１６】
図１２に示す例では、暗号化ツールにおいて、プログラムＥに設定された暗号化レベルのパターンに従って暗号化処理が行われる。例えば、プログラムＥには、パターン３が設定されているとする。パターンについては図１１を参照されたい。
【０１１７】
暗号化ツール（暗号化手段１５３）は、対応するパターンの鍵を用いてそれぞれのプログラムデータを暗号化する。この暗号化には多重暗号化も含まれる。例えば、暗号化ツールは、プログラムＥについては、鍵２を用いて暗号化した後に、鍵１を用いてさらに暗号化する。
【０１１８】
また、暗号化ツールは、暗号化に用いたパターンＸを管理情報として暗号化ファイルに付加する。管理情報は、パターンＸを示すビット列（図１２に示す例では２ビット）である。
【０１１９】
ローダ（書き込み手段１７１）は、暗号化ツールにより暗号化された暗号化ファイルを取得する。図１２に示すように暗号化ファイルには管理情報が含まれる。ローダは、管理情報を参照し、０ビット目が「１」の場合は、鍵１を用いて復号用ＤＬＬ（ダイナミックリンクライブラリ）により復号処理を行う。ここで、プログラムＥの管理情報は０ビット目が「１」であるため、ローダで復号処理が行われる。
【０１２０】
ローダは、復号処理を行ったプログラムＥのデータを、通信を行うことで制御機器３０のフラッシュメモリに書き込む。
【０１２１】
制御機器３０の第１演算部１１１（第１判定手段２０１）は、ローダから取得されたプログラムデータに付加されるパターンに基づいて、復号処理の要否を判定する。図１２に示す例では、プログラムＥのパターンの１ビット目が「１」である。
【０１２２】
よって、第１演算部１１１（第１復号手段２０３）は、プログラムＥのデータに対して、鍵２を用いて復号処理を行う。第１演算部１１１は、プログラムＥの平文のデータを、フラッシュメモリに記憶する。
【０１２３】
以上のように、制御機器３０内にプロセッサが１つしか実装されていない場合でも、制御システム１では、システム構成に応じてセキュリティの強度が選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得することができる。
【０１２４】
また、制御機器３０内に３つ以上のプロセッサを実装し、レベルパターンの数を増加することで、実施例と同様の効果を得るようにしてもよい。
【０１２５】
（変形例２）
次に、変形例２について説明する。変形例２では、管理情報に鍵生成情報を含める。各復号手段では、鍵生成情報に基づいて鍵を生成し、生成した鍵を用いて復号処理を行うことができる。鍵生成情報は、例えば３２ビットのビット列であり、鍵生成アルゴリズムは、例えばＡＥＳで定められたアルゴリズムを用いればよい。
【０１２６】
図１３は、暗号化データのデータ構造（その２）の一例を示す図である。図１３に示すように、暗号化データに、鍵生成情報が付加される。図１３に示す例では、鍵生成情報は、管理情報に含められる。あるいは、鍵２の鍵生成情報は、鍵１により暗号化されて、鍵３の鍵生成情報は、鍵１や鍵２により暗号化されてデータ部のデータに含められてもよい。
【０１２７】
これにより、変形例２では、暗号化、復号に用いる鍵を変更することができ、セキュリティの向上を図ることができる。
【０１２８】
（変形例３）
次に、変形例３について説明する。変形例３では、秘匿対象のデータとして、制御機器３０で実行されるプログラムデータ以外にも、制御機器３０で実行されるプログラムで用いる重要なパラメータなどでもよい。この場合、コンパイル手段１５１は必要ない。
【０１２９】
なお、前述した実施例や変形例で説明した制御処理を実現するためのプログラムを記録媒体に記録することで、実施例や変形例での制御処理をコンピュータに実施させることができる。例えば、このプログラムを記録媒体に記録し、このプログラムが記録された記録媒体をコンピュータに読み取らせて、前述した制御処理を実現させることも可能である。
【０１３０】
なお、記録媒体は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。この記録媒体には、搬送波は含まれない。
【０１３１】
以上、実施例や変形例について詳述したが、特定の実施例や変形例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例や変形例の構成要素を全部又は複数を組み合わせることも可能である。
【符号の説明】
【０１３２】
１０  第１情報処理装置
２０  第２情報処理装置
３０  制御機器
５０  第３情報処理装置
１０１  第１プロセッサ
１０３  第２プロセッサ
１１１  第１演算部
１１３  第１ＲＡＭ
１１５  第１ＲＯＭ
１３１  第２演算部
１３３  第２ＲＡＭ
１５３  暗号化手段
１７１  書き込み手段
２０１  第１判定手段
２０３  第１復号手段
２０５  第１記憶手段
２０７  第２判定手段
２０９  第２復号手段
２１１  第２記憶手段
【図１】
2014060618.tif 000003
【図２】
2014060618.tif 000004
【図３】
2014060618.tif 000005
【図４】
2014060618.tif 000006
【図５】
2014060618.tif 000007
【図６】
2014060618.tif 000008
【図７】
2014060618.tif 000009
【図８】
2014060618.tif 000010
【図９】
2014060618.tif 000011
【図１０】
2014060618.tif 000012
【図１１】
2014060618.tif 000013
【図１２】
2014060618.tif 000014
【図１３】
2014060618.tif 000015