RSA(cryptosystem)

0 Comments

中国の剰余アルゴリズムの使用edit

効率のために多くの一般的な暗号ライブラリ(OpenSSL、Java、.NETなど)は、中国の剰余定理に基づく復号化と署名に次の最適化を使用します。 これらの値により、受信者は、次のようにべき乗m=cd(mod pq)をより効率的に計算できます。

二つのモジュラーべき乗を計算する必要があるにもかかわらず、これは、二乗によるべき乗を計算するよりも効率的です。, その理由は、これら二つのモジュラーべき乗の両方がより小さい指数とより小さい係数を使用することです。

Integer factorization and RSA problemEdit

関連項目:RSA Factoring Challenge,Integer factorization records,and Shor”s algorithm

RSA暗号システムのセキュリティは、大きな数を因数分解する問題とRSA問題の二つの数学的問題に基づいています。 RSA暗号文の完全復号は,これらの問題の両方が困難であること,すなわちそれらを解決するための効率的なアルゴリズムが存在しないことを前提として実行不可能であると考えられる。, 提供する安全対一部を復号化する必要があるかもしれなほかのセキュアpaddingスキームです。RSA問題は、複合nを法とするeth根を取るタスクとして定義されます:c≤me(mod n)となるような値mを回復します(n、e)はRSA公開鍵であり、cはRSA暗号文で 素因数を回復する能力により、攻撃者は公開鍵(n,e)から秘密指数dを計算し、標準手順を使用してcを復号化することができます。, これを達成するために、攻撃者はnをpとqに因数分解し、eからdを決定できるlcm(p−1,q−1)を計算します。 この問題の説明については、整数分解を参照してください。

多重多項式二次ふるい(MPQS)は、公共モジュラスnを因数分解するために使用することができます。,

最初のRSA-512因数分解は1999年に数百のコンピュータを使用し、8,400MIPS年に相当するものを必要とした。 2009年までに、Benjamin MoodyはRSA-512ビットキーを73日でパブリックソフトウェア(GGNFS)と彼のデスクトップコンピュータ(デュアルコアAthlon64、1,900MHz cpu)のみを使用して考慮することができた。 ふるい分けプロセスには約2.5ギガバイトのRAMが必要でした。,Rivest、Shamir、およびAdlemanは、Millerが、拡張リーマン仮説の真実を仮定すると、nとeからdを見つけることは、nをpとqに因数分解するのと同じくらい難しいことを示していることを指摘した(多項式の時間差まで)。 しかし、Rivest、Shamir、およびAdlemanは、論文のセクションIX/Dで、RSAを反転することが因数分解ほど難しいという証拠を見つけられなかったことに注意しました。

2020年現在、公に知られている最大の因数分解RSA番号は829ビット(小数点以下250桁、RSA-250)でした。 最先端の分散実装による因数分解には、約2700年かかりました。, 実際には、RSAキーは通常1024から4096ビットの長さです。 2003年、RSAセキュリティは1024ビットのキーが2010年までにクラッキング可能になる可能性が高いと推定しました。 2020年現在、このようなキーがクラックされるかどうかはわかっていませんが、最小推奨は少なくとも2048ビットに移動しました。 一般に、量子コンピューティング以外では、nが十分に大きい場合、RSAは安全であると推定されます。

nが300ビット以下の場合、すでに自由に利用できるソフトウェアを使用して、パソコンで数時間で因数分解することができます。, 512ビットのキーは、1999年にRSA-155が数百のコンピュータを使用して因数分解されたときに実質的に壊れやすいことが示されており、これらは一般的なハードウェアを使用して数週間で因数分解されている。 因数分解された可能性のある512ビットのコード署名証明書を使用した悪用は、2011年に報告されました。 2003年にShamirとTromerによって記述されたTWIRLという理論的なハードウェアデバイスは、1024ビットキーのセキュリティに疑問を投げかけました。,

