web-dev-qa-db-ja.com

RSAとPBKDF2のパスワード保存(理論的)

これがパスワードを保存する正しい方法ではないことは知っていますが、理論的な観点からこれを尋ねています。

WebサイトのパスワードがRSA非対称暗号化で暗号化され、秘密の復号化キーが破棄され、事実上一方向のトリップになったとします。今、これらのパスワード「ダイジェスト」はどういうわけか漏らされました。

RSAで暗号化されたパスワードを解読するのに、PBKDF2でハッシュされたパスワードを解読するよりも時間がかかりますか?

4
John

2つの状況は比較できません。実際、他のすべての非対称暗号化アルゴリズムと同様に、RSA暗号化はランダム化されたプロセスです。同じ公開鍵を使用して同じデータを2回暗号化すると、同じ暗号化が行われませんメッセージを2回。これは設計によるものです:非対称暗号化は公開鍵(つまり、公開、everybody)を使用するためそのキーでデータを暗号化できます。データ自体の徹底的な検索を避けたいので、この非決定的な動作が必要です。 PKCS#1 で説明されているように、RSA暗号化のコアであるモジュラ指数を適用する前に、少なくとも8つのランダムパディングバイトが入力データに追加されます。

これには2つの結果があります。

  1. これは、考えられるパスワードを列挙しても解読されない場合があります。攻撃者が正しいパスワードを「推測」しても、パスワードが暗号化されたパスワードと一致するかどうかはまだわかりません。
  2. Nobodyは、特定のパスワードが暗号化されたものと一致するかどうかを確認できません。したがって、RSA暗号化パスワードを使用してパスワードを検証することはできません(秘密鍵が失われた場合)。これは、パスワードのハッシュバージョンとは異なります。あなたのパスワードは紛失したものと同じであり、これらのRSA暗号化パスワードを使用して、特定のパスワードが正しいかどうかを判断するサーバーはありません。

したがって、RSAとPBKDF2の「クラッキング時間」を比較しても意味がありません。

もちろん、プログラマーの中には、RSAのように漠然と見えるものを想像しているかもしれませんが、ランダムパディングがないため、パスワードハッシュとして使用できます。これは確かに(自家製の)パスワードハッシュになります。上記のプログラマーがそれを過度に妨害しなかったと仮定すると(すでにかなり楽観的な仮定)、ブルートフォースが適用され、アルゴリズムで可能な限りの効率が得られます。アルゴリズムは高速です。また、場合によっては、この完全ではないRSAパスワードハッシュは無塩化され、コストを共有して複数のパスワードを同時に攻撃できるようになります。 PBKDF2にはソルトが含まれており、設定可能な速度(反復回数を含む)も含まれているため、このような攻撃への耐性が向上しています。

5
Thomas Pornin