(57)【要約】      （修正有）【課題】電力解析攻撃を防止するマルチワード乗算器を提供する。【解決手段】マルチワード乗算器４４は、インターフェース５６及び回路（ワードベースの乗算器６０、加算器７０）を備える。インターフェースは、一つ又は複数の第１のワードの第１のパラメータＸ（６４）及び複数の第２のワードを含む第２のパラメータＹ′（６８）を受信するように設置される。第２のパラメータは、非ブラインドパラメータＹのブラインドバージョンであり、ブランディングパラメータＡＹ（７２）によってブラインドされるため、Ｙ′＝Ｙ＋ＡＹ。回路は、複数の部分積を累計することによってＺ＝Ｘ・Ｙの積を計算する。前記複数の部分積のそれぞれは、Ｘの第１のワードにＹ′の第２のワードを乗算し、且つ、部分積Ｐ（７６）＝Ｘ・ＢＹの対応の第３のワードを中間臨時合計から減算する。ＢＹは、ＡＹに含まれるブランディングワードである。【選択図】図１
2019168694.tif 000002
【特許請求の範囲】
【請求項１】
インターフェースと回路とを備えるマルチワード乗算器回路であって、
前記インターフェースは、一つまたは複数の第１のワードを含む第１のパラメータＸと、複数の第２のワードを含む第２のパラメータＹ′と、を受信するように設置され、
前記第２のパラメータＹ′は、非ブラインドパラメータＹのブラインドバージョンであり、前記非ブラインドパラメータＹはブランディングパラメータＡＹによってブラインドされるため、Ｙ′＝Ｙ＋ＡＹ、
前記回路は、複数の部分積を累計することによってＺ＝Ｘ・Ｙの積を計算し、前記複数の部分積のそれぞれは、Ｘの第１のワードにＹ′の第２のワードを乗算し、且つ部分積Ｐ＝Ｘ・ＢＹの対応の第３のワードを中間臨時合計から減算し、ＢＹはＡＹに含まれるブランディングワードであることを特徴とする、マルチワード乗算器回路。
【請求項２】
前記回路は、一つまたは複数の電源入力が供給する電力を消費するとともに、乗算期間に前記非ブラインドパラメータＹを電源入力の検知から復元できないようにすることを特徴とする、請求項１に記載のマルチワード乗算器回路。
【請求項３】
前記ブランディングパラメータＡＹが含むビット数は、前記非ブラインドパラメータＹが含むビット数よりも大きいことを特徴とする、請求項１に記載のマルチワード乗算器回路。
【請求項４】
前記ブランディングパラメータＡＹは、前記ブランディングワードＢＹと少なくとも１つのＢＹのシフトバージョンとの合計を含むことを特徴とする、請求項１に記載のマルチワード乗算器回路。
【請求項５】
前記回路は、対応の乗積ブランディングパラメータＡＺを用いて、Ｘの前記第１のワードにＹ′の前記第２のワードに乗算して得た部分積に、ＡＺから抽出されたブランディングワードを加算して、乗積ＺのブラインドバージョンＺ′＝Ｚ＋ＡＺを計算することを特徴とする、請求項１に記載のマルチワード乗算器回路。
【請求項６】
前記回路は、前記部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互及び置換された順序で前記部分積の前記第３のワードを減算することを特徴とする、請求項１に記載のマルチワード乗算器回路。
【請求項７】
前記回路は、前記ブラインドパラメータＹ′にＡＹとは異なる後続ブランディングパラメータを加算することにより、前記ブラインドパラメータＹ′を更新して、臨時ブラインドパラメータを生成し、且つ前記臨時ブラインドパラメータからＡＹを減算することを特徴とする、請求項１に記載のマルチワード乗算器回路。
【請求項８】
前記乗積ＺまたはＺのブラインドバージョンは、暗号化エンジンへの入力として使用されることを特徴とする、請求項１に記載のマルチワード乗算器回路。
【請求項９】
電力解析攻撃を防止する方法であって、
マルチワード乗算器回路が一つまたは複数の第１のワードを含む第１のパラメータＸと、複数の第２のワードを含む第２のパラメータＹ′と、を受信し、前記第２のパラメータＹ′は、非ブラインドパラメータＹのブラインドバージョンであり、前記非ブラインドパラメータＹはブランディングパラメータＡＹによってブラインドされるため、Ｙ′＝Ｙ＋ＡＹ、
複数の部分積を累計することによってＺ＝Ｘ・Ｙの積を計算し、前記複数の部分積のそれぞれは、Ｘの第１のワードにＹ′の第２のワードを乗算し、且つ部分積Ｐ＝Ｘ・ＢＹの対応の第３のワードを中間臨時合計から減算し、ＢＹはＡＹに含まれるブランディングワードであることを特徴とする、電力解析攻撃を防止する方法。
【請求項１０】
前記マルチワード乗算器回路は、一つまたは複数の電源入力が供給する電力を消費すると共に、乗算期間に前記非ブラインドパラメータＹを電源入力の検知から復元できないようにすることを特徴とする、請求項９に記載の電力解析攻撃を防止する方法。
【請求項１１】
前記ブランディングパラメータＡＹが含むビット数は、前記非ブラインドパラメータＹが含むビット数よりも大きいことを特徴とする、請求項９に記載の電力解析攻撃を防止する方法。
【請求項１２】
前記ブランディングパラメータＡＹは、前記ブランディングワードＢＹと少なくとも１つのＢＹのシフトバージョンとの合計を含むことを特徴とする、請求項９に記載の電力解析攻撃を防止する方法。
【請求項１３】
対応の乗積ブランディングパラメータＡＺを用いて、Ｘの前記第１のワードにＹ′の前記第２のワードに乗算して得た部分積に、ＡＺから抽出されたブランディングワードを加算して、乗積ＺのブラインドバージョンＺ′＝Ｚ＋ＡＺを計算するステップをさらに含むことを特徴とする、請求項９に記載の電力解析攻撃を防止する方法。
【請求項１４】
前記乗積を計算するステップは、前記部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互及び置換された順序で前記部分積の前記第３のワードを減算することを含むことを特徴とする、請求項９に記載の電力解析攻撃を防止する方法。
【請求項１５】
前記ブラインドパラメータＹ′にＡＹとは異なる後続ブランディングパラメータを加算することにより、前記ブラインドパラメータＹ′を更新して、臨時ブラインドパラメータを生成し、且つ前記臨時ブラインドパラメータからＡＹを減算するステップをさらに含むことを特徴とする、請求項９に記載の電力解析攻撃を防止する方法。
【請求項１６】
前記乗積を計算するステップは、前記乗積ＺまたはＺのブラインドバージョンを、暗号化エンジンへの入力として使用することを特徴とする、請求項９に記載の電力解析攻撃を防止する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一種の安全計算システムに関わり、具体的には、電力解析攻撃を防止する方法及びシステムに関する。
【背景技術】
【０００２】
電力解析攻撃（Ｐｏｗｅｒ  ａｎａｌｙｓｉｓ  ａｔｔａｃｋｓ）とは、攻撃者が操作中にハードウェアデバイスの消費電力の変動を監視して、デバイスから暗号化キーやその他の秘密情報を抽出する攻撃である。差分電力解析（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ、ＤＰＡ）とは、複数の暗号操作で消費される電力の統計分析によって、暗号計算（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｏｐｅｒａｔｉｏｎｓ）の計算中に攻撃者が秘密情報を抽出することを可能にする電力分析方法である。
【０００３】
電力解析攻撃は通常、非侵襲的な手段であるため、検出することが難しい。ＤＰＡなどの電力解析攻撃を防止するための一般的な方法については、消費電力から秘密情報が漏れないようにハードウェアを設計することである。
【発明の概要】
【０００４】
本明細書に記載の実施例は、インターフェースと回路とを備えるマルチワード乗算器回路を提供する。インターフェースは、一つまたは複数の第１のワードを含む第１のパラメータＸと、複数の第２のワードを含む第２のパラメータＹ′と、を受信するように設置され、前記第２のパラメータＹ′は、非ブラインドパラメータＹのブラインドバージョンであり、非ブラインドパラメータＹはブランディングパラメータＡＹによってブラインドされるため、Ｙ′＝Ｙ＋ＡＹ。前記回路は、複数の部分積を累計することによってＺ＝Ｘ・Ｙの積を計算し、複数の部分積のそれぞれは、Ｘの第１のワードにＹ′の第２のワードを乗算し、且つ部分積Ｐ＝Ｘ・ＢＹの対応の第３のワードを中間臨時合計から減算し、ＢＹはＡＹに含まれるブランディングワードである。
【０００５】
一部の実施例において、回路は、一つまたは複数の電源入力が供給する電力を消費するとともに、乗算期間に前記非ブラインドパラメータＹを電源入力の検知から復元できないようにする。他の実施例において、ブランディングパラメータＡＹが含むビット数は、前記非ブラインドパラメータＹが含むビット数よりも大きい。もう１つの実施例において、ブランディングパラメータＡＹは、前記ブランディングワードＢＹと少なくとも１つのＢＹのシフトバージョン（ｓｈｉｆｔｅｄ  ｖｅｒｓｉｏｎ）との合計を含む。
【０００６】
一実施例において、前記回路は、対応の乗積ブランディングパラメータＡＺを用いて、Ｘの前記第１のワードにＹ′の前記第２のワードに乗算して得た部分積に、ＡＺから抽出されたブランディングワードを加算して、乗積ＺのブラインドバージョンＺ′＝Ｚ＋ＡＺを計算する。もう１つの実施例において、前記回路は、前記部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互（ｉｎｔｅｒｌｅａｖｅｄ）及び置換（ｐｅｒｍｕｔｅｄ）された順序で前記部分積の前記第３のワードを減算する。
【０００７】
一部の実施例において、前記回路は、前記ブラインドパラメータＹ′にＡＹとは異なる後続ブランディングパラメータを加算することにより、前記ブラインドパラメータＹ′を更新して、臨時ブラインドパラメータを生成し、且つ前記臨時ブラインドパラメータからＡＹを減算する。
【０００８】
本明細書に記載する実施例は、一種の電力解析攻撃を防止する方法を提供する。マルチワード乗算器回路が一つまたは複数の第１のワードを含む第１のパラメータＸと、複数の第２のワードを含むパラメータＹ′と、を受信し、前記第２のパラメータＹ′は、非ブラインドパラメータＹのブラインドバージョンであり、前記非ブラインドパラメータＹはブランディングパラメータＡＹによってブラインドされるため、Ｙ′＝Ｙ＋ＡＹ、複数の部分積を累計することによってＺ＝Ｘ・Ｙの積を計算し、前記複数の部分積のそれぞれは、Ｘの第１のワードにＹ′の第２のワードを乗算し、且つ部分積Ｐ＝Ｘ・ＢＹの対応の第３のワードを中間臨時合計から減算し、ＢＹはＡＹに含まれるブランディングワードである。
【０００９】
本発明をより完全に理解するために、添付図面を参照して、実施例の表現形式で以下のように詳細に説明する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本明細書に記載の実施例による、電力分析攻撃に対して保護された暗号システムを概略的に示すブロック図。
【図２】図２は、本明細書に記載の実施例による、変動ブラインドパラメータを使用して、ブラインド乗積を計算する方法のフローチャート。
【図３】図３は、本明細書に記載する実施例による、ハードウェアで実施されるマルチワード乗算器のブロック図。
【発明を実施するための形態】
【００１１】
概要
【００１２】
本明細書に記載する実施例は、電力解析攻撃から暗号システムを保護するために改善された方法及びシステム。開示された実施例において、パラメータ（例えば、秘密パラメータ）は、暗号化操作の入力として使用される前に、回復可能なように修正される。秘密パラメータは通常、それを使用する各暗号化操作の前に、このように修正される。このような修正は、“ブランディング（ｂｌｉｎｄｉｎｇ）”とも呼ばれ、そして修正されたパラメータは“ブラインドパラメータ（ｂｌｉｎｄｅｄ  ｐａｒａｍｅｔｅｒ）”とも呼ばれる。
【００１３】
例えば、暗号関数ｆ（．）をパラメータＸｉｎに応用する暗号装置、すなわち、暗号装置がＸｏｕｔ＝ｆ（Ｘｉｎ）を計算する必要がある。Ｘｉｎ及びＸｏｕｔの値を隠すために、Ｘｉｎを適切なブランディング関数Ｅを計算して、Ｘｉｎ′に表示されるブラインドパラメータに変更することができる。そのうち、Ｘｉｎ′＝Ｅ（Ｘｉｎ）。この場合、暗号関数の出力Ｘｏｕｔ′＝ｆ（Ｘｉｎ′）はブラインドされ、ブラインドされたＸｏｕｔ′に適切な逆ブランディング関数（ｒｅｖｅｒｓｅ  ｂｌｉｎｄｉｎｇ  ｆｕｎｃｔｉｏｎ）Ｅ′を適用して、Ｘｏｕｔを非ブラインドの出力Ｘｏｕｔ′に回復することができる。そのうち、Ｘｏｕｔ＝Ｅ′（Ｘｏｕｔ′）。Ｅ′は、必ずしもＥの逆関数（ｉｎｖｅｒｓｅ  ｆｕｎｃｔｉｏｎ）ではないことに留意されたい。ブランディング関数Ｅによって適用された運算は、例えば、Ｘｉｎにランダム値Ｒｎを加算すること、すなわち、Ｘｉｎ′＝Ｘｉｎ＋Ｒであり得る。そのうち、Ｒはランダムに選択される。
【００１４】
開示された実施例において、暗号装置は、ＸとＹの表示される２つのパラメータの乗積を計算することが要求され、それぞれのパラメータは複数のｍビットワードを含む。例えばセキュリティ目的のため、パラメータＹのブラインド形式はＹ′＝Ｙ＋ＡＹで提供した場合、Ｘ・Ｙの計算後の乗積は、Ｘ・Ｙ＝Ｘ・Ｙ′−Ｘ・ＡＹで間接に得ることができる。
【００１５】
開示された実施例において、マルチワード乗算は、ワードベースの乗算器（ｗｏｒｄ−ｂａｓｅｄ  ｍｕｌｔｉｐｌｉｅｒ）”とも呼ばれる、ｍ×ｍ乗算器（ｍ−ｂｙ−ｍ  ｍｕｌｔｉｐｌｉｅｒ）によって実行する。ワードベースの乗算器を使用して、それぞれの入力パラメータのｍビットワード間の複数の部分積を計算することによって、マルチワード乗算を実行する。入力パラメータの乗算がｎ個のｍビットのワードを含むことを仮定すると、Ｘ・Ｙ′−Ｘ・ＡＹを計算するために（２．ｎ２）個のｍ×ｍ乗算運算が必要である。
【００１６】
以下で説明する実施例において、多数の乗算をｍ×ｍ乗算運算に分解するが、他の実施例において、この運算は、ｍビットワードとｎビットワードとの基本的な乗算演算（ｎ≠ｍ）も使用することができる。例えば、ＸまたはＹなどのパラメータがｍ（またはｎ）の整数倍でない場合、パラメータサイズを基礎となるワードサイズの整数倍にするために、一つまたは複数の最上位ゼロビット（ｍｏｓｔ−ｓｉｇｎｉｆｉｃａｎｔ  ｚｅｒｏ  ｂｉｔｓ）を埋め込むことができる。
【００１７】
開示された実施例において、ＹのブランディングパラメータＡＹは、ＢＹで表示されるｍビットブランディングワードから構成され、すなわち、Ｙのブラインドパラメータの形式はＡＹ＝［ＢＹ，ＢＹ，．．．，ＢＹ］である。ＡＹのｍビットワードの数量は、Ｙのｍビットワードの数量よりも大きい。このような特殊な構造によって、Ｘ・ＡＹは、以下に詳細に説明するように、事前にＸ・ＢＹを一回計算して、中間結果にＸ・ＢＹのシフトバージョンを減算することにより、ｎ個のｍ×ｍ乗算運算の順序上の一つの数値で（ｎ２乗算運算の順序上の一つの数値で得られる任意のブラインドパラメータに比べて）効率的に計算することができる。その乗積結果または乗積結果のブラインドバージョンは、例えば、暗号エンジンの入力として使用することができる。
【００１８】
一部の実施例において、マルチワード乗算器が部分積を累加し、且つ直接乗算計算で生成された中間結果を表示しないように交互及び置換された順序で部分積のｍビットワードを減算する。
【００１９】
一部の実施例において、マルチワード乗算器は、乗積の計算中に非ブラインドパラメータＹが電源入力の検知から回復不能の方式で反復積演算を実行する。
【００２０】
Ｚは、乗積Ｚ＝Ｘ・Ｙを示すものとし、そしてＺ′はＺのブラインドバージョンを示す。一部の実施例において、マルチワード乗算器は相応の乗積ブランディングパラメータＡＺ＝［ＢＺ，ＢＺ，…ＢＺ］を用いて、ＡＺのｍビットワードＢＺを、ＸのｍビットワードにＹ′のｍビットワードを乗算する部分積に加算することにより乗積ＺのブラインドバージョンＺ′＝Ｚ＋ＡＺを計算する。
【００２１】
一実施例において、暗号装置（またはマルチワード乗算器）はＹ′にＡＹ′とは異なる後続ブランディングパラメータ（ｓｕｂｓｅｑｕｅｎｔ  ｂｌｉｎｄｉｎｇ  ｐａｒａｍｅｔｅｒ）を加算することによりブラインドパラメータを更新して、臨時ブラインドパラメータを生成し、そして臨時ブラインドパラメータからＡＹを減算する。
【００２２】
開示された技術において、マルチワード乗算器は第１のパラメータと第２のパラメータの乗積を計算し、そのうち、少なくとも第２のパラメータがブラインドされる。その乗積計算は、第２のパラメータの非ブラインド値を表示することなく、且つ直接乗算で中間結果を得ることができない方式でワードベースの乗算に分解される。結果、開示された暗号装置は電力解析攻撃に対して効果的に保護することができる。そして、乗積計算を効率的に実行したため、直接乗算に匹敵するレイテンシが得ることができる。
【００２３】
システムの説明
【００２４】
図１は、本明細書に記載する実施例による電力解析攻撃を防止する暗号システム２０を例示的に示すブロック図である。図１の実施例において、暗号システム２０は、プロセッサ３２と、プロセッサのシステムメモリ３４と、暗号エンジン３６と、暗号記憶装置４０と、マルチワード乗算器４４と、Ｉ／Ｏモジュール４８とを備える暗号装置２４を備え、前記部品は適切なバス５２で交互接続されている、図１の実施例において、マルチワード乗算器４４は暗号エンジン３６内に含まれる。
【００２５】
暗号システム２０は、安全の方法で資料を処理する様々な用途で使用することができる。例えば、暗号システム２０は、データの機密性、完全性、及び認証などの暗号化サービスを提供することができる。
【００２６】
暗号エンジン３６は、一般に暗号関数に関連する組に使用され、例えば、Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ（ＲＳＡ）法に関する鍵を評価するための暗号関数に使用される。
【００２７】
暗号記憶装置４０は、プロセッサ３２に実行されるプログラム命令、及び暗号エンジン３６によって操作されるデータを格納する。暗号記憶装置４０は、複数のメモリ装置（図示せず）を備えることができ、そのうち、少なくともいくつかが並行にアクセス可能である。暗号記憶装置４０に備えたメモリのそれぞれは、例えば、リードオンリーメモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＲＯＭ）、ランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ，ＲＡＭ）、フラッシュメモリ（Ｆｌａｓｈ  ｍｅｍｏｒｉｅｓ）のような非揮発性メモリ（Ｎｏｎｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ，ＮＶＭ）、または任意の適切な記憶手段であり得る。具体的には、暗号記憶装置４０内の異なるメモリ装置は異なるメモリタイプであり得る。
【００２８】
マルチワード乗算器４４は、暗号記憶装置４０内の特定情報をアクセスするためのインターフェース５６を備える。インターフェース５６は通常、一つまたは複数のアドレスレジスタ、暗号記憶装置内の関連アドレスを指すための他のロジック回路（図示せず）、ならびに効率的な乗算演算に局所的に必要なパラメータを格納するデータレジスタ（図示せず）を備える。
【００２９】
マルチワード乗算器４４は、２つのｍビット入力を受信して、相応な２ｍビットの部分積を生成するワードベースの乗算器６０を備える。本実施例において、マルチワード乗算器４４は、Ｘ  ６４で表記されるパラメータにＹ′  ６８で表記されるパラメータを乗算する。通常、入力パラメータＸ及びＹ′のそれぞれは、Ｘｉ及びＹ′ｊにそれぞれ表記される複数のｍビットワードを含む。マルチワード乗算器は、Ｘｉ・Ｙ′ｊの部分積を計算し、且つ加算減算ができる加算器７０によって、前記部分積に適切なｍビットシフトを加算する。一部の実施例において、マルチワード乗算器は中間累計結果を暗号記憶装置に記憶し、その後の計算に使用する。
【００３０】
パラメータＹ′  ６８は、非ブラインドパラメータＹのブラインド形式で提供されるため、Ｙ′はＹにブランディングパラメータＡＹ  ７２を加算することにより得る。すなわち、Ｙ′＝Ｙ＋ＡＹ。一部の実施例において、Ｘ・Ｙの乗積を効率に計算するため、Ｙのブラインドパラメータは、ｍビットシフトを有し、ＢＹで表記されるｍビットブランディングワードの文字列結合であり、すなわち、ＡＹ＝［ＢＹ，ＢＹ，…ＢＹ］。ブランディングパラメータＡＹのｍビットワードが含むビット数は、Ｙのｍビットワードが含むビット数よりも大きい。ブランディングワードは、例えば、事前乗算相（ｐｒｅ−ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｐｈａｓｅ）として、Ｐ＝Ｘ・ＢＹによって計算された部分積Ｐ  ７６を得るように使用される。乗積Ｘ・Ｙを計算する場合、加算器７０は、Ｘ・Ｙ乗積の臨時結果Ｐのｍビットワードからｍビットのシフトを減算して、Ｘ・Ｙの乗積結果を得る。
【００３１】
一部の実施例において、暗号装置２４は、ブラインド形式でＸ・Ｙの乗積結果を格納する。このような実施例において、加算器７０は、ブランディングパラメータＡＺ  ７８の乗積から抽出されたｍビットワードを部分積に加算する。ブラインド乗積結果は、Ｚ′＝Ｘ・Ｙ＋ＡＺ  によって与えられる。一部の実施例において、Ｙのブランディング方式のように、ＡＺはブラインドされたｍビットワードＢＺから構成される。この場合、全体のブランディングパラメータＡＺを格納することなく、ＢＺのみを格納すれば良い。図１の実施例において、暗号装置２４は、マルチワード乗算器によって生成された中間結果と、最終的なブラインド乗積とを、暗号記憶装置４０の乗積結果パラメータ８０に格納する。
【００３２】
暗号システム２０において、暗号装置２４は一つまたは複数の電力線８８によって電源８４を使用して電力を供給する。電源８４は、電池または電源モジュールを含む。電源８４は、通常、暗号装置２４内の各装置に使用される一つまたは複数の直流（ＤＣ）電圧を提供する。電力線８８の一端は、通常、電源に電気連結または機械的連結され、そして他端は適切なコネクタによって暗号装置に接続する。電源８４、電力線８８またはその両方は一般に保護されず、攻撃者９２にとってアクセス可能である。
【００３３】
暗号装置２４が消費する瞬時電力は、通常、例えば、暗号エンジン３６及び／またはマルチワード乗算器４４に実行される基本計算の関数によって変化する。攻撃者９２は、秘密情報を明かすように、一定期間内に電力消費量を監視する事ができる。例えば、攻撃者９２は暗号装置２４の電力消費量についての複数のサンプルを統計してＤＰＡ攻撃を実行する事ができる。本明細書の文脈において、用語“電力消費（ｐｏｗｅｒ  ｃｏｎｓｕｍｐｔｉｏｎ）”は、エネルギー、電圧、電流などの電力消費に関するすべての計測可能な物理属性を指す。
【００３４】
暗号システム２０において、後述されるように、マルチワード乗算器４４が実行する乗算運算は、Ｘ・Ｙの乗積をマルチワード乗算器によって効率的計算され、且つ中間結果において非ブラインド値Ｙを漏れないように設計される。結果として、攻撃者９２は電力線８８または電源８４を監視しても、Ｙを再構築することができない。
【００３５】
有効なマルチワードブラインド乗算（ｅｆｆｉｃｉｅｎｔ  ｍｕｌｔｉ−ｗｏｒｄ  ｂｌｉｎｄｅｄ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）
【００３６】
本明細書の文脈において、用語“ブラインド乗算”は、２つのパラメータの乗算運算を指し、そのうち、少なくとも１つのパラメータがブラインドされている。非ブラインドパラメータＸ及びＹは、それぞれｍビットワードの相応数量のＬＸ及びＬＹを含むことを仮定する。数１：ＹのブランディングパラメータＡＹに対して、その相応のブラインドバージョンＹ′は以下の数１で得る：
【００３７】
【数１】
2019168694.tif 000003
【００３８】
ブランディングＡＹは、複数のｍビットワードを含み、その数量は、ＬＹに一つ以上のｍビットワードよりも多い。本明細書に示すように、この設定は、暗号システム２０からＹに対する最高有効ビットの分析攻撃にとっては有効である。ＹとＡＹの長さはｎ個のワード、且つＹの最高有効ビット（ＭＳＢ）は１である場合、キャリービット（ｃａｒｒｙ  ｂｉｔ）は、数１の（ｎ＋１）番目のＹ′のワードに伝播（ｐｒｏｐａｇａｔｅｓ）する。このキャリービットは、電力解析手法を使用して推測できる。Ｘ、Ｙ′及びＡＹに基づいて、乗積Ｘ・Ｙ以下のように書くことができる：
【００３９】
【数２】
2019168694.tif 000004
【００４０】
数２を効率に計算するために、ＢＹで表記されるシングルｍビットブランディングワードでブラインドパラメータを定義する。具体的には、ｍビットシフトされるブランディングワードで複数のインスタンス（ｉｎｓｔａｎｃｅｓ）を埋め込むことにより、ブランディングパラメータＡＹを構成する。すなわち、ＡＹ＝［ＢＹ，ＢＹ，…ＢＹ］。ＡＹの長さ  （ｍビットワードで）  はＬＹ＋１に仮定し、ＡＹは以下の数３で得る：
【００４１】
【数３】
2019168694.tif 000005
【００４２】
ブランディングワードＢＹは、オール１のｍビットワード以外の任意の適切な値を有することができる。この制限により、（ｎ＋１）番目ワードを超えるキャリービットの伝播を防止することができる。Ｙのｊ番目のワードは、Ｙｊ＝（Ｙ′ｊ−ＢＹ）であるため、数２は次のように書き換えることができる：
【００４３】
【数４】
2019168694.tif 000006
【００４４】
数４はさらに次のように分解することができる：
【００４５】
【数５】
2019168694.tif 000007
【００４６】
数５に基づいて、乗積計算は、ｍビットシフト値２ｍ（ｉ＋ｊ）を有するすべてのＸｉ・Ｙ′ｊの部分積の二重和、及びｍビットシフト値２ｍｊを有するシフトバージョンの部分積Ｐ＝（Ｘ・ＢＹ）を含む。数５中の二重和は、ＬＸ・（ＬＹ＋１）のｍ×ｍ乗算によって運算するが、第２の和（ｓｅｃｏｎｄ  ｓｕｍ）は、（ＬＹ＋１）乗算運算でＰ＝（Ｘ・ＢＹ）を一回計算するのみが必要である。次は図３を参照しながら、数５に基づく効率的なマルチワード乗算器回路を詳細に説明する。
【００４７】
次に、ブラインド乗算運算の例を提供する。わかりやすくするために、この例の数値は１０進数で表す。この場合、２進数に使用される係数２ｍの累乗は、１０の累乗に置き換えられる。この例で乗算される値は、Ｘ＝７２１、且つＹ＝３４７、その結果は乗積Ｚ＝Ｘ・Ｙ＝２５０１８７。この実施例の説明において、Ｙｋは、Ｙのｋ番目の１０進数の数字であり、Ｙ′ｋは、Ｙ′ｋのｋ番目の１０進数の数字である。この例においてのブランディングワードはＢＹ＝２、且つブラインドパラメータはＡＹ＝２２２２。
【００４８】
直接計算において、下記数６、すなわち、７２１．７＋７２１．４．１０＋７２１．３．１００＝２５０１８７を得る。直接計算では、中間結果５０４７及び５０４７＋２８８４０＝３３８８７が生成される。
【００４９】
【数６】
2019168694.tif 000008
【００５０】
ブラインド乗積は、下記数７によって、ブラインドされ得る。非置換及び交互の方式によって、部分積の和を合計すると、７２１．９．１４４２＋７２１．６．１０−１４４２０＋７２１．５．１００−１４４２００＋７２１．２．１０００−１４４２０００が得る。このような置換の交互順序において、それぞれの部分積Ｘ・Ｙ′ｋの後に、Ｘ・Ｙ′ｋ・１０ｋを減算する。この場合、中間結果は｛６４８９，５０４７，４８３０７，３３８８７，３９４３８７，２５０１８７，１６９２１８７｝となり、最終結果は２５０１８７となる。よって、この順序の計算が、望ましくなく直接計算の中間結果５０４７及び３３８８７を明らかにする。
【００５１】
【数７】
2019168694.tif 000009
【００５２】
選択可能に、交互及び置換された順序でブラインド計算を実行することができ、例えば、７２１．９＋７２１．６．１０−１４４２＋７２１．５．１００−１４４２０＋７２１．２．１０００−１４４２００−１４４２０００。この例において、Ｘ・Ｙ′０＋Ｘ・Ｙ′１・１０は、シフト部分積Ｘ・ＢＹを減算する前に計算する。この場合、中間和は｛６４８９，４９７４９，４８３０７，４０８８０７，３９４３８７，１８３６３８７，１６９２１８７｝となり、結果も２５０１８７となる。この交互及び置換された順序で乗積を計算することによって、直接計算の中間結果は公開されないことを留意されたい。上記の例においての計算の特定の交互及び置換された順序は、必須ではなく、部分積を合計する他の任意の交互及び置換された順序も使用することができる。
【００５３】
様々なブラインドパラメータを有するブラインド乗積
【００５４】
図２は、本明細書の実施例による、様々なブラインドパラメータを使用してブラインド乗積を計算する方法のフローチャートである。この方法は、図１の暗号装置２４の各部材によって実行されるように説明される。
【００５５】
第１のパラメータ初期化ステップ１００において、暗号装置は、ブラインドｍビットワードＢＹ（ｎ−１）から派生されたブランディングパラメータＡＹ（ｎ−１）によって、非ブラインドパラメータＹに基づくブラインドされたマルチワードパラメータＹ′（ｎ−１）を用意する。記号ｎは、シーケンシャルタイムインデックスを表す。Ｙのブランディングは、例えば、上記の数２及び数３に基づくものである。ＢＹ（ｎ−１）に関連するのは部分積ｐ（ｎ−１）であり、ＢＹ（ｎ−１）と前のパラメータＸと乗算する事によって計算する。第２のパラメータ初期化ステップ１０４において、暗号装置は、非ブラインドマルチワードパラメータＸを用意する。一実施例において、ステップ１００でステップ１０４で、暗号装置はＩ／Ｏモジュール４８によって、相応なパラメータを受信する。または、パラメータＸとＹ′（ｎ−１）との内の少なくとも１つは、プロセッサ３２、暗号エンジン３６またはその両方によって生成する。その暗号装置は、パラメータＸ及びＹ′（ｎ−１）を暗号記憶装置４０中のそれぞれの記憶空間６４及び６８に格納する。暗号装置はまた、ブランディングパラメータＡＹ（ｎ−１）を暗号記憶装置４０の記憶空間７２に格納する。
【００５６】
ブラインドパラメータを更新するステップ１０８において、暗号装置は更新されたブランディングパラメータＡＹ（ｎ）を生成する。例示的な実施例において、暗号装置は任意の適切なランダム化方法を使用して、ランダムまたは疑似ランダムな方法で更新のブラインドｍビットワードＢＹ（ｎ）を生成し、且つＢＹ（ｎ）の複数のｍビットでのシフトバージョンに連結して、数３のように更新のブラインドパラメータを生成する。
【００５７】
再ブランディング（ｒｅ−ｂｌｉｎｄｉｎｇ）ステップ１１２において、暗号装置は、ブランディングパラメータＡＹ（ｎ）をＹ′（ｎ−１）に加算して、且つ前のブランディングパラメータＡＹ（ｎ−１）を減算することによりブラインドパラメータＹを再ブランディングする。この更新方式により、ＡＹ（ｎ−１）はＹ′（ｎ−１）から直接に減算することがないことを留意されたい。その原因は、前記の減算の方法は、望ましくなくＹの値を公開する。
【００５８】
部分積を計算するステップ１１６において、暗号装置は、ステップ１０８の更新されたブラインドｍビットワードを使用して、部分積Ｐ（ｎ）＝Ｘ・ＢＹ（ｎ）を更新する。暗号装置が計算した部分積を暗号記憶装置の記憶空間７６に格納する。
【００５９】
積計算ステップ１２０において、暗号装置はＸ・Ｙの乗積を計算する。例えば、暗号装置に配置されたマルチワード乗算器４４のインターフェース５６によって、暗号記憶装置４０の相応の記憶空間に格納されたＸ、Ｙ′（ｎ）及びＰ（ｎ）にアクセスし、且つ暗号記憶装置の記憶空間８０によって乗積結果を出力する。そして、暗号装置は、例えば、上記の数５に基づいて、マルチワード乗算器によって乗算運算を実行する。
【００６０】
ステップ１２０の後、本方法はステップ１００に戻り、次のブラインドパラメータを受信して、他の（または同じ）パラメータＸに乗算する。
【００６１】
図２の方法において、暗号装置はそれぞれのマルチワード乗算の前にブラインドＹを再ブランディングしたが、これは必須ではない。代替な実施例において、暗号装置は選択可能にＹをブランディングすることができ、すなわち、毎回の乗算運算予定数ごとに実行し、または他の任意のサンプリング方法を使用する。
【００６２】
ハードウェア実装のマルチワード乗算器
【００６３】
図３は、本発明の実施例によるハードウェア実装のマルチワード乗算器２００を概略的示すブロック図である。例えば、マルチワード乗算器２００は、図１の暗号装置２４のマルチワード乗算器４４を実装するように使用することができる。
【００６４】
図３の例において、以下に詳細に説明するように、マルチワード乗算器２００は、メモリ２０４、２０６、２０８及び２１０に接続して入力パラメータを受信して、中間及び最終結果を出力する。本実施例において、メモリ２０４、２０６、２０８及び２１０のそれぞれは、ｍビットワードのデータ単位でアクセス可能である。したがって、ｍ．Ｗビットを含むパラメータは、相応のメモリのＷ個のエントリ（ｅｎｔｒｉｅｓ）を占有する。メモリ２０４、２０６、２０８及び２１０は、それぞれＭＥＭ１、ＭＥＭ２、ＭＥＭ３及びＭＥＭ４に表記される。
【００６５】
メモリＭＥＭ１は、Ｘ′とＹ′に表記される入力パラメータを格納する。本実施例において、暗号化レベルを改善するために、入力パラメータはブラインドパラメータとしてマルチワード乗数の外部に格納され、且つ相応なブラインドパラメータを使用し、すなわち、Ｘ′＝Ｘ＋ＡＸとＹ′＝Ｙ＋ＡＹを使用する。そのうち、ＸとＹは、Ｘ′とＹ′のそれぞれから派生する非ブラインドパラメータであり、そして、それぞれのブラインドパラメータはＡＸとＡＹである。
【００６６】
各ブラインドｍビットワードＢＸとＢＹを、ＡＸ＝［ＢＸ，ＢＸ，…，ＢＸ］とＡＹ＝［ＢＹ，ＢＹ，…，ＢＹ］で埋め込むによって、ブラインドパラメータを構成する。ＬＸとＬＹは、ＸとＹのｍビットワードを単位としての相応長さを表示することに仮定する。ＡＸは、ＢＸのＬＸ＋１インスタンスを埋め込むことにより構成され、ＡＹはＢＹのＬＹ＋１インスタンスを埋め込むことにより構成される。
【００６７】
マルチワード乗算器２００は、Ｙベースアドレスレジスタ（Ｙ  ｂａｓｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）２１２、Ｘベースアドレスレジスタ（Ｘ  ｂａｓｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）２１４、結果ベースアドレスレジスタ（ｒｅｓｕｌｔ  ｂａｓｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）２１６及び部分積ベースアドレスレジスタ（ｐａｒｔｉａｌ  ｐｒｏｄｕｃｔ  ｂａｓｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ）２１８を備える。Ｙベースアドレスレジスタ２１２とＸベースアドレスレジスタ２１４は、ＭＥＭ１の第１のｍビットワードＹ′とＸ′にそれぞれを指す。結果ベースアドレスレジスタ２１６は、メモリＭＥＭ２とＭＥＭ３の内の一つに格納される乗算結果の第１のｍビットワードを指す。部分積ベースアドレスレジスタ２１８は、メモリＭＥＭ４に格納される部分積Ｘ・ＢＹの第１のｍビットワードを指す。部分積は、予め計算されてＭＥＭ４に格納されることを仮定する。部分積Ｘ・ＢＹは、例えば、マルチワード乗算器２００を使用して計算することができる。あるいは、部分積は、プロセッサ３２を使用して、または他の任意の適切な手段を使用して計算することができる。
【００６８】
Ｘカウンタ２２０は、範囲はｉ＝０…．（ＬＸ＋１）であるインデックス′ｉ′を生成する。インデックス′ｉ′の値は、加算器２２２を使用してＸベースアドレスレジスタ内の値に加算され、ＭＥＭ１内のＸ′にアクセスするために、マルチプレクサ２２４によってルーティングされるアドレス値を生成する。同様に、Ｙカウンタ２２６は、ｉ＝０を生成する場合、インデックス′ｊ′の範囲はｊ＝０…．（ＬＹ＋１）であり、ｉ＞０である場合、ｊの範囲はｊ＝−１…．（ＬＹ＋１）である。インデックス′ｊ′の値は、加算器２２８を使用してＹベースアドレスレジスタの値に加算され、ＭＥＭ１内のＹ′にアクセスするために、マルチプレクサ２２４によってルーティングされるアドレス値を生成する。
【００６９】
Ｘカウンタ２２０及びＹカウンタ２２６は、適切なクロック回路（ｃｌｏｃｋｉｎｇ  ｃｉｒｃｕｉｔ）（図示せず）を使用して生成されたクロックサイクル（ｃｌｏｃｋ  ｃｙｃｌｅｓ）に従って増分する。一部の実施例において、Ｙカウンタは、各クロックサイクルにつき一回増分し、値ＬＹ＋１に到達する後にゼロまたは−１に戻る。Ｘカウンタ（インデックス′ｉ′）は、Ｙカウンタの後に増分する（インデックス′ｊ′は値ＬＹ＋１に到達し、且つ値ＬＸ＋１に到達した後ゼロに戻す）。あるいは、Ｙカウンタ２２６及びＸカウンタ２２０のための他の適切なカウント方式も使用され得る。
【００７０】
加算器２３０は、Ｘカウンタ及びＹカウンタのインデックスを合計して合計インデックス（ｉ＋ｊ）を生成し、合計インデックス（ｉ＋ｊ）は加算器２３２を使用してレジスタ２１６の結果基本アドレスのその値に加算して、ＭＥＭ２またはＭＥＭ３内の乗算結果の（ｉ＋ｊ）番目のｍビットワード（または中間結果）をアクセスするアドレスを生成する。加算器２３４は、ＭＥＭ４中の部分積Ｘ・ＢＹの第ｊ個ｍビットワードをアクセスするように、インデックス値（ｊ＋１）をレジスタ２１８の基本アドレス内の部分積値に加算する。
【００７１】
本実施例において、マルチワード乗算器２００は、２ｍビット出力を生成するように、２つのｍビットワードの間に乗算運算を実行するワードベースの乗算器２４０を備える。ワードベースの乗算器２４０は、図１のワードベースの乗算器６０を実施するように使用することができる。ワードベースの乗算器２４０は、非ブラインド入力レジスタ２４４から抽出された非ブラインドパラメータＸのｍビットワードＸｉ、及びＭＥＭ１から抽出されたブラインドパラメータＹ′のもう１つのｍビットワードＹ′ｊを受信して、２ｍビットの部分積Ｘｉ・Ｙ′ｊを出力する。
【００７２】
一部の実施例において、ワードベースの乗算器は、１つのクロックサイクル内に部分積結果を生成する。もう１つの実施例において、部分積を生成するには、複数のクロックサイクルが必要であり、この場合、Ｘカウンタ及びＹカウンタのクロッキングはそれに応じて禁止される。一部の実施例において、後述されるように、条件ｊ＝＝−１、ｊ＝＝ＬＸ＋１またはｉ＝＝ＬＸ＋１の内の１つも満たすことに応じて、強制的にワードベースの乗算器の出力をゼロにされる。
【００７３】
Ｘブランディングレジスタ（Ｘ−ｂｌｉｎｄｉｎｇ  ｒｅｇｉｓｔｅｒ）２４６は、ブランディングワードＢを保持する。マルチワード乗算器２００は、ＭＥＭ１からｍビットワードＸ′ｉを読み出し、且つ減算モジュール２５０によってＸｉ＝Ｘ′ｉ−ＢＸ−ｂを計算する。そのうち、ｂは前のｍビットワードＸｉ−１を計算する時に生成されたボロービット２５２である。
【００７４】
一実施例において、マルチワード乗算器は、Ｘカウンタ２２０及びＹカウンタ２２６をそれぞれｉ＝０及びｊ＝０（またはｊ＝−１）に初期化する。指定されたインデックス′ｉ′については、マルチワード定数は上述のように非ブラインド値Ｘを計算し、且つＸｉを非ブラインド入力レジスタ２４４に格納する。そして、マルチワード乗算器はＭＥＭ１からｍビットワードＹ′０…Ｙ′ＬＹ＋１を順次に読み出して、に対応するｊ＝０…ＬＹ＋１部分積Ｘｉ・Ｙ′ｊを計算する。マルチワード乗算器は、それぞれの部分積のｍ個の最高有効ビット（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔｓ，  ＭＳＢ）をＭＳＢレジスタ２５６に格納する。
【００７５】
中間結果Ｘｉ・Ｙ′を計算するために、マルチワード乗算器は部分積を累加するように、加算器２５８を使用して、部分積Ｘｉ・Ｙ′ｊのｍ個の最低有効ビット（ＬＳＢ）を、Ｘｉ・Ｙ′ｊのｍ個のＭＳＢを格納しているＭＳＢレジスタ２５６に加算する。部分積を累加するとき、加算器２６４を使用して、前の計算中に生成されたキャリービット２６２をＭＳＢレジスタ２５６から読み出したｍビット値に加算し、且つ１つ以上の後続の計算で使用されるためのＸｉ・Ｙ′ｊのＭＳＢ部分をＭＳＢレジスタ２５６に格納する。
【００７６】
ｉ＝０…ＬＸに渡って中間結果Ｘｉ・Ｙ′を累加するために、マルチワード乗算器は、インデックス′ｉ′が偶数である場合にＭＥＭ２内にＸｉ・Ｙ′の累計中間結果（下述の追加の係数と共に）を格納し、そうでない場合、ＭＥＭ３に格納する。インデックス′ｉ′に基づくＬＳＢのデマルチプレクサ（ｄｅ−ｍｕｌｔｉｐｌｅｘｅｒ）２６６を使用して、ＭＥＭ２またはＭＥＭ３に書き込むことを選択する。
【００７７】
上述のＸｉ・Ｙ′の計算において、マルチワード乗算器は加算器２６８を使用してＸｉ・Ｙ′に加算し、下記数８において、ｋ＝ｉ−１までに累計された中間結果はＭＥＭ２（またはＭＥＭ３）から読み出され、且つＸｉ・Ｙ′を含む更新された累計結果を他のメモリＭＥＭ３（またはＭＥＭ２）に格納する。インデックス′ｉ′のＬＳＢ値に基づくマルチプレクサ２７０を使用して、関連するメモリＭＥＭ２またはＭＥＭ３を選択することを制御する。ＭＥＭ２に格納される第１の中間結果Ｘ０・Ｙ′を計算する前に、第１の中間結果を計算する期間にＭＥＭ３から読み出したｍビットワードの数量ＬＸがゼロに初期化されることを留意されたい。
【００７８】
【数８】
2019168694.tif 000010
【００７９】
反復インデックス′ｉ′で計算され、且つメモリＭＥＭ２（またはＭＥＭ３）のｉ番目メモリエントリ（基本アドレスに対する）の中最低有效ワードは、第１の計算結果を（ｉ＋１）番目のエントリに格納するように、ＭＥＭ３（またはＭＥＭ２）のｉ番目メモリエントリにコピーされるべきことを留意されたい。一実施例において、前記コピー運算は、インデックス′ｊ′がｊ＝ＬＹ＋１からｊ＝−１に戻した後、インデックス′ｉ′がｉ＋１に増加する前に実行する。例えば、１つのクロックサイクルを使用してＭＥＭ２（またはＭＥＭ３）から１つのワードを読み出し、もう１つのクロックサイクルを使用して、読み出されたワードをもう１つのメモリＭＥＭ３（またはＭＥＭ２）に書き込む。上記の方式において、コピー運算はｊ＝−１の時、且つｉが増分する前に発生するため、コピーされたワードは結果基本アドレスに（ｉ−１）のオフセットを有することを留意されたい。
【００８０】
上述のように、例えば、数５に基づいて、マルチワード乗算器は、乗積Ｘ・Ｙを計算するために、適切なｍビットシフトにＸ・ＢＹを減算する必要がある。マルチワード乗算器２００は、ＭＥＭ４から読み出されたＸ・ＢＹのｍビットワードを受信する減算モジュール２７２を使用して、交互の方式で上記の減算を実行する。減算運算は、減算モジュール２７２の前の減算運算に生成且つ格納されたボロービット２７４を含む。
【００８１】
上述のように、Ｉ＞０の場合、インデックス′ｊ′は、ｊ＝−１．．．ＬＹ＋１の範囲内にカウントする。ｊ＝＝−１の時、ワードベースの乗算器の出力を強制的にゼロ値にするため、ｊ＝−１の場合、減算モジュール２７２を使用して、ＭＥＭ２またはＭＥＭ３から読み出した第１のｍビットワードからＭＥＭ４から読み出したＸ・ＢＹの第１のｍビットワードを減算する。条件ｊ＝＝−１（ｉ＞０のときも発生する）はまた、ＭＥＭ１から読み出したＸ′ｉをフェッチし、そして相応のＸｉを非ブラインド入力レジスタ２４４に格納するために使用される。
【００８２】
条件ｊ＝＝ＬＹ＋１の時も、ワードベースの乗数の出力を強制にゼロにする。このクロックサイクルにおいて、最近の部分積Ｘｉ・Ｙ′ＬＹのＭＳＢは、インデックス′ｉ′に応じてＭＥＭ２またはＭＥＭ３に格納される。
【００８３】
ｉ＞０の場合、マルチプレクサ２８０は減算モジュール２７２にＭＥＭ４から読み出したｍビットワードを出力し、ｉ＝０の場合、マルチプレクサ２８０はゼロｍビットワードを出力する。結果として、実際には、Ｘ・ＢＹは、第１の中間結果Ｘ０・Ｙ′が完全に計算され、且つＭＥＭ２に格納されたあとに減算される。換言すれば、Ｘ・ＢＹ・２ｍｊはＸｉ＋１・Ｙ′の累計期間に効果的に減算される。このような置換及び交互順序の計算は、直接乗算Ｘ・ＢＹの中間結果の漏洩を防ぐに役に立つ。
【００８４】
一部の実施例において、マルチワード乗算器２００は、ブラインド形式で乗積結果を格納することを要求される。このような実施例において、マルチワード乗算器は、Ｚ′＝Ｘ・Ｙ＋ＡＺを計算するために、結果ブランディングワードレジスタ２８２の中にｍビットのブランディングワードＢＺを保持し、そのうち、ＡＺ＝［ＢＺ，ＢＺ，…ＢＺ］。マルチプレクサ２８４は、条件（ｊ＝＝−１）または（ｉ＝＝ＬＸ＋１）の内の１つが真である場合、値ＢＺをルーティングし、そうでない場合、加算器２８６を使用して部分積に加算されるゼロｍビットワードをルーティングする。この場合、条件ｊ＝＝−１は、上記のように、関連するワードをＭＥＭ２からＭＥＭ３（またはＭＥＭ３からＭＥＭ２に）にコピーされた後、且つ′ｉ′はｉ＋１に増分することを意味する。Ｘｉ・Ｙ′を計算するｉ回目の反復後、ＢＺを加算するには、条件ｊ＝＝−１が必要である。全体のマルチワード乗算計算が完成すると、最後のＢＺを加算するために、条件ｉ＝＝ＬＸ＋１は必要である。
【００８５】
Ｘカウンタ２２０が値ｉ＝ＬＸ＋１に到達する時、ワードベースの乗算器２４０の出力は強制的にゼロにされる。そのクロックサイクルにおいて、ＭＥＭ２またはＭＥＭ３から読み出した中間結果に関連するｍビットワードにＭＥＭ４から読み出したＸ・ＢＹのＭＳＢのｍビットワードを減算する。
【００８６】
マルチワード乗算器２００のワードベースの乗算器２４０は、任意の適切な方法を用いて効率的に実施することができる。例示的な実施例において、ワードベースの乗算器２４０はシストリックアレイ乗算器（ｓｙｓｔｏｌｉｃ−ａｒｒａｙ ｍｕｔｉｐｌｉｅｒ）またはウォレスツリー乗算器（Ｗａｌｌａｃｅ  ｔｒｅｅ  ｍｕｌｔｉｐｌｉｅｒ）として実施される。一部の実施例において、加算器２５８、２６４、２６８及び２８６の内の一つまたは複数によって実行される加算運算は、ウォレス乗算器のシストリックアレイの構造内で、例えば、乗算器内に１つまたは複数の全加算器の計算列（ｃｏｍｐｕｔａｔｉｏｎａｌ  ｒｏｗｓ  ｏｆ  ｆｕｌｌ−ａｄｄｅｒｓ）を含むことによって実施できる。
【００８７】
図１の暗号システム２０及び暗号装置２４、ならびに図３のマルチワード乗算器２００の構成がマルチワード乗算器４４を備えることは、単に概念を明確するために選択される例である。代替の実施例において、他の任意の適切な暗号システム構成及びマルチワード乗算器構成を使用することができる。
【００８８】
暗号装置２４及びマルチワード乗算器４４、２００の異なる要素は、例えば、特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの任意の適切なハードウェアで実施することができる。例えば、ワードベースの乗算器２４０は、専用のＡＳＩＣまたはＦＰＧＡを使用して実施されてもよく、一方、マルチワード乗算器２００の他の要素は  、別のＡＳＩＣまたはＦＰＧＡで実施されても良い。
【００８９】
一部の実施例において、暗号装置及びマルチワード乗算器４４の一部の要素は、ソフトウェア、またはハードウェアとソフトウェアの組み合わせで実施することができる。例えば、一実施例において、プロセッサ３２は乗算に使用されるパラメータを用意し、且つマルチワード乗算器４４はハードウェアまたはハードウェアとソフトウェアとの組み合わせで乗算運算を適用することができる。もう１つの例として、マルチワード乗算器４４は、マルチワード乗算器２００としてハードウェアに完全に実施されることができる。一部の実施例において、暗号エンジン３６は、専用コプロセッサ（ｄｅｄｉｃａｔｅｄ  ｃｏ−ｐｒｏｃｅｓｓｏｒ）を含む。代替の実施例において、暗号エンジン３６は、ハードウェアまたはハードウェアとソフトウェアとの組み合わせで実施することができる。暗号記憶装置４０は、一つまたは複数のメモリ、例えば、ランダムアクセスメモリ（ＲＡＭ）を含む。
【００９０】
明確にするために、本発明の原理を理解するのに必要ではない要素、例えば様々なインタフェース、制御回路、アドレス指定回路、タイミングおよびシーケンス回路およびデバッグ回路は、図から省略されている。
【００９１】
通常、暗号装置２４内のプロセッサ３２は、本明細書に記載されている機能の少なくともいくつかを実行するように、ソフトウェアでプログラムされている汎用プロセッサを含む。ソフトウェアは、例えばネットワークによって電子形式で計算装置にダウンロードすることができ、あるいは代替的にまたは追加的に、磁気、光学、または電子メモリなどの非一時的有形媒体に提供及び／または格納することができる。
【００９２】
本明細書及び請求の範囲の文脈において、用語“回路”は、インターフェース５６以外のマルチワード乗算器６０のすべての要素、またはマルチワード乗算器がメモリ２０４、２０６、２０８及び２１０にインターフェースする要素以外のマルチワード乗算器２００のすべての要素を指す。マルチワード乗算器４４において、回路はワードベースの乗算器６０及び加算器７０を備える。マルチワード乗算器２００において、回路はワードベースの乗算器２４０、加算器２５８、２６４、２６８、２８６、減算モジュール２７２、ＭＳＢレジスタ２５６、Ｘカウンタ２２０、Ｙカウンタ２２６、キャリービット２６２及びボロービット２７４などの要素を備える。
【００９３】
図３のマルチワード乗算器２００は、図１の暗号装置２４のマルチワード乗算器４４を実施するために使用することができる。このような実施例において、メモリ２０４、２０６、２０８及び２１０は、暗号記憶装置４０内に実施される。マルチワード乗算器２００は、メモリ２０４、２０６、２０８及び２１０に接続するように、ベースアドレスレジスタ２１２、２１４、２１６及び２１８、Ｘカウンタ２２０、Ｙカウンタ２２６、加算器２２２、２２８、２３０、２３２、２３４、マルチプレクサ２２４及び２７０、及びデマルチプレクサ２６６などの様々な要素を使用する。
【００９４】
上述の実施例は、単に例として挙げられていて、他の任意の実施例も使用することができる。例えば、図３のマルチワード乗算器２００がＸｉ・Ｙ′の中間結果を累加したが、その方式は強制ではなく、他の任意の方式も使用することができる。例えば、代替の実施例において、マルチワード乗算器２００はＸ・Ｙ′ｊの中間結果を累加する。また、図３のマルチワード乗算器２００、及び図１のマルチワード乗算器６０は、他の任意の順序でＸｉ・Ｙ′ｊの部分積を累加することができる。
【００９５】
もう１つの例として、図３の実施例において、マルチワード乗算器はブラインド形式でメモリ２０４からパラメータＸを読み出したが、代替の実施例においては、パラメータＸは非ブラインドのマルチワード乗算器に提供される。このような実施例において、Ｘブランディングレジスタ２４６、減算モジュール２５０及びボロービット２５２を省略することができる。
【００９６】
上記の実施例において、それぞれのＸ及びＹ′はｍビットワードを含み、且つそのマルチワード乗算器は、ＸのｍビットワードをＹ′のｍビットワードに乗算するように、ｍ×ｍ乗算器部品に基づくものである。代替の実施例において、Ｙ′は複数のｎビットワードを含み、そして、ｎ≠ｍ。このような実施例において、ｍ×ｍ乗算器（例えば、図３内の乗算器２４０）はｎ×ｍ乗算器によって置き換えられ、且つそれに応じて図３に示された構成を修正する。
【００９７】
本明細書に記載の実施例は、主に電力解析攻撃に対する暗号システムの保護を扱うが、本明細書に記載の方法およびシステムは、電力解析攻撃に対する保護を必要とする任意のセキュア計算システムなどの他の用途にも使用できる。そのような計算システムは、例えば、スマートフォン、スマートカード、ラップトップ、タブレット、販売時点情報管理システム、ルータ、スマートＴＶなどのような電子装置を含むことができる。上記の実施形態は例として挙げられており、添付の特許請求の範囲は、上記に具体的に示され、記載されたものに限定されないことが理解されるであろう。むしろ、本発明の範囲は、上述の様々な特徴の組み合わせおよび部分的な組み合わせ、前述の説明を読んだ当業者には想到し得る、かつ先行技術に開示されていないそれらの変形および修正が含まれる。本特許出願において参考として援用される文書は、本明細書において明示的または暗示的になされた定義と矛盾するような形でこれらの組み込まれた文書に定義される用語がある場合に、本明細書の定義を考慮する必要がある。
【符号の説明】
【００９８】
２０：暗号システム
２４：暗号装置
３２：プロセッサ
３４：システムメモリ
３６：暗号エンジン
４０：暗号記憶装置
４４、２００：マルチワード乗算器
４８：Ｉ／Ｏモジュール
５２：バス
５６：インターフェース
６０、２４０：ワードベースの乗算器
６４：パラメータＸ
６８：ブラインドパラメータＹ′
７０、２２２、２２８、２３０、２３２、２３４、２５８、２６４、２６８、２８６：加算器
７２：ブランディングパラメータＡＹ
７６：部分積Ｐ
７８：ブランディングパラメータＡＺ
８０：乗積結果Ｚ′
８４：電源
８８：電力線
９２：攻撃者
１００〜１２０：ステップ
２０４、２０６、２０８、２１０、ＭＥＭ１〜ＭＥＭ４：メモリ
２１２：Ｙベースアドレスレジスタ
２１４：Ｘベースアドレスレジスタ
２１６：結果ベースアドレスレジスタ
２１８：部分積ベースアドレスレジスタ
２２０：Ｘカウンタ
２２４、２７０、２８０、２８４：マルチプレクサ
２２６：Ｙカウンタ
２４４：非ブラインド入力レジスタ
２４６：Ｘブランディングレジスタ
２５０、２７２：減算モジュール
２５２、２７４：ボロービット
２５６：ＭＳＢレジスタ
２６２：キャリービット
２６６：デマルチプレクサ
２８２：ブランディングワードレジスタ
【図１】
2019168694.tif 000011
【図２】
2019168694.tif 000012
【図３】
2019168694.tif 000013