(57)【要約】【課題】本発明はＩＣカードに保存された秘密データの外部への漏洩を防ぐようなシステムを有したＩＣカードを提供することを目的とする。【解決手段】ＩＣカード１のＲＡＭ７は複数のエリアを有し、ＩＣリーダライタ２から受信した平文と乱数発生モジュール５から生成した乱数データを複数のＲＡＭ７エリアにランダムに保存する。平文と乱数データは暗号モジュール４によってそれぞれ暗号処理されて、暗号結果はＲＡＭ７エリアに保存する。平文が保存されているＲＡＭ７エリアは１つの乱数データによって設定されている。平文の暗号結果のみをＲＡＭ７エリアから読み出して、ＩＣカードリーダライタ２に送信する。【選択図】  図１
2004326335.tif 000002
【特許請求の範囲】
【請求項１】
乱数データを生成する乱数発生モジュール及びデータの暗号処理を行う暗号モジュールとを制御する中央演算処理装置と、データを保存する記憶回路とを備えたＩＣカードにおいて、
前記記憶回路内に正エリアと偽エリアを設け、前記暗号モジュールによって前記乱数データ及び暗号処理対象データをそれぞれ暗号処理し、前記暗号処理対象データの暗号結果を前記正エリアに保存し、前記乱数データの暗号結果は前記偽エリアに保存することを特徴とするＩＣカード。
【請求項２】
前記正エリアのアドレスは前記乱数データから生成された順番アドレスデータによって設定されることを特徴とする請求項１に記載のＩＣカード。
【請求項３】
複数のエリアを有する記憶回路と、
正データ及び偽データをそれぞれ暗号処理する暗号モジュールと、
前記正データ及び偽データのそれぞれ暗号処理結果を前記複数のエリアの中にランダムに保存する手段と、
前記記憶回路内から前記正データの暗号処理結果を読み出す手段とを備えることを特徴とするＩＣカード。
【請求項４】
乱数データを生成する乱数発生モジュールを備え、
前記偽データは前記乱数データから生成されることを特徴とする請求項３に記載のＩＣカード。
【請求項５】
前記正データの暗号処理結果を保存するエリアのアドレスは、前記乱数データから生成された順番アドレスデータによって設定されることを特徴とする請求項３に記載のＩＣカード。
【請求項６】
記憶回路内に正エリアと偽エリアを設け、前記正エリアに正データを保存し、前記偽エリアに偽データを保存させる手段と、
前記正データ及び前記偽データをそれぞれ暗号処理し、前記正データの暗号処理結果を前記正エリアに保存し、前記偽データの暗号処理結果を前記偽エリアに保存させる手段と、
前記正エリアに保存された前記正データの暗号処理結果を前記記憶回路から読み出す手段とを備えることを特徴とする暗号処理システム。
【請求項７】
前記偽データは、乱数データからなることを特徴とする請求項６に記載の暗号処理システム。
【請求項８】
前記正エリアは、前記乱数データから生成したアドレスに対応するエリアであることを特徴とする請求項６に記載の暗号処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内部のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって秘密データを管理するＩＣカードに関する。
【０００２】
【従来の技術】
現在、クレジットカードやマネーカード等に用いられているＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードはＩＣチップが埋め込まれたカード状デバイスである。
【０００３】
このようにＩＣカードの利用分野が金銭に関わってくるものなので、ＩＣカードの取り扱いには慎重にしなくてならない。
【０００４】
このＩＣカードを使用する際には、ＩＣカードのリーダライタ（以下、「ＩＣカードリーダライタ」という。）とＩＣカードの相互認証を行い、ＩＣカードとＩＣカードリーダライタが共に正しいか否かの認証をしている。正しいと判断した後に、認証したＩＣカードの処理を行っている。
【０００５】
この相互認証は認証アルゴリズムを用いた暗号鍵を使ったデータの暗号化や暗号文の復号化を行っている。
【０００６】
暗号鍵は秘密情報であって悪意の使用によって外部に漏れてはいけない。また、ＩＣカードには勝手に書き換えられることのないような情報も保存されている（例えば、特許文献１参照。）。
【０００７】
【特許文献１】
特開２００２−２０２９１６号公報
【０００８】
【発明が解決しようとする課題】
一般に、ＣＰＵを内蔵したＩＣカードにおいて、ＣＰＵの命令処理時における消費電力は、各種命令や各命令が扱うデータによって、若干の相違がある。従って、この消費電力の相違を例えばＩＣカードに供給されている電源の電流によって観察すれば、ＣＰＵの動作が解析され易くなる。
【０００９】
このため、ＣＰＵによってメモリ内の秘密データを管理・処理する際に、秘密データをＣＰＵが処理する時間が特定されてしまうと、秘密データが処理する時間が特定されてしまうと、秘密データが外部に漏洩し易くなる危険性がある。
【００１０】
そこで、本発明はＩＣカードに保存された秘密データの外部への漏洩を防ぐようなシステムを有したＩＣカードを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するために本発明の一態様によれば、乱数データを生成する乱数発生モジュール及びデータの暗号処理を行う暗号モジュールとを制御する中央演算処理装置と、データを保存する記憶回路とを備えたＩＣカードにおいて、前記記憶回路内に正エリアと偽エリアを設け、前記暗号モジュールによって前記乱数データ及び暗号処理対象データをそれぞれ暗号処理し、前記暗号処理対象データの暗号結果を前記正エリアに保存し、前記乱数データの暗号結果は前記偽エリアに保存することを特徴とするＩＣカードが提供される。
【００１２】
また他の態様によれば、複数のエリアを有する記憶回路と、正データ及び偽データをそれぞれ暗号処理する暗号モジュールと、前記正データ及び偽データのそれぞれ暗号処理結果を前記複数のエリアの中にランダムに保存する手段と、前記記憶回路内から前記正データの暗号処理結果を読み出す手段とを備えたＩＣカードが提供される。
【００１３】
また他の態様によれば、記憶回路内に正エリアと偽エリアを設け、前記正エリアに正データを保存し、前記偽エリアに偽データを保存させる手段と、前記正データ及び前記偽データをそれぞれ暗号処理し、前記正データの暗号処理結果を前記正エリアに保存し、前記偽データの暗号処理結果を前記偽エリアに保存させる手段と、前記正エリアに保存された前記正データの暗号処理結果を前記記憶回路から読み出す手段とを備えた暗号処理システムが提供される。
【００１４】
【発明の実施の形態】
本発明の実施形態の一例を示したＩＣカード１とＩＣリーダライタ２の構成図を図１に示す。
【００１５】
ＩＣカード１は、ＣＰＵ及びシステム制御回路３、暗号モジュール４、乱数発生モジュール５、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６、ＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）７及び不揮発性メモリ８を備えている。
【００１６】
ＣＰＵ及びシステム制御回路３は、ＩＣカード１を制御する心臓部であり、各モジュールや各メモリに対して制御信号やアドレスやデータの送受信を行う回路である。ＣＰＵ３１には、いくつかのレジスタがあり、それぞれ１バイトのデータを保存できる。いくつかあるレジスタのうち３つをＡレジスタ３１ａ、Ｂレジスタ３１ｂ、Ｃレジスタ３１ｃとして、本実施形態における暗号処理に使用する。
【００１７】
暗号モジュール４は、ＩＣリーダライタ２から送信された平文を暗号処理するための回路である。
【００１８】
乱数発生モジュール５は、乱数を発生させる回路である。乱数発生手法は、擬似乱数でも真正乱数であっても構わない。
【００１９】
なお、暗号モジュール４及び乱数発生モジュール５は、ハードウエアのみ又はソフトウエアのみで実現していてもよく、或いはその両方で実現していてもよい。
【００２０】
ＲＯＭ６は、ＣＰＵ３１動作させるためのプログラムを格納したメモリである。
【００２１】
ＲＡＭ７は、いわゆる作業メモリであり、ＣＰＵ及びシステム制御回路３で処理された信号や乱数発生モジュール５で発生された乱数を保存するメモリである。
【００２２】
作業メモリであるＲＡＭ７は例えば図２のようにエリアの割当がなされている。ＲＡＭ７の先頭アドレスは００００ｈ（００００ｈｅｘ）とし、先頭番地から、２５６バイトの領域を８つに分けて、順番にエリア０からエリア７まで名前をつける。エリア０の先頭アドレスは００００ｈ、エリア１の先頭アドレスは００２０ｈとなる。
【００２３】
また、各エリアを８バイトずつの領域に分ける。先頭からそれぞれ、平文データ領域、鍵データ領域、空き領域そして暗号文データ領域とする。それぞれの先頭アドレスは、例えばエリア０では、平文データ領域は００００ｈ、鍵データ領域は０００８ｈ、空き領域は００１０ｈ、暗号文データ領域は００１８ｈとなる。
【００２４】
これらのエリア０〜エリア７の後の領域には、先頭アドレス０１００ｈから８バイト分を平文一時保存エリア、先頭アドレス０１０８ｈから８バイト分を暗号文アドレス保存エリアとしてエリアを確保している。
【００２５】
不揮発性メモリ８は、秘密鍵を保存するメモリである。
【００２６】
また、ＩＣカード１の外部端子は、入出力端子Ｉ／Ｏ、クロック端子ＣＬＯＣＫ、リセット端子、／ＲＥＳＥＴ及び電源端子ＶＤＤ，ＧＮＤを備えている。これらの外部端子はＩＣカードリーダライタ２の外部端子と接続されて、データの送受信やＩＣカードリーダライタから電源、クロック又はリセット信号の供給などが行われる。
【００２７】
ＩＣカード１は、暗号モジュール４又は乱数発生モジュール５並びにＲＡＭ７等のメモリの制御はＣＰＵ及びシステム制御回路３によって行われている。ＣＰＵ及びシステム制御回路３と各モジュール及び各メモリはアドレスバス９とデータバス１０によって接続されている。
【００２８】
また、乱数発生モジュール５はＣＰＵ及びシステム制御回路３から乱数読み出し信号を受信して要求に応じて乱数をＣＰＵ及びシステム制御回路３にデータバス１０を通じて送信する。
【００２９】
暗号モジュール４は、暗号解析を要求する軌道信号をＣＰＵ及びシステム制御回路３から受信して、暗号モジュール４が処理状態（ｂｕｓｙ状態）であるか否かをステータス信号としてＣＰＵ及びシステム制御信号３に送信する。ステータス信号がｂｕｓｙ状態でない場合、暗号処理に使用するデータをＣＰＵ及びシステム制御回路３からデータバス１０を通じて暗号モジュール４に送信されて、この処理結果もデータバス１０を通じてＣＰＵ及びシステム制御回路３に送信される。
【００３０】
次に、本発明の実施形態のＩＣカード１内における具体的な暗号処理の一例を図３に示すフローチャートを用いて説明する。
【００３１】
先ず、ＣＰＵ及びシステム制御回路３によって、ＩＣカード１はＩＣカードリーダライタ２から平文を受信する。この場合、受信した平文はＲＡＭ７内の平文一時保存エリアに保存される（ステップ１）。
【００３２】
次に、ＣＰＵ及びシステム制御回路３は乱数発生モジュール５から２５６バイトの乱数データを取得する。乱数発生モジュール５は２５６バイトの乱数データを発生させて、この２５６バイトの乱数をエリア０からエリア７までのＲＡＭエリアに頭アドレスから順番に保存する。したがって、エリア０からエリア７までの総てのＲＡＭ７エリアには乱数データが保存されていることになる（ステップ２）。
【００３３】
次に、ＣＰＵ及びシステム制御回路３から乱数読み出し信号を乱数発生モジュールに送信する。ＣＰＵ及びシステム制御回路３は、ステップ２において生成された２５６バイトの乱数データの中から１バイトの乱数データを取得する。この１バイトの乱数データはＣＰＵ及びシステム制御回路３内のＡレジスタ３１ａに保存する（ステップ３）。
【００３４】
次に、ＣＰＵ及びシステム制御回路３は、ステップ３においてＡレジスタ３１ａに保存した１バイトの乱数データとＥ０ｈ（１１１０００００ｂ）との論理積（ＡＮＤ回路）を取る。論理積の結果の値を再度Ａレジスタ３１ａに保存する（ステップ４）。この論理積結果は上位３ビットの乱数データである。
【００３５】
次に、ＣＰＵ及びシステム制御回路３は、Ａレジスタ３１ａに保存された上位３ビットの乱数データをＣレジスタ３１ｃに保存する。また、ＣＰＵ及びシステム制御回路３は、Ｂレジスタ３１ｂに００ｈを保存する（ステップ５）。したがって、ＣＰＵ３１内のＢレジスタ３１ｂを上位１バイトとしＣレジスタ３１ｃを下位１バイトとする２バイトのＢＣレジスタ３１ｄは、００００ｈ，００２０ｈ，００４０ｈ，００６０ｈ，００８０ｈ，００Ａ０ｈ，００Ｃ０ｈ，００Ｅ０ｈの８種類のデータが生成される。これらの８つのデータはＲＡＭ７内のエリア０からエリア７までの先頭アドレスと対応している。
【００３６】
このように生成されたＢＣレジスタ３１ｄに生成されたデータは、ＩＣリードライタ２から受信した平文やこの平文の暗号処理結果を保存させるエリア（正エリア）を特定するデータである。例えば、正先頭アドレスが００４ｈとすると正エリアはエリア２である。残りのエリア０，１，３，４，５，６，７は乱数データが保存されてダミーの暗号処理がなされる偽エリアである。ＢＣレジスタ３１ｄに生成されたデータは、３ビットの乱数データから生成されるので、正エリアはランダムな値となり、暗号処理毎に異なる。
【００３７】
次に、ＣＰＵ及びシステム制御回路３は、ステップ１においてＲＡＭ７内の平文一時保存エリアに保存した平文をＣＰＵ３１内のＢＣレジスタ３１ｄに保存されたデータのアドレス（以下、「正先頭アドレス」という。）に転送する（ステップ６）。
【００３８】
次に、ＣＰＵ及びシステム制御回路３は、正先頭アドレスに８ｈを加えたアドレス（鍵データ領域）に、不揮発性メモリ８に保存されている秘密鍵を転送する（ステップ７）。
【００３９】
次に、ＣＰＵ及びシステム制御回路３は、正先頭アドレスに１８ｈを加えたデータを暗号文アドレス保存エリア（０１０８ｈ）に保存する（ステップ８）。この暗号アドレス保存エリアに保存されたアドレスは、後のステップにおいて平文と秘密鍵を使用して暗号処理された暗号結果を保存するアドレスを示している。
【００４０】
次に、エリア０の平文データ領域（００００ｈ）のデータと、エリア０の鍵データ領域（０００８ｈ）のデータを用いて暗号処理を行い、エリア０の暗号文データ領域（００１８ｈ）に暗号結果を保存する（ステップ９）。暗号処理は、ＣＰＵ及びシステム制御回路３が、ＲＡＭ７に保存された平文と秘密鍵をデータバスを通じて暗号モジュール４に送信して、起動信号によって暗号処理が開始される。暗号処理終了後、暗号モジュール４からＣＰＵ及びシステム制御回路３にステータス信号を送信して、暗号処理の終了を通知する。ＣＰＵ及びシステム制御回路３は、暗号処理終了の通知を受けて暗号処理結果を暗号モジュール４から取得する。取得した暗号処理結果をエリア０の暗号文データ領域（００１８ｈ）に保存する。
【００４１】
続けてエリア１からエリア７まで順番にステップ９の暗号処理を行う（ステップ１０）。
【００４２】
次に、ＣＰＵ及びシステム制御回路３は、暗号文アドレス保存エリアに保存されたデータをＣＰＵ３１内のＢＣレジスタ３１ｄに保存する（ステップ１１）。
【００４３】
次に、ＣＰＵ及びシステム制御回路３は、正先頭アドレスから８バイトの暗号文データを取得して、所定の通信プロトコルに従ってＩＣカードリーダライタ２の暗号処理結果を送信する（ステップ１２）。ＩＣカードリーダライタ２は、ＩＣカード１に送信した平文に対して秘密鍵を用いて暗号処理した暗号処理結果を受け取ることができる。
【００４４】
このように１つの平文の暗号化を行うに当たり、ＣＰＵ及びシステム制御回路３は計８回暗号モジュール３を起動している。この８回のうち１回は正しい暗号処理用のデータを用いた暗号処理を行う。残りの７回は乱数発生モジュールで生成された乱数データを用いて暗号処理が行われているので正しい暗号処理が行われていない。
【００４５】
このようにダミーの暗号処理を行うことによって、正しい暗号処理が行われていることを隠すことができる。すなわち、８回の暗号処理の中で、正しい暗号処理がどの順番でなされているかはＢＣレジスタ３１ｄに保存された３ビット分の乱数で決定されることによって常に一定ではなく、外部から信号を読み取られ暗号処理を解析されても正しい暗号処理の解析が行い難くすることができる。
【００４６】
本実施形態においてＲＡＭエリアの先頭アドレスは００００ｈとしたがこのアドレスに限定されることは無い。また、平文や秘密鍵等のデータを８バイトで説明をしたが、これに限ることも無い。データ量のＲＡＭエリアを用意することによって本発明を実施することが可能である。
【００４７】
また、本実施形態では１つの平文データの暗号処理に対して７つのダミーデータを用意したが、ダミーデータの数は実施形態に限定されることはない。
【００４８】
なお、正しい平文データとダミーデータとのサイズや暗号処理手法や暗号処理時間に相違を生じさせないようにしたほうが良い。暗号処理時間等によってどの順番が正しい暗号処理を行っているか外部から容易に知られてしまう恐れがあるからである。
【００４９】
【発明の効果】
以上詳述したように本発明によると、ＩＣカードに保存された秘密データの外部への漏洩を防ぐようなシステムを有したＩＣカードを提供することができる。
【図面の簡単な説明】
【図１】本発明の実施形態に係るＩＣカードの構成図と、ＩＣリーダライタとの接続とを示した構成図である。
【図２】本発明の実施形態に係るＩＣカード内のＲＡＭエリアを示した図である。
【図３】本発明の実施形態に係るＩＣカードの暗号処理の手順を表したフローチャートである。
【符号の説明】
１・・・ＩＣカード
２・・・ＩＣカードリーダライタ
３・・・ＣＰＵ及びシステム制御回路
３１・・・ＣＰＵ
３１ａ・・・Ａレジスタ（１バイト）
３１ｂ・・・Ｂレジスタ（１バイト）
３１ｃ・・・Ｃレジスタ（１バイト）
３１ｄ・・・ＢＣレジスタ（２バイト）
４・・・暗号モジュール
５・・・乱数発生モジュール
６・・・ＲＯＭ
７・・・ＲＡＭ
８・・・不揮発性メモリ
９・・・アドレスバス
１０・・・データバス
【図１】
2004326335.tif 000003
【図２】
2004326335.tif 000004
【図３】
2004326335.tif 000005