(57)【要約】  電子点乗算デバイス（１００）は、暗号プロトコルで使用するための楕円曲線（Ｅ）におけるベース・ポイント（Ｇ）と乗数（ｋ）との間の楕円曲線における点乗算（ｋＧ）を算出するために提供される。デバイスは、複数のジョイント・エンコーディング（Ａｉ）の第１セットから、ブラインド・ベース乗数（Ａ，１３１）と、複数のジョイント・エンコードの第２セットから、複数のブラインド化された補助乗数（ηｉ，１３６）を算出する。デバイスは、楕円曲線におけるベース・ポイントとブラインド化されたベース乗数との点乗算、及びブラインド化された補助乗数と補助点との複数の点乗算の点加算を計算することにより、乗数（ｋ）とベース・ポイント（Ｇ）との点乗算（１４１）（ｋＧ）を求める。ブラインド化されたベース乗数及び補助乗数は、楕円曲線計算の実行中に平文フォーマットで表現されてもよい。＜図１＞
2020510879.tif 000002
【特許請求の範囲】
【請求項１】
暗号プロトコルで使用するための楕円曲線におけるベース・ポイントと乗数との間の楕円曲線における点乗算を算出する電子点乗算デバイスであって、当該デバイスは
−  前記楕円曲線における複数の事前に算出された補助点と前記ベース・ポイントとを保存するストレージと、
−  入力メッセージのベース・ハッシュを受け取るように構成される入力インターフェースと、
−  プロセッサ回路と
を有し、前記プロセッサ回路は
−  複数のジョイント・エンコーディングの第１及び第２セットの形式で前記ベース・ハッシュから複数の被導出ハッシュと前記乗数とを導出するステップであって、前記第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記第２セットも前記複数の被導出ハッシュを含み、前記第２セット内の前記被導出ハッシュの各々は、前記複数の被導出ハッシュのうち少なくとも１つの他のものとジョイント・エンコードされている、ステップと、
−  複数のジョイント・エンコーディングの前記第１セットから、ブラインド化されたベース乗数を算出するステップと、
−  複数のジョイント・エンコーディングの前記第２セットから、複数のブラインド化された補助乗数を算出するステップであって、前記複数のブラインド化された補助乗数は前記複数の補助点に対応している、ステップと、
−  前記楕円曲線における前記ベース・ポイントと前記ブラインド化されたベース乗数との前記点乗算、及びブラインド化された補助乗数と補助点との前記複数の点乗算の点加算を算出することにより、前記乗数と前記ベース・ポイントとの前記点乗算を求めるために、ブラインド化された楕円曲線計算を実行するステップと
を行うように構成されている、点乗算デバイス。
【請求項２】
前記ブラインド化されたベース乗数と前記複数のブラインド化された補助乗数とは、前記ブラインド化された楕円曲線計算の実行中に平文フォーマットで表現されている、請求項１に記載の点乗算デバイス。
【請求項３】
前記プロセッサ回路は第１エンコード計算ネットワークとともに構成され、前記第１エンコード計算ネットワークは、ジョイント・エンコード関数ペアの第１セットを、前記ベース・ハッシュの自身とのジョイント・エンコーディングに適用し、ジョイント・エンコード関数ペアは、前記ベース・ハッシュから前記乗数を導出するように構成されるデ・ランダム関数と、ハッシュ多様化関数の集合のうちのハッシュ多様化関数とのジョイント・エンコーディングである、請求項１又は２に記載の点乗算デバイス。
【請求項４】
前記プロセッサ回路は第２エンコード計算ネットワークとともに構成され、前記第２エンコード計算ネットワークは、ジョイント・エンコード関数ペアの第２セットを、前記ベース・ハッシュの自身とのジョイント・エンコーディングに適用し、ジョイント・エンコード関数ペアは、ハッシュ多様化関数の集合のうちの少なくとも２つのハッシュ多様化関数のジョイント・エンコーディングである、請求項１−３のうち何れか１項に記載の点乗算デバイス。
【請求項５】
前記デ・ランダム関数及び／又は前記ハッシュ多様化関数は、ＳＬＴ構成に従って構成されている、請求項３又は４に記載の点乗算デバイス。
【請求項６】
複数のジョイント・エンコーディングの前記第１セット及び／又は複数のジョイント・エンコーディングの前記第２セットは、バイト毎又はニブル毎のジョイント・エンコーディングである、請求項１−５のうちの何れか１項に記載の点乗算デバイス。
【請求項７】
前記第１エンコード計算ネットワーク及び／又は前記第２エンコード計算ネットワークは、エンコードされたモンゴメリー・ディジット・ベース計算用に構成されている、請求項１−６のうちの何れか１項に記載の点乗算デバイス。
【請求項８】
前記複数の事前に算出された補助点は、事前に算出された乗数と前記ベース・ポイントとの間の点乗算として取得されている、請求項１−７のうちの何れか１項に記載の点乗算デバイス。
【請求項９】
前記ブラインド化されたベース乗数は、複数のジョイント・エンコーディングの前記第１セットにおける多様化されたハッシュと前記乗数との加重和であり、前記複数のブラインド化された補助乗数は、前記加重和における前記多様化されたハッシュを補正するために選択されている、請求項１−８のうちの何れか１項に記載の点乗算デバイス。
【請求項１０】
前記入力メッセージにおけるＥＣＤＳＡシグネチャを計算するように更に構成され、前記プロセッサ回路は、前記乗数と前記ベース・ポイントとの間の前記楕円曲線における前記点乗算から、前記シグネチャの第１コンポーネントを求めるように構成されている、請求項１−９のうちの何れか１項に記載の点乗算デバイス。
【請求項１１】
前記プロセッサ回路は、前記シグネチャの第２コンポーネントを、
複数のジョイント・エンコーディングの更なる第１及び第２セットの形式で前記ベース・ハッシュから、前記乗数と更なる複数の被導出ハッシュとを導出するステップであって、前記更なる第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記更なる第２セットは、それぞれが前記ベース・ハッシュとジョイント・エンコードされる前記複数の被導出ハッシュを含む、ステップと、
複数のジョイント・エンコーディングの前記更なる第１セットから、ブラインド化された乗数を、前記更なる第１セットにおける前記エンコードされた乗数の加重平均に、前記更なる第１セットにおける被導出ハッシュと前記エンコードされた乗数との加重平均を乗算したものとして算出するステップと、
複数のジョイント・エンコーディングの前記更なる第２セットから、ブラインド化されたベース・ハッシュを、前記更なる第２セットにおける前記エンコードされたベース・ハッシュの加重平均として、デ・ブラインディング値を、前記エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として算出するステップと、
前記ブラインド化された乗数の逆数と、デ・ブラインディング値と、前記シグネチャの前記第１コンポーネントにプライベート値を掛けたものに、前記ブラインド化されたベース・ハッシュを合計したものとの積を、前記デバイスのエンコード計算ネットワークで算出するステップと
により算出するように構成されている、請求項１０に記載の点乗算デバイス。
【請求項１２】
暗号プロトコルで使用するための楕円曲線におけるベース・ポイントと乗数との間の楕円曲線における点乗算を算出する電子点乗算方法であって、当該方法は
−  前記楕円曲線における複数の事前に算出された補助点と前記ベース・ポイントとを保存するステップと、
−  入力メッセージのベース・ハッシュを受け取るステップと、
−  複数のジョイント・エンコーディングの第１及び第２セットの形式で前記ベース・ハッシュから複数の被導出ハッシュと前記乗数とを導出するステップであって、前記第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記第２セットも前記複数の被導出ハッシュを含み、前記第２セット内の前記被導出ハッシュの各々は、前記複数の被導出ハッシュのうち少なくとも１つの他のものとジョイント・エンコードされている、ステップと、
−  複数のジョイント・エンコーディングの前記第１セットから、ブラインド化されたベース乗数を算出するステップと、
−  複数のジョイント・エンコーディングの前記第２セットから、複数のブラインド化された補助乗数を算出するステップであって、前記複数のブラインド化された補助乗数は前記複数の補助点に対応している、ステップと、
−  前記楕円曲線における前記ベース・ポイントと前記ブラインド化されたベース乗数との前記点乗算、及びブラインド化された補助乗数と補助点との前記複数の点乗算の点加算を算出することにより、前記乗数と前記ベース・ポイントとの前記点乗算を求めるために、ブラインド化された楕円曲線計算を実行するステップと
を含む点乗算方法。
【請求項１３】
シグネチャの第２コンポーネントを、
複数のジョイント・エンコーディングの更なる第１及び第２セットの形式で前記ベース・ハッシュから、前記乗数と更なる複数の被導出ハッシュとを導出するステップであって、前記更なる第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記更なる第２セットは、それぞれが前記ベース・ハッシュとジョイント・エンコードされる前記複数の被導出ハッシュを含む、ステップと、
複数のジョイント・エンコーディングの前記更なる第１セットから、ブラインド化された乗数を、前記更なる第１セットにおける前記エンコードされた乗数の加重平均に、前記更なる第１セットにおける被導出ハッシュと前記エンコードされた乗数との加重平均を乗算したものとして算出するステップと、
複数のジョイント・エンコーディングの前記更なる第２セットから、ブラインド化されたベース・ハッシュを、前記更なる第２セットにおける前記エンコードされたベース・ハッシュの加重平均として、デ・ブラインディング値を、前記エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として算出するステップと、
前記ブラインド化された乗数の逆数と、デ・ブラインディング値と、前記シグネチャの第１コンポーネントにプライベート値を掛けたものに、前記ブラインド化されたベース・ハッシュを合計したものとの積を、デバイスのエンコード計算ネットワークで算出するステップと
により算出するステップを更に含む請求項１２に記載の点乗算方法。
【請求項１４】
請求項１１に記載の方法をプロセッサ・システムに実行させる命令を表現する一時的又は非一時的なデータを含むコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、点乗算デバイス、点乗算方法、及びコンピュータ読み取り可能な媒体に関する。
【背景技術】
【０００２】
多くのアプリケーションでは、メッセージ及び署名者の真正を証明する目的で、メッセージに署名するためにソフトウェアが使用される。署名者は、秘密鍵及びメッセージ・ダイジェストを使用してメッセージに署名する。メッセージ及びシグネチャを受信する誰もが、送信者の公開鍵を使用してシグネチャを検証することができる。セキュア署名システムは、以下の特性を有するべきである。
【０００３】
１．公開鍵及び他の公開システム・パラメータが与えられても、秘密鍵を発見することは困難であるべきである。
【０００４】
２．ダイジェストは、衝突及びプレ・イメージを発見することが困難な暗号ハッシュであるべきである。これは、攻撃者が送信者になりすますこと、例えば送信者からの古いメッセージのシグネチャを彼自身のメッセージで再利用することによってなりすますことを防止する。
【０００５】
３．秘密鍵は秘密に保たれ、送信者にのみ知られるべきである。
【０００６】
最初の２つの要件は、ブラック・ボックス・セキュリティの要件である。楕円曲線ディジタル署名アルゴリズム（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ：ＥＣＤＳＡ）等の署名スキームは、これらの要件を満たすと考えられる。第３の要件は、秘密鍵が漏洩し得る多くの方法が存在する点で、異なる性質のものである。以下は潜在的な漏洩の非網羅的なリストである。
【０００７】
・システムは、新しいシグネチャごとに自分の秘密鍵を入力することを署名者に要求することができる。鍵ロガー（ａ  ｋｅｙ  ｌｏｇｇｅｒ）がシステムにインストールされている場合、攻撃者は、署名者によってタイプされつつある間に秘密鍵を読み取ることができる。
【０００８】
・秘密鍵はファイル・システムに格納され得る。ファイル・アクセス許可が正しく設定されていたとしても、システムにおける悪意のルート・ユーザは秘密鍵を読み取ることができる。
【０００９】
・秘密鍵は、暗号化されたファイルでファイル・システムに格納されてもよく、ファイルを解読するにはパスフレーズをタイプ入力する必要がある。鍵ロガーをインストールすることを管理してファイルにアクセスする攻撃者は、秘密鍵を取得することが可能である。
【００１０】
・秘密鍵は、署名プログラム内で暗号化された形式で格納され、実行中にのみ解読されてもよい。解読鍵もプログラム内に格納されており、ユーザが正しいパスフレーズを入力した場合にのみ、解読はアクティベートし得る。ここで、オペレーティング・システムにおけるバグを利用することによって、他のユーザのプロセスのメモリを読み取ることができる攻撃者は、解読された秘密鍵をメモリから読み取ることができる。
【００１１】
ＥＣＤＳＡプロトコル等の暗号プロトコルの実装を秘密鍵の漏洩から保護することが望まれている。
【発明の概要】
【００１２】
本発明者等は、ＥＣＤＳＡプロトコルにおける多くの脆弱性は、ＥＣＤＳＡが有する楕円曲線上の点乗算演算（ｔｈｅ  ｐｏｉｎｔ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）によって引き起こされることを悟った。更に、楕円曲線計算は、多くの他の暗号プロトコルの要素であり、ホワイト・ボックス・モデルにおける攻撃に対する耐性を増大させた点乗算の実装を有することが更に望ましい。
【００１３】
電子点乗算デバイスは、暗号プロトコルで使用するための楕円曲線におけるベース・ポイント（ａ  ｂａｓｅ  ｐｏｉｎｔ）と乗数（ａ  ｍｕｌｔｉｐｌｉｅｒ）との間の楕円曲線における点乗算を算出するために提供される。デバイスは、
−  楕円曲線における複数の事前に算出された補助点とベース・ポイントとを保存するストレージと、
−  入力メッセージのベース・ハッシュを受け取るように構成される入力インターフェースと、
−  プロセッサ回路とを有し、プロセッサ回路は
−  複数のジョイント・エンコーディングの第１及び第２セットの形式でベース・ハッシュから複数の被導出ハッシュと乗数とを導出するステップであって、第１セットは、それぞれが乗数とジョイント・エンコードされる複数の被導出ハッシュを含み、第２セットも被導出ハッシュを含み、第２セット内の被導出ハッシュの各々は、複数の被導出ハッシュのうち少なくとも１つの他のものとジョイント・エンコードされている、ステップと、
−  複数のジョイント・エンコーディングの第１セットから、ブラインド化されたベース乗数（ａ  ｂｌｉｎｄｅｄ  ｂａｓｅｄ  ｍｕｌｔｉｐｌｉｅｒ）を算出するステップと、
−  複数のジョイント・エンコーディングの第２セットから、複数のブラインド化された補助乗数を算出するステップであって、複数のブラインド補助乗数は複数の補助点に対応している、ステップと、
−  楕円曲線におけるベース・ポイントとブラインド化されたベース乗数との点乗算、及びブラインド補助乗数と補助点との多点乗算を計算することにより、乗数とベース・ポイントとの点乗算を求めるために、ブラインド楕円曲線計算を実行するステップと
を実行するように構成されている。
【００１４】
興味深いことに、必要な点乗算ｋＧは、ベース・ポイントとだけでなく複数の追加の補助点との多点乗算に変換される。システムを攻撃するには、攻撃者が乗算ｋＧから乗数ｋを発見するか、又は補助点とベース・ポイントとの間の関係を決定することを攻撃者に要求する。これらは両方とも、実際上困難であると思われる楕円曲線上の離散対数問題を解くことを必要とし、例えば、暗号プロトコルによって保護される資産よりも多くのリソースを必要とすることは言及に値する。代替的に、攻撃者は、フォールト攻撃を使用してシステムを攻撃しようと試みるかもしれないが、これらはエンコーディングのシステムを使用して対処され、詳細については以下で更に説明される。
【００１５】
興味深いことに、ブラインド化されたベース乗数及び複数のブラインド補助乗数は、ブラインド楕円曲線計算の実行中にプレーン・フォーマットで表現され得る。これは、楕円曲線計算のために、ホワイト・ボックス実装の形態で保護が必要とされないことを意味する。本発明者等は、楕円曲線アルゴリズムはサイド・チャネル攻撃に対して不都合に影響を受けやすいので、楕円曲線計算を保護するホワイト・ボックスは困難であることを見出した。複数の補助点にわたって楕円曲線乗算を拡張することによって、楕円曲線暗号におけるこの弱点は対処され；ホワイト・ボックス・モデルにおいて増大した耐性を有する実装をもたらす。
【００１６】
興味深いことに、実施形態は、所望の第１計算結果が第２計算結果から導出され得るように、ホワイト・ボックス技術、例えばルック・アップ・テーブルを介してエンコードされたデータに関して動作する技術と、ブラインディング、例えば、第１プレーン計算を別の第２プレーン計算に置き換える技術とを組み合わせる。
【００１７】
点乗算デバイスは電子デバイスであり、例えばモバイル・フォン等のモバイル電子デバイスであってもよい。点乗算デバイスはまた、例えばセット・トップ・ボックス、スマート・カード、コンピュータ等であってもよい。
【００１８】
ここで説明される点乗算デバイス及び方法は、広範囲の実用的なアプリケーションに適用され得る。このような実用的なアプリケーションは、楕円曲線計算、特にＥＣＤＳＡプロトコルを含む暗号プロトコルを含む。ＥＣＤＳＡは、例えば認証や、データの完全性などを必要とするアプリケーションにおいて、データに署名するために使用され得る。そのようなアプリケーションは、メッセージング・アプリケーション、メール・プログラム、金融アプリケーション等を含むことができる。
【００１９】
本発明による方法は、コンピュータで実施される方法で、又は専用ハードウェアで、又はそれら両方の組み合せでコンピュータ上で実施され得る。本発明による方法の実行可能なコードは、コンピュータ・プログラム製品に格納されてもよい。コンピュータ・プログラム製品の具体例は、メモリ・デバイス、光ストレージ・デバイス、集積回路、サーバー、オンライン・ソフトウェア等を含む。好ましくは、コンピュータ・プログラム製品は、プログラム製品がコンピュータで実行される場合に本発明による方法を実行するための、コンピュータ読み取り可能な媒体に格納される非一時的なプログラム・コードを含む。
【００２０】
好ましい実施形態では、コンピュータ・プログラムは、コンピュータ・プログラムがコンピュータで実行される場合に、本発明による方法の全てのステップを実行するように構成されるコンピュータ・プログラム・コードを含む。好ましくは、コンピュータ・プログラムは、コンピュータ読み取り可能な媒体で具現化される。
【００２１】
本発明の別の態様は、コンピュータ・プログラムをダウンロードに利用可能にする方法を提供する。この態様は、コンピュータ・プログラムが、例えば、アップル社のアップル・ストア、グーグル社のプレイ・ストア、又はマイクロソフト社のウィンドウズ（登録商標）・ストアにアップロードされる場合、及びコンピュータ・プログラムがそのようなストアからダウンロードするために利用可能である場合に使用される。
【図面の簡単な説明】
【００２２】
本発明の更なる詳細、態様、及び実施形態は、単なる例として、図面に関連して説明される。図中の要素は、簡略化及び明確化のために示されており、必ずしも縮尺通りに描かれてはいない。図面において、既に説明された要素に対応する要素は、同じ参照番号を有し得る。図面において、
【図１】図１は、点乗算デバイスの実施形態の一例を概略的に示す。
【図２】図２は、複数のジョイント・エンコーディングの第１セットを導出する実施形態の一例を概略的に示す。
【図３】図３は、複数のジョイント・エンコーディングの第２セットを導出する実施形態の一例を概略的に示す。
【図４】図４は、ＥＣＤＳＡデバイスの実施形態の一例を概略的に示す。
【図５】図５は、点乗算方法の実施形態の一例を概略的に示す。
【図６】図６は、ＥＣＤＳＡ署名方法の実施形態の一例を概略的に示す。
【図７ａ】図７ａは、コンピュータ・プログラムを含む書き込み可能な部分を有する実施形態によるコンピュータ読み取り可能な媒体を概略的に示す。
【図７ｂ】図７ｂは、実施形態によるプロセッサ・システムの表現を概略的に示す。  図１及び図４における参照番号のリスト  １００  点乗算デバイス  １１０  ストレージ  １２０  入力インターフェース  １２２  ベース・ハッシュ  １３０  第１エンコード計算ネットワーク  １３１  ブラインド・ベース乗数  １３５  第２エンコード計算ネットワーク  １３６  複数のブラインド補助乗数  １４０  楕円曲線計算ユニット  １４１  点乗算結果  １５０  第３エンコード計算ネットワーク  １５１  ブラインド・ベース乗数  １５５  第４エンコード計算ネットワーク  １５６  ブラインド・ベース・ハッシュ  １５７  非ブラインド値  １６０  第６エンコード計算ネットワーク  １６１  ＥＣＤＳＡ署名の第２コンポーネント  ４００  ＥＣＤＳＡデバイス
【発明を実施するための形態】
【００２３】
本発明は、多くの異なる形態の実施形態を可能とするが、１つ又は複数の特定の実施形態が図示されて詳細に説明される。本開示は、本発明の例示的な原理と考えられるべきであり、図示されて説明される特定の実施形態に本発明を限定するようには意図されていないことに理解されたい。以下では、理解のために、実施形態の要素が説明に記載されている。しかしながら、それぞれの要素は、それらによって実行されるように説明される機能を実行するように構成されていることは明らかであろう。
【００２４】
更に、本発明は実施形態に限定されず、本発明は、ここに記載された、又は相互に異なる従属請求項に記載された全部及び各々の新規な特徴又は特徴の組み合せに見出される。
【００２５】
本発明者等は、計算がサイド・チャネル攻撃に対して著しく脆弱であるので、楕円曲線計算を保護することは困難であることを見出した。発明者等は、サイド・チャネル攻撃は、それらが本来はグレー・ボックス・モデルを狙っていたとしても、ホワイト・ボックス・モデルにも首尾よくしばしば適用され得ることを見出した。エンコードされたデータに作用する楕円曲線計算の直接的なホワイト・ボックス実装が達成されたとしても、既存の又は将来のサイド・チャネル攻撃はそれを打ち破る可能性が依然として高い。グレー・ボックス・モデルでは、攻撃者は、ある部分的なサイド・チャネル情報、例えば、デバイスの電力使用にアクセスすることができる。ホワイト・ボックス・モデルでは、攻撃者は内部状態に完全にアクセスすることができる。
【００２６】
楕円曲線計算は、例えば実行されるＥＣＣ点乗算を、ホワイト・ボックス・モデルにおける攻撃者などのシステムのユーザから隠す要望が存在し得る様々な暗号アルゴリズムで使用される。楕円曲線計算を使用する暗号アルゴリズムの例は、楕円曲線ディフィ・ヘルマン（ＥＣＤＨ）キー・アグリーメント、楕円曲線統合暗号スキーム（ＥＣＩＥＳ）、楕円曲線ディジタル署名アルゴリズム（ＥＣＤＳＡ）、エドワード曲線ディジタル署名アルゴリズム（ＥｄＤＳＡ）、ＥＣＭＱＶキー・アグリーメント・スキーム、及びＥＣＱＶインプリシット証明スキームを含む。
【００２７】
以下の実施形態は、楕円曲線ディジタル署名アルゴリズム（ＥＣＤＳＡ）に焦点を当てている。ＥＣＤＳＡは重要な署名アルゴリズムであり、そのために、ホワイト・ボックス・モデルにおいて増加した耐性を有する実装を得ること、好ましくは楕円曲線シグネチャ・アルゴリズムの楕円曲線計算を保護するホワイト・ボックスを事実上なしに得ることが望ましい。なお、以下に開示される点乗算技術はまた、他のＥＣＣアルゴリズムにおいても使用され得る。
【００２８】
本発明者等は、単一の曲線ポイントに対する楕円曲線計算を複数の曲線ポイントにわたって分割することによって、エンコードされたデータに関するＥＣＣ演算を実行する方法を見出した。後者の計算は、平文でさえ実行されてもよいが、多点演算へのつながりは、例えばエンコードされたデータに対して動作するホワイト・ボックス・フォーマットで実行されてもよい。興味深いことに、楕円曲線乗算のセキュリティは、困難な問題であると推定される楕円曲線の離散対数問題に関連する。
【００２９】
以下、ＥＣＤＳＡ署名システムが、ＥＣＤＳＡに対する多数の既知の攻撃及び可能な対策と共に説明される。対策を講じなければ、これらの攻撃は、攻撃者が秘密鍵を取り出すことを可能にし得る。次に、少数のより進んだ攻撃が開示され、より進んだ攻撃は、より進んでいない攻撃に対して対策が使用されている場合でさえ機能する。これらのより進んだ攻撃に対しても保護するＥＣＤＳＡ実装を見出すことが望ましい。
【００３０】
以下、ＥＣＤＳＡの簡単な説明を行う。ＥＣＤＳＡの実施形態では、以下の前提を有する。
【００３１】
・ｐ個の要素を有する有限体における楕円曲線Ｅ。ここで、Ｏ∈Ｅは単位元を示す。
【００３２】
・素数位数ｑのＥ⊆Ｅｐ×Ｆｐ上の点Ｇ。即ち、［ｑ］Ｇ＝Ｏ。ここで［ｑ］ＧはＧ自身をｑ回加算することを意味する。
【００３３】
・関数μ：Ｆｐ→Ｚｑ
・ハッシュ関数Ｈ：｛０，１｝＊→Ｚｑ
・署名者の秘密鍵ｘ∈ＺＸｑ、及び公開鍵Ｐ＝［ｘ］Ｇ∈Ｅ
ＥＣＤＳＡアルゴリズムのセキュリティは、Ｐからｘを得ることが困難であるという事実に依存している。これはＥＣＤＳＡ仮定として知られている。メッセージＭに署名するため、以下のステップを実行してもよい：
・ｈ＝Ｈ（Ｍ）を計算する。ここで、Ｈは暗号ハッシュ関数（例えば、ＳＨＡ２５６）である。
【００３４】
・乱数ｋ∈ＺＸｑを選択し、以下を計算する。
【００３５】
・［ｋ］Ｇ＝（（［ｋ］Ｇ）１，（［ｋ］Ｇ）２）及びｒ＝μ（（［ｋ］Ｇ）１））
・ｓ＝（ｈ＋ｒｘ）ｋ−１∈Ｚｑ
・（ｒ＝０又はｓ＝０ならば、新たなｋとともに反復する）
・シグネチャは（ｒ，ｓ）である。
【００３６】
関数μは、例えば楕円曲線の点座標などの楕円曲線ポイントを整数にマッピングする。例えばμは楕円曲線ポイントのｘ座標に対するｍｏｄ  ｑ演算であってもよい。様々な実施形態全体を通でて、楕円曲線ポイントは、圧縮された楕円曲線ポイントであってもよい。圧縮された楕円曲線ポイントでは、ｙ座標の符号のみ維持される、又はｙ座標が全く維持されないことがある。
【００３７】
シグネチャ検証を検証するために、Ｍ及びシグネチャ（ｒ，ｓ）を受け取り、ｕ＝ｓ−１Ｈ（Ｍ）ｍｏｄ  ｑ，ｖ＝ｓ−１ｒ  ｍｏｄ  ｑ，及びＥにおける点Ｃ＝（Ｃ１，Ｃ２）＝［ｕ］Ｇ＋［ｖ］Ｐを計算することができる。シグネチャは、μ（Ｃ１）＝ｒである場合でその場合に限って有効である。秘密データは取り扱われないので、シグネチャ検証演算はセンシティブな演算ではない点に留意されたい。
【００３８】
スクレーピング攻撃。ＥＣＤＳＡを攻撃するために、攻撃は、メモリからｘ又はｙをかき集めようとするかもしれない。攻撃者が、ハッシュｈ＝Ｈ（Ｍ）に関するＭのシグネチャ（ｒ，ｓ）の計算に使用されたｋの値を知っている場合、攻撃者は、ｘ＝ｒ−１（ｋｓ−ｈ）ｍｏｄ  ｑとして秘密鍵を計算することができる。従って、プログラム・メモリからｋの値を単純にかき集める攻撃に対処することは重要である。これは、ｋがプログラム・メモリにおいて決して明確には現れないことを保証することにより行われることが可能である。これはｘの値にも当てはまる。
【００３９】
例えば、秘密値ｘがメモリから読み出される攻撃から保護するために、ある者はｘをエンコードし、エンコードされたｘでのみ計算しようとするかもしれない。同様に、秘密値ｋがメモリから読み出される攻撃から保護するために、ある者は、エンコードされた形式で直接的にｋを生成し、エンコードされたｋでのみ計算しようとするかもしれない。
【００４０】
別の問題は、２つのシグネチャが同じｋを使用して生成される場合に、秘密鍵ｘが直接的に続くことである。
【００４１】
【数１】
2020510879.tif 000003
攻撃者は、乱数発生器の出力を、以前の出力又は固定値に置き換えることによって、これを起こすことができる。これはまたｋがエンコードされる場合にも機能する：エンコードされたｋの値は、以前の実行からのエンコードされたｋの値、又は固定値によって置換される。攻撃者がｋの値を知らないことは重要ではない。
【００４２】
従って、数ｋが攻撃者によって予測可能であってはならないことが重要である。例えば、乱数発生器は、一般に、ｋを生成するために使用される。不都合なことに、ホワイト・ボックス攻撃の状況で乱数発生器を使用することは困難である。攻撃者は、乱数発生器を、固定値を返すルーチンで置換しようとするかもしれない。たとえｋがエンコードされていたとしても、攻撃者は、以前の実行で得られたｋの値を再生しようと試みることができる。
【００４３】
例えば、乱数生成器がシードを生成するために時刻関数を呼び出すと仮定すると、攻撃者は、返された値を固定値で置換し、それによって効果的にｋを一定にすることができる。この問題に対する解決策は、入力メッセージ及び選択的に秘密鍵ｘから、適切なｋを計算するために決定論的アルゴリズムを使用することである。実施形態では、擬似乱数発生器のパラメータは、コンパイル時にランダムに選択され、その結果、これらのパラメータは実行ごとに異なる。乱数発生器を置き換えるために、入力メッセージ又はそのハッシュをランダム乗数（ａ  ｒａｎｄｏｍ  ｍｕｌｔｉｐｌｉｅｒ）にマッピングする関数は、デ・ランダム関数（ａ  ｄｅ−ｒａｎｄｏｍｉｚａｔｉｏｎ  ｆｕｎｃｔｉｏｎ）と呼ばれる。デ・ランダム関数を使用することにより、実装が入力の決定論的関数を生成するシグネチャを作成する。
【００４４】
ｋが特に脆弱なパラメータであるもう１つの理由は、
・  ｒ＝μ（（ｋＧ）１）という計算において、
・  ｓ＝（ｈ＋ｒｘ）ｋ−１という計算において、
２回使用された後に忘却されなければならないことである。
【００４５】
以下、多くのより進化した攻撃が議論される。第１攻撃では、楕円曲線における［ｋ］Ｇの計算が狙われる。楕円曲線上の点Ｇの倍数［ｋ］Ｇの計算は、通常、モンゴメリ・アルゴリズムにより行われ：モンゴメリ・アルゴリズムの各ステップは、ｋの１ビット又はせいぜい数ビットを使用する。これらのビットを能動的に修正し、結果として得られる出力がどのように変化するかを観察することによって、たとえこれらのビットがエンコードされている場合であっても、ｋの全てのビットの実際の値が容易に決定され得る。
【００４６】
線形な又はブロックごとの非線形エンコーディングと組み合わせた決定論的なｋは、フォールト攻撃を使用して、以下のように攻撃され得る。攻撃者は同じメッセージを４回供給する。
【００４７】
・ゼロ次ラン：フォールトは注入されず、シグネチャ（ｒ０，ｓ０）を生成する。
【００４８】
・第１ラン：エンコードされたｋ０（の１ブロック）に幾らかのフォールトを注入し、エンコードされたｋ１＝ｋ０＋δ１を与え、シグネチャ（ｒ１，ｓ１）を生成する。
【００４９】
・第２ラン：エンコードされたｋに別のフォールトを（例えば、別のブロックに）注入し、エンコードされたｋ２＝ｋ０＋δ２を与え、シグネチャ（ｒ２，ｓ２）を生成する。
【００５０】
・第３ラン：エンコードされたｋにフォールトの合計を注入し、シグネチャ（ｒ２，ｓ２）を生成する。
【００５１】
エンコーディングが線形であるか、又は２つのブロックが干渉しない場合、第３ランにおけるｋに関する影響は、第１及び第２ランにおける影響の合計である：δ３＝δ１＋δ２。
【００５２】
そして秘密鍵ｘは線形代数によって見出されることが可能である：
【００５３】
【数２】
2020510879.tif 000004
ブロック・エンコーディングは、例えば乗数ｋの基礎となる値のビット・サイズが、収容され得る最大エンコーディングのビット・サイズよりもはるかに大きくなり得るので、ホワイト・ボックス・エンコーディングで一般に使用される。これらの攻撃は、ＥＣＤＳＡ計算で使用される乗数ｋを保護するニーズ、特にＥＣＤＳＡ乗算中に乗数ｋを保護するニーズが存在することを示している。
【００５４】
図１は、点乗算デバイス１００の実施形態の一例を概略的に示す。点乗算デバイス１００は、乗数ｋと楕円曲線Ｅ上のベース・ポイントＧとの楕円曲線Ｅにおける点乗算ｋＧを計算するように構成される。楕円曲線上の上記の点乗算は、複数の暗号プロトコルに必要とされる基礎である。特に、点乗算デバイス１００は、ＥＣＤＳＡシグネチャを計算するために使用され得る。そのような例は、図４に関して詳細に説明される。
【００５５】
点乗算デバイス１００はストレージ１１０を含む。ストレージ１１０は、点乗算に必要なパラメータ、例えば点乗算が使用される暗号プロトコルから導出されるパラメータを格納する。特に、ストレージ１００は、楕円曲線におけるベース・ポイント（又は基点）、及び複数の事前に計算された補助点Ｇｉもまた格納する。実施形態において、点乗算ｋＧは、ポイントＧ及びＧｉに対する複数の点乗算に、これらのポイントで使用される乗数からｋを復元することは困難である仕方で変換される。これは、楕円曲線計算の実装が、平文においてさえ、点乗算デバイス１００の他の部分よりも保護されないことを許容する。特に、一実施形態では、楕円曲線計算は、ホワイト・ボックス方式では実行されず、例えばエンコードされたデータに関して作用しない。前述の曲線点に加えて、ストレージ１１０は、追加のデータを含むことができ、そのいくつかの例は本明細書で与えられる。例えば、点乗算デバイス１００が、エンコードされたデータに関して動作するテーブル・ネットワークを使用して、例えばホワイト・ボックス実装部分のようなエンコードされた部分を実装する場合、テーブル・ネットワーク内のルック・アップ・テーブルが、ストレージ１１０に格納されてもよい。
【００５６】
点乗算デバイス１００は、入力メッセージＭのベース・ハッシュ１２２を受け取るように構成された入力インターフェース１２０を更に有する。例えば、入力インターフェース１２０は、あるアプリケーションによって使用されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）であってもよい。例えば、点乗算デバイス１００は、より大きなアプリケーション、例えばＥＣＤＳＡアプリケーションのサブルーチンとして実装されてもよい。点乗算デバイス１００はまた、必要とされる場合には、例えばＥＣＤＳＡアプリケーションによって呼び出されるライブラリ等の協働するアプリケーションとして実装されてもよい。
【００５７】
一実施形態では、点乗算デバイス１００は、入力メッセージＭを受信し、ハッシュｈを計算するように構成されたハッシュ・ユニット１２２を有する。ハッシュの出力及び以下に説明される点乗算への入力は、入力インターフェース１２０によって形成され得る。ベース・ハッシュ１２２の計算は、ベース・ハッシュが機密ではないので、平文で実行されることができる。ハッシュ関数ユニットは、エンコードされる方法でハッシュを計算するように構成されてもよい。但し、後者は必須ではない。入力インターフェース１２０は、入力メッセージを平文形式で受信することができる。
【００５８】
一実施形態では、入力インターフェースは、ベース・ハッシュ１２２又は入力メッセージＭを取得するために使用される通信インターフェースを有するか、又はそれと協働することができる。例えば、通信インターフェースは、例えば有線接続などの有線インターフェースであってもよい。例えば、通信インターフェースは、接続パッド又は接続ポートを含むことができる。通信インターフェースはまた、ディジタル有線ネットワーク接続、又は無線ネットワーク接続、又はハイブリッド等であってもよい。例えば、通信インターフェースは、アンテナを含むことができる。
【００５９】
点乗算デバイス１００は、楕円曲線点乗算のために配置されたプロセッサ回路を有する。楕円曲線点乗算の実行は、具体例が以下に示されるプロセッサ回路で実施される。図１は、プロセッサ回路の機能ユニットであり得る機能ユニットを示す。例えば、図１は、プロセッサ回路の可能な機能構成の青写真として使用されてもよい。プロセッサ回路は、図１におけるユニットと別個には示されていない。例えば、図１に示される機能ユニットは、例えば、図１に示される１つ以上の特定の機能ユニットを実装するように協働する複数の半導体ゲート等のハードウェアにおいて、全体的又は部分的に実装されてもよい。例えば、図１に示される機能ユニットは、点乗算デバイスに記憶され、点乗算デバイスのマイクロプロセッサによって実行可能なコンピュータ命令において、全体的又は部分的に実装されてもよい。ハイブリッド実施形態では、機能ユニットは、例えば暗号コプロセッサ等のコプロセッサとして部分的にハードウェアで、及び点乗算デバイスに格納され実行されるソフトウェアで部分的に実装される。電子点乗算デバイス１００は、ＥＣＤＳＡ署名オペレーション等の暗号プロトコルのために構成され得る。
【００６０】
点乗算デバイス１００は、複数のジョイント・エンコーディングの第１セットの形式で、ベース・ハッシュｈ１２２から導出される複数のハッシュｈｉ及び乗数ｋを導出するように構成される。第１セットは、各々が乗数ｋと一緒にエンコードされる複数の被導出ハッシュを含む。数式では次のとおりである：Ａｉ＝Ｅｎｃ（ｋ，ｈｉ），ｉ＝０．．．２ｎ−１。例えば点乗算デバイス１００、例えばプロセッサ回路は、複数のジョイント・エンコーディングの第１セットを計算するように構成された第１エンコード計算ネットワーク１３０とともに構成されてもよい。
【００６１】
図２は、複数のジョイント・エンコーディングの第１セットを導出する実施形態の一例を概略的に示す。例えば、図２のシステムは、第１エンコード・ネットワーク１３０によって使用されてもよい。図２に示されているのは、例えばベース・ハッシュ１２２等のベース・ハッシュ２０１とそれ自体とのジョイント・エンコーディングである。図２及び図３では、２０１におけるように、それぞれ積み上げて配置された２つのブロックが、ジョイント・エンコーディングを示すために使用されている。
【００６２】
エンコードされたデータを参照する場合、秘密エンコーディングが使用されることが理解される。例えば、コンパイル時に、様々なデータ項目のエンコーディングが選択される。例えば、そのようなエンコーディングは、全単射関数であってもよいし、ランダムに選択されてもよい。データが平文又は平文フォーマットである場合、データは公開エンコーディングで表現される。例えば、ＡＳＣＩＩ表現は公開されているので、例えばＡＳＣＩＩのプログラムで表現される文字は平文である。しかしながら、文字が秘密又は秘密の全単射によってマッピングされていた場合、８ビットを８ビットにマッピングすると、文字はエンコードされる。
【００６３】
「Ｅｎｃ」という標記はプライベート・エンコーディングによるエンコーディングを示す。このようなエンコーディングは、コンパイル時にランダムに選択され得る。例えば、エンコーディングは、あるサイズのビット・シーケンスを同じサイズのビット・シーケンスにマッピングする全単射であってもよい。そのようなエンコードされたデータを受信し、運用し、又は生成するエンコードされたネットワークが任意の特定のエンコードに適合され得るので、各々のエンコーディングは異なるエンコーディングであってもよいことが理解される。複数の異なるエンコーディングを使用することは、エンコーディングの攻撃をより困難にする。上付き文字も下付き文字もなしに同じ表記法「Ｅｎｃ」が使用されているが、それらの各々は、異なるエンコーディングであってもよく、またそれが好ましいことが理解される。
【００６４】
例えば、それ自体２０１と一緒にエンコードされるベース・ハッシュ１２２は、Ｅｎｃ（ｈ，ｈ）として表記されてもよい。ジョイント・エンコーディングは、入力がブロックに区分けされ、より小さなジョイント・エンコーディングが第１入力のブロック及び第２入力のブロックに適用される、ブロックごとのジョイント・エンコーディングであってもよい。エンコーディングは、バイト単位又はニブル単位のジョイント・エンコーディングであるとすることができる。例えば、第１データ・アイテムａ及び第２データ・アイテムｂに作用するジョイント・エンコーディングＥｎｃは、Ｅｎｃｉ等のより小さなエンコーディングのシーケンスを含むことができ、例えば、第１及び第２データ・アイテムは、より小さなデータ・アイテムａｉ及びｂｉの第１及び第２シーケンスであり；２つのシーケンスは、好ましくは、同じ長さを有する。より小さなエンコーディングＥｎｃｉは、例えばＥｎｃｉ（ａｉ，ｂｉ）のように、ａｉ及びｂｉを一緒にエンコードすることができる。エンコーディングＥｎｃｉは全単射であってもよい。例えば、Ｅｎｃｉはルック・アップ・テーブルとして実装されてもよい。例えば、より小さなデータ・アイテムａｉ及びｂｉは、ニブル又はバイトであってもよく、Ｅｎｃｉは８ビットから８ビットへの、又は１６ビットから１６ビットへの全単射であってもよい。これらは便利な数であるが、他のブロック・サイズ、例えば３又は５ビットでのエンコーディングも可能である。より小さなエンコーディングＥｎｃｉは、例えばコンパイル時にランダムに選択されてもよい。
【００６５】
例えば、一実施形態では、第１エンコーディング・ネットワーク１３０は、プレーンで、例えばパブリック・エンコーディングでベース・ハッシュ１２２を受信し、ベース・ハッシュ１２２を先ずジョイント・エンコーディングする。例えば、ベース・ハッシュは、ニブルのシーケンスとして受信されてもよく、その各々は、より小さなエンコーディングを介してそれ自体と一緒にエンコードされる。
【００６６】
図２は一緒にジョイント・エンコードされた関数ペアの第１セット（ｆ，ｇｉ）を更に示す。エンコードされた関数ペアは、エンコードされた計算ネットワーク又はその一部であり、エンコードされた関数ペアの第１コンポーネント（例えばこの例では、ｆ）は、ジョイント・エンコーディングの第１コンポーネント（この例では、ｈ）に作用し、エンコードされた関数ペアの第２コンポーネント（例えばこの例では、ｇｉ）は、ジョイント・エンコーディングの第２コンポーネント（この特定の例ではまた、ｈ）に作用する。
【００６７】
原則として、エンコードされた計算ネットワークとして実装され得る関数に制限はなく；原則として、任意の関数がこのように実装され得る。しかしながら、本発明者等は、ブロック暗号設計とは区別される所謂ＳＬＴ（Ｓｕｂｓｔｉｔｕｔｉｏｎ−Ｌｉｎｅａｒ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ）タイプの暗号化が、デ・ランダムｆ及び多様化関数ｇｉ（ｄｅ−ｒａｎｄｏｍｉｚａｔｉｏｎ  ｆ  ａｎｄ  ｄｉｖｅｒｓｉｆｉｃａｔｉｏｎ  ｆｕｎｃｔｉｏｎｓ  ｇｉ）として使用するために特に効率的に適用され得ることを見出した。ＳＬＴタイプのブロック暗号では、複数の置換層、線形変換層、及びキー加算層が、キー依存暗号化出力を生成するために入力に交互に適用される。そのような構成を点乗算デバイス１００に適用するために、ある者はキー加算層を削除し、又は例えばキー加算層を固定された（例えばランダムな）キーに修正するかもしれない；固定されたキーを有するキー加算層は、その前又は後に来る線形層に結合され得る。置換層は、置換ボックスのシーケンスとして効率的に実装されてもよく、例えばルック・アップ・テーブルとして実装されてもよい。エンコードされた入力に対する線形演算の効率的な実装もまた知られている。このように適合され得るＳＬＴブロック暗号の一例は、ＡＥＳである。
【００６８】
エンコード・ネットワーク１３０は、ホワイト・ボックス暗号化を使用して実装されてもよい。ホワイト・ボックス実装は、ホワイト・ボックス・コンテキストにおける攻撃に耐えるように設計された暗号化実装である。ホワイト・ボックス・コンテキストでは、攻撃者は、ソフトウェアの実装及び実行に対する完全な可視性を有する。たとえそうであっても、ホワイト・ボックス実装は、プログラムからの秘密鍵の抽出を防止することを目的とする。
【００６９】
ホワイト・ボックス暗号化では、例えば、データに全単射関数を場合によっては機知（ａ  ｓａｌｔ）とともに適用することによって、エンコードされたデータに対してオペレーションが実行される。次いで、コンピュータ・プログラムは、エンコードされたデータに作用するテーブル・ネットワークとして表される。そのような実装の具体例は次の文献に見出され得る：“Ｗｈｉｔｅ−Ｂｏｘ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  ａｎ  ＡＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ”，ｂｙ  Ｓ．  Ｃｈｏｗ  ｅｔ  ａｌ．（本願のリファレンスに組み込まれる）。“Ａ  Ｗｈｉｔｅ−Ｂｏｘ  ＤＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｆｏｒ  ＤＲＭ  Ａｐｐｌｉｃａｔｉｏｎｓ”ｂｙ  Ｓ．  Ｃｈｏｗ，ｅｔ  ａｌ．という論文では、データ暗号化標準（ＤＥＳ）のホワイト・ボックス実装が提示されている（本願のリファレンスに組み込まれる）。これらの論文は、ブロック暗号を算出するためにテーブル・ネットワークが使用され得るように、いくつかの中間的な方法を介して、通常の暗号がホワイト・ボックス形態の実装に如何にして変換され得るかを示している。特に、これらの論文は、ＳＬＴ暗号をどのように実装するか、及びそれらのコンポーネント（置換層及び線形層など）を示す。テーブル・ネットワークは、装置のストレージに記憶される、複数のエンコードされた協働するルック・アップ・テーブルとして実装され得る。テーブル・ネットワークは、１つ以上の入力を受信し、１つ以上の出力を生成する。テーブル・ネットワークでは、複数のルック・アップ・テーブルが使用されてもよく、例えばテーブル・ストレージに格納されてもよい。テーブルは、他のテーブルの入力及び／又は出力から直接的に入力を取得する。テーブルは、１つの入力、２つの入力、又は２つより多い入力を取ることができる。
【００７０】
図２は、図示の複数のジョイント・エンコードされた関数ペアが、ジョイント・エンコードされた関数ペア２１１−２１３であり、乗数及び多様化させられたハッシュ（ａ  ｄｉｖｅｒｓｉｆｉｅｄ  ｈａｓｈ）のジョイント・エンコーディングを生成するために、ジョイント・エンコードされたベース・ハッシュ２０１に適用されることを示す。ジョイント・エンコードされた関数ペアの各ペアは、同じデ・ランダム関数ｆを含み、その結果、生成されたジョイント・エンコーディングの各々が乗数ｋを含むようになることに留意されたい。図２は、それぞれが同じ乗数を含むジョイント・エンコーディング２２１−２２３を示す。例えばジョイント・エンコーディング２２１−２２３等のジョイント・エンコーディングにおいて使用されるエンコーディングは、異なってもよいことに留意されたい。更に、使用されるエンコーディングは、攻撃者に知られておらず、例えば、設計者によって秘密に選択されてもよく、コンパイル時にランダムに選択されることさえ可能である。ジョイント・エンコーディングの数は２ｎに等しく、ｎはセキュリティ・パラメータであり、好ましくはｎは少なくとも２である。
【００７１】
デ・ランダム関数ｆは乱数発生器と置き換わる。これは、ベース・ハッシュを入力として取り得るが、更に、点乗算デバイス１００の秘密鍵を入力として受け取ることもできる。ハッシュ多様化関数は、単一のハッシュを複数のハッシュに多様化させるように応対する。デ・ランダム関数及び多様化関数の双方は、ランダム関数であってもよい。それらは、必要に応じて各自のドメインを縮小することができる。例えば、ベース・ハッシュが２５６ビットを有するＳＨＡ−２５６ハッシュである場合、関数ｆ及び／又は関数ｇｉは、例えば８０ビット等のより小さなドメインにマッピングすることができる。
【００７２】
一実施形態では、ジョイント・エンコード関数が、ジョイント・エンコーディングＥｎｃ（ｈ，ｈ）の代わりに、単独にエンコードされたハッシュＥｎｃ（ｈ）に適用される。一実施形態では、一緒にエンコードされる関数ペアは、ベース・ハッシュのプレーン表現に直接的に適用され、エンコーディング並びにエンコード関数作用を組み込む。ランダム関数を選択するために、設計者は、例えばＳＬＴタイプ関数等の関数テンプレートを、たとえば夫々８である或る数のＳラウンド及び或る数のＬラウンド、置換ボックスのサイズ、例えば４又は８ビット幅、例えば夫々２５６及び８０等の入力及び出力のビット・サイズとともに固定し、これらのパラメータの中で置換ボックス及び線形変換をランダムに選択することができる。置換ボックス及び線形変換は、可逆であることが好ましい。ｓボックス又は線形変換などの他の数のラウンド又はサイズも可能である。
【００７３】
図１に戻る。乗数及び多様化されたハッシュの複数のジョイント・エンコーディングの第１セットを計算することに加えて、点乗算デバイス１００はまた、複数のジョイント・エンコーディングの第２セットも計算する。ジョイント・エンコーディングの第２セットもまた導出されたハッシュを含むが、乗数を必要としない。第２セットにおける導出されたハッシュは、第１セットにおけるものと同じ導出されたハッシュであるが、おそらくは異なるエンコーディングにおけるものである。数学的には、第２セットはＢｉ＝Ｅｎｃ（ｈ２ｉ，ｈ２ｉ＋１），ｉ＝０．．．ｎ−１として選択されてよい。第２セットでは選択される正確なペアリングは重要ではない。導出された第１ハッシュを導出された第２ハッシュとペアリングすること等々の代わりに、任意のペアリング、例えば導出されたハッシュ間のランダムなペアリングを選択することができる。例えばプロセッサ回路等の点乗算デバイス１００は、第２セットを計算するために第２エンコード計算ネットワーク１３５を含んでもよい。
【００７４】
図３は、複数のジョイント・エンコーディングの第２セットを導出する実施形態の一例を概略的に示す。図３は、図２と同様であり、図２で使用され得るものと同じタイプのエンコーディング等が図３で使用され得る。図３に示されているものは、ベース・ハッシュ１２２の自身とのジョイント・エンコーディングである。これは、２０１と同じエンコーディングであってもよく、例えば同じエンコードされたデータが、第１エンコード・ネットワーク１３０及び第２エンコード・ネットワーク１３５への入力として使用される。第２エンコード・ネットワーク１３５は、複数のエンコードされた関数ペアを含む。各々の関数ペアは、少なくとも２つの多様化関数ｇｉを含む。これらの機能ペアはまた、導出されるハッシュのジョイント・エンコードされた３つ組又はそれ以上を得るために、追加の多様化関数を含むことも可能である。図３に示されているものは、ジョイント・エンコーディング３２１、３２２、３２３を生成するジョイント・エンコード関数３１１−３１３である。
【００７５】
図１に戻る。このようにして、点乗算デバイス１００は、多様化されたハッシュｈｉ＝ｇｉ（ｈ）をエンコードするために２つの異なる方法、即ち：一旦乗数と一緒にエンコードされるもの、及び一旦それら自体と一緒にエンコードされるものを求める。点乗算デバイス１００は、最終的に、乗数ｋとベース・ポイントＧとの点積を、追加の補助点Ｇｉ及びベース・ポイントの倍数の総和として計算する。攻撃者が２つのセットのうちの１つのみを攻撃することができないように、Ｇ及びＧｉの乗数は、しばしば第１セットから、及びしばしば第２セットから算出され；攻撃者は第１セット及び第２セット双方を同時に攻撃するように強いられる。複数の事前に計算された補助点Ｇｉは、事前に計算された乗数とベース・ポイントとの間の点乗算として取得されていてもよい。興味深いことに、離散対数問題の困難性に起因して、攻撃者は、Ｇ及びＧｉの間の関係を見出すことができず、例えば攻撃者はＧｉ＝ｓｉＧであるように係数ｓｉを見出すことはできない。しかしながら、この知識は、エンコードされたネットワークに埋め込まれ、その結果、プロセッサ回路はＧ及びＧｉに対する多数の計算として計算ｋＧをブラインド化することができる。攻撃者は、Ｇを取得するためにどのくらいＧが乗算されたかを知ることはできないので、ブラインド化された計算から逆にｋを取得することはできない。
【００７６】
乗数ｋをｈと一緒にエンコードすることは、プロテクションをもたらす。説明のため、乗数及びベース・ハッシュが共にビット単位でエンコードされる状況を考察する。そして、エンコードされたビット・ペアに対して、攻撃者による変更によって引き起こされる可能性のある３つの可能な変更が存在する：
ｉ      ｋのビットのみが変わり、ｈは変更されない
ｉｉ    ｈのビットのみが変わり、ｈは変更されない
ｉｉｉ  ｋのビット及びｈのビット双方が変わる
最初の変更のみが攻撃者にとって有用であることに留意されたい。ｈは変更されるので、第２及び第３の変更は正しいシグネチャを与えない。このシナリオでさえ、攻撃者は既に３倍の仕事を強いられる。更なるセキュリティ・パラメータｎが使用される実施形態では、有意義なシグネチャをもたらす障害を攻撃者が注入する可能性は、よりいっそう小さくなる。一実施形態では、複数（ｎ）の異なるｈｉが使用される。ｋのビットは、元のハッシュのビットと一緒にエンコードされる必要はなく、むしろ、ｎ個の異なるハッシュのビットと一緒にエンコードされ得る。一実施形態では、乗数ｋ及び全てのｈｉが同じビット長を有するが、これは必須ではない。
【００７７】
図１に戻る。プロセッサ回路は、複数のジョイント・エンコーディングの第１セットＡｉから、ブラインド・ベース乗数Ａ１３１を計算するように構成される。例えば、第１エンコード・ネットワーク１３０は、ブラインド・ベース乗数Ａも計算するように構成され得る。更に、例えば第２の符号化ネットワーク１３５等のプロセッサ回路は、複数のジョイント・エンコーディングの第２セットＢｉから、複数のブラインド補助乗数ηｉ１３６を計算するように構成される。複数のブラインド補助乗数は、複数の補助点Ｇｉに対応する。
【００７８】
これらの計算はまた、エンコードされた形式で実行されてもよい。例えば、上記のホワイト・ボックス実装は、例えばエンコードされたテーブル・ネットワークとして、Ａ及びηｉを計算するように適合されてもよい。そのようなテーブル・ネットワークを構築することは、エンコードされたモンゴメリー数ベースの計算を使用することができる。これを行う多くの方法が存在し、１つの特定の方法が以下で更に展開される。
【００７９】
興味深いことに、ブラインド・ベース乗数及び複数のブラインド補助乗数は、ブラインド化された楕円曲線計算の実行中にプレーン・フォーマットで表現されることができる。実際、一実施形態ではこれらの数はこのシステムの攻撃者にとって見える任意の通常の基数２の計算等の平文で明確に可視的であってもよい。しかしながら、ブラインド化されたベース乗数及び複数のブラインド化された補助乗数の特定の計算はエンコードされる。例えば、一実施形態では、先ず、ブラインド化されたベース乗数及び複数のブラインド化された補助乗数をエンコード・フォーマットで計算し、デコーディング・ステップに続いてもよい。ブラインド化されたベース乗数び複数のブラインド化された補助乗数は、ブラインド化されている（ｂｌｉｎｄｅｄ）と言われるが、その理由は、それらがエンコードされる必要があるからではなく、それらが真のＥＣＣ計算（ｋＧ）を攻撃者から見えなくするからである。
【００８０】
非改竄の実行では、第１セット（即ち、値Ａｉ）にエンコードされる全てのｋは同じであるが、改竄された実行では、これらは異なり得ることに留意されたい。明確化のために、Ａｉにおいてエンコードされたｋの値をｋｉと言及する。非改竄の実行では、０≦ｉ≦２ｎ−１に対して、ｋ＝ｋｉである。
【００８１】
一実施形態では、ブラインド・ベース乗数の値は、Ａ＝Ｋ＋ΣｉＣｉＨｉ  として計算されてもよく、ここで、Ｋ＝Σｉαｉｋｉ，Ｈｉ＝ｈｉ＋Σｊβｉ，ｊｋｊ  である。例えば、Ａは、入力としてＡｉを使用し、例えばモンゴメリー数ベースの計算を使用して、エンコードされたネットワークで計算されてもよい。定数αｉ，βｉ及びＣｉは、Ｚｑにおける選択されたコンパイル時間であり、アルゴリズムの中でハードコード化されていてもよい。Σｉαｉ＝１及びΣｊβｉ，ｊ＝０であってもよい。例えば、値Ｋ及びＨｉをエンコードされた形式で、例えば（Ｋ，Ｈ０，．．．，Ｈ２ｎ−１）としてジョイント・エンコードした形式で計算し、そこからＡを計算することができる。
【００８２】
ブラインド化されたベース乗数（Ａ）は、複数のジョイント・エンコーディングの第１セットにおける乗数ｋｉと多様化ハッシュｈｉとの加重和であることに留意されたい。したがって、ＥＣＣ計算ＡＧは、実行が改竄されておらず、項（ΣｉＣｉＨｉ）によってブラインド化されている場合、正しい結果を含むことになる。複数のブラインド化された補助乗数ηｉは、後者の項、例えば加重和Ａにおける多様化されたハッシュを補正するように選択される。
【００８３】
ブラインド化された補助乗数は、エンコードされたＢｉの値Ｂｉ＝（ｈ２ｉ，ｈ２ｉ＋１）を値
【００８４】
【数３】
2020510879.tif 000005
に再コード化することによって取得され、値ηｉは平文の値である。中間値は、たとえ最終値が平文であってもエンコードされ得る。導出されたハッシュの再コード化は、後にベース・ポイント乗算に加算される補助点を補償するように実行される。例えば次のように設定されてもよい。
【００８５】
【数４】
2020510879.tif 000006
Ａｉから、又はｈから直接的にでさえηｉを計算できるが、これはセキュリティを犯すことに留意されたい。即ち、当を得た障害（ａ  ｃｏｒｒｅｃｔ  ｆａｕｌｔ）を得るためには、攻撃者は、ｈｉに触れずにＡｉを撃たなければならない。攻撃者がｈｉを当てた場合、Ａｉの中にｈ’ｉが存在することになり、それはＢのうちの１つの中にあるｈｉと矛盾し、攻撃者により使用できない出力をもたらす。
【００８６】
最後に、乗数ｋとベース・ポイントＧとの点乗算ｋＧ、１４１を求めるために、楕円曲線計算が実行される。この計算は、様々な計算が攻撃者に対して可視的に実行され、ブラインド化された楕円曲線計算の結果から、正しい結果ｋＧが導出され得るが、正しい入力ｋは、ブラインド化された楕円曲線計算の入力から導出され得ないという意味でブラインド化されている。計算のこの部分は、乗数ｋが復元され得ないエンコードされた形式で行われるので、乗数ｋは、秘密の方法で複数の新しい乗数にわたって分配されている。
【００８７】
ブラインド化された楕円曲線計算は、以下の点加算を計算することを含む：
−  楕円曲線におけるブラインド化されたベース乗数とベース・ポイントとの点乗算、及び
−  ブラインド化された補助乗数と補助点との多点乗算。
【００８８】
即ち、ＡＧ＋ΣｉηｉＧｉとしてｋＧを算出し、後者の計算は全体的に平文で実行されてもよい。２ｎ＋１個の楕円曲線乗算が存在し、必要であれば、ＥＣＤＳＡコンポーネントは、ｒ＝μ（ｋＧ）としてｋＧから算出されてもよいことに留意されたい。この計算も平文である。
【００８９】
パラメータは、コンパイル時に選択され、点乗算デバイス１００においてハードコードされていてもよい。例えば、コンパイラは
Σ０≦ｉ≦ｎ−１αｉ＝１  及びΣ０≦ｊ≦２ｎ−１βｉ，ｊ＝０であるように、定数αｉ，βｉ及びＣｉをＺｑ内で選択し、
ａｉｄｉ−ｂｉｃｉ≠０を満たすように、整数ａｉ，ｂｉ，ｃｉ，ｄｉをＺｑ内で選択し、
ハッシュからＺｑへのデ・ランダム関数ｆ、及びハッシュ多様化関数ｈｉを０≦ｉ≦２ｎ−１に関して選択し、
【００９０】
【数５】
2020510879.tif 000007
であるように楕円曲線点（平文）を計算するように構成されてもよい。
【００９１】
暗号プロトコルの或る別の部分で乗数が必要とされる場合、エンコード・ネットワークにおいて、ベース・ハッシュから再び計算され得ることに留意されたい。例えば、暗号プロトコルがＥＣＤＳＡである場合、アルゴリズムの更なる部分は、乗数ｋも必要とするシグネチャの第２コンポーネントを計算することになる。これは、暗号プロトコルの第２部分のエンコード・ネットワークにおけるベース・ハッシュからｋを再計算することによって提供されることが可能である。例えば、そのエンコード・ネットワークは、デ・ランダム関数のエンコーディングを含むことができる。
【００９２】
以下、１つの特定の実施形態の点乗算デバイス１００の詳細について、いくつかの追加的な情報が提供される。入力をｈ＝ＨＡＳＨ（Ｍ）とし、即ちＥＣＤＳＡにおける第１ステップにおいて、シグネチャの第１コンポーネントの例示的な計算は以下の通りである。仮定されるものは以下のブロックである：
・２ｌ（エル）ビットに作用するエンコーディング関数Ｅ（ランダム全単射の集まり）
・内的にｌ（エル）ビット・オペレーションを利用して（例えば、ＡＥＳではｌ（エル）＝８である）、ｌ（エル）＊ｍビット入力をｍ＊ｌ（エル）ビット出力にマッピングする置換線形変換｛ＳＬＴｉ｝ｊ関数（例えば、固定されたキーを有するＡＥＳ等）の集まり。
【００９３】
・ジョイント・エンコーディング関数のためのホワイト・ボックス回路
Ｃ０，ｉ＝｛ＳＬＴ０，ＳＬＴｉ＋１｝ｉ及びＣ２ｉ＋１，２ｉ＋２＝｛ＳＬＴ２ｉ＋１，ＳＬＴ２ｉ＋２｝ｉ  即ち、各々の回路Ｃｉ，ｒは２つのｍｌ入力、例えばＩｌ（エル），Ｉｒを或るエンコードされた方法（下記参照）で取得し、出力Ｏｉ＝ＳＬＴｉ（Ｉｉ）及びＯｒ＝ＳＬＴｊ（Ｉｒ）（のエンコーディング）を算出する。この回路は例えばω経路及びσ経路を有し、ここでω経路はＳＬＴｉを計算し、σ経路はＳＬＴｊを計算する。
【００９４】
・入力に関してｗ＝ｕ＊ｖ＊Ｒ−１ｍｏｄｑを計算するディジット・ベース・モジュラー乗算ネットワーク。
【００９５】
−  Ｒ＝ｂ（ｍ＋１）は「モンゴメリー定数」である。
【００９６】
−  ｕ＝Σｉ＝０ｍｕｉｂｉｍｏｄｑ  及び
−  ｖ＝Σｉ＝０ｍｖｉｂｉｍｏｄｑ  ただし、
−  ｕｉ及びｖｉはｌ（ビット）の数であり、従って
−  ｂ＝２ｌ（エル）である。
【００９７】
ディジット・ベース・モンゴメリーについては、例えば次の文献を参照されたい：
Ｐｅｔｅｒ  Ｌ．Ｍｏｎｔｇｏｍｅｒｙ，“Ｍｏｄｕｌａｒ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｗｉｔｈｏｕｔ  ｔｒｉａｌ  ｄｉｖｉｓｉｏｎ”．Ｍａｔｈｅｍａｔｉｃｓ  ｏｆ  Ｃｏｍｐｕｔａｔｉｏｎ，４４：５１９−−５２１，１９８５．
すべての内的なオペレーションは、１つ又は２つのｌ（エル）ビット数に関するものであり、従って、例えば、所謂スクールブック乗算を使用して、テーブルに配置されることが可能である。
【００９８】
・ディジット・ベース・モンゴメリー（ＤＢＭ）モジュラー乗算を実行するホワイト・ボックス回路。この回路は４つのｍ桁入力、例えばｘ０，ｘ１，ｙ０，ｙ１を取得する。回路のω経路はｘ０ｙ０ｍｏｄｑを計算し、回路のσ経路はｘ１ｙ１ｍｏｄｑを計算する。
【００９９】
・最後に、２つのホワイト・ボックス加算回路、これらはスクールブック加算を使用することができる。第１のものＡＤＤ１は、回路が４つのｍ桁入力、例えばｘ０，ｘ１，ｙ０，ｙ１を得るＤＢＭのようなものである。回路のω経路はｘ０＋ｘ１を計算し、σ経路はｘ１＋ｙ１を計算する。第２のものＡＤＤ２では、回路は２つのｍ桁入力、例えば（ω経路で）ｘ及び（σ経路で）ｙの１つのエンコーディングを取得し、ω経路でｘ＋ｙ、そしてσ部分で任意の何らかのものを計算する。
【０１００】
相違するがジョイント・エンコードされる変数に関する様々な関数の具体例は、例えば、テーブル・ネットワークを有するコンピューティングデバイス、ＷＯ／２０１４／０９５７７２；ブロック暗号を計算するための暗号化デバイス、ＷＯ／２０１６／１７３８８２；セキュアデータ変換、ＷＯ／２０１５／０９１１７２等に見出すことができる。
【０１０１】
これらのコンポーネントを使用して、計算は次のように機能し得る：
１．ｈ＝ｈ０‖・・・‖ｈｍとなるように、ｈをｌ（エル）ビットのｈ０，．．．，ｈｍのブロックに分割する。
【０１０２】
２．Ｅを利用してｍ個のエンコーディングｈ〜ｉ＝Ｅ（ｈｉ‖ｈｉ）を作成する。
【０１０３】
３．ｈ〜０‖・・・‖ｈ〜ｍを各々のＣｉ，ｊに供給する。
【０１０４】
４．Ｏｉｏ‖・・・‖Ｏｉｍ＝ＳＬＴｉ（ｈ）及びＯｊｏ‖・・・‖Ｏｊｍ＝ＳＬＴｉ（ｈ）であるように、Ｏｉ，ｊ＝Ｅ（Ｏｉｏ‖Ｏｊｏ）‖・・・‖Ｅ（Ｏｉｍ‖Ｏｊｍ）により結果の集まりを取得する。
【０１０５】
５．１≦ｉ≦２ｎについて、ｋ＝ＳＬＴ０（ｈ）ｍｏｄｑ、及びｈｉ＝ＳＬＴｉ＋１（ｈ）を定義する。
【０１０６】
６．０≦ｉ≦２ｎ−１についてＡｉ＝Ｏ０，ｉ＋１、及び０≦ｊ≦ｎ−１についてＢｊ＝Ｏ２ｊ＋１，２ｊ＋２  を計算する。
【０１０７】
７．Ｅｎｃ（ａ，ｂ）＝Ｅ（ａ０‖ｂ０）‖・・・‖Ｅ（ａｍｌ‖ｂｍｌ）を定義する。ここで、オーバーフローを防止するために、ｍ’≧ｍ  である。
【０１０８】
８．Ａｉ＝Ｅｎｃ（ｋ，ｈｉ）及び（事前に計算された）Ｅｎｃ（ｃｉ１，ｃｉ２）に関してＤＢＭを実行する。ここで、ｃｉ１＝αｉ＋ＣｉΣｊβｉ，ｊ＊Ｒ２ｍｏｄｑ、及びｃｉ２＝Ｃｉ＊Ｒｍｏｄｑである。この結果は、
【０１０９】
【数６】
2020510879.tif 000008
が「モンゴメリー形式」であることを充足する。ただし、（加算後に）オーバーフローしてしまうことを防止するため、Ｅｎｃ（ｋ，ｈｉ）におけるＡｉに先行ゼロのエンコーディングを追加する。
【０１１０】
９．０≦ｉ≦２ｎ−１の全てについて、Ｚｉ＝ＡＤＤ１（Ｚｉ−１，Ａ〜ｉ）を計算する。ここで、Ｚ０＝Ａ〜０である。
【０１１１】
１０．Ｚ＝Ｅｎｃ（Ａ＊Ｒ  ｍｏｄ  ｑ，・）＝ＡＤＤ２（Ｚ２ｎ−１）を計算する。
【０１１２】
１１．入力Ｚ及び（事前に計算された）Ｅｎｃ（１，・）についてＤＢＭでＥｎｃ（Ａ，・）を計算する。
【０１１３】
１２．解読してＡｍｏｄｑを返す。
【０１１４】
図４は、ＥＣＤＳＡデバイス４００の実施形態の一例を概略的に示す。点乗算デバイス１００の重要な用途は、ＥＣＤＳＡデバイス４００のようなＥＣＤＳＡデバイスにおけるものである。上記で指摘したＥＣＤＳＡシグネチャは、２つのコンポーネントを含み、そのうちの１つは、ＥＣＣ点乗算から導出される。図４は、メッセージのＥＣＤＳＡシグネチャを計算するように構成されたデバイス等のＥＣＤＳＡデバイス４００を示し、そのデバイスは例えば点乗算デバイス１００等の点乗算デバイスを有する。図４における同様の参照符号は、図１における同様の機能に対応する。
【０１１５】
ＥＣＤＳＡデバイス４００は、プロセッサ回路、例えば点乗算デバイス１００におけるもののようなプロセッサ回路を有するが、追加の機能とともに拡張される。ＥＣＤＳＡデバイス４００は、入力メッセージＭのベース・ハッシュ１２２を受信するように構成された入力インターフェース１２０を有する。点乗算デバイス１００に関しては、入力インターフェースはアプリケーション・インターフェースであってもよく、その結果、ＥＣＤＳＡデバイス４００は、入力メッセージを受信する、又は生成する、又は別の方法で取得するように構成される。ＥＣＤＳＡデバイス４００は、入力メッセージのベース・ハッシュを生成するためのハッシュ・ユニットを有してもよい。ＥＣＤＳＡ・デバイス４００は点乗算デバイス１００等の点乗算デバイスを有し、そのデバイスは、暗号プロトコルで使用するために、乗数ｋと楕円曲線Ｅ上のベース・ポイントＧとの間の楕円曲線上の点乗算ｋＧを計算する。例えば、ＥＣＤＳＡデバイス４００のプロセッサ回路は、点乗算のために構成されていてもよい。
【０１１６】
ＥＣＤＳＡデバイス４００のプロセッサ回路は、乗数ｋとベース・ポイントＧとの間の楕円曲線上の点乗算ｋＧから、シグネチャの第１コンポーネントｒ＝μ（（［ｋ］Ｇ）１）を取得するように更に構成される。後者の計算は、楕円曲線計算ユニット１４０又は別のユニットで実行されてよい。μの計算は平文で実行されてよい。
【０１１７】
ＥＣＤＳＡデバイス４００は、シグネチャの第２コンポーネント（ｓ＝（ｈ＋ｒｘ）ｋ−１）を計算するように更に構成される。第２コンポーネントは楕円曲線計算を含まない。これは、エンコードされた計算ネットワークがこの計算を実行できることを意味する。例えば、ＥＣＤＳＡデバイス４００のエンコード・ネットワークは、ベース・ハッシュを受信し、デ・ランダム関数ｆのエンコーディングを含み得る。これは、そのようなエンコード・ネットワークが乗数ｋのエンコーディングを計算することを可能にする。エンコード・ネットワークは更に、秘密鍵ｘ、及び値ｒ及びｈのエンコーディングを使用することができる。後者の２つは、平文で又は暗号文で受信されてもよい。これらの入力から、ＥＣＤＳＡシグネチャの第２コンポーネントが計算され得る。
【０１１８】
しかしながら、有利な実施形態では、エンコードされた形態で逆のオペレーションを実行することが回避される。エンコードされたデータに作用する一方で逆の計算をすることは可能であるが、複雑なエンコード・ネットワークを必要とする。本発明者等は、乗数ｋの値を明らかにすることなく、シグネチャの第２コンポーネントを得るためのより簡単な方法を発明した。この実施形態は、ｋに関する高度な攻撃及びｘに関する単純なメモリ・スクレーピングに耐えることができる。
【０１１９】
ＥＣＤＳＡデバイス４００は、複数のジョイント・エンコーディングの更なる第１セットと、複数のジョイント・エンコーディングの更なる第２セットとを含むように構成される。例えば、ＥＣＤＳＡデバイス４００は、複数の導出されたハッシュを導出するように構成された第３エンコード計算ネットワーク１５０を有し、各ハッシュは乗数ｋと一緒にエンコードされる。数学的には、Ｘｉ＝Ｅｎｃ（ｋ，ｔｉ），ｉ＝０．．．２ｎ−１である。例えば、第３エンコード計算ネットワーク１５０は、エンコードされた関数の複数ペア（ｆ，ｇ’ｉ）を適用するように構成されてもよく、ここで、ｇ’ｉは多様化関数の更なるセットである。
【０１２０】
例えば、ＥＣＤＳＡデバイス４００は、更なる第１セットにおけるものと同じ複数の導出されたハッシュを導出するように構成される第４エンコード計算ネットワーク１５５を有し得るが、各セットはベース・ハッシュと一緒にエンコードされる。数学的には、Ｙｉ＝Ｅｎｃ（ｋ，ｔｉ），ｉ＝０．．．２ｎ−１である。例えば、第４エンコード計算ネットワーク１５５は、エンコードされた関数の複数ペア（ｉｄ，ｇ’ｉ）を適用するように構成されてもよく、ここで、ｇ’ｉは多様化関数の更なるセットである。ここで、ｉｄは恒等関数（ｉｄｅｎｔｉｔｙ  ｆｕｎｃｔｉｏｎ）を表す。恒等関数でさえもそのように可視的ではないことに留意すべきであり、なぜなら異なるエンコーディングでその出力を生成して入力を受信するからである。更に、ジョイント・エンコーディングはまた、ベース・ハッシュがデバイスで直接的に可視的であることを引き起こす。
【０１２１】
エンコーディングの下でｋ−１ｍｏｄ  ｑを計算するために、我々はセットＸｉ及びＹｉから、例えば、
−  エンコードされたペアＥｎｃ（ｋ，ｔ０），．．．，Ｅｎｃ（ｋ，ｔ２ｎ−１）及び
−  エンコードされたペアＥｎｃ（ｈ，ｔ０），．．．，Ｅｎｃ（ｈ，ｔ２ｎ−１）
から進行する。
【０１２２】
複数のジョイント・エンコーディングＸｉの更なる第１セットから、ブラインド化された乗数Ｂ、１５１が、更なる第１セットにおけるエンコードされた乗数の加重平均に、更なる第１セットにおけるエンコードされた乗数及び導出されたハッシュの加重平均を掛けたものとして算出される。例えば、次のように算出してもよい：ｋ’ｉがＥｎｃ（ｋ，ｔｉ）のデコードされたｋ値を示し、Ｋ’＝Σｉγｉｋ’ｉを計算するものとし、例えばΣｉγｉ＝１であるとする。また、Ｔｉ＝ｔｉ＋Σｊδｉ，ｊｋ’ｊを計算し、Σｊδｉ，ｊ＝０であるとする。ブラインド化された乗数は、Ｂ＝Ｋ’・ΣｉＤｉＴｉとして算出され、ここでＤｉは選択されたコンパイル時間である。例えば、Ｚｑ２ｎ＋１上のエンコードされた２ｎ＋１個のタプルＥｎｃ（Ｋ’，Ｔ０，．．．，Ｔ２ｎ−１）を先ず生成し、そこからブラインド化された乗数を算出する。値Ｂはエンコードされる必要はなく、平文フォーマットで出力され得ることに留意されたい。
【０１２３】
更に、ＥＣＤＳＡデバイス４００は、複数のジョイント・エンコーディングＹｉの更なる第２セットから、更なる第２セット内のエンコードされたベース・ハッシュの重み付け平均としてブラインド化されたベース・ハッシュ１５６を算出し、エンコードされたベース・ハッシュ及び導出されたハッシュから、非ブラインディングＴ’１５７の値を算出することができる。この計算は、エンコード・ネットワークで行われ、エンコードされた値を生成することができる。例えば、ｈｉがＥｎｃ（ｈ，ｔｉ）のデコードされたｈ値を示し、Ｈ＝Σｉμｉｈ’ｉを算出し、Σｉμｉ＝１であるとし、Ｔ’ｉ＝ｔｉ＋Σｊｖｉ，ｊｈｊを算出し、例えばΣｊｖｉ，ｊ＝０であるとする。非ブラインディング値は、Ｔ’＝ΣｉＤｉＴ’ｉとして算出されてもよい。例えば、Ｚｑ２ｎ＋１上のエンコードされた２ｎ＋１個のタプルＥｎｃ（Ｈ，Ｔ’０，．．．，Ｔ’２ｎ−１）を生成することができる。ブラインド化されたハッシュ及びデ・ブラインド化された値は、例えばＥｎｃ（Ｈ，Ｔ’０，．．．，Ｔ’２ｎ−１）計算からジョイント・エンコーディングされ、Ｅｎｃ（Ｈ，Ｔ’）を算出してもよく、ここで、Ｔ’＝ΣｉＤｉＴ’ｉである。
【０１２４】
ここでシグネチャの第２コンポーネントは、ｓ＝Ｂ−１Ｔ’（ｘｒ＋Ｈ）ｍｏｄ  ｑを計算するようにして、例えば入力Ｂ，ｒ，Ｅｎｃ（ｘ），Ｅｎｃ（Ｈ，Ｔ’）を考慮して、例えばディジット・ベース・モンゴメリー回路を利用して、エンコード回路１６０で算出されることが可能である。反転はプレーン値Ｂに対して行われることに留意されたい。残りの計算はエンコードされた値に対して行われ得る。最終結果ｓもまた、エンコードされる必要はない。有利なことに、エンコーディング（Ｅｎｃ）はＺｑ上で線形であり、その桁毎の上で非線形であり、例えば、
【０１２５】
【数７】
2020510879.tif 000009
であり、ここで、Ｅはコンパイル時に選択された何らかの秘密全単射マッピングであり、選択された何らかのコンパイル時間ａ，ｂに関し、次式が成り立つ。
【０１２６】
【数８】
2020510879.tif 000010
点乗算デバイス１００及びＥＣＤＳＡデバイス４００の様々な実施形態では、入力インターフェースは、様々な代替形態から選択されてよい。例えば、入力インターフェースは、ローカル又はワイド・エリア・ネットワーク（例えば、インターネット）へのネットワーク・インターフェース、内部又は外部データ・ストレージへのストレージ・インターフェース、キーボード、アプリケーション・インターフェース（ＡＰＩ）等であってもよい。
【０１２７】
ストレージ１１０は、電子メモリ、例えばフラッシュ・メモリ、又は磁気メモリ、例えばハードディスク等として実装されてもよい。ストレージ１１０は、ストレージ１１０を構成する際に一緒に複数のディスクリート・メモリを含んでもよい。ストレージ１１０は、例えばＲＡＭ等のテンポラリ・メモリであってもよい。テンポラリ・ストレージ１１０の場合、ストレージ１１０は、例えば選択的なネットワーク接続（図示せず）を介してデータを取得することによって、使用前にデータを取得する何らかの手段を含む。
【０１２８】
典型的には、デバイス１００及び４００はそれぞれ、デバイス１００及び４００に格納された適切なソフトウェアを実行するマイクロプロセッサ（別個には図示せず）を有し；例えば、そのソフトウェアは、例えばＲＡＭ等の揮発性メモリ、又はフラッシュ等の不揮発性メモリ（別個には図示せず）等の対応するメモリにダウンロード及び／又は格納されていてもよい。代替的に、デバイス１００及び４００は、全体的に又は部分的に、例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）として、プログラマブル・ロジックで実装されてもよい。デバイス１００及び４００は、全体的又は部分的に、いわゆる特定用途向け集積回路（ＡＳＩＣ）、すなわち、それらの特定の使用のためにカスタマイズされた集積回路（ＩＣ）として実装されてもよい。例えば、回路は、例えばベリログ（Ｖｅｒｉｌｏｇ）、ＶＨＤＬ等のハードウェア記述言語を使用して、ＣＭＯＳで実装されてもよい。
【０１２９】
一実施形態では、デバイスは、ストレージ回路と、入力インターフェース回路と、第１エンコード計算ネットワーク回路と、第２エンコード計算ネットワーク回路と、楕円曲線計算ユニット回路とを有する。デバイスはまた、第３エンコード計算ネットワーク回路と、第４エンコード計算ネットワーク回路と、第６エンコード計算ネットワーク回路とを備えることができる。回路はここで説明される対応するユニットを実現する。回路は、プロセッサ回路及びストレージ回路であってもよく、プロセッサ回路は、ストレージ回路内で電子的に表現される命令を実行する。
【０１３０】
プロセッサ回路は、分散方式で、例えば複数のサブ・プロセッサ回路として実装されてもよい。ストレージは、複数の分散されたサブ・ストレージにわたって分散されてもよい。メモリの一部又は全部は、電子メモリや、磁気メモリ等であってもよい。例えば、ストレージは、揮発性のパート及び不揮発性のパートを有することができる。ストレージのパートはリード・オンリであってもよい。回路はまた、ＦＰＧＡ、ＡＳＩＣ等であってもよい。
【０１３１】
図５は、点乗算方法５００の実施形態の一例を概略的に示す。
【０１３２】
電子点乗算方法５００は、暗号プロトコルで使用するために、楕円曲線Ｅ上のベース・ポイントＧと乗数ｋとの間の楕円曲線上での点乗算ｋＧを計算するように構成される。例えば、方法５００は電子デバイス上で実現されてもよい。
【０１３３】
方法５００は
−  楕円曲線における複数の事前に算出された補助点Ｇｉとベース・ポイントＧとを保存するステップ５１０と、
−  入力メッセージＭのベース・ハッシュｈ、１２２を受け取るステップ５２０と、
−  複数のジョイント・エンコーディングの第１及び第２セットの形式でベース・ハッシュｈからの複数の被導出ハッシュｈｉと乗数ｋとを導出するステップ５３０であって、第１セットは、それぞれが乗数ｋとジョイント・エンコードされる複数の被導出ハッシュＡｉ＝Ｅｎｃ（ｋ，ｈｉ）（ｉ＝０．．．２ｎ−１）２２１−２２３を含み、第２セットも複数の被導出ハッシュを含み、第２セット内の被導出ハッシュの各々は、複数の被導出ハッシュのうち少なくとも１つの他のものとジョイント・エンコードされている（Ｂｉ＝Ｅｎｃ（ｈ２ｉ，ｈ２ｉ＋１），ｉ＝０．．．ｎ−１）３２１−３２３、ステップ５３０と、
−  複数のジョイント・エンコーディングＡｉの第１セットから、ブラインド・ベース乗数Ａを算出するステップ５４０と、
−  複数のジョイント・エンコーディングＢｉの第２セットから、複数のブラインド補助乗数ηｉ、１３６を算出するステップ５５０であって、複数のブラインド補助乗数は複数の補助点Ｇｉに対応している、ステップ５５０と、
−  楕円曲線におけるベース・ポイントとブラインド・ベース乗数との点乗算、及びブラインド補助乗数と補助点との複数の点乗算を計算することにより、乗数ｋとベース・ポイントＧとの点乗算ｋＧ、１４１を求めるために、ブラインド楕円曲線計算を実行するステップ５６０とを有する。
【０１３４】
図６は、ＥＣＤＳＡ署名方法の実施形態の一例を概略的に示す。方法６００は、ＥＣＤＳＡシグネチャの第１コンポーネントを計算する方法５００を含む。方法６００は、シグネチャの第２コンポーネントｓ＝（ｈ＋ｒｘ）ｋ−１を、
−  複数のジョイント・エンコーディングの更なる第１及び第２セットの形式でベース・ハッシュから、乗数ｋと更なる複数の被導出ハッシュｔｉとを導出するステップ６１０であって、更なる第１セットは、それぞれが乗数ｋとジョイント・エンコードされる複数の被導出ハッシュＸｉ＝Ｅｎｃ（ｋ，ｔｉ）（ｉ＝０．．．２ｎ−１）を含み、更なる第２セットは、それぞれがベース・ハッシュｈとジョイント・エンコードされる複数の被導出ハッシュＹｉ＝Ｅｎｃ（ｈ，ｔｉ）（ｉ＝０．．．２ｎ−１）を含む、ステップ６１０と、
−  複数のジョイント・エンコーディングＸｉの更なる第１セットから、ブラインド化された乗数Ｂ＝Ｋ’・ΣｉＤｉＴｉ、１５１を、更なる第１セットにおけるエンコードされた乗数の加重平均Ｋ’＝Σｉγｉｋ’ｉに、更なる第１セットにおける被導出ハッシュとエンコードされた乗数との加重平均（ΣｉＤｉＴｉ，Ｔｉ＝ｔｉ＋Σｊδｉ，ｊｋ’ｊ）を乗算したものとして算出するステップ６２０と、
−  複数のジョイント・エンコーディングＹｉの更なる第２セットから、ブラインド化されたベース・ハッシュＨ、１５６を、更なる第２セットにおけるエンコードされたベース・ハッシュの加重平均として（Ｈ＝Σｉμｉｈ’ｉ）、デ・ブラインディング値Ｔ’、１５７を、エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として（Ｔ’＝ΣｉＤｉＴ’ｉ，Ｔ’ｉ＝ｔｉ＋Σｊｖｉ，ｊｈｊ）算出するステップ６３０と、
−  ブラインド化された乗数の逆数Ｂ−１と、デ・ブラインディング値Ｔ’と、シグネチャの第１コンポーネントｒにプライベート値ｘを掛けたものに、ブラインド化されたベース・ハッシュＨを合計したもの（ｒｘ＋Ｈ）との積を、デバイスのエンコード計算ネットワークで算出するステップと
により計算するステップを更に含む。
【０１３５】
当業者には明らかなように、本方法を実行する多くの異なる方法が可能である。例えば、ステップの順序は変更されることが可能であり、また幾つかのステップは並列に実行されてもよい。更に、ステップ同士の間に、他の方法ステップが挿入されてもよい。挿入されたステップは、ここで説明されるような方法の改良を表すかもしれないし、又はその方法に関連していないかもしれない。例えば、ステップ５４０及び５５０は、少なくとも部分的に並列に実行されてもよい。更に、所与のステップは、次のステップが開始される前に完全に終了していなくてもよい。
【０１３６】
本発明による方法は、ソフトウェアを使用して実行されてもよく、ソフトウェアは、プロセッサ・システムに方法５００又は６００を実行させるための命令を含む。ソフトウェアは、システムの特定のサブ・エンティティによって行われるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー（登録商標）、メモリ、光ディスク等の適切な記憶媒体に記憶されてもよい。ソフトウェアは、有線又は無線による信号として、又はデータ・ネットワーク（例えば、インターネット）を使用して送信されてもよい。ソフトウェアは、ダウンロード用に及び／又はサーバー上でのリモート使用のために利用可能にされてもよい。本発明による方法は、例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）等のプログラマブル論理を構成するように配置されるビット・ストリームを使用して本方法を実行するように実施されることができる。
【０１３７】
本発明はまた、本発明を実施するように適合されたコンピュータ・プログラム、特にキャリア上又はキャリア内のコンピュータ・プログラムに拡張されることが理解されるであろう。プログラムは、ソースコード、オブジェクト・コード、コード中間ソース、及び部分的にコンパイルされた形態などのオブジェクト・コードの形態におけるものであってもよく、又は本発明による方法の実施の際に使用に適した他の任意の形態におけるものであってもよい。コンピュータ・プログラム製品に関する実施形態は、説明された方法のうちの少なくとも１つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されてもよく、及び／又は静的又は動的にリンクされ得る１つ以上のファイルに保存されてもよい。コンピュータ・プログラム製品に関する別の実施形態は、説明されたシステム及び／又は製品のうちの少なくとも１つの手段のそれぞれに対応するコンピュータ実行可能命令を含む。
【０１３８】
図７ａは、コンピュータ・プログラム１０２０を含む書き込み可能な部分１０１０を有するコンピュータ可読媒体１０００を示し、コンピュータ・プログラム１０２０は、実施形態に従ってプロセッサ・システムに点乗算方法を実行させるための命令を含む。コンピュータ・プログラム１０２０は、物理的なマークとして、又はコンピュータ可読媒体１０００の磁化によって、コンピュータ可読媒体１０００上で具現化されることが可能である。しかしながら、任意の他の適切な実施形態も考えられる。更に、コンピュータ読取可能媒体１０００は、ここでは光ディスクとして示されているが、コンピュータ読取可能媒体１０００は、ハードディスク、ソリッド・ステート・メモリ、フラッシュ・メモリ等の任意の適切なコンピュータ読取可能媒体であってもよく、また、記録可能でないもの又は記録可能なものであってもよいことが理解されよう。コンピュータ・プログラム１０２０は、プロセッサ・システムに点乗算方法を実行させるための命令を含む。
【０１３９】
図７ｂは、実施形態によるプロセッサ・システム１１４０を概略図で示し；例えば、プロセッサ・システム１１４０は、点乗算デバイスの実施形態に従ってもよいし、又はＥＣＤＳＡデバイスの実施形態に従ってもよい。プロセッサ・システムは、１つ又は複数の集積回路１１１０を含む。１つ又は複数の集積回路１１１０のアーキテクチャが、図７ｂに概略的に示されている。回路１１１０は、一実施形態による方法を実行し、及び／又はそのモジュール若しくはユニットを実装するためにコンピュータ・プログラム・コンポーネントを走らせる例えばＣＰＵ等の処理ユニット１１２０を含む。回路１１１０は、プログラミング・コードや、データ等を記憶するためのメモリ１１２２を含む。メモリ１１２２の部分は、リード・オンリであってもよい。回路１１１０は、例えばアンテナ、コネクタ、又は双方などの通信要素１１２６を含んでいてもよい。回路１１１０は、本方法で定められる処理の一部又は全部を実行するための専用集積回路１１２４を含んでいてもよい。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、及び通信要素１１２６は、例えばバス等の相互接続１１３０を介して互いに接続され得る。プロセッサ・システム１１１０は、アンテナ及び／又はコネクタをそれぞれ使用して、コンタクト及び／又はコンタクト・レス通信用に構成されてもよい。
【０１４０】
例えば、一実施形態では、点乗算デバイスは、プロセッサ回路及びメモリ回路を含んでもよく、プロセッサは、メモリ回路に格納されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、インテル・コアｉ７プロセッサ、ＡＲＭ  Ｃｏｒｔｅｘ-Ｒ８等であってもよい。メモリ回路は、ＲＯＭ回路であってもよいし、フラッシュ・メモリ等の不揮発性メモリであってもよい。メモリ回路は、例えばＳＲＡＭメモリ等の揮発性メモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するように構成された不揮発性ソフトウェア・インターフェース、例えばハードドライブや、ネットワーク・インターフェース等を含むことができる。
【０１４１】
上述の実施形態は、本発明を限定するものではなく例示するものであり、当業者は、多くの代替実施形態を設計することができることに留意すべきである。
【０１４２】
特許請求の範囲において、括弧の間に配置された如何なる参照符号も、特許請求の範囲を限定するものとして解釈されてはならない。「有する（ｃｏｍｐｒｉｓｅ）」という動詞及びその活用形の使用は、特許請求の範囲で言及されているもの以外のエレメント又はステップの存在を排除していない。エレメントに先行する冠詞「ある又は或る（ａ  ｏｒ  ａｎ）」は、そのような複数のエレメントの存在を除外しない。本発明は、いくつかの個別的なエレメントを含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施されてもよい。いくつかの手段を列挙しているデバイスの請求項において、これらの手段のいくつかは、ハードウェアの１つの同じアイテムによって具現化されてもよい。所定の複数の事項が相互に異なる従属請求項に記載されているという単なるそれだけの事実は、これらの事項の組み合わせが有利に使用され得ないことを示してはいない。
【０１４３】
特許請求の範囲において、括弧内のリファレンスは、例示的な実施形態の図面における参照符号又は実施形態における式を指し、特許請求の範囲の理解を高めている。これらのリファレンスは特許請求の範囲を限定するものとして解釈されてはならない。
【図１】
2020510879.tif 000011
【図２】
2020510879.tif 000012
【図３】
2020510879.tif 000013
【図４】
2020510879.tif 000014
【図５】
2020510879.tif 000015
【図６】
2020510879.tif 000016
【図７ａ】
2020510879.tif 000017
【図７ｂ】
2020510879.tif 000018
【手続補正書】
【提出日】令和1年9月18日(2019.9.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力メッセージにおけるシグネチャを生成する際に使用するための楕円曲線におけるベース・ポイントと乗数との間の楕円曲線における点乗算を算出するホワイト・ボックスのための電子点乗算デバイスであって、当該デバイスは
−  前記楕円曲線における複数の事前に算出された補助点と前記ベース・ポイントとを保存するストレージと、
−  前記入力メッセージのベース・ハッシュを受け取るように構成される入力インターフェースと、
−  プロセッサ回路と
を有し、前記プロセッサ回路は
−  複数のジョイント・エンコーディングの第１及び第２セットの形式で前記ベース・ハッシュから複数の被導出ハッシュと前記乗数とを導出するステップであって、前記第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記第２セットも前記複数の被導出ハッシュを含み、前記第２セット内の前記被導出ハッシュの各々は、前記複数の被導出ハッシュのうち少なくとも１つの他のものとジョイント・エンコードされている、ステップと、
−  複数のジョイント・エンコーディングの前記第１セットから、ブラインド化されたベース乗数を算出するステップと、
−  複数のジョイント・エンコーディングの前記第２セットから、複数のブラインド化された補助乗数を算出するステップであって、前記複数のブラインド化された補助乗数は前記複数の補助点に対応している、ステップと、
−  前記楕円曲線における前記ベース・ポイントと前記ブラインド化されたベース乗数との前記点乗算、及びブラインド化された補助乗数と補助点との前記複数の点乗算の点加算を算出することにより、前記乗数と前記ベース・ポイントとの前記点乗算を求めるために、ブラインド化された楕円曲線計算を実行するステップであって、前記ブラインド化されたベース乗数は、複数のジョイント・エンコーディングの前記第１セットにおける被導出ハッシュとエンコードされた乗数との加重和であり、前記複数のブラインド化された補助乗数は、前記加重和における前記被導出ハッシュを補正するために選択されている、ステップと
を行うように構成されている、点乗算デバイス。
【請求項２】
前記ブラインド化されたベース乗数と前記複数のブラインド化された補助乗数とは、前記ブラインド化された楕円曲線計算の実行中に平文フォーマットで表現されている、請求項１に記載の点乗算デバイス。
【請求項３】
前記プロセッサ回路は第１エンコード計算ネットワークとともに構成され、前記第１エンコード計算ネットワークは、ジョイント・エンコード関数ペアの第１セットを、前記ベース・ハッシュの自身とのジョイント・エンコーディングに適用し、ジョイント・エンコード関数ペアは、前記ベース・ハッシュから前記乗数を導出するように構成されるデ・ランダム関数と、ハッシュ多様化関数の集合のうちのハッシュ多様化関数とのジョイント・エンコーディングである、請求項１又は２に記載の点乗算デバイス。
【請求項４】
前記プロセッサ回路は第２エンコード計算ネットワークとともに構成され、前記第２エンコード計算ネットワークは、ジョイント・エンコード関数ペアの第２セットを、前記ベース・ハッシュの自身とのジョイント・エンコーディングに適用し、ジョイント・エンコード関数ペアは、ハッシュ多様化関数の集合のうちの少なくとも２つのハッシュ多様化関数のジョイント・エンコーディングである、請求項１−３のうち何れか１項に記載の点乗算デバイス。
【請求項５】
前記デ・ランダム関数及び／又は前記ハッシュ多様化関数は、ＳＬＴ構成に従って構成されている、請求項３又は４に記載の点乗算デバイス。
【請求項６】
複数のジョイント・エンコーディングの前記第１セット及び／又は複数のジョイント・エンコーディングの前記第２セットは、バイト毎又はニブル毎のジョイント・エンコーディングである、請求項１−５のうちの何れか１項に記載の点乗算デバイス。
【請求項７】
前記第１エンコード計算ネットワーク及び／又は前記第２エンコード計算ネットワークは、エンコードされたモントゴメリー・ディジット・ベース計算用に構成されている、請求項１−６のうちの何れか１項に記載の点乗算デバイス。
【請求項８】
前記複数の事前に算出された補助点は、事前に算出された乗数と前記ベース・ポイントとの間の点乗算として取得されている、請求項１−７のうちの何れか１項に記載の点乗算デバイス。
【請求項９】
前記入力メッセージにおけるＥＣＤＳＡシグネチャを計算するように更に構成され、前記プロセッサ回路は、前記乗数と前記ベース・ポイントとの間の前記楕円曲線における前記点乗算から、前記シグネチャの第１コンポーネントを求めるように構成されている、請求項１−８のうちの何れか１項に記載の点乗算デバイス。
【請求項１０】
前記プロセッサ回路は、前記シグネチャの第２コンポーネントを、
複数のジョイント・エンコーディングの更なる第１及び第２セットの形式で前記ベース・ハッシュから、前記乗数と更なる複数の被導出ハッシュとを導出するステップであって、前記更なる第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記更なる第２セットは、それぞれが前記ベース・ハッシュとジョイント・エンコードされる前記複数の被導出ハッシュを含む、ステップと、
複数のジョイント・エンコーディングの前記更なる第１セットから、ブラインド化された乗数を、前記更なる第１セットにおける前記エンコードされた乗数の加重平均に、前記更なる第１セットにおける被導出ハッシュと前記エンコードされた乗数との加重平均を乗算したものとして算出するステップと、
複数のジョイント・エンコーディングの前記更なる第２セットから、ブラインド化されたベース・ハッシュを、前記更なる第２セットにおける前記エンコードされたベース・ハッシュの加重平均として、デ・ブラインディング値を、前記エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として算出するステップと、
前記ブラインド化された乗数の逆数と、デ・ブラインディング値と、前記シグネチャの前記第１コンポーネントにプライベート値を掛けたものに、前記ブラインド化されたベース・ハッシュを合計したものとの積を、前記デバイスのエンコード計算ネットワークで算出するステップと
により算出するように構成されている、請求項９に記載の点乗算デバイス。
【請求項１１】
入力メッセージにおけるシグネチャを生成する際に使用するための楕円曲線におけるベース・ポイントと乗数との間の楕円曲線における点乗算を算出するホワイト・ボックスのための電子点乗算方法であって、当該方法は
−  前記楕円曲線における複数の事前に算出された補助点と前記ベース・ポイントとを保存するステップと、
−  前記入力メッセージのベース・ハッシュを受け取るステップと、
−  複数のジョイント・エンコーディングの第１及び第２セットの形式で前記ベース・ハッシュから複数の被導出ハッシュと前記乗数とを導出するステップであって、前記第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記第２セットも前記複数の被導出ハッシュを含み、前記第２セット内の前記被導出ハッシュの各々は、前記複数の被導出ハッシュのうち少なくとも１つの他のものとジョイント・エンコードされている、ステップと、
−  複数のジョイント・エンコーディングの前記第１セットから、ブラインド化されたベース乗数を算出するステップと、
−  複数のジョイント・エンコーディングの前記第２セットから、複数のブラインド化された補助乗数を算出するステップであって、前記複数のブラインド化された補助乗数は前記複数の補助点に対応している、ステップと、
−  前記楕円曲線における前記ベース・ポイントと前記ブラインド化されたベース乗数との前記点乗算、及びブラインド化された補助乗数と補助点との前記複数の点乗算の点加算を算出することにより、前記乗数と前記ベース・ポイントとの前記点乗算を求めるために、ブラインド化された楕円曲線計算を実行するステップであって、前記ブラインド化されたベース乗数は、複数のジョイント・エンコーディングの前記第１セットにおける被導出ハッシュとエンコードされた乗数との加重和であり、前記複数のブラインド化された補助乗数は、前記加重和における前記被導出ハッシュを補正するために選択されている、ステップと
を含む点乗算方法。
【請求項１２】
シグネチャの第２コンポーネントを、
複数のジョイント・エンコーディングの更なる第１及び第２セットの形式で前記ベース・ハッシュから、前記乗数と更なる複数の被導出ハッシュとを導出するステップであって、前記更なる第１セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記更なる第２セットは、それぞれが前記ベース・ハッシュとジョイント・エンコードされる前記複数の被導出ハッシュを含む、ステップと、
複数のジョイント・エンコーディングの前記更なる第１セットから、ブラインド化された乗数を、前記更なる第１セットにおける前記エンコードされた乗数の加重平均に、前記更なる第１セットにおける被導出ハッシュと前記エンコードされた乗数との加重平均を乗算したものとして算出するステップと、
複数のジョイント・エンコーディングの前記更なる第２セットから、ブラインド化されたベース・ハッシュを、前記更なる第２セットにおける前記エンコードされたベース・ハッシュの加重平均として、デ・ブラインディング値を、前記エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として算出するステップと、
前記ブラインド化された乗数の逆数と、デ・ブラインディング値と、前記シグネチャの第１コンポーネントにプライベート値を掛けたものに、前記ブラインド化されたベース・ハッシュを合計したものとの積を、デバイスのエンコード計算ネットワークで算出するステップと
により算出するステップを更に含む請求項１１に記載の点乗算方法。
【請求項１３】
請求項１１に記載の方法をプロセッサ・システムに実行させる命令を表現する一時的又は非一時的なデータを含むコンピュータ読み取り可能な媒体。
【国際調査報告】
2020510879.tif 000019
2020510879.tif 000020