説明

プログラム修正システム及びプログラム修正装置

【課題】本発明は、書込先の制御装置を識別し認証することで、プログラムが意図通りの制御装置へ書き込まれることを保証するためのシステムの提供を目的とする。
【解決手段】制御装置1は、自己の保有するプログラムに従って他の機器の制御を行なう制御装置である。周辺装置2は、制御装置1が保有する前記プログラムの書き換えを行うプログラム修正装置である。周辺装置2は、識別子11a,11b及び認証情報12a,12bに基づき、制御装置1を識別するとともに、制御装置が正当であるかどうかを認証する。そして、周辺装置2は、制御装置1に対する認証結果が正当性を示す場合に、前記制御装置に新たなプログラムを書き込む。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、自己の格納するプログラムに基づき他の機器を制御する制御装置の前記プログラムを書き換えるシステムに関する。
【背景技術】
【0002】
プログラマブルコントローラやそれを使用した装置、NC(Numerical Control)装置、サーボ制御装置などの制御装置は、その内部に書き換え可能なプログラムを保持し、プログラムに規定された動作を実行する。制御装置を動作させるためのプログラムの制御装置への書込を、制御装置を操作するためのソフトウェアを搭載したパーソナルコンピュータなど、制御装置を操作するための周辺装置から行うシステムにおいては、一般に書込先の制御装置を識別しさらにこれを確認すること、すなわち書込先の制御装置の認証は行われていない。このため、プログラム作成者やシステム管理者などプログラムの書込を元来行おうとしている人物・団体が書込先として意図している制御装置とは、異なる制御装置へ書込が行われることを、防ぐことができない。
【0003】
このような意図しない書込には、例えば以下のような動機によるものがある。悪意によるもの(不正な制御装置へのプログラムの書込):プログラムの書込を本来行おうとしている人物・団体とは利害の異なる人物・団体の手によって書込作業がなされたり、作業の途中にこれらの人物・団体が介在する可能性があるときには、不正な制御装置へプログラムが書き込まれ、プログラムが盗用されることが起こりうる。
【0004】
悪意によらないもの(誤った制御装置へのプログラムの書込):書込作業を行う人物・団体の種別によらず、過失によって、本来書き込むべき制御装置とは異なる誤った制御装置へプログラムの書込が行われうる。これは、誤動作や事故につながる。特に、制御装置へのプログラムの書込は、制御装置の動作中に行われることが一般的であり、書き込まれたプログラムは書込後すぐに動作し始める。すなわち書き込まれたプログラムの検証のための時間は存在せず、誤った書込による危険は大きい。
【特許文献1】特開平9−160766号公報:「電子制御装置」
【特許文献2】特開2001−005503号公報:「外部機器制御装置とパーソナルコンピュータとの通信方法」
【特許文献3】特開2004−274964号公報:「制御装置」
【発明の開示】
【発明が解決しようとする課題】
【0005】
書込先の制御装置を認証するためには、書込先の制御装置の識別とその確認(認証)のための情報を、少なくとも制御装置の側で保持し、これを適切に処理しなければならない。しかし、従来の制御装置は一般に個体識別ができるようにはなっておらず、その識別と認証はできない。特許文献1、2および3では、いずれも、制御プログラムの書込先もしくはその他操作の対象となる制御装置に識別番号(ないし識別子、識別情報;以下、単に識別番号と記載する)を持たせ、この識別番号を書込元もしくは操作を行う装置あるいは書き込むプログラム自体にも持たせ、この両者が一致する場合にのみ、制御プログラムの書込もしくはその他操作を行う方法が開示されている。これらの技術によって、書込先もしくは操作対象の制御装置が意図した制御装置であることを確認した上で、書込もしくは操作を行うことができる。このような技術によれば、前述の意図しない書込の例のうちで、悪意によらないものを防ぐことができる。しかし、これらの技術はいずれも、書込先もしくは操作対象の制御装置が意図した制御装置であるか否かの判定を、識別番号の比較とその一致によってのみ行っている。すなわちこれらは、制御装置の識別のみを行っている。制御装置が、たしかにその制御装置から提示さえれた識別番号で表される制御装置であることの確認、すなわち認証についての構成や動作については、何ら開示も示唆もされていない。したがって、これらの技術によっては、前述の意図しない書込の例のうちで、悪意によるものを防ぐことはできない。なぜなら、悪意を持つ人物・団体が識別番号を詐称したとしても、それを検知したり排除したりする手段が存在しないからである。
【0006】
本発明は、書込先の制御装置を識別し認証することで、プログラムが意図通りの制御装置へ書き込まれることを保証するためのシステムの提供を目的とする。
【課題を解決するための手段】
【0007】
この発明のプログラム修正システムは、
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置と、前記制御装置が保有する前記プログラムに対する修正を実行するプログラム修正装置とを備えたプログラム修正システムにおいて、
前記制御装置は、
前記プログラムを格納する制御側プログラム格納部と、
自装置を識別する制御側識別子と検証処理に使用される制御側認証情報とを格納する制御側認証情報格納部と、
前記プログラム修正装置と通信を行なう制御側通信部と、
制御側応答値生成部と
を備え、
前記プログラム修正装置は、
修正側乱数生成部と、
前記制御装置と通信を行なう修正側通信部と、
修正側検証部と
修正側プログラム修正部と
前記制御側認証情報格納部が格納している前記制御側識別子に対応する修正側識別子と、前記制御側認証情報格納部が格納している前記制御側認証情報に対応する修正側認証情報とを格納する修正側格納部と
を備え、
前記修正側乱数生成部は、
乱数を生成し、
前記修正側通信部は、
前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部から前記乱数を受信し、
前記制御側応答値生成部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて、前記制御側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記制御側通信部は、
前記制御側応答値生成部が生成した前記応答値と、前記制御側認証情報格納部が格納している前記制御側識別子とを前記プログラム修正装置に送信し、
前記修正側通信部は、
前記制御側通信部から前記応答値と前記制御側識別子とを受信し、
前記修正側検証部は、
前記修正側格納部が格納している前記修正側識別子と前記修正側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記修正側格納部が格納している前記修正側認証情報を用いて前記修正側通信部が受信した前記応答値の正当性を検証し、
前記修正側プログラム修正部は、
前記修正側検証部が、前記修正側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記修正側通信部を介して、前記制御側プログラム格納部が格納している前記プログラムに対する修正を実行することを特徴とする。
【発明の効果】
【0008】
この発明により、プログラムが意図通りの制御装置へ書き込まれることを保証するシステムを提供することができる。
【発明を実施するための最良の形態】
【0009】
実施の形態1.
図1〜図6を用いて実施の形態1を説明する。図1は、実施の形態1におけるコンピュータである周辺装置2(プログラム修正装置)の外観の一例を示す図である。
【0010】
図1において、制御装置1は、自己の保有するプログラムに従って他の機器の制御を行なう制御装置である。周辺装置2は、制御装置1が保有する前記プログラムの修正を行うプログラム修正装置である。「プログラムの修正」とは、広く、プログラムの全部削除、一部削除、一部書き換え、及び新たにプログラムを書き込むこと等を含む。以下では、「プログラムの修正」の一例として、新たにプログラムを書き込む場合を例に説明する。
【0011】
図1において、周辺装置2は、システムユニット830、CRT(Cathode Ray Tube)やLCD(液晶)の表示画面を有する表示装置813、キーボード814(Key Board:K/B)、マウス815、FDD817(Flexible Disk Drive)、コンパクトディスクドライブ818(CDD:Compact Disk Drive)、プリンタ装置819などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
【0012】
システムユニット830は、コンピュータであり、また、LAN(Local Area Net Work)等のネットワークに接続されている。LANを介して他の機器を制御する制御装置1と通信する。
【0013】
図2は、周辺装置2のハードウェア構成を示す図である。なお、制御装置1もコンピュータであり、ハードウェア構成は図2と同様である。周辺装置2は、プログラムを実行するCPU810(中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU810は、バス825を介してROM(Read Only Memory)811、RAM(Random Access Memory)812、表示装置813、キーボード814、マウス815、通信ボード816、FDD817、CDD818、プリンタ装置819、磁気ディスク装置820と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置820の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【0014】
RAM812は、揮発性メモリの一例である。ROM811、FDD817、CDD818、磁気ディスク装置820等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部の一例である。通信ボード816、キーボード814、FDD817などは、入力部、入力装置の一例である。また、通信ボード816、表示装置813、プリンタ装置819などは、出力部、出力装置の一例である。通信ボード816は、LANに接続されている。
【0015】
磁気ディスク装置820には、オペレーティングシステム821(OS)、ウィンドウシステム822、プログラム群823、ファイル群824が記憶されている。プログラム群823のプログラムは、CPU810、オペレーティングシステム821、ウィンドウシステム822により実行される。
【0016】
上記プログラム群820には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU810により読み出され実行される。
【0017】
ファイル群824には、以下に述べる実施の形態の説明において、「〜の算出結果」、「〜の生成結果」、「〜の作成結果」、「〜の抽出結果」、「〜の処理結果」として説明する情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU810によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0018】
また、以下に述べる実施の形態の説明においては、データや信号値は、RAM812のメモリ、FDD817のフレキシブルディスク、CDD818のコンパクトディスク、磁気ディスク装置830の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital Versatile Disk)等の記録媒体に記録される。また、データや信号は、バス825や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0019】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM811に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU810により読み出され、CPU810により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【0020】
図3は、実施の形態におけるシステムの構成を示す図である。制御装置1と周辺装置2とは互いに通信可能なように、すなわち、制御装置1から送信した伝文が周辺装置2で受信でき、周辺装置2から送信した伝文が制御装置1で受信できるように、接続される。接続方法としては例えば、RS232C、USBなどによって1対1で直接的に接続してもよいし、図1に示したようにLANで接続してもよいし、インターネット、あるいは、ダイヤルアップネットワークなどのネットワークを介して接続してもよい。あるいは、制御装置間ネットワークを介して接続する方法などを利用できる。また、制御装置1と周辺装置2とは直接接続されている必要はなく、制御装置1と周辺装置2とが互いに通信可能であれば、両者の間に任意の装置やネットワークが介在してよい。
【0021】
制御装置1は、自身の識別子11aを保持する。識別子は、本実施の形態1のプログラム修正システムの利用に先立って、あらかじめ制御装置1に書き込まれる。また、任意の時点で変更することもできる。
【0022】
識別子は、異なる識別子を各装置が確実に異なるものとして認識できる限り、任意の形式を用いてよい。たとえば、数値、バイト列、文字列などが使用できる。
【0023】
制御装置が複数台存在する場合に、それぞれの制御装置にどのような識別子を与えるかは、求められる安全性および利便性に依存する。制御装置の個体毎に異なる識別子を与えることもできるし、2個以上の異なる制御装置にそれぞれ同じ識別子を与えることもできる。個体毎に異なる識別子を与えた場合に最も安全性が高くなり、逆に、多数の個体に同一の識別子を与えると利便性があがることがある。
【0024】
制御装置1は、また、認証に用いる認証情報12aを保持する。認証情報は、プログラム修正システムの利用に先立って、あらかじめ制御装置1に書き込まれる。また、任意の時点で変更することもできる。安全上の理由から、異なる識別子を持つ制御装置には必ず異なる認証情報を与えなければならない。ここで、「認証情報」とは、制御装置の認証に使用する情報である。どのような情報を用いるかは、どのような手段で認証を行うか、より端的には、応答値の正当性の判定にどのような方法を用いるかによって異なる。これについては後述する。
【0025】
周辺装置2は、識別子11aおよび認証情報12aと、それぞれ同じ値を持つ識別子11b、および認証情報12bを保持する。識別子11bおよび認証情報12bは、識別子11aおよび認証情報12aを保持する制御装置1へのプログラムの書込を行うための準備として、あらかじめ周辺装置に書き込まれる。
【0026】
周辺装置2は、また、制御装置1へ書き込まれるべきプログラムを保持する(後述する図5)。周辺装置2はユーザの求めなどに応じて、制御装置1へプログラム書き換え要求を送信し、制御装置1と周辺装置2との間の伝文のやりとりによって、制御装置1が保持するプログラムを書き換える。プログラム書き換え要求の送信から始まるこの一連の手順を、以下、プログラム書込と呼ぶ。
【0027】
図4は、制御装置1のブロック図である。制御装置1は、制御側通信部11と、制御側プログラム格納部12と、制御側応答値生成部13と、制御側認証情報格納部14とを備える。制御側認証情報格納部14は、識別子11a,認証情報12a,及び他の機器を制御するプログラムなどを格納している。なお、各構成要素の機能は動作の説明で後述する。
【0028】
図5は、周辺装置2のブロック図である。周辺装置2は、周辺側乱数生成部21と、周辺側検証部22と、周辺側プログラム修正部23と、周辺側通信部24と、周辺側格納部25とを備える。周辺側格納部25は、識別子11b、認証情報12b、及び制御装置1に新たに書き込むための書き込み用プログラムなどを格納している。
【0029】
図6は、実施の形態1における制御装置1と周辺装置2との動作を示すフローチャートである。図6を用いて説明する。なお、これらの動作は全て、周辺装置2から制御装置1への「プログラム書き換え要求」の送信より前に実施される。すなわち、周辺装置2は、ユーザの求めなどに応じて制御装置1のプログラム書き換えを実行するとき、接続の確認などの必要な準備を行った後、ステップA201から順に動作する。
【0030】
(周辺装置2)
周辺装置2は、まず、周辺側乱数生成部21が、乱数101を生成する(ステップA201)。次に周辺装置2は、生成した乱数101を含む伝文を、周辺側通信部24を介して制御装置1へ送信する(ステップA202)。
【0031】
制御装置1は、制御側通信部11が、乱数101を含む伝文を周辺装置2から受信する(ステップA101)。そして、制御側応答値生成部13が、応答値102aを生成する(ステップA102)。そして、制御側通信部11が、識別子11aを取り出し(ステップA103)、識別子11aと応答値102aとをともに含む伝文を周辺装置2へ送信する(ステップA104)。
【0032】
周辺装置2は、周辺側通信部24が、識別子11aと応答値102aとをともに含む伝文を制御装置1から受信する(ステップA203)。そして、周辺側検証部22が、まず識別子11aを検証する(ステップA204)。検証の結果、識別子11aが正当であったなら次へ進み、そうでなければ終了する(ステップA205)。周辺装置2の周辺側検証部22は、次に、応答値102aを検証する(ステップA206)。検証の結果、応答値102aが正当であったなら次へ進み、そうでなければ終了する(ステップA207)。こうして、応答値102aが正当であった場合のみ、周辺側プログラム修正部23は、プログラム書込を行う(ステップA208)。
【0033】
(乱数の生成)
ステップA201において、乱数101は、ステップA201の段階で生成してもよいし、あらかじめ生成し保持しているものを用いてもよい。
【0034】
(処理手順の開始)
ステップA202での、周辺装置2から制御装置への乱数101の送信に先立って、周辺装置2から制御装置1へ、プログラム書き換え(プログラム書込)手順の開始を要求する伝文を送信してもよいし、ステップA202で送信する伝文を手順の開始を表すものとして扱ってもよい。本明細書では、全体にわたって、後者の方法を用いているものとして説明する。
【0035】
(応答値の生成)
ステップA102での制御側応答値生成部13による応答値102aを生成する方法としては、様々な方法を用いることができる。例えば、認証情報12aとしてパスワードを用い、これと乱数101とから、一方向ハッシュアルゴリズムを用いてハッシュ値を生成し、ハッシュ値を応答値102aとする方法がある。この場合、パスワードの代わりに対称鍵、非対称鍵のいずれかの暗号鍵を用いることができ、また、ハッシュ値を乱数101のみからではなく、乱数101を含む伝文の一部または全部や、これにさらに定型文ないし定型データを結合したものを用いることもできる。あるいは、認証情報12aとして対称鍵または非対称鍵を用い、乱数101もしくはこれを含む伝文などのデータを対称鍵または秘密鍵で暗号化し、暗号化した結果を応答値102aとする方法もある。
【0036】
(応答値の検証)
ステップA206での周辺側検証部22による応答値102aを検証する方法は、ステップA102で応答値102aを生成する方法と対応する。ハッシュ値を応答値102aとする場合、周辺装置2でも、認証情報12bを用いて、ステップA102と同様にして応答値102bを生成し、応答値102a、102bを比較して、これらが一致したときにのみ応答値102aを正当と判定する方法がある。応答値102bは、ステップA201で乱数を用意する時点で生成し、ステップA206まで保持してもよいし、逆に、ステップA206まで乱数101を保持しておき、ステップA206で生成してもよい。一方、制御装置1の対称鍵または秘密鍵で暗号化した伝文などを応答値102aとして用いる場合には、周辺装置2は認証情報として制御装置1の対称鍵または公開鍵を保持し、対称鍵または公開鍵で応答値102aを復号する。周辺装置2はまた、応答値102aを生成するのに用いられるのと同じデータの一部または全部を用意して(これには必ず乱数101を含む)、復号結果の該当部分と比較し、これらが一致したときにのみ応答値102aを正当と判定する方法がある。
実施の形態1〜4では、認証情報12a、12bの形式と、これを用いた応答値102aの生成方法および検証方法には、限定されない。
【0037】
(識別子の検証)
ステップA204で識別子11aを検証する方法には、以下の2通りがある。まず、「プログラム書き換え要求」を送信する制御装置1の識別子を、あらかじめ特定しておく方法がある。このあらかじめ特定した識別子を識別子11bとする。識別子の特定は、ステップA204までの間であればどの段階で行ってもかまわない。また、その手段もここでは規定しない。例えば、利用者が入力する、書き込むべきプログラムに記載しておく、などの手段がある。そして、周辺装置2はステップA204で、識別子11aと識別子11bとを比較し、これらが一致すれば識別子11aを正当と判定する。
【0038】
他の方法として、プログラム書き換え要求を送信してよい制御装置の識別子の一覧を保持する方法がある。この一覧を保持する手段はここでは規定しない。例えば、書き込むべきプログラムに記載しておく、などの手段がある。周辺装置2はステップA204で、識別子11aをこの一覧上で検索し、存在すれば識別子11aを正当と判定する。
本実施の形態は、識別子11aの検証方法には限定されない。
【0039】
このように、制御装置へのプログラムの書込に先立って、書込先の制御装置を識別し認証するように構成したことにより、不正な制御装置への書込によるプログラムの盗用や、誤った制御装置への書込による誤動作を防ぐことができる。
【0040】
実施の形態2.
次に図7〜図10を用いて実施の形態2を説明する。実施の形態2はICチップが周辺装置を制御する場合を説明する。実施の形態2におけるシステム構成を図7に示す。実施の形態1と同様に、制御装置1と周辺装置2とは互いに通信可能なように接続される。また、周辺装置2にはICチップ3が装着ないし内蔵される。周辺装置2はICチップ3と通信可能なように、すなわち、周辺装置2から送信したデータがICチップ3で受信でき、ICチップ3から送信したデータが周辺装置2で受信できるように、構成される。実施の形態1では、識別子11aと認証情報12aとそれぞれ同じ値を持つ識別子11bと認証情報12bを、周辺装置2が保持していたが、実施の形態2では、図7に示すように、周辺装置2はこれらの情報を持たず、代わりに、ICチップ3が識別子11bと認証情報12bとを保持する。ICチップ3はまた、制御装置1へ書き込まれるべきプログラムを保持する。一方、周辺装置2はこれを保持しない。
【0041】
図8はICチップ3のハードウェア構成を示す図である。ICチップ3とは、図8に示すようにCPU311、不揮発性メモリ312(不揮発性記憶領域)、外部との通信インタフェース313を持ち、内部で任意の処理を実行しつつ外部との通信を行えるデバイスであり、かつ、CPU311での実行内容および不揮発性メモリ312での保持内容について、外部から観測が不可能なデバイスを指す。
【0042】
ICチップ3は、周辺装置2の一部として周辺装置2に組み込まれていても良いし、ICカードやICチップ内蔵デバイスのように外付けの形態をとり、必要に応じて、ICカードリーダライタや、USBなどの外付け機器用のインタフェースを介して、通信可能となるように構成されるのでもよい。これも実施の形態1と同様に、制御装置1は、識別子11aと認証情報12aとを保持する。
【0043】
図9は、ICチップ3の機能ブロック図を示す。ICチップ3は、IC側乱数生成部31、IC側検証部32、IC側プログラム修正部33、IC側通信部34、IC側格納部35を備える。IC側格納部35は、識別子11b、認証情報12b及び書き込み用プログラムなどを格納している。
【0044】
図10は、実施の形態2における、制御装置1と周辺装置2とICチップ3との動作の関係を表すフローチャートである。なお、制御装置1の動作は、実施の形態1と同じである。
【0045】
周辺装置2は、ユーザの求めなどに応じて制御装置1のプログラム書き換えを実行するとき、接続の確認などの必要な準備を行った後、ステップB201から順に動作する。
【0046】
周辺装置2は、まず、乱数101をICチップ3へ要求する(ステップB201)。
【0047】
ICチップ3のIC側通信部34が要求を周辺装置2から受信すると(ステップB301)、IC側乱数生成部31が乱数101を生成し(ステップB302)、IC側通信部34が生成された乱数101を周辺装置2へ送信する(ステップB303)。
【0048】
周辺装置2は、乱数101をICチップ3から受信すると(ステップB202)、乱数101を含む伝文を制御装置1へ送信する(ステップB203)。
【0049】
制御装置1の制御側通信部11は、乱数101を含む伝文を周辺装置2から受信し(ステップA101)、制御側認証情報格納部14が応答値102aを生成する(ステップA102)。そして、制御側通信部11が識別子11aを取り出し(ステップA103)、識別子11aと応答値102aとを含む伝文を周辺装置2へ送信する(ステップA104)。
【0050】
周辺装置2は、識別子11aと応答値102aとを含む伝文を制御装置1から受信すると(ステップB204)、識別子11aと応答値102aとをICチップ3へ送信する(ステップB205)。
【0051】
ICチップ3は、IC側通信部34が識別子11aと応答値102aとを周辺装置2から受信し(ステップB304)、IC側検証部32がまず識別子11aを検証する(ステップB305)。検証の結果、識別子11aが正当であったなら次へ進み(ステップB306)、そうでなければ、IC側通信部34は、制御装置1が不当であった旨を示す判定結果200を周辺装置2へ送信する(ステップB309b)。ICチップ3のIC側検証部32は、ステップB305の判定結果が正当であったなら、次に応答値102aを検証する(ステップB307)。検証の結果、応答値102aが正当であったなら次へ進み(ステップB308)、そうでなければ、IC側通信部34は、制御装置1が不当であった旨を示す判定結果200を周辺装置2へ送信する(ステップB309b)。こうして、応答値102aが正当であった場合のみ、制御装置1が正当であった旨を示す判定結果200を周辺装置2へ送信し(ステップB309a)、プログラム書込を行う(ステップB310)。
【0052】
周辺装置2は、判定結果200をICチップ3から受信し(ステップB206)、これが正当であったなら以降のプログラム書込を中継し(ステップB207、B208)、そうでなければ終了する。
【0053】
実施の形態1において、ステップA201、ステップA202、ステップA204、ステップA206について言及した内容は、実施の形態2においては、それぞれステップB302、ステップB303、ステップB305、ステップB307についてそのまま該当する。
また、実施の形態1において、ステップA102について言及した内容は、実施の形態2においてもそのまま該当する。
【0054】
周辺装置2とICチップ3との間で送受信されるデータ、具体的には、ステップB202とB303で送受信される乱数101および、ステップB205とB304で送受信される識別子11aと応答値102aは、これらのデータのみを、周辺装置2とICチップ3との間の固有の形式で送受信してもよいし、制御装置1と周辺装置2との間の通信形式、すなわち、ステップB203とA101で送受信される乱数101を含む伝文および、ステップB204とA104で送受信される識別子11aと応答値102aをともに含む伝文と、それぞれ同じ形式を持っていてもよい。後者の場合、周辺装置2は、単に制御装置1とICチップ3との間で、通信を中継するだけの動作を行うことができる。
【0055】
実施の形態2では、特に認証情報12bを、周辺装置2そのものではなくICチップ3に格納し、実施の形態1で周辺装置2が実施していた処理のほぼ全てをICチップ3で実行しているため、認証情報12aが装置自身から漏洩するおそれがほとんどない。
【0056】
このように、制御装置へのプログラムの書込に先立って、書込先の制御装置を識別し認証するように構成し、かつ、書込先の制御装置の認証のための情報をICチップに格納し、そこで識別・認証を行うことで、不正な制御装置への書込によるプログラムの盗用や、誤った制御装置への書込による誤動作を防ぐことができると同時に、識別・認証のための情報を安全に格納・使用し、これらの情報の盗用や、それによるなりすましを防止できる。
【0057】
実施の形態3.
次に図11を参照して実施の形態3を説明する。実施の形態2では、図10のICチップ3の動作(B310)に示したように、ICチップ3がプログラム書き込みを行い、周辺装置2はその中継をするのみであった(図10のB208)。これに対して実施の形態3では、後述の図11のC208に示すように、周辺装置2がプログラムの書き込みを行う。この点が実施の形態2(図10)との相違である。これにより、ICチップ3で行うべき処理を簡略化して、処理時間を短縮し、また、ICチップ3のコストを低減できる。
【0058】
実施の形態3におけるシステムの構成は、実施の形態2で示した図7と同じである。ただし、制御装置1へ書き込まれるべきプログラムは、周辺装置2もしくはICチップ3の、いずれかが保持するものとする。
【0059】
図11は、実施の形態3における、それぞれ周辺装置2とICチップ3の動作を表している。制御装置1の動作は、実施の形態1と同じである。
【0060】
実施の形態3における周辺装置2とICチップ3の動作は、実施の形態2における周辺装置2とICチップ3の動作と、それぞれほとんど同じである。実施の形態3の周辺装置2の動作のうち、ステップC201からステップC207までは、実施の形態2のステップB201からステップB207までと、それぞれ同じである。また、実施の形態3のICチップ3の動作のうち、ステップC301からステップC309a/bまでは、実施の形態2のステップB301からステップB309a/bまでと、それぞれ同じである。
【0061】
ICチップ3は、判定結果200を周辺装置2へ送信すると(ステップC309a)、そのまま終了する。
【0062】
一方、周辺装置2は、ICチップ3から受信した判定結果200が、正当であることを示していれば(ステップC207)、プログラム書込を実行する(ステップC208)。
【0063】
制御装置1へ書き込まれるべきプログラムを周辺装置2が直接保持している場合には、ステップC208で周辺装置2は、自身が保持するプログラムを使ってプログラム書込を実行する。一方、プログラムをICチップ3が保持している場合には、周辺装置2はICチップ3から、書き込まれるべきプログラムを受け取る。受け取る方法としては、ICチップ3が周辺装置2へ、正当であることを示す判定結果200と同時に送信する方法や、ICチップ3が周辺装置2へ正当であることを示す判定結果200を送信してから、一定時間もしくは一定回数のみ、周辺装置2がICチップ3から読み出すことが可能な状態にする方法などがある。
【0064】
このように、制御装置へのプログラムの書込に先立って、書込先の制御装置を識別し認証するように構成し、かつ、書込先の制御装置の認証のための情報をICチップに格納し、そこで識別・認証を行うが、ICチップ上では書込先の制御装置の認証だけを行い、実際のプログラム書込は周辺装置が行うように構成することにより、不正な制御装置への書込によるプログラムの盗用や、誤った制御装置への書込による誤動作を防ぐことができると同時に、識別・認証のための情報を安全に格納・使用し、これらの情報の盗用や、それによるなりすましを防止でき、さらに、ICチップで行うべき処理を簡略化して、処理時間を短縮し、また、ICチップのコストを低減できる。
【0065】
実施の形態4.
次に図12〜図19を用いて実施の形態4を説明する。実施の形態1〜実施の形態3では周辺装置2(あるいはICチップ3)が制御装置1を認証していた。実施の形態4では、制御装置も、周辺装置(あるいはICチップ)を認証する処理を加えた実施形態である。これにより、不正な装置が制御装置の保有する認証情報12aの解析を目的として制御装置に対し繰り返し認証を試み、乱数と応答値との組合せを収集する行為を確実に防止することができる。
【0066】
実施の形態4におけるシステムの構成は、実施の形態1または実施の形態2と同じである。ここでは、実施の形態2の構成(図7)をとるものとして説明する。
【0067】
図12、図13、図14は、実施の形態4における制御装置100、周辺装置200、ICチップ300を示す。制御装置100は、制御装置1に対して、さらに、制御側乱数生成部101を備える。周辺装置200は、周辺装置2に対して、さらに、周辺側応答値生成部201を備える。ICチップ300は、ICチップ3に対して、さらに、IC側応答値生成部301を備える。
【0068】
図15は、実施の形態4における、それぞれ制御装置100、周辺装置200およびICチップ300の動作を表すフローチャートである。図15を用いて動作を説明する。
【0069】
周辺装置200は、ユーザの求めなどに応じて制御装置100のプログラム書き換えを実行するとき、接続の確認などの必要な準備を行った後、ステップD201から順に動作する。
【0070】
周辺装置200は、まず、乱数201を制御装置100へ要求する(ステップD201)。制御装置100は、制御側通信部11により乱数要求を周辺装置200から受信すると(ステップD101)、制御側乱数生成部101が乱数201を生成し(ステップD102)、生成した乱数201を含む伝文を制御側通信部11により周辺装置200へ送信する(ステップD103)。
【0071】
周辺装置200は、乱数201を含む伝文を制御装置100から受信すると(ステップD202)、乱数201をICチップ300へ送信する(ステップD203)。
【0072】
ICチップ300では、IC側通信部34が乱数201を周辺装置200から受信し(ステップD301)、IC側応答値生成部301により応答値202aを生成し(ステップD302)、IC側通信部34が応答値202aを周辺装置200へ送信する(ステップD303)。
【0073】
周辺装置200は、応答値202aをICチップ300から受信すると(ステップD204)、周辺側通信部24により応答値202aを含む伝文を制御装置100へ送信する(ステップD205)。
【0074】
制御装置100は、制御側通信部11により応答値202aを含む伝文を周辺装置200から受信し(ステップD104)、制御側検証部102により応答値202aを検証し(ステップD105)、制御側通信部11により判定結果300を含む伝文を周辺装置200へ送信する(ステップD106)。さらに、制御側検証部102による検証の結果、応答値102aが正当であったなら(ステップD107)、制御装置100は、図6に示した制御装置1と同様の動作(A101〜A104)を行う(ステップD108)。そうでなければ終了する。
【0075】
周辺装置200は、周辺側通信部24により判定結果300を含む伝文を制御装置100から受信し(ステップD206)、判定結果300をICチップ300へ送信する(ステップD207)。周辺装置200は、判定結果300が正当であることを示すものであったなら(ステップD208)、図10あるいは図11に示した周辺装置2と同様の動作を行う(ステップD209)。そうでなければ終了する。
【0076】
ICチップ300は、IC側通信部34により判定結果300を周辺装置200から受信し(ステップD304)、これが正当であることを示すものであったなら(ステップD305)、図10あるいは図11に示したICチップ3と同様の動作を行う(ステップD306)。そうでなければ終了する。
【0077】
こうして、応答値202aが正当であった場合のみ、実施例2または実施例3の動作が実施される。
【0078】
実施の形態1において、ステップA102、ステップA201、ステップA202、ステップA206について言及した内容は、実施の形態4においてそれぞれ、ステップD302、ステップD102、ステップD201、ステップD105についてそのまま該当する。ただし、実施の形態1で乱数101について述べていることは実施の形態4では乱数201にあてはまり、実施の形態1で応答値102a、102bついて述べていることは実施の形態4では応答値202a、202bにあてはまる。
【0079】
システムの構成が実施の形態1(図3)と同じである場合には、すなわち、ICチップを用いない構成の場合には、制御装置100の動作は、図15の制御装置100のフローチャートとほぼ同様になり、また、周辺装置200の動作は図15のICチップ300のフローチャートの動作と、ほぼ同じとなる。この場合、制御装置100は、ステップD108において、図6に示した制御装置1と同様の動作を行う。また、周辺装置200はステップD306において、図6に示した周辺装置2と同様の動作を行う。図16には、このICチップを用いない構成の場合の動作を示した。
【0080】
判定結果300が正当であるときには、周辺装置200がステップD207でICチップ300へ判定結果300を送信する際に、実施の形態2のステップB201もしくは実施の形態3のステップC201を、これと同時に実行してもよい。同様に、ICチップ300は、ステップD304と同時に、実施の形態2のステップB301もしくは実施の形態3のステップC301を実行してもよい。すなわち、判定結果300の送受信と同時に、乱数101を送受信してもよい。
【0081】
さらに、実施の形態2または実施の形態3の動作と、実施の形態4の動作を並行して行うことも可能である。図17は、実施の形態2の動作と実施の形態4の動作を並行して行う場合の、それぞれ制御装置100、周辺装置200およびICチップ300の動作を表している。
【0082】
図17に示した制御装置100の動作について、ステップE101、E102、E103、E105、E106、E107、E108、E109bは、それぞれステップD101、D102、D103、D105、D107、A102、A103、D106と同じ動作を表す。また、ステップE104はステップD104とステップA101を、ステップE109aはステップD106とステップA104を、それぞれ同時に実行する動作を表す。
【0083】
図17に示した周辺装置200の動作について、ステップE201、E202、E203、E207、E208b、E209、E210、E211は、それぞれステップD201、D202、D203、D208、D207、B206、B207、B208と、同じ動作を表す。また、ステップE204はステップD204とステップB202を、ステップE205はステップD205とステップB203を、ステップE206はステップD206とステップB204を、ステップE208aはステップD207とステップB205を、それぞれ同時に実行する動作を表す。
【0084】
図17に示したICチップ300の動作について、ステップE301、E302、E303、E306、E307、E308、E309、E310、E311a、E311b、E312は、それぞれステップD301、D302、B302、D305、B305、B306、B307、B308、B309a、B309b、B310と、同じ動作を表す。また、ステップE304はステップD303とステップB303を、ステップE305はステップD304とステップB304を、それぞれ同時に実行する動作を表す。
【0085】
なお、図18は、実施の形態1の場合について、すなわち、ICチップを用いない構成において、周辺装置が制御装置を認証する処理と、制御装置が周辺装置を認証する処理とを並行しておこなう場合のフローチャートを示した。
【0086】
上記の説明では、ステップD302およびステップE302における応答値202aの生成と、ステップD105およびステップE105における応答値202aの検証とは、いずれも、実施の形態2および実施の形態3で用いている認証情報12a、12bを使って行われている。これを、図19に示すように、制御装置100とICチップ300とがそれぞれ認証情報12a、12bとは別の認証情報13a、13bを保持し、ステップD302およびステップE302における応答値202aの生成と、ステップD105およびステップE105における応答値202aの検証とを、認証情報13a、13bを使って行うように構成してもよい。
【0087】
このように、実施の形態1〜3に示したプログラム書込に先立つ制御装置100の認証にさらに先立って、あるいは同時並行して、制御装置100が上記認証を行う側(周辺装置200またはICチップ300)を認証するように構成することで、不正な装置が認証情報12aの解析を目的として制御装置100に対し繰り返し認証を試み(しかし、成功しない)、乱数と応答値との組合せを収集する行為を確実に防止することができ、認証情報12aが解析され漏洩する危険性を著しく減少させることができる。
【0088】
以上の実施の形態では以下のシステムを説明した。すなわち、
プログラムを内部に保持し、プログラムにしたがって機器の制御を行う制御装置と、制御装置に接続され、制御装置内のプログラムに対する書き換え要求を制御装置へ送信する周辺装置から構成されるプログラム修正システムにおいて、
制御装置は、制御装置を識別するための識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを持ち、
周辺装置は、書き換え要求の送信先である制御装置の識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を生成し、乱数を制御装置へ送信するステップと、識別子と応答値とを制御装置から受信し、保持している識別子と受信した識別子とが一致するか否かを判定し、受信した応答値が正当であるか否かを判定するステップを持ち、書き換え要求を制御装置へ送信する前にこれらのステップを順に実行し、識別子が一致し、かつ応答値が正当であると判定された場合にのみ、書き換え要求を制御装置へ送信することを特徴とするプログラム修正システム。
【0089】
以上の実施の形態では以下のシステムを説明した。すなわち、
プログラムを内部に保持し、プログラムにしたがって機器の制御を行う制御装置と、制御装置に接続され、制御装置内のプログラムに対する書き換え要求を制御装置へ送信する周辺装置と、周辺装置に装着もしくは内蔵されるICチップとから構成されるプログラム修正システムにおいて、
制御装置は、制御装置を識別するための識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを持ち、
ICチップは、書き換え要求の送信先である制御装置の識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数の送信要求を周辺装置から受信し、乱数を生成し、乱数を周辺装置へ送信するステップと、識別子と応答値とを周辺装置から受信し、保持している識別子と受信した識別子とが一致するか否かを判定し、受信した応答値が正当であるか否かを判定するステップを持ち、
周辺装置は、乱数の送信要求をICチップへ送信するステップと、乱数をICチップから受信し、乱数を制御装置へ送信するステップと、識別子と応答値とを制御装置から受信し、識別子と応答値とをICチップに送信するステップと、書き換え要求をICチップから受信し、制御装置へ送信するステップとを持ち、
周辺装置とICチップとは、書き換え要求を制御装置へ送信する前にこれらのステップを順に実行し、
ICチップは、識別子が一致し、かつ応答値が正当であると判定された場合にのみ、書き換え要求を周辺装置へ送信することを特徴とするプログラム修正システム。
【0090】
以上の実施の形態では以下のシステムを説明した。すなわち、
プログラムを内部に保持し、プログラムにしたがって機器の制御を行う制御装置と、制御装置に接続され、制御装置内のプログラムに対する書き換え要求を制御装置へ送信する周辺装置と、周辺装置に装着もしくは内蔵されるICチップとから構成されるプログラム修正システムにおいて、
制御装置は、制御装置を識別するための識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを持ち、
ICチップは、書き換え要求の送信先である制御装置の識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数の送信要求を周辺装置から受信し、乱数を生成し、乱数を周辺装置へ送信するステップと、識別子と応答値とを周辺装置から受信し、保持している識別子と受信した識別子とが一致するか否かを判定し、受信した応答値が正当であるか否かを判定し、識別子が一致し、かつ応答値が正当であると判定された場合には制御装置が正当であることを示す判定結果を、そうでない場合には制御装置が不当であることを示す判定結果を、周辺装置に送信するステップを持ち、
周辺装置は、乱数の送信要求をICチップへ送信するステップと、乱数をICチップから受信し、乱数を制御装置へ送信するステップと、識別子と応答値とを制御装置から受信し、識別子と応答値とをICチップに送信するステップと、判定結果をICチップから受信するステップとを持ち、書き換え要求を制御装置へ送信する前にこれらのステップを順に実行し、ICチップから受信した判定結果が制御装置が正当であることを示している場合にのみ、書き換え要求を制御装置へ送信することを特徴とするプログラム修正システム。
【0091】
以上の実施の形態では以下のシステムを説明した。すなわち、
制御装置は、乱数を生成し、乱数を送信するステップと、応答値を受信し、受信した応答値が正当であるか否かを判定するステップを持ち、
周辺装置は、乱数を受信し、乱数と認証情報とから応答値を生成し、応答値を返送するステップを持ち、
制御装置は、受信した応答値が正当であると判定された場合にのみ、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを実行するプログラム修正システム。
【0092】
以上の実施の形態では以下のシステムを説明した。すなわち、
制御装置は、乱数を生成し、乱数を送信するステップと、応答値を受信し、受信した応答値が正当であるか否かを判定するステップを持ち、
周辺装置は、乱数を制御装置から受信し、乱数をICチップへ送信するステップと、応答値をICチップから受信し、応答値を送信するステップを持ち、
ICチップは、乱数を周辺装置から受信し、乱数と認証情報とから応答値を生成し、応答値を周辺装置へ送信するステップを持ち、
制御装置は、受信した応答値が正当であると判定された場合にのみ、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを実行する、プログラム修正システム。
【図面の簡単な説明】
【0093】
【図1】実施の形態1における周辺装置2の外観の一例を示す図。
【図2】実施の形態1における周辺装置2のハードウェア構成を示す図。
【図3】実施の形態1におけるシステム構成を示す図。
【図4】実施の形態1における制御装置1のブロック図。
【図5】実施の形態1における周辺装置2のブロック図。
【図6】実施の形態1におけるシステムの動作を示すフローチャート。
【図7】実施の形態2におけるシステム構成図。
【図8】実施の形態2におけるICチップ3のブロック図。
【図9】実施の形態2におけるハードウェア構成図。
【図10】実施の形態2におけるシステムの動作を示すフローチャート。
【図11】実施の形態3におけるシステムの動作を示すフローチャート。
【図12】実施の形態4における制御装置100のブロック図。
【図13】実施の形態4における周辺装置200のブロック図。
【図14】実施の形態4におけるICチップ300のブロック図。
【図15】実施の形態4におけるシステムの動作を示すフローチャート。
【図16】実施の形態4におけるシステムの動作を示すフローチャート。
【図17】実施の形態4におけるシステムの動作を示すフローチャート。
【図18】実施の形態4におけるシステムの動作を示すフローチャート。
【図19】実施の形態4におけるシステム構成図。
【符号の説明】
【0094】
1 制御装置、2 周辺装置、3 ICチップ、11a,11b 識別子、12a,12b 認証情報、11 制御側通信部、12 制御側プログラム格納部、13 制御側応答値生成部、14 制御側認証情報格納部、21 周辺側乱数生成部、22 周辺側検証部、23 周辺側プログラム修正部、24 周辺側通信部、25 周辺側格納部、31 IC側乱数生成部、32 IC側検証部、33 IC側プログラム修正部、34 IC側通信部、35 IC側格納部、100 制御装置、101 制御側乱数生成部、102 制御側検証部、200 周辺装置、201 周辺側応答値生成部、300 ICチップ、301 IC側応答値生成部、311 CPU、312 不揮発性メモリ、313 通信インタフェース、314 バス。

