JP2020510879A - 楕円曲線点乗算デバイス及び方法 - Google Patents

楕円曲線点乗算デバイス及び方法 Download PDF

Info

Publication number
JP2020510879A
JP2020510879A JP2019549551A JP2019549551A JP2020510879A JP 2020510879 A JP2020510879 A JP 2020510879A JP 2019549551 A JP2019549551 A JP 2019549551A JP 2019549551 A JP2019549551 A JP 2019549551A JP 2020510879 A JP2020510879 A JP 2020510879A
Authority
JP
Japan
Prior art keywords
multiplier
base
hash
point
blinded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019549551A
Other languages
English (en)
Other versions
JP7123959B2 (ja
Inventor
リートマン,ロナルト
ホーフ,セバスティアーン ヤコビュス アントニユス デ
ホーフ,セバスティアーン ヤコビュス アントニユス デ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of JP2020510879A publication Critical patent/JP2020510879A/ja
Application granted granted Critical
Publication of JP7123959B2 publication Critical patent/JP7123959B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3013Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the discrete logarithm problem, e.g. ElGamal or Diffie-Hellman systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

電子点乗算デバイス(100)は、暗号プロトコルで使用するための楕円曲線(E)におけるベース・ポイント(G)と乗数(k)との間の楕円曲線における点乗算(kG)を算出するために提供される。デバイスは、複数のジョイント・エンコーディング(Ai)の第1セットから、ブラインド・ベース乗数(A,131)と、複数のジョイント・エンコードの第2セットから、複数のブラインド化された補助乗数(ηi,136)を算出する。デバイスは、楕円曲線におけるベース・ポイントとブラインド化されたベース乗数との点乗算、及びブラインド化された補助乗数と補助点との複数の点乗算の点加算を計算することにより、乗数(k)とベース・ポイント(G)との点乗算(141)(kG)を求める。ブラインド化されたベース乗数及び補助乗数は、楕円曲線計算の実行中に平文フォーマットで表現されてもよい。<図1>

Description

本発明は、点乗算デバイス、点乗算方法、及びコンピュータ読み取り可能な媒体に関する。
多くのアプリケーションでは、メッセージ及び署名者の真正を証明する目的で、メッセージに署名するためにソフトウェアが使用される。署名者は、秘密鍵及びメッセージ・ダイジェストを使用してメッセージに署名する。メッセージ及びシグネチャを受信する誰もが、送信者の公開鍵を使用してシグネチャを検証することができる。セキュア署名システムは、以下の特性を有するべきである。
1.公開鍵及び他の公開システム・パラメータが与えられても、秘密鍵を発見することは困難であるべきである。
2.ダイジェストは、衝突及びプレ・イメージを発見することが困難な暗号ハッシュであるべきである。これは、攻撃者が送信者になりすますこと、例えば送信者からの古いメッセージのシグネチャを彼自身のメッセージで再利用することによってなりすますことを防止する。
3.秘密鍵は秘密に保たれ、送信者にのみ知られるべきである。
最初の2つの要件は、ブラック・ボックス・セキュリティの要件である。楕円曲線ディジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm:ECDSA)等の署名スキームは、これらの要件を満たすと考えられる。第3の要件は、秘密鍵が漏洩し得る多くの方法が存在する点で、異なる性質のものである。以下は潜在的な漏洩の非網羅的なリストである。
・システムは、新しいシグネチャごとに自分の秘密鍵を入力することを署名者に要求することができる。鍵ロガー(a key logger)がシステムにインストールされている場合、攻撃者は、署名者によってタイプされつつある間に秘密鍵を読み取ることができる。
・秘密鍵はファイル・システムに格納され得る。ファイル・アクセス許可が正しく設定されていたとしても、システムにおける悪意のルート・ユーザは秘密鍵を読み取ることができる。
・秘密鍵は、暗号化されたファイルでファイル・システムに格納されてもよく、ファイルを解読するにはパスフレーズをタイプ入力する必要がある。鍵ロガーをインストールすることを管理してファイルにアクセスする攻撃者は、秘密鍵を取得することが可能である。
・秘密鍵は、署名プログラム内で暗号化された形式で格納され、実行中にのみ解読されてもよい。解読鍵もプログラム内に格納されており、ユーザが正しいパスフレーズを入力した場合にのみ、解読はアクティベートし得る。ここで、オペレーティング・システムにおけるバグを利用することによって、他のユーザのプロセスのメモリを読み取ることができる攻撃者は、解読された秘密鍵をメモリから読み取ることができる。
ECDSAプロトコル等の暗号プロトコルの実装を秘密鍵の漏洩から保護することが望まれている。
本発明者等は、ECDSAプロトコルにおける多くの脆弱性は、ECDSAが有する楕円曲線上の点乗算演算(the point multiplication operation)によって引き起こされることを悟った。更に、楕円曲線計算は、多くの他の暗号プロトコルの要素であり、ホワイト・ボックス・モデルにおける攻撃に対する耐性を増大させた点乗算の実装を有することが更に望ましい。
電子点乗算デバイスは、暗号プロトコルで使用するための楕円曲線におけるベース・ポイント(a base point)と乗数(a multiplier)との間の楕円曲線における点乗算を算出するために提供される。デバイスは、
− 楕円曲線における複数の事前に算出された補助点とベース・ポイントとを保存するストレージと、
− 入力メッセージのベース・ハッシュを受け取るように構成される入力インターフェースと、
− プロセッサ回路とを有し、プロセッサ回路は
− 複数のジョイント・エンコーディングの第1及び第2セットの形式でベース・ハッシュから複数の被導出ハッシュと乗数とを導出するステップであって、第1セットは、それぞれが乗数とジョイント・エンコードされる複数の被導出ハッシュを含み、第2セットも被導出ハッシュを含み、第2セット内の被導出ハッシュの各々は、複数の被導出ハッシュのうち少なくとも1つの他のものとジョイント・エンコードされている、ステップと、
− 複数のジョイント・エンコーディングの第1セットから、ブラインド化されたベース乗数(a blinded based multiplier)を算出するステップと、
− 複数のジョイント・エンコーディングの第2セットから、複数のブラインド化された補助乗数を算出するステップであって、複数のブラインド補助乗数は複数の補助点に対応している、ステップと、
− 楕円曲線におけるベース・ポイントとブラインド化されたベース乗数との点乗算、及びブラインド補助乗数と補助点との多点乗算を計算することにより、乗数とベース・ポイントとの点乗算を求めるために、ブラインド楕円曲線計算を実行するステップと
を実行するように構成されている。
興味深いことに、必要な点乗算kGは、ベース・ポイントとだけでなく複数の追加の補助点との多点乗算に変換される。システムを攻撃するには、攻撃者が乗算kGから乗数kを発見するか、又は補助点とベース・ポイントとの間の関係を決定することを攻撃者に要求する。これらは両方とも、実際上困難であると思われる楕円曲線上の離散対数問題を解くことを必要とし、例えば、暗号プロトコルによって保護される資産よりも多くのリソースを必要とすることは言及に値する。代替的に、攻撃者は、フォールト攻撃を使用してシステムを攻撃しようと試みるかもしれないが、これらはエンコーディングのシステムを使用して対処され、詳細については以下で更に説明される。
興味深いことに、ブラインド化されたベース乗数及び複数のブラインド補助乗数は、ブラインド楕円曲線計算の実行中にプレーン・フォーマットで表現され得る。これは、楕円曲線計算のために、ホワイト・ボックス実装の形態で保護が必要とされないことを意味する。本発明者等は、楕円曲線アルゴリズムはサイド・チャネル攻撃に対して不都合に影響を受けやすいので、楕円曲線計算を保護するホワイト・ボックスは困難であることを見出した。複数の補助点にわたって楕円曲線乗算を拡張することによって、楕円曲線暗号におけるこの弱点は対処され;ホワイト・ボックス・モデルにおいて増大した耐性を有する実装をもたらす。
興味深いことに、実施形態は、所望の第1計算結果が第2計算結果から導出され得るように、ホワイト・ボックス技術、例えばルック・アップ・テーブルを介してエンコードされたデータに関して動作する技術と、ブラインディング、例えば、第1プレーン計算を別の第2プレーン計算に置き換える技術とを組み合わせる。
点乗算デバイスは電子デバイスであり、例えばモバイル・フォン等のモバイル電子デバイスであってもよい。点乗算デバイスはまた、例えばセット・トップ・ボックス、スマート・カード、コンピュータ等であってもよい。
ここで説明される点乗算デバイス及び方法は、広範囲の実用的なアプリケーションに適用され得る。このような実用的なアプリケーションは、楕円曲線計算、特にECDSAプロトコルを含む暗号プロトコルを含む。ECDSAは、例えば認証や、データの完全性などを必要とするアプリケーションにおいて、データに署名するために使用され得る。そのようなアプリケーションは、メッセージング・アプリケーション、メール・プログラム、金融アプリケーション等を含むことができる。
本発明による方法は、コンピュータで実施される方法で、又は専用ハードウェアで、又はそれら両方の組み合せでコンピュータ上で実施され得る。本発明による方法の実行可能なコードは、コンピュータ・プログラム製品に格納されてもよい。コンピュータ・プログラム製品の具体例は、メモリ・デバイス、光ストレージ・デバイス、集積回路、サーバー、オンライン・ソフトウェア等を含む。好ましくは、コンピュータ・プログラム製品は、プログラム製品がコンピュータで実行される場合に本発明による方法を実行するための、コンピュータ読み取り可能な媒体に格納される非一時的なプログラム・コードを含む。
好ましい実施形態では、コンピュータ・プログラムは、コンピュータ・プログラムがコンピュータで実行される場合に、本発明による方法の全てのステップを実行するように構成されるコンピュータ・プログラム・コードを含む。好ましくは、コンピュータ・プログラムは、コンピュータ読み取り可能な媒体で具現化される。
本発明の別の態様は、コンピュータ・プログラムをダウンロードに利用可能にする方法を提供する。この態様は、コンピュータ・プログラムが、例えば、アップル社のアップル・ストア、グーグル社のプレイ・ストア、又はマイクロソフト社のウィンドウズ(登録商標)・ストアにアップロードされる場合、及びコンピュータ・プログラムがそのようなストアからダウンロードするために利用可能である場合に使用される。
本発明の更なる詳細、態様、及び実施形態は、単なる例として、図面に関連して説明される。図中の要素は、簡略化及び明確化のために示されており、必ずしも縮尺通りに描かれてはいない。図面において、既に説明された要素に対応する要素は、同じ参照番号を有し得る。図面において、
図1は、点乗算デバイスの実施形態の一例を概略的に示す。 図2は、複数のジョイント・エンコーディングの第1セットを導出する実施形態の一例を概略的に示す。 図3は、複数のジョイント・エンコーディングの第2セットを導出する実施形態の一例を概略的に示す。 図4は、ECDSAデバイスの実施形態の一例を概略的に示す。 図5は、点乗算方法の実施形態の一例を概略的に示す。 図6は、ECDSA署名方法の実施形態の一例を概略的に示す。 図7aは、コンピュータ・プログラムを含む書き込み可能な部分を有する実施形態によるコンピュータ読み取り可能な媒体を概略的に示す。 図7bは、実施形態によるプロセッサ・システムの表現を概略的に示す。 図1及び図4における参照番号のリスト 100 点乗算デバイス 110 ストレージ 120 入力インターフェース 122 ベース・ハッシュ 130 第1エンコード計算ネットワーク 131 ブラインド・ベース乗数 135 第2エンコード計算ネットワーク 136 複数のブラインド補助乗数 140 楕円曲線計算ユニット 141 点乗算結果 150 第3エンコード計算ネットワーク 151 ブラインド・ベース乗数 155 第4エンコード計算ネットワーク 156 ブラインド・ベース・ハッシュ 157 非ブラインド値 160 第6エンコード計算ネットワーク 161 ECDSA署名の第2コンポーネント 400 ECDSAデバイス
本発明は、多くの異なる形態の実施形態を可能とするが、1つ又は複数の特定の実施形態が図示されて詳細に説明される。本開示は、本発明の例示的な原理と考えられるべきであり、図示されて説明される特定の実施形態に本発明を限定するようには意図されていないことに理解されたい。以下では、理解のために、実施形態の要素が説明に記載されている。しかしながら、それぞれの要素は、それらによって実行されるように説明される機能を実行するように構成されていることは明らかであろう。
更に、本発明は実施形態に限定されず、本発明は、ここに記載された、又は相互に異なる従属請求項に記載された全部及び各々の新規な特徴又は特徴の組み合せに見出される。
本発明者等は、計算がサイド・チャネル攻撃に対して著しく脆弱であるので、楕円曲線計算を保護することは困難であることを見出した。発明者等は、サイド・チャネル攻撃は、それらが本来はグレー・ボックス・モデルを狙っていたとしても、ホワイト・ボックス・モデルにも首尾よくしばしば適用され得ることを見出した。エンコードされたデータに作用する楕円曲線計算の直接的なホワイト・ボックス実装が達成されたとしても、既存の又は将来のサイド・チャネル攻撃はそれを打ち破る可能性が依然として高い。グレー・ボックス・モデルでは、攻撃者は、ある部分的なサイド・チャネル情報、例えば、デバイスの電力使用にアクセスすることができる。ホワイト・ボックス・モデルでは、攻撃者は内部状態に完全にアクセスすることができる。
楕円曲線計算は、例えば実行されるECC点乗算を、ホワイト・ボックス・モデルにおける攻撃者などのシステムのユーザから隠す要望が存在し得る様々な暗号アルゴリズムで使用される。楕円曲線計算を使用する暗号アルゴリズムの例は、楕円曲線ディフィ・ヘルマン(ECDH)キー・アグリーメント、楕円曲線統合暗号スキーム(ECIES)、楕円曲線ディジタル署名アルゴリズム(ECDSA)、エドワード曲線ディジタル署名アルゴリズム(EdDSA)、ECMQVキー・アグリーメント・スキーム、及びECQVインプリシット証明スキームを含む。
以下の実施形態は、楕円曲線ディジタル署名アルゴリズム(ECDSA)に焦点を当てている。ECDSAは重要な署名アルゴリズムであり、そのために、ホワイト・ボックス・モデルにおいて増加した耐性を有する実装を得ること、好ましくは楕円曲線シグネチャ・アルゴリズムの楕円曲線計算を保護するホワイト・ボックスを事実上なしに得ることが望ましい。なお、以下に開示される点乗算技術はまた、他のECCアルゴリズムにおいても使用され得る。
本発明者等は、単一の曲線ポイントに対する楕円曲線計算を複数の曲線ポイントにわたって分割することによって、エンコードされたデータに関するECC演算を実行する方法を見出した。後者の計算は、平文でさえ実行されてもよいが、多点演算へのつながりは、例えばエンコードされたデータに対して動作するホワイト・ボックス・フォーマットで実行されてもよい。興味深いことに、楕円曲線乗算のセキュリティは、困難な問題であると推定される楕円曲線の離散対数問題に関連する。
以下、ECDSA署名システムが、ECDSAに対する多数の既知の攻撃及び可能な対策と共に説明される。対策を講じなければ、これらの攻撃は、攻撃者が秘密鍵を取り出すことを可能にし得る。次に、少数のより進んだ攻撃が開示され、より進んだ攻撃は、より進んでいない攻撃に対して対策が使用されている場合でさえ機能する。これらのより進んだ攻撃に対しても保護するECDSA実装を見出すことが望ましい。
以下、ECDSAの簡単な説明を行う。ECDSAの実施形態では、以下の前提を有する。
・p個の要素を有する有限体における楕円曲線E。ここで、O∈Eは単位元を示す。
・素数位数qのE⊆E×F上の点G。即ち、[q]G=O。ここで[q]GはG自身をq回加算することを意味する。
・関数μ:F→Z
・ハッシュ関数H:{0,1}→Z
・署名者の秘密鍵x∈Z 、及び公開鍵P=[x]G∈E
ECDSAアルゴリズムのセキュリティは、Pからxを得ることが困難であるという事実に依存している。これはECDSA仮定として知られている。メッセージMに署名するため、以下のステップを実行してもよい:
・h=H(M)を計算する。ここで、Hは暗号ハッシュ関数(例えば、SHA256)である。
・乱数k∈Z を選択し、以下を計算する。
・[k]G=(([k]G),([k]G))及びr=μ(([k]G)))
・s=(h+rx)k−1∈Z
・(r=0又はs=0ならば、新たなkとともに反復する)
・シグネチャは(r,s)である。
関数μは、例えば楕円曲線の点座標などの楕円曲線ポイントを整数にマッピングする。例えばμは楕円曲線ポイントのx座標に対するmod q演算であってもよい。様々な実施形態全体を通でて、楕円曲線ポイントは、圧縮された楕円曲線ポイントであってもよい。圧縮された楕円曲線ポイントでは、y座標の符号のみ維持される、又はy座標が全く維持されないことがある。
シグネチャ検証を検証するために、M及びシグネチャ(r,s)を受け取り、u=s−1H(M)mod q,v=s−1r mod q,及びEにおける点C=(C,C)=[u]G+[v]Pを計算することができる。シグネチャは、μ(C)=rである場合でその場合に限って有効である。秘密データは取り扱われないので、シグネチャ検証演算はセンシティブな演算ではない点に留意されたい。
スクレーピング攻撃。ECDSAを攻撃するために、攻撃は、メモリからx又はyをかき集めようとするかもしれない。攻撃者が、ハッシュh=H(M)に関するMのシグネチャ(r,s)の計算に使用されたkの値を知っている場合、攻撃者は、x=r−1(ks−h)mod qとして秘密鍵を計算することができる。従って、プログラム・メモリからkの値を単純にかき集める攻撃に対処することは重要である。これは、kがプログラム・メモリにおいて決して明確には現れないことを保証することにより行われることが可能である。これはxの値にも当てはまる。
例えば、秘密値xがメモリから読み出される攻撃から保護するために、ある者はxをエンコードし、エンコードされたxでのみ計算しようとするかもしれない。同様に、秘密値kがメモリから読み出される攻撃から保護するために、ある者は、エンコードされた形式で直接的にkを生成し、エンコードされたkでのみ計算しようとするかもしれない。
別の問題は、2つのシグネチャが同じkを使用して生成される場合に、秘密鍵xが直接的に続くことである。
Figure 2020510879
攻撃者は、乱数発生器の出力を、以前の出力又は固定値に置き換えることによって、これを起こすことができる。これはまたkがエンコードされる場合にも機能する:エンコードされたkの値は、以前の実行からのエンコードされたkの値、又は固定値によって置換される。攻撃者がkの値を知らないことは重要ではない。
従って、数kが攻撃者によって予測可能であってはならないことが重要である。例えば、乱数発生器は、一般に、kを生成するために使用される。不都合なことに、ホワイト・ボックス攻撃の状況で乱数発生器を使用することは困難である。攻撃者は、乱数発生器を、固定値を返すルーチンで置換しようとするかもしれない。たとえkがエンコードされていたとしても、攻撃者は、以前の実行で得られたkの値を再生しようと試みることができる。
例えば、乱数生成器がシードを生成するために時刻関数を呼び出すと仮定すると、攻撃者は、返された値を固定値で置換し、それによって効果的にkを一定にすることができる。この問題に対する解決策は、入力メッセージ及び選択的に秘密鍵xから、適切なkを計算するために決定論的アルゴリズムを使用することである。実施形態では、擬似乱数発生器のパラメータは、コンパイル時にランダムに選択され、その結果、これらのパラメータは実行ごとに異なる。乱数発生器を置き換えるために、入力メッセージ又はそのハッシュをランダム乗数(a random multiplier)にマッピングする関数は、デ・ランダム関数(a de−randomization function)と呼ばれる。デ・ランダム関数を使用することにより、実装が入力の決定論的関数を生成するシグネチャを作成する。
kが特に脆弱なパラメータであるもう1つの理由は、
・ r=μ((kG))という計算において、
・ s=(h+rx)k−1という計算において、
2回使用された後に忘却されなければならないことである。
以下、多くのより進化した攻撃が議論される。第1攻撃では、楕円曲線における[k]Gの計算が狙われる。楕円曲線上の点Gの倍数[k]Gの計算は、通常、モンゴメリ・アルゴリズムにより行われ:モンゴメリ・アルゴリズムの各ステップは、kの1ビット又はせいぜい数ビットを使用する。これらのビットを能動的に修正し、結果として得られる出力がどのように変化するかを観察することによって、たとえこれらのビットがエンコードされている場合であっても、kの全てのビットの実際の値が容易に決定され得る。
線形な又はブロックごとの非線形エンコーディングと組み合わせた決定論的なkは、フォールト攻撃を使用して、以下のように攻撃され得る。攻撃者は同じメッセージを4回供給する。
・ゼロ次ラン:フォールトは注入されず、シグネチャ(r,s)を生成する。
・第1ラン:エンコードされたk(の1ブロック)に幾らかのフォールトを注入し、エンコードされたk=k+δを与え、シグネチャ(r,s)を生成する。
・第2ラン:エンコードされたkに別のフォールトを(例えば、別のブロックに)注入し、エンコードされたk=k+δを与え、シグネチャ(r,s)を生成する。
・第3ラン:エンコードされたkにフォールトの合計を注入し、シグネチャ(r,s)を生成する。
エンコーディングが線形であるか、又は2つのブロックが干渉しない場合、第3ランにおけるkに関する影響は、第1及び第2ランにおける影響の合計である:δ=δ+δ
そして秘密鍵xは線形代数によって見出されることが可能である:
Figure 2020510879
ブロック・エンコーディングは、例えば乗数kの基礎となる値のビット・サイズが、収容され得る最大エンコーディングのビット・サイズよりもはるかに大きくなり得るので、ホワイト・ボックス・エンコーディングで一般に使用される。これらの攻撃は、ECDSA計算で使用される乗数kを保護するニーズ、特にECDSA乗算中に乗数kを保護するニーズが存在することを示している。
図1は、点乗算デバイス100の実施形態の一例を概略的に示す。点乗算デバイス100は、乗数kと楕円曲線E上のベース・ポイントGとの楕円曲線Eにおける点乗算kGを計算するように構成される。楕円曲線上の上記の点乗算は、複数の暗号プロトコルに必要とされる基礎である。特に、点乗算デバイス100は、ECDSAシグネチャを計算するために使用され得る。そのような例は、図4に関して詳細に説明される。
点乗算デバイス100はストレージ110を含む。ストレージ110は、点乗算に必要なパラメータ、例えば点乗算が使用される暗号プロトコルから導出されるパラメータを格納する。特に、ストレージ100は、楕円曲線におけるベース・ポイント(又は基点)、及び複数の事前に計算された補助点Gもまた格納する。実施形態において、点乗算kGは、ポイントG及びGに対する複数の点乗算に、これらのポイントで使用される乗数からkを復元することは困難である仕方で変換される。これは、楕円曲線計算の実装が、平文においてさえ、点乗算デバイス100の他の部分よりも保護されないことを許容する。特に、一実施形態では、楕円曲線計算は、ホワイト・ボックス方式では実行されず、例えばエンコードされたデータに関して作用しない。前述の曲線点に加えて、ストレージ110は、追加のデータを含むことができ、そのいくつかの例は本明細書で与えられる。例えば、点乗算デバイス100が、エンコードされたデータに関して動作するテーブル・ネットワークを使用して、例えばホワイト・ボックス実装部分のようなエンコードされた部分を実装する場合、テーブル・ネットワーク内のルック・アップ・テーブルが、ストレージ110に格納されてもよい。
点乗算デバイス100は、入力メッセージMのベース・ハッシュ122を受け取るように構成された入力インターフェース120を更に有する。例えば、入力インターフェース120は、あるアプリケーションによって使用されるアプリケーション・プログラミング・インターフェース(API)であってもよい。例えば、点乗算デバイス100は、より大きなアプリケーション、例えばECDSAアプリケーションのサブルーチンとして実装されてもよい。点乗算デバイス100はまた、必要とされる場合には、例えばECDSAアプリケーションによって呼び出されるライブラリ等の協働するアプリケーションとして実装されてもよい。
一実施形態では、点乗算デバイス100は、入力メッセージMを受信し、ハッシュhを計算するように構成されたハッシュ・ユニット122を有する。ハッシュの出力及び以下に説明される点乗算への入力は、入力インターフェース120によって形成され得る。ベース・ハッシュ122の計算は、ベース・ハッシュが機密ではないので、平文で実行されることができる。ハッシュ関数ユニットは、エンコードされる方法でハッシュを計算するように構成されてもよい。但し、後者は必須ではない。入力インターフェース120は、入力メッセージを平文形式で受信することができる。
一実施形態では、入力インターフェースは、ベース・ハッシュ122又は入力メッセージMを取得するために使用される通信インターフェースを有するか、又はそれと協働することができる。例えば、通信インターフェースは、例えば有線接続などの有線インターフェースであってもよい。例えば、通信インターフェースは、接続パッド又は接続ポートを含むことができる。通信インターフェースはまた、ディジタル有線ネットワーク接続、又は無線ネットワーク接続、又はハイブリッド等であってもよい。例えば、通信インターフェースは、アンテナを含むことができる。
点乗算デバイス100は、楕円曲線点乗算のために配置されたプロセッサ回路を有する。楕円曲線点乗算の実行は、具体例が以下に示されるプロセッサ回路で実施される。図1は、プロセッサ回路の機能ユニットであり得る機能ユニットを示す。例えば、図1は、プロセッサ回路の可能な機能構成の青写真として使用されてもよい。プロセッサ回路は、図1におけるユニットと別個には示されていない。例えば、図1に示される機能ユニットは、例えば、図1に示される1つ以上の特定の機能ユニットを実装するように協働する複数の半導体ゲート等のハードウェアにおいて、全体的又は部分的に実装されてもよい。例えば、図1に示される機能ユニットは、点乗算デバイスに記憶され、点乗算デバイスのマイクロプロセッサによって実行可能なコンピュータ命令において、全体的又は部分的に実装されてもよい。ハイブリッド実施形態では、機能ユニットは、例えば暗号コプロセッサ等のコプロセッサとして部分的にハードウェアで、及び点乗算デバイスに格納され実行されるソフトウェアで部分的に実装される。電子点乗算デバイス100は、ECDSA署名オペレーション等の暗号プロトコルのために構成され得る。
点乗算デバイス100は、複数のジョイント・エンコーディングの第1セットの形式で、ベース・ハッシュh122から導出される複数のハッシュh及び乗数kを導出するように構成される。第1セットは、各々が乗数kと一緒にエンコードされる複数の被導出ハッシュを含む。数式では次のとおりである:A=Enc(k,h),i=0...2n−1。例えば点乗算デバイス100、例えばプロセッサ回路は、複数のジョイント・エンコーディングの第1セットを計算するように構成された第1エンコード計算ネットワーク130とともに構成されてもよい。
図2は、複数のジョイント・エンコーディングの第1セットを導出する実施形態の一例を概略的に示す。例えば、図2のシステムは、第1エンコード・ネットワーク130によって使用されてもよい。図2に示されているのは、例えばベース・ハッシュ122等のベース・ハッシュ201とそれ自体とのジョイント・エンコーディングである。図2及び図3では、201におけるように、それぞれ積み上げて配置された2つのブロックが、ジョイント・エンコーディングを示すために使用されている。
エンコードされたデータを参照する場合、秘密エンコーディングが使用されることが理解される。例えば、コンパイル時に、様々なデータ項目のエンコーディングが選択される。例えば、そのようなエンコーディングは、全単射関数であってもよいし、ランダムに選択されてもよい。データが平文又は平文フォーマットである場合、データは公開エンコーディングで表現される。例えば、ASCII表現は公開されているので、例えばASCIIのプログラムで表現される文字は平文である。しかしながら、文字が秘密又は秘密の全単射によってマッピングされていた場合、8ビットを8ビットにマッピングすると、文字はエンコードされる。
「Enc」という標記はプライベート・エンコーディングによるエンコーディングを示す。このようなエンコーディングは、コンパイル時にランダムに選択され得る。例えば、エンコーディングは、あるサイズのビット・シーケンスを同じサイズのビット・シーケンスにマッピングする全単射であってもよい。そのようなエンコードされたデータを受信し、運用し、又は生成するエンコードされたネットワークが任意の特定のエンコードに適合され得るので、各々のエンコーディングは異なるエンコーディングであってもよいことが理解される。複数の異なるエンコーディングを使用することは、エンコーディングの攻撃をより困難にする。上付き文字も下付き文字もなしに同じ表記法「Enc」が使用されているが、それらの各々は、異なるエンコーディングであってもよく、またそれが好ましいことが理解される。
例えば、それ自体201と一緒にエンコードされるベース・ハッシュ122は、Enc(h,h)として表記されてもよい。ジョイント・エンコーディングは、入力がブロックに区分けされ、より小さなジョイント・エンコーディングが第1入力のブロック及び第2入力のブロックに適用される、ブロックごとのジョイント・エンコーディングであってもよい。エンコーディングは、バイト単位又はニブル単位のジョイント・エンコーディングであるとすることができる。例えば、第1データ・アイテムa及び第2データ・アイテムbに作用するジョイント・エンコーディングEncは、Enc等のより小さなエンコーディングのシーケンスを含むことができ、例えば、第1及び第2データ・アイテムは、より小さなデータ・アイテムa及びbの第1及び第2シーケンスであり;2つのシーケンスは、好ましくは、同じ長さを有する。より小さなエンコーディングEncは、例えばEnc(a,b)のように、a及びbを一緒にエンコードすることができる。エンコーディングEncは全単射であってもよい。例えば、Encはルック・アップ・テーブルとして実装されてもよい。例えば、より小さなデータ・アイテムa及びbは、ニブル又はバイトであってもよく、Encは8ビットから8ビットへの、又は16ビットから16ビットへの全単射であってもよい。これらは便利な数であるが、他のブロック・サイズ、例えば3又は5ビットでのエンコーディングも可能である。より小さなエンコーディングEncは、例えばコンパイル時にランダムに選択されてもよい。
例えば、一実施形態では、第1エンコーディング・ネットワーク130は、プレーンで、例えばパブリック・エンコーディングでベース・ハッシュ122を受信し、ベース・ハッシュ122を先ずジョイント・エンコーディングする。例えば、ベース・ハッシュは、ニブルのシーケンスとして受信されてもよく、その各々は、より小さなエンコーディングを介してそれ自体と一緒にエンコードされる。
図2は一緒にジョイント・エンコードされた関数ペアの第1セット(f,g)を更に示す。エンコードされた関数ペアは、エンコードされた計算ネットワーク又はその一部であり、エンコードされた関数ペアの第1コンポーネント(例えばこの例では、f)は、ジョイント・エンコーディングの第1コンポーネント(この例では、h)に作用し、エンコードされた関数ペアの第2コンポーネント(例えばこの例では、g)は、ジョイント・エンコーディングの第2コンポーネント(この特定の例ではまた、h)に作用する。
原則として、エンコードされた計算ネットワークとして実装され得る関数に制限はなく;原則として、任意の関数がこのように実装され得る。しかしながら、本発明者等は、ブロック暗号設計とは区別される所謂SLT(Substitution−Linear Transformation)タイプの暗号化が、デ・ランダムf及び多様化関数g(de−randomization f and diversification functions g)として使用するために特に効率的に適用され得ることを見出した。SLTタイプのブロック暗号では、複数の置換層、線形変換層、及びキー加算層が、キー依存暗号化出力を生成するために入力に交互に適用される。そのような構成を点乗算デバイス100に適用するために、ある者はキー加算層を削除し、又は例えばキー加算層を固定された(例えばランダムな)キーに修正するかもしれない;固定されたキーを有するキー加算層は、その前又は後に来る線形層に結合され得る。置換層は、置換ボックスのシーケンスとして効率的に実装されてもよく、例えばルック・アップ・テーブルとして実装されてもよい。エンコードされた入力に対する線形演算の効率的な実装もまた知られている。このように適合され得るSLTブロック暗号の一例は、AESである。
エンコード・ネットワーク130は、ホワイト・ボックス暗号化を使用して実装されてもよい。ホワイト・ボックス実装は、ホワイト・ボックス・コンテキストにおける攻撃に耐えるように設計された暗号化実装である。ホワイト・ボックス・コンテキストでは、攻撃者は、ソフトウェアの実装及び実行に対する完全な可視性を有する。たとえそうであっても、ホワイト・ボックス実装は、プログラムからの秘密鍵の抽出を防止することを目的とする。
ホワイト・ボックス暗号化では、例えば、データに全単射関数を場合によっては機知(a salt)とともに適用することによって、エンコードされたデータに対してオペレーションが実行される。次いで、コンピュータ・プログラムは、エンコードされたデータに作用するテーブル・ネットワークとして表される。そのような実装の具体例は次の文献に見出され得る:“White−Box Cryptography and an AES Implementation”,by S. Chow et al.(本願のリファレンスに組み込まれる)。“A White−Box DES Implementation for DRM Applications”by S. Chow,et al.という論文では、データ暗号化標準(DES)のホワイト・ボックス実装が提示されている(本願のリファレンスに組み込まれる)。これらの論文は、ブロック暗号を算出するためにテーブル・ネットワークが使用され得るように、いくつかの中間的な方法を介して、通常の暗号がホワイト・ボックス形態の実装に如何にして変換され得るかを示している。特に、これらの論文は、SLT暗号をどのように実装するか、及びそれらのコンポーネント(置換層及び線形層など)を示す。テーブル・ネットワークは、装置のストレージに記憶される、複数のエンコードされた協働するルック・アップ・テーブルとして実装され得る。テーブル・ネットワークは、1つ以上の入力を受信し、1つ以上の出力を生成する。テーブル・ネットワークでは、複数のルック・アップ・テーブルが使用されてもよく、例えばテーブル・ストレージに格納されてもよい。テーブルは、他のテーブルの入力及び/又は出力から直接的に入力を取得する。テーブルは、1つの入力、2つの入力、又は2つより多い入力を取ることができる。
図2は、図示の複数のジョイント・エンコードされた関数ペアが、ジョイント・エンコードされた関数ペア211−213であり、乗数及び多様化させられたハッシュ(a diversified hash)のジョイント・エンコーディングを生成するために、ジョイント・エンコードされたベース・ハッシュ201に適用されることを示す。ジョイント・エンコードされた関数ペアの各ペアは、同じデ・ランダム関数fを含み、その結果、生成されたジョイント・エンコーディングの各々が乗数kを含むようになることに留意されたい。図2は、それぞれが同じ乗数を含むジョイント・エンコーディング221−223を示す。例えばジョイント・エンコーディング221−223等のジョイント・エンコーディングにおいて使用されるエンコーディングは、異なってもよいことに留意されたい。更に、使用されるエンコーディングは、攻撃者に知られておらず、例えば、設計者によって秘密に選択されてもよく、コンパイル時にランダムに選択されることさえ可能である。ジョイント・エンコーディングの数は2nに等しく、nはセキュリティ・パラメータであり、好ましくはnは少なくとも2である。
デ・ランダム関数fは乱数発生器と置き換わる。これは、ベース・ハッシュを入力として取り得るが、更に、点乗算デバイス100の秘密鍵を入力として受け取ることもできる。ハッシュ多様化関数は、単一のハッシュを複数のハッシュに多様化させるように応対する。デ・ランダム関数及び多様化関数の双方は、ランダム関数であってもよい。それらは、必要に応じて各自のドメインを縮小することができる。例えば、ベース・ハッシュが256ビットを有するSHA−256ハッシュである場合、関数f及び/又は関数gは、例えば80ビット等のより小さなドメインにマッピングすることができる。
一実施形態では、ジョイント・エンコード関数が、ジョイント・エンコーディングEnc(h,h)の代わりに、単独にエンコードされたハッシュEnc(h)に適用される。一実施形態では、一緒にエンコードされる関数ペアは、ベース・ハッシュのプレーン表現に直接的に適用され、エンコーディング並びにエンコード関数作用を組み込む。ランダム関数を選択するために、設計者は、例えばSLTタイプ関数等の関数テンプレートを、たとえば夫々8である或る数のSラウンド及び或る数のLラウンド、置換ボックスのサイズ、例えば4又は8ビット幅、例えば夫々256及び80等の入力及び出力のビット・サイズとともに固定し、これらのパラメータの中で置換ボックス及び線形変換をランダムに選択することができる。置換ボックス及び線形変換は、可逆であることが好ましい。sボックス又は線形変換などの他の数のラウンド又はサイズも可能である。
図1に戻る。乗数及び多様化されたハッシュの複数のジョイント・エンコーディングの第1セットを計算することに加えて、点乗算デバイス100はまた、複数のジョイント・エンコーディングの第2セットも計算する。ジョイント・エンコーディングの第2セットもまた導出されたハッシュを含むが、乗数を必要としない。第2セットにおける導出されたハッシュは、第1セットにおけるものと同じ導出されたハッシュであるが、おそらくは異なるエンコーディングにおけるものである。数学的には、第2セットはB=Enc(h2i,h2i+1),i=0...n−1として選択されてよい。第2セットでは選択される正確なペアリングは重要ではない。導出された第1ハッシュを導出された第2ハッシュとペアリングすること等々の代わりに、任意のペアリング、例えば導出されたハッシュ間のランダムなペアリングを選択することができる。例えばプロセッサ回路等の点乗算デバイス100は、第2セットを計算するために第2エンコード計算ネットワーク135を含んでもよい。
図3は、複数のジョイント・エンコーディングの第2セットを導出する実施形態の一例を概略的に示す。図3は、図2と同様であり、図2で使用され得るものと同じタイプのエンコーディング等が図3で使用され得る。図3に示されているものは、ベース・ハッシュ122の自身とのジョイント・エンコーディングである。これは、201と同じエンコーディングであってもよく、例えば同じエンコードされたデータが、第1エンコード・ネットワーク130及び第2エンコード・ネットワーク135への入力として使用される。第2エンコード・ネットワーク135は、複数のエンコードされた関数ペアを含む。各々の関数ペアは、少なくとも2つの多様化関数gを含む。これらの機能ペアはまた、導出されるハッシュのジョイント・エンコードされた3つ組又はそれ以上を得るために、追加の多様化関数を含むことも可能である。図3に示されているものは、ジョイント・エンコーディング321、322、323を生成するジョイント・エンコード関数311−313である。
図1に戻る。このようにして、点乗算デバイス100は、多様化されたハッシュh=g(h)をエンコードするために2つの異なる方法、即ち:一旦乗数と一緒にエンコードされるもの、及び一旦それら自体と一緒にエンコードされるものを求める。点乗算デバイス100は、最終的に、乗数kとベース・ポイントGとの点積を、追加の補助点G及びベース・ポイントの倍数の総和として計算する。攻撃者が2つのセットのうちの1つのみを攻撃することができないように、G及びGの乗数は、しばしば第1セットから、及びしばしば第2セットから算出され;攻撃者は第1セット及び第2セット双方を同時に攻撃するように強いられる。複数の事前に計算された補助点Gは、事前に計算された乗数とベース・ポイントとの間の点乗算として取得されていてもよい。興味深いことに、離散対数問題の困難性に起因して、攻撃者は、G及びGの間の関係を見出すことができず、例えば攻撃者はG=sGであるように係数sを見出すことはできない。しかしながら、この知識は、エンコードされたネットワークに埋め込まれ、その結果、プロセッサ回路はG及びGに対する多数の計算として計算kGをブラインド化することができる。攻撃者は、Gを取得するためにどのくらいGが乗算されたかを知ることはできないので、ブラインド化された計算から逆にkを取得することはできない。
乗数kをhと一緒にエンコードすることは、プロテクションをもたらす。説明のため、乗数及びベース・ハッシュが共にビット単位でエンコードされる状況を考察する。そして、エンコードされたビット・ペアに対して、攻撃者による変更によって引き起こされる可能性のある3つの可能な変更が存在する:
i kのビットのみが変わり、hは変更されない
ii hのビットのみが変わり、hは変更されない
iii kのビット及びhのビット双方が変わる
最初の変更のみが攻撃者にとって有用であることに留意されたい。hは変更されるので、第2及び第3の変更は正しいシグネチャを与えない。このシナリオでさえ、攻撃者は既に3倍の仕事を強いられる。更なるセキュリティ・パラメータnが使用される実施形態では、有意義なシグネチャをもたらす障害を攻撃者が注入する可能性は、よりいっそう小さくなる。一実施形態では、複数(n)の異なるhが使用される。kのビットは、元のハッシュのビットと一緒にエンコードされる必要はなく、むしろ、n個の異なるハッシュのビットと一緒にエンコードされ得る。一実施形態では、乗数k及び全てのhが同じビット長を有するが、これは必須ではない。
図1に戻る。プロセッサ回路は、複数のジョイント・エンコーディングの第1セットAから、ブラインド・ベース乗数A131を計算するように構成される。例えば、第1エンコード・ネットワーク130は、ブラインド・ベース乗数Aも計算するように構成され得る。更に、例えば第2の符号化ネットワーク135等のプロセッサ回路は、複数のジョイント・エンコーディングの第2セットBから、複数のブラインド補助乗数η136を計算するように構成される。複数のブラインド補助乗数は、複数の補助点Gに対応する。
これらの計算はまた、エンコードされた形式で実行されてもよい。例えば、上記のホワイト・ボックス実装は、例えばエンコードされたテーブル・ネットワークとして、A及びηを計算するように適合されてもよい。そのようなテーブル・ネットワークを構築することは、エンコードされたモンゴメリー数ベースの計算を使用することができる。これを行う多くの方法が存在し、1つの特定の方法が以下で更に展開される。
興味深いことに、ブラインド・ベース乗数及び複数のブラインド補助乗数は、ブラインド化された楕円曲線計算の実行中にプレーン・フォーマットで表現されることができる。実際、一実施形態ではこれらの数はこのシステムの攻撃者にとって見える任意の通常の基数2の計算等の平文で明確に可視的であってもよい。しかしながら、ブラインド化されたベース乗数及び複数のブラインド化された補助乗数の特定の計算はエンコードされる。例えば、一実施形態では、先ず、ブラインド化されたベース乗数及び複数のブラインド化された補助乗数をエンコード・フォーマットで計算し、デコーディング・ステップに続いてもよい。ブラインド化されたベース乗数び複数のブラインド化された補助乗数は、ブラインド化されている(blinded)と言われるが、その理由は、それらがエンコードされる必要があるからではなく、それらが真のECC計算(kG)を攻撃者から見えなくするからである。
非改竄の実行では、第1セット(即ち、値A)にエンコードされる全てのkは同じであるが、改竄された実行では、これらは異なり得ることに留意されたい。明確化のために、Aにおいてエンコードされたkの値をkと言及する。非改竄の実行では、0≦i≦2n−1に対して、k=kである。
一実施形態では、ブラインド・ベース乗数の値は、A=K+Σ として計算されてもよく、ここで、K=Σα,H=h+Σβi,j である。例えば、Aは、入力としてAを使用し、例えばモンゴメリー数ベースの計算を使用して、エンコードされたネットワークで計算されてもよい。定数α,β及びCは、Zにおける選択されたコンパイル時間であり、アルゴリズムの中でハードコード化されていてもよい。Σα=1及びΣβi,j=0であってもよい。例えば、値K及びHをエンコードされた形式で、例えば(K,H,...,H2n−1)としてジョイント・エンコードした形式で計算し、そこからAを計算することができる。
ブラインド化されたベース乗数(A)は、複数のジョイント・エンコーディングの第1セットにおける乗数kと多様化ハッシュhとの加重和であることに留意されたい。したがって、ECC計算AGは、実行が改竄されておらず、項(Σ)によってブラインド化されている場合、正しい結果を含むことになる。複数のブラインド化された補助乗数ηは、後者の項、例えば加重和Aにおける多様化されたハッシュを補正するように選択される。
ブラインド化された補助乗数は、エンコードされたBの値B=(h2i,h2i+1)を値
Figure 2020510879
に再コード化することによって取得され、値ηは平文の値である。中間値は、たとえ最終値が平文であってもエンコードされ得る。導出されたハッシュの再コード化は、後にベース・ポイント乗算に加算される補助点を補償するように実行される。例えば次のように設定されてもよい。
Figure 2020510879
から、又はhから直接的にでさえηを計算できるが、これはセキュリティを犯すことに留意されたい。即ち、当を得た障害(a correct fault)を得るためには、攻撃者は、hに触れずにAを撃たなければならない。攻撃者がhを当てた場合、Aの中にh が存在することになり、それはBのうちの1つの中にあるhと矛盾し、攻撃者により使用できない出力をもたらす。
最後に、乗数kとベース・ポイントGとの点乗算kG、141を求めるために、楕円曲線計算が実行される。この計算は、様々な計算が攻撃者に対して可視的に実行され、ブラインド化された楕円曲線計算の結果から、正しい結果kGが導出され得るが、正しい入力kは、ブラインド化された楕円曲線計算の入力から導出され得ないという意味でブラインド化されている。計算のこの部分は、乗数kが復元され得ないエンコードされた形式で行われるので、乗数kは、秘密の方法で複数の新しい乗数にわたって分配されている。
ブラインド化された楕円曲線計算は、以下の点加算を計算することを含む:
− 楕円曲線におけるブラインド化されたベース乗数とベース・ポイントとの点乗算、及び
− ブラインド化された補助乗数と補助点との多点乗算。
即ち、AG+ΣηとしてkGを算出し、後者の計算は全体的に平文で実行されてもよい。2n+1個の楕円曲線乗算が存在し、必要であれば、ECDSAコンポーネントは、r=μ(kG)としてkGから算出されてもよいことに留意されたい。この計算も平文である。
パラメータは、コンパイル時に選択され、点乗算デバイス100においてハードコードされていてもよい。例えば、コンパイラは
Σ0≦i≦n−1α=1 及びΣ0≦j≦2n−1βi,j=0であるように、定数α,β及びCをZ内で選択し、
−b≠0を満たすように、整数a,b,c,dをZ内で選択し、
ハッシュからZへのデ・ランダム関数f、及びハッシュ多様化関数hを0≦i≦2n−1に関して選択し、
Figure 2020510879
であるように楕円曲線点(平文)を計算するように構成されてもよい。
暗号プロトコルの或る別の部分で乗数が必要とされる場合、エンコード・ネットワークにおいて、ベース・ハッシュから再び計算され得ることに留意されたい。例えば、暗号プロトコルがECDSAである場合、アルゴリズムの更なる部分は、乗数kも必要とするシグネチャの第2コンポーネントを計算することになる。これは、暗号プロトコルの第2部分のエンコード・ネットワークにおけるベース・ハッシュからkを再計算することによって提供されることが可能である。例えば、そのエンコード・ネットワークは、デ・ランダム関数のエンコーディングを含むことができる。
以下、1つの特定の実施形態の点乗算デバイス100の詳細について、いくつかの追加的な情報が提供される。入力をh=HASH(M)とし、即ちECDSAにおける第1ステップにおいて、シグネチャの第1コンポーネントの例示的な計算は以下の通りである。仮定されるものは以下のブロックである:
・2l(エル)ビットに作用するエンコーディング関数E(ランダム全単射の集まり)
・内的にl(エル)ビット・オペレーションを利用して(例えば、AESではl(エル)=8である)、l(エル)*mビット入力をm*l(エル)ビット出力にマッピングする置換線形変換{SLT関数(例えば、固定されたキーを有するAES等)の集まり。
・ジョイント・エンコーディング関数のためのホワイト・ボックス回路
0,i={SLT,SLTi+1及びC2i+1,2i+2={SLT2i+1,SLT2i+2 即ち、各々の回路Ci,rは2つのml入力、例えばIl(エル),Iを或るエンコードされた方法(下記参照)で取得し、出力O=SLT(I)及びO=SLT(I)(のエンコーディング)を算出する。この回路は例えばω経路及びσ経路を有し、ここでω経路はSLTを計算し、σ経路はSLTを計算する。
・入力に関してw=u*v*R−1modqを計算するディジット・ベース・モジュラー乗算ネットワーク。
− R=b(m+1)は「モンゴメリー定数」である。
− u=Σi=0 modq 及び
− v=Σi=0 modq ただし、
− u及びvはl(ビット)の数であり、従って
− b=2l(エル)である。
ディジット・ベース・モンゴメリーについては、例えば次の文献を参照されたい:
Peter L.Montgomery,“Modular multiplication without trial division”.Mathematics of Computation,44:519−−521,1985.
すべての内的なオペレーションは、1つ又は2つのl(エル)ビット数に関するものであり、従って、例えば、所謂スクールブック乗算を使用して、テーブルに配置されることが可能である。
・ディジット・ベース・モンゴメリー(DBM)モジュラー乗算を実行するホワイト・ボックス回路。この回路は4つのm桁入力、例えばx,x,y,yを取得する。回路のω経路はxmodqを計算し、回路のσ経路はxmodqを計算する。
・最後に、2つのホワイト・ボックス加算回路、これらはスクールブック加算を使用することができる。第1のものADD1は、回路が4つのm桁入力、例えばx,x,y,yを得るDBMのようなものである。回路のω経路はx+xを計算し、σ経路はx+yを計算する。第2のものADD2では、回路は2つのm桁入力、例えば(ω経路で)x及び(σ経路で)yの1つのエンコーディングを取得し、ω経路でx+y、そしてσ部分で任意の何らかのものを計算する。
相違するがジョイント・エンコードされる変数に関する様々な関数の具体例は、例えば、テーブル・ネットワークを有するコンピューティングデバイス、WO/2014/095772;ブロック暗号を計算するための暗号化デバイス、WO/2016/173882;セキュアデータ変換、WO/2015/091172等に見出すことができる。
これらのコンポーネントを使用して、計算は次のように機能し得る:
1.h=h‖・・・‖hとなるように、hをl(エル)ビットのh,...,hのブロックに分割する。
2.Eを利用してm個のエンコーディングh =E(h‖h)を作成する。
3.h ‖・・・‖h を各々のCi,jに供給する。
4.O ‖・・・‖O =SLT(h)及びO ‖・・・‖O =SLT(h)であるように、Oi,j=E(O ‖O )‖・・・‖E(O ‖O )により結果の集まりを取得する。
5.1≦i≦2nについて、k=SLT(h)modq、及びh=SLTi+1(h)を定義する。
6.0≦i≦2n−1についてA=O0,i+1、及び0≦j≦n−1についてB=O2j+1,2j+2 を計算する。
7.Enc(a,b)=E(a‖b)‖・・・‖E(aml‖bml)を定義する。ここで、オーバーフローを防止するために、m’≧m である。
8.A=Enc(k,h)及び(事前に計算された)Enc(c ,c )に関してDBMを実行する。ここで、c =α+CΣβi,j*Rmodq、及びc =C*Rmodqである。この結果は、
Figure 2020510879
が「モンゴメリー形式」であることを充足する。ただし、(加算後に)オーバーフローしてしまうことを防止するため、Enc(k,h)におけるAiに先行ゼロのエンコーディングを追加する。
9.0≦i≦2n−1の全てについて、Z=ADD1(Zi−1,A )を計算する。ここで、Z=A である。
10.Z=Enc(A*R mod q,・)=ADD2(Z2n−1)を計算する。
11.入力Z及び(事前に計算された)Enc(1,・)についてDBMでEnc(A,・)を計算する。
12.解読してAmodqを返す。
図4は、ECDSAデバイス400の実施形態の一例を概略的に示す。点乗算デバイス100の重要な用途は、ECDSAデバイス400のようなECDSAデバイスにおけるものである。上記で指摘したECDSAシグネチャは、2つのコンポーネントを含み、そのうちの1つは、ECC点乗算から導出される。図4は、メッセージのECDSAシグネチャを計算するように構成されたデバイス等のECDSAデバイス400を示し、そのデバイスは例えば点乗算デバイス100等の点乗算デバイスを有する。図4における同様の参照符号は、図1における同様の機能に対応する。
ECDSAデバイス400は、プロセッサ回路、例えば点乗算デバイス100におけるもののようなプロセッサ回路を有するが、追加の機能とともに拡張される。ECDSAデバイス400は、入力メッセージMのベース・ハッシュ122を受信するように構成された入力インターフェース120を有する。点乗算デバイス100に関しては、入力インターフェースはアプリケーション・インターフェースであってもよく、その結果、ECDSAデバイス400は、入力メッセージを受信する、又は生成する、又は別の方法で取得するように構成される。ECDSAデバイス400は、入力メッセージのベース・ハッシュを生成するためのハッシュ・ユニットを有してもよい。ECDSA・デバイス400は点乗算デバイス100等の点乗算デバイスを有し、そのデバイスは、暗号プロトコルで使用するために、乗数kと楕円曲線E上のベース・ポイントGとの間の楕円曲線上の点乗算kGを計算する。例えば、ECDSAデバイス400のプロセッサ回路は、点乗算のために構成されていてもよい。
ECDSAデバイス400のプロセッサ回路は、乗数kとベース・ポイントGとの間の楕円曲線上の点乗算kGから、シグネチャの第1コンポーネントr=μ(([k]G))を取得するように更に構成される。後者の計算は、楕円曲線計算ユニット140又は別のユニットで実行されてよい。μの計算は平文で実行されてよい。
ECDSAデバイス400は、シグネチャの第2コンポーネント(s=(h+rx)k−1)を計算するように更に構成される。第2コンポーネントは楕円曲線計算を含まない。これは、エンコードされた計算ネットワークがこの計算を実行できることを意味する。例えば、ECDSAデバイス400のエンコード・ネットワークは、ベース・ハッシュを受信し、デ・ランダム関数fのエンコーディングを含み得る。これは、そのようなエンコード・ネットワークが乗数kのエンコーディングを計算することを可能にする。エンコード・ネットワークは更に、秘密鍵x、及び値r及びhのエンコーディングを使用することができる。後者の2つは、平文で又は暗号文で受信されてもよい。これらの入力から、ECDSAシグネチャの第2コンポーネントが計算され得る。
しかしながら、有利な実施形態では、エンコードされた形態で逆のオペレーションを実行することが回避される。エンコードされたデータに作用する一方で逆の計算をすることは可能であるが、複雑なエンコード・ネットワークを必要とする。本発明者等は、乗数kの値を明らかにすることなく、シグネチャの第2コンポーネントを得るためのより簡単な方法を発明した。この実施形態は、kに関する高度な攻撃及びxに関する単純なメモリ・スクレーピングに耐えることができる。
ECDSAデバイス400は、複数のジョイント・エンコーディングの更なる第1セットと、複数のジョイント・エンコーディングの更なる第2セットとを含むように構成される。例えば、ECDSAデバイス400は、複数の導出されたハッシュを導出するように構成された第3エンコード計算ネットワーク150を有し、各ハッシュは乗数kと一緒にエンコードされる。数学的には、X=Enc(k,t),i=0...2n−1である。例えば、第3エンコード計算ネットワーク150は、エンコードされた関数の複数ペア(f,g’)を適用するように構成されてもよく、ここで、g’は多様化関数の更なるセットである。
例えば、ECDSAデバイス400は、更なる第1セットにおけるものと同じ複数の導出されたハッシュを導出するように構成される第4エンコード計算ネットワーク155を有し得るが、各セットはベース・ハッシュと一緒にエンコードされる。数学的には、Y=Enc(k,t),i=0...2n−1である。例えば、第4エンコード計算ネットワーク155は、エンコードされた関数の複数ペア(id,g’)を適用するように構成されてもよく、ここで、g’は多様化関数の更なるセットである。ここで、idは恒等関数(identity function)を表す。恒等関数でさえもそのように可視的ではないことに留意すべきであり、なぜなら異なるエンコーディングでその出力を生成して入力を受信するからである。更に、ジョイント・エンコーディングはまた、ベース・ハッシュがデバイスで直接的に可視的であることを引き起こす。
エンコーディングの下でk−1mod qを計算するために、我々はセットX及びYから、例えば、
− エンコードされたペアEnc(k,t),...,Enc(k,t2n−1)及び
− エンコードされたペアEnc(h,t),...,Enc(h,t2n−1
から進行する。
複数のジョイント・エンコーディングXの更なる第1セットから、ブラインド化された乗数B、151が、更なる第1セットにおけるエンコードされた乗数の加重平均に、更なる第1セットにおけるエンコードされた乗数及び導出されたハッシュの加重平均を掛けたものとして算出される。例えば、次のように算出してもよい:k がEnc(k,t)のデコードされたk値を示し、K=Σγ を計算するものとし、例えばΣγ=1であるとする。また、T=t+Σδi,j を計算し、Σδi,j=0であるとする。ブラインド化された乗数は、B=K’・Σとして算出され、ここでDは選択されたコンパイル時間である。例えば、Z 2n+1上のエンコードされた2n+1個のタプルEnc(K’,T,...,T2n−1)を先ず生成し、そこからブラインド化された乗数を算出する。値Bはエンコードされる必要はなく、平文フォーマットで出力され得ることに留意されたい。
更に、ECDSAデバイス400は、複数のジョイント・エンコーディングYの更なる第2セットから、更なる第2セット内のエンコードされたベース・ハッシュの重み付け平均としてブラインド化されたベース・ハッシュ156を算出し、エンコードされたベース・ハッシュ及び導出されたハッシュから、非ブラインディングT’157の値を算出することができる。この計算は、エンコード・ネットワークで行われ、エンコードされた値を生成することができる。例えば、hがEnc(h,t)のデコードされたh値を示し、H=Σμh’を算出し、Σμ=1であるとし、T’=t+Σi,jを算出し、例えばΣi,j=0であるとする。非ブラインディング値は、T’=ΣT’として算出されてもよい。例えば、Z 2n+1上のエンコードされた2n+1個のタプルEnc(H,T’,...,T’2n−1)を生成することができる。ブラインド化されたハッシュ及びデ・ブラインド化された値は、例えばEnc(H,T’,...,T’2n−1)計算からジョイント・エンコーディングされ、Enc(H,T’)を算出してもよく、ここで、T’=ΣT’である。
ここでシグネチャの第2コンポーネントは、s=B−1T’(xr+H)mod qを計算するようにして、例えば入力B,r,Enc(x),Enc(H,T’)を考慮して、例えばディジット・ベース・モンゴメリー回路を利用して、エンコード回路160で算出されることが可能である。反転はプレーン値Bに対して行われることに留意されたい。残りの計算はエンコードされた値に対して行われ得る。最終結果sもまた、エンコードされる必要はない。有利なことに、エンコーディング(Enc)はZ上で線形であり、その桁毎の上で非線形であり、例えば、
Figure 2020510879
であり、ここで、Eはコンパイル時に選択された何らかの秘密全単射マッピングであり、選択された何らかのコンパイル時間a,bに関し、次式が成り立つ。
Figure 2020510879
点乗算デバイス100及びECDSAデバイス400の様々な実施形態では、入力インターフェースは、様々な代替形態から選択されてよい。例えば、入力インターフェースは、ローカル又はワイド・エリア・ネットワーク(例えば、インターネット)へのネットワーク・インターフェース、内部又は外部データ・ストレージへのストレージ・インターフェース、キーボード、アプリケーション・インターフェース(API)等であってもよい。
ストレージ110は、電子メモリ、例えばフラッシュ・メモリ、又は磁気メモリ、例えばハードディスク等として実装されてもよい。ストレージ110は、ストレージ110を構成する際に一緒に複数のディスクリート・メモリを含んでもよい。ストレージ110は、例えばRAM等のテンポラリ・メモリであってもよい。テンポラリ・ストレージ110の場合、ストレージ110は、例えば選択的なネットワーク接続(図示せず)を介してデータを取得することによって、使用前にデータを取得する何らかの手段を含む。
典型的には、デバイス100及び400はそれぞれ、デバイス100及び400に格納された適切なソフトウェアを実行するマイクロプロセッサ(別個には図示せず)を有し;例えば、そのソフトウェアは、例えばRAM等の揮発性メモリ、又はフラッシュ等の不揮発性メモリ(別個には図示せず)等の対応するメモリにダウンロード及び/又は格納されていてもよい。代替的に、デバイス100及び400は、全体的に又は部分的に、例えばフィールド・プログラマブル・ゲート・アレイ(FPGA)として、プログラマブル・ロジックで実装されてもよい。デバイス100及び400は、全体的又は部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち、それらの特定の使用のためにカスタマイズされた集積回路(IC)として実装されてもよい。例えば、回路は、例えばベリログ(Verilog)、VHDL等のハードウェア記述言語を使用して、CMOSで実装されてもよい。
一実施形態では、デバイスは、ストレージ回路と、入力インターフェース回路と、第1エンコード計算ネットワーク回路と、第2エンコード計算ネットワーク回路と、楕円曲線計算ユニット回路とを有する。デバイスはまた、第3エンコード計算ネットワーク回路と、第4エンコード計算ネットワーク回路と、第6エンコード計算ネットワーク回路とを備えることができる。回路はここで説明される対応するユニットを実現する。回路は、プロセッサ回路及びストレージ回路であってもよく、プロセッサ回路は、ストレージ回路内で電子的に表現される命令を実行する。
プロセッサ回路は、分散方式で、例えば複数のサブ・プロセッサ回路として実装されてもよい。ストレージは、複数の分散されたサブ・ストレージにわたって分散されてもよい。メモリの一部又は全部は、電子メモリや、磁気メモリ等であってもよい。例えば、ストレージは、揮発性のパート及び不揮発性のパートを有することができる。ストレージのパートはリード・オンリであってもよい。回路はまた、FPGA、ASIC等であってもよい。
図5は、点乗算方法500の実施形態の一例を概略的に示す。
電子点乗算方法500は、暗号プロトコルで使用するために、楕円曲線E上のベース・ポイントGと乗数kとの間の楕円曲線上での点乗算kGを計算するように構成される。例えば、方法500は電子デバイス上で実現されてもよい。
方法500は
− 楕円曲線における複数の事前に算出された補助点Gとベース・ポイントGとを保存するステップ510と、
− 入力メッセージMのベース・ハッシュh、122を受け取るステップ520と、
− 複数のジョイント・エンコーディングの第1及び第2セットの形式でベース・ハッシュhからの複数の被導出ハッシュhと乗数kとを導出するステップ530であって、第1セットは、それぞれが乗数kとジョイント・エンコードされる複数の被導出ハッシュA=Enc(k,h)(i=0...2n−1)221−223を含み、第2セットも複数の被導出ハッシュを含み、第2セット内の被導出ハッシュの各々は、複数の被導出ハッシュのうち少なくとも1つの他のものとジョイント・エンコードされている(B=Enc(h2i,h2i+1),i=0...n−1)321−323、ステップ530と、
− 複数のジョイント・エンコーディングAの第1セットから、ブラインド・ベース乗数Aを算出するステップ540と、
− 複数のジョイント・エンコーディングBの第2セットから、複数のブラインド補助乗数η、136を算出するステップ550であって、複数のブラインド補助乗数は複数の補助点Gに対応している、ステップ550と、
− 楕円曲線におけるベース・ポイントとブラインド・ベース乗数との点乗算、及びブラインド補助乗数と補助点との複数の点乗算を計算することにより、乗数kとベース・ポイントGとの点乗算kG、141を求めるために、ブラインド楕円曲線計算を実行するステップ560とを有する。
図6は、ECDSA署名方法の実施形態の一例を概略的に示す。方法600は、ECDSAシグネチャの第1コンポーネントを計算する方法500を含む。方法600は、シグネチャの第2コンポーネントs=(h+rx)k−1を、
− 複数のジョイント・エンコーディングの更なる第1及び第2セットの形式でベース・ハッシュから、乗数kと更なる複数の被導出ハッシュtとを導出するステップ610であって、更なる第1セットは、それぞれが乗数kとジョイント・エンコードされる複数の被導出ハッシュX=Enc(k,t)(i=0...2n−1)を含み、更なる第2セットは、それぞれがベース・ハッシュhとジョイント・エンコードされる複数の被導出ハッシュY=Enc(h,t)(i=0...2n−1)を含む、ステップ610と、
− 複数のジョイント・エンコーディングXの更なる第1セットから、ブラインド化された乗数B=K’・Σ、151を、更なる第1セットにおけるエンコードされた乗数の加重平均K’=Σγk’に、更なる第1セットにおける被導出ハッシュとエンコードされた乗数との加重平均(Σ,T=t+Σδi,jk’)を乗算したものとして算出するステップ620と、
− 複数のジョイント・エンコーディングYの更なる第2セットから、ブラインド化されたベース・ハッシュH、156を、更なる第2セットにおけるエンコードされたベース・ハッシュの加重平均として(H=Σμh’)、デ・ブラインディング値T’、157を、エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として(T’=ΣT’,T’=t+Σi,j)算出するステップ630と、
− ブラインド化された乗数の逆数B−1と、デ・ブラインディング値T’と、シグネチャの第1コンポーネントrにプライベート値xを掛けたものに、ブラインド化されたベース・ハッシュHを合計したもの(rx+H)との積を、デバイスのエンコード計算ネットワークで算出するステップと
により計算するステップを更に含む。
当業者には明らかなように、本方法を実行する多くの異なる方法が可能である。例えば、ステップの順序は変更されることが可能であり、また幾つかのステップは並列に実行されてもよい。更に、ステップ同士の間に、他の方法ステップが挿入されてもよい。挿入されたステップは、ここで説明されるような方法の改良を表すかもしれないし、又はその方法に関連していないかもしれない。例えば、ステップ540及び550は、少なくとも部分的に並列に実行されてもよい。更に、所与のステップは、次のステップが開始される前に完全に終了していなくてもよい。
本発明による方法は、ソフトウェアを使用して実行されてもよく、ソフトウェアは、プロセッサ・システムに方法500又は600を実行させるための命令を含む。ソフトウェアは、システムの特定のサブ・エンティティによって行われるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー(登録商標)、メモリ、光ディスク等の適切な記憶媒体に記憶されてもよい。ソフトウェアは、有線又は無線による信号として、又はデータ・ネットワーク(例えば、インターネット)を使用して送信されてもよい。ソフトウェアは、ダウンロード用に及び/又はサーバー上でのリモート使用のために利用可能にされてもよい。本発明による方法は、例えばフィールド・プログラマブル・ゲート・アレイ(FPGA)等のプログラマブル論理を構成するように配置されるビット・ストリームを使用して本方法を実行するように実施されることができる。
本発明はまた、本発明を実施するように適合されたコンピュータ・プログラム、特にキャリア上又はキャリア内のコンピュータ・プログラムに拡張されることが理解されるであろう。プログラムは、ソースコード、オブジェクト・コード、コード中間ソース、及び部分的にコンパイルされた形態などのオブジェクト・コードの形態におけるものであってもよく、又は本発明による方法の実施の際に使用に適した他の任意の形態におけるものであってもよい。コンピュータ・プログラム製品に関する実施形態は、説明された方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分されてもよく、及び/又は静的又は動的にリンクされ得る1つ以上のファイルに保存されてもよい。コンピュータ・プログラム製品に関する別の実施形態は、説明されたシステム及び/又は製品のうちの少なくとも1つの手段のそれぞれに対応するコンピュータ実行可能命令を含む。
図7aは、コンピュータ・プログラム1020を含む書き込み可能な部分1010を有するコンピュータ可読媒体1000を示し、コンピュータ・プログラム1020は、実施形態に従ってプロセッサ・システムに点乗算方法を実行させるための命令を含む。コンピュータ・プログラム1020は、物理的なマークとして、又はコンピュータ可読媒体1000の磁化によって、コンピュータ可読媒体1000上で具現化されることが可能である。しかしながら、任意の他の適切な実施形態も考えられる。更に、コンピュータ読取可能媒体1000は、ここでは光ディスクとして示されているが、コンピュータ読取可能媒体1000は、ハードディスク、ソリッド・ステート・メモリ、フラッシュ・メモリ等の任意の適切なコンピュータ読取可能媒体であってもよく、また、記録可能でないもの又は記録可能なものであってもよいことが理解されよう。コンピュータ・プログラム1020は、プロセッサ・システムに点乗算方法を実行させるための命令を含む。
図7bは、実施形態によるプロセッサ・システム1140を概略図で示し;例えば、プロセッサ・システム1140は、点乗算デバイスの実施形態に従ってもよいし、又はECDSAデバイスの実施形態に従ってもよい。プロセッサ・システムは、1つ又は複数の集積回路1110を含む。1つ又は複数の集積回路1110のアーキテクチャが、図7bに概略的に示されている。回路1110は、一実施形態による方法を実行し、及び/又はそのモジュール若しくはユニットを実装するためにコンピュータ・プログラム・コンポーネントを走らせる例えばCPU等の処理ユニット1120を含む。回路1110は、プログラミング・コードや、データ等を記憶するためのメモリ1122を含む。メモリ1122の部分は、リード・オンリであってもよい。回路1110は、例えばアンテナ、コネクタ、又は双方などの通信要素1126を含んでいてもよい。回路1110は、本方法で定められる処理の一部又は全部を実行するための専用集積回路1124を含んでいてもよい。プロセッサ1120、メモリ1122、専用IC1124、及び通信要素1126は、例えばバス等の相互接続1130を介して互いに接続され得る。プロセッサ・システム1110は、アンテナ及び/又はコネクタをそれぞれ使用して、コンタクト及び/又はコンタクト・レス通信用に構成されてもよい。
例えば、一実施形態では、点乗算デバイスは、プロセッサ回路及びメモリ回路を含んでもよく、プロセッサは、メモリ回路に格納されたソフトウェアを実行するように構成される。例えば、プロセッサ回路は、インテル・コアi7プロセッサ、ARM Cortex-R8等であってもよい。メモリ回路は、ROM回路であってもよいし、フラッシュ・メモリ等の不揮発性メモリであってもよい。メモリ回路は、例えばSRAMメモリ等の揮発性メモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するように構成された不揮発性ソフトウェア・インターフェース、例えばハードドライブや、ネットワーク・インターフェース等を含むことができる。
上述の実施形態は、本発明を限定するものではなく例示するものであり、当業者は、多くの代替実施形態を設計することができることに留意すべきである。
特許請求の範囲において、括弧の間に配置された如何なる参照符号も、特許請求の範囲を限定するものとして解釈されてはならない。「有する(comprise)」という動詞及びその活用形の使用は、特許請求の範囲で言及されているもの以外のエレメント又はステップの存在を排除していない。エレメントに先行する冠詞「ある又は或る(a or an)」は、そのような複数のエレメントの存在を除外しない。本発明は、いくつかの個別的なエレメントを含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施されてもよい。いくつかの手段を列挙しているデバイスの請求項において、これらの手段のいくつかは、ハードウェアの1つの同じアイテムによって具現化されてもよい。所定の複数の事項が相互に異なる従属請求項に記載されているという単なるそれだけの事実は、これらの事項の組み合わせが有利に使用され得ないことを示してはいない。
特許請求の範囲において、括弧内のリファレンスは、例示的な実施形態の図面における参照符号又は実施形態における式を指し、特許請求の範囲の理解を高めている。これらのリファレンスは特許請求の範囲を限定するものとして解釈されてはならない。

Claims (14)

  1. 暗号プロトコルで使用するための楕円曲線におけるベース・ポイントと乗数との間の楕円曲線における点乗算を算出する電子点乗算デバイスであって、当該デバイスは
    − 前記楕円曲線における複数の事前に算出された補助点と前記ベース・ポイントとを保存するストレージと、
    − 入力メッセージのベース・ハッシュを受け取るように構成される入力インターフェースと、
    − プロセッサ回路と
    を有し、前記プロセッサ回路は
    − 複数のジョイント・エンコーディングの第1及び第2セットの形式で前記ベース・ハッシュから複数の被導出ハッシュと前記乗数とを導出するステップであって、前記第1セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記第2セットも前記複数の被導出ハッシュを含み、前記第2セット内の前記被導出ハッシュの各々は、前記複数の被導出ハッシュのうち少なくとも1つの他のものとジョイント・エンコードされている、ステップと、
    − 複数のジョイント・エンコーディングの前記第1セットから、ブラインド化されたベース乗数を算出するステップと、
    − 複数のジョイント・エンコーディングの前記第2セットから、複数のブラインド化された補助乗数を算出するステップであって、前記複数のブラインド化された補助乗数は前記複数の補助点に対応している、ステップと、
    − 前記楕円曲線における前記ベース・ポイントと前記ブラインド化されたベース乗数との前記点乗算、及びブラインド化された補助乗数と補助点との前記複数の点乗算の点加算を算出することにより、前記乗数と前記ベース・ポイントとの前記点乗算を求めるために、ブラインド化された楕円曲線計算を実行するステップと
    を行うように構成されている、点乗算デバイス。
  2. 前記ブラインド化されたベース乗数と前記複数のブラインド化された補助乗数とは、前記ブラインド化された楕円曲線計算の実行中に平文フォーマットで表現されている、請求項1に記載の点乗算デバイス。
  3. 前記プロセッサ回路は第1エンコード計算ネットワークとともに構成され、前記第1エンコード計算ネットワークは、ジョイント・エンコード関数ペアの第1セットを、前記ベース・ハッシュの自身とのジョイント・エンコーディングに適用し、ジョイント・エンコード関数ペアは、前記ベース・ハッシュから前記乗数を導出するように構成されるデ・ランダム関数と、ハッシュ多様化関数の集合のうちのハッシュ多様化関数とのジョイント・エンコーディングである、請求項1又は2に記載の点乗算デバイス。
  4. 前記プロセッサ回路は第2エンコード計算ネットワークとともに構成され、前記第2エンコード計算ネットワークは、ジョイント・エンコード関数ペアの第2セットを、前記ベース・ハッシュの自身とのジョイント・エンコーディングに適用し、ジョイント・エンコード関数ペアは、ハッシュ多様化関数の集合のうちの少なくとも2つのハッシュ多様化関数のジョイント・エンコーディングである、請求項1−3のうち何れか1項に記載の点乗算デバイス。
  5. 前記デ・ランダム関数及び/又は前記ハッシュ多様化関数は、SLT構成に従って構成されている、請求項3又は4に記載の点乗算デバイス。
  6. 複数のジョイント・エンコーディングの前記第1セット及び/又は複数のジョイント・エンコーディングの前記第2セットは、バイト毎又はニブル毎のジョイント・エンコーディングである、請求項1−5のうちの何れか1項に記載の点乗算デバイス。
  7. 前記第1エンコード計算ネットワーク及び/又は前記第2エンコード計算ネットワークは、エンコードされたモンゴメリー・ディジット・ベース計算用に構成されている、請求項1−6のうちの何れか1項に記載の点乗算デバイス。
  8. 前記複数の事前に算出された補助点は、事前に算出された乗数と前記ベース・ポイントとの間の点乗算として取得されている、請求項1−7のうちの何れか1項に記載の点乗算デバイス。
  9. 前記ブラインド化されたベース乗数は、複数のジョイント・エンコーディングの前記第1セットにおける多様化されたハッシュと前記乗数との加重和であり、前記複数のブラインド化された補助乗数は、前記加重和における前記多様化されたハッシュを補正するために選択されている、請求項1−8のうちの何れか1項に記載の点乗算デバイス。
  10. 前記入力メッセージにおけるECDSAシグネチャを計算するように更に構成され、前記プロセッサ回路は、前記乗数と前記ベース・ポイントとの間の前記楕円曲線における前記点乗算から、前記シグネチャの第1コンポーネントを求めるように構成されている、請求項1−9のうちの何れか1項に記載の点乗算デバイス。
  11. 前記プロセッサ回路は、前記シグネチャの第2コンポーネントを、
    複数のジョイント・エンコーディングの更なる第1及び第2セットの形式で前記ベース・ハッシュから、前記乗数と更なる複数の被導出ハッシュとを導出するステップであって、前記更なる第1セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記更なる第2セットは、それぞれが前記ベース・ハッシュとジョイント・エンコードされる前記複数の被導出ハッシュを含む、ステップと、
    複数のジョイント・エンコーディングの前記更なる第1セットから、ブラインド化された乗数を、前記更なる第1セットにおける前記エンコードされた乗数の加重平均に、前記更なる第1セットにおける被導出ハッシュと前記エンコードされた乗数との加重平均を乗算したものとして算出するステップと、
    複数のジョイント・エンコーディングの前記更なる第2セットから、ブラインド化されたベース・ハッシュを、前記更なる第2セットにおける前記エンコードされたベース・ハッシュの加重平均として、デ・ブラインディング値を、前記エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として算出するステップと、
    前記ブラインド化された乗数の逆数と、デ・ブラインディング値と、前記シグネチャの前記第1コンポーネントにプライベート値を掛けたものに、前記ブラインド化されたベース・ハッシュを合計したものとの積を、前記デバイスのエンコード計算ネットワークで算出するステップと
    により算出するように構成されている、請求項10に記載の点乗算デバイス。
  12. 暗号プロトコルで使用するための楕円曲線におけるベース・ポイントと乗数との間の楕円曲線における点乗算を算出する電子点乗算方法であって、当該方法は
    − 前記楕円曲線における複数の事前に算出された補助点と前記ベース・ポイントとを保存するステップと、
    − 入力メッセージのベース・ハッシュを受け取るステップと、
    − 複数のジョイント・エンコーディングの第1及び第2セットの形式で前記ベース・ハッシュから複数の被導出ハッシュと前記乗数とを導出するステップであって、前記第1セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記第2セットも前記複数の被導出ハッシュを含み、前記第2セット内の前記被導出ハッシュの各々は、前記複数の被導出ハッシュのうち少なくとも1つの他のものとジョイント・エンコードされている、ステップと、
    − 複数のジョイント・エンコーディングの前記第1セットから、ブラインド化されたベース乗数を算出するステップと、
    − 複数のジョイント・エンコーディングの前記第2セットから、複数のブラインド化された補助乗数を算出するステップであって、前記複数のブラインド化された補助乗数は前記複数の補助点に対応している、ステップと、
    − 前記楕円曲線における前記ベース・ポイントと前記ブラインド化されたベース乗数との前記点乗算、及びブラインド化された補助乗数と補助点との前記複数の点乗算の点加算を算出することにより、前記乗数と前記ベース・ポイントとの前記点乗算を求めるために、ブラインド化された楕円曲線計算を実行するステップと
    を含む点乗算方法。
  13. シグネチャの第2コンポーネントを、
    複数のジョイント・エンコーディングの更なる第1及び第2セットの形式で前記ベース・ハッシュから、前記乗数と更なる複数の被導出ハッシュとを導出するステップであって、前記更なる第1セットは、それぞれが前記乗数とジョイント・エンコードされる前記複数の被導出ハッシュを含み、前記更なる第2セットは、それぞれが前記ベース・ハッシュとジョイント・エンコードされる前記複数の被導出ハッシュを含む、ステップと、
    複数のジョイント・エンコーディングの前記更なる第1セットから、ブラインド化された乗数を、前記更なる第1セットにおける前記エンコードされた乗数の加重平均に、前記更なる第1セットにおける被導出ハッシュと前記エンコードされた乗数との加重平均を乗算したものとして算出するステップと、
    複数のジョイント・エンコーディングの前記更なる第2セットから、ブラインド化されたベース・ハッシュを、前記更なる第2セットにおける前記エンコードされたベース・ハッシュの加重平均として、デ・ブラインディング値を、前記エンコードされたベース・ハッシュと被導出ハッシュとの加重平均として算出するステップと、
    前記ブラインド化された乗数の逆数と、デ・ブラインディング値と、前記シグネチャの第1コンポーネントにプライベート値を掛けたものに、前記ブラインド化されたベース・ハッシュを合計したものとの積を、デバイスのエンコード計算ネットワークで算出するステップと
    により算出するステップを更に含む請求項12に記載の点乗算方法。
  14. 請求項11に記載の方法をプロセッサ・システムに実行させる命令を表現する一時的又は非一時的なデータを含むコンピュータ読み取り可能な媒体。
JP2019549551A 2017-03-17 2018-03-15 楕円曲線点乗算デバイス及び方法 Active JP7123959B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17161578.4 2017-03-17
EP17161578.4A EP3376705A1 (en) 2017-03-17 2017-03-17 Elliptic curve point multiplication device and method in a white-box context
PCT/EP2018/056492 WO2018167198A1 (en) 2017-03-17 2018-03-15 Elliptic curve point multiplication device and method in a white-box context

Publications (2)

Publication Number Publication Date
JP2020510879A true JP2020510879A (ja) 2020-04-09
JP7123959B2 JP7123959B2 (ja) 2022-08-23

Family

ID=58358484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019549551A Active JP7123959B2 (ja) 2017-03-17 2018-03-15 楕円曲線点乗算デバイス及び方法

Country Status (5)

Country Link
US (1) US11290272B2 (ja)
EP (2) EP3376705A1 (ja)
JP (1) JP7123959B2 (ja)
CN (1) CN110663215B (ja)
WO (1) WO2018167198A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3607483B1 (en) * 2019-03-15 2021-07-07 Advanced New Technologies Co., Ltd. Authentication based on a recoverd public key
EP3713148B1 (en) 2019-03-22 2022-08-03 Giesecke+Devrient Mobile Security GmbH White-box ecc implementation
WO2021025631A1 (en) * 2019-08-05 2021-02-11 Securify Bilisim Teknolojileri Ve Guvenligi Egt. Dan. San. Ve Tic. Ltd. Sti. A method for generating digital signatures
CN111314054B (zh) * 2020-01-21 2020-12-15 衡阳师范学院 一种轻量级eceg分组密码实现方法、系统及存储介质
CN111510299B (zh) * 2020-04-10 2021-03-19 宁波富万信息科技有限公司 联合数字签名生成方法、电子设备和计算机可读介质
US11502818B2 (en) * 2020-05-06 2022-11-15 King Saud University System to secure encoding and mapping on elliptic curve cryptography (ECC)
WO2023113832A1 (en) * 2021-12-17 2023-06-22 Pqsecure Technologies, Llc A low overhead method and architecture for side-channel attack resistance in elliptic curve arithmetic
CN114338039A (zh) * 2021-12-28 2022-04-12 上海市数字证书认证中心有限公司 白盒处理后的椭圆曲线签名方法和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007126049A1 (ja) * 2006-04-28 2007-11-08 Panasonic Corporation プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法
JP2009515206A (ja) * 2005-11-03 2009-04-09 サーティコム コーポレイション 同時スカラー乗算方法
JP2010139544A (ja) * 2008-12-09 2010-06-24 Renesas Electronics Corp 剰余演算装置、及び剰余演算方法
WO2012090284A1 (ja) * 2010-12-27 2012-07-05 三菱電機株式会社 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラム
JP2013524263A (ja) * 2010-03-31 2013-06-17 イルデト カナダ コーポレーション ホワイトボックス攻撃から暗号化資産を保護するためのシステムと方法
WO2015153670A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Elliptic curve point multiplication procedure resistant to side-channel information leakage

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7599491B2 (en) 1999-01-11 2009-10-06 Certicom Corp. Method for strengthening the implementation of ECDSA against power analysis
FR2807898B1 (fr) * 2000-04-18 2002-06-28 Gemplus Card Int Procede de cryptographie sur courbes elliptiques
DE10161137B4 (de) * 2001-12-12 2008-02-14 Siemens Ag Verfahren und System zum kryptographischen Bearbeiten von Daten
DE602005025084D1 (de) 2004-02-13 2011-01-13 Certicom Corp Einseitige authentifikation
CN100414492C (zh) * 2005-11-04 2008-08-27 北京浦奥得数码技术有限公司 一种椭圆曲线密码系统及实现方法
CA2698000C (en) * 2007-09-04 2015-10-27 Certicom Corp. Signatures with confidential message recovery
JP2009182864A (ja) * 2008-01-31 2009-08-13 Hitachi Kokusai Electric Inc 署名装置、検証装置、プログラム、署名方法、検証方法及びシステム
CN101610153A (zh) * 2008-06-20 2009-12-23 航天信息股份有限公司 基于椭圆曲线签名算法的电子签章认证方法
US20110055585A1 (en) * 2008-07-25 2011-03-03 Kok-Wah Lee Methods and Systems to Create Big Memorizable Secrets and Their Applications in Information Engineering
EP2348452B1 (en) * 2009-12-18 2014-07-02 CompuGroup Medical AG A computer implemented method for sending a message to a recipient user, receiving a message by a recipient user, a computer readable storage medium and a computer system
US8386790B2 (en) 2010-02-25 2013-02-26 GM Global Technology Operations LLC Method of using ECDSA with winternitz one time signature
US9300472B2 (en) 2011-09-30 2016-03-29 Nokia Technologies Oy Method and apparatus for improving digital signatures
US9344413B2 (en) * 2012-01-18 2016-05-17 OneID, Inc. Methods and systems for device disablement
WO2013116916A1 (en) * 2012-02-09 2013-08-15 Irdeto Canada Corporation System and method for generating and protecting cryptographic keys
MX2015007707A (es) 2012-12-21 2015-09-07 Koninkl Philips Nv Dispositivo de computacion que comprende red de tablas.
CN103475473B (zh) * 2013-08-26 2016-10-05 数安时代科技股份有限公司 数字签名方法和设备、数字签名中密码运算方法和服务器
CN103701598B (zh) * 2013-12-05 2017-07-11 武汉信安珞珈科技有限公司 一种基于sm2签名算法的复核签名方法和数字签名设备
CN105814833B (zh) 2013-12-20 2019-12-13 皇家飞利浦有限公司 用于安全的数据变换的方法和系统
US9584320B1 (en) * 2014-12-23 2017-02-28 EMC IP Holding Company LLC Blinding function in elliptic curve cryptography
US9906368B2 (en) * 2014-12-23 2018-02-27 Nxp B.V. General encoding functions for modular exponentiation encryption schemes
US10685587B2 (en) 2015-04-30 2020-06-16 Koninklijke Philips N.V. Cryptographic device for calculating a block cipher
EP3125145B1 (en) * 2015-07-31 2019-04-03 Nxp B.V. White-box elliptic curve point multiplication
US10243738B2 (en) * 2015-12-04 2019-03-26 Microsoft Technology Licensing, Llc Adding privacy to standard credentials
US10680810B2 (en) * 2016-10-26 2020-06-09 Nxp B.V. Method of generating an elliptic curve cryptographic key pair

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009515206A (ja) * 2005-11-03 2009-04-09 サーティコム コーポレイション 同時スカラー乗算方法
WO2007126049A1 (ja) * 2006-04-28 2007-11-08 Panasonic Corporation プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法
JP2010139544A (ja) * 2008-12-09 2010-06-24 Renesas Electronics Corp 剰余演算装置、及び剰余演算方法
JP2013524263A (ja) * 2010-03-31 2013-06-17 イルデト カナダ コーポレーション ホワイトボックス攻撃から暗号化資産を保護するためのシステムと方法
WO2012090284A1 (ja) * 2010-12-27 2012-07-05 三菱電機株式会社 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラム
WO2015153670A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Elliptic curve point multiplication procedure resistant to side-channel information leakage

Also Published As

Publication number Publication date
EP3596876A1 (en) 2020-01-22
US11290272B2 (en) 2022-03-29
CN110663215B (zh) 2024-03-08
EP3596876B1 (en) 2020-07-15
WO2018167198A1 (en) 2018-09-20
EP3376705A1 (en) 2018-09-19
US20200119918A1 (en) 2020-04-16
CN110663215A (zh) 2020-01-07
JP7123959B2 (ja) 2022-08-23

Similar Documents

Publication Publication Date Title
JP7123959B2 (ja) 楕円曲線点乗算デバイス及び方法
US20220141038A1 (en) Method of rsa signature or decryption protected using a homomorphic encryption
US7764785B2 (en) Method for communicating securely over an insecure communication channel
CN109661792B (zh) 计算分组密码的设备和方法
US20080240443A1 (en) Method and apparatus for securely processing secret data
WO2003065639A2 (en) System and method of hiding cryptographic private keys
US11818245B2 (en) Cryptographic device and method
WO2013116916A1 (en) System and method for generating and protecting cryptographic keys
US11063743B2 (en) Method of RSA signature of decryption protected using assymetric multiplicative splitting
JP6517436B2 (ja) 暗号化デバイス及び符号化デバイス
US8976960B2 (en) Methods and apparatus for correlation protected processing of cryptographic operations
JP6884284B2 (ja) キー付きメッセージ認証コードのホワイトボックス計算
EP3477889B1 (en) Using white-box in a leakage-resilient primitive
CN101296076A (zh) 一种基于ecc的数字签名方案
WO2017114739A1 (en) System and method for hiding a cryptographic secret using expansion
Gomathisankaran et al. Glitch resistant private circuits design using HORNS
Shirazi et al. An innovative design of substitution-box using Trigonometric-Multiplicative Functions Using Square Root Arguments: A Data-driven study.
Jain et al. Analysis of Different Cryptographic Algorithms in Cloud-Based Multi-robot Systems
Barker et al. Techniques to Enhance Security of an Authentication Protocol
Krämer et al. Mathematical and Cryptological Background

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190918

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220314

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220810

R150 Certificate of patent or registration of utility model

Ref document number: 7123959

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150