(57)【要約】【課題】  セキュリティ性を確保しつつ、プログラム実行時のデータ処理時間を短縮化することが可能な組込装置及びその制御方法を提供する。【解決手段】  ＣＰＵ２１と、外部ＲＯＭ２３と、を有し、上位装置１０と接続されるカードリーダ２０において、ＣＰＵ２１は、上位装置１０から暗号化方法Ａにより暗号化されたプログラムＡを受信する受信手段と、プログラムＡを原プログラムに復号化処理するＡ復号化手段と、原プログラムを暗号化方法ＢによってプログラムＢに暗号化処理するＢ暗号化手段と、プログラムＢを外部ＲＯＭ２３に書き込む書込手段と、外部ＲＯＭ２３から読み出したプログラムＢを復号化処理することによって、機器制御に係るプログラムを生成するＢ復号化手段と、を備えるとともに、Ａ復号化手段による復号処理時間と比べて、Ｂ復号化手段による復号化時間の方が短い。【選択図】        図１
2008181430.tif 000002
【特許請求の範囲】
【請求項１】
機器制御に係るプログラムを実行するプロセッサと、当該プロセッサ外においてプログラムを記憶する記憶手段と、を有し、上位装置と接続される組込装置において、
前記プロセッサは、前記上位装置から暗号化方法Ａにより暗号化されたプログラムＡを受信する受信手段と、
前記プログラムＡを原プログラムに復号化処理するＡ復号化手段と、
前記原プログラムを暗号化方法ＢによってプログラムＢに暗号化処理するＢ暗号化手段と、
前記プログラムＢを前記記憶手段に書き込む書込手段と、
前記記憶手段から読み出した前記プログラムＢを復号化処理することによって、前記機器制御に係るプログラムを生成するＢ復号化手段と、を備えるとともに、
前記Ａ復号化手段による復号処理時間と比べて、前記Ｂ復号化手段による復号化時間の方が短いことを特徴とする組込装置。
【請求項２】
前記組込装置はカード処理装置であって、前記機器制御に係るプログラムは、カード処理に関する修正プログラムであることを特徴とする請求項１記載の組込装置。
【請求項３】
機器制御に係るプログラムを実行するプロセッサと、プログラムを記憶する記憶手段と、を有し、上位装置と接続される組込装置の制御方法であって、
前記プロセッサにおいて、前記上位装置から暗号化方法Ａにより暗号化されたプログラムＡを受信する受信工程と、
前記プログラムＡを原プログラムに復号化処理するＡ復号化工程と、
前記原プログラムを暗号化方法ＢによってプログラムＢに暗号化処理するＢ暗号化工程と、
前記プログラムＢを前記記憶手段に書き込む書込工程と、
前記記憶手段から読み出した前記プログラムＢを復号化処理することによって、前記機器制御に係るプログラムを生成するＢ復号化工程と、が含まれるとともに、
前記Ａ復号化手段による復号処理時間と比べて、前記Ｂ復号化手段による復号化時間の方が短いことを特徴とする組込装置の制御方法。
【請求項４】
前記組込装置はカード処理装置であって、前記機器制御に係るプログラムは、カード処理に関する修正プログラムであることを特徴とする請求項３記載の組込装置の制御方法。
【請求項５】
前記受信工程と、前記Ａ復号化工程と、前記Ｂ暗号化工程と、前記書込工程とは、前記組込装置におけるプログラム書換え時に行われることを特徴とする請求項３又は４記載の組込装置の制御方法。
【請求項６】
前記Ｂ復号化工程は、前記組込装置における通常動作時に行われることを特徴とする請求項３から５のいずれか記載の組込装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばプロセッサで用いるプログラムを外部からダウンロードする組込装置及びその制御方法に関し、特に、そのセキュリティ性を向上させる技術に関する。
【背景技術】
【０００２】
従来より、例えばＣＰＵなどのプロセッサで用いるプログラムが、書換え可能な不揮発性メモリに記憶された組込装置がある。これは、ＲＯＭなどの書換え不可能なメモリに記憶させた場合には、プログラム自身に不具合が発見されたり、仕様変更が生じたりしたとき、柔軟な対応がとり難いからである。
【０００３】
このような組込装置として、例えばカードリーダが挙げられる。近年のカードリーダでは、プログラム不具合や仕様変更などに備えて、上位装置から、シリアルＩ／Ｆ，ＵＳＢなどの通信手段を介してプログラムをダウンロードし、これを不揮発性メモリ等に記憶できるようになっている。
【０００４】
一般に、上位装置からダウンロードされるプログラム内には、カードフォーマット等の機密情報が含まれていることから、データ解析を困難にするために、プログラムを暗号化してダウンロードし、カードリーダの不揮発性メモリ（例えばフラッシュＲＯＭなど）に格納するようにしている。
【０００５】
ここで、プロセッサ（ＣＰＵ）内部のメモリにプログラムを格納することで、データ取り出しを困難とし、セキュリティ性を高めることは可能である。しかし、特許文献１に開示された組込み機器のように、プロセッサのメモリ容量やメンテナンス性の観点から、暗号化されたプログラムをプロセッサ外部のメモリ（不揮発性メモリ等）に格納しなければならない場合が多い。この場合、例えばカードリーダの電源投入時において、プロセッサは、外部メモリ内のプログラムを一旦ワークメモリ（ＲＡＭ等）に展開し、これを復号化して実行可能なプログラムに戻した後、プログラムを実行する必要がある。
【０００６】
【特許文献１】特開２００３−２５６０６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、プログラムをプロセッサ外の外部メモリに記憶しておき、そこからワークメモリに展開し、復号化するとなると、プログラムを実行するまでのデータ処理時間が長くなってしまう場合がある。例えば、上位装置から市場設置品のカードリーダに無人でプログラムをダウンロードする場合には、インターフェースライン上からプログラムデータが解析されるのを避けるため、より複雑な（解析が困難な）暗号化を行う必要があるところ、より複雑な暗号化を行ってしまうと、ワークメモリを用いてプロセッサがプログラムを復号化する際（プログラムの通常使用時に）、データ処理に時間がかかってしまう。だからといって、簡単な暗号化手段を用いてダウンロードデータを作成した場合には、プログラムデータの漏洩を確実に避けなければならず、上位装置でのデータの保管方法やインターフェースラインを厳重に管理しなければならない。その結果、コスト高やシステムの複雑化に繋がる。
【０００８】
本発明は、以上の点に鑑みてなされたものであり、その目的は、セキュリティ性を確保しつつ、プログラム実行時のデータ処理時間を短縮化することが可能な組込装置及びその制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
以上のような課題を解決するために、本発明は、以下のものを提供する。
【００１０】
（１）  機器制御に係るプログラムを実行するプロセッサと、当該プロセッサ外においてプログラムを記憶する記憶手段と、を有し、上位装置と接続される組込装置において、前記プロセッサは、前記上位装置から暗号化方法Ａにより暗号化されたプログラムＡを受信する受信手段と、前記プログラムＡを原プログラムに復号化処理するＡ復号化手段と、前記原プログラムを暗号化方法ＢによってプログラムＢに暗号化処理するＢ暗号化手段と、前記プログラムＢを前記記憶手段に書き込む書込手段と、前記記憶手段から読み出した前記プログラムＢを復号化処理することによって、前記機器制御に係るプログラムを生成するＢ復号化手段と、を備えるとともに、前記Ａ復号化手段による復号処理時間と比べて、前記Ｂ復号化手段による復号化時間の方が短いことを特徴とする組込装置。
【００１１】
本発明によれば、プロセッサと、プロセッサ外の記憶手段と、を有し、上位装置と接続される組込装置において、このプロセッサは、上位装置から暗号化方法Ａにより暗号化されたプログラムＡを受信し、プログラムＡを原プログラムに復号化処理し、原プログラムを暗号化方法ＢによってプログラムＢに暗号化処理し、プログラムＢを記憶手段に書き込み、記憶手段から読み出したプログラムＢを復号化処理することによって、機器制御に係るプログラムを生成するとともに、プログラムＡから原プログラムへの復号処理時間と比べて、プログラムＢから機器制御に係るプログラムへの復号処理時間の方が短いこととしたので、セキュリティ性を確保した上で、プログラム実行時のデータ処理時間を短縮化することができる。
【００１２】
すなわち、上位装置から組込装置へプログラムをダウンロードする際には、復号処理により時間の掛かる暗号化手法（換言すると、より解析しにくい暗号化手法）を用いてダウンロードするので、インターフェースライン上からプログラムデータが解析されるのを防ぐことができ、ひいては十分なセキュリティ性を確保することができる。また、復号処理により時間の掛かる暗号化手法を用いることができれば、データの保管方法やインターフェースラインの管理に関して必要以上にコストを掛ける必要がなくなる。一方で、組込装置においてプログラムを保存するときには、復号化処理により時間の掛からない暗号化手法を用いるので、プログラム実行時のデータ処理時間を短縮化することができる。
【００１３】
このように、本発明は、セキュリティ性の確保とデータ処理時間の短縮化との双方のメリットをもたらすものである。なお、データ処理時間の短縮化ができれば、プロセッサのデータ処理負荷を軽減することもできる。
【００１４】
ここで、本発明でいう「プログラム」については、その種類の如何は問わない。すなわち、「プログラム」は、主に実行プログラムを意味するが、それ以外の補助プログラムや修正プログラム（サブルーチンプログラム）など、如何なるものであっても構わない。また、プログラムＡから原プログラムへの復号処理時間と、プログラムＢから機器制御に係るプログラムへの復号処理時間とは、後者の方が少しでも短ければ足りる。差異時間の程度の如何は問わない。さらに、本発明でいう「組込装置」は、例えばカード処理装置が挙げられるが、その他、修正プログラムをダウンロードする可能性のある組込家電（例えばプロセッサを組み込んだエアコンや冷蔵庫など）、カーナビシステムの端末装置など、如何なる装置であっても構わない。
【００１５】
（２）  前記組込装置はカード処理装置であって、前記機器制御に係るプログラムは、カード処理に関する修正プログラムであることを特徴とする組込装置。
【００１６】
本発明によれば、上述した組込装置はカード処理装置であって、機器制御に係るプログラムは、カード処理に関する修正プログラムであることとしたので、上述したセキュリティ性の確保とデータ処理時間の短縮化に加えて、カード処理装置のメンテナンス性を向上させることができる。例えば、上位装置から組込装置へと修正プログラムをダウンロードする際、インターフェースラインにコストを掛けなくて済めば、コストを抑えた上でメンテナンスを行うことができる。
【００１７】
（３）  機器制御に係るプログラムを実行するプロセッサと、プログラムを記憶する記憶手段と、を有し、上位装置と接続される組込装置の制御方法であって、前記プロセッサにおいて、前記上位装置から暗号化方法Ａにより暗号化されたプログラムＡを受信する受信工程と、前記プログラムＡを原プログラムに復号化処理するＡ復号化工程と、前記原プログラムを暗号化方法ＢによってプログラムＢに暗号化処理するＢ暗号化工程と、前記プログラムＢを前記記憶手段に書き込む書込工程と、前記記憶手段から読み出した前記プログラムＢを復号化処理することによって、前記機器制御に係るプログラムを生成するＢ復号化工程と、が含まれるとともに、前記Ａ復号化手段による復号処理時間と比べて、前記Ｂ復号化手段による復号化時間の方が短いことを特徴とする組込装置の制御方法。
【００１８】
本発明によれば、プロセッサと、プロセッサ外の記憶手段と、を有し、上位装置と接続される組込装置の制御方法において、このプロセッサが、上位装置から暗号化方法Ａにより暗号化されたプログラムＡを受信する工程（受信工程）と、プログラムＡを原プログラムに復号化処理する工程（Ａ復号化工程）と、原プログラムを暗号化方法ＢによってプログラムＢに暗号化処理する工程（Ｂ暗号化工程工程）と、プログラムＢを記憶手段に書き込む工程（書込工程）と、記憶手段から読み出したプログラムＢを復号化処理することによって、機器制御に係るプログラムを生成する工程（Ｂ復号化工程）と、が含まれるとともに、プログラムＡから原プログラムへの復号処理時間と比べて、プログラムＢから機器制御に係るプログラムへの復号処理時間の方が短いこととしたので、セキュリティ性確保とデータ処理時間の短縮化との双方を実現することができる。なお、「プログラム」や「組込装置」などの解釈については、上述同様である。
【００１９】
（４）  前記組込装置はカード処理装置であって、前記機器制御に係るプログラムは、カード処理に関する修正プログラムであることを特徴とする組込装置の制御方法。
【００２０】
本発明によれば、上述した組込装置はカード処理装置であって、機器制御に係るプログラムは、カード処理に関する修正プログラムであることとしたので、カード処理装置のメンテナンス性を向上させることができる。
【００２１】
（５）  前記受信工程と、前記Ａ復号化工程と、前記Ｂ暗号化工程と、前記書込工程とは、前記組込装置におけるプログラム書換え時に行われることを特徴とする組込装置の制御方法。
【００２２】
本発明によれば、上述した受信工程、Ａ復号化工程、Ｂ暗号化工程、書込工程は、組込装置におけるプログラム書換え時に行われることとしたので、セキュリティ性を保ち、より安全にプログラム書換えを行うことができる。
【００２３】
（６）  前記Ｂ復号化工程は、前記組込装置における通常動作時に行われることを特徴とする組込装置の制御方法。
【００２４】
本発明によれば、上述したＢ復号化工程は、組込装置における通常動作時（プログラム通常使用時）に行われることとしたので、組込装置は、より迅速に通常動作を行うことができる。
【発明の効果】
【００２５】
本発明に係る組込装置及びその制御方法は、セキュリティ性を確保するとともに、プログラム通常使用時におけるデータ処理時間が長くなってしまうのを防ぐことができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００２７】
図１は、本発明の実施の形態に係る組込装置（カードリーダ２０）の電気的構成の概要を示すブロック図である。なお、本実施形態では、組込装置としてカードリーダ２０を採用するが、本発明はこれに限られず、他の装置であっても構わない。
【００２８】
図１において、カードリーダ２０は、主として、機器制御に係るプログラムを実行するプロセッサとしてＣＰＵ２１と、このＣＰＵ２１外においてプログラムを記憶する記憶手段として外部ＲＯＭ（例えばフラッシュＲＯＭなど）２３と、を有している。なお、カードリーダ２０は、その他、磁気ヘッドやイメージセンサ、アンテナコイルや駆動モータ等を有するのが一般的であるが、本実施形態では省略する。ただし、これらの要素全てを備えている、という趣旨ではない。
【００２９】
カードリーダ２０は、ＵＳＢ等のインターフェースを介して、上位装置１００と接続される。ただし、この上位装置１００との接続は、必要に応じて接続されるようにしてもよいし、常時接続されるようにしてもよい。
【００３０】
カードリーダ２０のＣＰＵ２１は、ワークエリアとして機能するＲＡＭ２２を有している。また、外部ＲＯＭ２３は、電源を切ってもデータは自動的に消去されないが、一定のデータのまとまりをもって電気的に消去することが可能なフラッシュＲＯＭを想定している。ただし、フラッシュＲＯＭでなくても、電気信号により消去可能なＥＥＰＲＯＭを用いる等、他の外部メモリＩＣを用いてもよい。
【００３１】
図２は、本発明の実施の形態に係る組込装置（カードリーダ２０）の制御方法を説明するためのフローチャートである。特に、図２（ａ）は、カードリーダ２０におけるプログラム書換え時に行われる様子を示すフローチャート（ダウンロード手順）であって、図２（ｂ）は、カードリーダ２０における通常動作時（例えば、カードリーダ２０の電源投入時）に行われる様子を示すフローチャート（プログラム実行手順）である。また、図２（ｃ）は、Ａ復号化工程に必要な時間と、Ｂ復号化工程に必要な時間とを概念的に示したものである。
【００３２】
図２（ａ）において、まず、上位装置１０において、カードリーダ２０に組み込もうとするダウンロードデータ１００（プログラムＡ）を、暗号化手段Ａにより暗号化する（ステップＳ１）。
【００３３】
このとき用いる暗号化方法（暗号化手段Ａ）としては、例えば、暗号化を規定バイト数（１００バイト程度）単位に行い、数ビット単位でのデータ入れ替えとデータ変換処理を組み合わせた方法を用いる。この変換の際、データチェック用のチェックコードを付加する。上位装置からは、規定バイト数ごとにデータ転送を行い、ＲＡＭ２２に保管する。このデータを転送の都度、復号化およびチェックコードによるデータの有効／無効の判定を行い、データが無効の場合は、最初のデータからデータ転送をやり直すことが出きるようにする。この方法により、転送されたデータの復号化の処理時間は、トータル１０sec程度となる。以上のように、暗号化手段Ａとしては、装置が組み込まれているシステムでの処理のタイムアウト値内となること、また、規定バイト数毎にデータの有効／無効を判断することにより、迅速にリトライ処理に移ることができるもの、そのかわりデータサイズは、実データより大きくなってもよい、という条件となる方法を使用する。
【００３４】
また、暗号化方法としては、例えば、簡単な換字式暗号でも、標準暗号として一般的な公開鍵暗号（ＲＳＡや楕円曲線暗号、エルガマル暗号など）、共通鍵暗号（ＤＥＳやＡＥＳなど）を用いてもよい。また、チェックコードの替わりに、規定バイト毎のハッシュ値を用いて、電子署名として使用してもよい。
【００３５】
次に、暗号化手段Ａ（暗号化方法Ａ）により暗号化されたプログラムＡは、シリアルＩ／Ｆを介して上位装置１００からカードリーダ２０へ転送される（ステップＳ２）。このとき、上位装置１０の転送プログラム及び／又はカードリーダ２０のダウンロード用プログラムが実行されることによって、転送が行われる。
【００３６】
次に、カードリーダ２０において、暗号化手段Ａに対応した方法により、一旦プログラムＡを復号化して、原プログラムを生成する（ステップＳ３）。そして、今度はＣＰＵ２１が、暗号化手段Ｂ（暗号化方法Ｂ）によって原プログラムを暗号化し、暗号化されたプログラムＢを外部ＲＯＭ２３に格納する（書き込む）（ステップＳ４）。
【００３７】
このとき用いる暗号化方法（暗号化手段Ｂ）としては、例えば、独自の変換テーブルを用いた多表式の換字変換による暗号手段とし、変換時はチェックコード等の冗長なデータの付加を行わず、暗号化手段Ａと比べて、簡単な処理方法となっており、処理時間は、約2sec程度である。以上のように、処理時間は１〜２ｓｅｃになるもの、冗長なデータの付加は行わず、実データとほぼ同じサイズになること、といった条件となる方法を使用する。これにより、データサイズが実際のデータとほぼ同じで、メモリ消費量が最小限に抑えられる。そして、処理時間を短縮化することができる。
【００３８】
また、暗号化方法としては、上述同様、例えば、簡単な換字式暗号でも標準暗号として一般的な公開鍵暗号（ＲＳＡや楕円曲線暗号、エルガマル暗号など）、共通鍵暗号（ＤＥＳやＡＥＳなど）、を用いてもよい。ただし、暗号化手段Aの方が暗号化手段Bよりも解析が困難である（セキュリティ性が高い）こと、かつ暗号化手段Ａと比べて、暗号化手段Ｂは復号化工程に時間が掛からないものでなければならない。具体的には、図２（ｃ）に示すように、例えば全く性能の同じＣＰＵを用いて復号化することを考えた場合、暗号化手段Ａによって暗号化されたものを復号化する工程（図中のＡ復号化工程）と、暗号化手段Ｂによって暗号化されたものを復号化する工程（図中のＢ復号化工程）とを比較すると、Ｂ復号化工程による復号化時間の方が短くなるようにしなければならない。
【００３９】
また、種類が同じ暗号であっても、鍵長が異なる場合には、復号化時間にも差異が生じる。従って、暗号化手段Ａと暗号化手段Ｂの種類を同じとし、暗号化手段Ａで用いる鍵長は長いものを使用し、暗号化手段Ｂで用いる鍵長は短いものを使用する、という構成にしてもよい。
【００４０】
一方で、図２（ｂ）において、ＣＰＵ２１は、外部ＲＯＭ２３に格納されたプログラムＢを読み出して、暗号化手段Ｂに対応した方法でこれを復号化する（ステップＳ１１）。このとき、ワークメモリ２２が用いられる。その結果、ワークメモリ上に、機器制御に係るプログラムが生成されることになり、ＣＰＵ２１は、これを実行することができる（ステップＳ１２）。
【００４１】
以上説明したように、本実施形態に係る組込装置（カードリーダ２０）によれば、上位装置１０からカードリーダ２０へプログラムをダウンロードする際には、復号処理により時間の掛かる（解析が困難な）暗号化手法Ａを用いてダウンロードするので（図２（ａ）のステップＳ１）、十分なセキュリティ性を確保することができる。また、暗号化手法Ａを用いれば、データの保管方法やインターフェースラインの管理に関してコスト削減を図ることができる。一方で、カードリーダ２０においてプログラムを外部ＲＯＭ２３に格納するときには、復号化処理により時間の掛からない暗号化手法Ｂを用いるので（図２（ａ）のステップＳ４）、プログラム実行時のデータ処理時間を短縮化することができる。
【００４２】
なお、ダウンロードの手段については、シリアルＩ／Ｆの他、ＵＳＢによるＩ／Ｆ、パラレルＩ／Ｆなど、その種類の如何を問わない。また、ダウンロード時は、全データの転送完了待ってから再変換（暗号化手法Ｂによる暗号化）を行ってもよいし、全データの転送完了を待たずに再変換（暗号化手法Ｂによる暗号化）を行ってもよい。後者によれば、プログラムの外部ＲＯＭ２３への格納を迅速化することができる。
【００４３】
また、ダウンロード用暗号化／復号化プログラムは、予めカードリーダ２０内に格納していなくてもよい。例えば、プログラムのダウンロード時に、実行プログラムデータを転送する前に上位装置１０から転送するようにしてもよい。暗号化／復号化プログラムを上位装置１０から転送可能とすれば、暗号化手段を変更することも可能である。
【産業上の利用可能性】
【００４４】
本発明に係る組込装置及びその制御方法は、セキュリティ性の確保とともに、プログラム実行時（例えば電源投入時）のデータ処理時間の短縮化が可能なものとして有用である。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施の形態に係る組込装置（カードリーダ２０）の電気的構成の概要を示すブロック図である。
【図２】本発明の実施の形態に係る組込装置（カードリーダ２０）の制御方法を説明するためのフローチャートである。
【符号の説明】
【００４６】
１０  上位装置
２０  カードリーダ
２１  ＣＰＵ
２２  ワークメモリ（ＲＡＭ）
２３  外部ＲＯＭ（フラッシュＲＯＭ）
【図１】
2008181430.tif 000003
【図２】
2008181430.tif 000004