1

私は RSA 暗号文c、公開鍵を持っています(e,n)。(ここでc = m^e mod n)

これで、プレーンテキストが または のmいずれ"1234XXX""12345XXX"である必要があることもわかりました。ここ"XXX"で、 は 3 桁の数字です。

3桁すべての数字をテストせずに、どれが正しいかを見つけることはできますか? "1234"(最初の部分がまたはであるかどうかを知りたいだけで、が"12345"何であるかは気にしませんXXX。)

4

2 に答える 2

3

それはできません(これは一種の既知平文攻撃です)。暗号化されたRSAメッセージを指定すると、キーやプレーンテキストに関する情報を取得することはできません。

(同様のプレーンテキストメッセージは、同様の暗号化されたメッセージを生成しません)

したがって、公開鍵を使用している場合でも、関連する暗号化されたメッセージを検出するために、考えられるすべてのプレーン入力メッセージを暗号化する必要があります(ブルートフォース)。

于 2011-03-28T06:53:39.197 に答える
2

実際、RSAを適切に使用している場合、1000の可能性を試して「XXX」を推測することさえできません。RSAのコア操作はべき乗剰余ですが、暗号化するデータを大きな整数(nを法とする)に変換するパディングと呼ばれる最初のステップがあります。

PKCS#1 RSA標準では、2種類のパディングが指定されています。どちらにもランダムなバイトがたくさん含まれています。結果は次のようになります。同じキーで同じメッセージを2回暗号化すると、2つの異なる暗号化メッセージが得られます。重要なのは、正確には、あなたがほのめかしている状況を回避することです。暗号化されたメッセージを「推測」し、公開鍵(公開されているため、すべての攻撃者)。

したがって、あなたの質問に答えるには、1000 RSA暗号化のみを試すか、あらゆる種類の巧妙なショートカットを使用して「XXX」を見つけることができる場合 RSAは非常に間違っています。

于 2011-03-28T12:07:48.177 に答える