(57)【特許請求の範囲】
【請求項１】
少なくとも１つの演算(ｈ)を実行できる演算プログラムを収める少なくとも１つのメモリをもつ半導体ＩＣ(５)を有するデータ記憶媒体において、前記演算(ｈ)の前記実行には入力データ(ｘ)が必要であり、前記演算(ｈ)の前記実行が出力データ(ｙ)を生成し：
−  前記演算(ｈ)がその実行の前に偽装され；
−  前記偽装された演算(ｈＲ１)が入力データ（ｘ）に乱数（Ｒ１）を結合することで生成される偽装された入力データ(ｘ＊Ｒ１)を用いて実行され；及び
−  前記演算(ｈ)及び前記入力データ(ｘ)の前記偽装が、前記偽装された入力データ(ｘ＊Ｒ１)を用いる前記偽装された演算(ｈＲ１)の実行により、前記偽装されていない入力データ(ｘ)を用いた前記偽装されていない演算(ｈ)の実行により決定される前記出力データ(ｙ)と同じ出力(ｙ)が得られるように調整される；
ことを特徴とするデータ記憶媒体。
【請求項２】
少なくとも１つの乱数(Ｒ１)が、前記偽装された演算(ｈＲ１)及び前記偽装された入力データ(ｘ＊Ｒ１)の決定の構成素となることを特徴とする請求項１記載のデータ記憶媒体。
【請求項３】
前記偽装された演算(ｈＲ１)及び前記偽装された入力データ(ｘ*Ｒ１)の決定が排他的論理和(ＥＸＯＲ)演算を用いて実行されることを特徴とする請求項１または２記載のデータ記憶媒体。
【請求項４】
前記偽装された演算(ｈＲ１)があらかじめ前記データ記憶媒体に永続的に格納されていることを特徴とする請求項１から３いずれか１項記載のデータ記憶媒体。
【請求項５】
少なくとも２つの偽装された演算(ｈＲ１，ｈＲ１')があらかじめ前記データ記憶媒体に永続的に格納され、偽装された演算が実行されるべきときに、前記格納された偽装された演算(ｈＲ１，ｈＲ１')の内の１つがランダムに選ばれることを特徴とする請求項４記載のデータ記憶媒体。
【請求項６】
前記偽装された演算(ｈＲ１)がその実行の前に再計算され、少なくとも１つの乱数(Ｒ１)が前記再計算のために再決定されることを特徴とする請求項１から３いずれか１項記載のデータ記憶媒体。
【請求項７】
前記演算(ｈ)が、前記入力データ(ｘ)と前記出力データ(ｙ)との間の関連を定める、前記データ記憶媒体に格納された表により実現されることを特徴とする請求項１から６いずれか１項記載のデータ記憶媒体。
【請求項８】
前記表に収められた前記入力データ(ｘ)の前記偽装が少なくとも１つの乱数(Ｒ１)との結合により実行されることを特徴とする請求項７記載のデータ記憶媒体。
【請求項９】
少なくとも１つの演算(ｈ)を実行できる演算プログラムを収める少なくとも１つのメモリをもつ半導体ＩＣ(５)を有するデータ記憶媒体において、前記演算(ｈ)の前記実行には入力データ(ｘ)が必要であり、前記演算(ｈ)の前記実行が出力データ(ｙ)を生成し：
−  前記演算(ｈ)がその実行の前に偽装され；
−  前記偽装された演算(ｈＲ１Ｒ２)が入力データ（ｘ）に第１の乱数（Ｒ１）を結合することで生成される偽装された入力データ(ｘ＊Ｒ１)を用いて実行され；
−  前記演算(ｈ)及び前記入力データ(ｘ)の前記偽装が、前記偽装された入力データ(ｘ＊Ｒ１)を用いる前記偽装された演算(ｈＲ１Ｒ２)の実行により、前記偽装されていない入力データ(ｘ)を用いた前記偽装されていない演算(ｈ)の実行により決定される前記出力データ(ｙ)に関係し、該出力データ（ｙ）に第２の乱数を結合することにより偽装された出力データ(ｙ＊Ｒ２)が得られるように調整され；及び
−  前記偽装されていない出力データ(ｙ)を、前記演算(ｈ)を偽装するために用いられた第２の乱数 (Ｒ２)をつかって、前記偽装された出力データ(ｙ＊Ｒ２)から決定できる；
ことを特徴とするデータ記憶媒体。
【請求項１０】
少なくとも１つの乱数(Ｒ１)が、前記偽装された入力データ(ｘ＊Ｒ１)の決定の構成素となり、少なくとも２つの乱数(Ｒ１，Ｒ２)が前記偽装された演算(ｈＲ１Ｒ２)の決定の構成素となることを特徴とする請求項９記載のデータ記憶媒体。
【請求項１１】
前記偽装された演算(ｈＲ１Ｒ２)及び前記偽装された入力データ(ｘ＊Ｒ１)の決定がＥＸＯＲ演算を用いて実行されることを特徴とする請求項９または１０記載のデータ記憶媒体。
【請求項１２】
前記偽装された演算(ｈＲ１Ｒ２)があらかじめ前記データ記憶媒体に永続的に格納されていることを特徴とする請求項９から１１いずれか１項記載のデータ記憶媒体。
【請求項１３】
少なくとも２つの偽装された演算(ｈＲ１Ｒ２，ｈＲ１'Ｒ２')があらかじめ前記データ記憶媒体に永続的に格納され、偽装された演算が実行されるべきときに、前記格納された偽装された演算(ｈＲ１Ｒ２，ｈＲ１'Ｒ２')の内の１つがランダムに選ばれることを特徴とする請求項１２記載のデータ記憶媒体。
【請求項１４】
前記第１の偽装された演算(ｈＲ１Ｒ２)を決定するための前記乱数(Ｒ１，Ｒ２)が、前記第２の偽装された演算(ｈＲ１'Ｒ２')を決定するための前記乱数(Ｒ１'，Ｒ２')の前記偽装された演算(ｈＲ１Ｒ２，ｈＲ１'Ｒ２')の決定に用いられる結合に関する逆値であることを特徴とする請求項１３記載のデータ記憶媒体。
【請求項１５】
前記偽装された演算(ｈＲ１Ｒ２)がその実行の前に再計算され、少なくとも前記乱数(Ｒ１，Ｒ２)が前記再計算のために再決定されることを特徴とする請求項９から１１いずれか１項記載のデータ記憶媒体。
【請求項１６】
前記演算(ｈ)が、前記入力データ(ｘ)と前記出力データ(ｙ)との間の関連を定める、前記データ記憶媒体に格納された表により実現されることを特徴とする請求項９から１５いずれか１項記載のデータ記憶媒体。
【請求項１７】
前記表に収められた前記入力データ(ｘ)の前記偽装が少なくとも１つの乱数(Ｒ１)との結合により実行され、前記表に収められた前記出力データ(ｙ)の前記偽装が少なくとも１つの別の乱数(Ｒ２)との結合により実行されることを特徴とする請求項１６記載のデータ記憶媒体。
【請求項１８】
前記演算(ｈ)が前記演算（ｈ）を偽装するために用いられる結合に関して非線形演算であることを特徴とする請求項１から１７いずれか１項記載のデータ記憶媒体。
【発明の詳細な説明】
【０００１】
本発明は秘密データが格納されている半導体ＩＣを有するデータ記憶媒体に関する。本発明は特にスマートカードに関する。
【０００２】
ＩＣを入れたデータ記憶媒体は極めて多くの様々な用途に、例えば金銭取引の履行あるいは品物またはサービスへの支払いに、あるいは出入または入場管制のための身分証明手段として用いられている。それらの用途の全てにおいて、通常は、不法な第三者によるアクセスから保護されなければならない秘密データをデータ記憶媒体のＩＣが処理する。この保護はとりわけ、ＩＣの内部構造の寸法を非常に小さくし、よって内部構造で処理されるデータを探り出す目的で内部構造にアクセスすることが極めて困難となるようにすることにより確実となる。アクセスをさらに妨げるために、力ずくで取り外すと半導体基板あるいは少なくともＩＣに格納されているデータが破壊されるような、極めて強固に接着するコンパウンド内にＩＣを埋め込むことができる。半導体基板を破壊しなければ除去することができない保護層をＩＣの製造時に半導体基板に与えることもできる。
【０００３】
極めて高価ではあるが、それにも関わらず基本的には入手可能な、対応する専門の装置を用いれば、攻撃者はＩＣの内部構造を露出させて調べることにおそらく成功できるであろう。露出は、例えば特殊なエッチング方法または適当な研削プロセスにより実行できよう。このようにして露出させた、配線のような、ＩＣの内部構造は、内部構造の信号パターンを決定するためにマイクロプローブをあてるかまたはその他の方法で調べることができる。引き続いて、秘密キーのような、データ記憶媒体の秘密データを詐称目的で用いるために、検出した信号から秘密データの決定を試みることができる。同様に、露出させた構造にマイクロプローブを介して信号パターンに選択的に影響を及ぼそうとすることもできる。
【０００４】
本発明はデータ記憶媒体のＩＣに存在する秘密データを不法なアクセスから保護するという課題に基づく。
【０００５】
この課題は特許請求項１及び９の特徴の併用により解決される。
【０００６】
本発明の解決法は、従来技術のような、ＩＣの内部構造の露出及びマイクロプローブの取付けの阻止には向けられていない。代わりに、窃取されたいかなる信号パターンからも潜在的攻撃者が秘密情報を推定することを困難にするための手段がとられる。前記手段は本発明にしたがい、機密保護適応演算をこの機密保護適応演算の実行に用いられる秘密データが別の秘密情報を含めなければ決定することができないようにして行うことからなる。この目的のため、機密保護適応演算は実行前に適当な関数をつかって偽装または変装される。特に、機密保護適応演算が多数回実行される場合の統計的評価を妨げるかまたは阻止さえもするために、ランダム成分が偽装された関数の構成素となる。この結果、攻撃者は窃取したいかなるデータストリームからも秘密データを決定することができない。
【０００７】
機密保護適応演算は、入力データｘを出力データｙに写像する関数ｈにより以下のように表される。すなわちｙ＝ｈ(ｘ)である。秘密データが探り出されることを阻止するため、本発明は以下の式：
【数１】
0004600902.tif 000002
が成立するように決定される偽装された関数ｈＲ１Ｒ２を用意する。
【０００８】
ここでは、入力データが認証秘密データｘではなく、認証秘密データｘを乱数Ｒ１と結合することにより生成される偽装された秘密データｘ＊Ｒ１である、偽装された関数ｈＲ１Ｒ２を用いて機密保護適応演算が行われる。乱数Ｒ１を知らなければ偽装された秘密データｘ＊Ｒ１から認証秘密データｘを決定することはできない。偽装された関数ｈＲ１Ｒ２を偽装された秘密データｘ＊Ｒ１に適用する結果として、偽装された出力データｙ＊Ｒ２が得られる。偽装された出力データｙ＊Ｒ２から適当な結合により出力データｙを決定することができる。新しく機密保護適応演算を実行する毎に、それぞれの実行に先立ち新しく偽装された関数ｈＲ１Ｒ２を決定するための新しい乱数Ｒ１及びＲ２を設定することができる。あるいは、複数の偽装された関数ｈＲ１Ｒ２を永続的に格納しておき、それらの内の１つを機密保護適応演算の実行に先立ってランダムに選ぶことができる。２つの関数ｈＲ１Ｒ２及びｈＲ１'Ｒ２'を用いることが特に有利である。ここで乱数Ｒ１'及びＲ２'は、偽装のために選ばれた結合のタイプに関する乱数Ｒ１及びＲ２の逆値である。別の態様において、乱数Ｒ１及びＲ２は同じとすることもできる。特に、攻撃に用いられ得る入力データと出力データとの間の相関がないように、乱数Ｒ１及びＲ２を統計的に独立に選ぶことができる。
【０００９】
乱数Ｒ１及びＲ２を用いる機密保護適応演算ｈの前後に別の演算が実行される場合に、その別の演算で処理されるデータを偽装するために同じ乱数Ｒ１及びＲ２を用いることもできる。
【００１０】
本発明の解決法は、非線形関数を含む機密保護適応演算で特に有利に使用することができる。非線形関数を用いれば、秘密データの偽装に基づく既知の保護手段をその関数の実行の前に適用することはできない。既知の保護手段は、関数が偽装演算に関して線形であり、よって関数の実行後に偽装が解除され得ることを前提としている。しかし、本発明の解決法においては、秘密データだけでなく、秘密データを処理する機密保護適応演算も変装または偽装される。秘密データ及び機密保護適応演算の偽装は、認証秘密データが機密保護適応演算の実行後の偽装秘密データから導出され得るように調整される。秘密データの偽装と機密保護適応演算の偽装との間の調整は、ルックアップテーブルと通称される、表の形態で機密保護適応演算が実現されるならば、特に簡単に実現できる。設定された表において、それぞれの入力値ｘはそれぞれの入力値に付随する出力値ｙを有する。表で実現された関数は、特定の入力値ｘに属する出力値ｙを調べる（ルックアップする）ことにより実行される。
【００１１】
本発明を図に示される実施形態を参照して以下に説明する。
【００１２】
図１はデータ記憶媒体の例としてスマートカード１を示す。スマートカード１はカード本体２及びカード本体２に特に与えられた間隙に配置されたＩＣモジュール３を含む。ＩＣモジュール３の基本的な要素は、外部デバイスとの電気的接続を生じさせるためのコンタクト面４及びコンタクト面４に電気的に接続されたＩＣ５である。コンタクト面４の代わりに、またはこれに加えて、図１には示されていないコイル、またはその他の伝達手段をＩＣ５と外部デバイスとの間の通信リンクをつくるために与えることができる。
【００１３】
図２は上面図で示した図１からＩＣ５の詳細を大きく拡大して示す。図２の特別な特徴は、図２がＩＣ５の能動面を示していること、すなわち一般にＩＣ５の能動層を保護している層の全てを示していないことである。ＩＣ内部の信号パターンについての情報を得るためには、例えば、露出させた構造６にマイクロプローブをあてることができる。マイクロプローブは、露出させた構造６、例えば配線に精密位置決め装置を用いて電気的接触をとる、極めて細い針である。マイクロプローブで拾い上げられた信号パターンは、ＩＣの秘密データを推定する目的で、適当な測定及び評価装置で処理される。
【００１４】
本発明は、攻撃者が回路を破壊せずにＩＣ５の保護層を除去して、露出させたＩＣ５の構造６にマイクロプローブをあてることに何とか成功したとしてもＩＣの特定の秘密データにアクセスすること、または何か別の方法でＩＣの特定の秘密データを窃取することを非常に困難にするか、あるいは不可能にさえする。本発明はもちろん、攻撃者が別の方法でＩＣ５の信号パターンにアクセスできたとしても有効である。
【００１５】
図３Ａ，３Ｂ，３Ｃ及び３Ｄは、入力データ及び出力データのそれぞれが２ビット長であるルックアップテーブルの簡単な例を示す。表の値は全て２進データとして表されている。第１行は入力データｘを示し、第２行は個々の列の入力データｘに付随する出力データｙを示す。
【００１６】
図３Ａは偽装されていない関数ｈに対するルックアップテーブルを示す。図３Ａは入力値ｘ＝００が付随する出力値ｈ(ｘ)＝０１を、入力値０１が出力値１１を、入力値１０が出力値１０を、また入力値１１が出力値００を有することを示す。図３Ａにしたがうルックアップテーブルは、機密保護適応演算の枠組内で実行されるべき非線形関数ｈを表す。しかし本発明にしたがえば、図３Ａに示されるルックアップテーブル自体は機密保護適応演算の実行に用いられず、図３Ｂ，３Ｃ及び３Ｄにしたがう偽装されたルックアップテーブルが図３Ａのルックアップテーブルから導かれる。
【００１７】
図３Ｂは偽装されたルックアップテーブルを決定する上での中間段階を示す。図３Ｂにしたがうルックアップテーブルは、図３Ａの表の第１行のそれぞれの値を乱数Ｒ１＝１１と排他的論理和（ＥＸＯＲ）をとることにより、図３Ａにしたがうルックアップテーブルから生成された。すなわち、図３Ａの表の第１行第１列の値００を数１１とＥＸＯＲをとることにより値１１が得られ、この値１１が今では図３Ｂの表の第１行第１列の要素である。図３Ｂに示される表の第１行の残りの値も、図３Ａに示される表の第１行の値と乱数Ｒ１＝１１にしたがって決定される。図３Ｂに示される表は既に、同様に乱数Ｒ１＝１１で偽装された秘密データを処理するための偽装されたルックアップテーブルとして用いることができるようになっている。処理結果は、図３Ｂの表の第２行から読み出すことができる平文値である。
【００１８】
ルックアップテーブルの個々の列は通常、入力データｘの昇順にしたがって配列される。図３Ｂの表をそのように並べ換えることで定められた表が図３Ｃである。
【００１９】
図３Ｃにしたがう表がさらに偽装されなければならないか、または平文値ではなく同様に偽装された値を出力値として与えなければならない場合には、別の乱数Ｒ２でさらにＥＸＯＲ演算が施される。
【００２０】
図３Ｄは、前記の、さらにＥＸＯＲ演算を施した結果を示す。前記演算においては、図３Ｃにしたがう表の第２行の要素のそれぞれは乱数Ｒ２＝１０とＥＸＯＲがとられている。すなわち図３Ｄにしたがう表の第２行第１列の要素は、図３Ｃにしたがう表の第２行第１列の要素を乱数Ｒ２＝１０とＥＸＯＲをとった結果である。図３Ｄにしたがう表の第２行の他の要素も同様にしてつくられている。図３Ｄにしたがう表の第１行は、図３Ｃから変わらずに当てはめられている。
【００２１】
図３Ｄに示される表を用いれば、偽装された入力データから同様の偽装された出力データを定めることができる。このようにして定められた、偽装された出力データは偽装されたデータを処理するための別の演算に渡すことができ、あるいは乱数Ｒ２＝１０とＥＸＯＲをとることにより、偽装されたデータから平文データを決定できる。
【００２２】
図３Ｄに示される表を用いることにより、偽装された秘密データの非線形演算を実行することができ、前記非密データを不法なアクセスから保護することができる。様々な偽装された関数を演算の実行毎に用いることができ、偽装された関数を決定できたとしても機密保護適応演算自体を推定することはできないから、機密保護適応演算自体もやはり不法なアクセスから保護することができる。しかし、平文への変換後は、原機密保護適応演算も偽装された関数を用いて行われた演算も同じ結果をもたらす。例えば、入力値００からは図３Ａの表にしたがって出力値０１が得られる。図３Ｄに示される偽装された表から同じ出力値が得られるか否かをチェックするためには、まず入力値００を乱数Ｒ１＝１１とＥＸＯＲをとらなければならない。前記の結合の結果として値１１が得られる。図３Ｄの表にしたがえば、同様に入力値１１から出力値１１が得られる。前記出力値から平文を決定するためにはその出力値を乱数Ｒ２＝１０とＥＸＯＲをとらなければならない。前記の結合の結果として、図３Ａに示される表を用いて決定された値と正確に一致する値０１が得られる。
【００２３】
機密保護適応演算または入力値の偽装は、ＥＸＯＲをとることによるだけでなく、その他の適当なタイプの結合、例えばモジュラー加法によっても実行することができる。さらに、本発明はルックアップテーブルにより表される非線形関数の適用には限定されない。適当な、偽装された関数を決定できるいかなる非線形関数も、また線形関数であってさえも、用いることができる。
【図面の簡単な説明】
【図１】  スマートカードを上面図で示す
【図２】  図１に上面図で示したスマートカードのＩＣの詳細を大きく拡大して示す
【図３Ａ】  ルックアップテーブルの表現を示す
【図３Ｂ】  ルックアップテーブルの表現を示す
【図３Ｃ】  ルックアップテーブルの表現を示す
【図３Ｄ】  ルックアップテーブルの表現を示す
【図１】
0004600902.tif 000003
【図２】
0004600902.tif 000004
【図３Ａ】
0004600902.tif 000005
【図３Ｂ】
0004600902.tif 000006
【図３Ｃ】
0004600902.tif 000007
【図３Ｄ】
0004600902.tif 000008