1994年、Peter Shorは、量子コンピュータが–もしその目的のために実際に作ることができれば–多項式時間で考慮することができ、RSAを破ることを示しました。Shorのアルゴリズムを参照してください。

欠陥のあるキー生成編集

このセクションでは、検証のために追加の引用が必要です。 くださいこれを加えた論文の引用になりました。 未資源材料は挑戦され、取除かれるかもしれない。,
Find sources:”RSA”cryptosystem-news*newspapers·books·scholar·JSTOR(October2017)(Learn how and when to remove this template message)

See also:Coppersmith”S Attack and Wiener”S Attack

大きな素数pとQを見つけることは、通常、事実上すべての非素数をすばやく排除する確率的素数テストで正しいサイズの乱数をテストすることによって行われます。

数pとqは、nのフェルマー分解が成功しないように、”近すぎる”べきではありません。, P−qが2n1/4より小さい場合(n=p*q、nの小さな1024ビット値であっても3×1077です)、pとqについて解くことは自明です。 さらに、p−1またはq−1のいずれかが小さな素因数しか持たない場合、NはPollardのp−1アルゴリズムによって素早く因数分解することができるため、pまたはqのそのような値は破棄されるべきである。

プライベート指数dが十分に大きいことが重要です。 Michael J.Wienerは、pがqと2q(これは非常に典型的です)の間にあり、d<n1/4/3の場合、dはnとeから効率的に計算できることを示しました。,

適切なパディングが使用されていれば、e=3のような小さなパブリック指数に対する既知の攻撃はありません。 Coppersmithの攻撃には、特に公開指数eが小さく、暗号化されたメッセージが短くて埋め込まれていない場合にRSAを攻撃する多くのアプリケーションがあります。 65537はeの一般的に使用される値であり、この値は、潜在的な小さな指数攻撃を回避し、効率的な暗号化(または署名検証)を可能にすることの間の妥協点とみなすことができます。, コンピュータセキュリティに関するNIST特別出版物(SP800-78Rev1of August2007)は、65537より小さい公開指数eを許可していませんが、この制限の理由を述べていません。

2017年、Masaryk大学の研究者チームは、RSALibとして知られるインフィニオンのライブラリに組み込まれたアルゴリズムによって生成されたRSA鍵に影響を与えるROCAの脆弱性を発表しました。 多数のスマートカードと信頼を基盤モジュールに譲あることが示された。 脆弱なRSA鍵を容易に同定し、試験プログラムのチームが発売されます。,

強い乱数生成の重要性編集

素数pとqを生成するためには、適切なエントロピーで適切にシードされている暗号的に強い乱数生成器を使用する必要があります。2012年初めにArjen K.Lenstra、James P.Hughes、Maxime Augier、Joppe W.Bos、Thorsten Kleinjung、Christophe Wachterによってインターネットから収集された何百万もの公開鍵を比較する分析が行われました。 彼らはEuclidのアルゴリズムだけを使って鍵の0.2%を因数分解することができました。

彼らは整数分解に基づく暗号システム特有の弱点を悪用しました。, N=pqがある公開鍵でn’=p’q’が別の公開鍵である場合、偶然p=p’(ただしqはq’と等しくない)ならば、gcd(n、n’)=pの単純な計算はnとn’の両方を因数分解し、両方のキーを完全に損ないます。 Lenstra et al. この問題は、意図したセキュリティレベルの倍のビット長の強いランダムシードを使用するか、pとqを独立して選択するのではなく、pが与えられたq

Nadia Heningerは同様の実験を行ったグループの一員でした。 使ってアダニエルJ., バーンスタインは、各RSA鍵nのgcdを、見つけた他のすべての鍵n’(729万桁の数字)の積に対して計算するのではなく、各gcd(n、n’)を別々に計算するので、大きな除算の後にGCD問題が正常なサイズであるため、非常に大幅な高速化を達成する。

