JP6735870B2 - マルチワード乗算器回路及び電力解析攻撃を防止する方法 - Google Patents

マルチワード乗算器回路及び電力解析攻撃を防止する方法 Download PDF

Info

Publication number
JP6735870B2
JP6735870B2 JP2019056016A JP2019056016A JP6735870B2 JP 6735870 B2 JP6735870 B2 JP 6735870B2 JP 2019056016 A JP2019056016 A JP 2019056016A JP 2019056016 A JP2019056016 A JP 2019056016A JP 6735870 B2 JP6735870 B2 JP 6735870B2
Authority
JP
Japan
Prior art keywords
parameter
word
blind
branding
product
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.)
Active
Application number
JP2019056016A
Other languages
English (en)
Other versions
JP2019168694A (ja
Inventor
アロン モシェ
アロン モシェ
Original Assignee
新唐科技股▲ふん▼有限公司
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 新唐科技股▲ふん▼有限公司 filed Critical 新唐科技股▲ふん▼有限公司
Publication of JP2019168694A publication Critical patent/JP2019168694A/ja
Application granted granted Critical
Publication of JP6735870B2 publication Critical patent/JP6735870B2/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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
    • 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/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

本発明は、一種の安全計算システムに関わり、具体的には、電力解析攻撃を防止する方法及びシステムに関する。
電力解析攻撃(Power analysis attacks)とは、攻撃者が操作中にハードウェアデバイスの消費電力の変動を監視して、デバイスから暗号化キーやその他の秘密情報を抽出する攻撃である。差分電力解析(Differential Power Analysis、DPA)とは、複数の暗号操作で消費される電力の統計分析によって、暗号計算(cryptographic operations)の計算中に攻撃者が秘密情報を抽出することを可能にする電力分析方法である。
電力解析攻撃は通常、非侵襲的な手段であるため、検出することが難しい。DPAなどの電力解析攻撃を防止するための一般的な方法については、消費電力から秘密情報が漏れないようにハードウェアを設計することである。
本明細書に記載の実施例は、インターフェースと回路とを備えるマルチワード乗算器回路を提供する。インターフェースは、一つまたは複数の第1のワードを含む第1のパラメータXと、複数の第2のワードを含む第2のパラメータY′と、を受信するように設置され、前記第2のパラメータY′は、非ブラインドパラメータYのブラインドバージョンであり、非ブラインドパラメータYはブランディングパラメータAによってブラインドされるため、Y′=Y+A。前記回路は、複数の部分積を累計することによってZ=X・Yの積を計算し、複数の部分積のそれぞれは、Xの第1のワードにY′の第2のワードを乗算し、且つ部分積P=X・Bの対応の第3のワードを中間臨時合計から減算し、BはAに含まれるブランディングワードである。
一部の実施例において、回路は、一つまたは複数の電源入力が供給する電力を消費するとともに、乗算期間に前記非ブラインドパラメータYを電源入力の検知から復元できないようにする。他の実施例において、ブランディングパラメータAが含むビット数は、前記非ブラインドパラメータYが含むビット数よりも大きい。もう1つの実施例において、ブランディングパラメータAは、前記ブランディングワードBと少なくとも1つのBのシフトバージョン(shifted version)との合計を含む。
一実施例において、前記回路は、対応の乗積ブランディングパラメータAを用いて、Xの前記第1のワードにY′の前記第2のワードに乗算して得た部分積に、Aから抽出されたブランディングワードを加算して、乗積ZのブラインドバージョンZ′=Z+Aを計算する。もう1つの実施例において、前記回路は、前記部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互(interleaved)及び置換(permuted)された順序で前記部分積の前記第3のワードを減算する。
一部の実施例において、前記回路は、前記ブラインドパラメータY′にAとは異なる後続ブランディングパラメータを加算することにより、前記ブラインドパラメータY′を更新して、臨時ブラインドパラメータを生成し、且つ前記臨時ブラインドパラメータからAを減算する。
本明細書に記載する実施例は、一種の電力解析攻撃を防止する方法を提供する。マルチワード乗算器回路が一つまたは複数の第1のワードを含む第1のパラメータXと、複数の第2のワードを含むパラメータY′と、を受信し、前記第2のパラメータY′は、非ブラインドパラメータYのブラインドバージョンであり、前記非ブラインドパラメータYはブランディングパラメータAによってブラインドされるため、Y′=Y+A、複数の部分積を累計することによってZ=X・Yの積を計算し、前記複数の部分積のそれぞれは、Xの第1のワードにY′の第2のワードを乗算し、且つ部分積P=X・Bの対応の第3のワードを中間臨時合計から減算し、BはAに含まれるブランディングワードである。
本発明をより完全に理解するために、添付図面を参照して、実施例の表現形式で以下のように詳細に説明する。
図1は、本明細書に記載の実施例による、電力分析攻撃に対して保護された暗号システムを概略的に示すブロック図。 図2は、本明細書に記載の実施例による、変動ブラインドパラメータを使用して、ブラインド乗積を計算する方法のフローチャート。 図3は、本明細書に記載する実施例による、ハードウェアで実施されるマルチワード乗算器のブロック図。
概要
本明細書に記載する実施例は、電力解析攻撃から暗号システムを保護するために改善された方法及びシステム。開示された実施例において、パラメータ(例えば、秘密パラメータ)は、暗号化操作の入力として使用される前に、回復可能なように修正される。秘密パラメータは通常、それを使用する各暗号化操作の前に、このように修正される。このような修正は、“ブランディング(blinding)”とも呼ばれ、そして修正されたパラメータは“ブラインドパラメータ(blinded parameter)”とも呼ばれる。
例えば、暗号関数f(.)をパラメータXinに応用する暗号装置、すなわち、暗号装置がXout=f(Xin)を計算する必要がある。Xin及びXoutの値を隠すために、Xinを適切なブランディング関数Eを計算して、Xin′に表示されるブラインドパラメータに変更することができる。そのうち、Xin′=E(Xin)。この場合、暗号関数の出力Xout′=f(Xin′)はブラインドされ、ブラインドされたXout′に適切な逆ブランディング関数(reverse blinding function)E′を適用して、Xoutを非ブラインドの出力Xout′に回復することができる。そのうち、Xout=E′(Xout′)。E′は、必ずしもEの逆関数(inverse function)ではないことに留意されたい。ブランディング関数Eによって適用された運算は、例えば、Xinにランダム値Rnを加算すること、すなわち、Xin′=Xin+Rであり得る。そのうち、Rはランダムに選択される。
開示された実施例において、暗号装置は、XとYの表示される2つのパラメータの乗積を計算することが要求され、それぞれのパラメータは複数のmビットワードを含む。例えばセキュリティ目的のため、パラメータYのブラインド形式はY′=Y+Aで提供した場合、X・Yの計算後の乗積は、X・Y=X・Y′−X・Aで間接に得ることができる。
開示された実施例において、マルチワード乗算は、ワードベースの乗算器(word−based multiplier)”とも呼ばれる、m×m乗算器(m−by−m multiplier)によって実行する。ワードベースの乗算器を使用して、それぞれの入力パラメータのmビットワード間の複数の部分積を計算することによって、マルチワード乗算を実行する。入力パラメータの乗算がn個のmビットのワードを含むことを仮定すると、X・Y′−X・Aを計算するために(2.n)個のm×m乗算運算が必要である。
以下で説明する実施例において、多数の乗算をm×m乗算運算に分解するが、他の実施例において、この運算は、mビットワードとnビットワードとの基本的な乗算演算(n≠m)も使用することができる。例えば、XまたはYなどのパラメータがm(またはn)の整数倍でない場合、パラメータサイズを基礎となるワードサイズの整数倍にするために、一つまたは複数の最上位ゼロビット(most−significant zero bits)を埋め込むことができる。
開示された実施例において、YのブランディングパラメータAは、Bで表示されるmビットブランディングワードから構成され、すなわち、Yのブラインドパラメータの形式はA=[B,B,...,B]である。Aのmビットワードの数量は、Yのmビットワードの数量よりも大きい。このような特殊な構造によって、X・Aは、以下に詳細に説明するように、事前にX・Bを一回計算して、中間結果にX・Bのシフトバージョンを減算することにより、n個のm×m乗算運算の順序上の一つの数値で(n乗算運算の順序上の一つの数値で得られる任意のブラインドパラメータに比べて)効率的に計算することができる。その乗積結果または乗積結果のブラインドバージョンは、例えば、暗号エンジンの入力として使用することができる。
一部の実施例において、マルチワード乗算器が部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互及び置換された順序で部分積のmビットワードを減算する。
一部の実施例において、マルチワード乗算器は、乗積の計算中に非ブラインドパラメータYが電源入力の検知から回復不能の方式で反復積演算を実行する。
Zは、乗積Z=X・Yを示すものとし、そしてZ′はZのブラインドバージョンを示す。一部の実施例において、マルチワード乗算器は相応の乗積ブランディングパラメータA=[B,B,…B]を用いて、AのmビットワードBを、XのmビットワードにY′のmビットワードを乗算する部分積に加算することにより乗積ZのブラインドバージョンZ′=Z+Aを計算する。
一実施例において、暗号装置(またはマルチワード乗算器)はY′にA′とは異なる後続ブランディングパラメータ(subsequent blinding parameter)を加算することによりブラインドパラメータを更新して、臨時ブラインドパラメータを生成し、そして臨時ブラインドパラメータからAを減算する。
開示された技術において、マルチワード乗算器は第1のパラメータと第2のパラメータの乗積を計算し、そのうち、少なくとも第2のパラメータがブラインドされる。その乗積計算は、第2のパラメータの非ブラインド値を表示することなく、且つ直接乗算で中間結果を得ることができない方式でワードベースの乗算に分解される。結果、開示された暗号装置は電力解析攻撃に対して効果的に保護することができる。そして、乗積計算を効率的に実行したため、直接乗算に匹敵するレイテンシが得ることができる。
システムの説明
図1は、本明細書に記載する実施例による電力解析攻撃を防止する暗号システム20を例示的に示すブロック図である。図1の実施例において、暗号システム20は、プロセッサ32と、プロセッサのシステムメモリ34と、暗号エンジン36と、暗号記憶装置40と、マルチワード乗算器44と、I/Oモジュール48とを備える暗号装置24を備え、前記部品は適切なバス52で交互接続されている、図1の実施例において、マルチワード乗算器44は暗号エンジン36内に含まれる。
暗号システム20は、安全の方法で資料を処理する様々な用途で使用することができる。例えば、暗号システム20は、データの機密性、完全性、及び認証などの暗号化サービスを提供することができる。
暗号エンジン36は、一般に暗号関数に関連する組に使用され、例えば、Rivest−Shamir−Adleman(RSA)法に関する鍵を評価するための暗号関数に使用される。
暗号記憶装置40は、プロセッサ32に実行されるプログラム命令、及び暗号エンジン36によって操作されるデータを格納する。暗号記憶装置40は、複数のメモリ装置(図示せず)を備えることができ、そのうち、少なくともいくつかが並行にアクセス可能である。暗号記憶装置40に備えたメモリのそれぞれは、例えば、リードオンリーメモリ(Read Only Memory,ROM)、ランダムアクセスメモリ(Random Access Memory,RAM)、フラッシュメモリ(Flash memories)のような非揮発性メモリ(Nonvolatile Memory,NVM)、または任意の適切な記憶手段であり得る。具体的には、暗号記憶装置40内の異なるメモリ装置は異なるメモリタイプであり得る。
マルチワード乗算器44は、暗号記憶装置40内の特定情報をアクセスするためのインターフェース56を備える。インターフェース56は通常、一つまたは複数のアドレスレジスタ、暗号記憶装置内の関連アドレスを指すための他のロジック回路(図示せず)、ならびに効率的な乗算演算に局所的に必要なパラメータを格納するデータレジスタ(図示せず)を備える。
マルチワード乗算器44は、2つのmビット入力を受信して、相応な2mビットの部分積を生成するワードベースの乗算器60を備える。本実施例において、マルチワード乗算器44は、X 64で表記されるパラメータにY′ 68で表記されるパラメータを乗算する。通常、入力パラメータX及びY′のそれぞれは、X及びY′にそれぞれ表記される複数のmビットワードを含む。マルチワード乗算器は、X・Y′の部分積を計算し、且つ加算減算ができる加算器70によって、前記部分積に適切なmビットシフトを加算する。一部の実施例において、マルチワード乗算器は中間累計結果を暗号記憶装置に記憶し、その後の計算に使用する。
パラメータY′ 68は、非ブラインドパラメータYのブラインド形式で提供されるため、Y′はYにブランディングパラメータA 72を加算することにより得る。すなわち、Y′=Y+A。一部の実施例において、X・Yの乗積を効率に計算するため、Yのブラインドパラメータは、mビットシフトを有し、Bで表記されるmビットブランディングワードの文字列結合であり、すなわち、A=[B,B,…B]。ブランディングパラメータAのmビットワードが含むビット数は、Yのmビットワードが含むビット数よりも大きい。ブランディングワードは、例えば、事前乗算相(pre−multiplication phase)として、P=X・Bによって計算された部分積P 76を得るように使用される。乗積X・Yを計算する場合、加算器70は、X・Y乗積の臨時結果Pのmビットワードからmビットのシフトを減算して、X・Yの乗積結果を得る。
一部の実施例において、暗号装置24は、ブラインド形式でX・Yの乗積結果を格納する。このような実施例において、加算器70は、ブランディングパラメータA 78の乗積から抽出されたmビットワードを部分積に加算する。ブラインド乗積結果は、Z′=X・Y+A によって与えられる。一部の実施例において、Yのブランディング方式のように、AはブラインドされたmビットワードBから構成される。この場合、全体のブランディングパラメータAを格納することなく、Bのみを格納すれば良い。図1の実施例において、暗号装置24は、マルチワード乗算器によって生成された中間結果と、最終的なブラインド乗積とを、暗号記憶装置40の乗積結果パラメータ80に格納する。
暗号システム20において、暗号装置24は一つまたは複数の電力線88によって電源84を使用して電力を供給する。電源84は、電池または電源モジュールを含む。電源84は、通常、暗号装置24内の各装置に使用される一つまたは複数の直流(DC)電圧を提供する。電力線88の一端は、通常、電源に電気連結または機械的連結され、そして他端は適切なコネクタによって暗号装置に接続する。電源84、電力線88またはその両方は一般に保護されず、攻撃者92にとってアクセス可能である。
暗号装置24が消費する瞬時電力は、通常、例えば、暗号エンジン36及び/またはマルチワード乗算器44に実行される基本計算の関数によって変化する。攻撃者92は、秘密情報を明かすように、一定期間内に電力消費量を監視する事ができる。例えば、攻撃者92は暗号装置24の電力消費量についての複数のサンプルを統計してDPA攻撃を実行する事ができる。本明細書の文脈において、用語“電力消費(power consumption)”は、エネルギー、電圧、電流などの電力消費に関するすべての計測可能な物理属性を指す。
暗号システム20において、後述されるように、マルチワード乗算器44が実行する乗算運算は、X・Yの乗積をマルチワード乗算器によって効率的計算され、且つ中間結果において非ブラインド値Yを漏れないように設計される。結果として、攻撃者92は電力線88または電源84を監視しても、Yを再構築することができない。
有効なマルチワードブラインド乗算(efficient multi−word blinded multiplication)
本明細書の文脈において、用語“ブラインド乗算”は、2つのパラメータの乗算運算を指し、そのうち、少なくとも1つのパラメータがブラインドされている。非ブラインドパラメータX及びYは、それぞれmビットワードの相応数量のL及びLを含むことを仮定する。数1:YのブランディングパラメータAに対して、その相応のブラインドバージョンY′は以下の数1で得る:
Figure 0006735870
ブランディングAは、複数のmビットワードを含み、その数量は、Lに一つ以上のmビットワードよりも多い。本明細書に示すように、この設定は、暗号システム20からYに対する最高有効ビットの分析攻撃にとっては有効である。YとAの長さはn個のワード、且つYの最高有効ビット(MSB)は1である場合、キャリービット(carry bit)は、数1の(n+1)番目のY′のワードに伝播(propagates)する。このキャリービットは、電力解析手法を使用して推測できる。X、Y′及びAに基づいて、乗積X・Y以下のように書くことができる:
Figure 0006735870
数2を効率に計算するために、Bで表記されるシングルmビットブランディングワードでブラインドパラメータを定義する。具体的には、mビットシフトされるブランディングワードで複数のインスタンス(instances)を埋め込むことにより、ブランディングパラメータAを構成する。すなわち、A=[B,B,…B]。Aの長さ (mビットワードで) はL+1に仮定し、Aは以下の数3で得る:
Figure 0006735870
ブランディングワードBは、オール1のmビットワード以外の任意の適切な値を有することができる。この制限により、(n+1)番目ワードを超えるキャリービットの伝播を防止することができる。Yのj番目のワードは、Yj=(Y′−B)であるため、数2は次のように書き換えることができる:
Figure 0006735870
数4はさらに次のように分解することができる:
Figure 0006735870
数5に基づいて、乗積計算は、mビットシフト値2m(i+j)を有するすべてのX・Y′の部分積の二重和、及びmビットシフト値2mjを有するシフトバージョンの部分積P=(X・B)を含む。数5中の二重和は、L・(L+1)のm×m乗算によって運算するが、第2の和(second sum)は、(L+1)乗算運算でP=(X・B)を一回計算するのみが必要である。次は図3を参照しながら、数5に基づく効率的なマルチワード乗算器回路を詳細に説明する。
次に、ブラインド乗算運算の例を提供する。わかりやすくするために、この例の数値は10進数で表す。この場合、2進数に使用される係数2の累乗は、10の累乗に置き換えられる。この例で乗算される値は、X=721、且つY=347、その結果は乗積Z=X・Y=250187。この実施例の説明において、Yは、Yのk番目の10進数の数字であり、Y′は、Y′のk番目の10進数の数字である。この例においてのブランディングワードはB=2、且つブラインドパラメータはA=2222。
直接計算において、下記数6、すなわち、721.7+721.4.10+721.3.100=250187を得る。直接計算では、中間結果5047及び5047+28840=33887が生成される。
Figure 0006735870
ブラインド乗積は、下記数7によって、ブラインドされ得る。非置換及び交互の方式によって、部分積の和を合計すると、721.9.1442+721.6.10−14420+721.5.100−144200+721.2.1000−1442000が得る。このような置換の交互順序において、それぞれの部分積X・Y′の後に、X・Y′・10を減算する。この場合、中間結果は{6489,5047,48307,33887,394387,250187,1692187}となり、最終結果は250187となる。よって、この順序の計算が、望ましくなく直接計算の中間結果5047及び33887を明らかにする。
Figure 0006735870
選択可能に、交互及び置換された順序でブラインド計算を実行することができ、例えば、721.9+721.6.10−1442+721.5.100−14420+721.2.1000−144200−1442000。この例において、X・Y′0+X・Y′1・10は、シフト部分積X・Bを減算する前に計算する。この場合、中間和は{6489,49749,48307,408807,394387,1836387,1692187}となり、結果も250187となる。この交互及び置換された順序で乗積を計算することによって、直接計算の中間結果は公開されないことを留意されたい。上記の例においての計算の特定の交互及び置換された順序は、必須ではなく、部分積を合計する他の任意の交互及び置換された順序も使用することができる。
様々なブラインドパラメータを有するブラインド乗積
図2は、本明細書の実施例による、様々なブラインドパラメータを使用してブラインド乗積を計算する方法のフローチャートである。この方法は、図1の暗号装置24の各部材によって実行されるように説明される。
第1のパラメータ初期化ステップ100において、暗号装置は、ブラインドmビットワードB(n−1)から派生されたブランディングパラメータA(n−1)によって、非ブラインドパラメータYに基づくブラインドされたマルチワードパラメータY′(n−1)を用意する。記号nは、シーケンシャルタイムインデックスを表す。Yのブランディングは、例えば、上記の数2及び数3に基づくものである。B(n−1)に関連するのは部分積p(n−1)であり、B(n−1)と前のパラメータXと乗算する事によって計算する。第2のパラメータ初期化ステップ104において、暗号装置は、非ブラインドマルチワードパラメータXを用意する。一実施例において、ステップ100でステップ104で、暗号装置はI/Oモジュール48によって、相応なパラメータを受信する。または、パラメータXとY′(n−1)との内の少なくとも1つは、プロセッサ32、暗号エンジン36またはその両方によって生成する。その暗号装置は、パラメータX及びY′(n−1)を暗号記憶装置40中のそれぞれの記憶空間64及び68に格納する。暗号装置はまた、ブランディングパラメータA(n−1)を暗号記憶装置40の記憶空間72に格納する。
ブラインドパラメータを更新するステップ108において、暗号装置は更新されたブランディングパラメータA(n)を生成する。例示的な実施例において、暗号装置は任意の適切なランダム化方法を使用して、ランダムまたは疑似ランダムな方法で更新のブラインドmビットワードB(n)を生成し、且つB(n)の複数のmビットでのシフトバージョンに連結して、数3のように更新のブラインドパラメータを生成する。
再ブランディング(re−blinding)ステップ112において、暗号装置は、ブランディングパラメータA(n)をY′(n−1)に加算して、且つ前のブランディングパラメータA(n−1)を減算することによりブラインドパラメータYを再ブランディングする。この更新方式により、A(n−1)はY′(n−1)から直接に減算することがないことを留意されたい。その原因は、前記の減算の方法は、望ましくなくYの値を公開する。
部分積を計算するステップ116において、暗号装置は、ステップ108の更新されたブラインドmビットワードを使用して、部分積P(n)=X・B(n)を更新する。暗号装置が計算した部分積を暗号記憶装置の記憶空間76に格納する。
積計算ステップ120において、暗号装置はX・Yの乗積を計算する。例えば、暗号装置に配置されたマルチワード乗算器44のインターフェース56によって、暗号記憶装置40の相応の記憶空間に格納されたX、Y′(n)及びP(n)にアクセスし、且つ暗号記憶装置の記憶空間80によって乗積結果を出力する。そして、暗号装置は、例えば、上記の数5に基づいて、マルチワード乗算器によって乗算運算を実行する。
ステップ120の後、本方法はステップ100に戻り、次のブラインドパラメータを受信して、他の(または同じ)パラメータXに乗算する。
図2の方法において、暗号装置はそれぞれのマルチワード乗算の前にブラインドYを再ブランディングしたが、これは必須ではない。代替な実施例において、暗号装置は選択可能にYをブランディングすることができ、すなわち、毎回の乗算運算予定数ごとに実行し、または他の任意のサンプリング方法を使用する。
ハードウェア実装のマルチワード乗算器
図3は、本発明の実施例によるハードウェア実装のマルチワード乗算器200を概略的示すブロック図である。例えば、マルチワード乗算器200は、図1の暗号装置24のマルチワード乗算器44を実装するように使用することができる。
図3の例において、以下に詳細に説明するように、マルチワード乗算器200は、メモリ204、206、208及び210に接続して入力パラメータを受信して、中間及び最終結果を出力する。本実施例において、メモリ204、206、208及び210のそれぞれは、mビットワードのデータ単位でアクセス可能である。したがって、m.Wビットを含むパラメータは、相応のメモリのW個のエントリ(entries)を占有する。メモリ204、206、208及び210は、それぞれMEM1、MEM2、MEM3及びMEM4に表記される。
メモリMEM1は、X′とY′に表記される入力パラメータを格納する。本実施例において、暗号化レベルを改善するために、入力パラメータはブラインドパラメータとしてマルチワード乗数の外部に格納され、且つ相応なブラインドパラメータを使用し、すなわち、X′=X+AとY′=Y+Aを使用する。そのうち、XとYは、X′とY′のそれぞれから派生する非ブラインドパラメータであり、そして、それぞれのブラインドパラメータはAとAである。
各ブラインドmビットワードBとBを、A=[B,B,…,B]とA=[B,B,…,B]で埋め込むによって、ブラインドパラメータを構成する。LとLは、XとYのmビットワードを単位としての相応長さを表示することに仮定する。Aは、BのL+1インスタンスを埋め込むことにより構成され、AはBのL+1インスタンスを埋め込むことにより構成される。
マルチワード乗算器200は、Yベースアドレスレジスタ(Y base address register)212、Xベースアドレスレジスタ(X base address register)214、結果ベースアドレスレジスタ(result base address register)216及び部分積ベースアドレスレジスタ(partial product base address register)218を備える。Yベースアドレスレジスタ212とXベースアドレスレジスタ214は、MEM1の第1のmビットワードY′とX′にそれぞれを指す。結果ベースアドレスレジスタ216は、メモリMEM2とMEM3の内の一つに格納される乗算結果の第1のmビットワードを指す。部分積ベースアドレスレジスタ218は、メモリMEM4に格納される部分積X・Bの第1のmビットワードを指す。部分積は、予め計算されてMEM4に格納されることを仮定する。部分積X・Bは、例えば、マルチワード乗算器200を使用して計算することができる。あるいは、部分積は、プロセッサ32を使用して、または他の任意の適切な手段を使用して計算することができる。
Xカウンタ220は、範囲はi=0….(L+1)であるインデックス′i′を生成する。インデックス′i′の値は、加算器222を使用してXベースアドレスレジスタ内の値に加算され、MEM1内のX′にアクセスするために、マルチプレクサ224によってルーティングされるアドレス値を生成する。同様に、Yカウンタ226は、i=0を生成する場合、インデックス′j′の範囲はj=0….(L+1)であり、i>0である場合、jの範囲はj=−1….(L+1)である。インデックス′j′の値は、加算器228を使用してYベースアドレスレジスタの値に加算され、MEM1内のY′にアクセスするために、マルチプレクサ224によってルーティングされるアドレス値を生成する。
Xカウンタ220及びYカウンタ226は、適切なクロック回路(clocking circuit)(図示せず)を使用して生成されたクロックサイクル(clock cycles)に従って増分する。一部の実施例において、Yカウンタは、各クロックサイクルにつき一回増分し、値L+1に到達する後にゼロまたは−1に戻る。Xカウンタ(インデックス′i′)は、Yカウンタの後に増分する(インデックス′j′は値L+1に到達し、且つ値L+1に到達した後ゼロに戻す)。あるいは、Yカウンタ226及びXカウンタ220のための他の適切なカウント方式も使用され得る。
加算器230は、Xカウンタ及びYカウンタのインデックスを合計して合計インデックス(i+j)を生成し、合計インデックス(i+j)は加算器232を使用してレジスタ216の結果基本アドレスのその値に加算して、MEM2またはMEM3内の乗算結果の(i+j)番目のmビットワード(または中間結果)をアクセスするアドレスを生成する。加算器234は、MEM4中の部分積X・Bの第j個mビットワードをアクセスするように、インデックス値(j+1)をレジスタ218の基本アドレス内の部分積値に加算する。
本実施例において、マルチワード乗算器200は、2mビット出力を生成するように、2つのmビットワードの間に乗算運算を実行するワードベースの乗算器240を備える。ワードベースの乗算器240は、図1のワードベースの乗算器60を実施するように使用することができる。ワードベースの乗算器240は、非ブラインド入力レジスタ244から抽出された非ブラインドパラメータXのmビットワードX、及びMEM1から抽出されたブラインドパラメータY′のもう1つのmビットワードY′を受信して、2mビットの部分積X・Y′を出力する。
一部の実施例において、ワードベースの乗算器は、1つのクロックサイクル内に部分積結果を生成する。もう1つの実施例において、部分積を生成するには、複数のクロックサイクルが必要であり、この場合、Xカウンタ及びYカウンタのクロッキングはそれに応じて禁止される。一部の実施例において、後述されるように、条件j==−1、j==L+1またはi==L+1の内の1つも満たすことに応じて、強制的にワードベースの乗算器の出力をゼロにされる。
Xブランディングレジスタ(X−blinding register)246は、ブランディングワードBを保持する。マルチワード乗算器200は、MEM1からmビットワードX′iを読み出し、且つ減算モジュール250によってX=X′i−B−bを計算する。そのうち、bは前のmビットワードX−1を計算する時に生成されたボロービット252である。
一実施例において、マルチワード乗算器は、Xカウンタ220及びYカウンタ226をそれぞれi=0及びj=0(またはj=−1)に初期化する。指定されたインデックス′i′については、マルチワード定数は上述のように非ブラインド値Xを計算し、且つXを非ブラインド入力レジスタ244に格納する。そして、マルチワード乗算器はMEM1からmビットワードY′0…Y′L+1を順次に読み出して、に対応するj=0…L+1部分積X・Y′を計算する。マルチワード乗算器は、それぞれの部分積のm個の最高有効ビット(Most Significant Bits, MSB)をMSBレジスタ256に格納する。
中間結果X・Y′を計算するために、マルチワード乗算器は部分積を累加するように、加算器258を使用して、部分積X・Y′のm個の最低有効ビット(LSB)を、X・Y′のm個のMSBを格納しているMSBレジスタ256に加算する。部分積を累加するとき、加算器264を使用して、前の計算中に生成されたキャリービット262をMSBレジスタ256から読み出したmビット値に加算し、且つ1つ以上の後続の計算で使用されるためのX・Y′のMSB部分をMSBレジスタ256に格納する。
i=0…Lに渡って中間結果X・Y′を累加するために、マルチワード乗算器は、インデックス′i′が偶数である場合にMEM2内にX・Y′の累計中間結果(下述の追加の係数と共に)を格納し、そうでない場合、MEM3に格納する。インデックス′i′に基づくLSBのデマルチプレクサ(de−multiplexer)266を使用して、MEM2またはMEM3に書き込むことを選択する。
上述のX・Y′の計算において、マルチワード乗算器は加算器268を使用してX・Y′に加算し、下記数8において、k=i−1までに累計された中間結果はMEM2(またはMEM3)から読み出され、且つX・Y′を含む更新された累計結果を他のメモリMEM3(またはMEM2)に格納する。インデックス′i′のLSB値に基づくマルチプレクサ270を使用して、関連するメモリMEM2またはMEM3を選択することを制御する。MEM2に格納される第1の中間結果X・Y′を計算する前に、第1の中間結果を計算する期間にMEM3から読み出したmビットワードの数量Lがゼロに初期化されることを留意されたい。
Figure 0006735870
反復インデックス′i′で計算され、且つメモリMEM2(またはMEM3)のi番目メモリエントリ(基本アドレスに対する)の中最低有效ワードは、第1の計算結果を(i+1)番目のエントリに格納するように、MEM3(またはMEM2)のi番目メモリエントリにコピーされるべきことを留意されたい。一実施例において、前記コピー運算は、インデックス′j′がj=L+1からj=−1に戻した後、インデックス′i′がi+1に増加する前に実行する。例えば、1つのクロックサイクルを使用してMEM2(またはMEM3)から1つのワードを読み出し、もう1つのクロックサイクルを使用して、読み出されたワードをもう1つのメモリMEM3(またはMEM2)に書き込む。上記の方式において、コピー運算はj=−1の時、且つiが増分する前に発生するため、コピーされたワードは結果基本アドレスに(i−1)のオフセットを有することを留意されたい。
上述のように、例えば、数5に基づいて、マルチワード乗算器は、乗積X・Yを計算するために、適切なmビットシフトにX・Bを減算する必要がある。マルチワード乗算器200は、MEM4から読み出されたX・Bのmビットワードを受信する減算モジュール272を使用して、交互の方式で上記の減算を実行する。減算運算は、減算モジュール272の前の減算運算に生成且つ格納されたボロービット274を含む。
上述のように、I>0の場合、インデックス′j′は、j=−1...L+1の範囲内にカウントする。j==−1の時、ワードベースの乗算器の出力を強制的にゼロ値にするため、j=−1の場合、減算モジュール272を使用して、MEM2またはMEM3から読み出した第1のmビットワードからMEM4から読み出したX・Bの第1のmビットワードを減算する。条件j==−1(i>0のときも発生する)はまた、MEM1から読み出したX′iをフェッチし、そして相応のXを非ブラインド入力レジスタ244に格納するために使用される。
条件j==L+1の時も、ワードベースの乗数の出力を強制にゼロにする。このクロックサイクルにおいて、最近の部分積X・Y′LのMSBは、インデックス′i′に応じてMEM2またはMEM3に格納される。
i>0の場合、マルチプレクサ280は減算モジュール272にMEM4から読み出したmビットワードを出力し、i=0の場合、マルチプレクサ280はゼロmビットワードを出力する。結果として、実際には、X・Bは、第1の中間結果X・Y′が完全に計算され、且つMEM2に格納されたあとに減算される。換言すれば、X・B・2mjはX+1・Y′の累計期間に効果的に減算される。このような置換及び交互順序の計算は、直接乗算X・Bの中間結果の漏洩を防ぐに役に立つ。
一部の実施例において、マルチワード乗算器200は、ブラインド形式で乗積結果を格納することを要求される。このような実施例において、マルチワード乗算器は、Z′=X・Y+Aを計算するために、結果ブランディングワードレジスタ282の中にmビットのブランディングワードBを保持し、そのうち、A=[B,B,…B]。マルチプレクサ284は、条件(j==−1)または(i==L+1)の内の1つが真である場合、値Bをルーティングし、そうでない場合、加算器286を使用して部分積に加算されるゼロmビットワードをルーティングする。この場合、条件j==−1は、上記のように、関連するワードをMEM2からMEM3(またはMEM3からMEM2に)にコピーされた後、且つ′i′はi+1に増分することを意味する。X・Y′を計算するi回目の反復後、Bを加算するには、条件j==−1が必要である。全体のマルチワード乗算計算が完成すると、最後のBを加算するために、条件i==L+1は必要である。
Xカウンタ220が値i=L+1に到達する時、ワードベースの乗算器240の出力は強制的にゼロにされる。そのクロックサイクルにおいて、MEM2またはMEM3から読み出した中間結果に関連するmビットワードにMEM4から読み出したX・BのMSBのmビットワードを減算する。
マルチワード乗算器200のワードベースの乗算器240は、任意の適切な方法を用いて効率的に実施することができる。例示的な実施例において、ワードベースの乗算器240はシストリックアレイ乗算器(systolic−array mutiplier)またはウォレスツリー乗算器(Wallace tree multiplier)として実施される。一部の実施例において、加算器258、264、268及び286の内の一つまたは複数によって実行される加算運算は、ウォレス乗算器のシストリックアレイの構造内で、例えば、乗算器内に1つまたは複数の全加算器の計算列(computational rows of full−adders)を含むことによって実施できる。
図1の暗号システム20及び暗号装置24、ならびに図3のマルチワード乗算器200の構成がマルチワード乗算器44を備えることは、単に概念を明確するために選択される例である。代替の実施例において、他の任意の適切な暗号システム構成及びマルチワード乗算器構成を使用することができる。
暗号装置24及びマルチワード乗算器44、200の異なる要素は、例えば、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの任意の適切なハードウェアで実施することができる。例えば、ワードベースの乗算器240は、専用のASICまたはFPGAを使用して実施されてもよく、一方、マルチワード乗算器200の他の要素は 、別のASICまたはFPGAで実施されても良い。
一部の実施例において、暗号装置及びマルチワード乗算器44の一部の要素は、ソフトウェア、またはハードウェアとソフトウェアの組み合わせで実施することができる。例えば、一実施例において、プロセッサ32は乗算に使用されるパラメータを用意し、且つマルチワード乗算器44はハードウェアまたはハードウェアとソフトウェアとの組み合わせで乗算運算を適用することができる。もう1つの例として、マルチワード乗算器44は、マルチワード乗算器200としてハードウェアに完全に実施されることができる。一部の実施例において、暗号エンジン36は、専用コプロセッサ(dedicated co−processor)を含む。代替の実施例において、暗号エンジン36は、ハードウェアまたはハードウェアとソフトウェアとの組み合わせで実施することができる。暗号記憶装置40は、一つまたは複数のメモリ、例えば、ランダムアクセスメモリ(RAM)を含む。
明確にするために、本発明の原理を理解するのに必要ではない要素、例えば様々なインタフェース、制御回路、アドレス指定回路、タイミングおよびシーケンス回路およびデバッグ回路は、図から省略されている。
通常、暗号装置24内のプロセッサ32は、本明細書に記載されている機能の少なくともいくつかを実行するように、ソフトウェアでプログラムされている汎用プロセッサを含む。ソフトウェアは、例えばネットワークによって電子形式で計算装置にダウンロードすることができ、あるいは代替的にまたは追加的に、磁気、光学、または電子メモリなどの非一時的有形媒体に提供及び/または格納することができる。
本明細書及び請求の範囲の文脈において、用語“回路”は、インターフェース56以外のマルチワード乗算器60のすべての要素、またはマルチワード乗算器がメモリ204、206、208及び210にインターフェースする要素以外のマルチワード乗算器200のすべての要素を指す。マルチワード乗算器44において、回路はワードベースの乗算器60及び加算器70を備える。マルチワード乗算器200において、回路はワードベースの乗算器240、加算器258、264、268、286、減算モジュール272、MSBレジスタ256、Xカウンタ220、Yカウンタ226、キャリービット262及びボロービット274などの要素を備える。
図3のマルチワード乗算器200は、図1の暗号装置24のマルチワード乗算器44を実施するために使用することができる。このような実施例において、メモリ204、206、208及び210は、暗号記憶装置40内に実施される。マルチワード乗算器200は、メモリ204、206、208及び210に接続するように、ベースアドレスレジスタ212、214、216及び218、Xカウンタ220、Yカウンタ226、加算器222、228、230、232、234、マルチプレクサ224及び270、及びデマルチプレクサ266などの様々な要素を使用する。
上述の実施例は、単に例として挙げられていて、他の任意の実施例も使用することができる。例えば、図3のマルチワード乗算器200がX・Y′の中間結果を累加したが、その方式は強制ではなく、他の任意の方式も使用することができる。例えば、代替の実施例において、マルチワード乗算器200はX・Y′の中間結果を累加する。また、図3のマルチワード乗算器200、及び図1のマルチワード乗算器60は、他の任意の順序でX・Y′の部分積を累加することができる。
もう1つの例として、図3の実施例において、マルチワード乗算器はブラインド形式でメモリ204からパラメータXを読み出したが、代替の実施例においては、パラメータXは非ブラインドのマルチワード乗算器に提供される。このような実施例において、Xブランディングレジスタ246、減算モジュール250及びボロービット252を省略することができる。
上記の実施例において、それぞれのX及びY′はmビットワードを含み、且つそのマルチワード乗算器は、XのmビットワードをY′のmビットワードに乗算するように、m×m乗算器部品に基づくものである。代替の実施例において、Y′は複数のnビットワードを含み、そして、n≠m。このような実施例において、m×m乗算器(例えば、図3内の乗算器240)はn×m乗算器によって置き換えられ、且つそれに応じて図3に示された構成を修正する。
本明細書に記載の実施例は、主に電力解析攻撃に対する暗号システムの保護を扱うが、本明細書に記載の方法およびシステムは、電力解析攻撃に対する保護を必要とする任意のセキュア計算システムなどの他の用途にも使用できる。そのような計算システムは、例えば、スマートフォン、スマートカード、ラップトップ、タブレット、販売時点情報管理システム、ルータ、スマートTVなどのような電子装置を含むことができる。上記の実施形態は例として挙げられており、添付の特許請求の範囲は、上記に具体的に示され、記載されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、上述の様々な特徴の組み合わせおよび部分的な組み合わせ、前述の説明を読んだ当業者には想到し得る、かつ先行技術に開示されていないそれらの変形および修正が含まれる。本特許出願において参考として援用される文書は、本明細書において明示的または暗示的になされた定義と矛盾するような形でこれらの組み込まれた文書に定義される用語がある場合に、本明細書の定義を考慮する必要がある。
20:暗号システム
24:暗号装置
32:プロセッサ
34:システムメモリ
36:暗号エンジン
40:暗号記憶装置
44、200:マルチワード乗算器
48:I/Oモジュール
52:バス
56:インターフェース
60、240:ワードベースの乗算器
64:パラメータX
68:ブラインドパラメータY′
70、222、228、230、232、234、258、264、268、286:加算器
72:ブランディングパラメータA
76:部分積P
78:ブランディングパラメータA
80:乗積結果Z′
84:電源
88:電力線
92:攻撃者
100〜120:ステップ
204、206、208、210、MEM1〜MEM4:メモリ
212:Yベースアドレスレジスタ
214:Xベースアドレスレジスタ
216:結果ベースアドレスレジスタ
218:部分積ベースアドレスレジスタ
220:Xカウンタ
224、270、280、284:マルチプレクサ
226:Yカウンタ
244:非ブラインド入力レジスタ
246:Xブランディングレジスタ
250、272:減算モジュール
252、274:ボロービット
256:MSBレジスタ
262:キャリービット
266:デマルチプレクサ
282:ブランディングワードレジスタ

Claims (14)

  1. インターフェースと回路とを備えるマルチワード乗算器回路であって、
    前記インターフェースは、一つまたは複数の第1のワードを含む第1のパラメータXと、複数の第2のワードを含む第2のパラメータY′と、を受信するように設置され、
    前記第2のパラメータY′は、非ブラインドパラメータYのブラインドバージョンであり、前記非ブラインドパラメータYはブランディングパラメータAYによってブラインドされるため、Y′=Y+AY、
    前記回路は、複数の部分積を累計することによってZ=X・Yの積を計算し、前記複数の部分積のそれぞれは、Xの第1のワードにY′の第2のワードを乗算し、且つ部分積P=X・BYの対応の第3のワードを中間臨時合計から減算し、BYはAYに含まれるブランディングワードであること
    前記回路は、前記ブラインドパラメータY′にAYとは異なる後続ブランディングパラメータを加算することにより、前記ブラインドパラメータY′を更新して、臨時ブラインドパラメータを生成し、且つ前記臨時ブラインドパラメータからAYを減算することを特徴とする、マルチワード乗算器回路。
  2. 前記回路は、一つまたは複数の電源入力が供給する電力を消費するとともに、乗算期間に前記非ブラインドパラメータYを電源入力の検知から復元できないようにすることを特徴とする、請求項1に記載のマルチワード乗算器回路。
  3. 前記ブランディングパラメータAYが含むビット数は、前記非ブラインドパラメータYが含むビット数よりも大きいことを特徴とする、請求項1に記載のマルチワード乗算器回路。
  4. 前記ブランディングパラメータAYは、前記ブランディングワードBYと少なくとも1つのBYのシフトバージョンとの合計を含むことを特徴とする、請求項1に記載のマルチワード乗算器回路。
  5. 前記回路は、対応の乗積ブランディングパラメータAZを用いて、Xの前記第1のワードにY′の前記第2のワードに乗算して得た部分積に、AZから抽出されたブランディングワードを加算して、乗積ZのブラインドバージョンZ′=Z+AZを計算することを特徴とする、請求項1に記載のマルチワード乗算器回路。
  6. 前記回路は、前記部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互及び置換された順序で前記部分積の前記第3のワードを減算することを特徴とする、請求項1に記載のマルチワード乗算器回路。
  7. 前記乗積ZまたはZのブラインドバージョンは、暗号化エンジンへの入力として使用されることを特徴とする、請求項1に記載のマルチワード乗算器回路。
  8. 電力解析攻撃を防止する方法であって、
    マルチワード乗算器回路が一つまたは複数の第1のワードを含む第1のパラメータXと、複数の第2のワードを含む第2のパラメータY′と、を受信し、前記第2のパラメータY′は、非ブラインドパラメータYのブラインドバージョンであり、前記非ブラインドパラメータYはブランディングパラメータAYによってブラインドされるため、Y′=Y+AY、
    複数の部分積を累計することによってZ=X・Yの積を計算し、前記複数の部分積のそれぞれは、Xの第1のワードにY′の第2のワードを乗算し、且つ部分積P=X・BYの
    対応の第3のワードを中間臨時合計から減算し、BYはAYに含まれるブランディングワードであること
    前記ブラインドパラメータY′にAYとは異なる後続ブランディングパラメータを加算することにより、前記ブラインドパラメータY′を更新して、臨時ブラインドパラメータを生成し、且つ前記臨時ブラインドパラメータからAYを減算するステップをさらに含むことを特徴とする、電力解析攻撃を防止する方法。
  9. 前記マルチワード乗算器回路は、一つまたは複数の電源入力が供給する電力を消費すると共に、乗算期間に前記非ブラインドパラメータYを電源入力の検知から復元できないようにすることを特徴とする、請求項に記載の電力解析攻撃を防止する方法。
  10. 前記ブランディングパラメータAYが含むビット数は、前記非ブラインドパラメータYが含むビット数よりも大きいことを特徴とする、請求項に記載の電力解析攻撃を防止する方法。
  11. 前記ブランディングパラメータAYは、前記ブランディングワードBYと少なくとも1つのBYのシフトバージョンとの合計を含むことを特徴とする、請求項に記載の電力解析攻撃を防止する方法。
  12. 対応の乗積ブランディングパラメータAZを用いて、Xの前記第1のワードにY′の前記第2のワードに乗算して得た部分積に、AZから抽出されたブランディングワードを加算して、乗積ZのブラインドバージョンZ′=Z+AZを計算するステップをさらに含むことを特徴とする、請求項に記載の電力解析攻撃を防止する方法。
  13. 前記乗積を計算するステップは、前記部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互及び置換された順序で前記部分積の前記第3のワードを減算することを含むことを特徴とする、請求項に記載の電力解析攻撃を防止する方法。
  14. 前記乗積を計算するステップは、前記乗積ZまたはZのブラインドバージョンを、暗号化エンジンへの入力として使用することを特徴とする、請求項に記載の電力解析攻撃を防止する方法。
JP2019056016A 2018-03-25 2019-03-25 マルチワード乗算器回路及び電力解析攻撃を防止する方法 Active JP6735870B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/935,004 2018-03-25
US15/935,004 US10778407B2 (en) 2018-03-25 2018-03-25 Multiplier protected against power analysis attacks

Publications (2)

Publication Number Publication Date
JP2019168694A JP2019168694A (ja) 2019-10-03
JP6735870B2 true JP6735870B2 (ja) 2020-08-05

Family

ID=67985731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019056016A Active JP6735870B2 (ja) 2018-03-25 2019-03-25 マルチワード乗算器回路及び電力解析攻撃を防止する方法

Country Status (4)

Country Link
US (1) US10778407B2 (ja)
JP (1) JP6735870B2 (ja)
CN (1) CN110309651B (ja)
TW (1) TWI736817B (ja)

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049865A (en) 1997-12-18 2000-04-11 Motorola, Inc. Method and apparatus for implementing floating point projection instructions
JP2002268547A (ja) * 2001-03-08 2002-09-20 Toshiba Corp 演算装置、方法及びプログラム
WO2005099098A1 (en) * 2004-04-09 2005-10-20 Audioasics A/S Sigma delta modulator
US7161507B2 (en) 2004-08-20 2007-01-09 1St Works Corporation Fast, practically optimal entropy coding
CA2542556C (en) 2005-06-03 2014-09-16 Tata Consultancy Services Limited An authentication system executing an elliptic curve digital signature cryptographic process
WO2007000702A2 (en) * 2005-06-29 2007-01-04 Koninklijke Philips Electronics N.V. Arrangement for and method of protecting a data processing device against a cryptographic attack or analysis
CN101271570B (zh) 2008-05-07 2011-08-17 威盛电子股份有限公司 用于绘图处理单元中的大整数乘法运算的装置和方法
FR2941342B1 (fr) * 2009-01-20 2011-05-20 Groupe Des Ecoles De Telecommunications Get Ecole Nat Superieure Des Telecommunications Enst Circuit de cryptographie protege contre les attaques en observation, notamment d'ordre eleve.
CA2754370A1 (en) 2011-10-07 2013-04-07 Revere Security Corporation Method and device for data encryption and decryption
AU2011232817A1 (en) 2011-10-07 2013-05-02 Revere Security Corporation Method and device for data encryption and decryption
KR20130111721A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서
US20130332707A1 (en) 2012-06-07 2013-12-12 Intel Corporation Speed up big-number multiplication using single instruction multiple data (simd) architectures
CN102999313B (zh) 2012-12-24 2016-01-20 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
US9959429B2 (en) * 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
TWI521935B (zh) * 2013-08-08 2016-02-11 新唐科技股份有限公司 加解密裝置及其加解密方法
EP2884387B1 (en) * 2013-12-13 2016-09-14 Thomson Licensing Efficient modular addition resistant to side-channel attacks
US9749344B2 (en) * 2014-04-03 2017-08-29 Fireeye, Inc. System and method of cyber threat intensity determination and application to cyber threat mitigation
US9628308B2 (en) * 2014-10-30 2017-04-18 Mediatek Inc. Circuit, communication unit and method for VCO frequency adjustment
DE102014222825A1 (de) * 2014-11-07 2016-05-12 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Vorrichtung und Verfahren zur Multiplikation zur Erschwerung von Seitenkanalangriffen
US20160179470A1 (en) 2014-12-23 2016-06-23 Shay Gueron Method and apparatus for performing big-integer arithmetic operations
US9870339B2 (en) 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing
EP3188001B1 (en) * 2015-12-29 2020-08-12 Secure-IC SAS Modular multiplication device and method
US10303878B2 (en) * 2016-01-22 2019-05-28 Yu-Liang Wu Methods and apparatus for automatic detection and elimination of functional hardware trojans in IC designs
TWI608381B (zh) * 2016-04-19 2017-12-11 華邦電子股份有限公司 加解密裝置及其功率分析防禦方法
CN107547189A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
US10367637B2 (en) * 2016-07-22 2019-07-30 Qualcomm Incorporated Modular exponentiation with transparent side channel attack countermeasures
FR3055437A1 (fr) * 2016-08-23 2018-03-02 Stmicroelectronics (Rousset) Sas Protection d'un calcul d'exponentiation modulaire
DE102017117907B4 (de) * 2017-08-07 2023-04-27 Infineon Technologies Ag Durchführen einer kryptografischen Operation

Also Published As

Publication number Publication date
TWI736817B (zh) 2021-08-21
CN110309651B (zh) 2021-08-06
TW201941096A (zh) 2019-10-16
US10778407B2 (en) 2020-09-15
CN110309651A (zh) 2019-10-08
JP2019168694A (ja) 2019-10-03
US20190296891A1 (en) 2019-09-26

Similar Documents

Publication Publication Date Title
CN107040362B (zh) 模乘设备和方法
US11190337B2 (en) Execution unit for calculations with masked data
JP5412274B2 (ja) サイドチャネル攻撃からの保護
Danger et al. A synthesis of side-channel attacks on elliptic curve cryptography in smart-cards
CN101194457A (zh) 随机模数化多项式约简方法及其硬件
TWI821501B (zh) 安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法
EP1006492A1 (en) Information processing equipment and IC card
TW200839609A (en) Modular multiplication method with precomputation using one known operand
CN103221917A (zh) 加密运算中模幂的保护
TWI403144B (zh) 隨機化模數減化方法及其硬體
Sinha Roy et al. Lightweight coprocessor for Koblitz curves: 283-bit ECC including scalar conversion with only 4300 gates
JP2011510578A (ja) 非対称暗号のための防護方法およびデバイス
CN101213512A (zh) 保护数据处理设备以抵御攻击或分析的装置和方法
CN113032797A (zh) 在处理设备中执行加密操作的方法
US8781112B2 (en) Signed montgomery arithmetic
JP4378479B2 (ja) カバート・チャネル攻撃に対して安全な整数除算法
KR20080014857A (ko) 랜덤화된 모듈러 다항식 약분 방법 및 그 방법을 위한하드웨어
US20210226789A1 (en) Method for performing cryptographic operations on data in a processing device, corresponding processing device and computer program product
JP6735870B2 (ja) マルチワード乗算器回路及び電力解析攻撃を防止する方法
EP2629195B1 (en) Exponentiation system
KR101128505B1 (ko) 모듈러 곱셈 연산 방법 및 장치
Saldamli et al. Uniform montgomery multiplier
US20240250801A1 (en) Apparatus and method for cryptography secure against side-channel attacks
Walter et al. Data dependent power use in multipliers
US7801937B1 (en) Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190325

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20191210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200429

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: 20200618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200714

R150 Certificate of patent or registration of utility model

Ref document number: 6735870

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250