(57)【要約】  外部監視攻撃から保護された方法でモジュラーインバージョン演算を実行するためのシステム及び方法。例の方法は、プロセッサによって、公開暗号鍵及び第１のランダムな整数値に基づいて第１のマスキングをかけた値を決定することと、公開暗号鍵及び第２のランダムな整数値に基づいて第２のマスキングをかけた値を決定することと、第１のマスキングをかけた値及び第２のマスキングをかけた値に基づいて、公開暗号鍵のモジュラーインバージョンによって表される秘密暗号鍵を決定することとを含む。【選択図】図２
2021500760.tif 000002
【特許請求の範囲】
【請求項１】
暗号データ処理演算を実行する方法であって、
暗号データ処理装置により、公開暗号鍵及び第１のランダムな整数値に基づいて第１のマスキングをかけた値を決定することと、
前記公開暗号鍵及び第２のランダムな整数値に基づいて第２のマスキングをかけた値を決定することと、
前記第１のマスキングをかけた値及び第２のマスキングをかけた値に基づいて、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定することと
を含む、方法。
【請求項２】
前記第１のマスキングをかけた値が、前記公開暗号鍵及び前記第１のランダムな整数値の積の、モデュラス値による整数除算の余りにより表される、請求項１に記載の方法。
【請求項３】
前記第２のマスキングをかけた値が、前記モデュラス値と、前記公開暗号鍵及び前記第２のランダムな整数値の積の、前記モデュラス値による整数除算の余りとの総和により表される、請求項２に記載の方法。
【請求項４】
前記モデュラス値が、２つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項２に記載の方法。
【請求項５】
前記公開暗号鍵が、前記モデュラス値と互いに素である整数値により表される、請求項２に記載の方法。
【請求項６】
前記第１のマスキングをかけた値が、前記公開暗号鍵及び前記第１のランダムな整数値の積により表される、請求項１に記載の方法。
【請求項７】
前記第２のマスキングをかけた値が、モデュラス値と、前記公開暗号鍵及び前記第２のランダムな整数値の積との総和により表される、請求項６に記載の方法。
【請求項８】
前記秘密暗号鍵を決定することが、
第１の整数乗算器及び前記第１のランダムな整数値の積と、第２の整数乗算器及び前記第２のランダムな整数値の積との総和を計算すること
をさらに含む、請求項１に記載の方法。
【請求項９】
前記第１の整数乗算器及び前記第１のマスキングをかけた値の積と、前記第２の整数乗算器及び前記第２のマスキングをかけた値の積との総和が、所定の整数定数に等しい、請求項８に記載の方法。
【請求項１０】
暗号データ処理演算を実行するために前記公開暗号鍵及び前記秘密暗号鍵を活用すること
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記公開暗号鍵で暗号化された暗号文を解読するために前記秘密暗号鍵を活用すること
をさらに含む、請求項１に記載の方法。
【請求項１２】
暗号データ処理演算を実行するための装置であって、
メモリと、
前記メモリに結合されたプロセッサであって、
公開暗号鍵及び第１のランダムな整数値に基づいて第１のマスキングをかけた値を決定し、
公開暗号鍵及び第２のランダムな整数値に基づいて第２のマスキングをかけた値を決定し、
第１の整数乗算器及び前記第１のマスキングをかけた値の積と、第２の整数乗算器及び前記第２のマスキングをかけた値の積との総和が所定の整数定数に等しくなるように、前記第１の整数乗算器及び前記第２の整数乗算器を決定し、
前記第１の整数乗算器及び前記第１のランダムな整数値の積と、前記第２の整数乗算器及び前記第２のランダムな整数値の積との総和を計算することによって、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定し、
暗号データ処理演算を実行するために前記公開暗号鍵及び前記秘密暗号鍵を活用する
ための前記プロセッサと
を備える、装置。
【請求項１３】
前記第１のマスキングをかけた値が、前記公開暗号鍵及び前記第１のランダムな整数値の積の、モデュラス値による整数除算の余りにより表される、請求項１２に記載のシステム。
【請求項１４】
前記第２のマスキングをかけた値が、前記モデュラス値と、前記公開暗号鍵及び前記第２のランダムな整数値の積の、前記モデュラス値による整数除算の余りとの総和により表される、請求項１３に記載のシステム。
【請求項１５】
前記モデュラス値が、２つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項１３に記載のシステム。
【請求項１６】
前記公開暗号鍵が、前記モデュラス値と互いに素である整数値により表される、請求項１３に記載のシステム。
【請求項１７】
コンピューティングデバイスによる実行時に、前記コンピューティングデバイスに、
暗号データ処理装置により、公開暗号鍵及び第１のランダムな整数値に基づいて第１のマスキングをかけた値を決定させ、
前記公開暗号鍵及び第２のランダムな整数値に基づいて第２のマスキングをかけた値を決定させ、
前記第１のマスキングをかけた値及び前記第２のマスキングをかけた値に基づいて、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定させる
実行可能な命令を備えるコンピュータ可読非一過性記憶媒体。
【請求項１８】
前記第１のマスキングをかけた値が、前記公開暗号鍵及び前記第１のランダムな整数値の積の、モデュラス値による整数除算の余りにより表される、請求項１７に記載のコンピュータ可読非一過性記憶媒体。
【請求項１９】
前記第２のマーキングをかけた値が、前記モデュラス値と、前記公開暗号鍵及び前記第２のランダムな整数値の積の、前記モデュラス値による整数除算の余りとの総和により表される、請求項１８に記載のコンピュータ可読非一過性記憶媒体。
【請求項２０】
前記モデュラス値が、２つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項１９に記載のコンピュータ可読非一過性記憶媒体。
【請求項２１】
前記モデュラス値が、２つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項１９に記載のコンピュータ可読非一過性記憶媒体。
【請求項２２】
前記公開暗号鍵が、前記モデュラス値と互いに素である整数値により表される、請求項１９に記載のコンピュータ可読非一過性記憶媒体。
【請求項２３】
前記秘密暗号鍵を決定することが、
第１の整数乗算器及び前記第１のランダムな整数値の積と、第２の整数乗算器及び前記第２のランダムな整数値の積との総和を計算すること
をさらに含む、請求項１７に記載のコンピュータ可読非一過性記憶媒体。
【請求項２４】
前記第１の整数乗算器及び前記第１のマスキングをかけた値の積と、前記第２の整数乗算器及び前記第２のマスキングをかけた値の積との総和が、所定の整数定数に等しい、請求項２３に記載のコンピュータ可読非一過性記憶媒体。
【請求項２５】
暗号データ処理演算を実行するために前記公開暗号鍵及び前記秘密暗号鍵を活用すること
をさらに含む、請求項１７に記載のコンピュータ可読非一過性記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［0001］  本開示は、概してコンピュータシステムに関し、より具体的には暗号データ処理システム及び方法に関する。
【背景技術】
【０００２】
［0002］  コンピュータの出現以来、暗号鍵及び／又は他の極秘データを保護するための多様なシステム及び方法だけではなく、概念的に荒削りのブルートフォース式のパスワードクラッキングから複雑な外部監視攻撃に及ぶ、保護されたデータに対する不正アクセスを獲得するためのシステム及び方法も絶えず進化を遂げている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
［0003］  本開示は、制限としてではなく例として示され、図と関連して考慮されるとき、以下の発明を実施するための形態を参照してより完全に理解され得る。
【図面の簡単な説明】
【０００４】
【図１】［0004］本開示の１つ以上の態様に従って、公共通信回線を介して安全なメッセージを交換するために２つの通信相手により実行される例の一連の演算を概略で示す図である。
【図２】［0005］本開示の１つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算（ｍｏｄｕｌａｒ  ｉｎｖｅｒｓｉｏｎ  ｏｐｅｒａｔｉｏｎｓ）を実行するための例の方法２００の流れ図を示す図である。
【図３】［0006］本開示の１つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算を実行するための別の例の方法３００の流れ図を示す図である。
【図４】［0007］本明細書に説明される暗号データ処理演算を実行するために利用され得るコンピューティングシステム３００の図表示を示す図である。
【発明を実施するための形態】
【０００５】
［0008］  本明細書に説明されるのは、外部監視攻撃からモジュラーインバージョン演算を保護するためのシステム及び方法である。
【０００６】
［0009］  「暗号データ処理演算」は、本明細書では、秘密のパラメータ（例えば、秘密鍵を使用する暗号化演算／暗号解読演算）を含んだデータ処理演算を指すものとする。「暗号データ処理装置」は、本明細書では、暗号データ処理演算を実行するために構成又は利用されるデータ処理装置（例えば、汎用プロセッサ又は専門プロセッサ、システムオンチップ、暗号ハードウェアアクセラレータ等）を指すものとする。
【０００７】
［0010］  「ブロック暗号」は、本明細書では、対応する暗号文を作成する、及び／又は暗号文のブロックを作成して対応する平文を作成するために、特定のサイズの平文のブロックを処理する暗号方法を指すものとする。「外部監視攻撃」は、本明細書では、標的暗号データ処理装置の物理的な実装及び／又は動作の特定の態様から１つ以上の保護情報項目を導出することによって、保護情報に対する不正アクセスを獲得する方法を指すものとする。サイドチャネル攻撃は、例えば特定のデータ処理演算の経過時間、特定の回路による電力消費、特定の回路を通って流れる電流、標的暗号データ処理装置の特定の回路により発せられる熱又は電磁放射線等の標的暗号データ処理装置の動作と関連付けられた１つ以上の物理パラメータの値を測定することに基づく外部監視攻撃である。
【０００８】
［0011］  多様なサイドチャネル攻撃は、標的暗号システムの中に記憶されている、及び／又は標的暗号システムにより処理されている特定の保護情報（例えば、入力された平文を暗号文に変換するために活用される暗号鍵）に対する不正アクセスを得るように設計される場合がある。例示的な例では、攻撃者は、標的データ処理装置の特定の内部状態に基づく順次的なデータ操作演算の相互作用を不当に利用する場合がある。攻撃者は、順次的なデータ操作演算の１つ以上の変化するデータ入力に対応して、標的暗号データ処理装置の特定の回路による電力消費を測定するために単純電力解析方法（ＳＰＡ）又は電力差分解析（ＤＰＡ）方法を適用し、このようにしてデータ操作演算のオペランドとして働く１つ以上の保護データ項目（例えば、暗号鍵）を決定する場合がある。
【０００９】
［0012］  本開示は、秘密の値（例えば、暗号鍵）を計算するために活用され得る２つのマスクキングをかけたシェアを生成することによって、外部監視攻撃から、例えばモジュラーインバージョン演算等の暗号データ処理演算を保護するためのシステム及び方法を導入する。本明細書で以下に説明される多様な例示的な例では、モジュラーインバージョン演算を実行する方法は、リベストシャミアエーデルマン（ＲＳＡ）暗号データ処理演算を実装するために活用されてよい。しかしながら、本明細書に説明されるシステム及び方法は、多様な他のデータ処理方法に適用可能であってよい。
【００１０】
［0013］  ＲＳＡ暗号法は、
任意の整数ｍに対して
［0014］（ｍｅ）ｄ＝ｍ（ｍｏｄ  ｎ）
となるように、３つの大きな正の整数ｅ、ｄ、及びｎを活用し、
［0015］  上式では、ｍｏｄ  ｎは、ｎの値によるオペランドのユークリッド除法の余りを生じさせるモジュロ演算を示す（例えば、ｎを法とするａは、ｎによるａのユークリッド除法の余りである）。したがって、ｅ、ｎ、又はｍの既知の値からもｄの値を導出することは実際には実現可能ではないであろうと仮定すると、（本明細書で以下に説明される例で正の整数として解釈されるビットシーケンスにより表される）平文ｍは、公開指数ｅにより表される受取人の公開鍵を使用し、暗号化されて、暗号文を生じさせてよい。
［0016］  ｃ＝ｍｅ（ｍｏｄ  ｎ）
【００１１】
［0017］  暗号文は、次いで
［0018］  ｍ＝（ｍｅ）ｄ  （ｍｏｄ  ｎ）＝ｃｄ（ｍｏｄ  ｎ）
を計算するために、秘密指数ｄにより表される受取人の秘密鍵を使用することによって平文ｍを復元し得る受取人に送信されてよい。
【００１２】
［0019］  例示的な例では、第１の通信相手は、公開鍵及び対応する秘密鍵を含む１対の暗号鍵を生成してよい。鍵を生成することは、モデュラスｎの値を２つのランダムな大きい素数の積として計算することを含んでよい。
［0020］  ｎ＝ｐｑ
【００１３】
［0021］  第１の通信相手は次いで、本明細書ではφ（ｎ）として示される、モデュラスのオイラーのファイ関数の値を計算してよい。オイラーのファイ関数は、最大公分母ｇｃｄ（ｎ、ｋ）＝１の１≦ｋ≦ｎの範囲内で整数ｋの数を生じさせる。オイラーのファイ関数の基本特性に基づいて、φ（ｎ）＝φ（ｐ）φ（ｑ）＝（ｐ−１）（ｑ−１）である。
【００１４】
［0022］  第１の通信相手は、次いで１＜ｅ＜φ（ｎ）及びｇｃｄ（ｅ、φ（ｎ））＝ｌとなる（つまり、ｅ及びφ（ｎ）が互いに素である）ように整数値ｅを選んでよい。ｅの値は、次いで公開されてよい、又はそれ以外の場合、第１の通信相手の公開鍵として第２の通信相手に伝達されてよい。
【００１５】
［0023］  第２の通信相手は、第１の相手の公開鍵ｅを使用し、平文ｍを暗号化して、暗号文ｃを作成してよい。
［0024］  ｃ＝ｍｅ（ｍｏｄ  ｎ）
【００１６】
［0025］  第２の通信相手は、次いで第１の通信相手に暗号文を送信してよい。受信された暗号文を解読するために、第１の通信相手は、公開鍵ｅのモジュラー乗法インバージョン（ｍｏｄｕｌａｒ  ｍｕｌｔｉｐｌｉｃａｔｉｖｅ  ｉｎｖｅｒｓｉｏｎ）として秘密指数ｄを計算してよい。
［0026］  ｄ＝ｅ−１  ｍｏｄ  φ（ｎ）
［0027］  上式では、ｅ−１はｅのモジュラー乗法インバージョンであり、これによりｅｅ―１＝１（ｍｏｄ  φ（ｎ））となる。
【００１７】
［0028］  第１の通信相手は、次いで秘密指数ｄを使用し、受信された暗号文ｃを解読することによって平文ｍを復元してよい。
［0029］  ｍ＝ｃｄ
【００１８】
［0030］  特に、モジュラーインバージョンｅ―１  ｍｏｄ  φ（ｎ）を計算する多様な共通の方法は、例えば多様な条件付き演算を含む拡張ユークリッドＧＣＤ又はバイナリＧＣＤアルゴリズムにより最大公分母（ＧＣＤ）を決定することを伴い、したがって外部監視攻撃に弱い場合がある。
【００１９】
［0031］  本開示は、例えばモジュラーインバージョン演算等の暗号データ処理演算を実行する多様な共通の方法のこの欠陥及び他の既知の欠陥を克服する。したがって、本明細書に説明されるシステム及び方法は、外部監視攻撃に対して抵抗性を示す方法での暗号データ処理演算の実行を可能にすることによって汎用コンピューティングデバイス又は専門コンピューティングデバイスの機能性に対する改善に相当する。
【００２０】
［0032］  本明細書に説明されるシステム及び方法は、ハードウェア（例えば、汎用処理装置及び／又は専門処理装置、及び／又は他の装置、及び関連付けられた回路）、ソフトウェア（例えば、処理装置により実行可能な命令）、又はその組み合わせにより実装されてよい。方法及びシステムの多様な態様は、制限としてよりむしろ例として本明細書に説明される。
【００２１】
［0033］  ＲＳＡ暗号データ処理演算の上述された例からの注釈を利用し、目標は、公開指数ｅのモジュラー乗法インバージョンとして秘密指数ｄを計算することである。
［0034］  ｄ＝ｅ―１  ｍｏｄ  φ（ｎ）
【００２２】
［0035］  外部監視攻撃からの保護は、以下の通りに公開指数ｅから導出され得る２つの互いに素であるマスキングをかけたシェアｅ１及びｅ２を計算することにより達成されてよい。
［0036］  ｅ１＝ｅｒ  ｍｏｄ  φ（ｎ）
［0037］  ｅ２＝ｅｓ  ｍｏｄ  φ（ｎ）
［0038］  上式では、ｒ及びｓは、φ（ｎ）のビット長に類似したそれぞれのビット長を有するランダムな整数である（つまり、ｒ及びｓのそれぞれのビット長は、φ（ｎ）のビット長とはわずかに所定のビット数、異なる場合がある）。
【００２３】
［0039］  次いで、２つの整数ａ及びｂが（例えば、拡張ユークリッドＧＣＤアルゴリズムにより）計算されてよく、これにより
［0040］  ａｅ１＋ｂｅ２＝１
となる。
【００２４】
［0041］  ｅ１及びｅ２が１よりも大きい公約数を有する場合、次いで係るａ及びｂは存在しない。その場合、アルゴリズムは、ｅ１及びｅ２に新しい値を用いて再開する。
【００２５】
［0042］  ｍｏｄ  φ（ｎ）により最後の方程式の両方の部分をとると、
［0043］  ａｅ１  ｍｏｄ  φ（ｎ）＋ｂｅ２  ｍｏｄ  φ（ｎ）＝１  ｍｏｄ  φ（ｎ）
が生じるであろう。
【００２６】
［0044］  ｅ１及びｅ２をその定義で置換すると、最後の方程式は、
［0045］  ａｅｒ＋ｂｅｓ＝１  ｍｏｄ  φ（ｎ）
として書き換えられてよい。
【００２７】
［0046］  次いで、自明な算術変換を適用すると、
［0047］  ａｅｒ＋ｂｅｓ＝ｅ（ａｒ＋ｂｓ）＝１  ｍｏｄ  φ（ｎ）
が生じるであろう。
【００２８】
［0048］  最後に、両側をｅの乗法逆元で乗算すると、
［0049］  ａｒ＋ｂｓ＝ｅ―１  ｍｏｄ  φ（ｎ）＝ｄ
が生じるであろう。
【００２９】
［0050］  したがって、秘密指数ｄは、加法シェアａｒ＋ｂｓの総和として計算されてよく、このようにして外部監視攻撃から暗号データ処理演算を保護する。
【００３０】
［0051］  代替実施形態では、ｅ１及びｅ２は以下のとおりに決定されてよく、
［0052］  ｅ１＝ｅｒ
［0053］  ｅ２＝ｅｓ＋φ（ｎ）
［0054］  上式では、ｒ及びｓは０＜ｅｒ＜φ（ｎ）、０＜ｅｓ＜φ（ｎ）になるように選ばれたランダムな整数であり、導出の残りは上記と同じである。
【００３１】
［0055］  図１は、本開示の１つ以上の態様に従って、公共通信回線を介して安全なメッセージを交換するために２つの通信相手１１０、１２０により実行される例の一連の演算を概略で示す。図１により概略で示されるように、第１の通信相手１１０は、公開鍵１３０及び対応する秘密鍵１４０を含む１対の暗号鍵を生成してよい。鍵を生成することは、２つのランダムな大きい素数の積としてモデュラスｎの値を計算することを伴ってよい。
［0056］  ｎ＝ｐｑ
【００３２】
［0057］  第１の通信相手は、次いで整数値ｅを選んでよく、これにより１＜ｅ＜φ（ｎ）及びｇｃｄ（ｅ、φ（ｎ））＝１となる（つまり、ｅ及びφ（ｎ）は互いに素である）。ｅの値は、次いで公開されてよい、又はそれ以外の場合第１の通信相手１１０の公開鍵１３０として第２の通信相手１２０に伝達されてよい。
【００３３】
［0058］  第２の通信相手１２０は、第１の相手の公開鍵１３０を使用し、平文１５０を暗号化して、暗号文１６０を作成してよい。
［0059］  ｃ＝ｍｅ（ｍｏｄ  φ（ｎ））
【００３４】
［0060］  第２の通信相手１２０は、次いで暗号文１６０を第１の通信相手１１０に送信してよい。特定の実施態様では、平文１５０を暗号化する前に、第２の通信相手１２０は、平文１５０を所与のサイズの複数のブロックに分割し、図２により概略で示されるように、最後の不完全なブロックを所定のビットパターンでパディングしてよい。第１の通信相手１１０は、次いで解読されたブロックを連結させることによって平文１５０を再構築してよい。
【００３５】
［0061］  受信された暗号文１６０を解読するために、第１の通信相手１１０は、秘密鍵１４０を計算してよく、これは、一実施形態では以下の通りの公開指数ｅから導出されてよい２つの互いの素であるマスキングをかけたシェアｅ１及びｅ２を計算することを伴う場合があり、
［0062］  ｅ１＝ｅｒ  ｍｏｄ  φ（ｎ）
［0063］  ｅ２＝ｅｓ  ｍｏｄ  φ（ｎ）
［0064］  上式では、ｒ及びｓは、φ（ｎ）のビット長に類似したそれぞれのビット長を有するランダムな整数である（つまり、ｒ及びｓのそれぞれのビット長は、φ（ｎ）のビット長とはわずかに所定のビット数、異なる場合がある）。
【００３６】
［0065］  代替実施形態では、ｅ１及びｅ２は、以下の通りに決定されてよく、
［0066］  ｅ１＝ｅｒ
［0067］  ｅ２＝ｅｓ＋φ（ｎ）
［0068］  上式では、ｒ及びｓは、０＜ｅｒ＜φ（ｎ）及び０＜ｅｓ＜φ（ｎ）となるように選ばれたランダムな整数である。
【００３７】
［0069］  次いで、２つの整数ａ及びｂは、（例えば、拡張ＧＣＤアルゴリズムにより）計算されてよく、これにより
［0070］  ａｅ１＋ｂｅ２＝１
となる。
【００３８】
［0071］  ｅ１及びｅ２が１よりも大きい公約数を有する場合、次いで係るａ及びｂは存在しない。その場合、アルゴリズムは、ｅ１及びｅ２に新しい値を用いて再開する。
【００３９】
［0072］  最後に、秘密鍵１４０は、加法シェアの総和として計算されてよい。
［0073］  ｄ＝ａｒ＋ｂｓ
【００４０】
［0074］  第１の通信相手１１０は、次いで秘密鍵１４０を使用し、受信された暗号文１６０を解読することによって平文１５０を復元してよい。
［0075］  ｍ＝ｃｄ  ｍｏｄ  φ（ｎ）
【００４１】
［0076］  図２は、本開示の１つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算を実行するための例の方法２００の流れ図を示す。方法２００及び／又はその個々の関数、ルーチン、サブルーチン、又は演算のそれぞれは、例えば、汎用コンピューティングシステム及び／又は専門コンピューティングシステムによって表される１つ以上の暗号データ処理装置によって実行されてよい。方法２００の２つ以上の関数、ルーチン、サブルーチン、又は演算は、並行して又は上述された順序とは異なる場合がある順序で実行されてよい。特定の実施態様では、方法２００は、単一の処理スレッドによって実行されてよい。代わりに、方法２００は、各スレッドが方法の１つ以上の個々の関数、ルーチン、サブルーチン、又は演算を実行する２つ以上の処理スレッドによって実行されてよい。例示的な例では、方法２００を実装する処理スレッドは、（例えば、セマフォ、クリティカルセクション、及び／又は他のスレッド同期機構を使用し）同期されてよい。代わりに、方法２００を実装する処理スレッドは、互いに関して非同期で実行されてよい。例示的な例では、方法２００は、図４のコンピューティングシステム４００によって実行されてよい。
【００４２】
［0077］  図２を参照すると、ブロック２１０で、方法を実装する暗号データ処理装置は、公開暗号鍵ｅ及び第１のランダムな整数値ｒの積の、モデュラス値ｎによる整数除算の余りとして第１のマスキングをかけた値ｅ１を決定してよい。
［0078］  ｅ１＝ｅｒ  ｍｏｄ  φ（ｎ）
【００４３】
［0079］  例示的な例では、モデュラス値は、本明細書で上記により詳細に説明されるように、本明細書ではφ（ｎ）として示される、所与のモデュラスのオイラーのファイ関数の値により表されてよい。別の例示的な例では、モデュラス値は、本明細書ではｋφ（ｎ）として示される、小さい整数ｋ及び所与のモデュラスのオイラーのファイ関数の値の積により表されてよい。
【００４４】
［0080］  ブロック２２０で、暗号データ処理装置は、モデュラス値φ（ｎ）と、公開暗号鍵ｅ及び第２のランダムな整数ｓの積の、モデュラス値ｎによる整数除算の余りとの総和として第２のマスキングをかけた値ｅ２を決定してよい。
［0081］  ｅ２＝ｅｓ  ｍｏｄ  φ（ｎ）
【００４５】
［0082］  ブロック２３０で、暗号データ処理装置は、第１の整数乗算器及び第１のマスキングをかけた値の積と、第２の整数乗算器及び第２のマスキングをかけた値の積との総和が、所定の整数定数（例えば、１）に等しくなるように、第１の整数乗算器ａ及び第２の整数乗算器ｂを決定してよい。
［0083］  ａｅ１＋ｂｅ２＝１
【００４６】
［0084］  ブロック２４０で、暗号データ処理装置は、第１の整数乗算器及び第１のランダムな整数値の積と、第２の整数乗算器及び第２のランダムな整数値の積との総和を計算することによって、公開暗号鍵の乗法モジュラーインバージョンにより表される秘密暗号鍵を決定してよい。
［0085］  ｄ＝ａｒ＋ｂｓ
【００４７】
［0086］  ブロック２５０で、暗号データ処理装置は、暗号データ処理演算を実行するために秘密暗号鍵を活用してよい。例示的な例では、暗号データ処理装置は、秘密暗号鍵ｄを活用して、受信された暗号文ｃを解読してよい。
［0087］  ｍ＝ｃｄ  ｍｏｄ  ｎ
【００４８】
［0088］  図３は、本開示の１つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算を実行するための別の例の方法３００の流れ図を示す。方法３００及びその個々の関数、ルーチン、サブルーチン、又は演算のそれぞれは、例えば汎用コンピューティングシステム及び／又は専門コンピューティングシステムにより表される１つ以上の暗号データ処理装置により実行されてよい。方法３００の２つ以上の関数、ルーチン、サブルーチン、又は演算は、並行して又は上述された順序とは異なる場合がある順序で実行されてよい。特定の実施態様では、方法３００は、単一の処理スレッドによって実行されてよい。代わりに、方法３００は、各スレッドが方法の１つ以上の個々の関数、ルーチン、サブルーチン、又は演算を実行する２つ以上の処理スレッドによって実行されてよい。例示的な例では、方法３００を実装する処理スレッドは、（例えば、セマフォ、クリティカルセクション、及び／又は他のスレッド同期機構を使用し）同期されてよい。代わりに、方法３００を実装する処理スレッドは、互いに関して非同期で実行されてよい。例示的な例では、方法３００は、図４のコンピューティングシステム４００によって実行されてよい。
【００４９】
［0089］  図３を参照すると、ブロック３１０で、方法を実装する暗号データ処理装置は、公開暗号鍵ｅ及び第１のランダムな整数値ｒの積として第１のマスキングをかけた値ｅ１を決定してよい。
［0090］  ｅ１＝ｅｒ
【００５０】
［0091］  ブロック３２０で、暗号データ処理装置は、モデュラス値φ（ｎ）と、公開暗号鍵ｅ及び第２のランダムな整数ｓの積との総和として第２のマスキングをかけた値ｅ３を決定してよい。
［0092］  ｅ３＝ｅｓ＋φ（ｎ）
【００５１】
［0093］  例示的な例では、モデュラス値は、本明細書でより詳細に上述されるように、本明細書ではφ（ｎ）として示される、所与のモデュラスのオイラーのファイ関数の値により表されてよい。別の例示的な例では、モデュラス値は、ｋφ（ｎ）として本明細書に示される、小さい整数ｋ及び所与のモデュラスのオイラーのファイ関数の値の積によって表されてよい。
【００５２】
［0094］  ブロック３３０で、暗号データ処理装置は、第１の整数乗算器及び第１のマスキングをかけた値の積と、第２の整数乗算器及び第２のマスキングをかけた値の積との総和が、所定の整数定数（例えば、１）に等しくなるように、第１の整数乗算器ａ及び第２の整数乗算器ｂを決定してよい。
［0095］  ａｅ１＋ｂｅ２＝１
【００５３】
［0096］  ブロック３４０で、暗号データ処理装置は、第１の整数乗算器及び第１のランダムな整数値の積と、第２の整数乗算器及び第２のランダムな整数値の積との総和を計算することによって、公開暗号鍵の乗法モジュラーインバージョンにより表される秘密暗号鍵を決定してよい。
［0097］  ｄ＝ａｒ＋ｂｓ
【００５４】
［0098］  ブロック３５０で、暗号データ処理装置は、暗号データ処理演算を実行するために秘密暗号鍵を活用してよい。例示的な例では、暗号データ処理装置は、秘密暗号鍵ｄを活用して、受信された暗号文ｃを解読してよい。
［0099］  ｍ＝ｃｄ  ｍｏｄ  ｎ
【００５５】
［0100］  図４は、本明細書に説明される暗号データ処理演算を実行するために利用され得るコンピューティングシステム４００の図表示を示す図である。コンピューティングシステム４００は、ＬＡＮ、イントラネット、エクストラネット、及び／又はインターネット内の他のコンピューティングデバイスに接続してよい。コンピューティングデバイスは、クライアント‐サーバネットワーク環境でサーバマシンとして動作してよい。コンピューティングデバイスは、パーソナルコンピュータ（ＰＣ）、セットトップボックス（ＳＴＢ）、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又はマシンにより講じられる処置を指定する命令（順次的又は別の方法で）の集合を実行できる任意の該マシンにより提供されてよい。さらに、単一のコンピューティングデバイスしか示されていないが、用語「コンピューティングデバイス」は、本明細書に説明される方法を実行するために命令の集合（又は複数の集合）を個別に又は共同で実行するコンピューティングデバイスの任意の集合体を含むとも解釈されるものとする。
【００５６】
［0101］  例のコンピューティングシステム４００は、多様な例示的な例では、１つ以上の処理コアを含む汎用プロセッサ又は専門プロセッサであってよい、処理装置４０２を含んでよい。例のコンピューティングシステム４００は、バス４３０を介して互いと通信してよい、メインメモリ４０４（例えば、シンクロナスダイナミックランダムアクセスメモリ（ＤＲＡＭ）、読取り専用メモリ（ＲＯＭ））、スタティックメモリ４０６（例えば、フラッシュメモリ及びデータストレージデバイス４１８）をさらに含んでよい。
【００５７】
［0102］  例のコンピューティングシステム４００は、ネットワーク４２０と通信してよいネットワークインタフェースデバイス４０８をさらに含んでよい。また、例のコンピューティングシステム４００は、ビデオディスプレイユニット４１０（例えば、液晶ディスプレイ（ＬＣＤ）又は陰極線管（ＣＲＴ））、英数字入力装置４１２（例えば、キーボード）、カーソル制御装置４４２（例えば、マウス）、及び音響信号発生装置４１６（例えば、スピーカ）を含んでもよい。一実施形態では、ビデオディスプレイユニット４１０、英数字入力装置４１２、及びカーソル制御装置４４２は、単一の構成要素又はデバイス（例えば、ＬＣＤタッチスクリーン）の中に結合されてよい。
【００５８】
［0103］  データストレージデバイス４１８は、例えば、外部監視攻撃に対して抵抗性を示す方法でモジュラーインバージョン演算を実行する方法２００等の本明細書に説明される方法又は機能の任意の１つ以上を実装する命令の１つ以上の集合が記憶されてよい、コンピュータ可読記憶媒体４２８を含んでよい。また、命令は、例のコンピューティングシステム４００によるその実行中に、メインメモリ４４０の中に及び／又は処理装置４０２の中に完全に又は少なくとも部分的に常駐してもよい。したがって、メインメモリ４０４及び処理装置４０２は、コンピュータ可読媒体を構成してもよい、又は含んでもよい。命令はさらに、ネットワークインタフェースデバイス４０８を介してネットワーク４２０上で送信又は受信されてよい。
【００５９】
［0104］  コンピュータ可読記憶媒体４２８は単一の媒体であるために例示的な例に示されるが、用語「コンピュータ可読記憶媒体」は、命令の１つ以上の集合を記憶する単一の媒体又は複数の媒体（例えば、集中型又は分散型のデータベース及び／又は関連付けられたキャッシュ及びサーバ）を含むとして解釈されるべきである。また、用語「コンピュータ可読記憶媒体」は、マシンによる実行のために命令の集合を記憶する、符号化する、又は搬送することができ、マシンに本明細書に説明される方法を実行させる任意の媒体を含むとして解釈されるものとする。したがって、用語「コンピュータ可読記憶媒体」は、ソリッドステートメモリ、光学媒体、及び磁気媒体を含むが、これに限定されるものではないと解釈されるものとする。
【００６０】
［0105］  特に明記しない限り、例えば「更新する」、「識別する」、「決定する」、「送信する」、「割り当てる」等の用語は、コンピューティングデバイスのレジスタ及びメモリの中の物理的な（電子的な）量として表されるデータを操作し、コンピューティングデバイスメモリ若しくはレジスタの中の物理的な量として同様に表される他のデータに変換するコンピューティングデバイスによって、又は他の係る情報記憶装置、情報伝送装置、若しくは情報表示装置によって実行又は実装されるアクション及びプロセスを指す。また、本明細書で使用される用語「第１の」、「第２の」、「第３の」、「第４の」等は、異なる要素を区別するためのラベルとして意味され、必ずしもその数字表示に応じた順序の意味を有さない場合がある。
【００６１】
［0106］  また、本明細書に説明される例は、本明細書に説明される方法を実行するための装置にも関する。この装置は、必要とされる目的のために特別に構築される場合もあれば、装置はコンピューティングデバイスに記憶されたコンピュータプログラムによって選択的にプログラムされた汎用コンピューティングデバイスを含む場合もある。係るコンピュータプログラムは、コンピュータ可読非一過性記憶媒体に記憶されてよい。
【００６２】
［0107］  本明細書に説明される方法及び例示的な例は、本質的に任意の特定のコンピュータ又は他の装置に関係していない。多様な汎用システムが、本明細書に説明される教示に従って使用される場合もあれば、必要とされる方法ステップを実行するためにより専門化された装置を構築することが便利であると判明する場合もある。さまざまなこれらのシステムのための必要とされる構造は、上記説明に説明される通りに現れる。
【００６３】
［0108］  上記の説明は、制限的ではなく例示的となることを意図する。本開示は、特定の例示的な例に関して説明されてきたが、本開示が説明された例に限定されないことが認識される。本開示の範囲は、特許請求の範囲が権限がある同等物の完全な範囲とともに、続く特許請求の範囲に関して決定されるべきである。
【図１】
2021500760.tif 000003
【図２】
2021500760.tif 000004
【図３】
2021500760.tif 000005
【図４】
2021500760.tif 000006
【国際調査報告】
2021500760.tif 000007