【特許請求の範囲】
【請求項1】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置と、前記制御装置が保有する前記プログラムに対する修正を実行するプログラム修正装置とを備えたプログラム修正システムにおいて、
前記制御装置は、
前記プログラムを格納する制御側プログラム格納部と、
自装置を識別する制御側識別子と検証処理に使用される制御側認証情報とを格納する制御側認証情報格納部と、
前記プログラム修正装置と通信を行なう制御側通信部と、
制御側応答値生成部と
を備え、
前記プログラム修正装置は、
修正側乱数生成部と、
前記制御装置と通信を行なう修正側通信部と、
修正側検証部と、
修正側プログラム修正部と、
前記制御側認証情報格納部が格納している前記制御側識別子に対応する修正側識別子と、前記制御側認証情報格納部が格納している前記制御側認証情報に対応する修正側認証情報とを格納する修正側格納部と
を備え、
前記修正側乱数生成部は、
乱数を生成し、
前記修正側通信部は、
前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部から前記乱数を受信し、
前記制御側応答値生成部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて、前記制御側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記制御側通信部は、
前記制御側応答値生成部が生成した前記応答値と、前記制御側認証情報格納部が格納している前記制御側識別子とを前記プログラム修正装置に送信し、
前記修正側通信部は、
前記制御側通信部から前記応答値と前記制御側識別子とを受信し、
前記修正側検証部は、
前記修正側格納部が格納している前記修正側識別子と前記修正側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記修正側格納部が格納している前記修正側認証情報を用いて前記修正側通信部が受信した前記応答値の正当性を検証し、
前記修正側プログラム修正部は、
前記修正側検証部が、前記修正側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記修正側通信部を介して、前記制御側プログラム格納部が格納している前記プログラムに対する修正を実行することを特徴とするプログラム修正システム。
【請求項2】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置が保有している前記プログラムに対する修正を実行するプログラム修正装置において、
乱数を生成する修正側乱数生成部と、
前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信するとともに、前記制御装置から前記乱数に対する応答である応答値と前記制御装置を識別する制御側識別子とを前記制御装置から受信する修正側通信部と、
前記修正側通信部が受信する前記制御側識別子に対応する修正側識別子と、前記修正側通信部が受信する前記応答値の検証に使用される修正側認証情報とを格納する修正側格納部と、
前記修正側格納部が格納している前記修正側識別子と前記修正側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記修正側格納部が格納している前記修正側認証情報を用いて前記修正側通信部が受信した前記応答値の正当性を検証する前記修正側検証部と、
前記修正側検証部が、前記修正側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記修正側通信部を介して、前記制御装置が保有している前記プログラムに対する修正を実行する修正側プログラム修正部と、
を備えたことを特徴とするプログラム修正装置。
【請求項3】
前記修正側通信部は、
乱数を要求する乱数要求を前記制御装置に送信するとともに、前記乱数要求への返信として前記制御装置から所定の制御側乱数を受信し、
前記プログラム修正装置は、さらに、
前記修正側通信部が前記制御装置から受信した前記制御側乱数に応答する応答値である修正側応答値を生成する修正側応答値生成部を備え、
前記修正側通信部は、
前記修正側応答値生成部が生成した前記修正側応答値を前記制御装置に送信するとともに、前記制御装置から前記修正側応答値が正当であるかどうかを示す判定結果を受信し、
前記修正側検証部は、
前記修正側通信部が受信した前記判定結果が正当を示すかどうかを確認し、
前記修正側通信部は、
前記修正側検証部により前記判定結果が正当性を示すと確認された場合にのみ、前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信することを特徴とする請求項2記載のプログラム修正装置。
【請求項4】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置と、IC(Integrated Circuit)チップを備え前記ICチップから制御を受けることにより前記制御装置が保有する前記プログラムに対する修正を実行するプログラム修正装置とを備えたプログラム修正システムにおいて、
前記制御装置は、
前記プログラムを格納する制御側プログラム格納部と、
自装置を識別する制御側識別子と検証処理に使用される制御側認証情報とを格納する制御側認証情報格納部と、
前記プログラム修正装置と通信を行なう制御側通信部と、
制御側応答値生成部と
を備え、
前記ICチップは、
IC側乱数生成部と、
前記制御装置と前記プログラム修正装置を介して通信を行なうIC側通信部と、
IC側検証部と、
IC側プログラム修正部と、
前記制御側認証情報格納部が格納している前記制御側識別子に対応するIC側識別子と、前記制御側認証情報格納部が格納している前記制御側認証情報に対応するIC側認証情報とを格納するIC側格納部と
を備え、
前記IC側乱数生成部は、
乱数を生成し、
前記IC側通信部は、
前記IC側乱数生成部が生成した前記乱数を前記プログラム修正装置を介して前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置から前記乱数を受信し、
前記制御側応答値生成部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて、前記制御側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記制御側通信部は、
前記制御側応答値生成部が生成した前記応答値と、前記制御側認証情報格納部が格納している前記制御側識別子とを前記プログラム修正装置に送信し、
前記IC側通信部は、
前記制御側通信部から前記プログラム修正装置を介して前記応答値と前記制御側識別子とを受信し、
前記IC側検証部は、
前記IC側格納部が格納している前記IC側識別子と前記IC側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記IC側格納部が格納している前記IC側認証情報を用いて前記IC側通信部が受信した前記応答値の正当性を検証し、
前記IC側プログラム修正部は、
前記IC側検証部が、前記IC側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記プログラム修正装置を介して前記制御側プログラム格納部が格納している前記プログラムに対する修正処理を実行することを特徴とするプログラム修正システム。
【請求項5】
前記制御装置は、さらに、
乱数を生成する制御側乱数生成部と、
検証処理を実行する制御側検証部と
を備え、
前記ICチップは、さらに、
IC側応答値生成部を備え、
前記プログラム修正装置は、
乱数を要求する乱数要求を前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記乱数要求を受信し、
制御側乱数生成部は、
前記制御側通信部が受信した前記乱数要求に応答して乱数を生成し、
前記制御側通信部は、
前記制御側乱数生成部が生成した前記乱数を前記プログラム修正装置に送信し、
前記IC側通信部は、
前記プログラム修正装置を介して前記乱数を受信し、
前記IC側応答値生成部は、
前記IC側格納部が格納している前記IC側認証情報を用いて、前記IC側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記IC側通信部は、
前記IC側応答値生成部が生成した前記応答値を前記プログラム修正装置を介して前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記応答値を受信し、
前記制御側検証部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて前記制御側通信部が受信した前記応答値の正当性を検証し、検証の結果を判定結果として生成し、
前記制御側通信部は、
前記制御側検証部が生成した前記判定結果を前記プログラム修正装置に送信し、
前記IC側通信部は、
前記制御側通信部が送信した前記判定結果を前記プログラム修正装置を介して受信し
前記IC側検証部は、
前記IC側通信部が受信した前記判定結果を確認し、
前記IC側通信部は、
前記IC側検証部により前記判定結果が正当性を示すと確認された場合にのみ、前記IC側乱数生成部が生成した前記乱数を前記制御装置に送信することを特徴とする請求項4記載のプログラム修正システム。
【請求項6】
前記IC側格納部は、
前記制御装置に書き込むべき新たなプログラムを保有し、
前記IC側プログラム修正部は、
前記IC側検証部が、前記IC側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記プログラム修正装置を介して前記IC側格納部が記憶している前記新たなプログラムを前記制御側プログラム格納部へ書き込むことを特徴とする請求項4記載のプログラム修正システム。
【請求項7】
前記IC側プログラム修正部は、
前記IC側検証部が、前記IC側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記プログラム修正装置に前記制御側プログラム格納部へ新たなプログラムを書き込ませることを特徴とする請求項4記載のプログラム修正システム。
【請求項8】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置が保有している前記プログラムに対する修正を実行するプログラム修正装置において、
修正側通信部と、
修正側応答値生成部と、
乱数を生成する修正側乱数生成部と、
修正側検証部と、
修正側プログラム修正部と
を備え、
前記修正側通信部は、
乱数を要求する乱数要求を前記制御装置に送信するとともに、前記乱数要求への返信として前記制御装置から所定の制御側乱数を受信し、
前記修正側応答値生成部は、
前記修正側通信部が前記制御装置から受信した前記制御側乱数に応答する応答値である制御側乱数応答値を生成し、
前記修正側通信部は、
前記修正側乱数生成部が生成した修正側乱数と、前記修正側応答値生成部が生成した前記制御側乱数応答値とを前記制御装置に送信するとともに、前記制御装置から前記制御側応答値が正当であるかどうかを示す判定結果と、前記修正側乱数に応答する修正側乱数応答値と、前記制御装置を識別する制御側識別子とを受信し、
前記修正側検証部は、
前記修正側通信部が受信した前記判定結果が正当を示すかどうかを確認するとともに、前記修正側通信部が受信した前記制御側識別子と前記修正側乱数応答値とを検証し、
前記修正側プログラム修正部は、
前記修正側検証部が、前記判定結果が正当性を示すことを確認し、かつ、前記制御側識別子と前記修正側乱数応答値とのいずれも正当と判定した場合に、前記修正側通信部を介して、前記制御装置が保有している前記プログラムに対する修正を実行することを特徴とするプログラム修正装置。
【請求項9】
前記制御装置は、さらに、
乱数を生成する制御側乱数生成部と、
検証処理を実行する制御側検証部と
を備え、
前記プログラム修正装置は、さらに、
修正側応答値生成部を備え、
前記プログラム修正装置の修正側通信部は、
前記修正側乱数生成部により生成される前記乱数の送信に先立ち、乱数を要求する乱数要求を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部が送信した前記乱数要求を受信し、
制御側乱数生成部は、
前記制御側通信部が受信した前記乱数要求に応答して乱数を生成し、
前記制御側通信部は、
前記制御側乱数生成部が生成した前記乱数を前記プログラム修正装置に送信し、
前記修正側通信部は、
前記制御側通信部が送信した前記乱数を受信し、
前記修正側応答値生成部は、
前記修正側格納部が格納している前記修正側認証情報を用いて、前記修正側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記修正側通信部は、
前記修正側応答値生成部が生成した前記応答値を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部が送信した前記応答値を受信し、
前記制御側検証部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて前記制御側通信部が受信した前記応答値の正当性を検証し、検証の結果を判定結果として生成し、
前記制御側通信部は、
前記制御側検証部により生成された前記判定結果が正当性を示す場合にのみ、前記修正側乱数生成部により生成される前記乱数であって前記修正側通信部により送信される前記乱数を受信することを特徴とする請求項1記載のプログラム修正システム。
【請求項10】
前記制御装置は、さらに、
乱数を生成する制御側乱数生成部と、
検証処理を実行する制御側検証部と
を備え、
前記ICチップは、さらに、
IC側応答値生成部を備え、
前記プログラム修正装置は、
前記IC側乱数生成部により生成される前記乱数の送信に先立ち、乱数を要求する乱数要求を前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記乱数要求を受信し、
制御側乱数生成部は、
前記制御側通信部が受信した前記乱数要求に応答して乱数を生成し、
前記制御側通信部は、
前記制御側乱数生成部が生成した前記乱数を前記プログラム修正装置に送信し、
前記IC側通信部は、
前記プログラム修正装置を介して前記乱数を受信し、
前記IC側応答値生成部は、
前記IC側格納部が格納している前記IC側認証情報を用いて、前記IC側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記IC側通信部は、
前記IC側応答値生成部が生成した前記応答値を前記プログラム修正装置を介して前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記応答値を受信し、
前記制御側検証部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて前記制御側通信部が受信した前記応答値の正当性を検証し、検証の結果を判定結果として生成し、
前記制御側通信部は、
前記制御側検証部により生成された前記判定結果が正当性を示す場合にのみ、前記IC側乱数生成部により生成される前記乱数であって前記IC側通信部により前記プログラム修正装置を介して送信される前記乱数を受信することを特徴とする請求項4記載のプログラム修正システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2008−152446(P2008−152446A)
【公開日】平成20年7月3日(2008.7.3)
【国際特許分類】
【出願番号】特願2006−338519(P2006−338519)
【出願日】平成18年12月15日(2006.12.15)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】