web-dev-qa-db-ja.com

RSAはどの程度安全で安全ですか?

暗号化と復号化にRSAを使用しています。攻撃に対して脆弱だと聞きました。それは...ですか?使用するのはどれくらい安全ですか?

16
suraj

RSAに対する通常の攻撃では、2つの非常に大きな素数の積である大きな数を因数分解します。この背後にある一般的な考え方は、素数を見つけることはかなり簡単であり、それらを乗算して単一の大きな数を取得することも非常に簡単ですが、その大きな数から始める場合、要因を見つけることはかなり難しい。

彼らが独立した会社だった頃、RSA Data SecurityInc。はファクタリングの課題を実行しました。 IIRC、最後のいくつかの賞はRSADSI自身のチームによって獲得されました。これらは、一般的な数体ふるい(GNFS)を使用して行われました。一般的な実装では、「ファクターベース」を構築するために数か月ほど多数のワークステーションを使用します。次に(難しい部分)それをgargantuanの量のRAM(テラバイトを出発点)そして要因を得るためにそれを数週間クランチさせます。

そのポイントは、RSAに対する最も一般的な攻撃は、非常に高い初期コスト(つまり、Crayスーパーコンピューターのようなものを入手する)を持っていることを指摘することです。始めても。ただし、正直なところ、1024ビットのRSAキー(2048またはは言うまでもなく)のようなものへの攻撃を開始するのに十分なRAMを保持できるマシンは、現在存在しないと思います。 4096ビットキーでさえ、一部のパラノイドタイプは使用を主張しています)。

もちろん、その巨大なマシンを必要としない他のファクタリング方法もありますが、それらは十分に効率が悪いので、せいぜいでも、RSA標準によってかなり小さなキーでさえも損益分岐点に達するために何年もの作業を見ているでしょう- -たとえば、512ビット。

現実的には、RSA自体のセキュリティは、一般的に、RSAを使用するシステムを設計する際の懸念事項の中で最も少なくなります。実際、これはほとんどすべての合理的に最新の暗号化アルゴリズムに当てはまります。何かが侵入された場合、それは基本的に、関連する基本的なアルゴリズムを実際に破壊することではありません。それは、キーの配布方法の弱点、「ソーシャルエンジニアリング」攻撃などを見つけることによるものです。

(私が言ったように)これは一般的な暗号化に当てはまる傾向がありますが、RSAでは他のほとんどの暗号化よりも一貫して当てはまります。これは、RSAの通常のユースケースが比較的複雑だからです。特に、notは通常、RSAを使用して生データの大規模なストリームを暗号化する必要があります。 RSAは十分に遅いため、通常、RSAを使用して大量のデータを暗号化することは望ましくありません。代わりに、通常、RSAをAESなどの対称鍵(別名秘密鍵)暗号化アルゴリズムと組み合わせて使用​​します。

この2つを一緒に使用する場合は、データの送信先の人の公開鍵を取得することから始めます。次に、選択した対称アルゴリズムでキーとして使用する正しいサイズの乱数を生成します。乱数をRSAで暗号化し、ターゲットに送信します。次に、その番号を対称アルゴリズムのキーとして使用し、その対称アルゴリズムを使用して実際のデータを暗号化します。

これは、実際の使用では、RSAには、ほとんどの対称暗号化アルゴリズムに必ずしも適用されないいくつかの弱点があることを意味します。明白な例として、対称アルゴリズムの「ランダム」キーを選択するために使用する方法が実際には完全にランダムではない場合、攻撃者はRSA暗号化自体をまったく攻撃することなく、キーを見つけてデータを復号化できる可能性があります(はい、これは実際の公開されたソフトウェアの実際の脆弱性の原因となっています)。

また、上記で説明したことは、RSAが通常使用される最も簡単な方法であることに注意してください。実際のシステムは、「完全転送秘密」などを提供するために、さらにかなり複雑になることがよくあります。1。このようなシステムのRSAは、依然として完全に通常のRSAですが、それを使用するシステムの残りの部分は、さらにかなり複雑です。

概要:RSA暗号化を使用する場合、RSA自体のセキュリティはおそらく最も懸念事項ではありません。 「RSA」から「安全な通信システム」へのルートは、ギリシャ神話とキリスト教の聖書のねじれた組み合わせからの何かに少し似ています。あなたは行き​​たかったのですが、間違った方向に進むと、永遠の拷問と苦痛に陥ります。


1.いいえ、今はこれについて説明するつもりはありませんが、 Crypto.SE で検索すると、いくつかの関連する結果が表示されると確信しています。ただし、RSAはPFSを提供するシステムで使用できますが、実際にはかなり珍しいことを付け加えておきます。

31
Jerry Coffin

RSAはすべての現実的なニーズに対して安全であると想定します。

しかしもちろん、それはあなたが何をしているのか、どのようにそれをしているのか、そして誰に対して防御したいのかによります。

接続を保護したいが、通常の推奨事項に固執する場合、RSAは十分に安全です。

NSA鼻の下で秘密作戦を実行したい場合は、そのような質問をしなければならないので、すでに負けています。

PS:このようなものについては、StackExchangeの IT-Security サイトをご覧ください。

7
Angelo Fuchs

正しく実装されている場合(つまり、これを行う既存のライブラリを使用している場合)、データチャネルは安全です。ただし、暗号化のポイントは、単にデータチャネルを作成することであることに注意してくださいnotシステム全体で最も弱いポイントです。 RSAがこれを行いますが、システムの他の部分とそれらの安全性について心配する必要があります。

5
Oleksi