(57)【特許請求の範囲】
【請求項１】
アプリケーション（１）を含んだハードウェア資源である端末とハードウェア資源である電子チップ（２）間の取引における使用者の不正行為に対する保護の暗号通信方法であって、
非線形関数ｆが、端末内のアプリケーション（１）に知られ、かつ電子チップ（２）内に埋め込まれており、
第一の秘密鍵Ｋと第二の秘密鍵Ｋ’が、電子チップ（２）および端末内のアプリケーション（１）に既に割り当てられ、記憶されており、
該方法が、下記の過程：
−電子チップ（２）の認証の都度、変数と呼ばれる変動する入力ワードＲを端末内のアプリケーション（１）によって生成する過程、
−電子チップ（２）と端末内のアプリケーション（１）によって証明書（Ｓｐ，Ｓ）を計算する（１５，１６）過程、ここで該証明書（Ｓｐ，Ｓ）は、少なくとも変数Ｒと秘密鍵Ｋを含む引き数（ｅ1，ｅ2）のリストに適用された非線形関数ｆの結果である、
からなり、さらに以下の過程：
−電子チップ（２）の認証の都度、電子チップ（２）によって、および、端末内のアプリケーション（１）によって、秘密鍵Ｋ’の少なくとも一部から計算された、秘密鍵Ｋ’とは異なるマスクＭを決定（１７，１８）する過程、
−マスクされた証明書（Ｓｐｍ）の値だけを端末内のアプリケーション（１）に利用可能にするために、電子チップ（２）によって、マスクＭを用いて証明書（Ｓｐ）の値を隠す（１９）過程、
−電子チップ（２）によって計算された証明書の隠された値（Ｓｐｍ）を、端末内のアプリケーション（１）によって確認する過程
からなる方法。
【請求項２】
電子チップ（２）によって計算された証明書の隠された値（Ｓｐｍ）の、端末内のアプリケーション（１）による確認が、
−電子チップ（２）によって計算された証明書の隠された値（Ｓｐｍ）を、マスクＭによってマスクを外し、
−電子チップ（２）によって計算された証明書（Ｓｐ）の値を、アプリケーション（１）によって計算された値（Ｓ）と比較すること
から成ることを特徴とする、請求項１に記載の方法。
【請求項３】
電子チップ（２）によって計算された証明書の隠された値（Ｓｐｍ）の、端末内のアプリケーション（１）による確認が、
−端末内のアプリケーション（１）によって、該アプリケーション（１）によって計算された証明書（Ｓ）の値を、マスクＭによって隠し（２３）、そして
−端末内のアプリケーション（１）によって、電子チップ（２）によって計算された証明書（Ｓｐｍ）の隠された値を、該アプリケーション（１）によって計算された証明書（Ｓｍ）の隠された値と比較する（２２）こと
から成ることを特徴とする、請求項１に記載の方法。
【請求項４】
変数Ｒが、端末内のアプリケーション（１）によって生成された乱数から、端末内のアプリケーション（１）によって決定されること、および変数Ｒが、端末内のアプリケーション（１）によって電子チップ（２）に伝達されることを特徴とする、請求項１に記載の方法。
【請求項５】
変数Ｒが、端末内のアプリケーション（１）、および電子チップ（２）によって生成された連続する整数の列から、端末内のアプリケーション（１）によって決定されることを特徴とする、請求項１に記載の方法。
【請求項６】
端末内のアプリケーション（１）および電子チップ（２）によって計算された証明書（Ｓｐ，Ｓ）が、少なくとも変数Ｒ、秘密鍵Ｋ、および電子チップへの内蔵データＤを含む引き数（ｅ1，ｅ2）のリストに適用された非線形関数ｆの結果であることを特徴とする、請求項１に記載の方法。
【請求項７】
証明書（Ｓｐ，Ｓ）が、少なくとも変数Ｒ、秘密鍵Ｋ、および認証の際に端末内のアプリケーション（１）によって電子チップ（２）に提供されたデータＤ’を含む引き数（ｅ1，ｅ2）のリストに適用された非線形関数の結果であることを特徴とする、請求項１に記載の方法。
【請求項８】
秘密鍵ＫとＫ’が、互いに独立して選択されることを特徴とする、請求項１に記載の方法。
【請求項９】
Ｋ’が値Ｋ’［ｉ］のシーケンスから成り、およびＭが値Ｋ’［ｉ］のビットの２を法とする線形結合に等しく、その結合の特性が認証手続きの際に決定されたことを特徴とする、請求項１に記載の方法。
【請求項１０】
Ｋ’が、値Ｋ’［ｉ］のシーケンスから成り、およびＭが値Ｋ’［ｉ］の中から取られ、かつ認証手続きの際に実施されたパラメータｃの選択によって決定された値Ｋ’［ｃ］に等しいことを特徴とする、請求項１に記載の方法。
【請求項１１】
電子チップ（２）において、パラメータｃの値が、電子チップに含まれ、かつ認証の都度増分されたカウンタの値から少なくとも計算されることを特徴とする、請求項１０に記載の方法。
【請求項１２】
電子チップ（２）において、パラメータｃの値が、少なくとも、電子チップに含まれ、かつ認証の都度増分されたカウンタの値、および変数Ｒから計算されることを特徴とする、請求項１０に記載の方法。
【請求項１３】
マスクＭによる証明書Ｓのマスキングが、暗号化関数（Ｆ）を用いて計算されることを特徴とする、請求項１に記載の方法。
【請求項１４】
暗号化関数（Ｆ）が、ビット対ビットの排他的論理和演算であることを特徴とする、請求項１３に記載の方法。
【請求項１５】
証明書（Ｓｐ，Ｓ）とマスクＭが、同じビット数を有することを特徴とする、請求項１に記載の方法。
【請求項１６】
電子チップ（２）の認証回数が、端末内のアプリケーション（１）によって決定され、かつ電子チップ（２）に書き込まれた最大値Ｖに制限されることを特徴とする、請求項１に記載の方法。
【請求項１７】
電子チップ（２）が、認証の都度増分されるカウンタを備え、およびカウンタの値が最大値Ｖに達したとき、電子チップ（２）が一切の認証計算を停止することを特徴とする、請求項１６に記載の方法。
【請求項１８】
ハードウェア資源である端末内のアプリケーション（１）とハードウェア資源である電子チップ（２）間の取引における使用者の不正行為に対する保護の暗号通信方法であって、
非線形関数ｆが、端末内のアプリケーション（１）に知られ、かつ電子チップ（２）内に埋め込まれており、
第一の秘密鍵Ｋと第二の秘密鍵Ｋ’が、電子チップ（２）および端末内のアプリケーション（１）に既に割り当てられ、記憶されており、
該方法が、以下の過程：
−端末内のアプリケーション（１）の認証の都度、変数と呼ばれる入力ワードＲを電子チップ（２）によって生成し、
−証明書（Ｓｐ，Ｓ）を、電子チップ（２）と端末内のアプリケーション（１）によって計算する過程、ここで該証明書（Ｓｐ，Ｓ）は、少なくとも変数Ｒと秘密鍵Ｋを含む引き数（ｅ1，ｅ2）のリストに適用された非線形関数ｆの結果である、
から成り、さらに以下の過程：
−端末内のアプリケーション（１）の認証の都度、電子チップ（２）によって、および、端末内のアプリケーション（１）によって、秘密鍵Ｋ’の少なくとも一部から計算された、秘密鍵Ｋ’とは異なるマスクＭを決定する過程、
−マスクされた証明書（Ｓ）の値（Ｓｍ）だけを電子チップ（２）に利用可能にするために、端末内のアプリケーション（１）によって、マスクＭを用いて証明書（Ｓ）の値を隠す過程、
−端末内のアプリケーション（１）によって計算された証明書（Ｓ）の隠された値（Ｓｍ）を電子チップ（２）によって確認する過程
とから成る方法。
【請求項１９】
変数Ｒが、電子チップ（２）によって生成された乱数から電子チップ（２）によって決定されること、および変数Ｒが、電子チップ（２）によって端末内のアプリケーション（１）に伝達されることを特徴とする、請求項１８に記載の方法。
【請求項２０】
変数Ｒが、端末内のアプリケーション（１）および電子チップ（２）によって生成された連続する整数の列から決定されることを特徴とする、請求項１８に記載の方法。
【発明の詳細な説明】
【０００１】
発明の分野
本発明は、電子チップの不正行為に対する保護のための暗号通信方法に関するものである。
【０００２】
本発明が非常に有利な用途を見出すのは、ワイヤードロジック式またはマイクロプロセッサ式の集積回路チップの不正行為に対する保護を可能にすることであって、特に各種の取引、例えば電話通信の確立、自動販売機における物品の支払い、パーキングメータからの駐車場の賃貸、公共交通機関または基盤施設（通行料金徴収所、博物館、図書館、など）の利用提供のようなサービスへの支払いなどに使用されるプリペイドカードに備えられるチップのことである。
【０００３】
従来技術の記述
現在、プリペイドカードは各種の不正行為を受けるおそれがある。不正行為の第一のタイプは、許可なくカードを複製することからなり、クローニングという用語がこの操作の特徴付けるためによく使われる。不正行為の第二のタイプは、カードに付与されたデータ、とくにカードに書き込まれた貸方総額を変更することからなる。これら不正行為に対抗するために、暗号通信法に頼っているが、それは一方では認証手段を用いてカードの認証を保証する、および／または、デジタル署名を用いてデータの認証を保証するためであり、また他方では、必要ならば暗号化を用いてデータの機密性を保証するためである。暗号通信法は、二つのエンティティの、つまり検査と検査対象を使用し、そして対称または非対称でありうる。対称な場合には、二つのエンティティは全く同じ情報、とくに秘密鍵を共有する。非対称の場合は、二つのエンティティの一方が一対の鍵を有し、その一方は秘密鍵であり他方は公開鍵であり；共有する秘密鍵はない。多くのシステムにおいて、対称暗号通信法だけがプリペイドカードに用いられているが、それは非対称暗号通信法が低速で高価だからである。対称暗号通信法において開発された第一の認証メカニズムは、各カードごとに異なる証明書を、一度だけ計算し、それをカードのメモリ内に保存すること、取引の度にそれを読取ること、そしてすでに割り当てられた証明書が保存されている取引を引き受けるネットワークのアプリケーションに問い合わせてそれを確認することからなる。これらのメカニズムは不完全な保護を保証する、なぜなら一方では証明書は、所与のカードについて常に同一であるために、不正に見張られたり、複製されたり、リプレイ攻撃されうるからであり、また他方ではカードはクローンを作られるからである。クローンに対抗するために、カードの受動的認証メカニズムは、能動的認証メカニズムに代えられているが、該メカニズムはさらにデータの完全性を保証できるものである。これらメカニズムの第一のものは、フランス特許ＦＲ８９  ０９７３４の対象となった。開示された方法は、非線形関数を決定することからなり、この関数はアプリケーションに知られ、また状態のオートマトンの形式で電子チップに埋め込まれる。認証の際に、電子チップとアプリケーションはある証明書を計算するが、該証明書は各認証で決定された引き数リストに適用された関数の結果である；つまり、引き数のリストはある変数を含み、該変数は各認証への適用によって決定されたデータ、電子チップ内に含まれるデータ、および電子チップとアプリケーションに知られていている秘密鍵を含むことができる。電子チップによって計算された証明書がアプリケーションによって計算された証明書と同一である場合、電子チップは真正であると判断され、電子チップとアプリケーションの間の取引が許可される。絶対的に信頼できる能動的認証によるカードの保護の第二のメカニズムは、リプレイ攻撃に対する保護と秘密鍵の管理された消耗とを保証する線形関数を認証の限定数だけ使用することに基づいており、フランス特許ＦＲ９５  １２１４４の対象になっている。
【０００４】
しかしながら、上述の二つのメカニズムそれぞれは、特定の長所と短所がある。第一のメカニズムに関しては、使用された非線形関数の情報セキュリティの仮説（現状の知識では証明不能）に基づいており、ワイヤードロジック用チップの低い計算性能によって課されたとても大きな制約は、通常の秘密鍵用アルゴリズムと同じくらい広い安全性の余地を許容せず、またそのために、使用された非線形関数の詳細な仕様の漏洩がリスクを示しうる。第二のメカニズムに関しては、認証数がある閾値を超えない限りは、証明可能なセキュリティを得られる利点があり、そのため使用された線形関数の漏洩に結びつくリスクはない、しかしながら、逆にこの解決法に固有の、チップの寿命（あるいはリロードが可能なカードの場合は、二つのリロードの間）のために認証機能の使用回数を厳密に制限する必要性は、あるアプリケーションにとっては満たすことが困難な制約を示し得る。くわえて、ワイヤードロジック式チップにではなく、これらチップの検査のために使用されるセキュリティモジュールに関する攻撃は、不正行為者が、偶然に得られた正しい応答の十分な数が、選択したカード番号に組み合わされた秘密が彼に提供されるまで、無作為の応答を確認モジュールに提供するものであるが、該攻撃は、第二のメカニズムの場合、防止することがいっそう困難である。
【０００５】
発明の要約
したがって、本発明の目的によって解決されるべき技術的問題は、電子チップの不正行為に対する保護の暗号通信方法を提供することであって、該方法には以下の過程が含まれている：
−アプリケーションに知られ、かつ電子チップに埋め込まれた非線形関数を決定し、
−電子チップとアプリケーションにだけ知られ、かつ電子チップ内に秘密保持された、第一の秘密鍵Ｋを電子チップに割り当て、
−電子チップの認証の度に、アプリケーションによって変数と呼ばれる入力ワードＲを生成し、
−少なくとも変数Ｒと秘密鍵Ｋを含む引き数リストに適用された非線形関数の結果である証明書Ｓを、電子チップとアプリケーションによって計算する、
そして、該方法は、上述したメカニズムの利点を保持し、それらの欠点のすべてまたは一部を回避しながら、高いセキュリティを保証するものである。
【０００６】
提示された技術的課題に対する解決法は、本発明によれば、前記方法がさらに以下の過程を含むことからなる：
−電子チップとアプリケーションにだけ知られ、かつ電子チップ内に秘密保持された、第二の秘密鍵Ｋ’を電子チップに割り当て、
−電子チップの認証の度に、秘密鍵Ｋ’の少なくとも一部から計算されたマスクＭを決定し、
−マスクされた証明書の値だけをアプリケーションに利用可能にするために、マスクＭを用いて証明書Ｓの値を隠し、
−電子チップによって計算された証明書の隠された値をアプリケーションによって確認する。
【０００７】
このように、電子チップとアプリケーションの間の取引における不正行為に対する保護に関する本発明による方法は、電子チップによって計算された証明書の値Ｓを隠すことであるが、これはアプリケーションがそれを読取ってその値を確認し、そして電子チップが真正であるか決定する前である；証明書Ｓの計算とマスクＭの決定は、電子チップに秘密保持され、アプリケーションに知られている第一の鍵と第二の鍵をそれぞれ介入してなされる。
【０００８】
本発明に一致した方法は提示された課題を解決するが、それは一方では、証明書Ｓの値がマスキングによって保護されるからで、したがって本発明による能動的認証方法のセキュリティが、証明書Ｓの値がマスキングによって保護されていないときよりも、はるかに高いセキュリティの仮説に基づいており、また他方では、情報処理上安全な非線形関数の使用は、閾値を超えて使用された秘密の保護を延長することを可能にするからで、そこではこれらの秘密の無条件セキュリティは危険にさらされている。
【０００９】
アプリケーションは隠された値の正確さを確認するが、それはマスクの逆関数を用いて電子チップによって計算された、隠された証明書のマスクを外すこと、およびアプリケーションによって計算された証明書の値を、マスクを外した値と比較することによるか、あるいは証明書ＳとマスクＭの値を計算した後、マスクＭを用いて証明書Ｓの値を隠し、そしてこの隠した値を電子チップによって計算された値を比較することによる。比較された値が同一であるとき、電子チップは真正であると判断され、そしてチップとアプリケーションの間の取引が許可される。
【００１０】
有利には、特定の実施態様は、カードの認証とデータの認証を同時に保証するが、それは証明書の計算に所定のデータ値を介入させて行う。第一の場合、これらデータは電子チップに記憶され、そしてチップの番号によって、あるいは電子チップに関連した貸方によって構成されうる。第二の場合、これらデータは、認証作業の際に、アプリケーションによってチップに書き込まれる。
【００１１】
特定の実施態様によれば、鍵の決定は、入力の引き数としての電子チップの番号とマスター秘密コードを多様化の方法でアプリケーションにより行うことができ、このことは、有利にはチップの番号を読取った後に、アプリケーションが各電子チップの秘密鍵を再構成することを可能にする；すなわち、チップの秘密鍵の保存はまったく必要ない。
【００１２】
電子チップへの鍵の割り当ては、製造の最後のチップの個別化の際に、あるいはリロード可能なチップの場合はリロード作業の際に実施される。独立した鍵ＫとＫ’を用いることが望ましいが、ある電子チップの第一の鍵Ｋと第二の鍵Ｋ’の間に依存関係が存在してもよい；この関係は関数の形を取り得るが、該関数は鍵Ｋから鍵Ｋ’を、あるいは鍵Ｋから鍵Ｋ’を計算することを可能にする。
【００１３】
特定の実施態様によれば、鍵Ｋ’はシーケンスにまとめられた所定のビット数のワードであり；各シーケンスは、マスクＭを構成するビット数に等しいビット数を有する。マスクＭはこれらのシーケンスから、認証の度に異なる、選択によって決定される。この選択は、ポインタを用いてシーケンス上に示すことによって実施できるが、該ポインタはチップに埋め込まれたカウンタの値によって位置づけられたか、あるいは認証の際にアプリケーションによって提供されたパラメータの値によって位置づけられたものである。別の実施態様によれば、マスクＭを構成する各ビットは、鍵Ｋ’のビットの２を法とした線形結合に等しく；該結合は、認証の都度、一方ではアプリケーションによって、他方ではチップによって計算される。
【００１４】
図面の簡単な説明
本発明のその他の特徴と利点は、付属の図面を参照して、非制限的な例として示されている、下記の特定の実施態様の説明を読むことによっていっそう明らかになるだろう。
【００１５】
図１は、本発明による方法の概略図である。
【００１６】
図２は、非線形関数ｆの概略図である。
【００１７】
実施態様の説明
図１は、アプリケーション１と電子チップ２の間の取引における使用者の不正行為に対する保護の、本発明による暗号通信方法を概略的に示している。
【００１８】
アプリケーション１は、非監視セルフサービス端末内に、完全または部分的に移転することができるが、それは公衆電話、公共交通機関への回転改札口などのようなものである。使用者は、例えばプリペイドカードに埋め込まれた、電子チップ２を保有するが、該チップはアプリケーション１との取引成立を可能にするものである。これらの取引を構成するのは、電話通信の確立、自動販売機における物品の支払い、パーキングメータからの駐車場の賃貸、公共交通機関または基盤施設の利用提供のようなサービスへの支払い、などである。
【００１９】
本方法が可能にするのは、電子チップ２の認証、またはアプリケーション１の認証であり；ここで不正行為者は、クローンによって電子チップ２、あるいは偽の端末によってアプリケーション１を偽造する。
【００２０】
電子チップ２は個別化されるが、それは製造の際、または場合によってはそのリロード作業の際に、識別番号ｉと対象であるアプリケーション１に結びつけられたデータＤの初期値によってなされ；値Ｄは、一般的には所与のアプリケーション１のために電子チップ２に付けられた貸方を表している。
【００２１】
本方法を構成するのは、この個別化作業の際、あるいは電子チップの販売に先立つ作業の際に、電子チップ２、あるいはアプリケーション１の認証に必要な初期条件を決定すること３である。これらの初期条件には、非線形関数ｆ、第一の秘密鍵Ｋおよび第二の秘密鍵Ｋ’の決定が含まれる。非線形関数ｆは、アプリケーション１に既知であり、電子回路４の形で、またマイクロプロセッサを備えた電子チップの場合はプログラムの形で、電子チップ２に埋め込まれている。第一の鍵Ｋ、第二の鍵Ｋ’はそれぞれ、電子チップ２のメモリ５、６内にそれぞれ秘密に保存される。
【００２２】
非線形関数ｆは、メモリおよび排他的論理和演算に関連した、シフトレジスタを形成するレジスタの連続の形で埋め込むことができ；かかる関数は「状態のオートマトン」と呼ばれ、図２にその一例を挙げた。これらの例によれば、関数ｆは、第一の排他的論理和演算７、四つのフリップフロップｒ０からｒ３と四つの排他的論理和演算８から１１を含む４ビットシフトレジスタ、および１６×４ビットサイズのメモリ１２とから成る。各排他的論理和演算７から１１は、二つの入力と一つの出力を有する。各フリップフロップｒ０からｒ３は、データの一つの入力、データの二つの出力、および図示されていない一つのクロック入力を有する。メモリ１２は、四つの入力、四つの出力、および図示されていない一つのクロック入力を有する。入力引き数ｅ1，ｅ2は、少なくとも第一の秘密鍵Ｋと第二の値Ｒを含むが、これらは第一の排他的論理和演算７の入力のうちの一つの入力にある。第一の排他的論理和演算７の出力は、第二の排他的論理和演算８の第一の入力に接続されている。フリップフロップｒ０，ｒ１，ｒ２およびｒ３の入力は、排他的論理和演算８から１１の出力に接続されている。フリップフロップｒ０、ｒ１およびｒ２の第一の出力は、排他的論理和演算９から１１の第一の入力に接続されている。フリップフロップｒ０，ｒ１，ｒ２およびｒ３の第二の出力は、メモリ１２の一つの入力に接続されている。排他的論理和演算８から１１の第二の入力は、メモリ１２の出力に接続されている。フリップフロップｒ３の第一の出力は、入力引き数ｅ1，ｅ2に適用された関数ｆによって計算された証明書Ｓの値を与えるが、該引き数は少なくとも第一の秘密鍵Ｋと第二の値Ｒを含む。電子チップ２またはアプリケーション１の各認証は、入力引き数ｅ1，ｅ2のビット数に等しいクロックビート数に対応し；結果Ｓのビットは、各クロックビートごとに直列で出力される。
【００２３】
第一の鍵Ｋは、一般的に電子チップ２に個別な方法で割り当てられるが、該鍵は典型的には６４から１２８ビットのワードからなる；このワードはアプリケーション１に知られ、電子チップ２に秘密に保持される５。しかしながら、本方法の特定の実施態様によれば、アプリケーション１は鍵Ｋ自体ではなく、マスターと呼ばれる秘密を記憶する。このマスター秘密は、多様化と呼ばれる方法によって、電子チップ２の識別番号ｉから鍵Ｋを再構成することを可能にするようなものである。
【００２４】
本方法の実施態様を問わず、鍵Ｋは典型的には、ＰＲＯＭ５などの読取り専用メモリ内の電子チップ２に保存される。とくに、電子チップ２がリロード可能な場合、それはリロード可能なプリペイドカードに埋め込まれた電子チップ２の場合であるが、読取り専用メモリ５はＥＥＰＲＯＭのように書き込みもできる。
【００２５】
第二の鍵Ｋ’は、鍵Ｋと同様に、一定数のビットのワードの形をとる。鍵ＫとＫ’は、アドレスの異なる同一メモリ内、あるいは別個の二つのメモリ５，６内の、電子チップ２に記憶され、Ｋ’、Ｋそれぞれのビットの決定は、場合によっては鍵Ｋ、Ｋ’それぞれに依存することがある。
【００２６】
個別化作業の後、電子チップ２は販売され、使用者はアプリケーション１との取引にとりかかることができる。二つの場合が生じ得るが、それは認証がアプリケーション１によって電子チップ２を認証することからなるか、認証が電子チップ２によってアプリケーション１を認証することからなるかに応じている。
【００２７】
第一の場合は、図１の概略図に対応する。この場合、アプリケーション１は電子チップ２が真正か否かを決定しようとする；なぜなら、それは電子チップ２のクローンでありうるからである。
【００２８】
本方法の第一の過程で、アプリケーション１は変数と呼ばれるワードＲを生成する。ワードＲは、決定されたビット数を含んでいるが、それはリプレイ攻撃の一切の試みを防止するためであり；典型的には、ビット数は数十ビット程度である。ワードＲは乱数生成器または擬乱数生成器によって生成される。特定の実施態様によれば、連続して生成されたワードＲは、予測可能な連続する整数の列からなりうる。ワードＲは、電子チップ２とアプリケーション１によって実施された証明書Ｓｐ，Ｓの計算のための、入力引き数である。電子チップ２がワードＲにアクセスできるように、アプリケーション１は電子チップ２に書き込み１３を実施するか、電子チップ２はアプリケーション１にワードＲを読みにくる。電子チップ２とアプリケーション１の間の交換は、電子チップ２の個別化の際に設定されたプロトコルに従って実施され；値Ｒは、例えば、符号化されうる。ワードＲは、電子チップ２のバッファメモリ１４、ならびにアプリケーション１に一時的に保存される。
【００２９】
本方法の第二の過程において、一方のアプリケーション１と、他方の電子チップ２が、それぞれＳとＳｐで示された証明書を計算する１５，１６。証明書Ｓ、Ｓｐのそれぞれは、引き数ｅ1，ｅ2のリストに適用された非線形関数ｆによって実施された計算の結果であり、該引き数は少なくとも変数Ｒと鍵Ｋを含む。本方法の特定の実施態様では、引き数ｅ1，ｅ2のリストはさらに、チップの識別番号ｉまたはチップに含まれるデータＤの値、または認証の前にアプリケーションによって生成されチップに書き込まれたデータＤ’の値、または上記の引き数の組み合わせを含んでいる。
【００３０】
第三の過程において、本方法は、少なくとも一対の鍵Ｋ’からマスクＭを決定すること１７，１８から成る。マスクＭは、典型的には十ビット程度に等しいビットの所定の数ｍから成る。Ｍのビット数は、好ましくは証明書Ｓのビット数と同じであり、証明書Ｓを完全に隠し、そして証明書Ｓに一切の情報を開示しないようにする。Ｍの決定は様々な仕方で行える。第一の実施態様において、Ｍの決定は鍵Ｋ’の連続するｍビットを選択し、各認証の後に、選択した第一のビットの列をｍだけシフトすることから成る。したがって、第一の認証の際には、マスクＭはビットｂ0，ｂ1，．．．，ｂm-1を含み、また次の認証の際には、マスクＭはビットｂm，ｂm+1，．．．，ｂ2m-1を含むが、ここでｂ0，ｂ1，．．．，ｂn-1は鍵Ｋ’のビットである。第二の実施態様において、Ｍの決定は鍵Ｋ’のビットの組み合わせの実施から成り；例えば、ｍ0，ｍ1，．．．，ｍm-1がＭのビット、ｂ0，ｂ1，．．．，ｂn-1が鍵Ｋ’のビット、そして変数ＲをｎビットＲ0＝ｒ0,0，ｒ0,1，．．．，ｒ0,n-1のｍ個のワードに分解できるとき；Ｒ1＝ｒ1,0，ｒ1,1，．．．，ｒ1,n-1；Ｒm-1＝ｒm-1,0，ｒm-1,1，．．．，ｒm-1,n-1であり，したがって、ｍi＝（ｂ0．ｒi,0＋ｂ1．ｒi,1＋．．．＋ｂn-1．ｒi,n-1）ｍｏｄ２である。上述した第一の実施態様を一般化した第三の実施態様においては、Ｍの決定はパラメータｃを決定すること、およびｃを用いてＫ’のビットを照合することによって鍵Ｋ’のビットのシーケンスを選択することから成る。これには鍵Ｋ’をビットのシーケンスの列と見なす必要がある。したがって、ｍ0，ｍ2，．．．，ｍm-1がＭのビットであり、またＫ’がｍビットのシーケンスの列であるとき、Ｋ’は以下の表の形で表すことができる。
【００３１】
【表１】
0004841790.tif 000002
【００３２】
また縦列の内容は、ｍビットＫ’［ｉ］のワードで表すことができ、ここではｉ＝１からｎ／ｍである。これら条件において、ＭはＫ’［ｃ］に等しく、ここでｃは間隔［ｌ，ｎ／ｍ］に属するパラメータである。第一の実施態様によれば、パラメータｃの値はチップに埋め込まれ、そしてチップの認証の都度増分される、カウンタの値によって決定され、そしてアプリケーションは、チップ内の読取りを実施してカウンタの値にアクセスする。第二の実施態様によれば、パラメータｃの値は、チップに埋め込まれ、そしてチップの認証の都度増分されるカウンタの値、および、例えば変数Ｒに同時に依存する。ｃの値は、値Ｄまたは値Ｄ’あるいはチップの識別番号ｉにも、依存することがある。
【００３３】
本方法の第四の過程において、電子チップ２は、マスクＭを用いて計算された１７証明書Ｓｐの値を隠す１９。第一の実施態様において、マスキング１９は、暗号化関数を用いて計算される。暗号化関数は、ある値の集合に対して別の値の集合を対応させる鍵によってパラメータ化された全単射関数であり；例えば、関数Ｆ：ｘ→ｘ＋ｋ（２を法とする）、ここでｘ＝０または１、かつｋ＝０または１であり、暗号化関数として使用できる。暗号化関数は、証明書ＳｐとマスクＭの間の排他的論理和演算とみなすことができる。マスキング作業の結果には、隠された証明書Ｓｐｍの値が与えられ、該値は電子チップ２のバッファメモリ２０に一時的に保存される。
【００３４】
本方法の第五の過程において、アプリケーション１はバッファメモリ２０の読取り２１を実施するか、電子チップ２がアプリケーション１に隠された証明書Ｓｐｍを書き込みにくる。電子チップ２とアプリケーション１の間の交換２１は、変数Ｒの交換のために使用されたものと類似のプロトコルに従って実施することができる。つぎにアプリケーション１は、電子チップ２によって計算された、隠された証明書の値Ｓｐｍを確認するが、それは該アプリケーション自身が計算した１６証明書の値Ｓとの比較すること２２による。比較２２を実施するために、アプリケーション１は、隠された値Ｓｍを得て、そして図１に示したようにそれを値Ｓｐｍと比較２２するために、該アプリケーション１があらかじめ計算した１８マスクＭを用いて値Ｓを隠す２３か、あるいはアプリケーションは値Ｓｐを得てそれを値Ｓと比較するために、マスクの逆関数を介入させて値Ｓｐｍのマスクを外す。
【００３５】
本方法の特定の実施態様は、同一の電子チップについて実施できる認証の回数を制限する。この制限は、有利には不正行為者の攻撃に対して電子チップを保護することを可能にするが、該攻撃はアプリケーションによって要求されるものを超える認証回数の観察を利用することから成る。この実施態様によれば、チップはアプリケーションに応じて決定され、かつチップの認証最大数に等しい数Ｖをメモリに含んでいる。認証作業の際に示されることは、チップが先に認証の数Ｖを行ったときは、要求された取引が禁止される。すでに実施された認証数を検査するために、チップは典型的には認証作業の都度増分するカウンタを備えている。カウンタが値Ｖに達したときには、チップ内部のインターロックを始動させて、証明書のあらたな計算の一切の実行を禁止するようにする。チップが計算した証明書の値がないとき、アプリケーションが実施する証明書の確認は失敗し、結果としてアプリケーションはそのチップによる取引を禁止する。
【００３６】
図１と２に関して先に説明した本方法のある変形例は、有利には剽窃の特定の試みに対処することができるが、該剽窃はチップによるアプリケーションの認証の助けによって、チップに対するアプリケーションの機能を模倣することから成る。この変形例によれば、アプリケーションが先に実施した作業は、電子チップによってなされ、またその反対にも実施される。したがって、
−アプリケーションの認証の度に、変数と呼ばれる入力ワードＲがアプリケーションではなく、電子チップによって生成され、
−マスクＭは、アプリケーションの認証の都度、両者によって決定され、
−アプリケーションは、隠された証明書の値だけを電子チップに利用可能にするために、マスクＭを用いて証明書とマスクを計算し、
−一方でチップによって、他方でアプリケーションによって計算された証明書の値それぞれの比較作業は、電子チップによって実行される。
【図面の簡単な説明】
【図１】本発明に係る暗号通信方法の概略図である。
【図２】非線形関数ｆの概略図である。
【図１】
0004841790.tif 000003
【図２】
0004841790.tif 000004