説明

携帯可能電子装置およびICカード

【課題】暗号化処理結果の出力データが予測不能となり、暗号化処理結果を的中させることが困難となり、かつ、暗号化処理で使用するパラメータが改竄されたとしても、暗号化処理結果を推測するのは困難となる携帯可能電子装置およびICカードを提供する。
【解決手段】データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたICカードにおいて、暗号化処理を実施する前に、暗号化処理を行なう際の処理データを一時的に保持するためのコプロメモリに乱数を格納し、暗号化処理を実施する前にコプロメモリに乱数が正しく格納されているか否かを確認し、この確認の結果、コプロメモリに乱数が正しく格納されていない場合、暗号化処理を実施せず、エラー処理を行なう。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、たとえば、書込み、書換えが可能な不揮発性メモリおよびCPU(セントラル・プロセッシング・ユニット)などの制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたIC(集積回路)チップを内蔵した、いわゆるICカードと称される携帯可能電子装置に係り、特に、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段を備えた携帯可能電子装置およびICカードに関する。
【背景技術】
【0002】
最近、携帯可能電子装置として、不揮発性メモリとしてのEEPROM、揮発性メモリとしてのRAM、これらのメモリに対してアクセス(データの読出しおよびまたは書込み等)を行なう制御素子としてのCPU、および、CPUの動作用プログラム等を格納したROMを有し、外部装置(カードリーダ・ライタ)から供給される命令データ(コマンド)に基づいてデータの入出力等を行なう手段を備えたICチップを内蔵したICカードが産業各方面で利用されている。
【0003】
一般に、このようなICカードにあっては、コマンドやレスポンスを用いて、外部装置との間でデータの入出力を行なうようになっている。
また、この種のICカードでは、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化機能を備えたものがある。暗号化処理を行なう際には、ドライバソフトウェアを介してコプロセッサや転置回路といったハードウェア(暗号モジュール)の制御を行なっている(たとえば、特許文献1、特許文献2を参照)。
【0004】
ドライバソフトウェアは、入力データアドレス、入力データサイズ、出力データアドレス、暗号方式、暗号/復号鍵アドレス、鍵サイズ等の情報をCPU内のレジスタに入力し、暗号モジュールの処理を実行すると、その処理結果が出力データアドレスで指定したメモリ空間に格納されるようになっている。
【特許文献1】特開2005−223477号公報
【特許文献2】特表2000−507072号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
ところが、従来のICカードでは、ドライバソフトウェアを使った暗号化処理中にパータベーション(Perturbation)攻撃を受けると、暗号モジュールでの処理結果を格納する出力データアドレスの値を改竄され、予期しないメモリ空間にデータを格納してしまうことがある。
【0006】
このパータベーション攻撃が成功すると、従来、暗号化処理結果が格納されるメモリ空間にはデータが格納されず、「0x00」や「0xFF」といった初期値データが残ってしまい、この初期値データを暗号モジュールの処理結果とみなして以降の処理が行なわれてしまう可能性がある。
【0007】
そこで、本発明は、暗号化処理結果の出力データが予測不能となり、暗号化処理結果を的中させることが困難となり、かつ、暗号化処理で使用するパラメータが改竄されたとしても、暗号化処理結果を推測するのは困難となる携帯可能電子装置およびICカードを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の携帯可能電子装置は、データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えた携帯可能電子装置において、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するための記憶手段と、乱数を生成する乱数生成手段と、前記暗号化手段により暗号化処理を実施する前に前記乱数生成手段により生成された乱数を前記記憶手段に格納する乱数格納手段とを具備している。
【0009】
また、本発明の携帯可能電子装置は、データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えた携帯可能電子装置において、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段とを具備している。
【0010】
また、本発明のICカードは、データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたICカードにおいて、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するための記憶手段と、乱数を生成する乱数生成手段と、前記暗号化手段により暗号化処理を実施する前に前記乱数生成手段により生成された乱数を前記記憶手段に格納する乱数格納手段とを有したICモジュールと、このICモジュールを収納したICカード本体とを具備している。
【0011】
さらに、本発明のICカードは、データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたICカードにおいて、外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段とを有したICモジュールと、このICモジュールを収納したICカード本体とを具備している。
【発明の効果】
【0012】
本発明によれば、暗号化処理を行なう前に各領域に乱数を設定することにより、パータベーション攻撃により入力データが正しく所定の領域に格納されてかったとしても、入力データの格納領域には乱数が格納されているため、暗号化処理結果の出力データが予測不能となり、暗号化処理結果を的中させることが困難となる。
【0013】
また、その他の暗号化処理で使用するパラメータ(入力データの先頭アドレス、入力データサイズ、暗号鍵の先頭アドレス、出力データ先アドレス、出力データサイズ等)のいずれかが改竄されたとしても、改竄後のアドレスにも乱数があらかじめ格納されているため、暗号化処理結果を推測するのは困難となる。
【発明を実施するための最良の形態】
【0014】
以下、本発明の実施の形態について図面を参照して説明する。
図1は、本発明に係る携帯可能電子装置としてのICカードを取扱うICカードシステムの構成例を示すものである。このICカードシステムは、ICカード101を外部装置としてのカードリーダ・ライタ102を介して端末装置103と接続可能にするとともに、端末装置103にキーボード104、CRT表示部105、プリンタ106を接続して構成される。
【0015】
ICカード101は、カードリーダ・ライタ102からの電源供給により動作可能な状態となり、カードリーダ・ライタ102から供給されるコマンド(命令)に応じて種々の処理を実行する。カードリーダ・ライタ102は、ICカード101に対し動作電源を供給するとともに種々の処理を要求するコマンドを供給する。
【0016】
端末装置103は、たとえば、パーソナルコンピュータなどにより構成されていて、図示しないメモリに記憶されている各種制御プログラムを実行することにより、各種の処理を実行するとともに、カードリーダ・ライタ102を介してICカード101との間でデータの入出力を行なう。
【0017】
図2は、ICカード101の構成を示すもので、制御素子としてのCPU201、記憶内容が書換え可能な記憶手段としてのデータメモリ202、ワーキングメモリ203、プログラムメモリ204、記憶手段としてのコプロメモリ205、および、カードリーダ・ライタ102との通信を行なうための通信部206、暗号化処理を行なう暗号化手段としての暗号モジュール207、および、乱数を生成する乱数生成手段としての乱数生成モジュール208によって構成されていて、これらのうち、破線内の部分(CPU201、データメモリ202、ワーキングメモリ203、プログラムメモリ204、記憶手段としてのコプロメモリ205、暗号モジュール207、乱数生成モジュール208)は1つ(あるいは複数)のICチップ209で構成され、さらに、このICチップ209と通信部206とが接続された状態で一体的にICモジュール化されて、ICカード本体101a内に埋設されている。
【0018】
CPU201は、各種の判定処理や判断処理およびメモリに対するデータの書込みや読出しなどの各種のデータ処理を行なう制御部である。
【0019】
データメモリ202は、たとえば、EEPROM(エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ)などの消去(書換え)可能な不揮発性メモリで構成されていて、各種アプリケーションデータなどの各種データがファイル構造で記憶される。
【0020】
ワーキングメモリ203は、CPU201が処理を行なう際の処理データを一時的に保持するための作業用のメモリであり、たとえば、RAM(ランダム・アクセス・メモリ)などの揮発性メモリで構成されている。
【0021】
プログラムメモリ204は、たとえば、マスクROM(リード・オンリ・メモリ)などの書換え不可能な固定メモリで構成されており、CPU201の制御プログラムなどを記憶している。
【0022】
コプロメモリ205は、暗号モジュール207で暗号化処理を行なう際の処理データを一時的に保持するためのメモリであり、たとえば、RAM(Co−RAMと称す)などの揮発性メモリで構成される。
【0023】
通信部206は、ICカード101が非接触式(無線式)ICカードの場合にはアンテナ部として構成され、カードリーダ・ライタ102から送信された変調波を非接触で受信したり外部へ変調波を発信したりするようになっている。また、この通信部206で受信した変調波から内部回路に供給するための電源やクロックを生成するようになっている。また、接触式ICカードの場合にはコンタクト部として構成され、カードリーダ・ライタ102に設けられたICカード端子部(図示しない)と接触することにより電源やクロックを得るようになっている。
【0024】
暗号モジュール207は、暗号計算(暗号化処理)を行なうものであり、たとえば、DES、RSA、AES等の暗号方式に対応したコプロセッサ、転置回路などで構成されている。乱数生成モジュール208は、乱数を生成するものである。
【0025】
図3は、ICカード101のメモリ空間とその構造を示すものである。図3の例では、同一のアドレス空間に、ROM領域301(プログラムメモリ204)、EEPROM領域302(データメモリ202)、Co−RAM領域303(コプロメモリ205)、RAM領域304(ワーキングメモリ203)の順番にメモリが配置されている。
【0026】
図4は、一般的なICカード101内でのCo−RAM領域303(コプロメモリ205)とDES暗号方式の暗号モジュール207での動作例を示しており、以下、これについて簡単に説明する。
【0027】
まず、Co−RAM領域303内の入力データ領域401にデータを設定し、DES鍵領域402にDES鍵を設定する。次に、Co−RAM領域303内の入力データ領域401に格納された入力データの先頭アドレスと入力データサイズをCPU201内のレジスタ(図示省略)に設定する。次に、暗号方式を決定するためにDES暗号方式で実行することを示す値をCPU201のレジスタに設定する。次に、DES鍵領域402に格納されたDES鍵の先頭アドレスとDES鍵サイズをCPU201内のレジスタに設定する。次に、Co−RAM領域303内の出力データ領域403に暗号化処理結果を格納する先頭アドレスをCPU201内のレジスタに設定する。
以上の設定を行なった後に暗号モジュール207による暗号化処理を実行すると、その暗号化処理結果が出力先アドレス設定で指定した出力データ領域403内のアドレスに格納される。
【0028】
次に、第1の実施の形態に係る動作例について図5に示すフローチャートを参照して説明する。なお、この動作例はDES暗号方式の暗号モジュール207を用いた場合を示している。
【0029】
まず、Co−RAM領域303(入力データ領域401、DES鍵領域402、出力データ領域403)に、乱数生成モジュール208で生成される乱数を格納する(ステップS501)。次に、Co−RAM領域303内に初期値ではなく乱数が正しく格納されていることをチェックし(ステップS502)、乱数が正しく格納されていない場合は、エラー処理を行ない(ステップS503)、その後、当該処理を終了する。
【0030】
ステップS502におけるチェックの結果、Co−RAM領域303内に乱数が正しく格納されている場合、Co−RAM領域303内の入力データ領域401に暗号化するための入力データを上書きし(ステップS504)、また、DES鍵領域402にDES鍵を上書きする(ステップS505)。
【0031】
次に、Co−RAM領域303内の入力データ領域401に格納された入力データの先頭アドレスと、当該入力データのサイズをCPU201内のレジスタ(図示省略)に設定する(ステップS506)。
【0032】
次に、暗号方式を決定するためにDES暗号方式で実行することを示す値をCPU201内のレジスタに設定する(ステップS507)。次に、DES鍵領域402に格納されているDES鍵の先頭アドレスと、当該DES鍵のサイズをCPU201内のレジスタに設定する(ステップS508)。
【0033】
次に、出力データ領域403内の暗号化処理結果を格納する先頭アドレスをCPU201内のレジスタに設定する(ステップS509)。
【0034】
以上の設定を行なった後に暗号モジュール207による暗号化処理を実行すると(ステップS510)、その暗号化処理結果がステップS509で設定された出力データ領域403内のアドレスに格納され(ステップS511)、その後、当該処理を終了する。
【0035】
なお、ステップS503におけるエラー処理としては、たとえば、以降の暗号モジュール207へのアクセスを禁止したり、あるいは、当該ICカード101内の全ての処理を禁止したりするなどの処理が考えられる。
【0036】
このように、第1の実施の形態によれば、暗号モジュール207による暗号化処理を実施する前に、Co−RAM領域303内に乱数を格納することにより、パータベーション攻撃により入力データが正しくCo−RAM領域303に格納されていなかったとしても、入力データ領域401には乱数が格納されているため、暗号化処理結果の出力データが予測不能となり、暗号化処理結果を的中させることが極めて困難となる。
【0037】
また、暗号モジュール207で使用するその他のパラメータ(入力データの先頭アドレス、入力データサイズ、DES鍵の先頭アドレス、出力データ先アドレス、出力データサイズ等)のいずれかが改竄されたとしても、改竄後のアドレスにも乱数があらかじめ格納されているため、暗号化処理結果を推測するのは極めて困難となる。
【0038】
次に、第2の実施の形態に係る動作例について図6に示すフローチャートを参照して説明する。なお、Co−RAM領域303内の各領域401〜403には、初期値としてあらかじめ所定の定数(たとえば、オール「F」の値)が格納されているものとする。
【0039】
まず、Co−RAM領域303内の入力データ領域401に暗号化するための入力データを上書きし(ステップS601)、また、DES鍵領域402にDES鍵を上書きする(ステップS602)。
【0040】
次に、Co−RAM領域303内の入力データ領域401に格納された入力データの先頭アドレスと、当該入力データのサイズをCPU201内のレジスタ(図示省略)に設定する(ステップS603)。
【0041】
次に、暗号方式を決定するためにDES暗号方式で実行することを示す値をCPU201内のレジスタに設定する(ステップS604)。次に、DES鍵領域402に格納されているDES鍵の先頭アドレスと、当該DES鍵のサイズをCPU201内のレジスタに設定する(ステップS605)。
【0042】
次に、出力データ領域403内の暗号化処理結果を格納する先頭アドレスをCPU201内のレジスタに設定する(ステップS606)。次に、暗号モジュール207による暗号化処理を実行し(ステップS607)、その暗号化処理結果をステップS606で設定された出力データ領域403内のアドレスに格納する(ステップS608)。
【0043】
次に、Co−RAM領域303内が所定の定数(オール「F」)でないことをチェックし(ステップS609)、所定の定数であった場合は、暗号化処理を正常終了せず、エラー処理を行ない(ステップS610)、その後、当該処理を終了する。
ステップS609におけるチェックの結果、Co−RAM領域303内が所定の定数でなかった場合、当該処理を正常終了する。
【0044】
なお、ステップS610におけるエラー処理としては、たとえば、以降の暗号モジュール207へのアクセスを禁止したり、あるいは、当該ICカード101内の全ての処理を禁止したりするなどの処理が考えられる。
【0045】
このように、第2の実施の形態によれば、Co−RAM領域303内にあらかじめ所定の定数を格納しておき、暗号モジュール207による暗号化処理が終了した後、Co−RAM領域303内が所定の定数である場合、暗号化処理を正常終了せず、エラー処理を行なうことにより、第1の実施の形態と同様な作用効果が期待できる。
【図面の簡単な説明】
【0046】
【図1】本発明に係る携帯可能電子装置としてのICカードを取扱うICカードシステムの構成例を示すブロック図。
【図2】ICカードの構成を概略的に示すブロック図。
【図3】ICカードのメモリ空間とその構造を示す模式図。
【図4】一般的なICカード内でのCo−RAM領域とDES暗号方式の暗号モジュールでの動作例を説明する模式図。
【図5】第1の実施の形態に係る動作例について説明するフローチャート。
【図6】第2の実施の形態に係る動作例について説明するフローチャート。
【符号の説明】
【0047】
101…ICカード(携帯可能電子装置)、101a…ICカード本体、102…カードリーダ・ライタ(外部装置)、103…端末装置、104…キーボード、105…CRT表示部、106…プリンタ、201…CPU(制御素子)、202…データメモリ(記憶手段)、203…ワーキングメモリ、204…プログラムメモリ、205…コプロメモリ(記憶手段)、206…通信部、207…暗号モジュール(暗号化手段)、208…乱数生成モジュール(乱数生成手段)、209…ICチップ。

