(57)【特許請求の範囲】
【請求項１】
複数のコマンドで構成される動作プログラムが格納されるメモリを少なくとも１つ有する半導体ＩＣチップを備え、前記半導体ＩＣチップの外部から前記コマンドの検出が可能な信号を生じさせるデータ記憶媒体において、
該データ記憶媒体が、前記動作プログラムのコマンドで処理されたデータを前記検出された信号から推定することができないように、前記動作プログラムのコマンドを実行することによって保全されるべき動作（ｆ）を実行するものであり、
前記動作プログラムが、
前記動作（ｆ）の実行に必要な入力データを、前記動作（ｆ）の実行の前に、補助データ（Ｚ）との結合により偽装するステップと、
前記動作（ｆ）の実行により決定された出力データを、前記入力データの前記偽装を解除するために、補助関数値（ｆ(Ｚ)）と結合するステップと、を該データ記憶媒体に実行させるものであり、
前記補助関数値（ｆ(Ｚ)）は、安全な環境において入力データである前記補助データ（Ｚ）に前記動作（ｆ）を実行することにより予め決定され、前記補助データ（Ｚ）と共に該データ記憶媒体に予め格納されたものである、ことを特徴とするデータ記憶媒体。
【請求項２】
前記安全な環境は、該データ記録媒体の製造時、該データ記録媒体の初期化時、および、該データ記録媒体の個人専用化時のいずれかの時に実現されるものであることを特徴とする請求項１記載のデータ記憶媒体。
【請求項３】
前記偽装を解除するための前記補助関数値（ｆ(Ｚ)）との結合が、前記偽装を生じさせる結合の後であって、非線型の動作（ｇ）の実行の少なくとも直前に行われることを特徴とする請求項１または２記載のデータ記憶媒体。
【請求項４】
前記補助データ（Ｚ）が可変であり、対応する前記補助関数値（ｆ(Ｚ)）が前記データ記憶媒体の前記メモリに格納されることを特徴とする請求項１から３いずれか１項記載のデータ記憶媒体。
【請求項５】
新しい補助データ（Ｚ）及び新しい補助関数値（ｆ(Ｚ)）が２つ以上の既存の補助データ（Ｚ）及び補助関数値（ｆ(Ｚ)）の結合により生成されることを特徴とする請求項４記載のデータ記憶媒体。
【請求項６】
前記結合がなされるべき前記既存の補助データ（Ｚ）及び補助関数値（ｆ(Ｚ)）がそれぞれランダムに選択されることを特徴とする請求項５記載のデータ記憶媒体。
【請求項７】
補助データ（Ｚ）及び補助関数値（ｆ(Ｚ)）の対が、前記動作（ｆ）を前記補助データ（Ｚ）に適用せずに発生器により生成されることを特徴とする請求項１から４いずれか１項記載のデータ記憶媒体。
【請求項８】
前記補助データ（Ｚ）が乱数であることを特徴とする請求項１から７いずれか１項記載のデータ記憶媒体。
【請求項９】
前記結合がＥＸＯＲ（排他的論理和）であることを特徴とする請求項１から８いずれか１項記載のデータ記憶媒体。
【請求項１０】
複数のコマンドで構成される動作プログラムが格納されるメモリを少なくとも１つ有する半導体ＩＣチップを備え、前記半導体ＩＣチップの外部から前記コマンドの検出が可能な信号を生じさせるデータ記憶媒体において、前記動作プログラムのコマンドで処理されたデータを前記検出された信号から推定することができないように、前記動作プログラムのコマンドの実行によって実行される保全されるべき動作（ｆ）に対する入力データである秘密データを保護するための方法であって、
前記動作プログラムが、
前記動作（ｆ）の実行に必要な前記入力データを、前記動作（ｆ）の実行の前に補助データ（Ｚ）との結合により偽装するステップと、
前記動作（ｆ）の実行により決定された出力データを、前記入力データの前記偽装を解除するために、補助関数値（ｆ(Ｚ)）と結合するステップと、を前記データ記憶媒体に実行させるものであり、
前記補助関数値（ｆ(Ｚ)）は、安全な環境において入力データである前記補助データ（Ｚ）に前記動作（ｆ）を実行することにより予め決定され、前記補助データ（Ｚ）と共に前記データ記憶媒体に予め格納されたものである、ことを特徴とする方法。
【請求項１１】
前記安全な環境は、該データ記録媒体の製造時、該データ記録媒体の初期化時、および、該データ記録媒体の個人専用化時のいずれかの時に実現されるものであることを特徴とする請求項１０記載の方法。
【請求項１２】
前記偽装を解除するための前記補助関数値（ｆ(Ｚ)）との結合が、前記偽装を生じさせる結合の後であって、非線型の動作（ｇ）の実行の少なくとも直前に行われることを特徴とする請求項１０または１１記載の方法。
【請求項１３】
前記補助データ（Ｚ）が可変であり、対応する前記補助関数値（ｆ(Ｚ)）がデータ記憶媒体のメモリに格納されることを特徴とする請求項１０から１２いずれか１項記載の方法。
【請求項１４】
新しい補助データ（Ｚ）及び新しい補助関数値（ｆ(Ｚ)）が２つ以上の既存の補助データ（Ｚ）及び補助関数値（ｆ(Ｚ)）の結合により生成されることを特徴とする請求項１３記載の方法。
【請求項１５】
前記結合がなされるべき前記既存の補助データ（Ｚ）及び補助関数値（ｆ(Ｚ)）がそれぞれランダムに選択されることを特徴とする請求項１４記載の方法。
【請求項１６】
補助データ（Ｚ）及び補助関数値（ｆ(Ｚ)）の対が、前記動作（ｆ）を前記補助データ（Ｚ）に適用せずに発生器により生成されることを特徴とする請求項１０から１５いずれか１項記載の方法。
【請求項１７】
前記補助データ（Ｚ）が乱数であることを特徴とする請求項１０から１６いずれか１項記載の方法。
【請求項１８】
前記結合がＥＸＯＲであることを特徴とする請求項１０から１７いずれか１項記載の方法。
【発明の詳細な説明】
【０００１】
発明の分野
本発明は秘密データが格納される半導体ＩＣチップを有するデータ記憶媒体に関し、特にスマートカードに関する。
【０００２】
従来の技術
ＩＣチップを入れたデータ記憶媒体は非常に多くの様々な用途に、例えば金銭取引を行うために、品物またはサービスへの支払いのために、あるいはアクセスまたは入場管理のための身分証明手段として、用いられている。そのような用途の全てにおいて、データ記憶媒体のＩＣチップは通常、不正な第三者によるアクセスから防護されなければならない秘密データを処理する。このような防護はとりわけ、ＩＣチップの内部構造の寸法を、その構造で処理されるデータを探り出す目的でその構造にアクセスすることが非常に困難であるように、非常に小さくすることにより確実なものとされる。アクセスをさらに妨げるために、無理に取り外すと半導体基板、あるいは少なくともＩＣチップに格納された秘密データが壊れる、極めて強固な接着剤の塊の中に埋め込まれる。半導体基板を破壊せずには取り外すことができない保護層をＩＣチップ製造時に半導体基板に与えることも、同様に可能である。
【０００３】
非常に高価であるが、それにも関わらず基本的には入手可能な技術的対応装置を用いれば、攻撃者はＩＣチップ内部構造を露出させて調べることにおそらく成功するであろう。露出は、特殊なエッチング法または適当な研磨プロセスにより実行できるであろう。このようにして露出された、配線パターンのような、ＩＣチップ内部構造は、ＩＣチップ内部構造における信号パターンを確定するためにマイクロプローブをあてるか、あるいはその他の方法で調べることができるであろう。引き続き、偽装工作に用いるために、検出された信号からデータ記憶媒体の秘密キーのような秘密データの確定を企てることができるであろう。露出された内部構造の信号パターンの、マイクロプローブによる選択的な変更を企てることも同様に可能であろう。
【０００４】
発明の概要
本発明はデータ記憶媒体のＩＣチップにある秘密データを不法アクセスから防護するという課題に基づく。
【０００５】
この課題は、特許請求の範囲の独立請求項に示される特徴の組合せにより解決される。
【０００６】
本発明の解決法は、従来技術と異なり、ＩＣチップ内部構造の露出及びマイクロプローブの取付けを防止する手段には全く関係しない。代わりに、潜在的攻撃者が盗みとったどのような信号パターンからも秘密情報を推定することを困難にするための手段がとられる。この信号パターンはＩＣチップが行う動作に依存する。この動作の制御にはＩＣチップのメモリに格納された動作プログラムが用いられる。動作プログラムは、正確に指定された動作をそれぞれが起動させる一連の個別コマンドからなる。よってＩＣチップは目的の機能を果すことができ、目的の機能のそれぞれに対して対応するコマンド列が定められている。そのような機能には、例えば秘密キーを用いるデータの暗号化がある。取り付けたマイクロプローブによりＩＣチップ上での処理を盗みとろうとしている攻撃者に、実行される特定のコマンド及びそのコマンドの実行に用いられるデータについて情報を可能な限り少ししか与えないようにするため、情報を探り出すことが不可能ではなくとも困難であるような種類のコマンドを用いるか、またはそのような方法でコマンドを用いて、所望の機能が実現されることが好ましい。いい換えれば、処理されるデータを盗みとることにより簡単な方法で推定できるコマンドまたはコマンド列は１つも用いられるべきではない。
【０００７】
コマンドが非常に少数の、例えば１ビットの、データを処理する場合にはいつでも、データを推定することは特に容易である。このため、本発明の一実施形態にしたがう、データの暗号化のような、少なくとも保全されるべき動作の全てに対しては複数のビット、例えばバイトを同時に処理するコマンドを用いることが好ましい。そのような複数のビットの同時処理により、コマンドが生じさせる信号パターンへの個々のビットの全信号への影響が曖昧にしか見えず、よって個々のビットを推定することが非常に困難になる。信号パターンは個々のビットの処理におけるよりもはるかに複雑であり、信号のどの部分が処理されるデータのどのビットに属するかが簡単には明らかにならない。
【０００８】
さらにまたはあるいは、保全されるべき動作において、処理されるデータが信号パターンに極めて僅かしか、あるいは全く影響を与えない、同じまたは極めて類似の信号パターンまたはコマンドを起動させるコマンドのみを用いることにより、本発明にしたがって処理されるデータへの攻撃を妨げることができる。
【０００９】
本発明の別の有用な実施形態にしたがえば、保全されるべき動作が真性な秘密データにはよらず、別の秘密情報を付加しなければ真性秘密データを確定できない偽装された秘密データにより行われる。このことは、たとえ攻撃者がある動作に用いられる秘密データの確定に成功したとしても、探り出されたデータは真性な秘密データではなく偽装された秘密データであるから、攻撃者はなんらの被害も生じさせ得ないことを意味する。
【００１０】
データ記憶媒体が機能することを保証するためには、偽装秘密データにも関わらず、データ記憶媒体が正当に用いられた場合には正当な結果が確実に得られなければならない。このことは、真正な秘密データを偽装するための機能、例えば秘密データの乱数との排他的論理和（ＥＸＯＲ）をとるための機能を初めに指定することにより達成される。真正な秘密データはこのようにして指定された機能により偽装される。偽装された秘密データは、秘密データの偽装を後で解除できるデータ記憶媒体における全ての動作を行うために用いられる。ＥＸＯＲで偽装された秘密データの場合、解除はＥＸＯＲ操作に関して線形な操作である。そのような解除が許されない操作、例えばＥＸＯＲ操作に関して非線型な操作を実行する前に、真正な秘密データにそのような操作を行ってもよいように真正な秘密データを格納しなければならない。真正な秘密データは、例えば偽装された秘密データを用いて決定される関数値と偽装に用いられた対応する乱数の関数値とのＥＸＯＲをとることによる解除機能の実行後に、再生される。この場合、乱数からの関数値の計算を盗みとることができないように、乱数及び関数値を前もって決定し、安全な環境に格納することが重要である。
【００１１】
上述した手法は、これが絶対に必要であるから、すなわち偽装された秘密データで代わりに行うことができないから、非線型操作のような操作を行うためだけに真正な秘密データが用いられることを意味する。そのような操作は通常、非常に複雑でありまた解析が容易ではないため、そのような操作で生じるパターンを解析することにより潜在的攻撃者が真正な秘密データを見つけ出すことは不可能ではなくとも極めて困難である。後に偽装を解除できる単純構造化関数が偽装された秘密データに作用するから、不法に盗みとった信号パターンからデータ記憶媒体の真正な秘密データを確定することが上述の手法により極めて困難になる。
【００１２】
信号パターンはＩＣチップが実行している動作に依存する。そのような動作が固定パターンにより、すなわち特に同じ順序で常に実行され、攻撃者がその順序を知れば、どの動作がいつ実行されるかを全く知らない場合よりも、データを探り出すために攻撃者が克服しなければならない障害はかなり少なくなる。したがって、本発明のまた別の実施形態にしたがえば、スマートカード内で保全されるべき動作を実行する際のプロセスフローパターンが可能な限り固定されず、よって秘密データを解析するための手がかりを攻撃者にほとんど与えない態様が提供される。このことは、互いに独立なできるだけ多くの動作、理想的には正に全ての動作を、動作のそれぞれが他の動作により決定されるデータを必要としない限り、可変順序、例えばランダムな順序または入力データに依存する順序で、実行することにより達成される。このことにより、通常は動作の順序により方向を見定める攻撃者が、どの動作が実行されているかを容易には見いだすことができないという結果が得られる。このことは特に、それぞれの動作が同じ入力データから生じさせる信号パターンに関してそれぞれの動作が互いに非常に大きく似通っているか、あるいは同じでさえある場合に成り立つ。攻撃者が実行されている動作の種類を全く知らなければデータを選択的に探り出すことは極めて困難である。順序のランダムな変化を平均化するために攻撃者が非常に多くの回数の探知を試みる危険性がある場合には、入力データに依存して順序を変化させることが推奨される。
【００１３】
発明の詳細な説明
本発明を、図面に示される実施形態を参照して以下で説明する。
【００１４】
図１はスマートカード１をデータ記憶媒体の例として示す。スマートカード１はカード本体２及びカード本体２に特別に与えられた間隙に配置されたＩＣチップモジュール３からなる。ＩＣチップモジュールの基本的コンポーネントは、それを介して外付素子との電気的接続を行うことができるコンタクト面４及びコンタクト面４に電気的に接続されたＩＣチップ５である。あるいは、またはコンタクト面４に加え、ＩＣチップ５と外部装置との間の通信リンクを形成するための、図１に示されていないコイルまたはその他の転送手段があってもよい。
【００１５】
図２は前面から見た図１のスマートカードの、ＩＣチップ５を大きく拡大した詳細を示す。図２に特有の特徴は、ＩＣチップ５の活性面が示されていること、すなわち図２ではＩＣチップ５の活性面を一般に保護している全ての層が省略されていることである。ＩＣチップ内部の信号パターンに関する情報を得るためには、例えば露出された構造６にマイクロプローブをあてることができる。マイクロプローブは精密位置決め装置を用いて、露出された構造６，例えば配線パターンに電気的に接触させられる非常に細い針である。マイクロプローブで拾い上げられた信号パターンはＩＣチップの秘密データを推定するために適当な測定及び評価装置で処理される。
【００１６】
本発明により、攻撃者が回路を破壊することなくＩＣチップ５の保護層を除去してＩＣチップ５の露出された構造６にマイクロプローブをあてること、あるいは別の方法でＩＣチップ５の信号パターンを盗みとることに成功したとしても、特にＩＣチップ５の秘密データに全くアクセスできないか、あるいは非常な困難をともなわない限りアクセスできないという結果が得られる。本発明はもちろん攻撃者が別の方法でＩＣチップ５の信号パターンにアクセスできる場合でも有効である。
【００１７】
本発明にしたがえば、盗みとられた信号パターンからコマンドにより処理されるデータを全く、あるいは少なくとも相当の困難をともなわない限り推定できないようにして、少なくとも全ての保全されるべき動作におけるＩＣチップの動作プログラムのコマンドまたはコマンド列が選ばれる。
【００１８】
このことは、例えば保全されるデータ処理において、ビットまたはビット列を置換することを目的とした、個々のビットのシフトのような、個々のビットを処理するコマンドを基本的に全く用いないことで達成できる。ビットコマンドの代わりに、例えば、個々のビットではなく８ビットからなるバイト全体を処理するコピーまたはローテーションコマンドのようなバイトコマンドを、用いることができる。バイトコマンドは、ビットコマンドよりかなり複雑な信号パターンを起動し、信号パターンの部分領域を個々のビットと関連づけることは極めて困難である。このためバイトコマンドで処理される情報は曖昧にしか見えず、そのような情報を探り出すことが困難になる。
【００１９】
さらに本発明は、保全されるべき動作において非常に似通った信号パターンを起動するコマンドのみを基本的に用い、よって実行されているコマンドを信号パターンで弁別することを非常に困難にする可能性を提供する。同様に、処理されるデータの種類がコマンドにより起動される信号パターンに僅かしかあるいは全く影響しないようにコマンドを構成することもできる。
【００２０】
上述した変形はいずれも個々のコマンドに関して選択的にあるいは組み合わせて用いることができる。すなわち、本発明の保全されるべきコマンドセットは、上述した変形の１つ以上に属するコマンドからなることができる。全コマンドが同じ変形に属する命令セットを用いることも同様にでき、またいくつかまたは全てのコマンドが他の変形にも属することもできる。例えばバイトコマンドだけ、好ましくは、さらに、非常に似通った信号パターンを起動するバイトコマンドだけを用いることができる。
【００２１】
保全されるべき動作には、例えばスマートカードで頻繁に用いられる暗号化操作がある。そのような暗号化には、データワードにおいてビット毎の変更をおこなわせる一連の単操作の実行が含まれる。本発明にしたがえば、そのようなコマンドは全てバイトコマンドで置き換えられ、及び／または上述した本発明の手段がとられる。このことにより、攻撃者が盗みとった信号パターンから暗号化に用いられる秘密キーを推定することは相当に困難になり、よってそのような秘密キーの悪用が防止される。
【００２２】
図３はスマートカードにおける動作シーケンスの一部の概略図を示す。例として示すために暗号化操作が選ばれている。しかし本例で説明される原理はまた、その他の保全されるべき動作のいずれにも適用できる。図３に示される暗号化操作の一部の開始時点で、平文で表されていても、あるいは既に暗号化されていてもよいデータａｂｃが論理点７に供給される。論理点７においてデータａｂｃはキーＫ１と結合される。本例においてはこの結合はＥＸＯＲ操作であるが、その他の適当な結合形態も用いることができる。次いで非線形関数ｇが機能ブロック８で論理点７の結合結果に適用される。機能ブロック８が非線形関数を表すことを示すために、図３における機能ブロック８の形は歪んだ矩形である。
【００２３】
機能ブロック８でつくられたデータと乱数ＺとのＥＸＯＲが論理点９においてとられ、続いて機能ブロック１０で処理される。乱数Ｚとの結合により、関数ｆを用いる線形写像を表す機能ブロック１０における処理を攻撃者が解析することを困難にする、データの偽装が行われる。線形関数の表象として歪んでいない矩形が図３に用いられる。機能ブロック１０でつくられたデータは先に、例えばカードの製造時に乱数Ｚに関数ｆを適用することで、生成されたデータｆ(Ｚ)と論理点１１で結合される。この結合により、論理点９における乱数Ｚによるデータの偽装が解除される。続いて機能ブロック１２において非線形関数ｇがデータに適用され、非線形関数がデータに適用された後では偽装の解除はもはや不可能であるから、上記の偽装解除が必要である。さらに、データと暗号化操作に関連して必要なキーＫ２とのＥＸＯＲが論理点１１においてとられる。
【００２４】
論理点１１におけるデータｆ(Ｚ)とＫ２との結合はＫ２及びｆ(Ｚ)単体により実施することも、あるいはこれらの単体どうしのＥＸＯＲ操作の結果により実施することもできる。後者の手法ではキーＫ２を平文で用いる必要がなく、ｆ(Ｚ)とのＥＸＯＲがとられたキーＫ２のみが必要となる可能性が開かれる。この結合値が先に、例えばスマートカード１の初期化または個人専用化時に、計算されてカードのメモリに格納されていれば、キーＫ２を平文でスマートカード１に格納する必要はない。これによりスマートカード１の保全性がさらに高められる。
【００２５】
機能ブロック１２においてデータに関数ｇを適用した後、このようにして決定された結果が続いて論理点１３において乱数Ｚと結合され、よって偽装される。次いで結合結果に線形関数ｆが機能ブロック１４で適用される。最後に、データと乱数Ｚに関数ｆを適用した結果及びキーＫ３とのＥＸＯＲが論理点１５でとられる。図３に示されていない処理ステップがこの操作の後にさらに続くことができる。
【００２６】
全体としてみて、図３に示した手順は、秘密データが探り出されることを防止するために、乱数ＺとのＥＸＯＲをとることによりいつでも可能な偽装が暗号化操作で処理されたデータに施されると述べることで要約できる。ＥＸＯＲ操作に関して線形な振る舞いを示す全ての関数ｆにより基本的に偽装を施すことができる。非線形関数ｇには偽装されていないデータを用いなければならない。したがって、非線形関数ｇをデータに適用する前にデータと関数ｆ(Ｚ)とのＥＸＯＲをとることにより偽装を解除する必要がある。非線形関数ｇは線形関数ｆより探り出すことが相当に困難であるから、偽装されていないデータにしか非線形関数ｇを適用し得ないことは、保全性の観点からほとんど問題にならない。図３に示されるフローチャートは関数ｇのそれぞれまたは関数ｆのそれぞれが同じであっても、それぞれが相異なっていても適用できる。
【００２７】
図３に示されるフローチャートにより、データａｂｃの処理時に秘密データを探り出すことはほとんど不可能であるという結果が得られる。しかし、秘密キーＫ１，Ｋ２及びＫ３の準備に際してこれらのキーによる操作も実行されなければならず、この操作が次に攻撃者による探り出しの試みの目標になり得るから、これらのキーの処理においても同様の安全予防手段をとることが推奨される。そのような安全予防手段を含む本発明の一実施形態が図４に示される。
【００２８】
図４は、本発明の別の変形について、図３のスマートカードの動作シーケンスに対応する部分を示す。データａｂｃの処理は図３と同じであり、したがって以下で再度説明されることはない。しかし図３とは対照的に、図４においてはキーＫ１，Ｋ２及びＫ３が論理点７，１１及び１５に与えられない。代わりに、偽装されたキーＫ１’，Ｋ２’及びＫ３’が偽装を解除するために必要な乱数Ｚ１，Ｚ２及びＺ３と共に与えられるが、偽装キーが先に与えられ、次いで乱数が与えられることが好ましい。これにより、本来のキーＫ１，Ｋ２及びＫ３が全く見えなくなることが保証される。この手法は、キーＫ１，Ｋ２及びＫ３が共通キーＫから導かれる暗号化方法において特に有用である。この場合、乱数Ｚで偽装されたキーＫがスマートカード１に格納され、キー導出方法を乱数Ｚに適用することにより決定される乱数Ｚ１，Ｚ２及びＺ３がスマートカード１に格納される。格納は安全な環境、例えばスマートカード１の個人専用化段階で行われなければならない。
【００２９】
図４に示される機能フローを実行するためには、格納されたデータだけでなく導出された偽装キーＫ１’，Ｋ２’及びＫ３’も必要である。これらのキーは必要なときに偽装キーＫから導くことができる。この手法によれば、真正なキーＫまたは導出された真正なキーＫ１，Ｋ２及びＫ３による動作は全く行われず、よってこれらのキーを探り出すことは事実上不可能である。導出された乱数Ｚ１，Ｚ２及びＺ３も前もって決定されてスマートカード１に格納されているから、攻撃者が探り出し得る、これらの乱数による動作ももはや行われない。すなわち、導出された偽装キーＫ１’，Ｋ２’及びＫ３’を探り出すことによる導出された真正なキーＫ１，Ｋ２及びＫ３へのアクセスは、導出された乱数Ｚ１，Ｚ２及びＺ３が必要であるから、全く不可能である。
【００３０】
保全性をさらに高めるため、ＥＸＯＲ操作のそれぞれについて相異なる乱数Ｚを用い、したがってそれぞれの場合において偽装を解除するためのｆ(Ｚ)も必ず存在するような構成をとることも可能である。一実施形態において、乱数Ｚ及び関数値ｆ(Ｚ)の全てがスマートカードのメモリに格納される。しかし、少数の乱数Ｚ及び関数値ｆ(Ｚ)のみを格納し、新しい乱数Ｚ及び関数値ｆ(Ｚ)が必要なときにはいつでも、格納されている乱数Ｚ及び関数値ｆ(Ｚ)のいくつかについてＥＸＯＲをとるかあるいは別の適当な結合をつくることにより、新しい乱数Ｚ及び関数値ｆ(Ｚ)を決定することも同様に可能である。乱数ＺはＥＸＯＲをとるために、格納されている乱数Ｚの群からランダムに選択することができる。
【００３１】
また別の実施形態において、乱数Ｚ及び関数値ｆ(Ｚ)は、必要なときにはいつでも適当な発生器を用いて発生されるので、全く格納されない。１つまたは複数の発生器は、そうしなければ乱数Ｚへの関数ｆの適用を盗みとることにより乱数Ｚが探り出され、さらにはその情報を用いて決定される秘密データも探り出されるかもしれないから、乱数Ｚに線形関数ｆを適用することにより関数値ｆ(Ｚ)を発生するのではなく、別の方法で乱数Ｚと関数値ｆ(Ｚ)の対を発生することが重要である。
【００３２】
本発明にしたがえば、基本的には全ての保全されるべきデータ、例えばキーを乱数のような別のデータを用いて偽装し、次いで処理にまわすことができる。このことにより、その処理を探り出している攻撃者が、偽装されているため無価値なデータしか確定できないという結果が得られる。処理の終わりに偽装は元に戻される。
【００３３】
図５はスマートカードによるいくつかの動作の実行時のシーケンスの概略図を示す。図５は特に、動作が互いに依存しあうためスマートカード１でどの動作が必ずシーケンシャルに実行されなければならないか、及びどの動作が基本的に平行して、すなわちどのような順序でも実行され得るかを示す。この点に関して、図５はデータａｂｃが処理されているスマートカード１でのプログラム実行フローの一部を示す。シーケンシャルに実行されなければならない全ての動作が図５にシーケンシャルに示されている。特別な順序で実行する必要のない全ての動作は並列に配されている。
【００３４】
データａｂｃの処理はブロック７０の形態で示される動作Ｐ１で開始される。動作Ｐ２を表すブロック８０がブロック７０にシーケンシャルに続く。すなわち図５は動作Ｐ１とＰ２の処理順序を入れ換えることができないこと、すなわちこの処理順序が必須であることを示す。ブロック８０の後で図５に示されるフローチャートは動作Ｐ３，Ｐ４，Ｐ５，Ｐ６及びＰ７を表す５つのブロック９０，１００，１１０，１２０，１３０に分岐する。動作Ｐ３，Ｐ４，Ｐ５，Ｐ６及びＰ７が同時に実行できること、すなわちいかなる順序でも実行できることになる。本発明にしたがえば、動作Ｐ３，Ｐ４，Ｐ５，Ｐ６，Ｐ７の実行順序はプログラム実行毎に変わる。すなわち、動作Ｐ３，Ｐ４，Ｐ５，Ｐ６，Ｐ７のどれが動作Ｐ２に続くか、どの動作が先に行われた動作の後に行われるか、等を攻撃者は予知できない。順序の変更は固定パターンにしたがうか、あるいは、より好ましくはランダムに、あるいは乱数を用いて定められる入力データまたは動作Ｐ３，Ｐ４，Ｐ５，Ｐ６及びＰ７のどれが次に実行されるかを示す入力データにより定められる入力データにしたがって実施することができる。個々の動作の実行順序のおそらくはランダムな変化により、これらの動作で処理されるデータを探り出すことが困難になる。動作Ｐ３，Ｐ４，Ｐ５，Ｐ６及びＰ７の全てが実行されると、必ず動作Ｐ８が続き、この処理順序を変えることはできない。動作Ｐ８はブロック１４０で示される。動作Ｐ８の後には、図５には示されていない、順序が可変であるかまたは固定されている動作がさらに続くことができる。
【００３５】
本発明は、例えば、処理順序が可変である、似たような動作が含まれることが多い暗号化アルゴリズムの実行に用いることができる。処理順序は、全ての動作が初めに行われる順序可変動作と入れ換え可能であるから、初めの順序可変動作を行う前に定めることができるし、あるいは次に行われるべき動作を、残っている順序可変動作の群からのそれぞれの順序可変動作を行う前に決定することもできる。いずれの場合にも、処理順序を定めるために乱数を用いることができる。
【図面の簡単な説明】
【図１】  前面から見たスマートカードを示す
【図２】  前面から見た図１に示されるスマートカードの、ＩＣチップを大きく拡大した詳細を示す
【図３】  スマートカード内の動作シーケンスの一部の概略図を示す
【図４】  図３に示す動作シーケンスの変形を示す
【図５】  スマートカードによるいくつかの動作の実行シーケンスの概略図を示す
【符号の説明】
１    スマートカード
２    カード本体
３    ＩＣチップモジュール
５    ＩＣチップ
【図１】
0004611523.tif 000002
【図２】
0004611523.tif 000003
【図３】
0004611523.tif 000004
【図４】
0004611523.tif 000005
【図５】
0004611523.tif 000006