Heningerは彼女のブログで、30以上のメーカーの”ファイアウォール、ルーター、VPNデバイス、リモートサーバー管理デバイス、プリンター、プロジェクター、VOIP電話”を含む組み込みアプリケーションでほぼ完全に不良キーが発生したと述べている。, Heningerは、二つのグループによって明らかにされた一共有素数問題は、擬似乱数生成器が最初にシードされず、次に第一と第二の素数の生成の間に再シードされる状況から生じると説明している。 キーストロークタイミングから得られる十分に高いエントロピーのシードまたは局間で調整された無線受信機からの電子ダイオードノイズまたは大気ノイズ

強力な乱数生成は、公開鍵暗号のあらゆる段階を通じて重要です。, たとえば、RSAによって配布されている対称鍵に弱い生成器が使用されている場合、盗聴者はRSAをバイパスして対称鍵を直接推測することができます。

Timing attacksEdit

Kocherは1995年にRSAに対する新しい攻撃を説明しました:攻撃者EveがAliceのハードウェアを十分に詳細に知っており、いくつかの既知の暗号テキストの復号化時間を測定できれば、Eveは復号鍵dを迅速に推測することができます。 この攻撃は、RSA署名方式に対しても適用できます。, 2003年、BonehとBrumleyは、ネットワーク接続を介して(例えば、Secure Sockets Layer(SSL)対応のwebサーバーから)RSA因数分解を回復することができるより実用的な攻撃を実証したこの攻撃は、多くのRSA実装で使用されている中国の剰余定理最optimizationによって漏洩された情報を利用する。

これらの攻撃を阻止する一つの方法は、復号化操作がすべての暗号文に対して一定の時間を要することを保証することです。 しかし、このアプローチを大幅に削減できます。, 代わりに、ほとんどのRSA実装では、暗号盲検として知られる代替技術を使用します。 RSA blindingはRSAの乗法的性質を利用しています。 Cd(mod n)を計算する代わりに、Aliceはまず秘密のランダム値rを選択し、(rec)d(mod n)を計算します。 この計算の結果は、オイラーの定理を適用した後、rcd(mod n)であるため、rの効果はその逆数で乗算することによって除去することができます。 暗号文ごとにrの新しい値が選択されます。 Blindingを適用すると、復号化時間は入力暗号化テキストの値と相関しなくなり、タイミング攻撃は失敗します。,

Adaptive chosen ciphertext attacksEdit

1998年、Daniel BleichenbacherはPKCS#1v1パディングスキームを使用してRSA暗号化されたメッセージに対する最初の実用的な適応選択暗号テキスト攻撃を記述した(パディングスキームはRSA暗号化されたメッセージにランダム化して構造を追加するため、復号化されたメッセージが有効であるかどうかを判断することができる)。 PKCS#1スキームの欠陥により、BleichenbacherはSecure Socket LayerプロトコルのRSA実装に対する実用的な攻撃を実装し、セッションキーを回復することができました。, この作業の結果、暗号学者は現在、Optimal Asymmetric Encryption Paddingなどの確かに安全なパディング方式の使用を推奨しており、RSA Laboratoriesはこれらの攻撃に対して脆弱ではないPKCS#1の新しいバージョンをリリースしました。

サイドチャネル解析attacksEdit

分岐予測解析(BPA)を用いたサイドチャネル攻撃について説明しました。 多くのプロセッサは、分岐予測子を使用して、プログラムの命令フローにおける条件分岐が取られる可能性があるかどうかを判断します。 しばしばこれらのプロセッサにおいても同時multithreading(SMT)., 分岐予測解析攻撃用スパイプロセスを発見(統計)の鍵を処理することによるこれらのプロセッサです。

単純分岐予測分析(SBPA)は、非統計的な方法でBPAを改善すると主張しています。 SBPA(Onur AciicmezとCetin Kaya Koc)の著者は、”単純な分岐予測分析の力について”という論文で、508回の反復で512ビットのRSA鍵を10個発見したと主張しています。

RSA実装に対する電力障害攻撃は2010年に説明されました。, 著者は、制限外のCPU電力電圧を変化させることによってキーを回復しました。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です