(57)【要約】【課題】本発明は、書込先の制御装置を識別し認証することで、プログラムが意図通りの制御装置へ書き込まれることを保証するためのシステムの提供を目的とする。【解決手段】制御装置１は、自己の保有するプログラムに従って他の機器の制御を行なう制御装置である。周辺装置２は、制御装置１が保有する前記プログラムの書き換えを行うプログラム修正装置である。周辺装置２は、識別子１１ａ，１１ｂ及び認証情報１２ａ，１２ｂに基づき、制御装置１を識別するとともに、制御装置が正当であるかどうかを認証する。そして、周辺装置２は、制御装置１に対する認証結果が正当性を示す場合に、前記制御装置に新たなプログラムを書き込む。【選択図】図３
2008152446.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置と、前記制御装置が保有する前記プログラムに対する修正を実行するプログラム修正装置とを備えたプログラム修正システムにおいて、
前記制御装置は、
前記プログラムを格納する制御側プログラム格納部と、
自装置を識別する制御側識別子と検証処理に使用される制御側認証情報とを格納する制御側認証情報格納部と、
前記プログラム修正装置と通信を行なう制御側通信部と、
制御側応答値生成部と
を備え、
前記プログラム修正装置は、
修正側乱数生成部と、
前記制御装置と通信を行なう修正側通信部と、
修正側検証部と、
修正側プログラム修正部と、
前記制御側認証情報格納部が格納している前記制御側識別子に対応する修正側識別子と、前記制御側認証情報格納部が格納している前記制御側認証情報に対応する修正側認証情報とを格納する修正側格納部と
を備え、
前記修正側乱数生成部は、
乱数を生成し、
前記修正側通信部は、
前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部から前記乱数を受信し、
前記制御側応答値生成部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて、前記制御側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記制御側通信部は、
前記制御側応答値生成部が生成した前記応答値と、前記制御側認証情報格納部が格納している前記制御側識別子とを前記プログラム修正装置に送信し、
前記修正側通信部は、
前記制御側通信部から前記応答値と前記制御側識別子とを受信し、
前記修正側検証部は、
前記修正側格納部が格納している前記修正側識別子と前記修正側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記修正側格納部が格納している前記修正側認証情報を用いて前記修正側通信部が受信した前記応答値の正当性を検証し、
前記修正側プログラム修正部は、
前記修正側検証部が、前記修正側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記修正側通信部を介して、前記制御側プログラム格納部が格納している前記プログラムに対する修正を実行することを特徴とするプログラム修正システム。
【請求項２】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置が保有している前記プログラムに対する修正を実行するプログラム修正装置において、
乱数を生成する修正側乱数生成部と、
前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信するとともに、前記制御装置から前記乱数に対する応答である応答値と前記制御装置を識別する制御側識別子とを前記制御装置から受信する修正側通信部と、
前記修正側通信部が受信する前記制御側識別子に対応する修正側識別子と、前記修正側通信部が受信する前記応答値の検証に使用される修正側認証情報とを格納する修正側格納部と、
前記修正側格納部が格納している前記修正側識別子と前記修正側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記修正側格納部が格納している前記修正側認証情報を用いて前記修正側通信部が受信した前記応答値の正当性を検証する前記修正側検証部と、
前記修正側検証部が、前記修正側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記修正側通信部を介して、前記制御装置が保有している前記プログラムに対する修正を実行する修正側プログラム修正部と、
を備えたことを特徴とするプログラム修正装置。
【請求項３】
前記修正側通信部は、
乱数を要求する乱数要求を前記制御装置に送信するとともに、前記乱数要求への返信として前記制御装置から所定の制御側乱数を受信し、
前記プログラム修正装置は、さらに、
前記修正側通信部が前記制御装置から受信した前記制御側乱数に応答する応答値である修正側応答値を生成する修正側応答値生成部を備え、
前記修正側通信部は、
前記修正側応答値生成部が生成した前記修正側応答値を前記制御装置に送信するとともに、前記制御装置から前記修正側応答値が正当であるかどうかを示す判定結果を受信し、
前記修正側検証部は、
前記修正側通信部が受信した前記判定結果が正当を示すかどうかを確認し、
前記修正側通信部は、
前記修正側検証部により前記判定結果が正当性を示すと確認された場合にのみ、前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信することを特徴とする請求項２記載のプログラム修正装置。
【請求項４】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置と、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）チップを備え前記ＩＣチップから制御を受けることにより前記制御装置が保有する前記プログラムに対する修正を実行するプログラム修正装置とを備えたプログラム修正システムにおいて、
前記制御装置は、
前記プログラムを格納する制御側プログラム格納部と、
自装置を識別する制御側識別子と検証処理に使用される制御側認証情報とを格納する制御側認証情報格納部と、
前記プログラム修正装置と通信を行なう制御側通信部と、
制御側応答値生成部と
を備え、
前記ＩＣチップは、
ＩＣ側乱数生成部と、
前記制御装置と前記プログラム修正装置を介して通信を行なうＩＣ側通信部と、
ＩＣ側検証部と、
ＩＣ側プログラム修正部と、
前記制御側認証情報格納部が格納している前記制御側識別子に対応するＩＣ側識別子と、前記制御側認証情報格納部が格納している前記制御側認証情報に対応するＩＣ側認証情報とを格納するＩＣ側格納部と
を備え、
前記ＩＣ側乱数生成部は、
乱数を生成し、
前記ＩＣ側通信部は、
前記ＩＣ側乱数生成部が生成した前記乱数を前記プログラム修正装置を介して前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置から前記乱数を受信し、
前記制御側応答値生成部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて、前記制御側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記制御側通信部は、
前記制御側応答値生成部が生成した前記応答値と、前記制御側認証情報格納部が格納している前記制御側識別子とを前記プログラム修正装置に送信し、
前記ＩＣ側通信部は、
前記制御側通信部から前記プログラム修正装置を介して前記応答値と前記制御側識別子とを受信し、
前記ＩＣ側検証部は、
前記ＩＣ側格納部が格納している前記ＩＣ側識別子と前記ＩＣ側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記ＩＣ側格納部が格納している前記ＩＣ側認証情報を用いて前記ＩＣ側通信部が受信した前記応答値の正当性を検証し、
前記ＩＣ側プログラム修正部は、
前記ＩＣ側検証部が、前記ＩＣ側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記プログラム修正装置を介して前記制御側プログラム格納部が格納している前記プログラムに対する修正処理を実行することを特徴とするプログラム修正システム。
【請求項５】
前記制御装置は、さらに、
乱数を生成する制御側乱数生成部と、
検証処理を実行する制御側検証部と
を備え、
前記ＩＣチップは、さらに、
ＩＣ側応答値生成部を備え、
前記プログラム修正装置は、
乱数を要求する乱数要求を前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記乱数要求を受信し、
制御側乱数生成部は、
前記制御側通信部が受信した前記乱数要求に応答して乱数を生成し、
前記制御側通信部は、
前記制御側乱数生成部が生成した前記乱数を前記プログラム修正装置に送信し、
前記ＩＣ側通信部は、
前記プログラム修正装置を介して前記乱数を受信し、
前記ＩＣ側応答値生成部は、
前記ＩＣ側格納部が格納している前記ＩＣ側認証情報を用いて、前記ＩＣ側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記ＩＣ側通信部は、
前記ＩＣ側応答値生成部が生成した前記応答値を前記プログラム修正装置を介して前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記応答値を受信し、
前記制御側検証部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて前記制御側通信部が受信した前記応答値の正当性を検証し、検証の結果を判定結果として生成し、
前記制御側通信部は、
前記制御側検証部が生成した前記判定結果を前記プログラム修正装置に送信し、
前記ＩＣ側通信部は、
前記制御側通信部が送信した前記判定結果を前記プログラム修正装置を介して受信し
前記ＩＣ側検証部は、
前記ＩＣ側通信部が受信した前記判定結果を確認し、
前記ＩＣ側通信部は、
前記ＩＣ側検証部により前記判定結果が正当性を示すと確認された場合にのみ、前記ＩＣ側乱数生成部が生成した前記乱数を前記制御装置に送信することを特徴とする請求項４記載のプログラム修正システム。
【請求項６】
前記ＩＣ側格納部は、
前記制御装置に書き込むべき新たなプログラムを保有し、
前記ＩＣ側プログラム修正部は、
前記ＩＣ側検証部が、前記ＩＣ側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記プログラム修正装置を介して前記ＩＣ側格納部が記憶している前記新たなプログラムを前記制御側プログラム格納部へ書き込むことを特徴とする請求項４記載のプログラム修正システム。
【請求項７】
前記ＩＣ側プログラム修正部は、
前記ＩＣ側検証部が、前記ＩＣ側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記プログラム修正装置に前記制御側プログラム格納部へ新たなプログラムを書き込ませることを特徴とする請求項４記載のプログラム修正システム。
【請求項８】
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置が保有している前記プログラムに対する修正を実行するプログラム修正装置において、
修正側通信部と、
修正側応答値生成部と、
乱数を生成する修正側乱数生成部と、
修正側検証部と、
修正側プログラム修正部と
を備え、
前記修正側通信部は、
乱数を要求する乱数要求を前記制御装置に送信するとともに、前記乱数要求への返信として前記制御装置から所定の制御側乱数を受信し、
前記修正側応答値生成部は、
前記修正側通信部が前記制御装置から受信した前記制御側乱数に応答する応答値である制御側乱数応答値を生成し、
前記修正側通信部は、
前記修正側乱数生成部が生成した修正側乱数と、前記修正側応答値生成部が生成した前記制御側乱数応答値とを前記制御装置に送信するとともに、前記制御装置から前記制御側応答値が正当であるかどうかを示す判定結果と、前記修正側乱数に応答する修正側乱数応答値と、前記制御装置を識別する制御側識別子とを受信し、
前記修正側検証部は、
前記修正側通信部が受信した前記判定結果が正当を示すかどうかを確認するとともに、前記修正側通信部が受信した前記制御側識別子と前記修正側乱数応答値とを検証し、
前記修正側プログラム修正部は、
前記修正側検証部が、前記判定結果が正当性を示すことを確認し、かつ、前記制御側識別子と前記修正側乱数応答値とのいずれも正当と判定した場合に、前記修正側通信部を介して、前記制御装置が保有している前記プログラムに対する修正を実行することを特徴とするプログラム修正装置。
【請求項９】
前記制御装置は、さらに、
乱数を生成する制御側乱数生成部と、
検証処理を実行する制御側検証部と
を備え、
前記プログラム修正装置は、さらに、
修正側応答値生成部を備え、
前記プログラム修正装置の修正側通信部は、
前記修正側乱数生成部により生成される前記乱数の送信に先立ち、乱数を要求する乱数要求を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部が送信した前記乱数要求を受信し、
制御側乱数生成部は、
前記制御側通信部が受信した前記乱数要求に応答して乱数を生成し、
前記制御側通信部は、
前記制御側乱数生成部が生成した前記乱数を前記プログラム修正装置に送信し、
前記修正側通信部は、
前記制御側通信部が送信した前記乱数を受信し、
前記修正側応答値生成部は、
前記修正側格納部が格納している前記修正側認証情報を用いて、前記修正側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記修正側通信部は、
前記修正側応答値生成部が生成した前記応答値を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部が送信した前記応答値を受信し、
前記制御側検証部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて前記制御側通信部が受信した前記応答値の正当性を検証し、検証の結果を判定結果として生成し、
前記制御側通信部は、
前記制御側検証部により生成された前記判定結果が正当性を示す場合にのみ、前記修正側乱数生成部により生成される前記乱数であって前記修正側通信部により送信される前記乱数を受信することを特徴とする請求項１記載のプログラム修正システム。
【請求項１０】
前記制御装置は、さらに、
乱数を生成する制御側乱数生成部と、
検証処理を実行する制御側検証部と
を備え、
前記ＩＣチップは、さらに、
ＩＣ側応答値生成部を備え、
前記プログラム修正装置は、
前記ＩＣ側乱数生成部により生成される前記乱数の送信に先立ち、乱数を要求する乱数要求を前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記乱数要求を受信し、
制御側乱数生成部は、
前記制御側通信部が受信した前記乱数要求に応答して乱数を生成し、
前記制御側通信部は、
前記制御側乱数生成部が生成した前記乱数を前記プログラム修正装置に送信し、
前記ＩＣ側通信部は、
前記プログラム修正装置を介して前記乱数を受信し、
前記ＩＣ側応答値生成部は、
前記ＩＣ側格納部が格納している前記ＩＣ側認証情報を用いて、前記ＩＣ側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記ＩＣ側通信部は、
前記ＩＣ側応答値生成部が生成した前記応答値を前記プログラム修正装置を介して前記制御装置に送信し、
前記制御側通信部は、
前記プログラム修正装置が送信した前記応答値を受信し、
前記制御側検証部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて前記制御側通信部が受信した前記応答値の正当性を検証し、検証の結果を判定結果として生成し、
前記制御側通信部は、
前記制御側検証部により生成された前記判定結果が正当性を示す場合にのみ、前記ＩＣ側乱数生成部により生成される前記乱数であって前記ＩＣ側通信部により前記プログラム修正装置を介して送信される前記乱数を受信することを特徴とする請求項４記載のプログラム修正システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、自己の格納するプログラムに基づき他の機器を制御する制御装置の前記プログラムを書き換えるシステムに関する。
【背景技術】
【０００２】
プログラマブルコントローラやそれを使用した装置、ＮＣ（Ｎｕｍｅｒｉｃａｌ  Ｃｏｎｔｒｏｌ）装置、サーボ制御装置などの制御装置は、その内部に書き換え可能なプログラムを保持し、プログラムに規定された動作を実行する。制御装置を動作させるためのプログラムの制御装置への書込を、制御装置を操作するためのソフトウェアを搭載したパーソナルコンピュータなど、制御装置を操作するための周辺装置から行うシステムにおいては、一般に書込先の制御装置を識別しさらにこれを確認すること、すなわち書込先の制御装置の認証は行われていない。このため、プログラム作成者やシステム管理者などプログラムの書込を元来行おうとしている人物・団体が書込先として意図している制御装置とは、異なる制御装置へ書込が行われることを、防ぐことができない。
【０００３】
このような意図しない書込には、例えば以下のような動機によるものがある。悪意によるもの（不正な制御装置へのプログラムの書込）：プログラムの書込を本来行おうとしている人物・団体とは利害の異なる人物・団体の手によって書込作業がなされたり、作業の途中にこれらの人物・団体が介在する可能性があるときには、不正な制御装置へプログラムが書き込まれ、プログラムが盗用されることが起こりうる。
【０００４】
悪意によらないもの（誤った制御装置へのプログラムの書込）：書込作業を行う人物・団体の種別によらず、過失によって、本来書き込むべき制御装置とは異なる誤った制御装置へプログラムの書込が行われうる。これは、誤動作や事故につながる。特に、制御装置へのプログラムの書込は、制御装置の動作中に行われることが一般的であり、書き込まれたプログラムは書込後すぐに動作し始める。すなわち書き込まれたプログラムの検証のための時間は存在せず、誤った書込による危険は大きい。
【特許文献１】特開平９−１６０７６６号公報：「電子制御装置」
【特許文献２】特開２００１−００５５０３号公報：「外部機器制御装置とパーソナルコンピュータとの通信方法」
【特許文献３】特開２００４−２７４９６４号公報：「制御装置」
【発明の開示】
【発明が解決しようとする課題】
【０００５】
書込先の制御装置を認証するためには、書込先の制御装置の識別とその確認（認証）のための情報を、少なくとも制御装置の側で保持し、これを適切に処理しなければならない。しかし、従来の制御装置は一般に個体識別ができるようにはなっておらず、その識別と認証はできない。特許文献１、２および３では、いずれも、制御プログラムの書込先もしくはその他操作の対象となる制御装置に識別番号（ないし識別子、識別情報；以下、単に識別番号と記載する）を持たせ、この識別番号を書込元もしくは操作を行う装置あるいは書き込むプログラム自体にも持たせ、この両者が一致する場合にのみ、制御プログラムの書込もしくはその他操作を行う方法が開示されている。これらの技術によって、書込先もしくは操作対象の制御装置が意図した制御装置であることを確認した上で、書込もしくは操作を行うことができる。このような技術によれば、前述の意図しない書込の例のうちで、悪意によらないものを防ぐことができる。しかし、これらの技術はいずれも、書込先もしくは操作対象の制御装置が意図した制御装置であるか否かの判定を、識別番号の比較とその一致によってのみ行っている。すなわちこれらは、制御装置の識別のみを行っている。制御装置が、たしかにその制御装置から提示さえれた識別番号で表される制御装置であることの確認、すなわち認証についての構成や動作については、何ら開示も示唆もされていない。したがって、これらの技術によっては、前述の意図しない書込の例のうちで、悪意によるものを防ぐことはできない。なぜなら、悪意を持つ人物・団体が識別番号を詐称したとしても、それを検知したり排除したりする手段が存在しないからである。
【０００６】
本発明は、書込先の制御装置を識別し認証することで、プログラムが意図通りの制御装置へ書き込まれることを保証するためのシステムの提供を目的とする。
【課題を解決するための手段】
【０００７】
この発明のプログラム修正システムは、
プログラムを保有し前記プログラムに従って他の機器の制御を行なう制御装置と、前記制御装置が保有する前記プログラムに対する修正を実行するプログラム修正装置とを備えたプログラム修正システムにおいて、
前記制御装置は、
前記プログラムを格納する制御側プログラム格納部と、
自装置を識別する制御側識別子と検証処理に使用される制御側認証情報とを格納する制御側認証情報格納部と、
前記プログラム修正装置と通信を行なう制御側通信部と、
制御側応答値生成部と
を備え、
前記プログラム修正装置は、
修正側乱数生成部と、
前記制御装置と通信を行なう修正側通信部と、
修正側検証部と
修正側プログラム修正部と
前記制御側認証情報格納部が格納している前記制御側識別子に対応する修正側識別子と、前記制御側認証情報格納部が格納している前記制御側認証情報に対応する修正側認証情報とを格納する修正側格納部と
を備え、
前記修正側乱数生成部は、
乱数を生成し、
前記修正側通信部は、
前記修正側乱数生成部が生成した前記乱数を前記制御装置に送信し、
前記制御側通信部は、
前記修正側通信部から前記乱数を受信し、
前記制御側応答値生成部は、
前記制御側認証情報格納部が格納している前記制御側認証情報を用いて、前記制御側通信部が受信した前記乱数から前記乱数に応答する応答値を生成し、
前記制御側通信部は、
前記制御側応答値生成部が生成した前記応答値と、前記制御側認証情報格納部が格納している前記制御側識別子とを前記プログラム修正装置に送信し、
前記修正側通信部は、
前記制御側通信部から前記応答値と前記制御側識別子とを受信し、
前記修正側検証部は、
前記修正側格納部が格納している前記修正側識別子と前記修正側通信部が受信した前記制御側識別子とが一致するかどうかを検証するとともに、前記修正側格納部が格納している前記修正側認証情報を用いて前記修正側通信部が受信した前記応答値の正当性を検証し、
前記修正側プログラム修正部は、
前記修正側検証部が、前記修正側識別子と前記制御側識別子とが一致すると判定し、かつ、前記応答値が正当であると判定した場合に、前記修正側通信部を介して、前記制御側プログラム格納部が格納している前記プログラムに対する修正を実行することを特徴とする。
【発明の効果】
【０００８】
この発明により、プログラムが意図通りの制御装置へ書き込まれることを保証するシステムを提供することができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
図１〜図６を用いて実施の形態１を説明する。図１は、実施の形態１におけるコンピュータである周辺装置２（プログラム修正装置）の外観の一例を示す図である。
【００１０】
図１において、制御装置１は、自己の保有するプログラムに従って他の機器の制御を行なう制御装置である。周辺装置２は、制御装置１が保有する前記プログラムの修正を行うプログラム修正装置である。「プログラムの修正」とは、広く、プログラムの全部削除、一部削除、一部書き換え、及び新たにプログラムを書き込むこと等を含む。以下では、「プログラムの修正」の一例として、新たにプログラムを書き込む場合を例に説明する。
【００１１】
図１において、周辺装置２は、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ  Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、ＦＤＤ８１７（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ    Ｄｒｉｖｅ）、コンパクトディスクドライブ８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）、プリンタ装置８１９などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
【００１２】
システムユニット８３０は、コンピュータであり、また、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔ  Ｗｏｒｋ）等のネットワークに接続されている。ＬＡＮを介して他の機器を制御する制御装置１と通信する。
【００１３】
図２は、周辺装置２のハードウェア構成を示す図である。なお、制御装置１もコンピュータであり、ハードウェア構成は図２と同様である。周辺装置２は、プログラムを実行するＣＰＵ８１０（中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＦＤＤ８１７、ＣＤＤ８１８、プリンタ装置８１９、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００１４】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＦＤＤ８１７、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部の一例である。通信ボード８１６、キーボード８１４、ＦＤＤ８１７などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３、プリンタ装置８１９などは、出力部、出力装置の一例である。通信ボード８１６は、ＬＡＮに接続されている。
【００１５】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００１６】
上記プログラム群８２０には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００１７】
ファイル群８２４には、以下に述べる実施の形態の説明において、「〜の算出結果」、「〜の生成結果」、「〜の作成結果」、「〜の抽出結果」、「〜の処理結果」として説明する情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００１８】
また、以下に述べる実施の形態の説明においては、データや信号値は、ＲＡＭ８１２のメモリ、ＦＤＤ８１７のフレキシブルディスク、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８３０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１９】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ８１１に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２０】
図３は、実施の形態におけるシステムの構成を示す図である。制御装置１と周辺装置２とは互いに通信可能なように、すなわち、制御装置１から送信した伝文が周辺装置２で受信でき、周辺装置２から送信した伝文が制御装置１で受信できるように、接続される。接続方法としては例えば、ＲＳ２３２Ｃ、ＵＳＢなどによって１対１で直接的に接続してもよいし、図１に示したようにＬＡＮで接続してもよいし、インターネット、あるいは、ダイヤルアップネットワークなどのネットワークを介して接続してもよい。あるいは、制御装置間ネットワークを介して接続する方法などを利用できる。また、制御装置１と周辺装置２とは直接接続されている必要はなく、制御装置１と周辺装置２とが互いに通信可能であれば、両者の間に任意の装置やネットワークが介在してよい。
【００２１】
制御装置１は、自身の識別子１１ａを保持する。識別子は、本実施の形態１のプログラム修正システムの利用に先立って、あらかじめ制御装置１に書き込まれる。また、任意の時点で変更することもできる。
【００２２】
識別子は、異なる識別子を各装置が確実に異なるものとして認識できる限り、任意の形式を用いてよい。たとえば、数値、バイト列、文字列などが使用できる。
【００２３】
制御装置が複数台存在する場合に、それぞれの制御装置にどのような識別子を与えるかは、求められる安全性および利便性に依存する。制御装置の個体毎に異なる識別子を与えることもできるし、２個以上の異なる制御装置にそれぞれ同じ識別子を与えることもできる。個体毎に異なる識別子を与えた場合に最も安全性が高くなり、逆に、多数の個体に同一の識別子を与えると利便性があがることがある。
【００２４】
制御装置１は、また、認証に用いる認証情報１２ａを保持する。認証情報は、プログラム修正システムの利用に先立って、あらかじめ制御装置１に書き込まれる。また、任意の時点で変更することもできる。安全上の理由から、異なる識別子を持つ制御装置には必ず異なる認証情報を与えなければならない。ここで、「認証情報」とは、制御装置の認証に使用する情報である。どのような情報を用いるかは、どのような手段で認証を行うか、より端的には、応答値の正当性の判定にどのような方法を用いるかによって異なる。これについては後述する。
【００２５】
周辺装置２は、識別子１１ａおよび認証情報１２ａと、それぞれ同じ値を持つ識別子１１ｂ、および認証情報１２ｂを保持する。識別子１１ｂおよび認証情報１２ｂは、識別子１１ａおよび認証情報１２ａを保持する制御装置１へのプログラムの書込を行うための準備として、あらかじめ周辺装置に書き込まれる。
【００２６】
周辺装置２は、また、制御装置１へ書き込まれるべきプログラムを保持する（後述する図５）。周辺装置２はユーザの求めなどに応じて、制御装置１へプログラム書き換え要求を送信し、制御装置１と周辺装置２との間の伝文のやりとりによって、制御装置１が保持するプログラムを書き換える。プログラム書き換え要求の送信から始まるこの一連の手順を、以下、プログラム書込と呼ぶ。
【００２７】
図４は、制御装置１のブロック図である。制御装置１は、制御側通信部１１と、制御側プログラム格納部１２と、制御側応答値生成部１３と、制御側認証情報格納部１４とを備える。制御側認証情報格納部１４は、識別子１１ａ，認証情報１２ａ，及び他の機器を制御するプログラムなどを格納している。なお、各構成要素の機能は動作の説明で後述する。
【００２８】
図５は、周辺装置２のブロック図である。周辺装置２は、周辺側乱数生成部２１と、周辺側検証部２２と、周辺側プログラム修正部２３と、周辺側通信部２４と、周辺側格納部２５とを備える。周辺側格納部２５は、識別子１１ｂ、認証情報１２ｂ、及び制御装置１に新たに書き込むための書き込み用プログラムなどを格納している。
【００２９】
図６は、実施の形態１における制御装置１と周辺装置２との動作を示すフローチャートである。図６を用いて説明する。なお、これらの動作は全て、周辺装置２から制御装置１への「プログラム書き換え要求」の送信より前に実施される。すなわち、周辺装置２は、ユーザの求めなどに応じて制御装置１のプログラム書き換えを実行するとき、接続の確認などの必要な準備を行った後、ステップＡ２０１から順に動作する。
【００３０】
（周辺装置２）
周辺装置２は、まず、周辺側乱数生成部２１が、乱数１０１を生成する（ステップＡ２０１）。次に周辺装置２は、生成した乱数１０１を含む伝文を、周辺側通信部２４を介して制御装置１へ送信する（ステップＡ２０２）。
【００３１】
制御装置１は、制御側通信部１１が、乱数１０１を含む伝文を周辺装置２から受信する（ステップＡ１０１）。そして、制御側応答値生成部１３が、応答値１０２ａを生成する（ステップＡ１０２）。そして、制御側通信部１１が、識別子１１ａを取り出し（ステップＡ１０３）、識別子１１ａと応答値１０２ａとをともに含む伝文を周辺装置２へ送信する（ステップＡ１０４）。
【００３２】
周辺装置２は、周辺側通信部２４が、識別子１１ａと応答値１０２ａとをともに含む伝文を制御装置１から受信する（ステップＡ２０３）。そして、周辺側検証部２２が、まず識別子１１ａを検証する（ステップＡ２０４）。検証の結果、識別子１１ａが正当であったなら次へ進み、そうでなければ終了する（ステップＡ２０５）。周辺装置２の周辺側検証部２２は、次に、応答値１０２ａを検証する（ステップＡ２０６）。検証の結果、応答値１０２ａが正当であったなら次へ進み、そうでなければ終了する（ステップＡ２０７）。こうして、応答値１０２ａが正当であった場合のみ、周辺側プログラム修正部２３は、プログラム書込を行う（ステップＡ２０８）。
【００３３】
（乱数の生成）
ステップＡ２０１において、乱数１０１は、ステップＡ２０１の段階で生成してもよいし、あらかじめ生成し保持しているものを用いてもよい。
【００３４】
（処理手順の開始）
ステップＡ２０２での、周辺装置２から制御装置への乱数１０１の送信に先立って、周辺装置２から制御装置１へ、プログラム書き換え（プログラム書込）手順の開始を要求する伝文を送信してもよいし、ステップＡ２０２で送信する伝文を手順の開始を表すものとして扱ってもよい。本明細書では、全体にわたって、後者の方法を用いているものとして説明する。
【００３５】
（応答値の生成）
ステップＡ１０２での制御側応答値生成部１３による応答値１０２ａを生成する方法としては、様々な方法を用いることができる。例えば、認証情報１２ａとしてパスワードを用い、これと乱数１０１とから、一方向ハッシュアルゴリズムを用いてハッシュ値を生成し、ハッシュ値を応答値１０２ａとする方法がある。この場合、パスワードの代わりに対称鍵、非対称鍵のいずれかの暗号鍵を用いることができ、また、ハッシュ値を乱数１０１のみからではなく、乱数１０１を含む伝文の一部または全部や、これにさらに定型文ないし定型データを結合したものを用いることもできる。あるいは、認証情報１２ａとして対称鍵または非対称鍵を用い、乱数１０１もしくはこれを含む伝文などのデータを対称鍵または秘密鍵で暗号化し、暗号化した結果を応答値１０２ａとする方法もある。
【００３６】
（応答値の検証）
ステップＡ２０６での周辺側検証部２２による応答値１０２ａを検証する方法は、ステップＡ１０２で応答値１０２ａを生成する方法と対応する。ハッシュ値を応答値１０２ａとする場合、周辺装置２でも、認証情報１２ｂを用いて、ステップＡ１０２と同様にして応答値１０２ｂを生成し、応答値１０２ａ、１０２ｂを比較して、これらが一致したときにのみ応答値１０２ａを正当と判定する方法がある。応答値１０２ｂは、ステップＡ２０１で乱数を用意する時点で生成し、ステップＡ２０６まで保持してもよいし、逆に、ステップＡ２０６まで乱数１０１を保持しておき、ステップＡ２０６で生成してもよい。一方、制御装置１の対称鍵または秘密鍵で暗号化した伝文などを応答値１０２ａとして用いる場合には、周辺装置２は認証情報として制御装置１の対称鍵または公開鍵を保持し、対称鍵または公開鍵で応答値１０２ａを復号する。周辺装置２はまた、応答値１０２ａを生成するのに用いられるのと同じデータの一部または全部を用意して（これには必ず乱数１０１を含む）、復号結果の該当部分と比較し、これらが一致したときにのみ応答値１０２ａを正当と判定する方法がある。
実施の形態１〜４では、認証情報１２ａ、１２ｂの形式と、これを用いた応答値１０２ａの生成方法および検証方法には、限定されない。
【００３７】
（識別子の検証）
ステップＡ２０４で識別子１１ａを検証する方法には、以下の２通りがある。まず、「プログラム書き換え要求」を送信する制御装置１の識別子を、あらかじめ特定しておく方法がある。このあらかじめ特定した識別子を識別子１１ｂとする。識別子の特定は、ステップＡ２０４までの間であればどの段階で行ってもかまわない。また、その手段もここでは規定しない。例えば、利用者が入力する、書き込むべきプログラムに記載しておく、などの手段がある。そして、周辺装置２はステップＡ２０４で、識別子１１ａと識別子１１ｂとを比較し、これらが一致すれば識別子１１ａを正当と判定する。
【００３８】
他の方法として、プログラム書き換え要求を送信してよい制御装置の識別子の一覧を保持する方法がある。この一覧を保持する手段はここでは規定しない。例えば、書き込むべきプログラムに記載しておく、などの手段がある。周辺装置２はステップＡ２０４で、識別子１１ａをこの一覧上で検索し、存在すれば識別子１１ａを正当と判定する。
本実施の形態は、識別子１１ａの検証方法には限定されない。
【００３９】
このように、制御装置へのプログラムの書込に先立って、書込先の制御装置を識別し認証するように構成したことにより、不正な制御装置への書込によるプログラムの盗用や、誤った制御装置への書込による誤動作を防ぐことができる。
【００４０】
実施の形態２．
次に図７〜図１０を用いて実施の形態２を説明する。実施の形態２はＩＣチップが周辺装置を制御する場合を説明する。実施の形態２におけるシステム構成を図７に示す。実施の形態１と同様に、制御装置１と周辺装置２とは互いに通信可能なように接続される。また、周辺装置２にはＩＣチップ３が装着ないし内蔵される。周辺装置２はＩＣチップ３と通信可能なように、すなわち、周辺装置２から送信したデータがＩＣチップ３で受信でき、ＩＣチップ３から送信したデータが周辺装置２で受信できるように、構成される。実施の形態１では、識別子１１ａと認証情報１２ａとそれぞれ同じ値を持つ識別子１１ｂと認証情報１２ｂを、周辺装置２が保持していたが、実施の形態２では、図７に示すように、周辺装置２はこれらの情報を持たず、代わりに、ＩＣチップ３が識別子１１ｂと認証情報１２ｂとを保持する。ＩＣチップ３はまた、制御装置１へ書き込まれるべきプログラムを保持する。一方、周辺装置２はこれを保持しない。
【００４１】
図８はＩＣチップ３のハードウェア構成を示す図である。ＩＣチップ３とは、図８に示すようにＣＰＵ３１１、不揮発性メモリ３１２（不揮発性記憶領域）、外部との通信インタフェース３１３を持ち、内部で任意の処理を実行しつつ外部との通信を行えるデバイスであり、かつ、ＣＰＵ３１１での実行内容および不揮発性メモリ３１２での保持内容について、外部から観測が不可能なデバイスを指す。
【００４２】
ＩＣチップ３は、周辺装置２の一部として周辺装置２に組み込まれていても良いし、ＩＣカードやＩＣチップ内蔵デバイスのように外付けの形態をとり、必要に応じて、ＩＣカードリーダライタや、ＵＳＢなどの外付け機器用のインタフェースを介して、通信可能となるように構成されるのでもよい。これも実施の形態１と同様に、制御装置１は、識別子１１ａと認証情報１２ａとを保持する。
【００４３】
図９は、ＩＣチップ３の機能ブロック図を示す。ＩＣチップ３は、ＩＣ側乱数生成部３１、ＩＣ側検証部３２、ＩＣ側プログラム修正部３３、ＩＣ側通信部３４、ＩＣ側格納部３５を備える。ＩＣ側格納部３５は、識別子１１ｂ、認証情報１２ｂ及び書き込み用プログラムなどを格納している。
【００４４】
図１０は、実施の形態２における、制御装置１と周辺装置２とＩＣチップ３との動作の関係を表すフローチャートである。なお、制御装置１の動作は、実施の形態１と同じである。
【００４５】
周辺装置２は、ユーザの求めなどに応じて制御装置１のプログラム書き換えを実行するとき、接続の確認などの必要な準備を行った後、ステップＢ２０１から順に動作する。
【００４６】
周辺装置２は、まず、乱数１０１をＩＣチップ３へ要求する（ステップＢ２０１）。
【００４７】
ＩＣチップ３のＩＣ側通信部３４が要求を周辺装置２から受信すると（ステップＢ３０１）、ＩＣ側乱数生成部３１が乱数１０１を生成し（ステップＢ３０２）、ＩＣ側通信部３４が生成された乱数１０１を周辺装置２へ送信する（ステップＢ３０３）。
【００４８】
周辺装置２は、乱数１０１をＩＣチップ３から受信すると（ステップＢ２０２）、乱数１０１を含む伝文を制御装置１へ送信する（ステップＢ２０３）。
【００４９】
制御装置１の制御側通信部１１は、乱数１０１を含む伝文を周辺装置２から受信し（ステップＡ１０１）、制御側認証情報格納部１４が応答値１０２ａを生成する（ステップＡ１０２）。そして、制御側通信部１１が識別子１１ａを取り出し（ステップＡ１０３）、識別子１１ａと応答値１０２ａとを含む伝文を周辺装置２へ送信する（ステップＡ１０４）。
【００５０】
周辺装置２は、識別子１１ａと応答値１０２ａとを含む伝文を制御装置１から受信すると（ステップＢ２０４）、識別子１１ａと応答値１０２ａとをＩＣチップ３へ送信する（ステップＢ２０５）。
【００５１】
ＩＣチップ３は、ＩＣ側通信部３４が識別子１１ａと応答値１０２ａとを周辺装置２から受信し（ステップＢ３０４）、ＩＣ側検証部３２がまず識別子１１ａを検証する（ステップＢ３０５）。検証の結果、識別子１１ａが正当であったなら次へ進み（ステップＢ３０６）、そうでなければ、ＩＣ側通信部３４は、制御装置１が不当であった旨を示す判定結果２００を周辺装置２へ送信する（ステップＢ３０９ｂ）。ＩＣチップ３のＩＣ側検証部３２は、ステップＢ３０５の判定結果が正当であったなら、次に応答値１０２ａを検証する（ステップＢ３０７）。検証の結果、応答値１０２ａが正当であったなら次へ進み（ステップＢ３０８）、そうでなければ、ＩＣ側通信部３４は、制御装置１が不当であった旨を示す判定結果２００を周辺装置２へ送信する（ステップＢ３０９ｂ）。こうして、応答値１０２ａが正当であった場合のみ、制御装置１が正当であった旨を示す判定結果２００を周辺装置２へ送信し（ステップＢ３０９ａ）、プログラム書込を行う（ステップＢ３１０）。
【００５２】
周辺装置２は、判定結果２００をＩＣチップ３から受信し（ステップＢ２０６）、これが正当であったなら以降のプログラム書込を中継し（ステップＢ２０７、Ｂ２０８）、そうでなければ終了する。
【００５３】
実施の形態１において、ステップＡ２０１、ステップＡ２０２、ステップＡ２０４、ステップＡ２０６について言及した内容は、実施の形態２においては、それぞれステップＢ３０２、ステップＢ３０３、ステップＢ３０５、ステップＢ３０７についてそのまま該当する。
また、実施の形態１において、ステップＡ１０２について言及した内容は、実施の形態２においてもそのまま該当する。
【００５４】
周辺装置２とＩＣチップ３との間で送受信されるデータ、具体的には、ステップＢ２０２とＢ３０３で送受信される乱数１０１および、ステップＢ２０５とＢ３０４で送受信される識別子１１ａと応答値１０２ａは、これらのデータのみを、周辺装置２とＩＣチップ３との間の固有の形式で送受信してもよいし、制御装置１と周辺装置２との間の通信形式、すなわち、ステップＢ２０３とＡ１０１で送受信される乱数１０１を含む伝文および、ステップＢ２０４とＡ１０４で送受信される識別子１１ａと応答値１０２ａをともに含む伝文と、それぞれ同じ形式を持っていてもよい。後者の場合、周辺装置２は、単に制御装置１とＩＣチップ３との間で、通信を中継するだけの動作を行うことができる。
【００５５】
実施の形態２では、特に認証情報１２ｂを、周辺装置２そのものではなくＩＣチップ３に格納し、実施の形態１で周辺装置２が実施していた処理のほぼ全てをＩＣチップ３で実行しているため、認証情報１２ａが装置自身から漏洩するおそれがほとんどない。
【００５６】
このように、制御装置へのプログラムの書込に先立って、書込先の制御装置を識別し認証するように構成し、かつ、書込先の制御装置の認証のための情報をＩＣチップに格納し、そこで識別・認証を行うことで、不正な制御装置への書込によるプログラムの盗用や、誤った制御装置への書込による誤動作を防ぐことができると同時に、識別・認証のための情報を安全に格納・使用し、これらの情報の盗用や、それによるなりすましを防止できる。
【００５７】
実施の形態３．
次に図１１を参照して実施の形態３を説明する。実施の形態２では、図１０のＩＣチップ３の動作（Ｂ３１０）に示したように、ＩＣチップ３がプログラム書き込みを行い、周辺装置２はその中継をするのみであった（図１０のＢ２０８）。これに対して実施の形態３では、後述の図１１のＣ２０８に示すように、周辺装置２がプログラムの書き込みを行う。この点が実施の形態２（図１０）との相違である。これにより、ＩＣチップ３で行うべき処理を簡略化して、処理時間を短縮し、また、ＩＣチップ３のコストを低減できる。
【００５８】
実施の形態３におけるシステムの構成は、実施の形態２で示した図７と同じである。ただし、制御装置１へ書き込まれるべきプログラムは、周辺装置２もしくはＩＣチップ３の、いずれかが保持するものとする。
【００５９】
図１１は、実施の形態３における、それぞれ周辺装置２とＩＣチップ３の動作を表している。制御装置１の動作は、実施の形態１と同じである。
【００６０】
実施の形態３における周辺装置２とＩＣチップ３の動作は、実施の形態２における周辺装置２とＩＣチップ３の動作と、それぞれほとんど同じである。実施の形態３の周辺装置２の動作のうち、ステップＣ２０１からステップＣ２０７までは、実施の形態２のステップＢ２０１からステップＢ２０７までと、それぞれ同じである。また、実施の形態３のＩＣチップ３の動作のうち、ステップＣ３０１からステップＣ３０９ａ／ｂまでは、実施の形態２のステップＢ３０１からステップＢ３０９ａ／ｂまでと、それぞれ同じである。
【００６１】
ＩＣチップ３は、判定結果２００を周辺装置２へ送信すると（ステップＣ３０９ａ）、そのまま終了する。
【００６２】
一方、周辺装置２は、ＩＣチップ３から受信した判定結果２００が、正当であることを示していれば（ステップＣ２０７）、プログラム書込を実行する（ステップＣ２０８）。
【００６３】
制御装置１へ書き込まれるべきプログラムを周辺装置２が直接保持している場合には、ステップＣ２０８で周辺装置２は、自身が保持するプログラムを使ってプログラム書込を実行する。一方、プログラムをＩＣチップ３が保持している場合には、周辺装置２はＩＣチップ３から、書き込まれるべきプログラムを受け取る。受け取る方法としては、ＩＣチップ３が周辺装置２へ、正当であることを示す判定結果２００と同時に送信する方法や、ＩＣチップ３が周辺装置２へ正当であることを示す判定結果２００を送信してから、一定時間もしくは一定回数のみ、周辺装置２がＩＣチップ３から読み出すことが可能な状態にする方法などがある。
【００６４】
このように、制御装置へのプログラムの書込に先立って、書込先の制御装置を識別し認証するように構成し、かつ、書込先の制御装置の認証のための情報をＩＣチップに格納し、そこで識別・認証を行うが、ＩＣチップ上では書込先の制御装置の認証だけを行い、実際のプログラム書込は周辺装置が行うように構成することにより、不正な制御装置への書込によるプログラムの盗用や、誤った制御装置への書込による誤動作を防ぐことができると同時に、識別・認証のための情報を安全に格納・使用し、これらの情報の盗用や、それによるなりすましを防止でき、さらに、ＩＣチップで行うべき処理を簡略化して、処理時間を短縮し、また、ＩＣチップのコストを低減できる。
【００６５】
実施の形態４．
次に図１２〜図１９を用いて実施の形態４を説明する。実施の形態１〜実施の形態３では周辺装置２（あるいはＩＣチップ３）が制御装置１を認証していた。実施の形態４では、制御装置も、周辺装置（あるいはＩＣチップ）を認証する処理を加えた実施形態である。これにより、不正な装置が制御装置の保有する認証情報１２ａの解析を目的として制御装置に対し繰り返し認証を試み、乱数と応答値との組合せを収集する行為を確実に防止することができる。
【００６６】
実施の形態４におけるシステムの構成は、実施の形態１または実施の形態２と同じである。ここでは、実施の形態２の構成（図７）をとるものとして説明する。
【００６７】
図１２、図１３、図１４は、実施の形態４における制御装置１００、周辺装置２００、ＩＣチップ３００を示す。制御装置１００は、制御装置１に対して、さらに、制御側乱数生成部１０１を備える。周辺装置２００は、周辺装置２に対して、さらに、周辺側応答値生成部２０１を備える。ＩＣチップ３００は、ＩＣチップ３に対して、さらに、ＩＣ側応答値生成部３０１を備える。
【００６８】
図１５は、実施の形態４における、それぞれ制御装置１００、周辺装置２００およびＩＣチップ３００の動作を表すフローチャートである。図１５を用いて動作を説明する。
【００６９】
周辺装置２００は、ユーザの求めなどに応じて制御装置１００のプログラム書き換えを実行するとき、接続の確認などの必要な準備を行った後、ステップＤ２０１から順に動作する。
【００７０】
周辺装置２００は、まず、乱数２０１を制御装置１００へ要求する（ステップＤ２０１）。制御装置１００は、制御側通信部１１により乱数要求を周辺装置２００から受信すると（ステップＤ１０１）、制御側乱数生成部１０１が乱数２０１を生成し（ステップＤ１０２）、生成した乱数２０１を含む伝文を制御側通信部１１により周辺装置２００へ送信する（ステップＤ１０３）。
【００７１】
周辺装置２００は、乱数２０１を含む伝文を制御装置１００から受信すると（ステップＤ２０２）、乱数２０１をＩＣチップ３００へ送信する（ステップＤ２０３）。
【００７２】
ＩＣチップ３００では、ＩＣ側通信部３４が乱数２０１を周辺装置２００から受信し（ステップＤ３０１）、ＩＣ側応答値生成部３０１により応答値２０２ａを生成し（ステップＤ３０２）、ＩＣ側通信部３４が応答値２０２ａを周辺装置２００へ送信する（ステップＤ３０３）。
【００７３】
周辺装置２００は、応答値２０２ａをＩＣチップ３００から受信すると（ステップＤ２０４）、周辺側通信部２４により応答値２０２ａを含む伝文を制御装置１００へ送信する（ステップＤ２０５）。
【００７４】
制御装置１００は、制御側通信部１１により応答値２０２ａを含む伝文を周辺装置２００から受信し（ステップＤ１０４）、制御側検証部１０２により応答値２０２ａを検証し（ステップＤ１０５）、制御側通信部１１により判定結果３００を含む伝文を周辺装置２００へ送信する（ステップＤ１０６）。さらに、制御側検証部１０２による検証の結果、応答値１０２ａが正当であったなら（ステップＤ１０７）、制御装置１００は、図６に示した制御装置１と同様の動作（Ａ１０１〜Ａ１０４）を行う（ステップＤ１０８）。そうでなければ終了する。
【００７５】
周辺装置２００は、周辺側通信部２４により判定結果３００を含む伝文を制御装置１００から受信し（ステップＤ２０６）、判定結果３００をＩＣチップ３００へ送信する（ステップＤ２０７）。周辺装置２００は、判定結果３００が正当であることを示すものであったなら（ステップＤ２０８）、図１０あるいは図１１に示した周辺装置２と同様の動作を行う（ステップＤ２０９）。そうでなければ終了する。
【００７６】
ＩＣチップ３００は、ＩＣ側通信部３４により判定結果３００を周辺装置２００から受信し（ステップＤ３０４）、これが正当であることを示すものであったなら（ステップＤ３０５）、図１０あるいは図１１に示したＩＣチップ３と同様の動作を行う（ステップＤ３０６）。そうでなければ終了する。
【００７７】
こうして、応答値２０２ａが正当であった場合のみ、実施例２または実施例３の動作が実施される。
【００７８】
実施の形態１において、ステップＡ１０２、ステップＡ２０１、ステップＡ２０２、ステップＡ２０６について言及した内容は、実施の形態４においてそれぞれ、ステップＤ３０２、ステップＤ１０２、ステップＤ２０１、ステップＤ１０５についてそのまま該当する。ただし、実施の形態１で乱数１０１について述べていることは実施の形態４では乱数２０１にあてはまり、実施の形態１で応答値１０２ａ、１０２ｂついて述べていることは実施の形態４では応答値２０２ａ、２０２ｂにあてはまる。
【００７９】
システムの構成が実施の形態１（図３）と同じである場合には、すなわち、ＩＣチップを用いない構成の場合には、制御装置１００の動作は、図１５の制御装置１００のフローチャートとほぼ同様になり、また、周辺装置２００の動作は図１５のＩＣチップ３００のフローチャートの動作と、ほぼ同じとなる。この場合、制御装置１００は、ステップＤ１０８において、図６に示した制御装置１と同様の動作を行う。また、周辺装置２００はステップＤ３０６において、図６に示した周辺装置２と同様の動作を行う。図１６には、このＩＣチップを用いない構成の場合の動作を示した。
【００８０】
判定結果３００が正当であるときには、周辺装置２００がステップＤ２０７でＩＣチップ３００へ判定結果３００を送信する際に、実施の形態２のステップＢ２０１もしくは実施の形態３のステップＣ２０１を、これと同時に実行してもよい。同様に、ＩＣチップ３００は、ステップＤ３０４と同時に、実施の形態２のステップＢ３０１もしくは実施の形態３のステップＣ３０１を実行してもよい。すなわち、判定結果３００の送受信と同時に、乱数１０１を送受信してもよい。
【００８１】
さらに、実施の形態２または実施の形態３の動作と、実施の形態４の動作を並行して行うことも可能である。図１７は、実施の形態２の動作と実施の形態４の動作を並行して行う場合の、それぞれ制御装置１００、周辺装置２００およびＩＣチップ３００の動作を表している。
【００８２】
図１７に示した制御装置１００の動作について、ステップＥ１０１、Ｅ１０２、Ｅ１０３、Ｅ１０５、Ｅ１０６、Ｅ１０７、Ｅ１０８、Ｅ１０９ｂは、それぞれステップＤ１０１、Ｄ１０２、Ｄ１０３、Ｄ１０５、Ｄ１０７、Ａ１０２、Ａ１０３、Ｄ１０６と同じ動作を表す。また、ステップＥ１０４はステップＤ１０４とステップＡ１０１を、ステップＥ１０９ａはステップＤ１０６とステップＡ１０４を、それぞれ同時に実行する動作を表す。
【００８３】
図１７に示した周辺装置２００の動作について、ステップＥ２０１、Ｅ２０２、Ｅ２０３、Ｅ２０７、Ｅ２０８ｂ、Ｅ２０９、Ｅ２１０、Ｅ２１１は、それぞれステップＤ２０１、Ｄ２０２、Ｄ２０３、Ｄ２０８、Ｄ２０７、Ｂ２０６、Ｂ２０７、Ｂ２０８と、同じ動作を表す。また、ステップＥ２０４はステップＤ２０４とステップＢ２０２を、ステップＥ２０５はステップＤ２０５とステップＢ２０３を、ステップＥ２０６はステップＤ２０６とステップＢ２０４を、ステップＥ２０８ａはステップＤ２０７とステップＢ２０５を、それぞれ同時に実行する動作を表す。
【００８４】
図１７に示したＩＣチップ３００の動作について、ステップＥ３０１、Ｅ３０２、Ｅ３０３、Ｅ３０６、Ｅ３０７、Ｅ３０８、Ｅ３０９、Ｅ３１０、Ｅ３１１ａ、Ｅ３１１ｂ、Ｅ３１２は、それぞれステップＤ３０１、Ｄ３０２、Ｂ３０２、Ｄ３０５、Ｂ３０５、Ｂ３０６、Ｂ３０７、Ｂ３０８、Ｂ３０９ａ、Ｂ３０９ｂ、Ｂ３１０と、同じ動作を表す。また、ステップＥ３０４はステップＤ３０３とステップＢ３０３を、ステップＥ３０５はステップＤ３０４とステップＢ３０４を、それぞれ同時に実行する動作を表す。
【００８５】
なお、図１８は、実施の形態１の場合について、すなわち、ＩＣチップを用いない構成において、周辺装置が制御装置を認証する処理と、制御装置が周辺装置を認証する処理とを並行しておこなう場合のフローチャートを示した。
【００８６】
上記の説明では、ステップＤ３０２およびステップＥ３０２における応答値２０２ａの生成と、ステップＤ１０５およびステップＥ１０５における応答値２０２ａの検証とは、いずれも、実施の形態２および実施の形態３で用いている認証情報１２ａ、１２ｂを使って行われている。これを、図１９に示すように、制御装置１００とＩＣチップ３００とがそれぞれ認証情報１２ａ、１２ｂとは別の認証情報１３ａ、１３ｂを保持し、ステップＤ３０２およびステップＥ３０２における応答値２０２ａの生成と、ステップＤ１０５およびステップＥ１０５における応答値２０２ａの検証とを、認証情報１３ａ、１３ｂを使って行うように構成してもよい。
【００８７】
このように、実施の形態１〜３に示したプログラム書込に先立つ制御装置１００の認証にさらに先立って、あるいは同時並行して、制御装置１００が上記認証を行う側（周辺装置２００またはＩＣチップ３００）を認証するように構成することで、不正な装置が認証情報１２ａの解析を目的として制御装置１００に対し繰り返し認証を試み（しかし、成功しない）、乱数と応答値との組合せを収集する行為を確実に防止することができ、認証情報１２ａが解析され漏洩する危険性を著しく減少させることができる。
【００８８】
以上の実施の形態では以下のシステムを説明した。すなわち、
プログラムを内部に保持し、プログラムにしたがって機器の制御を行う制御装置と、制御装置に接続され、制御装置内のプログラムに対する書き換え要求を制御装置へ送信する周辺装置から構成されるプログラム修正システムにおいて、
制御装置は、制御装置を識別するための識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを持ち、
周辺装置は、書き換え要求の送信先である制御装置の識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を生成し、乱数を制御装置へ送信するステップと、識別子と応答値とを制御装置から受信し、保持している識別子と受信した識別子とが一致するか否かを判定し、受信した応答値が正当であるか否かを判定するステップを持ち、書き換え要求を制御装置へ送信する前にこれらのステップを順に実行し、識別子が一致し、かつ応答値が正当であると判定された場合にのみ、書き換え要求を制御装置へ送信することを特徴とするプログラム修正システム。
【００８９】
以上の実施の形態では以下のシステムを説明した。すなわち、
プログラムを内部に保持し、プログラムにしたがって機器の制御を行う制御装置と、制御装置に接続され、制御装置内のプログラムに対する書き換え要求を制御装置へ送信する周辺装置と、周辺装置に装着もしくは内蔵されるＩＣチップとから構成されるプログラム修正システムにおいて、
制御装置は、制御装置を識別するための識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを持ち、
ＩＣチップは、書き換え要求の送信先である制御装置の識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数の送信要求を周辺装置から受信し、乱数を生成し、乱数を周辺装置へ送信するステップと、識別子と応答値とを周辺装置から受信し、保持している識別子と受信した識別子とが一致するか否かを判定し、受信した応答値が正当であるか否かを判定するステップを持ち、
周辺装置は、乱数の送信要求をＩＣチップへ送信するステップと、乱数をＩＣチップから受信し、乱数を制御装置へ送信するステップと、識別子と応答値とを制御装置から受信し、識別子と応答値とをＩＣチップに送信するステップと、書き換え要求をＩＣチップから受信し、制御装置へ送信するステップとを持ち、
周辺装置とＩＣチップとは、書き換え要求を制御装置へ送信する前にこれらのステップを順に実行し、
ＩＣチップは、識別子が一致し、かつ応答値が正当であると判定された場合にのみ、書き換え要求を周辺装置へ送信することを特徴とするプログラム修正システム。
【００９０】
以上の実施の形態では以下のシステムを説明した。すなわち、
プログラムを内部に保持し、プログラムにしたがって機器の制御を行う制御装置と、制御装置に接続され、制御装置内のプログラムに対する書き換え要求を制御装置へ送信する周辺装置と、周辺装置に装着もしくは内蔵されるＩＣチップとから構成されるプログラム修正システムにおいて、
制御装置は、制御装置を識別するための識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを持ち、
ＩＣチップは、書き換え要求の送信先である制御装置の識別子と、制御装置と識別子との対応関係を確認するための認証情報とを保持し、乱数の送信要求を周辺装置から受信し、乱数を生成し、乱数を周辺装置へ送信するステップと、識別子と応答値とを周辺装置から受信し、保持している識別子と受信した識別子とが一致するか否かを判定し、受信した応答値が正当であるか否かを判定し、識別子が一致し、かつ応答値が正当であると判定された場合には制御装置が正当であることを示す判定結果を、そうでない場合には制御装置が不当であることを示す判定結果を、周辺装置に送信するステップを持ち、
周辺装置は、乱数の送信要求をＩＣチップへ送信するステップと、乱数をＩＣチップから受信し、乱数を制御装置へ送信するステップと、識別子と応答値とを制御装置から受信し、識別子と応答値とをＩＣチップに送信するステップと、判定結果をＩＣチップから受信するステップとを持ち、書き換え要求を制御装置へ送信する前にこれらのステップを順に実行し、ＩＣチップから受信した判定結果が制御装置が正当であることを示している場合にのみ、書き換え要求を制御装置へ送信することを特徴とするプログラム修正システム。
【００９１】
以上の実施の形態では以下のシステムを説明した。すなわち、
制御装置は、乱数を生成し、乱数を送信するステップと、応答値を受信し、受信した応答値が正当であるか否かを判定するステップを持ち、
周辺装置は、乱数を受信し、乱数と認証情報とから応答値を生成し、応答値を返送するステップを持ち、
制御装置は、受信した応答値が正当であると判定された場合にのみ、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを実行するプログラム修正システム。
【００９２】
以上の実施の形態では以下のシステムを説明した。すなわち、
制御装置は、乱数を生成し、乱数を送信するステップと、応答値を受信し、受信した応答値が正当であるか否かを判定するステップを持ち、
周辺装置は、乱数を制御装置から受信し、乱数をＩＣチップへ送信するステップと、応答値をＩＣチップから受信し、応答値を送信するステップを持ち、
ＩＣチップは、乱数を周辺装置から受信し、乱数と認証情報とから応答値を生成し、応答値を周辺装置へ送信するステップを持ち、
制御装置は、受信した応答値が正当であると判定された場合にのみ、乱数を受信し、乱数と認証情報とから応答値を生成し、識別子と応答値とを返送するステップを実行する、プログラム修正システム。
【図面の簡単な説明】
【００９３】
【図１】実施の形態１における周辺装置２の外観の一例を示す図。
【図２】実施の形態１における周辺装置２のハードウェア構成を示す図。
【図３】実施の形態１におけるシステム構成を示す図。
【図４】実施の形態１における制御装置１のブロック図。
【図５】実施の形態１における周辺装置２のブロック図。
【図６】実施の形態１におけるシステムの動作を示すフローチャート。
【図７】実施の形態２におけるシステム構成図。
【図８】実施の形態２におけるＩＣチップ３のブロック図。
【図９】実施の形態２におけるハードウェア構成図。
【図１０】実施の形態２におけるシステムの動作を示すフローチャート。
【図１１】実施の形態３におけるシステムの動作を示すフローチャート。
【図１２】実施の形態４における制御装置１００のブロック図。
【図１３】実施の形態４における周辺装置２００のブロック図。
【図１４】実施の形態４におけるＩＣチップ３００のブロック図。
【図１５】実施の形態４におけるシステムの動作を示すフローチャート。
【図１６】実施の形態４におけるシステムの動作を示すフローチャート。
【図１７】実施の形態４におけるシステムの動作を示すフローチャート。
【図１８】実施の形態４におけるシステムの動作を示すフローチャート。
【図１９】実施の形態４におけるシステム構成図。
【符号の説明】
【００９４】
１  制御装置、２  周辺装置、３  ＩＣチップ、１１ａ，１１ｂ  識別子、１２ａ，１２ｂ  認証情報、１１  制御側通信部、１２  制御側プログラム格納部、１３  制御側応答値生成部、１４  制御側認証情報格納部、２１  周辺側乱数生成部、２２  周辺側検証部、２３  周辺側プログラム修正部、２４  周辺側通信部、２５  周辺側格納部、３１  ＩＣ側乱数生成部、３２  ＩＣ側検証部、３３  ＩＣ側プログラム修正部、３４  ＩＣ側通信部、３５  ＩＣ側格納部、１００  制御装置、１０１  制御側乱数生成部、１０２  制御側検証部、２００  周辺装置、２０１  周辺側応答値生成部、３００  ＩＣチップ、３０１  ＩＣ側応答値生成部、３１１  ＣＰＵ、３１２  不揮発性メモリ、３１３  通信インタフェース、３１４  バス。
【図１】
2008152446.tif 000003
【図２】
2008152446.tif 000004
【図３】
2008152446.tif 000005
【図４】
2008152446.tif 000006
【図５】
2008152446.tif 000007
【図６】
2008152446.tif 000008
【図７】
2008152446.tif 000009
【図８】
2008152446.tif 000010
【図９】
2008152446.tif 000011
【図１０】
2008152446.tif 000012
【図１１】
2008152446.tif 000013
【図１２】
2008152446.tif 000014
【図１３】
2008152446.tif 000015
【図１４】
2008152446.tif 000016
【図１５】
2008152446.tif 000017
【図１６】
2008152446.tif 000018
【図１７】
2008152446.tif 000019
【図１８】
2008152446.tif 000020
【図１９】
2008152446.tif 000021