techgithub.comクリプト野郎なので解説します。速報なのであとでもう少し書くかもしれません。結論から言うと(少なくとも現時点で観測される情報の範囲では)脆弱性じゃないので安心して。attackができました、というもの。いう構造を持つハッシュ関数で、2つの固定長の入力を受け取る関数を連続して適用することで最終的なハッシュ値を構築します。このときの最初の関数に渡るのが初期化ベクタ(IV)と最初のメッセージブロックで、以後はこの関数の結果と次のメッセージブロックが引数となって最後のメッセージブロックまで処理します。collisionで与えている初期化ベクタと同じ値の内部状態を得るような入力を与える必要があり、そのような入力を得る攻撃自体が衝突を見つけるのと同じオーダーの計算量が必要なので現時点で見えている情報では現実的な攻撃ではない。attackとは内部状態がinput_hashであるとき、あるmessage_blockを与えることで出力がinput_hashと一致するようなinput_hashとmessage_blockの組を見つけること、を指す。message_block)について、input_hashを得られるような文字列を得たあとは、その後任意の回数message_blockをくっつけることで衝突となる文字列が好きなだけ得られますよ、ということ。m、...として任意の数の衝突が得られます、といっている。最初読んだときは第二原像攻撃の定義と同じだと思っていたが第二原像攻撃の特殊なケースと見るのが正しそう。思ったがことはそう簡単ではないらしい(メモ:ここは全文書いたあとに追記した)あっ、ひどい見逃しをしてた。確かにこの手法単独だと攻撃可能性はほぼ無い。実際のハッシュを得る際にはブロックのパディングを行うのだが、そのパディングに長さが含まれるのだ。ビットの追加データを与えるのはちょっと。2017年6月29日SHA-2の擬似コードにあるように実際のハッシュを計算するときにはpre-processingの段階でパディングのあとにメッセージの長さを付与する。m(またはその後任意の回数連結したもの)は長さが異なるので、パディングの前までは一致する中間状態を作り出すことができても、パディング+メッセージ長のブロックで違った値にハッシュ化されてしまうため、これだけでは衝突にならない。「確かに与えられた性質を示す文字列がありますよ」ということを示しているだけ。実際にこういう初期化ベクタとメッセージの組を探すのはどうしてるの(こっからちょっと理解が怪しい)SATソルバを使った解法がStackExchangeで公開されていた。GitHubのREADMEを読む限りSATソルバじゃない方法で解いたらしいけどその手法は説明されておらず。(4)月別アーカイブはてなブログをはじめよう!sylph01さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。