(57)【要約】【課題】  マイコンのファイルによりシステムの動作を制御する装置において、プログラムを変換したファイルが不正に改ざんされたものであればシステムの動作が異常なものになったり、不正な動作を行ったりするようになってしまう。また、一度更新すると、再び元のファイルに戻せないという問題があった。【解決手段】  プログラムが更新されるときに、プログラムを変換したファイルに付加された電子署名により、不正に改ざんされたファイルでないかを確認して、ファイルを更新するようにする。電子署名の確認は、ファイル全体ではなく、特に重要な部分のみとすることで、署名確認のための時間を短くし、一旦ファイルを蓄える領域を小さくすることが出来る。これにより、正当なファイル場合のみ、更新するように制御することが出来る。【選択図】  図１
2008305035.tif 000002
【特許請求の範囲】
【請求項１】
プログラムにしたがってシステムの動作を制御する制御装置のプログラムを更新する更新方法において、
プログラムを変換したファイルの一部に電子署名が付加されており、
ファイルを蓄えるメモリに新たなファイルを書き込むステップと、
電子署名が付加されたファイルと電子署名を読み出すステップと、
電子署名によりファイルが改ざんされていないことを確認するステップとを備え、
ファイルを蓄えるメモリに新たなファイルを書き込むステップの前に、
読み出された電子署名によりファイルが改ざんされていないことを確認した後に、
メモリに蓄えたファイルを新たなファイルにより書き換える
ことを特徴とする更新方法。
【請求項２】
請求項１に記載の更新方法において、
プログラムを変換した前記ファイルの一部に電子署名が付加されていることを示すフラグが付加されており、
前記フラグにより、電子署名が付加されたファイルの部分を検出し、
該当する部分のファイルの電子署名を確認する
ことを特徴とする更新方法。
【請求項３】
請求項１に記載の更新方法において、
プログラムを変換した前記ファイルの一部に電子署名が付加されており、
電子署名が付加された部分は、プログラムにおいて変更させないようにした部分であり、
前記電子署名が付加されたファイルの部分を検出し、
該当するファイルの電子署名を確認する
ことを特徴とする更新方法。
【請求項４】
プログラムを変換したファイルをメモリに格納し、
メモリに格納したファイルにしたがってシステムの動作を制御する制御装置において、
前記メモリに書かれたファイルを更新する更新回路と
プログラムを変換したファイルの一部に電子署名が付加されており、
電子署名が付加されたファイルと電子署名を読み込む入出力回路と、
前記電子署名によりファイルが改ざんされていないことを確認する確認回路を備え、
ファイルが改ざんされていないことを確認した後に、
ファイルを蓄えるメモリに新たなファイルを書き込む
ことを特徴とする制御装置。
【請求項５】
請求項４に記載の制御装置において、
プログラムを変換した前記ファイルの一部に電子署名が付加されていることを示すフラグが付加されており、
前記フラグにより、電子署名が付加されたファイルの部分を検出し、
該当する部分のファイルの電子署名を確認する
ことを特徴とする制御装置。
【請求項６】
請求項４に記載の制御装置において、
プログラムを変換した前記ファイルの一部に電子署名が付加されており、
電子署名が付加された部分は、プログラムにおいて変更させないようにした部分であり、
前記電子署名が付加されたファイルの部分を検出し、
該当するファイルの電子署名を確認する
ことを特徴とする制御装置。
【請求項７】
請求項４に記載の制御装置において、
プログラムを変換した前記ファイルの一部に電子署名が付加されていることを示すフラグが付加されており、
前記フラグにより、電子署名が付加されたファイルの部分を検出し、
該当する部分のファイルの電子署名を確認するために、第２のメモリに一旦ファイルの該当する部分を蓄え、
第２のメモリから該当する部分のファイルを読み出すことで電子署名を確認する
ことを特徴とする制御装置。
【請求項８】
請求項４に記載の制御装置において、
プログラムを変換した前記ファイルの一部に電子署名が付加されていることを示すフラグが付加されており、
前記フラグにより、電子署名が付加されたファイルの部分を検出し、
該当する部分のファイルの電子署名を確認するために、第２のメモリに一旦ファイルの該当する部分を蓄え、
第２のメモリから該当する部分のファイルを読み出すことで電子署名を確認し、
電子署名により改ざんが検出されたときには、ファイルの更新を禁止するようにした
ことを特徴とする制御装置。
【請求項９】
プログラムを変換したファイルをメモリに格納し、
メモリに格納したファイルにしたがってシステムの動作を制御する制御装置に対して、
ファイルの転送を制御する制御ソフトにおいて、
前記制御装置は、前記メモリに書かれたファイルを更新する更新回路と
プログラムを変換したファイルの一部に電子署名が付加されており、
電子署名が付加されたファイルと電子署名を読み込む入出力回路と、
前記電子署名によりファイルが改ざんされていないことを確認する確認回路を備えており、
前記制御ソフトは、前記電子署名によりファイルが改ざんされていないことを確認する確認処理を備えており、
前記制御装置と前記制御ソフトそれぞれで、ファイルの異なる部分に対して改ざんされていないことを確認した後に、
前記制御装置のファイルを蓄えるメモリに新たなファイルを書き込むために、
ファイルを転送するようにした
ことを特徴とする制御ソフト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを組み込んで動作制御させる装置にかかわり、特に、プログラムをダウンロードして更新する仕組みを備えたシステムに関する。
【背景技術】
【０００２】
光ディスクドライブは、PC（Personal Computer）に搭載され、普及が広がっている。これらの多くは、マイクロコンピュータ（以下マイコンと略す）を備え、マイコンを制御するファームウェアと呼ばれるプログラムを実行形式に変換したファイルに記憶された内容にしたがって動作する。このファームウェアは、機能の追加などで、プログラムが更新されることがあり、更新したプログラムを変換したファイルをダウンロードすることにより、ファームウェアを更新することが出来る。
【０００３】
このようなファームウェアをダウンロードする技術として特許文献１が知られている。特許文献１では、通信制御装置のファームウェアの分割ダウンロードにおいて、通信制御装置の制御に関し最低限必要とするファームウェアをダウンロードする方式について述べられている。
【０００４】
【特許文献１】特開平５−２２７２４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
近年、ネットワークの普及に伴い、PCがコンピュータウィルスに感染する事態が多数発生している。コンピュータウィルスは、さまざまな種類があるが、PCに不正なプログラムが侵入することで、PCの動作に不具合を発生させるものが多数存在している。このような不正なプログラムが、もし、マイコンのプログラムとして侵入すると、マイコンは不正なプログラムのために正しく動作することが出来ず、その機器の動作も正しく動作できなくなってしまう。
【課題を解決するための手段】
【０００６】
本発明は、プログラムにしたがってシステムの動作を制御する制御装置のプログラムを更新する更新方法で、プログラムを変換したファイルの一部に電子署名が付加されており、ファイルを蓄えるメモリに新たなファイルを書き込むステップと、電子署名が付加されたファイルと電子署名を読み出すステップと、
電子署名によりファイルが改ざんされていないことを確認するステップとを備え、ファイルを蓄えるメモリに新たなファイルを書き込むステップの前に、電子署名が付加されたファイルと電子署名を読み出し、
電子署名によりファイルが改ざんされていないことを確認した後に、ファイルを蓄えるメモリを新たなファイルにより書き換えることで実現できる。
【発明の効果】
【０００７】
本発明によれば、ファームウェアを更新する際に、正式なプログラムかどうかを確認することで正しいプログラムの更新を行うことが可能となる。
【発明を実施するための最良の形態】
【０００８】
本発明にかかわるファームウェアのダウンロードについて説明する。本説明は、光ディスクドライブを例に用いて説明するが、これは特に光ディスクドライブに限定されるものではなく、ファームウェアの処理動作を記述したもの（例えばＣ言語のソースコード）によってマイコンを制御するプログラム（制御プログラム）を更新するシステムであれば、適用可能である。
【０００９】
図１は、ファームウェアの構成の一例を示したものである。１０１，１０３，１０５，１０７は、プログラムを変換したファイルが格納されている領域を示しており、ファイルは、例えばプログラムをコンパイルして実行形式にして、Ｆｌａｓｈ−ＲＯＭに入れて実際にマイコン動作を制御するものである。１０２，１０４，１０６，１０８は、各領域に格納されたファイルに対して付加された電子署名である。１０１ファイル格納領域１に対して１０２電子署名１が付加されている関係となる。１１０は全体ファイルに対する電子署名Pである。
【００１０】
電子署名は、そのファイルの正当性を保証するために付けられる情報である。電子署名は、通常、ファイルの署名を作成する側が、ファイルから一定の法則で求めた固定長のデータ、例えばHash関数などの一方向関数を用いて求めた値を、自らの秘密鍵で暗号化して求められる。ファイルを受け取る側は、ファイルの正当性を確認するために、秘密鍵に対応した公開鍵を用いて電子書名を復号し、同じようにファイルから求めたHash値と照合して、一致すれば同一のものであると判断できる。
【００１１】
ここで、電子署名の方式は特に限定しないが、電子署名を付加する元のデータが変わった場合には、異なる電子署名の値が求まるものである。これにより、電子署名は、改ざんが行われた場合には、改ざんされたことを検出することが出来る。
【００１２】
全体ファイルに対する署名Pは、ファイル全体を用いて、Hash値を計算するもので、これにより全ファイルの範囲で改ざんがなされていないかどうかを確認することが出来る。ただし、ファイルが大きくなれば、当然Hash値の計算も時間がかかり、署名の確認に時間をとることになる。ここで、本実施例では、ファイル全体を複数の領域に分割し、それぞれに対して電子署名を付加するようにしたものである。ファイル格納領域１に対して付加された電子書名１は、ファイル格納領域１のデータだけを計算してHash値を求めればよく、ファイル全体のデータに対してHash値を計算するよりも、計算時間を短くすることができる。ファイル全体の正当性を確認するためには、全ファイルに対して付加された電子署名を確認する必要があるが、ファイルの一部が改ざんされてはならない重要な部分であり、その部分が含まれている領域の正当性を確認すればよいのであれば、ファイルを分割して署名を付加し、必要な部分の署名を確認することで、重要な部分の正当性を確認することが可能となる。ファイル格納領域を分割してそれぞれに電子署名が付加されているならば、全体ファイルに対する署名Pは、必ずしも必要ではない。また、ファイルの重要な部分が一部分だけの場合、例えばその部分を改ざんすることでコピー防止機能が無効になるなどの場合には、そのファイルの重要な一部分に署名が付加されていれば、その他の領域の署名確認を省くことも可能である。
【００１３】
図１の例では、ファイル格納領域を複数に分割し、それぞれに電子署名を付加する例として示したが、図４は重要なファイルの部分にのみ、電子署名を付加するようにした例である。ここで、１１１署名領域表示部には、どのファイル格納領域に対して電子署名が付加されているかを示したものである。例えば、動作を記述したファイルを実行形式のコードに変換する場合に、ファイルの重要な部分に相当する実行形式のコードに対し、そのコードがメモリ領域のどこに位置するかがわかるフラグを付加するようにする。このメモリ領域の場所を署名領域表示部１１１に記憶することで、どの領域に署名が付加されたかを検出することが出来る。署名が付加された領域は、一つでなくて複数でも構わない。その場合には、署名領域表示部１１１に、複数の領域を示す、識別番号を記すことで表現できる。もしくは、署名領域の最初と最後のアドレスを示しても良い。また、図では署名領域表示部１１１をファイルの先頭に置いたが、特定の位置であれば限定しない。また、別に署名領域を伝える手段を備えていれば、ファイル格納の領域中に入れる必要は無い。例えば、図３にて後で説明するファイルが保存されるストレージに、ファイルと対応するように保存し、ファイルをダウンロードする時に、併せて転送するようにしてもかまわない。
【００１４】
また、プログラムを変換してファイルを作成する時に、プログラムを予めまとまった処理ごとに分割し、メモリ上の格納する領域を、プログラムの処理ごとに分けて配置するようにしても良い。このようにすることで、プログラムがメモリ上のどこに格納されるかを明確にすることが出来、署名領域表示部１１１を明確に検出することができ、更に例えばメモリ上の同じ位置に、同様の処理のプログラムに相当する部分を配置することが可能になる。このように、分割してファイル変換を行うことで、プログラムの処理の中で重要な部分を変換して特定のメモリ上の領域に配置するかを制御することができ、その特定の領域に対して署名を付加することが容易となり、また署名の確認も同じ領域の確認をすればよいため、署名確認のため制御が容易になる。
【００１５】
図５は、図１で示した領域ごとの署名をまとめて格納するようにしたことと、各領域の署名だけに対して、さらに署名を付加した例を示したものである。１０２，１０４，１０６，１０８は、各領域のファイルに対して付加された電子署名であり、１０９は署名（１〜n）に対して付加した署名である。このように各領域の署名を集めることで、署名部だけをまとめて読み込むことが容易になる。また、署名（１〜n）の署名Qを確認することで、少なくとも署名部が改ざんされていないことが確認できる。
【００１６】
図２は、ファイルを更新する光ディスクドライブの装置構成の一例を示したものである。２０１は光ディスク、２０２はピックアップ、２０３は信号処理回路、２０４はバッファメモリ、２０５はサーボ制御回路、２０６はモータ、２０７はシステム制御回路、２０８はプログラムファイルメモリ、２０９は署名確認回路、２１０は入出力回路、２１１は信号入出力、２１２は信号処理集積回路である。
【００１７】
まず、光ディスクドライブの記録再生の動作を説明する。ピックアップ２０２からレーザを照射し、その反射光によって、光ディスク２０１に記録された信号を読み出す。読み出された信号は、信号処理回路２０３において、増幅、波形等化等のアナログ信号処理と、２値化、復調、誤り訂正、アドレス検出等のデジタル的な処理が行われる。このとき、信号処理するためにバッファメモリ２０４にデータを一旦蓄える。信号処理回路２０３で処理されたデータは、信号入出力２１１から出力される。サーボ制御回路２０５では、モータ２０６の回転制御を行うとともに、ピックアップ２０２からのレーザ光を光ディスク２０１の記録情報に制御するために、フォーカス、およびトラッキングの制御を行う。システム制御回路２０７は、プログラムファイルメモリ２０８に記憶されたファイルにしたがって、光ディスクドライブ全体の動作を制御する。署名確認回路２０９は、ファイルに付加された電子署名を確認するための回路であり、信号入出力２１１を介して入力されたファイルから電子署名を抽出し、署名から求められる値とファイルから署名作成と同じ法則で求められる値を比べ、改ざんされていないかどうかを確認する。
【００１８】
ここで、図１における全体ファイル署名Pを確認するには、ファイル全体を署名確認回路に入力し、演算する必要がある。ファイルの大きさが大きくなると、ファイルを入力する時間が長くなるだけでなく、署名確認のために行う演算処理も多くなってしまう。そこで、ファイル全体の署名確認を行うのではなく、ファイルの一部分だけを読み出して、その部分に付加された署名を確認するようにすることで、署名確認のための時間を短縮することが出来る。このとき、ファイルの一部分の署名を確認するために、まず該当するファイル領域を読み込んで署名確認し、不正に改ざんされたものでないことを確認した後に、ファイル全体を読み込んで、プログラムメモリ２０８のファイルを書き換えるようにする。このようにすることで、不正に改ざんされたファイルをプログラムファイルメモリに書き込むことを防止することができる。ファイルを更新する時には、必ずしもファイル全体を読み込む必要は無く、ファイルがいくつかに分割されていて、更新が必要な部分が判別可能な場合には、その部分だけを読み込むようにしてもよい。
【００１９】
ファイルを読み込む時に、ファイル全体もしくは、署名確認をするために該当する一部分を読み込んで、バッファメモリ２０４の空き領域に一旦蓄えるようにしてもかまわない。通常、ファイルを更新するときには、記録再生処理を行っているわけではないため、その場合にバッファメモリ２０４の領域をファイル一時保存用に確保し、ファイルを格納できるようにする。このようにすることで、外部からのファイルの読み込みを一回だけとすることができ、読み込み時間を短く出来るとともに、不正に改ざんされていないかを確認してプログラムファイルメモリ２０８の更新を行うことが可能になる。
【００２０】
署名確認によりファイルが不正に改ざんされたことが検出された場合には、信号入出力２１１を介して外部、たとえばホストＰＣにその情報を伝える。ここで、不正なファイルであることをホスト側に伝えることで、ホストはダウンロードしたファイルが不正なものであることを外部に表示することができ、またプログラムが更新されなかったことをユーザに知らせることができる。このとき、外部とのインターフェイス方式は、ＵＳＢやＡＴＡＰＩなど特に限定しないが、改ざんされたファイルであることを伝えるための新たなコマンド定義が必要となる。
【００２１】
ここで、プログラムを変換してファイルを作成するためのファイル作成ツールにおいては、プログラムを実行形式に変換するステップと、所定の領域に対して電子署名を生成し付加するステップを備える。プログラムを変換してファイルを作成するステップでは、プログラムを予めまとまった処理ごとに分割し、メモリ上の格納する領域を、プログラムの処理ごとに分けて配置できるようにする。このようにすることで、プログラムがメモリ上のどこに格納されるかを明確にすることが出来、更にメモリ上の同じ位置に、同様の処理のプログラムに相当する部分を配置することが可能になる。また、変換されたファイルに対して図１，４，または５に示したように特定の領域に署名を付加するようにする。または、特定の処理が含まれている領域についての署名を付加し、署名領域表示フラグとして、ファイルにフラグ情報を付加してもよい。このように、分割してファイル変換を行うことで、プログラムの処理の中で重要な部分を変換して特定のメモリ上の領域に配置するかを制御することができ、その特定の領域に対して署名を付加することが容易となり、また署名の確認も同じ領域の確認をすればよいため、署名確認のため制御が容易になる。
【００２２】
図３は、インターネットのようなネットワークを用いて、外部からファイルをダウンロードする仕組みを示したものである。３０１は光ディスクドライブであり、３０２は光ディスクドライブに搭載された信号処理回路、３０３は同じくシステム制御回路、３０４はプログラムファイル用メモリである。３０５は光ディスクドライブが接続または搭載されたネットワーク機能を備えたPCであり、３０６はネットワーク制御、３０７はダウンロード制御、３０８はダウンロード用メモリである。３０９はダウンロード用のプログラムファイルが保存されているサーバであり、３１０はサーバに備えられたネットワーク制御、３１１はダウンロードファイルを蓄えるためのストレージである。
【００２３】
光ディスクドライブ３０１を使用しているユーザは、ファームウェアの新しいバージョンがリリースされたことを知り、PCを用いてそれをダウンロードして、光ディスクドライブ３０１のファームウェアを更新する場合を示す。まず、新しいバージョンのファームウェアのプログラムがネットワークで接続されたサーバ３０９のダウンロードファイル用ストレージ３１１に保存され、ユーザはこれをネットワーク経由でダウンロードする。ユーザが使用するPC３０５には、ネットワークを経由したデータのやり取りを制御するプログラムが搭載されており、サーバのアドレスを確認し、サーバとのファイルのダウンロードに必要な手続きのやり取りを行う。サーバ３０９側にも、ネットワーク制御のためのプログラムが搭載されている。PCでは、ダウンロードを開始する際に、ダウンロードするファイルを一旦蓄えることができる大きさのダウンロード用メモリを確保する。例えばキャッシュメモリ上に確保する。ファイルのダウンロードの処理を制御するためのアプリケーションやダウンロード用ツールとしてのダウンロード制御プログラム３０７は、PC３０５からサーバ３０９にダウンロードの要求を出し、ネットワークを経由してファイルをダウンロードし、メモリ３０８に一旦蓄える。光ディスクドライブ３０１では、このメモリ３０８に蓄えられたファイルを読み出して、ダウンロードしたファイルが不正に改ざんされたものでないか書名の確認を行う。この場合、図２で示したように、バッファメモリにダウンロードしたプログラムを蓄える必要は無く、PC３０５内のメモリから電子署名と署名が付加された部分のプログラムを読み出し、署名の確認を行う。ここで、署名の確認はPC内のCPU（Central Processing Unit）を用いて行ってもよい。そして、署名に確認によりプログラムが不正に改ざんされたものでないことを確認した後に、ファイルの全体または必要な部分を光ディスクドライブ３０１に送り、プログラムファイルメモリに記憶されたファイルを更新するようにする。このようにPC３０５内のメモリにダウンロードファイルを一時的に蓄えれば、サーバからのダウンロードを１回とすることが出来、ダウンロードしたファイルが不正な場合に、光ディスクドライブ３０１のプログラムファイルメモリの更新を止めることが出来る。
【００２４】
このとき、光ディスクドライブ３０１では、ファイルの一部に付加された電子署名を確認するようにし、PC３０５側で、ファイル全体の署名の確認を行うようにしてもよい。通常、PCに搭載されているCPUの性能は非常に高いので高速に演算処理を行うことが出来る。そのため、光ディスクドライブ３０１では、ファイルの一部分の署名を確認し、ダウンロード制御プログラム３０７からの制御により、PC側でファイル全体の署名を確認することで、効率よくダウンロードしたファイルの改ざん確認をすることが可能となる。
【００２５】
また、ファイルを光ディスクドライブ３０１にダウンロードして、プログラムファイル用メモリを書き換える前に、プログラムファイル用メモリの内容を一旦読み出してバッファメモリやPCのメモリにコピーし、署名確認で不正なファイルと判明した場合に、再度書き戻せるようにしてもよい。
【００２６】
図６はプログラムを変換してファイルにしたときの処理内容を示したものである。これは必ずしもこの状態でプログラムファイルメモリに格納されるとは限らない。ドライブが製造されて始めてプログラムファイルメモリが搭載されたときには、まだ、ファイルが書き込まれておらず初期状態である。これに対して、ドライブとしての動作を制御するために、プログラムを変換したファイルを書き込み、ドライブ動作が可能な状態とする。通常、この工程は、ドライブを製造する段階でなされるため、書き込まれるファイルは、製造メーカが用意した正しいものである。ここで、ドライブ動作制御の処理の中でも、一部の処理は、改ざん防止のため更新不可能な領域として確保する。それは、外部から新たなファイルをダウンロードし、メモリを更新するように制御を行う制御部と、入力されたファイルに付加された署名を確認し、不正なファイルであれば、更新を許可しないように制御する処理の部分である。署名が確認できた後に、ドライブ動作制御の処理の部分を読み込んで、メモリに書き込むことでメモリの不正な書き込みをとめることが出来る。すなわち、メモリへのファイル書き込みを初回か２回目以降かで、メモリに書き込めるプログラムを制限し、署名確認を無くしたり改ざんしたり出来ないようにする。このようにすることで、ドライブのプログラムの信頼性を確保することが可能となる。
【００２７】
ここまで、ダウンロードするファイルの入力は、インターフェイスを介して入力される例を説明したが、インターフェイス部から入力されたデータは、一旦バッファメモリに蓄えられる。ここで、更新ファイルは、光ディスクから読み出したデータをバッファメモリに蓄え、所定の処理を施すことで、同様に更新ファイルとして取り扱うことが出来る。
【図面の簡単な説明】
【００２８】
【図１】本発明の電子署名を付加したファイルの構成の一例を示した図である。
【図２】本発明のファイルをダウンロードする装置の構成の一例を示したものである。
【図３】ネットワークを用いてファイルをダウンロードするシステムの構成例を示した図である。
【図４】本発明の電子署名を付加したファイルの構成の別の一例を示した図である。
【図５】本発明の電子署名を付加したファイルの構成の別の一例を示した図である。
【図６】本発明のプログラムを変換したファイルの構成の一例を示した図である。
【符号の説明】
【００２９】
１０１，１０３，１０５，１０７…ファイル格納領域、１０２，１０４，１０６，１０８…各領域のファイルに対して付加された電子署名、１１０…全ファイルに対する電子署名P、
２０１…光ディスク、２０２…ピックアップ、２０３…信号処理回路、２０４…バッファメモリ、２０５…サーボ制御回路、２０６…モータ、２０７…システム制御回路、２０８…プログラムファイルメモリ、２０９…署名確認回路、２１０…信号入出力、２１１…信号処理集積回路。
【図１】
2008305035.tif 000003
【図２】
2008305035.tif 000004
【図３】
2008305035.tif 000005
【図４】
2008305035.tif 000006
【図５】
2008305035.tif 000007
【図６】
2008305035.tif 000008