(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-07
(45)【発行日】2022-10-18
(54)【発明の名称】外部監視攻撃からモジュラーインバージョン演算を保護すること
(51)【国際特許分類】
H04L 9/08 20060101AFI20221011BHJP
G06F 21/72 20130101ALI20221011BHJP
【FI】
H04L9/08 A
G06F21/72
(21)【出願番号】P 2019571240
(86)(22)【出願日】2018-10-08
(86)【国際出願番号】 US2018054805
(87)【国際公開番号】W WO2019079048
(87)【国際公開日】2019-04-25
【審査請求日】2021-07-15
(32)【優先日】2017-10-18
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】509285746
【氏名又は名称】クリプトグラフィ リサーチ, インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100126480
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】ハンバーグ,マイケル
(72)【発明者】
【氏名】タンストール,マイケル
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2009-267839(JP,A)
【文献】特開2016-090884(JP,A)
【文献】国際公開第2005/041474(WO,A1)
【文献】特開平11-196082(JP,A)
【文献】特開2004-304800(JP,A)
【文献】特表2017-526981(JP,A)
【文献】米国特許出願公開第2005/0152539(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G09C 1/00
G06F 21/00-21/88
(57)【特許請求の範囲】
【請求項1】
暗号データ処理演算を実行する方法であって、
暗号データ処理装置により、公開暗号鍵及び第1のランダムな整数値
の積の、モデュラス値による整数除算の余りにより表される、第1のマスキングをかけた値を決定することと、
前記暗号データ処理装置により、前記モデュラス値と、前記公開暗号鍵及び第2のランダムな整数値
の積の、前記モデュラス値による整数除算の余りとの総和により表される、第2のマスキングをかけた値を決定することと、
前記暗号データ処理装置により、第1の整数乗数及び前記第1のマスキングをかけた値の積と、第2の整数乗数及び前記第2のマスキングをかけた値の積との総和が所定の整数定数に等しくなるように、前記第1の整数乗数及び前記第2の整数乗数を決定することと、
前記暗号データ処理装置により、前記第1の整数乗数及び前記第1のランダムな整数値の積と、前記第2の整数乗数及び前記第2のランダムな整数値の積との総和を計算することによって、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定することと
を含む、方法。
【請求項2】
暗号データ処理演算を実行する方法であって、
暗号データ処理装置により、公開暗号鍵及び第1のランダムな整数値の積により表される、第1のマスキングをかけた値を決定することと、
前記暗号データ処理装置により、モデュラス値と、前記公開暗号鍵及び第2のランダムな整数値との整数値の積との総和により表される、第2のマスキングをかけた値を決定することと、
前記暗号データ処理装置により、第1の整数乗数及び前記第1のマスキングをかけた値の積と、第2の整数乗数及び前記第2のマスキングをかけた値の積との総和が所定の整数定数に等しくなるように、前記第1の整数乗数及び前記第2の整数乗数を決定することと、
前記暗号データ処理装置により、前記第1の整数乗数及び前記第1のランダムな整数値の積と、前記第2の整数乗数及び前記第2のランダムな整数値の積との総和を計算することによって、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定することと
を含む、方法。
【請求項3】
前記モデュラス値が、2つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項
1又は2に記載の方法。
【請求項4】
前記公開暗号鍵が、前記モデュラス値と互いに素である整数値により表される、請求項1又は2に記載の方法。
【請求項5】
前記暗号データ処理装置により、暗号データ処理演算を実行するために前記公開暗号鍵及び前記秘密暗号鍵を活用すること
をさらに含む、請求項1
又は2に記載の方法。
【請求項6】
前記暗号データ処理装置により、前記公開暗号鍵で暗号化された暗号文を解読するために前記秘密暗号鍵を活用すること
をさらに含む、請求項1
又は2に記載の方法。
【請求項7】
暗号データ処理演算を実行するための装置であって、
メモリと、
前記メモリに結合されたプロセッサであって、
公開暗号鍵及び第1のランダムな整数値
の積の、モデュラス値による整数除算の余りにより表される、第1のマスキングをかけた値を決定し、
前記モデュラス値と、前記公開暗号鍵及び第2のランダムな整数値
の積の、前記モデュラス値による整数除算の余りとの総和により表される、第2のマスキングをかけた値を決定し、
第1の整数
乗数及び前記第1のマスキングをかけた値の積と、第2の整数
乗数及び前記第2のマスキングをかけた値の積との総和が所定の整数定数に等しくなるように、前記第1の整数
乗数及び前記第2の整数
乗数を決定し、
前記第1の整数
乗数及び前記第1のランダムな整数値の積と、前記第2の整数
乗数及び前記第2のランダムな整数値の積との総和を計算することによって、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定し、
暗号データ処理演算を実行するために前記公開暗号鍵及び前記秘密暗号鍵を活用する
ための前記プロセッサと
を備える、装置。
【請求項8】
暗号データ処理演算を実行するための装置であって、
メモリと、
前記メモリに結合されたプロセッサであって、
公開暗号鍵及び第1のランダムな整数値の積により表される、第1のマスキングをかけた値を決定し、
モデュラス値と、前記公開暗号鍵及び第2のランダムな整数値との整数値の積との総和により表される、第2のマスキングをかけた値を決定し、
第1の整数乗数及び前記第1のマスキングをかけた値の積と、第2の整数乗数及び前記第2のマスキングをかけた値の積との総和が所定の整数定数に等しくなるように、前記第1の整数乗数及び前記第2の整数乗数を決定し、
前記第1の整数乗数及び前記第1のランダムな整数値の積と、前記第2の整数乗数及び前記第2のランダムな整数値の積との総和を計算することによって、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定し、
暗号データ処理演算を実行するために前記公開暗号鍵及び前記秘密暗号鍵を活用する
ための前記プロセッサと
を備える、装置。
【請求項9】
前記モデュラス値が、2つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項
7又は8に記載の
装置。
【請求項10】
前記公開暗号鍵が、前記モデュラス値と互いに素である整数値により表される、請求項
7又は8に記載の
装置。
【請求項11】
コンピューティングデバイスによる実行時に、前記コンピューティングデバイスに、
公開暗号鍵及び第1のランダムな整数値
の積の、モデュラス値による整数除算の余りにより表される、第1のマスキングをかけた値を決定させ、
前記モデュラス値と、前記公開暗号鍵及び第2のランダムな整数値
の積の、前記モデュラス値による整数除算の余りとの総和により表される、第2のマスキングをかけた値を決定させ、
第1の整数乗数及び前記第1のマスキングをかけた値の積と、第2の整数乗数及び前記第2のマスキングをかけた値の積との総和が所定の整数定数に等しくなるように、前記第1の整数乗数及び前記第2の整数乗数を決定させ、
前記第1の整数乗数及び前記第1のランダムな整数値の積と、前記第2の整数乗数及び前記第2のランダムな整数値の積との総和を計算することによって、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定させる
実行可能な命令を備えるコンピュータ可読非一過性記憶媒体。
【請求項12】
コンピューティングデバイスによる実行時に、前記コンピューティングデバイスに、
公開暗号鍵及び第1のランダムな整数値の積により表される、第1のマスキングをかけた値を決定させ、
モデュラス値と、前記公開暗号鍵及び第2のランダムな整数値との整数値の積との総和により表される、第2のマスキングをかけた値を決定させ、
第1の整数乗数及び前記第1のマスキングをかけた値の積と、第2の整数乗数及び前記第2のマスキングをかけた値の積との総和が所定の整数定数に等しくなるように、前記第1の整数乗数及び前記第2の整数乗数を決定させ、
前記第1の整数乗数及び前記第1のランダムな整数値の積と、前記第2の整数乗数及び前記第2のランダムな整数値の積との総和を計算することによって、前記公開暗号鍵のモジュラー乗法インバージョンにより表される秘密暗号鍵を決定させる
実行可能な命令を備えるコンピュータ可読非一過性記憶媒体。
【請求項13】
前記モデュラス値が、2つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項
11又は12に記載のコンピュータ可読非一過性記憶媒体。
【請求項14】
前記モデュラス値が、2つのランダムな素数の積のオイラーのファイ関数の値により表される、請求項
11又は12に記載のコンピュータ可読非一過性記憶媒体。
【請求項15】
前記公開暗号鍵が、前記モデュラス値と互いに素である整数値により表される、請求項11又は12に記載のコンピュータ可読非一過性記憶媒体。
【請求項16】
前記命令は、前記コンピューティングデバイスに、さらに、暗号データ処理演算を実行するために前記公開暗号鍵及び前記秘密暗号鍵を活用
させる請求項
11又は12に記載のコンピュータ可読非一過性記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 本開示は、概してコンピュータシステムに関し、より具体的には暗号データ処理システム及び方法に関する。
【背景技術】
【0002】
[0002] コンピュータの出現以来、暗号鍵及び/又は他の極秘データを保護するための多様なシステム及び方法だけではなく、概念的に荒削りのブルートフォース式のパスワードクラッキングから複雑な外部監視攻撃に及ぶ、保護されたデータに対する不正アクセスを獲得するためのシステム及び方法も絶えず進化を遂げている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
[0003] 本開示は、制限としてではなく例として示され、図と関連して考慮されるとき、以下の発明を実施するための形態を参照してより完全に理解され得る。
【図面の簡単な説明】
【0004】
【
図1】[0004]本開示の1つ以上の態様に従って、公共通信回線を介して安全なメッセージを交換するために2つの通信相手により実行される例の一連の演算を概略で示す図である。
【
図2】[0005]本開示の1つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算(modular inversion operations)を実行するための例の方法200の流れ図を示す図である。
【
図3】[0006]本開示の1つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算を実行するための別の例の方法300の流れ図を示す図である。
【
図4】[0007]本明細書に説明される暗号データ処理演算を実行するために利用され得るコンピューティングシステム300の図表示を示す図である。
【発明を実施するための形態】
【0005】
[0008] 本明細書に説明されるのは、外部監視攻撃からモジュラーインバージョン演算を保護するためのシステム及び方法である。
【0006】
[0009] 「暗号データ処理演算」は、本明細書では、秘密のパラメータ(例えば、秘密鍵を使用する暗号化演算/暗号解読演算)を含んだデータ処理演算を指すものとする。「暗号データ処理装置」は、本明細書では、暗号データ処理演算を実行するために構成又は利用されるデータ処理装置(例えば、汎用プロセッサ又は専門プロセッサ、システムオンチップ、暗号ハードウェアアクセラレータ等)を指すものとする。
【0007】
[0010] 「ブロック暗号」は、本明細書では、対応する暗号文を作成する、及び/又は暗号文のブロックを作成して対応する平文を作成するために、特定のサイズの平文のブロックを処理する暗号方法を指すものとする。「外部監視攻撃」は、本明細書では、標的暗号データ処理装置の物理的な実装及び/又は動作の特定の態様から1つ以上の保護情報項目を導出することによって、保護情報に対する不正アクセスを獲得する方法を指すものとする。サイドチャネル攻撃は、例えば特定のデータ処理演算の経過時間、特定の回路による電力消費、特定の回路を通って流れる電流、標的暗号データ処理装置の特定の回路により発せられる熱又は電磁放射線等の標的暗号データ処理装置の動作と関連付けられた1つ以上の物理パラメータの値を測定することに基づく外部監視攻撃である。
【0008】
[0011] 多様なサイドチャネル攻撃は、標的暗号システムの中に記憶されている、及び/又は標的暗号システムにより処理されている特定の保護情報(例えば、入力された平文を暗号文に変換するために活用される暗号鍵)に対する不正アクセスを得るように設計される場合がある。例示的な例では、攻撃者は、標的データ処理装置の特定の内部状態に基づく順次的なデータ操作演算の相互作用を不当に利用する場合がある。攻撃者は、順次的なデータ操作演算の1つ以上の変化するデータ入力に対応して、標的暗号データ処理装置の特定の回路による電力消費を測定するために単純電力解析方法(SPA)又は電力差分解析(DPA)方法を適用し、このようにしてデータ操作演算のオペランドとして働く1つ以上の保護データ項目(例えば、暗号鍵)を決定する場合がある。
【0009】
[0012] 本開示は、秘密の値(例えば、暗号鍵)を計算するために活用され得る2つのマスクキングをかけたシェアを生成することによって、外部監視攻撃から、例えばモジュラーインバージョン演算等の暗号データ処理演算を保護するためのシステム及び方法を導入する。本明細書で以下に説明される多様な例示的な例では、モジュラーインバージョン演算を実行する方法は、リベストシャミアエーデルマン(RSA)暗号データ処理演算を実装するために活用されてよい。しかしながら、本明細書に説明されるシステム及び方法は、多様な他のデータ処理方法に適用可能であってよい。
【0010】
[0013] RSA暗号法は、
任意の整数mに対して
[0014](me)d=m(mod n)
となるように、3つの大きな正の整数e、d、及びnを活用し、
[0015] 上式では、mod nは、nの値によるオペランドのユークリッド除法の余りを生じさせるモジュロ演算を示す(例えば、nを法とするaは、nによるaのユークリッド除法の余りである)。したがって、e、n、又はmの既知の値からもdの値を導出することは実際には実現可能ではないであろうと仮定すると、(本明細書で以下に説明される例で正の整数として解釈されるビットシーケンスにより表される)平文mは、公開指数eにより表される受取人の公開鍵を使用し、暗号化されて、暗号文を生じさせてよい。
[0016] c=me(mod n)
【0011】
[0017] 暗号文は、次いで
[0018] m=(me)d (mod n)=cd(mod n)
を計算するために、秘密指数dにより表される受取人の秘密鍵を使用することによって平文mを復元し得る受取人に送信されてよい。
【0012】
[0019] 例示的な例では、第1の通信相手は、公開鍵及び対応する秘密鍵を含む1対の暗号鍵を生成してよい。鍵を生成することは、モデュラスnの値を2つのランダムな大きい素数の積として計算することを含んでよい。
[0020] n=pq
【0013】
[0021] 第1の通信相手は次いで、本明細書ではφ(n)として示される、モデュラスのオイラーのファイ関数の値を計算してよい。オイラーのファイ関数は、最大公分母gcd(n、k)=1の1≦k≦nの範囲内で整数kの数を生じさせる。オイラーのファイ関数の基本特性に基づいて、φ(n)=φ(p)φ(q)=(p-1)(q-1)である。
【0014】
[0022] 第1の通信相手は、次いで1<e<φ(n)及びgcd(e、φ(n))=lとなる(つまり、e及びφ(n)が互いに素である)ように整数値eを選んでよい。eの値は、次いで公開されてよい、又はそれ以外の場合、第1の通信相手の公開鍵として第2の通信相手に伝達されてよい。
【0015】
[0023] 第2の通信相手は、第1の相手の公開鍵eを使用し、平文mを暗号化して、暗号文cを作成してよい。
[0024] c=me(mod n)
【0016】
[0025] 第2の通信相手は、次いで第1の通信相手に暗号文を送信してよい。受信された暗号文を解読するために、第1の通信相手は、公開鍵eのモジュラー乗法インバージョン(modular multiplicative inversion)として秘密指数dを計算してよい。
[0026] d=e-1 mod φ(n)
[0027] 上式では、e-1はeのモジュラー乗法インバージョンであり、これによりee―1=1(mod φ(n))となる。
【0017】
[0028] 第1の通信相手は、次いで秘密指数dを使用し、受信された暗号文cを解読することによって平文mを復元してよい。
[0029] m=cd
【0018】
[0030] 特に、モジュラーインバージョンe―1 mod φ(n)を計算する多様な共通の方法は、例えば多様な条件付き演算を含む拡張ユークリッドGCD又はバイナリGCDアルゴリズムにより最大公分母(GCD)を決定することを伴い、したがって外部監視攻撃に弱い場合がある。
【0019】
[0031] 本開示は、例えばモジュラーインバージョン演算等の暗号データ処理演算を実行する多様な共通の方法のこの欠陥及び他の既知の欠陥を克服する。したがって、本明細書に説明されるシステム及び方法は、外部監視攻撃に対して抵抗性を示す方法での暗号データ処理演算の実行を可能にすることによって汎用コンピューティングデバイス又は専門コンピューティングデバイスの機能性に対する改善に相当する。
【0020】
[0032] 本明細書に説明されるシステム及び方法は、ハードウェア(例えば、汎用処理装置及び/又は専門処理装置、及び/又は他の装置、及び関連付けられた回路)、ソフトウェア(例えば、処理装置により実行可能な命令)、又はその組み合わせにより実装されてよい。方法及びシステムの多様な態様は、制限としてよりむしろ例として本明細書に説明される。
【0021】
[0033] RSA暗号データ処理演算の上述された例からの注釈を利用し、目標は、公開指数eのモジュラー乗法インバージョンとして秘密指数dを計算することである。
[0034] d=e―1 mod φ(n)
【0022】
[0035] 外部監視攻撃からの保護は、以下の通りに公開指数eから導出され得る2つの互いに素であるマスキングをかけたシェアe1及びe2を計算することにより達成されてよい。
[0036] e1=er mod φ(n)
[0037] e2=es mod φ(n)
[0038] 上式では、r及びsは、φ(n)のビット長に類似したそれぞれのビット長を有するランダムな整数である(つまり、r及びsのそれぞれのビット長は、φ(n)のビット長とはわずかに所定のビット数、異なる場合がある)。
【0023】
[0039] 次いで、2つの整数a及びbが(例えば、拡張ユークリッドGCDアルゴリズムにより)計算されてよく、これにより
[0040] ae1+be2=1
となる。
【0024】
[0041] e1及びe2が1よりも大きい公約数を有する場合、次いで係るa及びbは存在しない。その場合、アルゴリズムは、e1及びe2に新しい値を用いて再開する。
【0025】
[0042] mod φ(n)により最後の方程式の両方の部分をとると、
[0043] ae1 mod φ(n)+be2 mod φ(n)=1 mod φ(n)
が生じるであろう。
【0026】
[0044] e1及びe2をその定義で置換すると、最後の方程式は、
[0045] aer+bes=1 mod φ(n)
として書き換えられてよい。
【0027】
[0046] 次いで、自明な算術変換を適用すると、
[0047] aer+bes=e(ar+bs)=1 mod φ(n)
が生じるであろう。
【0028】
[0048] 最後に、両側をeの乗法逆元で乗算すると、
[0049] ar+bs=e―1 mod φ(n)=d
が生じるであろう。
【0029】
[0050] したがって、秘密指数dは、加法シェアar+bsの総和として計算されてよく、このようにして外部監視攻撃から暗号データ処理演算を保護する。
【0030】
[0051] 代替実施形態では、e1及びe2は以下のとおりに決定されてよく、
[0052] e1=er
[0053] e2=es+φ(n)
[0054] 上式では、r及びsは0<er<φ(n)、0<es<φ(n)になるように選ばれたランダムな整数であり、導出の残りは上記と同じである。
【0031】
[0055]
図1は、本開示の1つ以上の態様に従って、公共通信回線を介して安全なメッセージを交換するために2つの通信相手110、120により実行される例の一連の演算を概略で示す。
図1により概略で示されるように、第1の通信相手110は、公開鍵130及び対応する秘密鍵140を含む1対の暗号鍵を生成してよい。鍵を生成することは、2つのランダムな大きい素数の積としてモデュラスnの値を計算することを伴ってよい。
[0056] n=pq
【0032】
[0057] 第1の通信相手は、次いで整数値eを選んでよく、これにより1<e<φ(n)及びgcd(e、φ(n))=1となる(つまり、e及びφ(n)は互いに素である)。eの値は、次いで公開されてよい、又はそれ以外の場合第1の通信相手110の公開鍵130として第2の通信相手120に伝達されてよい。
【0033】
[0058] 第2の通信相手120は、第1の相手の公開鍵130を使用し、平文150を暗号化して、暗号文160を作成してよい。
[0059] c=me(mod φ(n))
【0034】
[0060] 第2の通信相手120は、次いで暗号文160を第1の通信相手110に送信してよい。特定の実施態様では、平文150を暗号化する前に、第2の通信相手120は、平文150を所与のサイズの複数のブロックに分割し、
図2により概略で示されるように、最後の不完全なブロックを所定のビットパターンでパディングしてよい。第1の通信相手110は、次いで解読されたブロックを連結させることによって平文150を再構築してよい。
【0035】
[0061] 受信された暗号文160を解読するために、第1の通信相手110は、秘密鍵140を計算してよく、これは、一実施形態では以下の通りの公開指数eから導出されてよい2つの互いの素であるマスキングをかけたシェアe1及びe2を計算することを伴う場合があり、
[0062] e1=er mod φ(n)
[0063] e2=es mod φ(n)
[0064] 上式では、r及びsは、φ(n)のビット長に類似したそれぞれのビット長を有するランダムな整数である(つまり、r及びsのそれぞれのビット長は、φ(n)のビット長とはわずかに所定のビット数、異なる場合がある)。
【0036】
[0065] 代替実施形態では、e1及びe2は、以下の通りに決定されてよく、
[0066] e1=er
[0067] e2=es+φ(n)
[0068] 上式では、r及びsは、0<er<φ(n)及び0<es<φ(n)となるように選ばれたランダムな整数である。
【0037】
[0069] 次いで、2つの整数a及びbは、(例えば、拡張GCDアルゴリズムにより)計算されてよく、これにより
[0070] ae1+be2=1
となる。
【0038】
[0071] e1及びe2が1よりも大きい公約数を有する場合、次いで係るa及びbは存在しない。その場合、アルゴリズムは、e1及びe2に新しい値を用いて再開する。
【0039】
[0072] 最後に、秘密鍵140は、加法シェアの総和として計算されてよい。
[0073] d=ar+bs
【0040】
[0074] 第1の通信相手110は、次いで秘密鍵140を使用し、受信された暗号文160を解読することによって平文150を復元してよい。
[0075] m=cd mod φ(n)
【0041】
[0076]
図2は、本開示の1つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算を実行するための例の方法200の流れ図を示す。方法200及び/又はその個々の関数、ルーチン、サブルーチン、又は演算のそれぞれは、例えば、汎用コンピューティングシステム及び/又は専門コンピューティングシステムによって表される1つ以上の暗号データ処理装置によって実行されてよい。方法200の2つ以上の関数、ルーチン、サブルーチン、又は演算は、並行して又は上述された順序とは異なる場合がある順序で実行されてよい。特定の実施態様では、方法200は、単一の処理スレッドによって実行されてよい。代わりに、方法200は、各スレッドが方法の1つ以上の個々の関数、ルーチン、サブルーチン、又は演算を実行する2つ以上の処理スレッドによって実行されてよい。例示的な例では、方法200を実装する処理スレッドは、(例えば、セマフォ、クリティカルセクション、及び/又は他のスレッド同期機構を使用し)同期されてよい。代わりに、方法200を実装する処理スレッドは、互いに関して非同期で実行されてよい。例示的な例では、方法200は、
図4のコンピューティングシステム400によって実行されてよい。
【0042】
[0077]
図2を参照すると、ブロック210で、方法を実装する暗号データ処理装置は、公開暗号鍵e及び第1のランダムな整数値rの積の、モデュラス値nによる整数除算の余りとして第1のマスキングをかけた値e
1を決定してよい。
[0078] e
1=er mod φ(n)
【0043】
[0079] 例示的な例では、モデュラス値は、本明細書で上記により詳細に説明されるように、本明細書ではφ(n)として示される、所与のモデュラスのオイラーのファイ関数の値により表されてよい。別の例示的な例では、モデュラス値は、本明細書ではkφ(n)として示される、小さい整数k及び所与のモデュラスのオイラーのファイ関数の値の積により表されてよい。
【0044】
[0080] ブロック220で、暗号データ処理装置は、モデュラス値φ(n)と、公開暗号鍵e及び第2のランダムな整数sの積の、モデュラス値nによる整数除算の余りとの総和として第2のマスキングをかけた値e2を決定してよい。
[0081] e2=es mod φ(n)
【0045】
[0082] ブロック230で、暗号データ処理装置は、第1の整数乗数及び第1のマスキングをかけた値の積と、第2の整数乗数及び第2のマスキングをかけた値の積との総和が、所定の整数定数(例えば、1)に等しくなるように、第1の整数乗数a及び第2の整数乗数bを決定してよい。
[0083] ae1+be2=1
【0046】
[0084] ブロック240で、暗号データ処理装置は、第1の整数乗数及び第1のランダムな整数値の積と、第2の整数乗数及び第2のランダムな整数値の積との総和を計算することによって、公開暗号鍵の乗法モジュラーインバージョンにより表される秘密暗号鍵を決定してよい。
[0085] d=ar+bs
【0047】
[0086] ブロック250で、暗号データ処理装置は、暗号データ処理演算を実行するために秘密暗号鍵を活用してよい。例示的な例では、暗号データ処理装置は、秘密暗号鍵dを活用して、受信された暗号文cを解読してよい。
[0087] m=cd mod n
【0048】
[0088]
図3は、本開示の1つ以上の態様に従って、外部監視攻撃に抵抗性を示す方法でモジュラーインバージョン演算を実行するための別の例の方法300の流れ図を示す。方法300及びその個々の関数、ルーチン、サブルーチン、又は演算のそれぞれは、例えば汎用コンピューティングシステム及び/又は専門コンピューティングシステムにより表される1つ以上の暗号データ処理装置により実行されてよい。方法300の2つ以上の関数、ルーチン、サブルーチン、又は演算は、並行して又は上述された順序とは異なる場合がある順序で実行されてよい。特定の実施態様では、方法300は、単一の処理スレッドによって実行されてよい。代わりに、方法300は、各スレッドが方法の1つ以上の個々の関数、ルーチン、サブルーチン、又は演算を実行する2つ以上の処理スレッドによって実行されてよい。例示的な例では、方法300を実装する処理スレッドは、(例えば、セマフォ、クリティカルセクション、及び/又は他のスレッド同期機構を使用し)同期されてよい。代わりに、方法300を実装する処理スレッドは、互いに関して非同期で実行されてよい。例示的な例では、方法300は、
図4のコンピューティングシステム400によって実行されてよい。
【0049】
[0089]
図3を参照すると、ブロック310で、方法を実装する暗号データ処理装置は、公開暗号鍵e及び第1のランダムな整数値rの積として第1のマスキングをかけた値e
1を決定してよい。
[0090] e
1=er
【0050】
[0091] ブロック320で、暗号データ処理装置は、モデュラス値φ(n)と、公開暗号鍵e及び第2のランダムな整数sの積との総和として第2のマスキングをかけた値e3を決定してよい。
[0092] e3=es+φ(n)
【0051】
[0093] 例示的な例では、モデュラス値は、本明細書でより詳細に上述されるように、本明細書ではφ(n)として示される、所与のモデュラスのオイラーのファイ関数の値により表されてよい。別の例示的な例では、モデュラス値は、kφ(n)として本明細書に示される、小さい整数k及び所与のモデュラスのオイラーのファイ関数の値の積によって表されてよい。
【0052】
[0094] ブロック330で、暗号データ処理装置は、第1の整数乗数及び第1のマスキングをかけた値の積と、第2の整数乗数及び第2のマスキングをかけた値の積との総和が、所定の整数定数(例えば、1)に等しくなるように、第1の整数乗数a及び第2の整数乗数bを決定してよい。
[0095] ae1+be2=1
【0053】
[0096] ブロック340で、暗号データ処理装置は、第1の整数乗数及び第1のランダムな整数値の積と、第2の整数乗数及び第2のランダムな整数値の積との総和を計算することによって、公開暗号鍵の乗法モジュラーインバージョンにより表される秘密暗号鍵を決定してよい。
[0097] d=ar+bs
【0054】
[0098] ブロック350で、暗号データ処理装置は、暗号データ処理演算を実行するために秘密暗号鍵を活用してよい。例示的な例では、暗号データ処理装置は、秘密暗号鍵dを活用して、受信された暗号文cを解読してよい。
[0099] m=cd mod n
【0055】
[0100]
図4は、本明細書に説明される暗号データ処理演算を実行するために利用され得るコンピューティングシステム400の図表示を示す図である。コンピューティングシステム400は、LAN、イントラネット、エクストラネット、及び/又はインターネット内の他のコンピューティングデバイスに接続してよい。コンピューティングデバイスは、クライアント‐サーバネットワーク環境でサーバマシンとして動作してよい。コンピューティングデバイスは、パーソナルコンピュータ(PC)、セットトップボックス(STB)、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又はマシンにより講じられる処置を指定する命令(順次的又は別の方法で)の集合を実行できる任意の該マシンにより提供されてよい。さらに、単一のコンピューティングデバイスしか示されていないが、用語「コンピューティングデバイス」は、本明細書に説明される方法を実行するために命令の集合(又は複数の集合)を個別に又は共同で実行するコンピューティングデバイスの任意の集合体を含むとも解釈されるものとする。
【0056】
[0101] 例のコンピューティングシステム400は、多様な例示的な例では、1つ以上の処理コアを含む汎用プロセッサ又は専門プロセッサであってよい、処理装置402を含んでよい。例のコンピューティングシステム400は、バス430を介して互いと通信してよい、メインメモリ404(例えば、シンクロナスダイナミックランダムアクセスメモリ(DRAM)、読取り専用メモリ(ROM))、スタティックメモリ406(例えば、フラッシュメモリ及びデータストレージデバイス418)をさらに含んでよい。
【0057】
[0102] 例のコンピューティングシステム400は、ネットワーク420と通信してよいネットワークインタフェースデバイス408をさらに含んでよい。また、例のコンピューティングシステム400は、ビデオディスプレイユニット410(例えば、液晶ディスプレイ(LCD)又は陰極線管(CRT))、英数字入力装置412(例えば、キーボード)、カーソル制御装置442(例えば、マウス)、及び音響信号発生装置416(例えば、スピーカ)を含んでもよい。一実施形態では、ビデオディスプレイユニット410、英数字入力装置412、及びカーソル制御装置442は、単一の構成要素又はデバイス(例えば、LCDタッチスクリーン)の中に結合されてよい。
【0058】
[0103] データストレージデバイス418は、例えば、外部監視攻撃に対して抵抗性を示す方法でモジュラーインバージョン演算を実行する方法200等の本明細書に説明される方法又は機能の任意の1つ以上を実装する命令の1つ以上の集合が記憶されてよい、コンピュータ可読記憶媒体428を含んでよい。また、命令は、例のコンピューティングシステム400によるその実行中に、メインメモリ440の中に及び/又は処理装置402の中に完全に又は少なくとも部分的に常駐してもよい。したがって、メインメモリ404及び処理装置402は、コンピュータ可読媒体を構成してもよい、又は含んでもよい。命令はさらに、ネットワークインタフェースデバイス408を介してネットワーク420上で送信又は受信されてよい。
【0059】
[0104] コンピュータ可読記憶媒体428は単一の媒体であるために例示的な例に示されるが、用語「コンピュータ可読記憶媒体」は、命令の1つ以上の集合を記憶する単一の媒体又は複数の媒体(例えば、集中型又は分散型のデータベース及び/又は関連付けられたキャッシュ及びサーバ)を含むとして解釈されるべきである。また、用語「コンピュータ可読記憶媒体」は、マシンによる実行のために命令の集合を記憶する、符号化する、又は搬送することができ、マシンに本明細書に説明される方法を実行させる任意の媒体を含むとして解釈されるものとする。したがって、用語「コンピュータ可読記憶媒体」は、ソリッドステートメモリ、光学媒体、及び磁気媒体を含むが、これに限定されるものではないと解釈されるものとする。
【0060】
[0105] 特に明記しない限り、例えば「更新する」、「識別する」、「決定する」、「送信する」、「割り当てる」等の用語は、コンピューティングデバイスのレジスタ及びメモリの中の物理的な(電子的な)量として表されるデータを操作し、コンピューティングデバイスメモリ若しくはレジスタの中の物理的な量として同様に表される他のデータに変換するコンピューティングデバイスによって、又は他の係る情報記憶装置、情報伝送装置、若しくは情報表示装置によって実行又は実装されるアクション及びプロセスを指す。また、本明細書で使用される用語「第1の」、「第2の」、「第3の」、「第4の」等は、異なる要素を区別するためのラベルとして意味され、必ずしもその数字表示に応じた順序の意味を有さない場合がある。
【0061】
[0106] また、本明細書に説明される例は、本明細書に説明される方法を実行するための装置にも関する。この装置は、必要とされる目的のために特別に構築される場合もあれば、装置はコンピューティングデバイスに記憶されたコンピュータプログラムによって選択的にプログラムされた汎用コンピューティングデバイスを含む場合もある。係るコンピュータプログラムは、コンピュータ可読非一過性記憶媒体に記憶されてよい。
【0062】
[0107] 本明細書に説明される方法及び例示的な例は、本質的に任意の特定のコンピュータ又は他の装置に関係していない。多様な汎用システムが、本明細書に説明される教示に従って使用される場合もあれば、必要とされる方法ステップを実行するためにより専門化された装置を構築することが便利であると判明する場合もある。さまざまなこれらのシステムのための必要とされる構造は、上記説明に説明される通りに現れる。
【0063】
[0108] 上記の説明は、制限的ではなく例示的となることを意図する。本開示は、特定の例示的な例に関して説明されてきたが、本開示が説明された例に限定されないことが認識される。本開示の範囲は、特許請求の範囲が権限がある同等物の完全な範囲とともに、続く特許請求の範囲に関して決定されるべきである。