(57)【要約】【課題】機器が実行するプログラムの秘匿性が高く、かつ、取り扱いが簡便なプログラム秘匿装置を得る。【解決手段】機器側認証手段１０１とカード側認証手段２０１により認証を行い、認証が正常に行われた場合、プログラム読み出し手段１０２は、ＩＣカード２００に対してプログラムの読出し要求を行う。ＩＣカード２００のプログラム転送手段２０２は、機器１００からの読出し要求に応じてカード側記憶手段２０３よりプログラムを読出し、これを機器１００に転送する。機器１００側ではプログラムを受け取ると、これを機器側記憶手段１０３に記憶する。【選択図】図１
2008217236.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する機器と、
前記機器で実行するプログラムを格納するＩＣカードとを備え、
前記機器は、
予め保有する認証鍵を用いて前記ＩＣカードへの認証要求を行い、この要求に対する前記ＩＣカードからの認証結果を取得する機器側認証手段と、
前記機器側認証手段で認証が正常に行われたことが確認された場合に、前記ＩＣカードより前記プログラムを読み出すプログラム読出し手段とを備え、
前記ＩＣカードは、
前記機器より認証要求があった場合、予め保有する認証鍵を用いて認証を行い、正常か否かの認証結果を出力するカード側認証手段と、
前記機器よりプログラムの読出し要求があった場合、格納するプログラムを当該機器に転送するプログラム転送手段とを備えたプログラム秘匿装置。
【請求項２】
認証鍵を生成し、当該認証鍵を機器とＩＣカードに対して書き込むデータ書込み装置を備えたことを特徴とする請求項１に記載のプログラム秘匿装置。
【請求項３】
機器が保有する認証鍵は、当該機器を分解することで記憶内容が消去される記憶装置に記憶することを特徴とする請求項１または請求項２に記載のプログラム秘匿装置。
【請求項４】
データ書込み装置は、ＩＣカードを接続するカードインタフェースと、機器を接続する機器インタフェースとを備え、これらカードインタフェースおよび機器インタフェースを介して、前記ＩＣカードおよび前記機器に対して認証鍵を同時に書き込むことを特徴とする請求項２または請求項３に記載のプログラム秘匿装置。
【請求項５】
データ書込み装置は、プログラムを所定の認証鍵で暗号化してＩＣカードに書込み、
機器は、前記ＩＣカードより前記暗号化したプログラムを読出した場合、保有する認証鍵で復号することを特徴とする請求項１から請求項４のうちのいずれか１項記載のプログラム秘匿装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機器が実行するプログラムを第三者に対して秘匿するプログラム秘匿装置に関するものである。
【背景技術】
【０００２】
近年の機器においては、その機能の大部分をソフトウェアにより実現している。これらの機器の機能を実現するソフトウェアは、当該機器の工場出荷時、製造メーカが製作し、機器の記憶装置に書込みを実施する。当該機器のユーザが、製造メーカに対してさえも動作（プログラム）を秘匿したい場合、例えばユーザ独自のデータ処理の方式を一般に公開したくないような場合であっても、製造メーカにデータ処理の手順を情報秘匿契約を締結した上で開示し、プログラムを製造・書込みを依頼するよりほか方法が無かった。
この場合、ユーザが秘匿したいデータ処理方法が製造メーカに存在し、事故あるいは悪意により流出する危険性があった。
【０００３】
また、新たにユーザが機能を追加したい場合においても、上記の製作時と同様に、ソフトウェアを変更する情報を製造メーカに公開する必要があり、従って、この場合も流出の危険性があった。更に、仮にユーザがプログラムの一部を修正し、機器の記憶装置に書き込むことができる場合でも、その機器が故障し、製造メーカに返却して修理する必要が生じた場合は、製造メーカは機器からプログラムを読み出すことが可能であり、ユーザが秘匿したい情報が流出する危険性があった。
【０００４】
一方、機器の記憶装置内に存在するプログラムも、既に公開されている読出し手順や、プログラムの命令文を解読（いわゆるリバースエンジニアリング）することで、ユーザが秘匿したいプログラムやデータの内容が知られてしまう危険性がある。リバースエンジニアリング対策としては、記憶装置内に存在するプログラムやデータを暗号化して記憶しておき、実際に使用する際に復号して実行できる形にプログラムやデータを変換する技術が実用化されている。
また、機器内のデータをＩＣカードに格納された暗号キーを用いて暗号化するシステムがあった（例えば、特許文献１参照）。
【０００５】
【特許文献１】特開２００３−３４８０９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の機器内に存在するプログラムやデータを暗号化して記憶する方法では、暗号／復号を行うための鍵の取り扱いや管理に十分な注意が必要であった。また、上記特許文献に記載されているようなＩＣカードに格納された暗号キーを用いて暗号化する装置であっても、このような技術は、カード内のプログラムやデータの秘匿を目的としたものではないため、例えば、あるカードを特定の機器に対してのみ使用できるようにするといったことはできず、このような点からプログラムやデータの秘匿性が十分とはいえないものであった。
【０００７】
この発明は上記のような課題を解決するためになされたもので、機器が実行するプログラムの秘匿性が高く、かつ、取り扱いが簡便なプログラム秘匿装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係るプログラム秘匿装置は、機器が実行するプログラムを格納するＩＣカードを設け、機器は、予め保有する認証鍵を用いてＩＣカードへの認証要求を行い、この要求に対するＩＣカードからの認証結果を取得する機器側認証手段と、機器側認証手段で認証が正常に行われたことが確認された場合に、ＩＣカードよりプログラムを読み出すプログラム読出し手段とを備え、ＩＣカードは、機器より認証要求があった場合、予め保有する認証鍵を用いて認証を行い、正常か否かの認証結果を出力するカード側認証手段と、機器よりプログラムの読出し要求があった場合、格納するプログラムを機器に転送するプログラム転送手段とを備えたものである。
【発明の効果】
【０００９】
この発明のプログラム秘匿装置は、機器とＩＣカードとで認証を行い、認証が正常に行われた場合に、ＩＣカードに格納したプログラムを機器に転送するようにしたので、機器が実行するプログラムの秘匿性が高く、かつ、認証鍵等の取り扱いを簡便とすることができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
図１は、この発明の実施の形態１によるプログラム秘匿装置を示す機能ブロック図である。
図において、プログラム秘匿装置は、機器１００、ＩＣカード２００、データ書込み装置３００からなる。機器１００は、プログラムを実行する機器であり、ＩＣカード２００は、機器１００で実行するプログラムを保有する装置である。また、データ書込み装置３００は、ＩＣカード２００に対して、認証鍵とプログラムデータとを書き込むと共に、機器１００に対して認証鍵を書き込む装置である。
【００１１】
機器１００は、機器側認証手段１０１、プログラム読出し手段１０２、機器側記憶手段１０３を備えている。機器側認証手段１０１は、データ書込み装置３００によって予め格納された認証鍵を用いてＩＣカード２００に対して認証要求を行い、ＩＣカード２００との認証処理を行う手段である。プログラム読出し手段１０２は、機器側認証手段１０１によってＩＣカード２００との認証が正常に行われたと判定された場合は、ＩＣカード２００よりプログラムを読み出す手段である。機器側記憶手段１０３は、プログラム読出し手段１０２によって読み出されたプログラムを記憶するための手段である。
【００１２】
ＩＣカード２００は、カード側認証手段２０１、プログラム転送手段２０２、カード側記憶手段２０３を備えている。カード側認証手段２０１は、機器１００の機器側認証手段１０１より認証要求があった場合に、データ書込み装置３００より書き込まれ、予め格納する認証鍵を用いて認証を行い、その認証結果を機器側認証手段１０１に出力する手段である。プログラム転送手段２０２は、プログラム読出し手段１０２よりプログラム読出し要求があった場合に、カード側記憶手段２０３に格納されているプログラムを機器１００に転送する手段である。カード側記憶手段２０３は、秘匿対象となるプログラムを格納する記憶手段である。
【００１３】
図２は、機器１００とＩＣカード２００とのハードウェア構成図である。
図２において、機器１００は、中央演算処理装置（ＣＰＵ）１１１と内蔵記憶装置１１２とインタフェース部１１３とを備えており、インタフェース部１１３にＩＣカード２００が着脱自在に接続されるよう構成されている。ＣＰＵ１１１は、内蔵記憶装置１１２に記憶されたプログラムに従って、機器１００としての機能を実現するための動作を行うプロセッサである。内蔵記憶装置１１２は、機器１００としての機能を実現するための各種のプログラムを格納する記憶装置である。この内蔵記憶装置１１２は、例えばバッテリバックアップメモリで構成され、機器１００を分解した場合に内蔵記憶装置１１２への電源供給が停止され、その記憶内容が失われるよう構成されている。尚、バッテリバックアップメモリは公知であるため、図２ではそのバックアップについての構成は図示省略している。インタフェース部１１３は、ＩＣカード２００を着脱自在に接続するためのコネクタとしての機能を有すると共に、データ書込み装置３００等、外部装置とのインタフェース機能を有するものである。
【００１４】
図３は、ＩＣカード２００のハードウェア構成図である。
図示のように、ＩＣカード２００は、フラッシュメモリ２１１、中央演算処理装置（ＣＰＵ）２１２、インタフェース部２１３を備えている。フラッシュメモリ２１１は、不揮発性メモリの一種であり、電源が供給されなくとも記憶内容を保持することができるメモリである。このフラッシュメモリ２１１には、機器１００の機能を実現するための機器プログラムデータ４０１と、認証機能を実現するための認証鍵４０２と、認証処理プログラム４０３と、インタフェース部２１３を介してフラッシュメモリ２１１に対するデータの読出し、書込みあるいは消去するための読出し／書込みプログラム４０４が記録されている。ＣＰＵ２１２は、ＩＣカード２００における認証演算やフラッシュメモリ２１１へのアクセス制御を行うためのプロセッサであり、インタフェース部２１３は、機器１００等、外部装置とのインタフェース機能を実現するものである。ＩＣカード２００におけるデータのやり取りは、このインタフェース部２１３を介してのみであり、それ以外にデータの読出し／書込みのためのインタフェースは存在しない。
【００１５】
また、図１に示した機器１００における機器側認証手段１０１とプログラム読出し手段１０２は、図２に示したＣＰＵ１１１と内蔵記憶装置１１２で実現され、機器側記憶手段１０３は、内蔵記憶装置１１２に相当するものである。即ち、機器側認証手段１０１及びプログラム読出し手段１０２は、内蔵記憶装置１１２に記憶されたそれぞれの機能に対応するプログラムと、これらのプログラムをＣＰＵ１１１が実行することにより実現されている。
【００１６】
更に、図１に示したＩＣカード２００におけるカード側認証手段２０１とプログラム転送手段２０２は、フラッシュメモリ２１１とＣＰＵ２１２とで実現され、カード側記憶手段２０３はフラッシュメモリ２１１に相当するものである。即ち、カード側認証手段２０１は、フラッシュメモリ２１１内に記憶された認証処理プログラム４０３をＣＰＵ２１２が実行することによって実現され、プログラム転送手段２０２は、読出し／書込みプログラム４０４をＣＰＵ２１２が実行することによって実現されている。
【００１７】
次に、データ書込み装置３００とＩＣカード２００及び機器１００との接続構成について説明する。
図４は、機器１００とＩＣカード２００とデータ書込み装置３００のハードウェア構成図である。
データ書込み装置３００は、インタフェース部３１１、ＣＰＵ３１２、カード用インタフェース部３１３、内蔵記憶装置３１４を備えている。インタフェース部３１１は、機器１００といった外部装置とのデータのやり取りを行うための機器インタフェースであり、例えばＵＳＢインタフェースからなる。ＣＰＵ３１２は、内蔵記憶装置３１４に格納された各種のプログラムを実行してデータ書込み装置３００としての機能を実現するためのプロセッサである。カード用インタフェース部３１３は、ＩＣカード２００を着脱自在に接続し、データのやり取りを行うためのカード用コネクタ等からなるカードインタフェースである。内蔵記憶装置３１４は、機器１００の機能を実現する機器プログラムデータ５０１と、カード用インタフェース部３１３を介してＩＣカード２００へプログラムデータを書き込むＩＣカード書込み用プログラム５０２と、機器１００とＩＣカード２００とに共通の認証鍵を生成する認証鍵生成プログラム５０３と、生成された認証鍵をインタフェース部３１１を介して機器１００に伝送する認証鍵伝送プログラム５０４を搭載する記憶装置である。
【００１８】
図４における機器１００の構成は、図２と同様にＣＰＵ１１１、内蔵記憶装置１１２、インタフェース部１１３及びＩＣカードコネクタ１１３ａを備えている。ここで、インタフェース部１１３は、例えばＵＳＢインタフェースからなり、ＩＣカードコネクタ１１３ａは、機器１００にＩＣカード２００を接続するためのコネクタである。
【００１９】
次に、実施の形態１のプログラム秘匿装置の動作について説明する。
最初に、データ書込み装置３００による機器１００及びＩＣカード２００への書込動作について説明する。
図５は、データ書込み装置３００による機器１００及びＩＣカード２００への書込シーケンスを示す説明図である。
データ書込み装置３００は、先ず、ＣＰＵ３１２がＩＣカード書込み用プログラム５０２を実行し、ＩＣカード２００に対して、カード内のフラッシュメモリ２１１に記憶されている機器プログラムデータ４０１及び認証鍵４０２を消去する命令を送信する（ステップＳＴ１００）。ＩＣカード２００は、ＣＰＵ２１２が読出し／書込みプログラム４０４を実行して、機器プログラムデータ４０１及び認証鍵４０２の消去（ステップＳＴ１０１）を行い、この処理が完了すると消去完了応答をデータ書込み装置３００に送信する（ステップＳＴ１０２）。消去完了応答を受けたデータ書込み装置３００は、ＣＰＵ３１２が認証鍵生成プログラム５０３を実行して、所定の認証鍵を生成する（ステップＳＴ１０３）。そして、データ書込み装置３００は、ＣＰＵ３１２が認証鍵伝送プログラム５０４を実行して、生成された認証鍵をＩＣカード２００へ送信する（ステップＳＴ１０４）。これを受信したＩＣカード２００は、フラッシュメモリ２１１に認証鍵４０２を記録する（ステップＳＴ１０５）。
【００２０】
また、データ書込み装置３００は、ステップＳＴ１０３で生成した同じ認証鍵を機器１００へも同時に送信し（ステップＳＴ１０４）、これを受信した機器１００は、内蔵記憶装置１１２に認証鍵を記録する（ステップＳＴ１０６）。更に、データ書込み装置３００は、認証演算に使用する乱数を発生させ、この乱数と認証鍵を用いて認証演算処理を施した認証子とを合わせ、認証要求としてＩＣカード２００に送信する（ステップＳＴ１０７）。認証要求を受信したＩＣカード２００は、ＣＰＵ２１２が認証処理プログラム４０３を実行し、予め受信していた認証鍵と、認証要求に含まれる乱数とを用いて認証演算処理を行い、認証子を算出する（ステップＳＴ１０８）。そして、データ書込み装置３００から送付された認証子と、ＩＣカード２００内で算出した認証子が一致するか否かの判定を行い（ステップＳ１０９）、認証子が一致しなければ、認証否定応答を送信し（ステップＳＴ１１０）、これを受信したデータ書込み装置３００は異常終了となる（ステップＳＴ１１１）。あるいは、再度、ステップＳＴ１０７から繰り返すようにしてもよい。
【００２１】
ステップＳＴ１０９において、認証子が一致したならば、認証正常応答を送信し（ステップＳＴ１１２）、これを受信したデータ書込み装置３００は、ＩＣカード書込み用プログラム５０２をＣＰＵ３１２が実行して、内蔵記憶装置３１４に記憶してある機器プログラムデータ５０１をＩＣカード２００に転送する処理を開始する（ステップＳＴ１１３）。ＩＣカード２００は、機器プログラムデータ５０１を受信すると、ＣＰＵ２１２が読出し／書込みプログラム４０４を実行して、フラッシュメモリ２１１に機器プログラムデータ４０１として記憶させる処理を行う（ステップＳＴ１１４）。機器プログラムデータ５０１の転送が完了したことを検知したＩＣカード２００は、書込み完了通知をデータ書込み装置３００に送信する（ステップＳＴ１１５）。書込み完了通知を受信したデータ書込み装置３００は正常に書込み処理を終了する（ステップＳＴ１１６）。
【００２２】
書込みが完了したＩＣカード２００は、データ書込み装置３００から取外し、機器１００のＩＣカードコネクタ１１３ａに装着することで、ＩＣカード２００に書き込んだ機器１００の機器プログラムデータ４０１をＣＰＵ１１１が読み出す準備が整ったこととなる。
【００２３】
次に、ＩＣカード２００が機器１００に接続され、ＩＣカード２００のフラッシュメモリ２１１に記憶された機器プログラムデータ４０１を読み出す動作を説明する。
図６は、ＩＣカード２００から機器プログラムデータ４０１を読み出す際の動作シーケンスを示す説明図である。
本発明では、機器１００がＩＣカード２００から機器プログラムデータ４０１を読み出す際には、必ず認証処理を行い、機器１００とＩＣカード２００の双方に記憶されている認証鍵が一致しなければ、それ以降の読出し処理に移行できないよう構成されている。
【００２４】
機器１００はＩＣカード２００が接続されると、ＣＰＵ１１１は、先ず、認証演算に使用する乱数を発生させ、この乱数と内蔵記憶装置１１２に記憶してある認証鍵を用いて認証演算処理を施した認証子を合わせ、認証要求としてＩＣカードに送信する（ステップＳＴ２００）。認証要求を受信したＩＣカード２００は、ＣＰＵ２１２が認証処理プログラム４０３を実行し、フラッシュメモリ２１１に記憶してある認証鍵４０２と、認証要求に含まれる乱数を用いて認証演算処理を行い、認証子を算出する（ステップＳＴ２０１）。機器１００から送付された認証子と、ＩＣカード２００内で算出した認証子が一致するか否かの判定を行い（ステップＳＴ２０２）、認証子が一致しなければ、認証否定応答を送信し（ステップＳＴ２０４）、これを受信した機器１００は異常終了となる（ステップＳＴ２０３）。あるいは、再度、ステップＳＴ２００から繰り返すように実行させてもよい。
【００２５】
ステップＳＴ２０２において、認証子が一致したならば、認証正常応答を送信し（ステップＳＴ２０５）、これを受信した機器１００は、ＩＣカード２００のフラッシュメモリ２１１に記憶されている機器プログラムデータ４０１を機器１００に転送する処理の開始要求をＩＣカードに送信する（ステップＳＴ２０６）。転送開始要求を受信したＩＣカード２００は、ＣＰＵ２１２が読出し／書込みプログラム４０４を実行して、フラッシュメモリ２１１から機器プログラムデータ４０１を読出し、機器１００に送信する処理を行う（ステップＳＴ２０７）。機器プログラムデータ４０１を受信した機器１００は、内蔵記憶装置１１２に書込み処理を行う（ステップＳＴ２０８）。機器プログラムデータ４０１の転送が完了したことを検知したＩＣカード２００は、読出し完了通知を機器１００に送信する（ステップＳＴ２０９）。読出し完了通知を受信した機器１００は正常に読出し処理を終了し（ステップＳＴ２１０）、内蔵記憶装置１１２に書き込んだ機器プログラムデータをＣＰＵ１１１が実行し、機器１００の機能を実現する（ステップＳＴ２１１）。
【００２６】
以上説明したように、ＩＣカード２００は、外部からの信号のやり取りがインタフェース部２１３を介して、尚かつＣＰＵ２１２の処理を経なければフラッシュメモリ２１１に記憶された認証鍵４０２にたどり着くことができない。
このように、ＩＣカード２００への機器プログラムデータ４０１の書込み及びＩＣカード２００からの機器プログラムデータ４０１の読出しを構成することで、ＩＣカード２００と機器１００の双方の認証鍵が一致しない限り、認証処理が正常に終了せず、機器プログラムデータ４０１を読み出すことはできなくなる。
従って、例えば、ＩＣカード２００を万が一、紛失し、第三者がこのＩＣカード２００を収得し、同じ規格の機器に装着しても、ＩＣカード２００に書き込まれた認証鍵４０２は、データ書込み装置３００によるＩＣカード２００への書込み時に一回毎に別の認証鍵が書き込まれるため、認証処理が正常に終了せず、機器プログラムデータ４０１を読み出すことはできない。
【００２７】
以上のように、実施の形態１のプログラム秘匿装置によれば、プログラムを実行する機器と、機器で実行するプログラムを格納するＩＣカードとを備え、機器は、予め保有する認証鍵を用いてＩＣカードへの認証要求を行い、この要求に対するＩＣカードからの認証結果を取得する機器側認証手段と、機器側認証手段で認証が正常に行われたことが確認された場合に、ＩＣカードよりプログラムを読み出すプログラム読出し手段とを備え、ＩＣカードは、機器より認証要求があった場合、予め保有する認証鍵を用いて認証を行い、正常か否かの認証結果を出力するカード側認証手段と、機器よりプログラムの読出し要求があった場合、格納するプログラムを機器に転送するプログラム転送手段とを備えたので、機器が実行するプログラムの秘匿性が高く、かつ、認証鍵等の取り扱いが簡便であるという効果がある。
【００２８】
また、実施の形態１のプログラム秘匿装置によれば、認証鍵を生成し、認証鍵を機器とＩＣカードに対して書き込むデータ書込み装置を備えたので、認証鍵の管理を容易かつ確実に行うことができる。
【００２９】
また、実施の形態１のプログラム秘匿装置によれば、機器が保有する認証鍵は、機器を分解することで記憶内容が消去される記憶装置に記憶するようにしたので、認証鍵の安全性をより高めることができる。
【００３０】
また、実施の形態１のプログラム秘匿装置によれば、データ書込み装置は、ＩＣカードを接続するカードインタフェースと、機器を接続する機器インタフェースとを備え、これらカードインタフェースおよび機器インタフェースを介して、ＩＣカードおよび機器に対して認証鍵を同時に書き込むようにしたので、認証鍵の管理をより簡単かつ確実に行うことができる。
【００３１】
尚、上記実施の形態１では、データ書込み装置３００の機器プログラムデータ５０１をそのままＩＣカード２００のフラッシュメモリ２１１に書き込むようにしたが、データ書込み装置３００で書込み処理を実施する際に、認証鍵で暗号化してフラッシュメモリ２１１に記憶させ、機器１００でＩＣカード２００から読出す際に、機器１００側で記憶している認証鍵で暗号を復号した後に、機器１００の内蔵記憶装置１１２に書き込む構成としてもよい。このように構成すれば、機器プログラムデータの安全性をより高めることができる。
【図面の簡単な説明】
【００３２】
【図１】この発明の実施の形態１によるプログラム秘匿装置を示す機能ブロック図である。
【図２】この発明の実施の形態１によるプログラム秘匿装置の機器とＩＣカードのハードウェア構成図である。
【図３】この発明の実施の形態１によるプログラム秘匿装置のＩＣカードのハードウェア構成図である。
【図４】この発明の実施の形態１によるプログラム秘匿装置の機器とＩＣカードとデータ書込み装置との接続を示す構成図である。
【図５】この発明の実施の形態１によるプログラム秘匿装置の書込み動作を示す説明図である。
【図６】この発明の実施の形態１によるプログラム秘匿装置の読出し動作を示す説明図である。
【符号の説明】
【００３３】
１００  機器、１０１  機器側認証手段、１０２  プログラム読出し手段、１０３  機器側記憶手段、２００  ＩＣカード、２０１  カード側認証手段、２０２  プログラム転送手段、２０３  カード側記憶手段、４０１，５０１  機器プログラムデータ、４０２  認証鍵、４０３  認証処理プログラム、４０４  読出し／書込みプログラム、５０２  ＩＣカード書込み用プログラム、５０３  認証鍵生成プログラム、５０４  認証鍵伝送プログラム。
【図１】
2008217236.tif 000003
【図２】
2008217236.tif 000004
【図３】
2008217236.tif 000005
【図４】
2008217236.tif 000006
【図５】
2008217236.tif 000007
【図６】
2008217236.tif 000008