【特許請求の範囲】
【請求項1】
データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えた携帯可能電子装置において、
外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、
この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するための記憶手段と、
乱数を生成する乱数生成手段と、
前記暗号化手段により暗号化処理を実施する前に前記乱数生成手段により生成された乱数を前記記憶手段に格納する乱数格納手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項2】
前記暗号化手段により暗号化処理を実施する前に前記記憶手段に乱数が正しく格納されているか否かを確認する確認手段と、
この確認手段による確認の結果、前記記憶手段に乱数が正しく格納されていない場合、前記暗号化手段による暗号化処理を実施せず、エラー処理を行なう制御手段と、
をさらに具備したことを特徴とする請求項1記載の携帯可能電子装置。
【請求項3】
データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えた携帯可能電子装置において、
外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、
この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、
前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、
この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段と、
を具備したことを特徴とする携帯可能電子装置。
【請求項4】
データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたICカードにおいて、
外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するための記憶手段と、乱数を生成する乱数生成手段と、前記暗号化手段により暗号化処理を実施する前に前記乱数生成手段により生成された乱数を前記記憶手段に格納する乱数格納手段とを有したICモジュールと、
このICモジュールを収納したICカード本体と、
を具備したことを特徴とするICカード。
【請求項5】
データを記憶するためのメモリと、このメモリに対してデータの書込みおよびまたは読出しを行なう制御素子を有し、選択的に外部との間でデータの入出力を行なう手段を備えたICカードにおいて、
外部から入力されるデータあるいは外部へ出力するデータに対し暗号化処理を行なう暗号化手段と、この暗号化手段により暗号化処理を行なう際の処理データを一時的に保持するもので、初期値としてあらかじめ所定の定数が格納されている記憶手段と、前記暗号化手段による暗号化処理が終了した後、前記記憶手段内が所定の定数であるか否かを確認する確認手段と、この確認手段による確認の結果、前記記憶手段内が所定の定数である場合、前記暗号化手段による暗号化処理を正常終了せず、エラー処理を行なう制御手段とを有したICモジュールと、
このICモジュールを収納したICカード本体と、
を具備したことを特徴とするICカード。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2009−223503(P2009−223503A)
【公開日】平成21年10月1日(2009.10.1)
【国際特許分類】
【出願番号】特願2008−65999(P2008−65999)
【出願日】平成20年3月14日(2008.3.14)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】