(57)【要約】外部で実行されるセキュリティ・アプリケーションによって制御される装置により暗号演算を行う新規な方法は、装置と関連するセキュリティ鍵（ｓ）及びセキュリティ・アプリケーションにより供給されるチャレンジ数（ｃ）を含む第１及び第２の因子の間の少なくとも１回の乗算を含む計算によって、装置内で暗号値（ｙ）を生成することにある。第１の乗算因子は、２進表現で、決定されたビット数Ｌを有する。第２の因子は、２進表現で、１に設定された連続するビットをそれぞれ有する２つのかたまりの間ごとに０に設定された一連の少なくともＬ−１ビットを有する、１に設定されたいくつかのビットを有するように制約されている。第２の因子での１に設定されたビットの位置にしたがってそれぞれシフトされた第１の因子の２進バージョンをアセンブルすることによって、乗算は実行される。
2007526703.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティ・アプリケーション（３４）の制御下に、装置（１０）における暗号演算を行う方法であり、前記装置に関連する秘密鍵（ｓ）の少なくとも部分を含む２つの因子の間の少なくとも１回の乗算を含む計算によって暗号値（ｙ）が前記装置内で作られる方法において、
前記乗算の前記２つの因子の第１のものは、２進表現で、決定されたビット数Ｌを有し、前記乗算の前記２つの因子の第２のものは、２進表現で、１に設定された連続するビットをそれぞれ有する２つのかたまりの間ごとに、０に設定された一連の少なくともＬ−１ビットを有する、１に設定されたいくつかのビットを有するように制約され、
前記乗算は、前記第２の因子での１に設定された前記ビットの位置に応じてそれぞれシフトされた前記第１の因子の２進バージョンをアセンブルすることにより実行されることを特徴とする、暗号演算を行う方法。
【請求項２】
前記秘密鍵（ｓ）は、前記装置（１０）に関連する非対称暗号鍵対の一部を構成する、請求項１に記載の方法。
【請求項３】
前記装置（１０）は、前記暗号値を作るためのハード・ワイヤード・ロジックを含むチップを有する、請求項１または２に記載の方法。
【請求項４】
前記暗号値の前記計算は、さらに、擬似乱数（ｒ）と前記乗算の前記結果の間の加算または減算を含む、請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記第１及び第２の因子（ｓ，ｃ）及び前記擬似乱数（ｒ）は、前記擬似乱数が前記乗算の前記結果より大きくなるように大きさが定められる、請求項４に記載の方法。
【請求項６】
前記第２の因子での１に設定されたビットの数は、最も大きくて、ｓ1／Ｌ以下の最大の整数であるように選択され、ここで、ｓ1は２進表現での前記擬似乱数（ｒ）のビット数未満の予め定められたしきい値である、請求項５に記載の方法。
【請求項７】
前記乗算の前記２つの因子は、前記秘密鍵（ｓ）の前記部分に加えてさらに、前記装置の外で実行された前記セキュリティ・アプリケーションによって前記装置に供給される数（ｃ）を含む、請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記乗算の前記２つの因子は、前記秘密鍵（ｓ）に加えてさらに、前記装置によって供給された数（ｃ）を含む、請求項１乃至６のいずれか１項に記載の方法。
【請求項９】
前記秘密鍵（ｓ）の前記部分は、前記乗算の前記第１の因子である、請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
前記２進バージョンは、ビット中の同様のサイズの各区間内に配置され、前記乗算の前記第２の因子での１に設定されたビットの数で除算した使用可能なスペースの全サイズに前記サイズは対応し、各２進バージョンは、前記第２の因子での１に設定された前記ビットの位置にしたがってシフトの関数として、それぞれの各区間内に配置される、請求項９に記載の方法。
【請求項１１】
前記秘密鍵（ｓ）の前記部分は、前記乗算の前記第２の因子である、請求項１乃至８のいずれか１項に記載の方法。
【請求項１２】
前記秘密鍵（ｓ）は、１に設定された前記秘密鍵のビットの前記位置を符号化することにより、前記装置のメモリ媒体内に蓄積される、請求項１１に記載の方法。
【請求項１３】
前記秘密鍵（ｓ）は、（Ｓ−１）／（ｎ−１）ビットの区間の下限と、前記乗算の前記第１の因子（ｃ）に割り当てられかつ前記関連する区間にそれぞれ配置されたビットのブロックの下限とをそれぞれ分離するビットの数を符号化することにより、前記装置のメモリ媒体（１６）内に蓄積され、ここで、Ｓは前記秘密鍵のビット数であり、ｎは前記秘密鍵の１に設定されたビットの数である、請求項１１または１２に記載の方法。
【請求項１４】
前記秘密鍵（ｓ）は、前記乗算の前記第１の因子（ｃ）に割り当てられた連続したビットの２ブロックを分離する前記ビットの数をそれぞれ表している、ビット数を符号化することにより、前記装置のメモリ媒体（１６）に蓄積される、請求項１１または１２に記載の方法。
【請求項１５】
前記暗号値（ｙ）は、前記装置の外で実行される前記セキュリティ・アプリケーションを有するトランザクションにおいて、前記装置を認証するように生成される、請求項１乃至１４のいずれか１項に記載の方法。
【請求項１６】
前記暗号値（ｙ）は電子署名として生成される、請求項１乃至１４のいずれか１項に記載の方法。
【請求項１７】
セキュリティ・アプリケーション（３４）に対するインタフェースの手段（２４）と、暗号値（ｙ）を生成するための計算の手段（１２，２２，２６）とを有し、前記計算の手段は、前記装置に関連する秘密鍵（ｓ）の少なくとも部分を含む２つの因子の間の乗算の手段（２２）を有する、暗号機能を備える装置において、
前記乗算の前記２つの因子の第１のものは、２進表現で、決定されたビット数Ｌを有し、前記乗算の前記２つの因子の第２のものは、２進表現で、１に設定された連続するビットをそれぞれ有する２つのかたまりの間ごとに０に設定された一連の少なくともＬ−１ビットを有する、１に設定されたいくつかのビットを有するように制約され、
前記乗算手段は、前記第２の因子での１に設定された前記ビットの位置にしたがってそれぞれシフトされた前記第１の因子の２進バージョンをアセンブルする手段を有することを特徴とする装置。
【請求項１８】
擬似乱数（ｒ）を生成する手段（１２）をさらに有し、前記計算の手段は、前記乗算の前記結果を、前記擬似乱数に加算し、または前記擬似乱数から減算するための手段（２６）を有する、請求項１７に記載の装置。
【請求項１９】
前記第１及び第２の因子（ｓ，ｃ）及び前記擬似乱数（ｒ）は、前記擬似乱数が前記乗算の前記結果より大きくなるように大きさが定められる、請求項１８に記載の装置。
【請求項２０】
前記計算の手段（１２，２２，２６）は、ハード・ワイヤード・ロジックとして具体化される、請求項１７乃至１９のいずれか１項に記載の装置。
【請求項２１】
前記秘密鍵（ｓ）の前記部分は前記乗算の前記第１の因子である、請求項１７乃至２０のいずれか１項に記載の装置。
【請求項２２】
前記秘密鍵（ｓ）の前記部分は前記乗算の前記第２の因子である、請求項１７乃至２０のいずれか１項に記載の装置。
【請求項２３】
前記秘密鍵（ｓ）で１に設定された前記ビットの前記位置を符号化するために、データを蓄積するように適合されたメモリ（１６）をさらに有する、請求項２２に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティ・アプリケーションの枠組み内の装置における、暗号演算を行う方法に関する。特に本発明は、外部のアプリケーションと電子チップの間のトランザクションにおける電子チップの不正行為(fraude)に対する保護の暗号方法に関する。
【０００２】
本発明は、ハード・ワイヤード・ロジックを有する集積回路チップにおける不正行為、特に、電話通信の開始、自動販売機における品物に対する支払い、パーキングメーターからの駐車場所の賃借、公共の交通機関のようなまたは施設（料金所、博物館、図書館など）の利用のようなサービスに対する支払い、のような多様な取り引きで使用されるプリペイドカードに適合するチップ、あるいは、パレットの追跡、大量消費製品、銀行券などに使用される無線周波タグ（「ＲＦＩＤタグ」）に適合するチップ、の不正行為に対して保護を可能にする点で、非常に有利なアプリケーションを見出す。
【背景技術】
【０００３】
現時点では、ハード・ワイヤード・ロジックを有するチップは、さまざまな型の不正行為を経験する傾向がある。不正行為の第１の型は、権限なしでカードを複製することであり、この操作を特徴付ける用語「クローニング(clonage)」が多くの場合使用される。不正行為の第２の型は、カードに付与されたデータ、特にカードに登録されたクレジットの額を修正することである。これらの不正行為を根絶させるために、一方では、認証手段によってカードの認証を保証するために、及び／または、デジタル署名の手段によってデータの認証を保証するために、他方では、暗号化の手段によってデータの機密性を適切であると保証するために、暗号が使用される。暗号には２つのエンティティ(entite)が含まれ、これらは認証の場合には検証者及び検証される対象である。また暗号は、対称あるいは非対称のいずれでもよい。暗号が対称である場合（あるいは「秘密鍵」に基づく場合）には（２つの用語は同意語である）、２つのエンティティは正確に同じ情報、詳しくは秘密鍵を共有する。暗号が非対称である場合（あるいは「公開鍵」に基づく場合）には（２つの用語は同意語である）、２つのエンティティの一方が一対の鍵を所有する。この一対の鍵の一方は秘密鍵であり、他方は公開鍵であって、２つのエンティティに共有される秘密鍵はない。多くのシステムにおいて、特にチップが「ハード・ワイヤード・ロジック」型である場合には、非対称暗号は低速であり費用がかかるために、プリペイド・カードには対称暗号のみが実装される。対称暗号において開発された最初の認証メカニズムは、全てに対して各カードごとに異なっている認証値を１回限り計算することと、その認証値をカードのメモリに蓄積することと、各トランザクションごとに認証値を読み取ることと、トランザクションをサポートするネットワークのアプリケーションであって、既に割り当てられた認証値を蓄積しているか再計算するアプリケーションに問い合わせることにより、認証値を検証することと、からなっている。これらのメカニズムは、所与のカードに対して常に同じであるとして認証値が盗み見され、複製され、不正に再実行される恐れがあるために、十分な保護を保証せず、したがって、このカードのクローンの実現を可能にする。クローンを根絶させるために、カードを認証する受動的なメカニズムは、データの完全性をさらに保証できる能動的な認証メカニズムによって置換される。
【０００４】
能動的な対称認証メカニズムの一般的原理は次の通りである。認証の間に、電子チップ及びアプリケーションは、各認証ごとに決定される引数のリストに適用される関数の結果である認証値を計算する。引数のリストは、ランダム要素、すなわち、各認証ごとにアプリケーションにより決定されるデータ、電子チップに含まれているデータ、及び電子チップとアプリケーションに知られている秘密鍵を有してもよい。電子チップにより計算された認証値がアプリケーションにより計算された認証値と同一である場合には、電子チップが真正である見なされ、電子チップとアプリケーションの間のトランザクションが認証される。
【０００５】
このような認証メカニズムは公知であるが、大多数は、少なくともマイクロプロセッサと同等の計算能力を必要とする。したがって、これらのメカニズムはマイクロプロセッサ・カードには適しているが、はるかに初歩的な計算手段しか有しないハード・ワイヤードロジック・チップに対しては、ほとんど適していない。
【０００６】
能動的な対称認証メカニズムをハード・ワイヤード・ロジック・チップに集積することが可能になったとき、第１の段階に到達した。例えば、フランス特許出願公開第2,826,531号(FR-A-2 826 531)は、このようなメカニズムを具体的に特定することを可能にする方法を説明している。これらのメカニズムにより作られる認証値は一連の擬似乱数ビットと解釈することも可能であり、入力パラメータの少なくとも１つを変化させることによって、認証値を計算するこの方法は、擬似乱数ビットを生成する方法になることが指摘される。
【０００７】
しかし秘密鍵メカニズムは、例えば公衆電話、電子支払端末、あるいは公共交通の改札口(portillon)に存在する、チップの認証を担当している検証ユニットが、そのチップが保持する秘密鍵を知っていることを必要とする。これは重要な問題点を招く。すなわち、誰かが、このユニットによって、アプリケーションとリンクしたどのようなチップであってもそれが真正であると証明することを可能にしようと望めば、このユニットは、すべてのチップの秘密鍵を蓄積していなければならないか、あるいは、このユニットは、母鍵(cle-mere)あるいはマスタ鍵(cle-maitre)とも呼ばれるベース鍵(cle de base)を蓄積していなければならず、それはどのチップからでも秘密鍵を検索することを可能にする。両方の場合において、これらのユニットのそれぞれは、発行されたすべてのチップの秘密鍵の検索を可能にする十分な情報を蓄積し、したがって、発行されたすべてのチップの任意の１つのクローンを作ることが可能な十分な情報を蓄積することになる。検証ユニットの任意の一つに対して侵入に成功することは、アプリケーション全体のセキュリティを破壊するであろう。
【０００８】
したがって、特に、大量の数のチップを使用するアプリケーションにおいて、公開鍵を有する能動的な認証メカニズムをハード・ワイヤード・ロジック・チップに集積化することを可能にすることが緊急に必要である。一般的にはこれは、ハード・ワイヤード・ロジック・チップが非常に安価であるから、ハード・ワイヤード論理チップを使用するアプリケーションの場合である。
【０００９】
公開鍵方式は、一般に、大きな数に関連する多数回の演算を必要とし、したがってシリコン面積が非常に小さくかつその計算ロジックが極めて基礎的な演算のハード・ワイヤリングに限られているハード・ワイヤード・ロジック・チップに集積するにはアプリオリ（先験的）に適していないので、これらのメカニズムは存在しない。さらに、これらの基礎的な演算は、オペランドがビットごとに順次導入され、その最終の値が関数の結果の計算に対する基礎として働く内部レジスタの状態をこの導入が次第に修正する意味で、一般に、直列に実行される。
【００１０】
例えば、演算ｙ＝ｒ＋ｓ・ｃ（あるいはｙ＝ｒ−ｓ・ｃ）を実行することにより認証値ｙを計算することは、既知である。ここで、ｒはランダム要素を示し、ｓは非対称な１対の鍵（ｓ，ｐ）に属する秘密鍵を示し、ｃはアプリケーションにより選択されたいわゆる「チャレンジ」値(challenge value)である。チャレンジ値は一定のしきい値を超えることができない。ｒの値は、それに加算される（あるいはそれから減算される）数よりも常に大きくなければならない。このことは、アプリオリに任意の整数ｓ、ｃの間の少なくとも１回の乗算の実行を必要とすることを意味する。しかしこのような乗算は、比較的に複雑な演算であり、大部分のハード・ワイヤード・ロジック・チップの範囲外である。
【特許文献１】フランス特許出願公開第2,826,531号
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、例えば、チップは乗算演算を明示的には実行する必要がなくかつ得られるセキュリティ・レベルが比較的大きい（例えば約３２ビット）認証値のような、暗号値の計算方法を定めることである。このセキュリティ・レベルは、特に金融取引の保護では、非常に広範囲に流布しているセキュリティ・レベルである。
【課題を解決するための手段】
【００１２】
本発明は、セキュリティ・アプリケーションの制御の下に、装置における暗号演算を行う方法を提案する。本方法において、装置に関連する秘密鍵の少なくとも部分を含む２つの因子の間の少なくとも１回の乗算を含む計算によって、暗号値が装置内で生成される。本発明によれば、乗算の２つの因子の第１のものは、２進表現で、決定されたビット数Ｌを有する。乗算の２つの因子の第２のものは、２進表現で、１に設定された連続するビットをそれぞれ有する２つのかたまりの間ごとに、０に設定された一連の少なくともＬ−１ビットを有する、１に設定されたいくつかのビットを有するように制約されている。したがって、乗算は複雑なアルゴリズムによって実行される必要がない。第２の因子での１に設定されたビットの位置に応じてそれぞれシフトされた第１の因子の２進バージョンをアセンブルすることにより、実行は十分である。
【００１３】
本発明による方法の他の有益な特徴によれば：
・秘密鍵は、装置と組み合わされた非対称暗号鍵の対の一部分を形成する；
・装置は、暗号値を生成するためのハード・ワイヤード・ロジックを含むチップを有する；
・暗号値の計算は、擬似乱数と乗算の結果との間の加算または減算をさらに含んでいる；
・第１及び第２の因子、ならびに擬似乱数は、擬似乱数が乗算の結果より大きくなるように大きさが定められ、特に、第２の因子での１に設定されたビットの数は、最も大きくて、ｓ1／Ｌ以下の最大の整数であるように選択することが可能であり、ここで、ｓ1は、２進表現での擬似乱数のビット数未満の予め定められたしきい値である；
・乗算の２つの因子は、秘密鍵の前記部分に加えてさらに、装置の外部で実行されるセキュリティ・アプリケーションにより装置に供給される数を含んでいる；
・秘密鍵の前記部分は、乗算の第１の因子あるいは第２の因子のいずれかである；
・秘密鍵の前記部分が乗算の第１の因子である場合、前記２進バージョンは、例えば、ビット内の同様のサイズの各区間内に配置され、前記サイズは乗算の第２の因子での１に設定されたビットの数で除算した使用可能なスペースの全サイズに対応し、各２進バージョンは、セキュリティ・アプリケーションにより定められたシフトの関数として、それぞれの各区間内に配置される；
・秘密鍵が乗算の第２の因子である場合、（Ｓ−１）／（ｎ−１）ビットの区間の下限と、乗算の第１の因子に割り当てられかつ関連する区間にそれぞれ配置されたビットのブロックの下限とをそれぞれ分離するビットの数を符号化することにより、秘密鍵は装置のメモリ媒体に蓄積することが可能であり、ここでＳは秘密鍵のビット数であり、ｎは秘密鍵の１に設定されたビットの数である；
・変形として、この秘密鍵は、乗算の第１の因子に割り当てられた連続したビットの２ブロックを分離するビットの数をそれぞれ表している、ビット数を符号化することにより、装置のメモリ媒体に蓄積することが可能である；
・秘密鍵の前記部分が乗算の第２の因子である場合、１に設定された秘密鍵のビットの位置を符号化することによって、秘密鍵は装置のメモリ媒体に蓄積される；
・秘密鍵の前記部分が乗算の第２の因子である場合、第１の因子は装置の中で生成される擬似乱数でもよく、暗号値は電子署名として生成される；
・他のアプリケーションにおいて、暗号値は、装置の外部で実行されるセキュリティ・アプリケーションを有するトランザクションにおいて、装置を認証するように生成される。
【００１４】
本発明は、セキュリティ・アプリケーションへのインタフェースの手段と、暗号値を生成するための計算の手段を有し、計算の手段は、装置に関連する秘密鍵の少なくとも部分を含む２つの因子の間の乗算の手段を有する、暗号機能を有する装置をさらに提案する。本発明によれば、乗算の２つの因子のうちの第１のものは、２進表現で、決定されたビット数Ｌを有し、乗算の２つの因子の第２のものは、２進表現で、１に設定された連続するビットをそれぞれ有する２つのかたまりの間ごとに０に設定された一連の少なくともＬ−１ビットを有する、１に設定されたいくつかのビットを有するように制約されている。乗算手段は、第２の因子での１に設定されたビットの位置にしたがってそれぞれシフトされた第１の因子の２進バージョンをアセンブルする手段を有する。
【発明の効果】
【００１５】
本発明による利点は、不正行為に対して装置自身を保護するために暗号を使用して、特に、ハード・ワイヤード・ロジックの電子チップと電子チップの外部のセキュリティ・アプリケーションとの間のトランザクションの間に暗号を使用して、良いレベルの装置のセキュリティを得ることにある。
【００１６】
本発明による他の利点は、小さいサイズである電子チップには実装が困難である費用を要する乗算の手段を必要としないので、実装が簡単なことである。乗算手段は、秘密鍵またはチャレンジのシフトを合計するための加算手段により置換されている。具体的には、２のべき乗の整数の乗算は、２進分解のビットを左へシフトすることになる。
【００１７】
本発明による他の特徴と利点は、添付図面を参照した非制限的な代表的実施形態の下記の説明で、明白であろう。
【発明を実施するための最良の形態】
【００１８】
図１は、装置、特にハード・ワイヤード・ロジックを有する電子チップにおいて、装置の外部で実行されるセキュリティ・アプリケーションの制御下に、暗号演算を実行する方法のフローチャートを示している。
【００１９】
詳しくは、このような方法は、電子チップとアプリケーションの間のトランザクションに適用される。しかし、このような方法は、デジタル署名を構成する暗号値の計算にも使用することができる。
【００２０】
第１の段階１において、この方法は、電子チップに含まれる擬似乱数発生器により、ランダム要素と呼ばれる擬似乱数ｒを電子チップ内に生成する。ランダム要素ｒは、トランザクションに特有である。
【００２１】
第２の段階２において、この方法は、ｘ＝ｆ(ｒ)であるような関数ｆに基づいて、ランダム要素ｒに関連するパラメータｘを、電子チップからセキュリティ・アプリケーションへ送信する。ここで、ｆは、電子チップ及びセキュリティ・アプリケーションには既知の公開鍵に関連している。パラメータｘは、前もって計算してチップのメモリに蓄積しておくことが可能であり、各パラメータｘは、それぞれ擬似乱数ｒに関連している。
【００２２】
例として、ｇがセキュリティ・アプリケーションには既知の数であれば、関数ｆは、従来のように、ｘ＝ｆ(ｒ)＝ｇrの形式としてもよい。当業者には同じく公知の他の可能性のあるものは、関数ｆに、暗号ハッシュ関数ｈ及びアプリケーションに関連するデータＤ（例えばトランザクション量）を使用することである。すなわち：ｘ＝ｆ(ｒ)＝ｈ(ｇr，Ｄ)。関数ｆの他の例も使用可能である。
【００２３】
第３の段階３において、この方法は、後に説明する本発明の方法によって、入力パラメータとして、少なくともトランザクションに特有のランダム要素ｒ及び一対の非対称鍵（ｓ，ｐ）に属する秘密鍵（例えば、ｐ＝ｇs）を有する乗算手段により、電子チップ内で暗号値ｙを計算する。暗号値は、認証値Ｖのすべてあるいは一部を構成する。
【００２４】
第４の段階４において、この方法は、認証値Ｖをアプリケーションに送信する。
【００２５】
第５の段階５において、この方法は、少なくとも公開鍵ｐを含む公開パラメータでその入力パラメータが構成される検証関数の手段により、セキュリティ・アプリケーションによって認証値Ｖを検証する。認証値がセキュリティ・アプリケーションによってその有効性が確認されれば、トランザクションは認証される。
【００２６】
本発明は、ｙ＝ｒ＋ｆ1＊ｆ2（あるいは等価的にｙ＝ｒ−ｆ1＊ｆ2）のタイプの演算を行うことにより、暗号値ｙを計算することを目的とする。ここで、ｒは電子チップに含まれる擬似乱数発生器によって計算されたランダム要素を示し、（ｆ1，ｆ2）は秘密鍵ｓとセキュリティ・アプリケーションにより提供されるいわゆるチャレンジ数ｃとを含む一対の因子を示す。因子ｆ1，ｆ2の２進表現は、因子ｆ1は大きさＬビットであり、因子ｆ2の１に設定された連続するビットは、常にそのような連続ビットのかたまりの間に一連の０に設定された少なくともＬ−１ビットを有するように、なっている。
【００２７】
したがって、因子ｆ1，ｆ2の乗算は、第２の因子ｆ2での１に設定されたビットの位置に応じてそれぞれシフトされた第１の因子ｆ1のｎ個の２進法のバージョンｂ[１]，ｂ[２]，…，ｂ[ｎ]の合計になる。個数ｎは、第２の因子ｆ2での１に設定されたビットの数に依存している。これらのシフトが与えられれば、和
【００２８】
【数１】
2007526703.tif 000003
【００２９】
は、乗算の結果を表す２進数にｂ[ｈ]値をアセンブルすることにより、非常に簡単に実行される。
【００３０】
下記の説明において、本発明による方法の第１の実施形態が説明される。ここでは、因子ｆ1はＬビットの秘密鍵ｓであり、第２の因子ｆ2は、セキュリティ・アプリケーションにより提供される擬似乱数チャレンジｃである、したがって、暗号値ｙは、次式の演算を行うことにより、決定される。
【００３１】
ｙ＝ｒ＋ｓ＊（２i[1]＋…＋２i[n]）
ここで、ｉ[１]，…，ｉ[ｎ]は、以下の２つの制約条件を有するアプリケーションにより選択されたｎ個の整数を示す：
・値ｒがそれに加算される（あるいは、それから減算される）数より常に大きいように、値ｉ[１]，…，ｉ[ｎ]は、すべてｓ1で示されるしきい値以下でなくてはならず、したがって、前記しきい値はｒのビットに対して使用可能なスペースを定める；
・第２の制約条件は、さまざまな値ｉ[１]，…，ｉ[ｎ]が、少なくとも秘密鍵のビット・サイズに等しい距離だけ離れていることを必要とする。
【００３２】
したがって、秘密鍵ｓがＬビットで構成されていると、昇順に配置されたさまざまな整数ｉ[１]，…，ｉ[ｎ]を仮定すると、セキュリティ・アプリケーションは、ｉ[１]＋Ｌ≦ｉ[２]，ｉ[２]＋Ｌ≦ｉ[３]，…，ｉ[ｎ−ｌ]＋Ｌ≦ｉ[ｎ]，ｉ[ｎ]＜ｓ1であるように、これらの値ｉ[１]，…，ｉ[ｎ]を提供する。
【００３３】
したがって、第２の因子の１に設定されたビットの数ｎは、最大で、ｓ1／Ｌ以下の最大の整数に選択される。
【００３４】
一般には非常には大きくはないであろうｕで示す最大値（例えばｕ＝５あるいは６）は、２つの制約条件によってｎの値に課される。ｎの値は、最大値ｕと等しくされることが望ましい。
【００３５】
図２は、ｎ＝５である本発明による方法の使用例を示している。ダイヤグラムＢ１は、サイズＬ＋ｓ1ビットの使用可能なスペースＥＵを有するランダム要素ｒを表す。ダイヤグラムＢ２は、ｒに加算された（あるいはｒから減算された）乗算ｓ＊ｃ＝ｓ＊（２i[1]＋…＋２i[n]）の結果を表す。秘密鍵ｓは、チャレンジｃの１に設定されたビットの位置に応じて、シフトされる。したがって、それぞれｉ[１]，ｉ[２]，ｉ[３]，ｉ[４]及びｉ[５]ビットだけシフトされた２進バージョンｂ１からｂ５が得られる。
【００３６】
整数ｉ[ｈ]のさまざまな値と、セキュリティ・アプリケーションによって固定されない場合には数ｎ自体を推測することは、非常に困難であるから、本発明による利点は、このような方法で得られる、セキュリティが改善することにある。
【００３７】
他の利点は、本発明に基づけば秘密鍵とチャレンジの乗算はシフト（あるいは２進バージョン）をアセンブルすることになり計算は連続的に実行されるので、暗号値ｙの計算を大幅に複雑することなく、セキュリティの改善が実現されることである。
【００３８】
この方法の第１の変形例によれば、秘密鍵のｎ個のシフトは、同様のサイズの区間内にすべて配置されることが要求される。このサイズは最大であることが望ましく、このことは、このサイズがｎ、もしくはこの値が整数でなければこの値未満の最大の整数、で除算した使用可能なスペースＥＵの全サイズと等しいことを示す。秘密鍵のシフトに対応するビットのブロックと、これらの関連するブロックが位置する区間の下限との間の、アプリケーションにより選択される相違は、ｊ[１]，ｊ[２]，…，ｊ[ｎ]と示される。
【００３９】
より公式には、ｋが使用可能なスペースの全サイズ（ｓ1＋Ｌと等しい）とすれば、ｎは、ｋ個の使用可能なビットの中でばらばらに秘密鍵が出現するように希望する回数である。ｋはｎで除算可能と仮定する（逆の場合には、これが成り立つように、ｋの値をわずかに増加させる）。
【００４０】
使用可能な全スペースは、次式のように、それぞれｋ／ｎ個の位置を含む同様のサイズのｎ個の区間に分解していてもよい。
【００４１】
[０，ｋ／ｎ−１]∪[ｋ／ｎ，２ｋ／ｎ−１]∪  …  ∪[(ｎ−１)ｋ／ｎ，ｋ−１]
この変形例を使用して、ランダム要素ｒに加算可能な全部で((ｋ／ｎ)−Ｌ＋１)n個の異なる値が存在することを示すことができる。
【００４２】
具体的にいうと、各区間はｋ／ｎ個の位置を含んでおり、その中でＬ個が秘密鍵のシフトを書き込むために使用される。したがって、シフトにより使用されるビットのブロックに分配されるために、ｋ／ｎ−Ｌ個の空き位置が各区間に残される。このように、１≦ｈ≦ｎである任意のｈに対して、ｊ[ｈ]は、０と(ｋ／ｎ)−Ｌの間の値であり、(ｈ−１)(ｋ／ｎ)番目の位置とシフトの第１ビットの位置の間のビット数に対応する。したがって、各ｊ[ｈ]に対して、(ｋ／ｎ)−Ｌ＋１の可能な値が存在する。最後に、ｎ個の要素からなる組（ｊ[１]，ｊ[２]，…，ｊ[ｎ]）の個数は、((ｋ／ｎ)−Ｌ＋１)nである。
【００４３】
言い換えれば、暗号値ｙは、次式の演算を行うことにより計算される。
【００４４】
ｙ＝ｒ＋（２j[1]・ｓ＋２k/n+j[2]・ｓ＋２2k/n+j[3]・ｓ＋…＋２(n-1)k/n+j[n]・ｓ）
ここで、ｎ個の値ｊ[１]，ｊ[２]，…，ｊ[ｎ]は、すべてのｈに対し、ｊ[ｈ]∈［０，(ｋ／ｎ)−Ｌ）であるような方法で、セキュリティ・アプリケーションにより選択される。
【００４５】
したがって、各２進バージョンｂ[ｈ]は、区間の下限に対して、ｊ[ｈ]ビットだけシフトされる。
【００４６】
図３において、Ｉ[ｈ]＝［(ｈ−１)ｋ／ｎ，ｈｋ／ｎ−１］は、ｎ＝５である第１の変形実施形態の特別な場合における、ｈ番目の区間を示す。ダイヤグラムＢ３は、使用可能なスペースＥＵを有するランダム要素ｒを表し、一方、ダイヤグラムＢ４は、加算された（あるいは減算された）値を表す。したがって、区間Ｉ[ｈ]にそれぞれ配置された、秘密鍵ｓの２進バージョンｂ[ｈ]、すなわち、ｂ[１]，ｂ[２],ｂ[３]，ｂ[４]及びｂ[５]を得る。各２進バージョンｂ[ｈ]は、関連する区間Ｉ[ｈ]の下限に対して、ｊ[ｈ]ビットだけシフトされる。
【００４７】
本発明による方法の第２の変形例によれば、相違点ｊ[１]，ｊ[２]，…，ｊ[ｎ]の個の値は、秘密鍵の２つのシフトに対応して２つの連続したブロックの間の相違を表すよう方法で、セキュリティ・アプリケーションにより選択される。第１の変形の場合のように、ｎ個の値は、区間［０，（ｋ／ｎ）−Ｌ］の中に取ることが可能である。
【００４８】
したがって、暗号の値は、次式の演算を行うことにより計算される。
【００４９】
ｙ＝ｒ＋（２j[1]・ｓ＋２L+j[1]+j[2]・ｓ＋２2L+j[1]+j[2]+j[3]・ｓ＋…＋２(n-1)L+j[1]+j[2]+...+j[n]・ｓ）
図４は、ｎ＝５である場合の本発明による方法の第２の変形例の使用例を示している。ダイヤグラムＢ５は、使用可能なスペースＥＵを有するランダム要素ｒを表し、一方、ダイヤグラムＢ６は、加算された（あるいは減算された）値を表す。かくして、それぞれｊ[１]，ｊ[２]，ｊ[３]，ｊ[４]，ｊ[５]ビットだけ相互にシフトされた、秘密鍵ｓの５つの２進バージョンｂ[１]，ｂ[２]，ｂ[３]，ｂ[４]，ｂ[５]が得られる。
【００５０】
ある場合には、本発明による枠組みから逸脱せずに、チップのハード・ワイヤード・ロジックの複雑さを適度に増加させる犠牲において、チャレンジｃの１に設定された２つの連続したビットを分離する必要のある０に設定されるビットの数の制約条件をわずかに緩和することが可能であろう。例えば、装置の秘密鍵ｓ＝ｆ１は、ｎ＝６を有するＬビットの数である場合を考える。チャレンジｃ＝２i[1]＋２i[2]＋２i[3]＋２i[4]＋２i[5]＋２i[6]の１に設定される２つの連続したビットが、０に設定された少なくともＬ／２ビットのシーケンスによって常に分離されている条件（すなわち、ｉ[１]＋Ｌ／２＜ｉ[２]，…，ｉ[５]＋Ｌ＜ｉ[６]＜ｓ1）を課すならば、このチャレンジを次式に示す２項目に分解することは容易である。ｃ＝ｆ2＋ｆ'2，すなわち、ｆ2＝２i[1]＋２i[3]＋２i[5]、及び、ｆ'2＝２i[2]＋２i[4]＋２i[6]。これらの２つの項目ｆ2，ｆ'2の各々は、本発明による方法における乗算の第２の因子であるために要求される条件を満足する。ｆ2に対しては、ｉ[１]＋Ｌ＜ｉ[３]＜ｉ[５]−Ｌ、またｆ'2に対しては、ｉ[２]＋Ｌ＜ｉ[４]＜ｉ[６]−Ｌ。実行されるべき暗号演算は、ｙ＝ｒ＋ｓ・ｆ2＋ｓ・ｆ'2と書くことが可能であり、２つの乗算ｓ・ｆ2，ｓ・ｆ'2のそれぞれは、本発明によるｓのシフトされたバージョンをアセンブルすることにより実行可能である。したがって、ハード・ワイヤード・ロジックは、２個の加算器（あるいは減算器）回路を有しなければならない。
【００５１】
本発明による他の実施形態において、乗算におけるｓの役割とｃの役割とが入れ替えられる。第１の因子ｆ1は擬似乱数ｃであり、一方、第２の因子ｆ2は秘密鍵ｓである。したがって、暗号の値ｙは、次式の演算を行うことにより、計算される。
【００５２】
ｙ＝ｒ＋ｃ＊（２i[1]＋…＋２i[n]）
ここで、ｒはランダム要素を示し、ｃはセキュリティ・アプリケーションにより選択されたチャレンジを示し、ｎ個の値ｉ[１]，…，ｉ[ｎ]は、装置に関連する秘密鍵ｓの非零のビットの位置、あるいは、この秘密鍵の一部の位置に対応する。言い換えれば、秘密鍵ｓは、２i[1]＋２i[2]＋…＋２i[n]である。ｎ個の値ｉ[１]，…，ｉ[ｎ]は、第１の実施形態で示した制約条件と同じ制約条件を満足しなければならない。
【００５３】
このような暗号値の計算方法は、第１の実施形態において既に示したものと同一である。
【００５４】
しかし、秘密鍵ｓ＝２i[1]＋２i[2]＋…＋２i[n]は、従来の秘密鍵と同様に、すべての認証に対して同一のままである。この第２の実施形態の使用に関して、以下の２つの場合が生ずる可能性がある：
・秘密鍵は、一定のセキュリティ・レベルＬ0を必要とする特定のアプリケーションに専用である。この場合には、少なくとも（Ｌ0−１）ビットだけ離された非零のビットを有する秘密鍵ｓを使用することにより、秘密鍵ｓの構造は実現される；あるいは、
・秘密鍵は、異なるセキュリティ・レベルを必要とするさまざまなアプリケーションで使用される。したがって、最大のセキュリティ・レベルを考慮することが必要である。具体的にいうと、逆の場合には、（Ｌ0−１）ビットだけ離された非零のビットを有する鍵の構造は、サイズＬ1＞Ｌ0のチャレンジを生じる恐れがあり、したがって、チャレンジのシフトは、もはや互いに素とはならないであろう。したがって、少なくともＬ−１ビットだけ離された秘密鍵の非零のビットを有する必要がある。ここで、Ｌは秘密鍵ｓの使用の間に遭遇する可能性がある最高のセキュリティ・レベルを表す。
【００５５】
秘密鍵を蓄積するための第１の解決策は、秘密鍵全体を蓄積することである。しかし、高レベルのセキュリティによる秘密鍵のサイズを仮定すると、物理的な制約条件、特に電子チップのメモリのサイズは、特に経済的な理由によって、実現可能な蓄積サイズを制限する。
【００５６】
第２の解決策は、秘密鍵の非零ビットの位置のみを蓄積することにより、２i[1]＋２i[2]＋…＋２i[h]形式の秘密鍵の構造から利益を得ることにある。この第２の解決策は、さらに少数のビットを蓄積するように、改良できる。２つの手順が可能である。
【００５７】
Ｓ−１がｎ−１により割り切れると仮定して、Ｓをｎ個の非零ビットを有する秘密鍵のサイズであるとする。所望のサイズの秘密を得るために、第１の非零ビットが位置Ｓ−１に配置される。その後に、秘密鍵の他のＳ−１ビットが、(Ｓ−１)／(ｎ−１)ビットのｎ−１個の区間Ｉ[１]，Ｉ[２]，…，Ｉ[ｎ−１]に切断される。
【００５８】
区間Ｉ[ｈ]のそれぞれにおいて、サイズＬのチャレンジを表すビットのブロックに割り当てられたビットのブロックを配置する。したがって、各区間は、割り当てられたビットのブロックの左右に広がる(Ｓ−１)／(ｎ−１)−Ｌ個の未使用のビットを含んでいる。最大で、(Ｓ−１)／(ｎ−１)−Ｌ個のビットを、区間の下限と割り当てられたブロックとの間に配置することができる。
【００５９】
したがって、非零ビットの位置ｉ[ｈ]を蓄積する代わりに、各区間の下限と考慮している区間に配置された前記割り当てられたビットのブロックとの間に配置されたビットｐ[ｈ]の数を蓄積することが可能である。
【００６０】
図５は、５個の非零ビットを有する秘密鍵の典型的な記憶装置を例示する。したがって、ビット数ｐ[１]，ｐ[２]，ｐ[３]，ｐ[４]（この例では零），ｐ[５]が蓄積される。
【００６１】
第２の手順は、チャレンジに関連するブロックに割り当てられた２つの連続したビットのブロックの間のビットの数と、（第１のブロックが割り当てられた位置より前と、最後のブロックが割り当てられた位置より後の）各終端に配置されたビット数とを蓄積することにある。
【００６２】
図６は、秘密鍵が５個の非零ビットを含む場合のこの手順を示している。このように、値ｐ[ｌ]，ｐ[２]，ｐ[３]，ｐ[４]，ｐ[５]，ｐ[６]が、電子チップのメモリ媒体に蓄積される。この例は非制限的なものであり、一部の値ｐ[ｈ]は零であってもよい。
【００６３】
本発明の第２の実施形態においても、ある場合には、本発明による枠組みを逸脱することなく、チップのハード・ワイヤード・ロジックの複雑さを適度に増加させる犠牲において、鍵ｓの１に設定された２つの連続したビットを分離する必要のある０に設定されるビットの数の制約条件をわずかに緩和することが可能である。
【００６４】
本発明による方法は、装置の外部のセキュリティ・アプリケーションの制御下で、これらの２つのエンティティ間のトランザクションにおいて、装置、特にハード・ワイヤード・ロジック電子チップを不正行為から保護するための暗号値の計算に使用可能である。
【００６５】
このような方法は、デジタル署名を構成する暗号値を計算するためにも使用可能である。この場合には、数ｃいわゆるチャレンジは、セキュリティ・アプリケーションによっては提供されないが、署名されるべきメッセージにしたがって、電子チップにより計算される。
【００６６】
図７は、本発明の第１の実施形態を実現する暗号機能を装置の一例を示している。
【００６７】
電子チップのような装置１０は、下記を有する：
・トランザクションに特有のランダム要素ｒを作る擬似乱数発生器１２。ランダム要素ｒは関連するパラメータｘに関係している；
・秘密鍵Ｓを蓄積するための第１のメモリ１６；
・パラメータｘを蓄積するための第２のメモリ１４；
・それ自体が公知の方法で、外部のセキュリティ・アプリケーションとデータを交換するためのインターフェース２４；
・秘密鍵ｓとチャレンジｃの乗算をする回路２２；及び
・乗算の結果と発生器１２からの擬似乱数を算術的に組み合わせる加算器２６（あるいは減算器）。
【００６８】
図７に示される実施形態において、本発明による必要条件によって、乗算回路２２は、第１の因子ｆ1、特に秘密鍵ｓをシフトし、次に得られた結果をビットごとに、順次、加算器２６に転送する。
【００６９】
並行して、擬似乱数発生器１２は、ランダム要素ｒをビットごとに、順次、加算器２６に転送する。
【００７０】
かくして加算器２６は、ランダム要素ｒと乗算回路２２により供給される結果をビットごとに順次加算する。
【００７１】
装置１０に含まれるさまざまな手段は、ハード・ワイヤード・ロジックとして実現される。
【００７２】
このような装置１０は、図８に説明するように、例えばクレジットカードの形式で、媒体２８の上に搭載される。媒体２８は、例えば、セキュリティ・アプリケーション３４を収容する読み取り装置３０の中に挿入することができる。
【００７３】
典型的なアプリケーションにおいて、読み取り装置３０の中に媒体２８を挿入すると、セキュリティ・アプリケーション３４は自動的に始動して、電子チップを呼び出し、電子チップにデータ、特にチャレンジｃを送信する。電子チップは、本発明による方法によって計算された暗号値ｙ（あるいはＶ）を電子チップに供給することにより、電子チップ自身を認証する。図１において説明したように、ｒに関連するパラメータｘは、セキュリティ・アプリケーションに転送される。
【００７４】
値ｘ及びＶ（あるいはｙ）に基づいて、次にセキュリティ・アプリケーションは検証に進む。
【００７５】
従来の方法では、パラメータｘがｘ＝ｇrの形式である場合には、セキュリティ・アプリケーションにより満足される方程式は、暗号値がｙ＝ｒ＋ｓｃの形式のときには、ｇy＝ｘ・ｐcの形式であることがあることができ、暗号値がｙ＝ｒ−ｓｃの形式のときには、ｇy・ｐc＝ｘの形式であることができる。
【００７６】
パラメータｘがハッシュ関数（ｘ＝ｈ(ｇr，Ｄ)）を表す場合には、暗号値がｙ＝ｒ＋ｓｃの形式である場合は、検証方程式は、従来のように、ｈ(ｇy／ｐc，Ｄ)＝ｘである。検証方程式がいかなる除算も含まないように、すなわちｈ（ｇy・ｐc，Ｄ）＝ｘであるように、ｙ＝ｒ−ｓｃの形式の暗号の値が使用されることが望ましい。
【００７７】
認証値の有効性が確認されると、チップの認証は正しく、セキュリティ・アプリケーションは、そのことを電子チップに通知する。セキュリティ・アプリケーションと電子チップの間のトランザクションは、したがって、認証される。
【図面の簡単な説明】
【００７８】
【図１】暗号認証の実施形態を説明するフローチャートである。
【図２】本発明の方法の一実施形態を示す図である。
【図３】本発明の方法の第１の変形実施形態を示す図である。
【図４】本発明の方法の第２の変形実施形態を示す図である。
【図５】本発明に基づく、秘密鍵を蓄積する第１の変形例を示す図である。
【図６】本発明に基づく、秘密鍵を蓄積する第２の変形例を示す図である。
【図７】本発明による第１の実施形態を実現する、暗号機能を有する装置の一例を示す図である。
【図８】本発明に基づく暗号機能を有する装置の使用法を例示する図である。
【図１】
2007526703.tif 000004
【図２】
2007526703.tif 000005
【図３】
2007526703.tif 000006
【図４】
2007526703.tif 000007
【図５】
2007526703.tif 000008
【図６】
2007526703.tif 000009
【図７】
2007526703.tif 000010
【図８】
2007526703.tif 000011
【国際調査報告】
2007526703.tif 000012
2007526703.tif 000013
2007526703.tif 000014
2007526703.tif 000015