第8日目(相当)の記事です。この内容も2回に分けます。Constructionの話をします。SHA-2はすべて共通してMerkle-Damgård構造を用いたハッシュ関数でした。1979年に発表されて以来長らくハッシュ関数に使われてきたこの構造ですが、いくつかの問題があることが明らかになってきました:長いメッセージに対する第二原像攻撃が理論値よりも少ない計算量で可能である。2^{n-k+1}\)の計算量(理論値は\(2^{\frac{n}{2}}\))。一つの衝突が見つかれば複数の衝突をもっと少ない計算量で見つけることができる。Y)を計算できる、という性質。CTFなどでの出題例が多い最もよく知られている性質。SHA-3の選択においては、これらの弱点を回避するためMerkle-Damgård構造でないハッシュ関数がいくつも提案されました。そのうち、今回はHAIFA構造を使ったBLAKE、次回は実際に選定されたスポンジ構造を用いたKeccakを見ていきます。(m_cは次の圧縮関数にchainする値の長さ、nは圧縮関数のブロック長。して途中状態を計算します。違いとしては、「今までハッシュ化したビット数」をハッシュ化の過程で含めることと、saltを付与することです。0)\)を計算する」→「saltと初期値を使ってCを繰り返し計算する」(新たなメッセージがpaddingの後ろに付く場合には#bitsを0として計算する)→「必要な長さに切り詰める」という手順を取ります。ここで、今までハッシュしたbit数が関数に含まれることでいくつかの攻撃が無効化できます。圧縮関数の不動点を利用した攻撃が困難になります。salt)の不動点を見つけたところで、それを複数回利用することは#bitsの値が変わってしまうためできません。paddingの後ろにメッセージが新たに付く場合は#bitsを0として計算し直すため、伸長攻撃も成立しなくなります。BLAKESHA-3公募の最終候補になったBLAKE(リンクはドキュメント)は圧縮関数としてストリーム暗号のChaChaを使ったHAIFA構造のハッシュ関数です。s)\)*1として計算します。sから作った4x4ワードの初期値の行列」の列と対角線上の要素に対して適用していきます。現在では改良版であるBLAKE2のほうがよく使われるようです。Argon2は内部でBLAKE2を使っています。続けて次回がSHA-3に採用されたKeccakとスポンジ構造の予定です。(4)月別アーカイブはてなブログをはじめよう!sylph01さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。