(57)【特許請求の範囲】
【請求項１】
データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えた携帯可能電子装置において、
外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、
この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、
前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、
この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項２】
データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたＩＣカードにおいて、
外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段とを有したＩＣモジュールと、
このＩＣモジュールを収納したＩＣカード本体と、
を具備したことを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば、書込み、書換えが可能な不揮発性メモリおよびＣＰＵ（セントラル・プロセッシング・ユニット）などの制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたＩＣ（集積回路）チップを内蔵した、いわゆるＩＣカードと称される携帯可能電子装置に係り、特に、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段を備えた携帯可能電子装置およびＩＣカードに関する。
【背景技術】
【０００２】
最近、携帯可能電子装置として、不揮発性メモリとしてのＥＥＰＲＯＭ、揮発性メモリとしてのＲＡＭ、これらのメモリに対してアクセス（データの読出しおよびまたは書込み等）を行なう制御素子としてのＣＰＵ、および、ＣＰＵの動作用プログラム等を格納したＲＯＭを有し、外部装置（カードリーダ・ライタ）から供給される命令データ（コマンド）に基づいてデータの入出力等を行なう手段を備えたＩＣチップを内蔵したＩＣカードが産業各方面で利用されている。
【０００３】
一般に、このようなＩＣカードにあっては、コマンドやレスポンスを用いて、外部装置との間でデータの入出力を行なうようになっている。  
また、この種のＩＣカードでは、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化機能を備えたものがある。暗号化処理を行なう際には、ドライバソフトウェアを介してコプロセッサや転置回路といったハードウェア（暗号モジュール）の制御を行なっている（たとえば、特許文献１、特許文献２を参照）。
【０００４】
ドライバソフトウェアは、入力データアドレス、入力データサイズ、出力データアドレス、暗号方式、暗号／復号鍵アドレス、鍵サイズ等の情報をＣＰＵ内のレジスタに入力し、暗号モジュールの処理を実行すると、その処理結果が出力データアドレスで指定したメモリ空間に格納されるようになっている。
【特許文献１】特開２００５−２２３４７７号公報
【特許文献２】特表２０００−５０７０７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、従来のＩＣカードでは、ドライバソフトウェアを使った暗号化処理中にパータベーション（Ｐｅｒｔｕｒｂａｔｉｏｎ）攻撃を受けると、暗号モジュールでの処理結果を格納する出力データアドレスの値を改竄され、予期しないメモリ空間にデータを格納してしまうことがある。
【０００６】
このパータベーション攻撃が成功すると、従来、暗号化処理結果が格納されるメモリ空間にはデータが格納されず、「０ｘ００」や「０ｘＦＦ」といった初期値データが残ってしまい、この初期値データを暗号モジュールの処理結果とみなして以降の処理が行なわれてしまう可能性がある。
【０００７】
そこで、本発明は、暗号化処理結果の出力データが予測不能となり、暗号化処理結果を的中させることが困難となり、かつ、暗号化処理で使用するパラメータが改竄されたとしても、暗号化処理結果を推測するのは困難となる携帯可能電子装置およびＩＣカードを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の携帯可能電子装置は、データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えた携帯可能電子装置において、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段とを具備している。
【００１１】
また、本発明のＩＣカードは、データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたＩＣカードにおいて、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段とを有したＩＣモジュールと、このＩＣモジュールを収納したＩＣカード本体とを具備している。
【発明の効果】
【００１２】
本発明によれば、パータベーション攻撃により入力データが正しく所定の領域に格納されていなかったとしても、暗号化処理結果の出力データが予測不能となり、暗号化処理結果を的中させることが困難となる。
【００１３】
また、その他の暗号化処理で使用するパラメータ（入力データの先頭アドレス、入力データサイズ、暗号鍵の先頭アドレス、出力データ先アドレス、出力データサイズ等）のいずれかが改竄されたとしても、暗号化処理結果を推測するのは困難となる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。  
図１は、本発明に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すものである。このＩＣカードシステムは、ＩＣカード１０１を外部装置としてのカードリーダ・ライタ１０２を介して端末装置１０３と接続可能にするとともに、端末装置１０３にキーボード１０４、ＣＲＴ表示部１０５、プリンタ１０６を接続して構成される。
【００１５】
ＩＣカード１０１は、カードリーダ・ライタ１０２からの電源供給により動作可能な状態となり、カードリーダ・ライタ１０２から供給されるコマンド（命令）に応じて種々の処理を実行する。カードリーダ・ライタ１０２は、ＩＣカード１０１に対し動作電源を供給するとともに種々の処理を要求するコマンドを供給する。
【００１６】
端末装置１０３は、たとえば、パーソナルコンピュータなどにより構成されていて、図示しないメモリに記憶されている各種制御プログラムを実行することにより、各種の処理を実行するとともに、カードリーダ・ライタ１０２を介してＩＣカード１０１との間でデータの入出力を行なう。
【００１７】
図２は、ＩＣカード１０１の構成を示すもので、制御素子としてのＣＰＵ２０１、記憶内容が書換え可能な記憶手段としてのデータメモリ２０２、ワーキングメモリ２０３、プログラムメモリ２０４、記憶手段としてのコプロメモリ２０５、および、カードリーダ・ライタ１０２との通信を行なうための通信部２０６、暗号化処理を行なう暗号化手段としての暗号モジュール２０７、および、乱数を生成する乱数生成手段としての乱数生成モジュール２０８によって構成されていて、これらのうち、破線内の部分（ＣＰＵ２０１、データメモリ２０２、ワーキングメモリ２０３、プログラムメモリ２０４、記憶手段としてのコプロメモリ２０５、暗号モジュール２０７、乱数生成モジュール２０８）は１つ（あるいは複数）のＩＣチップ２０９で構成され、さらに、このＩＣチップ２０９と通信部２０６とが接続された状態で一体的にＩＣモジュール化されて、ＩＣカード本体１０１ａ内に埋設されている。
【００１８】
ＣＰＵ２０１は、各種の判定処理や判断処理およびメモリに対するデータの書込みや読出しなどの各種のデータ処理を行なう制御部である。
【００１９】
データメモリ２０２は、たとえば、ＥＥＰＲＯＭ（エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ）などの消去（書換え）可能な不揮発性メモリで構成されていて、各種アプリケーションデータなどの各種データがファイル構造で記憶される。
【００２０】
ワーキングメモリ２０３は、ＣＰＵ２０１が処理を行なう際の処理データを一時的に保持するための作業用のメモリであり、たとえば、ＲＡＭ（ランダム・アクセス・メモリ）などの揮発性メモリで構成されている。
【００２１】
プログラムメモリ２０４は、たとえば、マスクＲＯＭ（リード・オンリ・メモリ）などの書換え不可能な固定メモリで構成されており、ＣＰＵ２０１の制御プログラムなどを記憶している。
【００２２】
コプロメモリ２０５は、暗号モジュール２０７で暗号化処理を行なう際の処理データを一時的に保持するためのメモリであり、たとえば、ＲＡＭ（Ｃｏ−ＲＡＭと称す）などの揮発性メモリで構成される。
【００２３】
通信部２０６は、ＩＣカード１０１が非接触式（無線式）ＩＣカードの場合にはアンテナ部として構成され、カードリーダ・ライタ１０２から送信された変調波を非接触で受信したり外部へ変調波を発信したりするようになっている。また、この通信部２０６で受信した変調波から内部回路に供給するための電源やクロックを生成するようになっている。また、接触式ＩＣカードの場合にはコンタクト部として構成され、カードリーダ・ライタ１０２に設けられたＩＣカード端子部（図示しない）と接触することにより電源やクロックを得るようになっている。
【００２４】
暗号モジュール２０７は、暗号計算（暗号化処理）を行なうものであり、たとえば、ＤＥＳ、ＲＳＡ、ＡＥＳ等の暗号方式に対応したコプロセッサ、転置回路などで構成されている。乱数生成モジュール２０８は、乱数を生成するものである。
【００２５】
図３は、ＩＣカード１０１のメモリ空間とその構造を示すものである。図３の例では、同一のアドレス空間に、ＲＯＭ領域３０１（プログラムメモリ２０４）、ＥＥＰＲＯＭ領域３０２（データメモリ２０２）、Ｃｏ−ＲＡＭ領域３０３（コプロメモリ２０５）、ＲＡＭ領域３０４（ワーキングメモリ２０３）の順番にメモリが配置されている。
【００２６】
図４は、一般的なＩＣカード１０１内でのＣｏ−ＲＡＭ領域３０３（コプロメモリ２０５）とＤＥＳ暗号方式の暗号モジュール２０７での動作例を示しており、以下、これについて簡単に説明する。
【００２７】
まず、Ｃｏ−ＲＡＭ領域３０３内の入力データ領域４０１にデータを設定し、ＤＥＳ鍵領域４０２にＤＥＳ鍵を設定する。次に、Ｃｏ−ＲＡＭ領域３０３内の入力データ領域４０１に格納された入力データの先頭アドレスと入力データサイズをＣＰＵ２０１内のレジスタ（図示省略）に設定する。次に、暗号方式を決定するためにＤＥＳ暗号方式で実行することを示す値をＣＰＵ２０１のレジスタに設定する。次に、ＤＥＳ鍵領域４０２に格納されたＤＥＳ鍵の先頭アドレスとＤＥＳ鍵サイズをＣＰＵ２０１内のレジスタに設定する。次に、Ｃｏ−ＲＡＭ領域３０３内の出力データ領域４０３に暗号化処理結果を格納する先頭アドレスをＣＰＵ２０１内のレジスタに設定する。  
以上の設定を行なった後に暗号モジュール２０７による暗号化処理を実行すると、その暗号化処理結果が出力先アドレス設定で指定した出力データ領域４０３内のアドレスに格納される。
【００２８】
次に、第１の実施の形態に係る動作例について図５に示すフローチャートを参照して説明する。なお、この動作例はＤＥＳ暗号方式の暗号モジュール２０７を用いた場合を示している。
【００２９】
まず、Ｃｏ−ＲＡＭ領域３０３（入力データ領域４０１、ＤＥＳ鍵領域４０２、出力データ領域４０３）に、乱数生成モジュール２０８で生成される乱数を格納する（ステップＳ５０１）。次に、Ｃｏ−ＲＡＭ領域３０３内に初期値ではなく乱数が正しく格納されていることをチェックし（ステップＳ５０２）、乱数が正しく格納されていない場合は、エラー処理を行ない（ステップＳ５０３）、その後、当該処理を終了する。
【００３０】
ステップＳ５０２におけるチェックの結果、Ｃｏ−ＲＡＭ領域３０３内に乱数が正しく格納されている場合、Ｃｏ−ＲＡＭ領域３０３内の入力データ領域４０１に暗号化するための入力データを上書きし（ステップＳ５０４）、また、ＤＥＳ鍵領域４０２にＤＥＳ鍵を上書きする（ステップＳ５０５）。
【００３１】
次に、Ｃｏ−ＲＡＭ領域３０３内の入力データ領域４０１に格納された入力データの先頭アドレスと、当該入力データのサイズをＣＰＵ２０１内のレジスタ（図示省略）に設定する（ステップＳ５０６）。
【００３２】
次に、暗号方式を決定するためにＤＥＳ暗号方式で実行することを示す値をＣＰＵ２０１内のレジスタに設定する（ステップＳ５０７）。次に、ＤＥＳ鍵領域４０２に格納されているＤＥＳ鍵の先頭アドレスと、当該ＤＥＳ鍵のサイズをＣＰＵ２０１内のレジスタに設定する（ステップＳ５０８）。
【００３３】
次に、出力データ領域４０３内の暗号化処理結果を格納する先頭アドレスをＣＰＵ２０１内のレジスタに設定する（ステップＳ５０９）。
【００３４】
以上の設定を行なった後に暗号モジュール２０７による暗号化処理を実行すると（ステップＳ５１０）、その暗号化処理結果がステップＳ５０９で設定された出力データ領域４０３内のアドレスに格納され（ステップＳ５１１）、その後、当該処理を終了する。
【００３５】
なお、ステップＳ５０３におけるエラー処理としては、たとえば、以降の暗号モジュール２０７へのアクセスを禁止したり、あるいは、当該ＩＣカード１０１内の全ての処理を禁止したりするなどの処理が考えられる。
【００３６】
このように、第１の実施の形態によれば、暗号モジュール２０７による暗号化処理を実施する前に、Ｃｏ−ＲＡＭ領域３０３内に乱数を格納することにより、パータベーション攻撃により入力データが正しくＣｏ−ＲＡＭ領域３０３に格納されていなかったとしても、入力データ領域４０１には乱数が格納されているため、暗号化処理結果の出力データが予測不能となり、暗号化処理結果を的中させることが極めて困難となる。
【００３７】
また、暗号モジュール２０７で使用するその他のパラメータ（入力データの先頭アドレス、入力データサイズ、ＤＥＳ鍵の先頭アドレス、出力データ先アドレス、出力データサイズ等）のいずれかが改竄されたとしても、改竄後のアドレスにも乱数があらかじめ格納されているため、暗号化処理結果を推測するのは極めて困難となる。
【００３８】
次に、第２の実施の形態に係る動作例について図６に示すフローチャートを参照して説明する。なお、Ｃｏ−ＲＡＭ領域３０３内の各領域４０１〜４０３には、初期値としてあらかじめ所定の定数（たとえば、オール「Ｆ」の値）が格納されているものとする。
【００３９】
まず、Ｃｏ−ＲＡＭ領域３０３内の入力データ領域４０１に暗号化するための入力データを上書きし（ステップＳ６０１）、また、ＤＥＳ鍵領域４０２にＤＥＳ鍵を上書きする（ステップＳ６０２）。
【００４０】
次に、Ｃｏ−ＲＡＭ領域３０３内の入力データ領域４０１に格納された入力データの先頭アドレスと、当該入力データのサイズをＣＰＵ２０１内のレジスタ（図示省略）に設定する（ステップＳ６０３）。
【００４１】
次に、暗号方式を決定するためにＤＥＳ暗号方式で実行することを示す値をＣＰＵ２０１内のレジスタに設定する（ステップＳ６０４）。次に、ＤＥＳ鍵領域４０２に格納されているＤＥＳ鍵の先頭アドレスと、当該ＤＥＳ鍵のサイズをＣＰＵ２０１内のレジスタに設定する（ステップＳ６０５）。
【００４２】
次に、出力データ領域４０３内の暗号化処理結果を格納する先頭アドレスをＣＰＵ２０１内のレジスタに設定する（ステップＳ６０６）。次に、暗号モジュール２０７による暗号化処理を実行し（ステップＳ６０７）、その暗号化処理結果をステップＳ６０６で設定された出力データ領域４０３内のアドレスに格納する（ステップＳ６０８）。
【００４３】
次に、Ｃｏ−ＲＡＭ領域３０３内が所定の定数（オール「Ｆ」）でないことをチェックし（ステップＳ６０９）、所定の定数であった場合は、暗号化処理を正常終了せず、エラー処理を行ない（ステップＳ６１０）、その後、当該処理を終了する。  
ステップＳ６０９におけるチェックの結果、Ｃｏ−ＲＡＭ領域３０３内が所定の定数でなかった場合、当該処理を正常終了する。
【００４４】
なお、ステップＳ６１０におけるエラー処理としては、たとえば、以降の暗号モジュール２０７へのアクセスを禁止したり、あるいは、当該ＩＣカード１０１内の全ての処理を禁止したりするなどの処理が考えられる。
【００４５】
このように、第２の実施の形態によれば、Ｃｏ−ＲＡＭ領域３０３内にあらかじめ所定の定数を格納しておき、暗号モジュール２０７による暗号化処理が終了した後、Ｃｏ−ＲＡＭ領域３０３内が所定の定数である場合、暗号化処理を正常終了せず、エラー処理を行なうことにより、第１の実施の形態と同様な作用効果が期待できる。
【図面の簡単な説明】
【００４６】
【図１】本発明に係る携帯可能電子装置としてのＩＣカードを取扱うＩＣカードシステムの構成例を示すブロック図。
【図２】ＩＣカードの構成を概略的に示すブロック図。
【図３】ＩＣカードのメモリ空間とその構造を示す模式図。
【図４】一般的なＩＣカード内でのＣｏ−ＲＡＭ領域とＤＥＳ暗号方式の暗号モジュールでの動作例を説明する模式図。
【図５】第１の実施の形態に係る動作例について説明するフローチャート。
【図６】第２の実施の形態に係る動作例について説明するフローチャート。
【符号の説明】
【００４７】
１０１…ＩＣカード（携帯可能電子装置）、１０１ａ…ＩＣカード本体、１０２…カードリーダ・ライタ（外部装置）、１０３…端末装置、１０４…キーボード、１０５…ＣＲＴ表示部、１０６…プリンタ、２０１…ＣＰＵ（制御素子）、２０２…データメモリ（記憶手段）、２０３…ワーキングメモリ、２０４…プログラムメモリ、２０５…コプロメモリ（記憶手段）、２０６…通信部、２０７…暗号モジュール（暗号化手段）、２０８…乱数生成モジュール（乱数生成手段）、２０９…ＩＣチップ。
【図１】
0005112123.tif 000002
【図２】
0005112123.tif 000003
【図３】
0005112123.tif 000004
【図４】
0005112123.tif 000005
【図５】
0005112123.tif 000006
【図６】
0005112123.tif 000007