(57)【要約】【課題】メモリ容量が少ない組込み環境において、プログラム更新を安全に行う方法を提供することを目的とする。【解決手段】プログラム組込み装置２０１において、処理部２０６は暗号化された鍵Ｋ´をプログラムローダ装置１０１から受信し、プログラム領域２０５から鍵デカプセル化プログラムＱを読み出して実行することにより鍵デカプセル化部２０７を動作させて鍵Ｋ´を復号し、復号した鍵Ｋをデータ領域２０４に保存する。復号部２０８は鍵Ｋで暗号化されたアプリケーションプログラムＰ´をプログラムローダ装置１０１から受信し、データ領域２０４に保存された鍵ＫによりアプリケーションプログラムＰ´を復号してアプリケーションプログラムＰを取得する。そして、アプリケーションプログラムＰをプログラム領域２０５の鍵デカプセル化プログラムＱが保存された領域に上書き保存する。【選択図】図４
2010152852.tif 000002
【特許請求の範囲】
【請求項１】
所定の方式で暗号化された鍵を復号する復号プログラムが予め保存された第１記憶領域と、空き領域である第２記憶領域とを有する記憶部と、
前記所定の方式で暗号化された鍵を外部装置から受信し、前記記憶部の第１記憶領域から前記復号プログラムを読み出して実行することにより、受信した鍵を復号し、復号した鍵を前記記憶部の第２記憶領域に保存する処理部と、
前記記憶部の第２記憶領域に保存された鍵に対応する鍵で暗号化された暗号データを前記外部装置から受信し、前記記憶部の第２記憶領域に保存された鍵により前記暗号データを復号して平文データを取得し、取得した平文データを前記記憶部の第１記憶領域の前記復号プログラムが保存された領域に上書き保存する復号部とを備え、
前記処理部は、前記記憶部の第１記憶領域に保存された平文データを用いて、所定の処理を行うことを特徴とするデータ処理装置。
【請求項２】
前記復号部は、前記平文データとして、前記所定の処理を行うアプリケーションプログラムを取得し、取得したアプリケーションプログラムを前記記憶部の第１記憶領域の前記復号プログラムが保存された領域に上書き保存し、
前記処理部は、前記記憶部の第１記憶領域に保存されたアプリケーションプログラムを読み出して実行することにより、前記所定の処理を行うことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記復号部は、前記平文データを前記記憶部の第１記憶領域に保存した後、前記暗号データとして、前記復号プログラムが前記記憶部の第２記憶領域に保存された鍵に対応する鍵で暗号化されたデータを前記外部装置から受信し、前記記憶部の第２記憶領域に保存された鍵により当該データを復号して前記復号プログラムを取得し、取得した復号プログラムを前記記憶部の第１記憶領域の前記平文データが保存された領域に上書き保存し、
前記処理部は、前記所定の方式で暗号化された新たな鍵を前記外部装置から受信し、前記記憶部の第１記憶領域から前記復号プログラムを読み出して実行することにより、受信した新たな鍵を復号し、復号した鍵で前記記憶部の第２記憶領域に保存した鍵を更新することを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記復号部は、前記平文データとして、新たな鍵を取得し、取得した鍵で前記記憶部の第２記憶領域に保存した鍵を更新することを特徴とする請求項１から３までのいずれかに記載のデータ処理装置。
【請求項５】
前記所定の方式は、公開鍵暗号方式であり、
前記記憶部の第２記憶領域に保存される鍵及び当該鍵に対応する鍵は、共通鍵であることを特徴とする請求項１から４までのいずれかに記載のデータ処理装置。
【請求項６】
所定の方式で暗号化された鍵を復号する復号プログラムが予め保存された第１記憶領域と、空き領域である第２記憶領域とを有する記憶部を用いるデータ処理方法であって、
処理部が、前記所定の方式で暗号化された鍵を外部装置から受信し、前記記憶部の第１記憶領域から前記復号プログラムを読み出して実行することにより、受信した鍵を復号し、復号した鍵を前記記憶部の第２記憶領域に保存し、
復号部が、前記記憶部の第２記憶領域に保存された鍵に対応する鍵で暗号化された暗号データを前記外部装置から受信し、前記記憶部の第２記憶領域に保存された鍵により前記暗号データを復号して平文データを取得し、取得した平文データを前記記憶部の第１記憶領域の前記復号プログラムが保存された領域に上書き保存し、
前記処理部が、前記記憶部の第１記憶領域に保存された平文データを用いて、所定の処理を行うことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びデータ処理方法に関するものである。本発明は、特に、メモリ容量が小さい組込み環境（組込みマイコン）においてプログラム更新（主に、オンデマンドプログラム更新）を安全に行う方式に関するものである。
【背景技術】
【０００２】
従来のプログラム組込み装置では、限られたメモリ容量を効率的に利用するために、データ格納領域に更新データの格納領域を確保しプログラム更新を行うという処理方法がある（例えば、特許文献１参照）。
【０００３】
また、従来のプログラム組込み装置では、復号装置又は認証装置を備えて内蔵されているプログラムやデータの安全な更新を実現するための方法がある（例えば、特許文献２参照）。
【特許文献１】特開２００５−３３２３０１号公報
【特許文献２】特開２００４−２５９０７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来のプログラム更新機能を備えたプログラム組込み装置では、更新データを装置へダウンロードする際に、その更新データが暗号化されていないために、ダウンロード処理中にデータを盗聴されたり、悪意のあるプログラムにすり替えられたり、という危険性があった。
【０００５】
また、従来のプログラム更新機能を備えたプログラム組込み装置では、その更新データが暗号化されていても、全ての装置において同一の秘密鍵であるというケースが多く、セキュリティ上の課題（脆弱性）があった。
【０００６】
従来のプログラム更新機能を備えたプログラム組込み装置では、全ての装置において同一の秘密鍵でないようにするために、それぞれに個別鍵を持たせようとすると、コストがかかる上に管理が煩雑になるという課題があった。
【０００７】
また、従来のプログラム更新機能を備えたプログラム組込み装置では、全ての装置において同一の秘密鍵でないようにするため、あるいは後々に鍵更新ができるようにするために、ＩＤ（識別子）ベース暗号等の公開鍵暗号を用いようとすると、組込み環境においてはプログラムサイズが大きいことから実装することが困難であった。
【０００８】
従来のプログラム組込み装置では、鍵更新ができない、あるいは容易に実施できないという課題があった。
【０００９】
本発明は、より高いセキュリティを備えた効率のよいシステムを提供することを目的とする。本発明は、そのために、例えば、メモリ容量が少ない組込み環境において、プログラム更新を安全に行う方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一の態様に係るデータ処理装置は、
所定の方式で暗号化された鍵を復号する復号プログラムが予め保存された第１記憶領域と、空き領域である第２記憶領域とを有する記憶部と、
前記所定の方式で暗号化された鍵を外部装置から受信し、前記記憶部の第１記憶領域から前記復号プログラムを読み出して実行することにより、受信した鍵を復号し、復号した鍵を前記記憶部の第２記憶領域に保存する処理部と、
前記記憶部の第２記憶領域に保存された鍵に対応する鍵で暗号化された暗号データを前記外部装置から受信し、前記記憶部の第２記憶領域に保存された鍵により前記暗号データを復号して平文データを取得し、取得した平文データを前記記憶部の第１記憶領域の前記復号プログラムが保存された領域に上書き保存する復号部とを備え、
前記処理部は、前記記憶部の第１記憶領域に保存された平文データを用いて、所定の処理を行うことを特徴とする。
【発明の効果】
【００１１】
本発明の一の態様によれば、データ処理装置において、処理部が、所定の方式で暗号化された鍵を外部装置から受信し、記憶部の第１記憶領域から復号プログラムを読み出して実行することにより、受信した鍵を復号し、復号した鍵を前記記憶部の第２記憶領域に保存し、復号部が、前記記憶部の第２記憶領域に保存された鍵に対応する鍵で暗号化された暗号データを前記外部装置から受信し、前記記憶部の第２記憶領域に保存された鍵により前記暗号データを復号して平文データを取得し、取得した平文データを前記記憶部の第１記憶領域の前記復号プログラムが保存された領域に上書き保存することにより、例えば、安全でメモリ使用効率のよいプログラム（前記平文データに相当）更新処理が可能なプログラム組込み装置（前記データ処理装置に相当）を提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、図を用いて説明する。なお、下記実施の形態により本発明が限定されるものではない。即ち、本発明は以下の記述に限定されるものではなく、本発明の要旨を逸脱しない範囲において適宜変更可能である。
【００１３】
実施の形態１．
図１は、本実施の形態に係るシステムの構成例を示すブロック図である。
【００１４】
図１において、１つのプログラムローダ装置１０１（プログラム書込み装置）に対し、複数のプログラム組込み装置２０１が複数存在する。プログラム組込み装置２０１はデータ処理装置の一例であり、プログラムローダ装置１０１は外部装置の一例である。プログラムローダ装置１０１は、各プログラム組込み装置２０１の工場製造時の書込み工程において、あるいは、製品出荷後のプログラム書換え時において、各プログラム組込み装置２０１のプログラム格納領域にプログラムをロードする。即ち、各プログラム組込み装置２０１は、プログラムローダ装置１０１からプログラムをダウンロードする。プログラムローダ装置１０１は、プログラム組込み装置２０１と１対１に有線あるいは無線で接続して、書込み処理を実行する。各プログラム組込み装置２０１には、ＩＤ（識別子）が割り当てられているものとする（図中、ＩＤ＿１、ＩＤ＿２、ＩＤ＿３、・・・、ＩＤ＿Ｋと示している）。
【００１５】
図２は、本実施の形態に係るシステムの別の構成例を示すブロック図である。
【００１６】
図１では、プログラムローダ装置１０１と各プログラム組込み装置２０１とを１対１に接続して、書込み処理を実行する構成を示したが、図２のように、ＬＡＮ（Ｌｏｃａｌ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）等のネットワーク（バス型ネットワークを図示しているが、その他の形態のネットワークであってもよい）にプログラムローダ装置１０１と複数のプログラム組込み装置２０１とを接続して、書込み処理を効率的に実行するという構成をとることも可能である。有線に限らず、無線ネットワークでも実現することが可能である。
【００１７】
図３は、プログラム組込み装置２０１のハードウェア構成の一例を示す図である。
【００１８】
いずれのＩＤを持つプログラム組込み装置２０１も同様の構成をとるものとする。図３において、ＣＰＵ２２０（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）は、フロー制御を行う汎用ＣＰＵである。ＣＰＵ２２０は処理部の一例である。ＣＰＵ２２０にはその製造の過程でＣＰＵごとに固有のＩＤ２２４が付される。ＩＤ２２４はＣＰＵ２２０に内蔵される内部メモリ２１０に格納されている。ＩＤ２２４は各プログラム組込み装置２０１に割り当てられるＩＤ（ＩＤ＿１、ＩＤ＿２、ＩＤ＿３、・・・、ＩＤ＿Ｋ）として使用することができる。外部メモリユニット２２１は、プログラム及びデータ（プログラムローダ装置１０１からダウンロードされるものも含む）が格納される書換え可能な半不揮発性メモリ（フラッシュメモリ等）である。Ｉ／Ｆ（インタフェース）ユニット２２３は、外部とのインタフェースをつかさどる。具体的にはプログラムローダ装置１０１とのＩ／Ｆの他にも、プログラム組込み装置２０１のアプリケーションに応じて、例えばカードＩ／Ｆ、無線（ＲＦ）Ｉ／Ｆ等を含むこともある。ＣＰＵ２２０、外部メモリユニット２２１、Ｉ／Ｆユニット２２３はシステムバス２１１を介して互いに通信する。図３ではＣＰＵ２２０、外部メモリユニット２２１、Ｉ／Ｆユニット２２３が、別々の素子のイメージで書かれているが、１チップマイコンあるいはＳｏＣ（Ｓｙｓｔｅｍ・ｏｎ・ａ・Ｃｈｉｐ）チップのように１つのパッケージにこれらの構成要素が組み込まれていても構わない。
【００１９】
次に、それぞれのプログラム組込み装置２０１に、プログラムローダ装置１０１から所定のアプリケーションプログラム（ダウンロードデータ）Ｐをダウンロードするプログラムダウンロード工程について説明する。
【００２０】
図４は、プログラムローダ装置１０１及びプログラム組込み装置２０１の構成を示すブロック図である。
【００２１】
図４において、プログラムローダ装置１０１は、記憶部１０２、鍵カプセル化部１０３、暗号化部１０４を備える。プログラム組込み装置２０１は、ＩＤ格納部２０２、記憶部２０３、処理部２０６、復号部２０８を備える。処理部２０６は、鍵デカプセル化部２０７を有する。記憶部２０３は、データ領域２０４、プログラム領域２０５を有する。データ領域２０４は第２記憶領域の一例であり、プログラム領域２０５は第１記憶領域の一例である。
【００２２】
図５は、プログラムダウンロード工程の手順を示す図である。
【００２３】
プログラムダウンロード工程の開始時には、プログラムローダ装置１０１の記憶部１０２にアプリケーションプログラムＰが予め記憶されているものとする。また、プログラム組込み装置２０１のＩＤ格納部２０２にＩＤ２２４が予め格納されているものとする。
【００２４】
プログラムローダ装置１０１の鍵カプセル化部１０３は、プログラム組込み装置２０１のＩＤ格納部２０２からＩＤ２２４を読み出す。ここでは、このＩＤ２２４がＩＤ＿Ｋであるとする。プログラムローダ装置１０１の鍵カプセル化部１０３は、読み出したＩＤ２２４に対応する鍵Ｋを新たに生成して記憶部１０２に保存する。そして、プログラムローダ装置１０１の鍵カプセル化部１０３は、記憶部１０２に保存した鍵Ｋに対してプログラム組込み装置２０１の公開鍵を用いた鍵カプセル化処理を行い、カプセル化された鍵Ｋ´をプログラム組込み装置２０１へ送信する（Ｓ１０１）。ＩＤ２２４がＩＤ＿１、ＩＤ＿２、ＩＤ＿３、・・・であれば、プログラムローダ装置１０１は、同様に、ＩＤ＿１に対応する鍵１、ＩＤ＿２に対応する鍵２、ＩＤ＿３に対応する鍵３、・・・をカプセル化した鍵１´、鍵２´、鍵３´、・・・をプログラム組込み装置２０１へ送信することになる。そのために、プログラムローダ装置１０１は、例えば記憶部１０２に予め各プログラム組込み装置２０１の公開鍵を記憶しているものとする。
【００２５】
プログラム組込み装置２０１の鍵デカプセル化部２０７は、カプセル化された鍵Ｋ´を受信し、受信した鍵Ｋ´に対してプログラム組込み装置２０１の秘密鍵を用いた鍵デカプセル化処理を実行して鍵Ｋを取得する。そして、プログラム組込み装置２０１の鍵デカプセル化部２０７は、取得した鍵Ｋを記憶部２０３のデータ領域２０４に保存する（Ｓ１０２）。プログラム組込み装置２０１は、例えば記憶部２０３のデータ領域２０４に予め自己の秘密鍵を記憶しているものとする。
【００２６】
プログラムローダ装置１０１の暗号化部１０４は、記憶部１０２に記憶されているアプリケーションプログラムＰに対して鍵Ｋを用いた暗号化処理を行い、暗号化されたアプリケーションプログラムＰ´をプログラム組込み装置２０１へ送信する（Ｓ１０３）。ここで、鍵Ｋはデータの暗号化処理にも復号処理にも使用できるものとする。即ち、鍵Ｋは共通鍵とする。
【００２７】
プログラム組込み装置２０１の復号部２０８は、暗号化されたアプリケーションプログラムＰ´を受信し、受信したアプリケーションプログラムＰ´に対して鍵Ｋを用いた復号処理を実行してアプリケーションプログラムＰを取得する（Ｓ１０４）。そして、プログラム組込み装置２０１の復号部２０８は、取得したアプリケーションプログラムＰを記憶部２０３のプログラム領域２０５に保存する（Ｓ１０５）。
【００２８】
図５に示すように、Ｓ１０１〜Ｓ１０２の処理は鍵を共有するためのプロセス（ステップ１）であり、Ｓ１０３〜Ｓ１０５の処理はステップ１で共有した鍵を用いて暗号化通信によるデータダウンロードを実行するプロセス（ステップ２）である。ステップ１で共有した鍵を使用する限り、ステップ１を繰り返し行う必要はない。つまり、既に鍵を共有していて、その鍵を更新する必要がなければ、ステップ２のみでプログラムのダウンロード（アプリケーション更新）を安全に行うことができる。
【００２９】
図４に示したプログラム組込み装置２０１の構成において、ＩＤ格納部２０２は、図３に示した内部メモリ２１０に相当する。記憶部２０３は、図３に示した外部メモリユニット２２１に相当する。処理部２０６は、図３に示したＣＰＵ２２０に相当する。処理部２０６の鍵デカプセル化部２０７は、主にソフトウェアで実現される。具体的には、後述するように、鍵デカプセル化部２０７は、記憶部２０３のプログラム領域２０５に格納され、処理部２０６により読み出されて実行されるプログラムである（より正確にいえば、そのプログラムを実行したプロセスである）。復号部２０８は、ソフトウェア、ハードウェア、あるいは、ソフトウェアとハードウェアとの組み合わせで実現される。例えば、復号部２０８は、記憶部２０３の保護された領域（他のデータで上書き保存されない領域）等に格納され、処理部２０６により読み出されて実行されるプログラムであってもよいし、図３に示したシステムバス２１１に接続される暗号処理モジュール（回路）であってもよい。
【００３０】
以下、プログラム組込み装置２０１の動作について説明する。
【００３１】
図６は、プログラム組込み装置２０１による初期化手順を示すフローチャートである。
【００３２】
初期化手順の開始時には、記憶部２０３のプログラム領域２０５に、鍵デカプセル化部２０７に相当する鍵デカプセル化プログラムＱ（復号プログラムの一例）が予め保存されている。鍵デカプセル化プログラムＱは、所定の方式（ここでは、公開鍵暗号方式とするが、共通鍵暗号方式等、他の方式でもよい）で暗号化された鍵を復号するプログラムである。一方、記憶部２０３のデータ領域２０４は、空き領域である。
【００３３】
図６において、処理部２０６は、公開鍵暗号方式で（即ち、自己の公開鍵を用いて）暗号化された鍵Ｋ´をプログラムローダ装置１０１から受信する。そして、処理部２０６は、記憶部２０３のプログラム領域２０５から鍵デカプセル化プログラムＱを読み出して実行することにより鍵デカプセル化部２０７を動作させる（Ｓ６０１）。鍵デカプセル化部２０７は、受信した鍵Ｋ´を復号し、復号した鍵Ｋを記憶部２０３のデータ領域２０４に保存する（Ｓ６０２）。
【００３４】
図７は、プログラム組込み装置２０１によるプログラムダウンロード手順を示すフローチャートである。
【００３５】
復号部２０８は、記憶部２０３のデータ領域２０４に鍵Ｋが保存されていれば（Ｓ７０１でＹＥＳ）、プログラムローダ装置１０１に対し、アプリケーションプログラムＰを鍵Ｋに対応する鍵（ここでは、鍵Ｋが共通鍵であるため、鍵Ｋに対応する鍵も鍵Ｋであるが、例えば鍵Ｋが公開鍵であれば、鍵Ｋに対応する鍵は秘密鍵となる）で暗号化して送信することを要求する。これにより、復号部２０８は、鍵Ｋで暗号化されたアプリケーションプログラムＰ´（暗号データの一例）をプログラムローダ装置１０１から受信する（Ｓ７０２）。そして、復号部２０８は、記憶部２０３のデータ領域２０４に保存された鍵ＫによりアプリケーションプログラムＰ´を復号してアプリケーションプログラムＰ（平文データの一例）を取得する（Ｓ７０３）。復号部２０８は、取得したアプリケーションプログラムＰを記憶部２０３のプログラム領域２０５の鍵デカプセル化プログラムＱが保存された領域に上書き保存する（Ｓ７０４）。このとき、アプリケーションプログラムＰのサイズが鍵デカプセル化プログラムＱのサイズより大きければ、記憶部２０３のプログラム領域２０５に、その分の空き領域（又は鍵デカプセル化プログラムＱ以外のデータを記憶している領域）が必要であることはいうまでもない。記憶部２０３のプログラム領域２０５に保存されたアプリケーションプログラムＰは、処理部２０６によって読み出され、実行され、所定の処理を行う。即ち、アプリケーションプログラムＰは処理部２０６によって所定の処理を行うために用いられる。
【００３６】
一方、Ｓ７０１において、記憶部２０３のデータ領域２０４に鍵Ｋが保存されていなければ（Ｓ７０１でＮＯ）、処理部２０６が、プログラムローダ装置１０１に対し、鍵Ｋを公開鍵暗号方式で暗号化して送信することを要求する。これにより、処理部２０６は、プログラム組込み装置２０１の公開鍵で暗号化された鍵Ｋ´をプログラムローダ装置１０１から受信する。そして、処理部２０６は、記憶部２０３のプログラム領域２０５から鍵デカプセル化プログラムＱを読み出して実行することにより鍵デカプセル化部２０７を動作させる（Ｓ７０５）。鍵デカプセル化部２０７は、受信した鍵Ｋ´をプログラム組込み装置２０１の秘密鍵で復号し、復号した鍵Ｋを記憶部２０３のデータ領域２０４に保存する（Ｓ７０６）。その後、Ｓ７０１に戻る。
【００３７】
図８は、プログラム組込み装置２０１による初期化手順及びプログラムダウンロード手順での記憶部２０３内のデータ遷移を示す図である。
【００３８】
図６に示した初期化手順の開始時には、プログラム領域２０５の領域Ａに、鍵デカプセル化部２０７に相当する鍵デカプセル化プログラムＱ（図８の「鍵デカプセル」）が予め保存されている。また、プログラム領域２０５の領域Ｂに、復号部２０８に相当するプログラム（図８の「復号」）が予め保存されている。また、プログラム領域２０５の領域Ｃに、プログラムローダ装置１０１からデータを受信するためのプログラム（図８の「ダウンロード」）が予め保存されている。一方、データ領域２０４の領域Ｄは、空き領域である（Ｐ１０１）。データ領域２０４の領域Ｄ以外の領域は、空き領域であってもよいし、何らかのデータ（例えば、プログラム組込み装置２０１の秘密鍵）を保存していてもよい。
【００３９】
図６に示した初期化手順において、プログラム組込み装置２０１では、鍵デカプセル化処理により、鍵Ｋ（図８の「鍵」）が生成され、データ領域２０４の領域Ｄに出力される（Ｐ１０２）。鍵Ｋは、アプリケーションプログラムＰをダウンロードする際に用いるものであるので、ダウンロード処理を行う前に生成されている必要がある。鍵Ｋが生成されれば、鍵デカプセル化プログラムＱは不要になるため、図７に示したプログラムダウンロード手順において、アプリケーションプログラムＰ（図８の「アプリケーション」）は鍵デカプセル化プログラムＱが格納されていた領域Ａに上書き保存される（Ｐ１０３）。
【００４０】
図９は、プログラム組込み装置２０１によるプログラム更新手順での記憶部２０３内のデータ遷移を示す図である。
【００４１】
プログラム更新手順は、図７に示したプログラムダウンロード手順と同様である。復号部２０８は、記憶部２０３のデータ領域２０４に鍵Ｋが保存されていれば（Ｓ７０１でＹＥＳ）、プログラムローダ装置１０１に対し、新たなアプリケーションプログラムＰｎを鍵Ｋに対応する鍵（ここでは、鍵Ｋが共通鍵であるため、鍵Ｋに対応する鍵も鍵Ｋであるが、例えば鍵Ｋが公開鍵であれば、鍵Ｋに対応する鍵は秘密鍵となる）で暗号化して送信することを要求する。これにより、復号部２０８は、鍵Ｋで暗号化された新たなアプリケーションプログラムＰｎ´（暗号データの一例）をプログラムローダ装置１０１から受信する（Ｓ７０２）。そして、復号部２０８は、記憶部２０３のデータ領域２０４に保存された鍵ＫによりアプリケーションプログラムＰｎ´を復号して新たなアプリケーションプログラムＰｎ（平文データの一例）を取得する（Ｓ７０３）。復号部２０８は、取得したアプリケーションプログラムＰｎを記憶部２０３のプログラム領域２０５の古いアプリケーションプログラムＰが保存された領域に上書き保存する（Ｓ７０４）。このとき、新たなアプリケーションプログラムＰｎのサイズが古いアプリケーションプログラムＰのサイズより大きければ、記憶部２０３のプログラム領域２０５に、その分の空き領域（又は古いアプリケーションプログラムＰ以外のデータを記憶している領域）が必要であることはいうまでもない。記憶部２０３のプログラム領域２０５に保存された新たなアプリケーションプログラムＰｎは、処理部２０６によって読み出され、実行され、所定の処理を行う。即ち、新たなアプリケーションプログラムＰｎは処理部２０６によって所定の処理を行うために用いられる。
【００４２】
プログラム更新手順の開始時には、記憶部２０３内は図８のＰ１０３の状態になっている。アプリケーションプログラムＰの更新が必要な場合、プログラム更新手順において、プログラム組込み装置２０１では、鍵Ｋが生成済であれば、鍵Ｋを用いてダウンロード処理が行われ、古いアプリケーションプログラムＰが格納されていた領域Ａに、新しいアプリケーションプログラムＰｎ（図９の「更新されたアプリケーション」）が上書き保存される（Ｐ１０４）。
【００４３】
図１０は、プログラム組込み装置２０１による鍵更新手順を示すフローチャートである。
【００４４】
復号部２０８は、アプリケーションプログラムＰを記憶部２０３のプログラム領域２０５に保存した後（図７のＳ７０４）、記憶部２０３のデータ領域２０４に鍵Ｋが保存されており（Ｓ８０１でＹＥＳ）、記憶部２０３のプログラム領域２０５にアプリケーションプログラムＰが保存されていれば（Ｓ８０２でＹＥＳ）、プログラムローダ装置１０１に対し、鍵デカプセル化プログラムＱを鍵Ｋに対応する鍵（前述したように、ここでは、鍵Ｋである）で暗号化して送信することを要求する。これにより、復号部２０８は、鍵Ｋで暗号化された鍵デカプセル化プログラムＱ´（暗号データの一例）をプログラムローダ装置１０１から受信する（Ｓ８０３）。そして、復号部２０８は、記憶部２０３のデータ領域２０４に保存された鍵Ｋにより鍵デカプセル化プログラムＱ´を復号して鍵デカプセル化プログラムＱを取得する（Ｓ８０４）。復号部２０８は、取得した鍵デカプセル化プログラムＱを記憶部２０３のプログラム領域２０５のアプリケーションプログラムＰが保存された領域に上書き保存する（Ｓ８０５）。このとき、鍵デカプセル化プログラムＱのサイズがアプリケーションプログラムＰのサイズより大きければ、記憶部２０３のプログラム領域２０５に、その分の空き領域（又はアプリケーションプログラムＰ以外のデータを記憶している領域）が必要であることはいうまでもない。ステップＳ８０５の後、処理部２０６は、公開鍵暗号方式で（即ち、自己の公開鍵を用いて）暗号化された新たな鍵Ｋｎ´をプログラムローダ装置１０１から受信する。そして、処理部２０６は、記憶部２０３のプログラム領域２０５から鍵デカプセル化プログラムＱを読み出して実行することにより鍵デカプセル化部２０７を動作させる（Ｓ８０６）。鍵デカプセル化部２０７は、受信した鍵Ｋｎ´を復号し、復号した新たな鍵Ｋｎを記憶部２０３のデータ領域２０４に保存する（Ｓ８０７）。即ち、鍵デカプセル化部２０７は、新たな鍵Ｋｎで記憶部２０３のデータ領域２０４に保存されている古い鍵Ｋを更新する。
【００４５】
一方、Ｓ８０１において、記憶部２０３のデータ領域２０４に鍵Ｋが保存されていなければ（Ｓ８０１でＮＯ）、処理部２０６が、プログラムローダ装置１０１に対し、鍵Ｋを公開鍵暗号方式で暗号化して送信することを要求する。これにより、処理部２０６は、プログラム組込み装置２０１の公開鍵で暗号化された鍵Ｋ´をプログラムローダ装置１０１から受信する。そして、処理部２０６は、記憶部２０３のプログラム領域２０５から鍵デカプセル化プログラムＱを読み出して実行することにより鍵デカプセル化部２０７を動作させる（Ｓ８０８）。鍵デカプセル化部２０７は、受信した鍵Ｋ´をプログラム組込み装置２０１の秘密鍵で復号し、復号した鍵Ｋを記憶部２０３のデータ領域２０４に保存する（Ｓ８０９）。その後、Ｓ８０１に戻る。また、Ｓ８０２において、記憶部２０３のプログラム領域２０５にアプリケーションプログラムＰが保存されていなければ（Ｓ８０２でＮＯ）、Ｓ８０６に進む。
【００４６】
図１１は、プログラム組込み装置２０１による鍵更新手順での記憶部２０３内のデータ遷移を示す図である。
【００４７】
図１０に示した鍵更新手順の開始時には、記憶部２０３内は図８のＰ１０３の状態になっている。鍵の更新が必要な場合には、図１０に示した鍵更新手順において、プログラム組込み装置２０１では、アプリケーションプログラムＰをダウンロードするのと同じ要領で、鍵デカプセル化プログラムＱ（図１１の「鍵デカプセル」）がダウンロードされ、アプリケーションプログラムＰが格納されていた領域Ａに上書き保存される（Ｐ１０５）。その後、新しい鍵Ｋｎ（図１１の「更新された鍵」）の導出が行われ、データ領域２０４の領域Ｄの鍵Ｋが更新される（Ｐ１０６）。
【００４８】
図１２は、プログラム組込み装置２０１による別の鍵更新手順を示すフローチャートである。
【００４９】
復号部２０８は、アプリケーションプログラムＰを記憶部２０３のプログラム領域２０５に保存した後（図７のＳ７０４）、記憶部２０３のデータ領域２０４に鍵Ｋが保存されていれば（Ｓ９０１でＹＥＳ）、プログラムローダ装置１０１に対し、新たな鍵Ｋｎを鍵Ｋに対応する鍵（前述したように、ここでは、鍵Ｋである）で暗号化して送信することを要求する。これにより、復号部２０８は、鍵Ｋで暗号化された新たな鍵Ｋｎ´（暗号データの一例）をプログラムローダ装置１０１から受信する（Ｓ９０２）。そして、復号部２０８は、記憶部２０３のデータ領域２０４に保存された鍵Ｋにより鍵Ｋｎ´を復号して新たな鍵Ｋｎ（平文データの一例）を取得し、取得した新たな鍵Ｋｎを記憶部２０３のデータ領域２０４に保存する（Ｓ９０３）。即ち、鍵デカプセル化部２０７は、新たな鍵Ｋｎで記憶部２０３のデータ領域２０４に保存されている古い鍵Ｋを更新する。
【００５０】
一方、Ｓ９０１において、記憶部２０３のデータ領域２０４に鍵Ｋが保存されていなければ（Ｓ９０１でＮＯ）、処理部２０６が、プログラムローダ装置１０１に対し、鍵Ｋを公開鍵暗号方式で暗号化して送信することを要求する。これにより、処理部２０６は、プログラム組込み装置２０１の公開鍵で暗号化された鍵Ｋ´をプログラムローダ装置１０１から受信する。そして、処理部２０６は、記憶部２０３のプログラム領域２０５から鍵デカプセル化プログラムＱを読み出して実行することにより鍵デカプセル化部２０７を動作させる（Ｓ９０４）。鍵デカプセル化部２０７は、受信した鍵Ｋ´をプログラム組込み装置２０１の秘密鍵で復号し、復号した鍵Ｋを記憶部２０３のデータ領域２０４に保存する（Ｓ９０５）。その後、Ｓ９０１に戻る。
【００５１】
図１３は、プログラム組込み装置２０１による別の鍵更新手順での記憶部２０３内のデータ遷移を示す図である。
【００５２】
図１２に示した鍵更新手順の開始時には、記憶部２０３内は図８のＰ１０３の状態になっている。鍵の更新が必要な場合には、図１２に示した鍵更新手順において、プログラム組込み装置２０１では、古い鍵Ｋを基にして復号処理を行って新しい鍵Ｋｎ（図１３の「更新された鍵」）が生成され、データ領域２０４の領域Ｄの鍵Ｋが更新される（Ｐ１０７）。
【００５３】
上記のように、図１２に示した鍵更新手順では、図１０に示した鍵更新手順と異なり、鍵デカプセル化プログラムＱの復帰を行わなくて済む。
【００５４】
以上説明したように、本実施の形態に係るデータ処理装置は、
プログラムを更新するためにプログラムダウンロード機能を備えた装置であり、ダウンロードに用いる鍵を生成する鍵共有プロセス（図５のステップ１）と、暗号化通信によるダウンロードを行うダウンロードプロセス（図５のステップ２）とを実行することを特徴とする。
【００５５】
前記データ処理装置は、
前記鍵共有プロセスによって、公開鍵暗号の仕組みを利用して、各装置が持つ固有のＩＤ情報を用いて、装置それぞれで異なる鍵を持つことが可能となることを特徴とする。
【００５６】
前記データ処理装置は、
前記鍵共有プロセスの完了後には、前記鍵共有プロセスを実行するプログラムを消去するか、あるいは、外部からダウンロードしたアプリケーションプログラムで上書きすることを特徴とする。
【００５７】
前記データ処理装置は、
前記鍵共有プロセスを実行して、前記ダウンロードプロセスで使用するのに有効な鍵を既に保持していれば、アプリケーションプログラムを動的に変更できることを特徴とする。
【００５８】
前記データ処理装置は、
前記ダウンロードプロセスで使用する有効な鍵を保持している限り、前記鍵共有プロセスを実行する必要がないことを特徴とする。
【００５９】
前記データ処理装置は、
前記鍵共有プロセスを実行するプログラムを、アプリケーションプログラムのダウンロードによって上書き消去した後に、アプリケーションプログラムのダウンロードと同様に鍵共有プロセスを実行するプログラムをダウンロードすることによって、再び鍵共有プロセスを復帰させて、鍵の更新を行うことができることを特徴とする。
【００６０】
前記データ処理装置は、
鍵を更新するときに、ダウンロードデータを復号するときに用いる復号部を利用することもまた可能であることを特徴とする。
【００６１】
上記のように、本実施の形態では、メモリ容量が少ない組込み環境において、プログラム更新を行うときに、初期状態において鍵デカプセル化モジュールのみをプログラム領域に展開し、鍵デカプセル化処理を実行して鍵を得た後に、その鍵を使用したセキュアダウンロード機能を用いて、鍵デカプセル化モジュールが配置されていた領域にアプリケーションプログラムを上書きするので、必要なプログラムサイズ（メモリ総容量）を大幅に小さくすることができる。
【００６２】
また、本実施の形態では、鍵デカプセル化モジュールの消失後に、再び鍵デカプセル化処理を実行する必要がある場合には、ダウンロード機能を用いて初期状態のプログラム（鍵デカプセル化プログラム）をアプリケーションプログラムの１つとして、同様にダウンロードできるので、鍵デカプセル化機能を復帰させることが可能である。復帰を行う前に、その機器上では鍵デカプセル化処理は少なくとも一度実行されているので、既に生成されてメモリに保存されている鍵を用いてダウンロードを実行する。ダウンロード機能により、必要に応じて、プログラムを動的に変更できる。
【００６３】
本実施の形態では、初回の鍵デカプセル化処理で導出された鍵を用いた暗号通信によって鍵の更新を行ってもよい。そうすることにより、同一鍵の使用の繰り返しを防ぐとともに簡易に鍵更新を実現することができる。
【００６４】
本実施の形態では、アプリケーションを動的に変更可能なことから、ハードウェア資源を有効利用することができる。
【００６５】
以上、メモリ容量が少ないプログラム組込み装置において、プログラム更新を安全に行うことができる方法を説明した。
【００６６】
また、メモリ容量が少ないプログラム組込み装置において、例えばＩＤベース暗号等の公開鍵暗号アルゴリズムを用いて、個々に持つＩＤを利用して鍵を導出する方法を説明した。
【００６７】
また、メモリ容量が少ないプログラム組込み装置において、鍵デカプセル化処理後に、鍵デカプセル化プログラムが格納された領域にアプリケーションプログラムをダウンロードして上書きすることができる方法を説明した。
【００６８】
また、メモリ容量が少ないプログラム組込み装置において、容易に鍵を更新することができる方法を説明した。
【００６９】
また、メモリ容量が少ないプログラム組込み装置において、鍵を更新する際に、消去した鍵デカプセル化プログラムを復帰することができる方法を説明した。
【図面の簡単な説明】
【００７０】
【図１】実施の形態１に係るシステムの構成例を示すブロック図である。
【図２】実施の形態１に係るシステムの別の構成例を示すブロック図である。
【図３】実施の形態１に係るデータ処理装置のハードウェア構成の一例を示す図である。
【図４】実施の形態１に係る外部装置及びデータ処理装置の構成を示すブロック図である。
【図５】実施の形態１に係るプログラムダウンロード工程の手順を示す図である。
【図６】実施の形態１に係るデータ処理装置による初期化手順を示すフローチャートである。
【図７】実施の形態１に係るデータ処理装置によるプログラムダウンロード手順を示すフローチャートである。
【図８】実施の形態１に係るデータ処理装置による初期化手順及びプログラムダウンロード手順での記憶部内のデータ遷移を示す図である。
【図９】実施の形態１に係るデータ処理装置によるプログラム更新手順での記憶部内のデータ遷移を示す図である。
【図１０】実施の形態１に係るデータ処理装置による鍵更新手順を示すフローチャートである。
【図１１】実施の形態１に係るデータ処理装置による鍵更新手順での記憶部内のデータ遷移を示す図である。
【図１２】実施の形態１に係るデータ処理装置による別の鍵更新手順を示すフローチャートである。
【図１３】実施の形態１に係るデータ処理装置による別の鍵更新手順での記憶部内のデータ遷移を示す図である。
【符号の説明】
【００７１】
１０１  プログラムローダ装置、１０２  記憶部、１０３  鍵カプセル化部、１０４  暗号化部、２０１  プログラム組込み装置、２０２  ＩＤ格納部、２０３  記憶部、２０４  データ領域、２０５  プログラム領域、２０６  処理部、２０７  鍵デカプセル化部、２０８  復号部、２１０  内部メモリ、２１１  システムバス、２２０  ＣＰＵ、２２１  外部メモリユニット、２２３  Ｉ／Ｆユニット、２２４  ＩＤ。
【図１】
2010152852.tif 000003
【図２】
2010152852.tif 000004
【図３】
2010152852.tif 000005
【図４】
2010152852.tif 000006
【図５】
2010152852.tif 000007
【図６】
2010152852.tif 000008
【図７】
2010152852.tif 000009
【図８】
2010152852.tif 000010
【図９】
2010152852.tif 000011
【図１０】
2010152852.tif 000012
【図１１】
2010152852.tif 000013
【図１２】
2010152852.tif 000014
【図１３】
2010152852.tif 000015