(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、システム構成に応じてセキュリティの強度が柔軟に選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得する実施例について、添付図面を参照しながら説明する。
【0015】
[実施例]
<システム構成>
図1は、実施例におけるシステム構成の一例を示す図である。
図1に示す制御システム1は、開発環境で用いられる第1情報処理装置10と、ローダとしても機能する第2情報処理装置20と、ファームウェアを有する制御機器30とを備える。各装置(制御機器30も含む)は、有線又は無線によりデータ通信可能となっている。
【0016】
第1情報処理装置10は、暗号化ツールを有しており、データに対して所定の暗号化を行う。所定の暗号化は、シングル暗号化、多重暗号化双方を行うことが可能である。所定の暗号化は、どの暗号化を行うかを示すパターンにより決定される。このパターンは、どのタイミングで復号処理が必要か否かを示すパターンでもあり、レベルパターンとも称される。
【0017】
第1情報処理装置10は、暗号化されたデータに対し、レベルパターンを管理情報として付加する。付加する位置は、暗号化データのヘッダ、フッタ、又は予め決められた位置のいずれでもよい。第1情報処理装置10は、レベルパターンが付加された暗号化データを第2情報処理装置20に送信する。
【0018】
第2情報処理装置20は、レベルパターンが付加された暗号化データを取得し、レベルパターンに基づいて、制御機器30への書き込み前に、暗号化データの復号処理の要否を判定する。
【0019】
第2情報処理装置20は、暗号化データの復号処理が必要であれば復号処理を行う。また、第2情報処理装置20は、復号化されたデータ、又は復号処理が不要と判定された場合の暗号化データをローダとしての機能を用いて、制御機器30のメモリ(記憶部)に書き込むよう通信を行う。ローダは、データ書き込み用のソフトウェアである。
【0020】
制御機器30は、第2情報処理装置20からデータを受信し、メモリに書き込む前に、復号処理が必要か否かを判定する。制御機器30は、自身が有するプロセッサにより、データに付加されたレベルパターンに基づいて復号処理の要否を判定する。
【0021】
制御機器30は、復号処理が必要であれば、受信されたデータに対して復号処理を行い、復号後のデータをメモリに書き込む。また、制御機器30は、復号処理が不要であれば、受信されたデータをそのままメモリに書き込む。
【0022】
なお、制御機器30は、マルチプロセッサを有する場合もある。この場合、他のプロセッサを動作するのに必要なデータに対して、一方のプロセッサが、レベルパターンに基づいて復号処理の要否を判定する。復号処理が必要であれば、一方のプロセッサが復号処理を行って、他のプロセッサが読み出すメモリに復号後のデータを書き込む。復号処理が不要であれば、一方のプロセッサは復号処理を行わずに、他のプロセッサが読み出すメモリに、他のプロセッサに必要なデータを書き込む。
【0023】
<ハードウェア構成>
次に、制御機器30が組み込まれた情報処理装置について説明する。
図2は、実施例における制御機器30が組み込まれた第3情報処理装置50のハードウェアの一例を示すブロック図である。
図2に示す例では、第3情報処理装置50は、制御機器30と、ドライブ装置105と、通信部107とを有する。各構成は、バスを介してそれぞれデータ通信可能なように接続されている。
【0024】
制御機器30は、第1プロセッサ101と、第2プロセッサ103とを有する。制御機器30は、プロセッサを1つだけ有してもよいし、3つ以上有してもよい。制御機器30は、例えば、制御基板やマザーボードである。
【0025】
第1プロセッサ101は、第1演算部111と、第1RAM(Random Access Memory)113と、第1ROM(Read Only Memory)115とを有する。なお、第1RAM113、第1ROM115のいずれか、又は両方は、第1プロセッサ101に内蔵されていなくてもよい。
【0026】
第1演算部111は、例えば、第1RAM113又は第1ROM115に記憶された所定のプログラムを実行し、第3情報処理装置50の所定の処理を実行する。また、第1演算部111は、第1ROM115に書き込まれる前のデータに対し、復号処理が必要か否かを判定し、必要であれば復号処理を実行する。
【0027】
第1RAM113は、例えば、第1演算部111で処理されたデータやロードされたプログラムデータなどを記憶する。
【0028】
第1ROM115は、例えば、第2情報処理装置20から書き込まれたデータを記憶する。このデータが第1ROM115に書き込まれる際、第1演算部111により、復号処理が必要であれば復号処理が行われる。
【0029】
第2プロセッサ103は、第2演算部131と、第2RAM133とを有する。なお、第2RAM133は、第2プロセッサ103に内蔵されていなくてもよい。
【0030】
第2演算部131は、例えば、第2RAM133に記憶された所定のプログラムを実行し、第3情報処理装置50の所定の処理を実行する。また、第1演算部111は、例えば電源ON時に、イニシャル処理として、第1ROM115から必要なデータを読み出し、このデータに対し、第2RAM133に書き込まれる前に、復号処理が必要か否かを判定し、必要であれば復号処理を実行したりする。
【0031】
第2RAM133は、例えば、電源ON時に、第1演算部111によって復号処理されたデータや、第1ROM115から読み出されたデータなどを記憶する。
【0032】
ドライブ装置105は、記録媒体109、例えばフレキシブルディスクやCD(Compact Disc)から所定のプログラムを読み出し、記憶装置にインストールする。
【0033】
また、記録媒体109に、所定のプログラムを格納し、この記録媒体109に格納されたプログラムは、ドライブ装置105を介して処理装置にインストールされる。インストールされた所定のプログラムは、第3情報処理装置50により実行可能となる。
【0034】
通信部107は、有線又は無線で周辺機器とデータ通信を行う。通信部107は、例えばネットワークを介して、第2情報処理装置20からデータを受信し、第1ROM115などに記憶する。
【0035】
なお、第1情報処理装置10、及び第2情報処理装置20のハードウェアは、第3情報処理装置50と同様であるため、その説明を省略する。第1情報処理装置10や、第2情報処理装置20は、シングルプロセッサでもよく、また、入力部や表示部を有していてもよい。
【0036】
<機能構成>
次に、各装置の機能につい説明する。
図3は、実施例における各装置の機能の一例を示すブロック図である。なお、以降では、秘匿するデータの一例として、制御機器30を動作させるためのプログラムデータを例に挙げて説明する。
【0037】
図3に示す例では、第1情報処理装置10は、コンパイル手段151と、暗号化手段153とを有する。第2情報処理装置20は、書き込み手段171を有する。制御機器30は、第1判定手段201と、第1復号手段203と、第1記憶手段205と、第2判定手段207と、第2復号手段209と、第2記憶手段211とを有する。以下、各装置の機能について順番に説明する。
【0038】
《第1情報処理装置10》
コンパイル手段151は、制御機器30を動作させるためのプログラムをコンパイルし、例えばHEXファイルを生成する。
【0039】
暗号化手段153は、HEXファイルに対し、所定の暗号化を行う。暗号化は、例えばAES(Advanced Encryption Standard)が用いられる。所定の暗号化については、設定手段155により設定された暗号化レベルを示すパターン(レベルパターン)に基づいて、シングル又は多重的に行われる。このパターンは、どのタイミングで復号処理が必要か否かを示すパターンでもある。
【0040】
設定手段155は、暗号化レベルの設定が可能である。設定手段155は、ユーザに設定されたレベルパターンを保持する。なお、レベルパターンは、予め複数のパターンが用意されている。
【0041】
図4は、レベルパターンテーブル(その1)の一例を示す図である。
図4に示す例では、レベルパターンは、0〜7の8個を有し、3ビットを用いてどのタイミングで復号処理が必要となるかを表している。
【0042】
3ビットのうち、0ビット目が、ローダ(例えば第2情報処理装置20)での復号処理の要否を示す。また、1ビット目が、フラッシュメモリ(例えば第1記憶手段205)にストアする前での復号処理の要否を示す。また、2ビット目が、フラッシュメモリからプログラムデータを読み込み、RAM(例えば第2記憶手段211)へ転送する前での復号処理の要否を示す。
【0043】
例えば、パターン1では、ローダで復号処理を行うだけで、プログラムデータは平文に戻る。パターン3では、ローダで復号処理を行い、さらに、フラッシュメモリへの書き込み前にも2重に復号処理が行われる。パターン7では、ローダで復号処理を行い、さらに、フラッシュメモリへの書き込み前にも復号処理が行われ、さらに、フラッシュメモリからプログラムを読み込み、RAMへの転送(書き込み)前に3重に復号処理が行われる。
【0044】
暗号化手段153は、設定手段155で設定されたパターンに従って、プログラムデータに対し、シングル又は多重的に鍵を用いて暗号化する。また、暗号化手段153は、利用したパターンを示すパターン情報を暗号化データに付加する。
【0045】
暗号化に用いる鍵は、各暗号化で同じ鍵を用いてもよいし、異なる鍵を用いてもよい。セキュリティを考慮すると、異なる鍵を用いる方がよいため、以下では異なる鍵を用いる例について説明する。
【0046】
また、多重的に暗号化が行われる場合は、全て同じ暗号化アルゴリズムが用いられてもよいし、異なる暗号化アルゴリズムが用いられてもよい。暗号化手段153は、パターンを示すビット列において少なくとも「1」が2つある場合は、多重暗号化を行う。暗号化手段153は、多重的に暗号化する場合、暗号化したプログラムデータをさらに暗号化して多重暗号化を行う。
【0047】
暗号化手段153は、暗号化されたプログラムデータを第2情報処理装置20に送信する。
図5は、暗号化データのデータ構造(その1)の一例を示す図である。
図5に示す例では、暗号化データは、付加部に含まれる管理情報と、データ部に含まれるデータとを含む。データは、暗号化されたプログラムデータ、又は多重暗号化の場合は多重で暗号化されたプログラムデータ(管理情報を含む暗号化データでもよい)である。管理情報は、パターン情報を含む。
図5に示す例では、管理情報は、ヘッダ部分に付加されているが、フッタ部分に付加されてもよいし、データの途中の予め決められた位置に付加されてもよい。
【0048】
なお、コンパイル手段151、暗号化手段153は、例えば第1情報処理装置10のプロセッサにより暗号化プログラムが実行されることで機能する。
【0049】
これにより、第1情報処理装置10では、暗号化データに対する復号タイミング、シングル暗号化又は多重暗号化を含む暗号化レベルを適宜選択することができるようになる。
【0050】
例えば、プログラムデータの暗号化処理を実行する場合には、設定されたレベルパターンを基にして暗号化し、さらにそのレベルパターンの組み合せによってシングル暗号化又は多重暗号化の対応レベルを選択することができる。暗号化処理を実行する場合に、暗号化したプログラムデータには、復号処理を実行するタイミングを示すビット情報(パターン情報)が含まれるようにする。
【0051】
《第2情報処理装置20》
次に、第2情報処理装置20の機能について説明する。
図3に戻り、書き込み手段171は、ローダとして機能する手段である。書き込み手段171は、例えば制御装置30とは異なる外部に存在する手段である。書き込み手段171は、第1情報処理装置10から取得した暗号化データを、必要に応じて復号処理を行い、制御機器30に書き込む。そのため、書き込み手段171は、判定手段173と、復号手段175とを有する。
【0052】
判定手段173は、取得された暗号化データに付加されたパターン情報が示すパターン(レベルパターン)に基づいて、復号処理の要否を判定する。判定手段173は、例えばパターンの0ビット目を参照し、0ビット目が「1」であれば復号処理が必要と判定し、0ビット目が「0」であれば復号処理が不要と判定する。判定手段173は、判定結果を復号手段175に通知する。
【0053】
復号手段175は、判定手段173により復号処理が必要と判定された場合、鍵1を用いて復号処理を行う。また、復号手段175は、判定手段173により復号処理が不要と判定された場合、何もしない。
【0054】
よって、書き込み手段171は、パターンに基づいて復号処理が必要と判定された場合は暗号化データに復号処理が行われたデータを、又はパターンに基づいて復号処理が不要と判定された場合は暗号化データを制御機器30に書き込むために送信する。
【0055】
なお、書き込み手段171は、例えば第2情報処理装置20のプロセッサにより書き込みプログラムが実行されることで機能する。
【0056】
これにより、第2情報処理装置20は、暗号化レベルを示すパターンに基づいて、自身で復号処理をするかしないかを判定し、必要であれば復号処理を行ったデータを制御機器30に書き込むことができる。
【0057】
《制御機器30》
次に、制御機器30の機能について説明する。第1判定手段201、第1復号手段203は、例えば第1演算部111により実現され、第1記憶手段205は、例えば第1ROM115により実現される。また、第2判定手段207、第2復号手段209は、例えば第1演算部111により実現され、第2記憶手段211は、例えば第2RAM133により実現される。また、各復号処理は、例えばファームウェアとして制御機器30に実装されたプログラムにより実行される。
【0058】
第1判定手段201は、書き込み手段171からデータを取得し、データに付加されたパターン情報が示すパターンに基づいて、復号処理の要否を判定する。第1判定手段201は、例えばパターンの1ビット目が「1」であれば復号処理が必要と判定し、1ビット目が「0」であれば復号処理が不要と判定する。第1判定手段201は、復号処理が不要と判定した場合、書き込み手段171から取得したデータを第1記憶手段205に書き込む。第1判定手段201は、判定結果を第1復号手段203に通知する。
【0059】
第1復号手段203は、第1判定手段201により復号処理が必要と判定された場合、書き込み手段171から取得したデータに対し、復号処理を行う。第1復号手段203は、復号したデータを第1記憶手段205に書き込む。第1復号手段203は、第1判定手段201により復号処理が不要と判定された場合、書き込み手段171から取得されたデータに対し、何もしない。
【0060】
第1記憶手段205は、第1復号手段203により復号されたデータ、又は第1判定手段201により復号処理が不要と判定された、書き込み手段171から取得したデータを記憶する。第1記憶手段205内の記憶領域のうち、第1プロセッサ101で必要となるデータの記憶領域を領域Aとし、第2プロセッサ103で必要となるデータの記憶領域を領域Bとする。
【0061】
第1記憶手段205には、データの種類に応じて領域Aか領域Bかに記憶される。例えば、第1復号手段203により復号された平文のプログラムデータが第1プロセッサ101により実行される場合は、このプログラムデータは領域Aに記憶される。また、例えば第1判定手段201により直接記憶されたプログラムデータが第2プロセッサ103により実行される場合は、このプログラムデータは領域Bに記憶される。
【0062】
第2判定手段207は、第1記憶手段205の領域Bからデータを読み出し、データに付加されたパターン情報が示すパターンに基づいて、復号処理の要否を判定する。第2判定手段207は、例えばパターンの2ビット目が「1」であれば復号処理が必要と判定し、2ビット目が「0」であれば復号処理が不要と判定する。第2判定手段207は、復号処理が不要と判定した場合、第1記憶手段205から取得したデータを第2記憶手段211に書き込む。第2判定手段207は、判定結果を第2復号手段209に通知する。
【0063】
第2復号手段209は、第2判定手段207により復号処理が必要と判定された場合、第1記憶手段205から読み出されたデータに対し、復号処理を行う。第2復号手段209は、復号したデータを第2記憶手段211に書き込む。第2復号手段209は、第2判定手段207により復号処理が不要と判定された場合、第1記憶手段205から読み出されたデータに対し、何もしない。
【0064】
第2記憶手段211は、第2復号手段209により復号されたデータ、又は第2判定手段207により復号処理が不要と判定された、第1記憶手段205から読み出されたデータを記憶する。第2記憶手段211内の記憶領域のうち、第2プロセッサ103で必要となるデータの記憶領域を領域Cとする。領域Cには、第2プロセッサ103がデータを判読可能なように平文であるデータが記憶される。
【0065】
例えば、制御機器30を含む第3情報処理装置50の電源がONになったときに、第1プロセッサ101は、第1記憶手段205(例えば第1ROM115)の領域Bに記憶されたデータを読み出す。このデータに付加されたパターンに基づいて、第1プロセッサ101は、必要であれば復号処理を行って、第2記憶手段211(例えば第2RAM133)にデータを記憶する。これにより、第2プロセッサ103は、第2記憶手段211に記憶された平文のデータを用いて動作を実行することができる。
【0066】
<具体例>
次に、実施例における処理の具体例について説明する。実施例では、データはプログラムデータとし、制御機器30には、2つのプロセッサが実装されているとする。また、第1記憶手段205は、例えばフラッシュメモリとする。
【0067】
図6は、具体例(その1)を説明する図である。
図6に示す例では、プログラムデータA(プログラムA)は、第1プロセッサ101により実行され、プログラムデータB(プログラムB)は、第2プロセッサ103により実行されるとする。
【0068】
まず、プログラムA及びプログラムBは、コンパイルされ、平文のプログラムデータとなる。平文のプログラムデータは、例えばxxxxx.exeという名称のプログラムファイルとする。平文のプログラムデータとなったプログラムA及びプログラムBは、暗号化ツール(暗号化手段153)により、暗号化処理が実行される。
【0069】
このとき、プログラムA、プログラムBそれぞれに設定された暗号化レベルのパターンに従って暗号化処理が行われる。例えば、プログラムAには、パターン3が設定され、プログラムBには、パターン5が設定されているとする。パターンについては
図4を参照されたい。
【0070】
暗号化ツールは、対応するパターンの鍵を用いてそれぞれのプログラムデータを暗号化する。この暗号化には多重暗号化も含まれる。例えば、暗号化ツールは、プログラムAについては、鍵2を用いて暗号化した後に、鍵1を用いてさらに暗号化を行う。
【0071】
また、暗号化ツールでは、暗号化に用いたパターンXを管理情報として暗号化ファイルに付加する。管理情報は、パターンXを示すビット列(
図6に示す例では3ビット)である。
【0072】
ここで、パターンが示す復号タイミングについて3つのタイミングを例に挙げて説明する。
(1)ローダで復号
(2)フラッシュストア前(フラッシュメモリに書き込む前)
(3)プログラムロード前(電源ON時にRAMにプログラムがロードされる前)
ローダ(書き込み手段171)は、暗号化ツールにより暗号化された暗号化ファイルを取得する。
図6に示すように暗号化ファイルには管理情報が含まれる。ローダは、管理情報を参照し、0ビット目が「1」の場合は、鍵1を用いて復号用DLL(ダイナミックリンクライブラリ)により復号処理を行う。ここで、プログラムA及びプログラムBの管理情報はともに0ビット目が「1」であるため、ローダで復号処理が行われる。
【0073】
ローダは、復号処理を行ったプログラムA及びプログラムBのそれぞれのデータを、通信を行うことで制御機器30のフラッシュメモリに書き込む。
【0074】
制御機器30の第1演算部111(第1判定手段201)は、ローダから取得されたプログラムデータに付加されるパターンに基づいて、復号処理の要否を判定する。
図6に示す例では、プログラムAのパターンの1ビット目が「1」であり、プログラムBのパターンの1ビット目が「0」である。
【0075】
よって、第1演算部111(第1復号手段203)は、プログラムAのデータに対してのみ、鍵2を用いて2重に復号処理を行う。これにより、プログラムAは、第1プロセッサ101で実行されるプログラムであるため、平文でフラッシュメモリ(例えば第1記憶手段205)に記憶される。
【0076】
第1演算部111は、プログラムBのデータを、暗号文のままフラッシュメモリに記憶する。
【0077】
次に、電源が投入され電源ONになったときに、第1演算部111(第2判定手段207)は、フラッシュメモリからプログラムBのデータを読み出し、プログラムBのデータに付加されたパターンに基づいて、復号処理の要否を判定する。プログラムBのパターンの2ビット目は「1」であるため、復号処理が行われる。
【0078】
第1演算部111(第2復号手段209)は、プログラムBのデータに対して、鍵3を用いて2重に復号処理を行う。これにより、プログラムBは、第2プロセッサ103で実行されるプログラムであるため、平文でRAM(第2記憶手段211)に記憶される。よって、第2プロセッサ103は、RAMに記憶された平文のプログラムBを判読して実行することができるようになる。
【0079】
次に、具体例(その2)について説明する。
図7は、具体例(その2)を説明する図である。
図7に示す例では、プログラムデータC(プログラムC)は、第1プロセッサ101により実行され、プログラムデータD(プログラムD)は、第2プロセッサ103により実行されるとする。
【0080】
図7に示す例では、暗号化ツールにおいて、プログラムC、プログラムDそれぞれに設定された暗号化レベルのパターンに従って暗号化処理が行われる。例えば、プログラムCには、パターン1が設定され、プログラムDには、パターン7が設定されているとする。パターンについては
図4を参照されたい。
【0081】
暗号化ツール(暗号化手段153)は、対応するパターンの鍵を用いてそれぞれのプログラムデータを暗号化する。この暗号化には多重暗号化も含まれる。例えば、暗号化ツールは、プログラムDについては、鍵3を用いて暗号化した後に、鍵2を用いてさらに暗号化し、さらに、鍵1を用いて3重に暗号化を行う。
【0082】
また、暗号化ツールは、暗号化に用いたパターンXを管理情報として暗号化ファイルに付加する。管理情報は、パターンXを示すビット列(
図7に示す例では3ビット)である。
【0083】
ローダ(書き込み手段171)は、暗号化ツールにより暗号化された暗号化ファイルを取得する。
図7に示すように暗号化ファイルには管理情報が含まれる。ローダは、管理情報を参照し、0ビット目が「1」の場合は、鍵1を用いて復号用DLL(ダイナミックリンクライブラリ)により復号処理を行う。ここで、プログラムC及びプログラムDの管理情報はともに0ビット目が「1」であるため、ローダで復号処理が行われる。
【0084】
ローダは、復号処理を行ったプログラムC及びプログラムDのそれぞれのデータを、通信を行うことで制御機器30のフラッシュメモリに書き込む。
【0085】
制御機器30の第1演算部111(第1判定手段201)は、ローダから取得されたプログラムデータに付加されるパターンに基づいて、復号処理の要否を判定する。
図7に示す例では、プログラムDのパターンの1ビット目が「1」であり、プログラムCのパターンの1ビット目が「0」である。
【0086】
よって、第1演算部111(第1復号手段203)は、プログラムDのデータに対してのみ、鍵2を用いて2重に復号処理を行う。第1演算部111は、プログラムCの平文のデータを、フラッシュメモリに記憶する。
【0087】
次に、電源が投入され、電源ONになったときに、第1演算部111(第2判定手段207)は、フラッシュメモリからプログラムDのデータを読み出し、プログラムDのデータに付加されたパターンに基づいて、復号処理の要否を判定する。プログラムDのパターンの2ビット目は「1」であるため、復号処理が行われる。
【0088】
第1演算部111(第2復号手段209)は、プログラムDのデータに対して、鍵3を用いて3重に復号処理を行う。これにより、プログラムDは、第2プロセッサ103で実行されるプログラムであるため、平文でRAM(第2記憶手段211)に記憶される。よって、第2プロセッサ103は、RAMに記憶された平文のプログラムDを判読して実行することができるようになる。
【0089】
以上の機能、構成を有する制御システム1は、暗号化したデータを判読可能にするために、復号処理を実行するタイミングを示したビット情報を、暗号化したデータと共に設定する。これにより、制御システム1は、復号処理を実行するタイミングを選択し、さらにビット情報の組み合せによって、シングル暗号化又は多重暗号化の対応レベルを選択することができる。
【0090】
<動作>
次に、実施例における制御システム1の動作について説明する。
図8は、実施例における格納処理(その1)の一例を示すフローチャートである。格納処理(その1)は、ローダ(第2情報処理装置20)で行われる処理である。なお、データをメモリへ記憶する処理を格納処理とも称す。
【0091】
ステップS101で、第2情報処理装置20は、暗号化手段153により暗号化されたデータを受信する。暗号化されたデータには、管理情報が付加されている。
【0092】
ステップS102で、判定手段173は、暗号化データに付加されたレベルパターンを取得する。
【0093】
ステップS103で、判定手段173は、復号処理の要否判定を行う。つまり、判定手段173は、レベルパターンの0ビット目が「1」であるか否かを判定する。0ビット目が「1」であれば(ステップS103−YES)ステップS104に進み、0ビット目が「0」であれば(ステップS103−NO)ステップS105に進む。
【0094】
ステップS104で、復号手段175は、暗号化されたデータに対し、鍵1を用いて復号処理を行う。
【0095】
ステップS105で、書き込み手段171は、レベルパターンに基づいて復号処理が必要と判定された場合は復号処理が行われたデータを、又はレベルパターンに基づいて復号処理が不要と判定された場合は暗号化データを制御機器30に書き込むために、復号処理が行われたデータ又は暗号化データを制御機器30に送信する。
【0096】
図9は、実施例における格納処理(その2)の一例を示すフローチャートである。
図9に示す格納処理(その2)は、第1演算部111により、第1ROM115(第1記憶手段205、フラッシュメモリ)にデータが書き込まれる前に行われる処理である。
【0097】
ステップS201で、制御機器30は、ローダとの通信により、データを受信する。ステップS202で、第1判定手段201は、取得されたデータに付加されたレベルパターンを取得する。
【0098】
ステップS203で、第1判定手段201は、復号処理の要否判定を行う。つまり、第1判定手段201は、レベルパターンの1ビット目が「1」であるか否かを判定する。1ビット目が「1」であれば(ステップS203−YES)ステップS204に進み、1ビット目が「0」であれば(ステップS203−NO)ステップS206に進む。
【0099】
ステップS204で、第1復号手段203は、ローダから取得されたデータに対し、鍵2を用いて復号処理を行う。
【0100】
ステップS205で、第1復号手段203は、復号したデータをフラッシュメモリ(第1記憶手段205)に記憶する。
【0101】
ステップS206で、第1判定手段201は、受信されたデータをそのままフラッシュメモリに記憶する。
【0102】
図10は、実施例における格納処理(その3)の一例を示すフローチャートである。
図10に示す格納処理(その3)は、第1演算部111により、第2RAM133(第2記憶手段211)にデータが書き込まれる前に行われる処理である。
【0103】
ステップS301で、第1演算部111は、電源がONになったときに、第2演算部131での処理が行われるための初期化処理を行う。
【0104】
ステップS302で、第2判定手段207は、フラッシュメモリからデータを読み出し、このデータに付加されたレベルパターンを取得する。
【0105】
ステップS303で、第2判定手段207は、復号処理の要否判定を行う。つまり、第2判定手段207は、レベルパターンの2ビット目が「1」であるか否かを判定する。2ビット目が「1」であれば(ステップS303−YES)ステップS304に進み、2ビット目が「0」であれば(ステップS303−NO)ステップS308に進む。
【0106】
ステップS304で、第2復号手段209は、フラッシュメモリからデータの一部を読み出す。第2復号手段209は、例えばプログラムデータはデータ量が多いので
図10に示すように分割してデータを読み出すようにしてもよい。なお、第2復号手段209は、読み出す対象のデータのデータ量が小さい場合には、一度に全てのデータを読み出すようにしてもよい。
【0107】
ステップS305で、第2復号手段209は、読み出したデータに対し、鍵3を用いて復号処理を行う。
【0108】
ステップS306で、第2復号手段209は、復号したデータを第2記憶手段211(第2プロセッサ103の第2RAM133)に転送する(書き込む)処理を行う。
【0109】
ステップS307で、第2復号手段209は、読み出したデータがデータの最後か否かを判定する。データの最後であれば(ステップS307−YES)処理を終了し、データの最後でなければ(ステップS307−NO)ステップS304に戻る。
【0110】
ステップS308で、第2判定手段207は、読み出したデータを第2記憶手段211に転送する処理を行う。
【0111】
以上、実施例による制御システム1は、システム構成に応じてセキュリティの強度が選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得することができる。また、一般的に、多重暗号化を実施すると、重複して復号処理を実行するため、復号処理に時間がかかる。そこで、制御システム1では、レベルパターンを固定にするのではなく、システム構成によってセキュリティの強度を柔軟に選択することによって、性能面を重視したい場合には、シングル暗号化を選択し、セキュリティを強化したい場合には、多重暗号化を選択することができる。
【0112】
[変形例]
次に、上記実施例の変形例について説明する。
【0113】
(変形例1)
まず、変形例1は、制御機器30に1つのプロセッサしか実装してない場合である。この変形例1のレベルパターンは、
図11に示す通りである。
【0114】
図11は、レベルパターンテーブル(その2)の一例を示す図である。
図11に示すように、制御機器30には1つのプロセッサしかないので、復号処理を行うタイミングは、(1)ローダと、(2)フラッシュメモリへの書き込み前の2つである。よって、レベルパターンは、2ビットで表すことができる。
【0115】
次に、変形例1における具体例について説明する。
図12は、具体例(その3)を説明する図である。
図12に示す例では、プログラムデータE(プログラムE)は、第1プロセッサ101により実行されるとする。
【0116】
図12に示す例では、暗号化ツールにおいて、プログラムEに設定された暗号化レベルのパターンに従って暗号化処理が行われる。例えば、プログラムEには、パターン3が設定されているとする。パターンについては
図11を参照されたい。
【0117】
暗号化ツール(暗号化手段153)は、対応するパターンの鍵を用いてそれぞれのプログラムデータを暗号化する。この暗号化には多重暗号化も含まれる。例えば、暗号化ツールは、プログラムEについては、鍵2を用いて暗号化した後に、鍵1を用いてさらに暗号化する。
【0118】
また、暗号化ツールは、暗号化に用いたパターンXを管理情報として暗号化ファイルに付加する。管理情報は、パターンXを示すビット列(
図12に示す例では2ビット)である。
【0119】
ローダ(書き込み手段171)は、暗号化ツールにより暗号化された暗号化ファイルを取得する。
図12に示すように暗号化ファイルには管理情報が含まれる。ローダは、管理情報を参照し、0ビット目が「1」の場合は、鍵1を用いて復号用DLL(ダイナミックリンクライブラリ)により復号処理を行う。ここで、プログラムEの管理情報は0ビット目が「1」であるため、ローダで復号処理が行われる。
【0120】
ローダは、復号処理を行ったプログラムEのデータを、通信を行うことで制御機器30のフラッシュメモリに書き込む。
【0121】
制御機器30の第1演算部111(第1判定手段201)は、ローダから取得されたプログラムデータに付加されるパターンに基づいて、復号処理の要否を判定する。
図12に示す例では、プログラムEのパターンの1ビット目が「1」である。
【0122】
よって、第1演算部111(第1復号手段203)は、プログラムEのデータに対して、鍵2を用いて復号処理を行う。第1演算部111は、プログラムEの平文のデータを、フラッシュメモリに記憶する。
【0123】
以上のように、制御機器30内にプロセッサが1つしか実装されていない場合でも、制御システム1では、システム構成に応じてセキュリティの強度が選択され、選択されたセキュリティの強度に基づく処理が施されたデータを取得することができる。
【0124】
また、制御機器30内に3つ以上のプロセッサを実装し、レベルパターンの数を増加することで、実施例と同様の効果を得るようにしてもよい。
【0125】
(変形例2)
次に、変形例2について説明する。変形例2では、管理情報に鍵生成情報を含める。各復号手段では、鍵生成情報に基づいて鍵を生成し、生成した鍵を用いて復号処理を行うことができる。鍵生成情報は、例えば32ビットのビット列であり、鍵生成アルゴリズムは、例えばAESで定められたアルゴリズムを用いればよい。
【0126】
図13は、暗号化データのデータ構造(その2)の一例を示す図である。
図13に示すように、暗号化データに、鍵生成情報が付加される。
図13に示す例では、鍵生成情報は、管理情報に含められる。あるいは、鍵2の鍵生成情報は、鍵1により暗号化されて、鍵3の鍵生成情報は、鍵1や鍵2により暗号化されてデータ部のデータに含められてもよい。
【0127】
これにより、変形例2では、暗号化、復号に用いる鍵を変更することができ、セキュリティの向上を図ることができる。
【0128】
(変形例3)
次に、変形例3について説明する。変形例3では、秘匿対象のデータとして、制御機器30で実行されるプログラムデータ以外にも、制御機器30で実行されるプログラムで用いる重要なパラメータなどでもよい。この場合、コンパイル手段151は必要ない。
【0129】
なお、前述した実施例や変形例で説明した制御処理を実現するためのプログラムを記録媒体に記録することで、実施例や変形例での制御処理をコンピュータに実施させることができる。例えば、このプログラムを記録媒体に記録し、このプログラムが記録された記録媒体をコンピュータに読み取らせて、前述した制御処理を実現させることも可能である。
【0130】
なお、記録媒体は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。この記録媒体には、搬送波は含まれない。
【0131】
以上、実施例や変形例について詳述したが、特定の実施例や変形例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例や変形例の構成要素を全部又は複数を組み合わせることも可能である。