(57)【要約】  【課題】  ＩＣカードのような装置に操作を施して不正に内蔵する暗号鍵を読み取ろうとする探索に対して対抗手段を提供する。  【解決手段】  暗号プロセッサ１２に設けられるキーレジスタ１３は、暗号鍵とともにそのエラー訂正コードを格納する。暗号処理部１６が暗号処理をする前にエラー訂正回路１５は、暗号鍵に生じるエラーを訂正する。これによって攻撃者が暗号鍵の個々のビットを故意に操作してビットエラーが生じても訂正されるので、操作の結果を知ることができない。【選択図】  図３
2005045760.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵と前記暗号鍵のエラーを訂正するコードとを格納するメモリと、
データの暗号化を行うプロセッサとを有し、
前記プロセッサが、
前記メモリから前記暗号鍵を読み出し、
前記コードを用いて前記暗号鍵のエラー訂正を行い、
エラー訂正後の前記暗号鍵を用いて前記データの暗号化を行うことを特徴とする半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記プロセッサは、キーレジスタと、エラー訂正回路と、データレジスタと、暗号処理部とを有し、
前記記憶手段から読み出された前記暗号鍵を前記キーレジスタに格納し、
前記データレジスタに前記データを格納し、
前記キーレジスタから読み出された前記暗号鍵に対して前記エラー訂正回路でエラー訂正を行い、
データレジスタから読み出されたデータをエラー訂正後の前記暗号鍵で暗号化することを特徴とする半導体装置。
【請求項３】
請求項１または２に記載の半導体装置において、
前記メモリと、前記プロセッサが同一の半導体チップに集積されていることを特徴とする半導体装置。
【請求項４】
請求項１から３のいずれかに記載の半導体装置を備えることを特徴とするＩＣカード。
【請求項５】
請求項１から４のいずれかに記載の半導体装置を備えることを特徴とする携帯端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号技術に係わり、特にエラー訂正コードを用いてＩＣカードなどのデバイスから不正に暗号鍵を読み出すことを防止する技術に関する。
【背景技術】
【０００２】
ＩＣカードは、通常クレジットカード程度の大きさのデバイスであり、集積回路を内蔵している。ＩＣカードには種々のタイプがあり、例えば集積回路がメモリデバイスであるようなメモリカードや、集積回路がマイクロプロセッサとメモリを含むプロセッサカードはＩＣカードである。これらのＩＣカードは、すでに広範囲に普及しているメモリカードに比べて高性能であり、適当な暗号機構を組み込むと、多くのアプリケーション、特に電子商取引の分野のアプリケーションに適用できる。
【０００３】
図１に従来のＩＣカードの内部構成を示す。このＩＣカードは、中央処理装置（ＣＰＵ）１、例えばスタティックＲＡＭ（ＳＲＡＭ）などのランダムアクセスメモリ（ＲＡＭ）２、読み取り専用メモリ（ＲＯＭ）３、プログラム可能なタイプの読み取り専用メモリ（ＰＲＯＭ）、例えば電子的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）４および暗号プロセッサ５を有する。これらの機構は、共通バス６を介して通信する。暗号プロセッサ５は、多くの暗号アルゴリズムのうちの１つまたはそれ以上のアルゴリズムを実装できる。通常の場合、ＥＥＰＲＯＭ４には秘密の暗号鍵７が格納されている。ＩＣカードを利用するトランザクションが実行されるとき、ＥＥＰＲＯＭ４から暗号鍵７が取り出されて暗号プロセッサ５へ送られる。暗号プロセッサ５は、暗号鍵７を用いて何らかの暗号アルゴリズムを実行し、暗号化データ又は復号化データを出力ポート８に出力する。暗号鍵７自体は、秘密裏に保管しておく必要があるため、出力ポート８から出力されることはない。しかしトランザクション実行中にこの暗号鍵が一時的にＲＡＭ２に格納されることがある。
【０００４】
ＥＥＰＲＯＭ４又はＲＡＭ２に格納されている暗号鍵の値をその電荷の量などから直接読み取ることが可能であれば、もちろん暗号鍵７は容易に露呈してしまう。しかしそのような攻撃は技術的に困難であるとともにコスト高である。
【０００５】
最近多くの比較的容易で低コストの攻撃法が知られるようになっており、それらの攻撃法によって、ＩＣカードのメモリ２，４から間接的にデータを読み取ることが可能となってきた。これらの攻撃法は、暗号鍵７を決定するだけの可能性をもっている。例えばメモリセル、データレジスタ又は信号線の１ビットを故意に‘０’又は‘１’の固定値に設定する操作をして、操作をする場合としない場合のトランザクション結果を比較するような攻撃法がある。もし暗号鍵のうちの１ビットを固定するとそのビット値を変更することになれば、トランザクション結果は操作をしない場合と異なってくるであろう。一方、操作をする場合としない場合の取引結果が同じであれば、攻撃者はそのビットの値が固定した値であることを知る。暗号鍵のすべてのビットの値を操作することによって、攻撃者は暗号鍵７のビット・シーケンスを読み取ることができる。このような事態は、例えば何度も試行可能なタイプの認証法で暗号鍵を用いるときや、ディジタル署名のために公開鍵暗号法で暗号鍵を用いるときであって、何度もトランザクションの実行を繰り返す操作を阻止しない場合に生じ得る。
【０００６】
上記のような悪意の操作は、例えば写真フラッシュを用いてＳＲＡＭのセルスティックを固定値に設定するような簡単な技術によって実行可能である。その他の可能な技術として、例えば論理回路に渦電流を誘起させる方法があり、これも同様の効果が得られる。例えば非特許文献１は、半導体メモリからデータを抽出する多くの技術について説明する。これらの技術は、対象とするメモリセルのアナログ特性に測定可能な変化を誘起させるような半ば侵略的な探索方法を用いる。例えばレーザを使ってゲートに一時的な誤作動を生ぜしめて情報の漏洩を図る光学的探索方法があるし、小さいコイルをチップの表面に近づけて一時的に大きな磁界を発生させる渦電流による方法がある。非特許文献２は、フラッシュランプを用いる光学的探索方法を開示する。
【０００７】
【非特許文献１】サミド、スコロボガトフ、アンダーソン、クィズクエータ（Samyde,Skorobogatov,Anderson,Quisquater）著、「メモリからデータを読み取る新しい方法について」（On a New Way to Read Data from Memory）、ＳＩＳＷ２００２  ストレージ・ワークショップにおける第１回国際ＩＥＥＥセキュリティ（First International IEEE Security in Storage Workshop）
【０００８】
【非特許文献２】スコロボガトフ、アンダーソン（Skorobogatov,Anderson）著、「光学的な誤動作誘起による攻撃法」（Optical Fault Induction Attacks）、暗号処理ハードウェアとそのシステムに関するワークショップ（ＣＨＥＳ２００２）、レッドウッド・シティ（Redwood City）（米国）、２００２年８月１３−１５日
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の課題は、上述のような探索方法に対して対抗手段を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、暗号鍵を格納する記憶手段と、この記憶手段に格納される暗号鍵を取り出す手段と、取り出した暗号鍵の訂正を行うエラー訂正手段と、訂正された暗号鍵を用いて結果の計算を行う暗号処理手段とを有する暗号装置を特徴とする。
【００１１】
トランザクションデータを暗号化／復号化するために暗号鍵を使う前にその暗号鍵を訂正することによって、暗号鍵の個々のビットに操作を施そうとする攻撃者は、その攻撃が成功したか否か知ることができない。
【００１２】
エラー訂正手段は、格納された暗号鍵に関係するエラー訂正コードを保持することができる。
【００１３】
例えばＤＥＳアルゴリズムに用いられる中間のキー値を保護するためにエラー訂正手段を設けてもよく、これによってさらにセキュリティが向上する。
【００１４】
暗号装置は、さらにエラー訂正手段を偽装する動作をする手段を設けてもよい。例えば第１の信号線と第２の信号線を設け、第１の信号線は暗号鍵にビットエラーが存在するか否かを示す信号を伝え、第２の信号線は第１の信号線が示す信号と反対の論理レベルにスイッチするよう構成してもよい。この技術によって、エラー訂正手段がエラーの存在に反応するか否かを見るために、攻撃者が信号レベルや電流波形を変更するように試みるいわゆるサイド・チャネル攻撃を防ぐことができる。
【００１５】
暗号装置は、暗号処理機能を有するＩＣカードやその他のタイプのデバイスであってもよい。
【００１６】
また本発明は、記憶装置に格納された暗号鍵を取り出すステップと、取り出した暗号鍵の訂正を行うステップと、訂正された暗号鍵を用いて結果の計算を行うステップとを有する暗号技術利用のトランザクション実行方法を特徴とする。
【００１７】
この方法は、さらに暗号鍵の訂正を行うステップを偽装するようにしてもよい。
【００１８】
暗号処理とエラー訂正は、専用のハードウェア又はソフトウェアによって実現できる。
【発明の効果】
【００１９】
本発明によれば、ＬＳＩ内部で暗号鍵に誤りが生じた場合にその誤りをＬＳＩ内部で訂正して暗号処理を実行する。また前記誤り訂正処理は暗号鍵に実際に誤りがあるか否かにかかわらず同一の演算処理によって行われる。これにより、暗号鍵に誤りが発生してもそれをＬＳＩ外部から観測することが不可能になり、暗号鍵の値に強制的に誤りを発生させて出力値やＬＳＩの挙動を観測することで暗号鍵を解読する手法による攻撃を防ぐことができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態について実施例の形で図面を用いて説明する。
【００２１】
図２は、マイクロプロセッサ機構１０を内蔵するＩＣカード９の例を模式的に示す図である。１１は、ＩＣカード９を扱うカード読取装置である。カード読取装置１１はコンピュータ１１ａに接続され、カード読取装置１１ａはインターネットのようなネットワーク１１ｂに接続される。ＩＣカードの基本的な原理や利用方法はよく知られており、ここでは詳細な説明をしない。
【００２２】
図３は、本実施形態のＩＣカードのマイクロプロセッサ機構１０の構成を示す図である。機構１０は、ＣＰＵ１、ＳＲＡＭのような揮発性メモリ２、ＲＯＭのような不揮発性メモリ３、ＥＥＰＲＯＭ４として示すプログラム可能なＲＯＭおよび暗号プロセッサ１２を有する。各コンポーネントは、共通バス６によって相互に接続される。暗号プロセッサ１２は、キーレジスタ１３、データレジスタ１４、エラー訂正回路１５および暗号処理部１６を有する。暗号処理部１６は、後述するように任意の暗号アルゴリズムに基づいてハードウェア又はソフトウェアで実装される。マイクロプロセッサ機構１０は半導体チップによって実現され、ＣＰＵ１、揮発性メモリ２、不揮発性メモリ３、ＥＥＰＲＯＭ４、および暗号プロセッサ１２、共通バス６、キーレジスタ１３、データレジスタ１４、エラー訂正回路１５および暗号処理部１６は同一の半導体チップ上に集積される。
【００２３】
ＩＣカード９のＥＥＰＲＯＭ４は、秘密の暗号鍵１７と対応するエラー訂正コード（ＥＣＣ）１８を格納する。暗号プロセッサ１２のキーレジスタ１３は、暗号鍵１７とエラー訂正コード１８を格納するよう構成される。暗号鍵１７と対応するＥＣＣコード１８の設定は、通常ＩＣカードを初期化して発行する段階で行われる。
【００２４】
エラー訂正コードは、エラー検出および訂正コードとも呼ばれ、その原理はよく知られている。本発明を実施するために任意のエラー訂正コードとその処理をするエラー訂正回路を用いてよい。例えばエラー訂正コードには、ＢＣＨコード、ゴーレイ・コード、ハミング・コード、周期冗長検査コード、リード−ソロモン・コードなどがある。
【００２５】
どの訂正コードを選ぶかは、特定の暗号アルゴリズムで用いられる暗号鍵のサイズ、訂正するエラーの数、ハードウェア上の制約などに依存する。基本的には１ビットのエラーを訂正できるコードが利用される。さらに高度のセキュリティが必要な場合には、リード−ソロモン・コードのように多重ビットエラーを訂正できるコードを用いることができる。エラー訂正コードとその回路の例については、後述する。
【００２６】
次に図４を参照してＩＣカードを利用するトランザクションの実行について述べる。ＩＣカード利用のトランザクションは、データの暗号化又は復号化が必要になったとき開始される。例えば電子商取引で取引を実行するとき、テレビ放送で暗号化されたデータを受信するときなどである。例えばＩＣカードのＲＯＭ３に格納されるアプリケーション・ソフトウェアは、暗号鍵１７とＥＣＣコード１８をＥＥＰＲＯＭ４からキーレジスタ１３にロードする（ステップｓ１Ａ）。アプリケーション・ソフトウェアによっては、一連の暗号鍵／ＥＣＣコード１７，１８を一時的にＲＡＭ２にロードしてもよい。暗号化／復号化すべきデータは、データレジスタ１４にロードされる（ステップｓ１Ｂ）。
【００２７】
次に暗号鍵１７とＥＣＣコード１８は、エラー訂正回路へ送られ（ステップｓ２Ａ）、データは、暗号処理部１６へ送られる（ステップｓ２Ｂ）。エラー訂正回路１５は、ＥＣＣコード１８を用いて暗号鍵１７が正しいか否か判定する（ステップｓ３）。その詳細については、後述する。暗号鍵が正しければ、それは暗号処理部１６へ送られる（ステップｓ４）。暗号鍵が正しくなければ、それがエラー訂正回路１５によって訂正された（ステップｓ５）後に、暗号処理部へ送られる（ステップｓ４）。暗号処理部は、その暗号鍵を用いて設定された暗号アルゴリズムに従ってデータの暗号化／復号化を実行する（ステップｓ６）。その後、制御は、処理すべき次のデータをロードするステップｓ１Ｂに戻る。
【００２８】
次に、図３を参照して上記図４の処理においてマイクロプロセッサ１１に対する物理的な攻撃によって暗号鍵の値に誤りが生じた場合の動作を説明する。誤りはたとえばＥＥＰＲＯＭ３のメモリセルにレーザを照射して値を反転させることにより暗号鍵１７の値を変えることで引き起こされる。あるいは、ＥＥＰＲＯＭ３上の暗号鍵１７およびＥＣＣ１(エラー訂正コード)をデータバス５を経由して暗号プロセッサ１２に転送する際に電源にノイズを加えてデータバス５上のデータに誤りを発生させることで引き起こされる。さらに、たとえば暗号プロセッサ１２内の鍵レジスタ１３に対してレーザを照射することによってレジスタが保持する値を変えることで引き起こされる。上記いずれの場合にも、暗号プロセッサ１２内の鍵レジスタ１３に格納された暗号鍵に誤りが生ずる。暗号処理開始時に鍵レジスタ１３に格納されている暗号鍵はエラー訂正回路１５で誤り訂正処理を行うことで訂正され、暗号処理部１６には訂正された正しい暗号鍵が送られる。鍵レジスタ１３に格納された暗号鍵に誤りがない場合にも暗号鍵は上記と同様にエラー訂正回路１５で誤り訂正処理が行われるが、この場合、実際には暗号鍵の値は変更されない。これにより、マイクロプロセッサ上のＥＥＰＲＯＭ３、データバス５、鍵レジスタ１３で誤りが発生しても、実際の暗号処理実行時には正しい暗号鍵によって処理が行われ、外部からは誤りが発生したかどうかを観測することはできない。すなわち、攻撃者がメモリセル、データレジスタ又は信号線のデータを故意にの固定値に操作しても、操作をする場合としない場合のトランザクション結果との結果が同じになるため、攻撃者は暗号号鍵７のビット・シーケンスを読み取ることができない。
【００２９】
特定の暗号アルゴリズムを用いるシステムの例について、図５および図６を参照し説明する。
【００３０】
図５は、よく知られたデータ暗号化規格（ＤＥＳ）アルゴリズムに従う暗号処理部１６の内部構成を示す図である。ＤＥＳは、データを６４ビットのブロックごとに暗号化するブロック暗号方式であり、平文のうちの６４ビットブロックを取り込んで６４ビットブロックの暗号文に変換する。それは１６ラウンドの非線形関数から成り、各ラウンドは、原暗号鍵の回転とビット選択／転置によって生成される異なるラウンドキーを使用する。そのアルゴリズムの詳細と実装方法はよく知られているので、詳細説明を省略する。
【００３１】
図５に示すように、ＤＥＳの暗号処理部１６は、エラー訂正回路１５からの訂正された暗号鍵１７とデータレジスタ１４からのデータを受け取る。暗号鍵は、鍵スケジューラ２１を介して一時レジスタ２０に供給されて中間的な値が生成され、その値から各ラウンドのラウンドキーが生成される。データは、データセレクタ２３を介してデータレジスタ２２に格納される。さらにセキュリティを向上させるために、一時レジスタはエラー訂正コードの付いた中間キー値を格納し、この段階でエラーを検出し訂正するためのエラー訂正回路２４が設けられる。ＤＥＳアルゴリズムに従って当該ラウントのラウンドキーを生成するためにビットシフトとビット転置をするためのモジュール２５，２６が設けられ、生成されたラウンドキーはＤＥＳの１ラウンド関数に渡される。ＤＥＳ関数２７からの出力は、データセレクタ２３を介して再びデータレジスタ２２に供給され、次のラウンドの処理に備える。
【００３２】
図６は、よく知られたＲＳＡアルゴリズムに従う暗号処理部の内部構成を示す図である。ＲＳＡ計算は、秘密鍵を指数とする法指数演算により構成される。法指数演算を計算するための最もよく整備され効率的な方法は、平方乗法として知られる。この方法を実装するための回路のブロック図を図６に示す。この回路は、シフトレジスタとして機能し、秘密鍵とエラー訂正コードを格納するキーレジスタ３０を有する。このレジスタは、図３のキーレジスタ１３に相当する。秘密鍵をチェックし訂正するためにエラー訂正回路３１が設けられ、訂正された鍵はシーケンスコントローラ３２に供給され、次いで法乗算器部３３に供給される。法乗算器部３３は、第１および第２のデータレジスタ３４，３５からのデータを受け取る。データレジスタ３４，３５は、効率よく図３に示すデータレジスタ１４を構成する。この例では、エラー訂正回路３１で周期冗長検査コード（ＣＲＣ）を使うのがＲＳＡハードウェア量を削減する効率的な方法である。このコードを使用するエラー訂正法は、１ビットずつのシーケンシャル処理を伴うので、単一ビットエラー訂正のための論理回路が単に入力データのシーケンスを回転させるだけで繰り返し使用できるためである。従ってそのエラー訂正回路のハードウェア量は、ブロックデータを並行して訂正する他のエラー訂正法に比べて格段に小さくなる。ＣＲＣを使うと、通常の場合、エラー訂正が完了するまでに時間がかかるが、平方乗法を用いる法指数演算の場合にはこれは問題にならない。何故なら指数は常に下位ビットから上位ビットへと１ビットずつ順に計算に用いられるからである。
【００３３】
ＣＲＣに基くエラー訂正回路について図７を用いて説明する。この例では、データの４ビットごとに３ビットのエラー訂正コードを用いる。４ビットのデータに次の７×４行列を乗算することによってエラー訂正コードを含む７ビットデータが生成される。
［１０００
０１００
００１０
０００１
１０１１
１１１０
０１１１］
行列の最初の４行によって４ビットデータが７ビット語の上位４ビットに配置される。最後の３行によって４ビットデータ語に対応する３ビットのエラー訂正コードが生成される。例えばデータ語［１０１１］が［１０１１１００］に、データ語［００１０］が［００１０１１１］に、簡単な行列乗算によって得られる。
【００３４】
図７及び図８を参照すると、チェックすべき７ビット語が最上位ビット（ｘ１）を先頭にしてシフトレジスタ３０にロードされる。図８に示す例では、１０１１１００の語が００１１１０１の順序でシフトレジスタに設定される。
【００３５】
レジスタ３０の各ビットｘ１−ｘ７は、３個の４入力排他論理和（ＸＯＲ）ゲート４０，４１，４２に接続されている。これらのＸＯＲゲートの出力は、ＡＮＤゲート４３に入力される。ただし最初のＸＯＲゲート４０については、その出力は、インバータ（ＮＯＴゲート）４４を介して反転した後にＡＮＤゲート４３に入力される。レジスタ３０の第１ビットｘ１は、第１の２入力ＸＯＲゲート４５の入力にも接続され、他方の入力は、ＡＮＤゲート４３の出力に接続する。ＸＯＲゲート４５の出力は、訂正された元のデータビットｘ１である。
【００３６】
レジスタ３０の第１ビットｘ１は、さらに第２のインバータ４６を介して第２の２入力ＸＯＲゲート４７に接続されている。このＸＯＲゲート４７への他方の入力には、ＡＮＤゲート４３の出力が第３のインバータ４８を介して接続される。
【００３７】
レジスタ３０の第１ビットｘ１は、さらにデータ語の最下位ビットである第７ビットｘ７にも接続される。対象とするデータビットは、レジスタ３０の最初の４ビットｘ１−ｘ４にあるから、このレジスタを右に４回シフトさせれば、出力４９に４ビットの訂正されたデータ語を読み出すことができる。
【００３８】
図８は、エラー訂正回路の基本的な動作原理を示すものであり、ここでは７ビット語１０１１１００について１サイクル動作の例を示す。図８には、各種ゲートの出力値が示されているが、まず括弧で囲んだ値は考えないものとする。ＡＮＤゲート４３の出力は‘０’であり、ビットｘ１が正しいことを示している。この‘０’が第１の２入力ＸＯＲゲート４５に入力されるということは、第１ビットｘ１がそのまま出力４９に出現することを意味している。しかしながら集積回路の外部から検出できる電流波形がエラーの有無にかかわらず同じにするために、ＡＮＤゲート４３の出力は第３のインバータ４８で反転され、反転された第１ビットｘ１とともに第２の２入力ＸＯＲゲート４７に入力される。これによってダミーの出力線５０にはビットＸ１が生成される。要約すると、このエラー訂正回路では、ビットｘ１にビットエラーが生じているかいないかを示す第１の信号線５１には、その反対の論理レベルをもつ第２の信号線５２が随伴するように構成されているということである。２つの信号線５１，５２のうちの１つは、エラーの有無にかかわらず常にハイとなるから、攻撃者は、エラーの存在を見るために特定のゲートがオン又はオフにスイッチされるという事実を使うことができない。このような攻撃法は、サイド・チャネル攻撃と言われる。
【００３９】
図８で括弧で囲んだ数値が示すように、ビットｘ１が‘０’に操作されたとすると、第２および第３の４入力ＸＯＲゲート４１，４２の出力はともに‘１’になるので、ＡＮＤゲート４３の出力は１となり、ビットｘ１が正しくないことを示す。第１の２入力ＸＯＲゲート４５で排他論理和をとることによってビットｘ１は反転され、結果として‘１’に訂正される。第２の２入力ＸＯＲゲート４７には反対の論理がなされ、結果としてダミー出力５０に同じビット値が生じる。
【００４０】
次に上記のエラー訂正回路が図３のマイクロプロセッサ１０が図４のトランザクション実行においてどのように働くかを、マイクロプロセッサ１０中で暗号鍵に１ビットの誤りが発生した場合の動作を例に説明する。たとえばＥＥＰＲＯＭ３に格納された暗号鍵１７、あるいはＥＥＰＲＯＭ３上の暗号鍵１７を暗号プロセッサ１２に転送する際のデータバス５上のデータ、暗号プロセッサ１２内の鍵レジスタ１３に格納された暗号鍵に１ビットの誤りが発生したとする。何れの場合にも、暗号プロセッサ１２が暗号処理を開始する時点で、暗号鍵レジスタ１３に格納される暗号鍵が１ビットの誤りを含んでいる。この暗号鍵には、たとえば図７、図８で示したように暗号鍵の４ビットに対して３ビットのエラー訂正符号がＥＥＰＲＯＭ３上に格納されており、暗号鍵とともに暗号プロセッサ内の暗号鍵レジスタ１３に格納される。エラー訂正回路１５には暗号鍵のうちの４ビットと、そのエラー訂正符号３ビットを暗号鍵レジスタ１３が転送され、エラー訂正回路は図７、図８で示した処理を行って暗号鍵の該４ビットのブロックに誤りがあった場合これを訂正して暗号処理部１６に転送する。
【００４１】
ところで前記の例ではＥＥＰＲＯＭ３上から暗号鍵レジスタ１３に転送される暗号鍵に誤りが発生した場合について説明したが、誤りはＥＥＰＲＯＭ３に格納されているＥＣＣ１８についても同様に発生しうる。しかし、図７，図８に示したエラー訂正回路はデータｘ１、ｘ２、ｘ３、ｘ４の誤りに対しても、エラー訂正コードｘ５、ｘ６、ｘ７の誤りに対しても同様に誤り訂正を行うので、暗号鍵レジスタ１３に転送され格納されるＥＣＣに１ビットの誤りが発生した場合でも正しい暗号鍵が暗号処理部１６に転送される。
【００４２】
上記のように、このエラー訂正コードの例は、特にＲＳＡアルゴリズムに適用する場合に有利であるが、ＲＳＡアルゴリズムに他のエラー訂正コードを用いてもよい。またこのエラー訂正コードを他のタイプのアルゴリズムに適用してもよい。さらに本発明は、エラー訂正が可能な任意のコードに適用できるばかりでなく、データを暗号化／復号化する前に暗号鍵を訂正できる他の任意の技法にも適用できる。
【００４３】
本発明の他の実施例において、図３に示す暗号プロセッサ１２は、ハードウェアによる実装ではなく、ソフトウェアによる実装でもよい。この場合には、ＣＰＵ１又はコプロセッサは、暗号プロセッサとエラー訂正回路の機能を実現する。ソフトウェアによる暗号処理動作は、サイド・チャネル攻撃を防止するよう構成されるので、攻撃者によってエラーの存在およびエラー訂正が検出されない。
【００４４】
実施例はＩＣカードとの関連で説明したが、発明はカード読取装置に挿入可能なクレジットカード程度の大きさのＩＣカードに限定されない。例えば、本発明を携帯電話、携帯端末に適用することもできる。ＩＣカード技術は常に発展途上にあり、ＩＣカードという用語は同様の機能をもつ任意の装置にまで拡張可能である。例えば携帯電話を読取端末にかざしてもよいし、列車や映画の切符の料金をユーザの口座に振り替えてもよい。この場合には、携帯電話がＩＣカードとして機能する。
【００４５】
さらに本発明は、ＩＣカードやＩＣカードの機能をもつ装置ばかりでなく、暗号を利用するトランザクションを実行し、部分的にせよ暗号コードの保護が必要な任意の装置に適用できる。
【図面の簡単な説明】
【００４６】
【図１】従来のＩＣカードの内部構成を示す図である。
【図２】ＩＣカードの例を模式的に示す図である。
【図３】実施形態のＩＣカードのマイクロプロセッサ機構１０の構成を示す図である。
【図４】実施形態の暗号利用のトランザクション実行の処理手順を示すフローチャートである。
【図５】ＤＥＳアルゴリズムに従う実施形態の暗号処理部の内部構成を示す図である。
【図６】ＲＳＡアルゴリズムに従う実施形態の暗号処理部の内部構成を示す図である。
【図７】ＣＲＣに基づくエラー訂正回路の動作を例によって説明する図である。
【図８】ＣＲＣに基づくエラー訂正回路の動作を例によって説明する図（続き）である。
【符号の説明】
【００４７】
５：暗号プロセッサ、７：暗号鍵、１２：暗号プロセッサ、１５：エラー訂正回路、１６：暗号処理部。
【図１】
2005045760.tif 000003
【図２】
2005045760.tif 000004
【図３】
2005045760.tif 000005
【図４】
2005045760.tif 000006
【図５】
2005045760.tif 000007
【図６】
2005045760.tif 000008
【図７】
2005045760.tif 000009
【図８】
2005045760.tif 000010