私はパスワードマネージャーについていくつかの調査を行いましたが、もちろんLastPassに遭遇しました。 LastPassのセキュリティに関する質問と回答はたくさんありますが、私が知る限り、この特定の実装について直接話した人はいません。これを読んでびっくりしました
LastPassはSHA-256を使用することを選択しました。これは、ブルートフォース攻撃に対する保護を強化する低速のハッシュアルゴリズムです。 LastPassは、SHA-256で実装されたPBKDF2関数を利用して、マスターパスワードを暗号化キーに変換します。 LastPassは、関数のx回のラウンドを実行して暗号化キーを作成しますログインハッシュを作成するためにPBKDF2が1回追加される前。
これは彼らのウェブサイトによれば(正しく理解されていれば)どのように機能するかです
サーバーは、セキュリティ違反のため、未知のパラメーターを持つ異なるソルトとスクリプトを使用して、さらに100.000ラウンドのPBKDF2を実行します。
データベース内またはデータベースとの比較および/または比較(ここの一部または5未満でHSMを使用)
ボールトでクライアントに返信(暗号化)
クライアントはマスターキーで復号化します
理論的にはすべてが適切で安全ですが、LastPassには過去にセキュリティ違反があったことがわかっています。マスターキーは、LastPastに送信される前に1回だけハッシュされます。攻撃者が潜在的にLastPassインフラストラクチャにアクセスし、手順5)の前に受信した値を読み取る可能性があるとすると、これはマスターキーを大幅に危険にさらしますか?
多分思うだろうが、キーに対して辞書攻撃を行うことはできないので、PBKDF2の古典的な攻撃ベクトルは当てはまらない。非常に強力なカスタムハードウェアがない限り、5000ラウンドにもかかわらず、マスターパスワードに対して辞書攻撃を行うことができます。しかし一方で、マスターキーから1ラウンド離れていると、快適さには少し近すぎるように見えます。
このような状況でマスターキーに現実的な脅威はありますか?
まず、99.99 ...%のサイトが(もちろんSSL接続を介して)クリアテキストでサーバーにパスワードを送信することに注意してください。認証中に、サーバーは実際にクリアテキストのパスワードを持っています。したがって、その1つのハッシュでもセキュリティが向上します。
一歩下がって、パスワードのハッシュまたはキーの導出に多数のラウンドを実行するのは、可能な入力のセットが比較的少ないためです(つまり、私たちが愚かなユーザーが選択したパスワード)。設定サイズが小さいため、各ハッシュの計算を(はるかに)コストをかけて行うことにより、辞書または総当たり攻撃の計算コストを増やす必要があります。これを行うには、ハッシュを何度も繰り返します。
あなたが尋ねるラストパスの状況では、ハッシュへの入力は別のハッシュの出力です。したがって、入力空間は256ビット全体に比較的よく分散されます。少なくとも、パスワードをソルトした後になります(ソルトがないと、これは 事前計算攻撃 の影響を受けやすくなります)。つまり、ブルートフォース攻撃では、256ビットスペース全体をテストして、1つのハッシュを元に戻す必要があります。これは、事前計算攻撃には大きすぎます(例: Rainbow tables の使用)。
ここで、SHA-256を元に戻すことができる攻撃が開発された場合、この状況のリスクが他の多くのリスクとともに増加します。