以下の脆弱性に関する詳細。
![](https://habrastorage.org/webt/oo/gf/qr/oogfqr1aa1ukgnk2_njfcefhx3k.jpeg)
/写真Z Jason CC
問題の本質
Palantはブログで、 sftkdb_passwordToKey()関数の操作について説明しています 。この関数は 、 saltとマスターパスワード自体を含む文字列をハッシュすることにより、ユーザーのパスワードを暗号化キーに変換します。 ハッシュアルゴリズムとして、SHA-1が使用されます。
問題は、FirefoxとThunderbirdでは、関数が1回しか使用されないことですが、業界で一般的に受け入れられているプラクティスには、少なくとも1万回の反復が含まれます。 たとえば、LastPassは100kを使用します。
最新のGPUはSHA-1ハッシュを非常によく計算します。 たとえば 、1枚のNvidia GTX 1080グラフィックカードは、1秒あたり85億のSHA-1ハッシュを計算します。 Microsoftの調査によると、一般ユーザーのパスワードの複雑さは約40ビットです。 これを選択するには、約2 39回の試行が必要です。つまり、中程度の複雑さのパスワードの選択には約1分かかります。
最初のバグ報告ではない
Justin Dolskeは、わずか9年前にMozillaにこの脆弱性について報告し、対応するバグレポートを発行しました。 ジャスティンは、ハッシュ関数のそのような少数の反復がブラウザユーザーのセキュリティに対する脅威をもたらすという開発者の注意を引きました。 しかし、何らかの理由で、問題は未解決のままでした。
皮肉なことに、2016年10月にMozilla がこのハッシュアルゴリズムを使用した証明書を使用したサイトのサポートを停止した後でも、SHA-1はブラウザの一部でした。
主な理由は衝突の可能性でした-ハッシュ後の2つの異なる情報ブロックが同じ外観を持つ現象です。 これにより、実際の証明書を製造された証明書に置き換えることができました。 専門家は2012年に「衝突攻撃」 の可能性を発表し、 2021年までに研究所で使用される通常のコンピューティングシステムによる実装に十分なリソースがあると予測しました。
そして、2017年の初めに、Google は最初の衝突攻撃の成功を発表しました 。 実験の結果、Googleチームは2つの異なるPDFドキュメントに対して2つの同一のハッシュを取得することができました。 攻撃を実行するために、エンジニアはまずPDFプレフィックスを作成し、次にGoogleの膨大な技術リソースを使用して衝突を計算しました。 合計で、同社はSHA-1の計算を9兆個作成しました。
衝突攻撃の複製の成功に関連して、Googleは情報セキュリティの専門家がより安全なハッシュアルゴリズムSHA-256およびSHA-3をできるだけ早く使用し始めることを推奨しました。
![](https://habrastorage.org/webt/xj/06/wm/xj06wmkbh2hhey7e6j2r1ywzd0e.jpeg)
/写真Z Jason CC
潜在的なソリューション
Mozillaフォーラムへの応答は、9年前にVladimir PalantがJustin Dolskeのバグレポートを「復活」させた後にのみ行われました。 これに対して、開発者は、パスワードマネージャーの新しいコンポーネントであるLockboxのリリースにより、この脆弱性が修正されることを指摘しました。 このユーティリティは、パスワードマネージャーのFirefoxアカウントに応じて、個別の拡張機能として使用できます。
しかし、パラント自身は、複数のメモリパスを使用するArgon2ハッシュアルゴリズムの使用を開始することを開発者に提案しました。 Argon2は2015年にパスワードハッシュコンペティションの勝者として宣言され、その参加者は新しいパスワードハッシュ関数を開発しました。
Argon2は、最初にBlake2bハッシュ関数を使用してパスワードをハッシュします。 ハッシュ結果はメモリブロックに書き込まれ、圧縮関数Gを使用して変換され(入力として2つの8192ビットブロックを受け取り、1024ビットブロックを生成します)、その結果、キーが生成されます。
この機能はx86アーキテクチャ向けに最適化されており、IntelおよびAMDプロセッサのキャッシュおよびメモリ構成の機能を利用しています。 同時に、Argon2では、反復回数、結果のサイズ、秘密鍵などを設定できます。
企業のIaaSに関する最初のブログの情報セキュリティのトピックに関するPS資料: