私は RSA 暗号文c
、公開鍵を持っています(e,n)
。(ここでc = m^e mod n
)
これで、プレーンテキストが または のm
いずれ"1234XXX"
か"12345XXX"
である必要があることもわかりました。ここ"XXX"
で、 は 3 桁の数字です。
3桁すべての数字をテストせずに、どれが正しいかを見つけることはできますか? "1234"
(最初の部分がまたはであるかどうかを知りたいだけで、が"12345"
何であるかは気にしませんXXX
。)
私は RSA 暗号文c
、公開鍵を持っています(e,n)
。(ここでc = m^e mod n
)
これで、プレーンテキストが または のm
いずれ"1234XXX"
か"12345XXX"
である必要があることもわかりました。ここ"XXX"
で、 は 3 桁の数字です。
3桁すべての数字をテストせずに、どれが正しいかを見つけることはできますか? "1234"
(最初の部分がまたはであるかどうかを知りたいだけで、が"12345"
何であるかは気にしませんXXX
。)
それはできません(これは一種の既知平文攻撃です)。暗号化されたRSAメッセージを指定すると、キーやプレーンテキストに関する情報を取得することはできません。
(同様のプレーンテキストメッセージは、同様の暗号化されたメッセージを生成しません)
したがって、公開鍵を使用している場合でも、関連する暗号化されたメッセージを検出するために、考えられるすべてのプレーン入力メッセージを暗号化する必要があります(ブルートフォース)。
実際、RSAを適切に使用している場合、1000の可能性を試して「XXX」を推測することさえできません。RSAのコア操作はべき乗剰余ですが、暗号化するデータを大きな整数(nを法とする)に変換するパディングと呼ばれる最初のステップがあります。
PKCS#1 RSA標準では、2種類のパディングが指定されています。どちらにもランダムなバイトがたくさん含まれています。結果は次のようになります。同じキーで同じメッセージを2回暗号化すると、2つの異なる暗号化メッセージが得られます。重要なのは、正確には、あなたがほのめかしている状況を回避することです。暗号化されたメッセージを「推測」し、公開鍵(公開されているため、すべての攻撃者)。
したがって、あなたの質問に答えるには、1000 RSA暗号化のみを試すか、あらゆる種類の巧妙なショートカットを使用して「XXX」を見つけることができる場合、 RSAは非常に間違っています。