ブロック置換
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/09/15 09:34 UTC 版)
この置換は、ワード長を w としたとき、5×5×w ビットの状態を別の状態に変換する。2の冪である任意の w=2ℓ に対して定義されているが、SHA-3においてはワード長は w=64 (ℓ= 6) が使われる。 状態は5×5×wビットのアレイで表現される。A[x][y][z] はリトルエンディアンに従うと (5y + x)×w + z 番目の入力ビットとなる。インデックス演算は、最初の2つの次元に対しては modulo 5、3つめの次元に対しては modulo w となる。 基本的なブロック置換関数は5つの副ラウンドからなる 12+2ℓ の繰り返しで構成される。それぞれの副ラウンドは単純なものである(代入形式で記述される場合、入力状態を A、出力状態を A’ とする)。 θ 5×w(w = 64のとき320)ごとの5ビットのカラムのパリティ (この場合、5ビットの排他的論理和) を計算し、さらに隣接する2つのカラムとの排他的論理和を取る。 A’[x][y][z] = A[x][y][z] ⊕ parity(A[x-1][0...4][z]) ⊕ parity(A[x+1][0...4][z−1]) ρ 25ワードごとに異なる三角数 0, 1, 3, 6, 10, 15, .... でローテートする。 A[0][0]はローテートせず、出力A’にコピーする。それ以外すべての 0≤t≤23 に対して、A’[x][y][z] = A[x][y][z−(t+1)(t+2)/2] とする。このとき ( x y ) = ( 0 1 2 3 ) t ( 1 0 ) {\displaystyle {\begin{pmatrix}x\\y\end{pmatrix}}={\begin{pmatrix}0&1\\2&3\end{pmatrix}}^{t}{\begin{pmatrix}1\\0\end{pmatrix}}} とする。 π 25ワードを決まったパターンで置換する。 A’[x][y] = A[y][2x+3y] χ a = a ⊕ (¬b & c) を用いてビット列を結合する。 A’[x][y] = A[x][y] ⊕ (¬A[x+1][y] & A[x+2][y]) SHA-3においてこの過程のみが非線形操作である。 ι ラウンド定数と状態ワードの排他的論理和を取る。 ラウンド ir において、0≤j≤ℓ のとき A[0][0][2j−1] と degree-8 LFSR sequenceの j+7ir 番目の出力との排他的論理和を取る。これにより他の副ラウンドで保たれていた対称性が破られる。
※この「ブロック置換」の解説は、「SHA-3」の解説の一部です。
「ブロック置換」を含む「SHA-3」の記事については、「SHA-3」の概要を参照ください。
- ブロック置換のページへのリンク