文字列STRの結果は次のとおりです。
SHA256(STR)=3f7c54571faee024e3fd68603c5c95f6a4c8ef73a398840b974f3f57737a116f
の結果を取得することは可能でしょうSHA256(myOwnString+STR)
か? (「+」は連結として使用されます)
このシナリオに対する既知の攻撃はありますか?
myOwnString+STR
とはまったく異なる文字列になりSTR
ます。つまり、これら 2 つのハッシュはまったく異なるものになります。STR
ハッシュされたものを見ると、ハッシュ関数が に適用され、 に基づいた何かの結果であると推測する方法はありませんSTR
。
これがまさに、パスワードをハッシュするときにソルトを使用することを一般的に推奨する理由です。これについては、ソルト (暗号化)を参照してください。
あなたが説明しているのは、ハッシュ関数の「雪崩プロパティ」を評価することです。入力を少し変えると、出力はどのくらい変化しますか? 適切なハッシュ関数は、入力が 1 ビットだけ変化した場合でも、結果を大幅に完全に破壊できるはずです。これが、salt や nonces のようなものがうまく機能する理由です。最初の文字列に数バイトを追加すると (パスワードのように、それ自体が弱く、短く、または予測可能である可能性があります)、ハッシュの結果が元の文字列とはまったく異なるものに変更されるためです。 .
あなたの質問にもっと直接答えるには:
[1] 最大24ステップのSHA-256に対する衝突攻撃
と
ラウンド数を減らした、SHA-2 に対する 2 つの中間プレイメージ攻撃があります。最初の攻撃は、時間計算量 2253.5、空間計算量 216 で 64 ラウンドのうち 41 ラウンドの SHA-256 を攻撃し、時間 2511.5、空間計算量 23 で 80 ラウンドのうち 46 ラウンドの SHA-512 を攻撃します。 2251.7 の時間計算量と 212 の空間計算量を持つ SHA-256、および時間 2502 と空間 222 を持つ 42 ラウンドの SHA-512。
はい、弱体化していますが、まだ役に立たないというわけではありません。また、入力長拡張の処理に固有の攻撃は見つかりませんでした。