SHA
Secure Hash Algorithm
SHA-1, SHA-2は FIPS PUB 180 としてまとめられている。最新は FIPS PUB 180-4? データのハッシュをとり、固有の番号的なものを生成する。
違うデータで一致しにくいことや逆変換が難しいことを利用する。
SHA-1 FIPS PUB 180-5で廃止予定 SHA-2 現在の主流
SHA-224
SHA-256
SHA-384
SHA-512
SHA3-224(M) = Keccak[448](M || 01,224)
SHA3-256(M) = Keccak[512](M || 01,256)
SHA3-384(M) = Keccak[768](M || 01,384)
SHA3-512(M) = Keccak[1024](M || 01,512)
FIPS PUB 202 6.3. RawSHAKE
RawSHAKE128(J,d) = Keccak[256](J || 11,d)
RawSHAKE256(J,d) = Keccak[512](J || 11,d)
SHAKE128(M,d) = RawSHAKE128(M || 11,d) = Keccak[256](M || 1111,d)
SHAKE256(M,d) = RawSHAKE256(M || 11,d) = Keccak[512](M || 1111,d)
cSHAKE128
cSHAKE256
TupleHashXOF
Validation System / Test Vectors
署名・検証
KMAC128
KMAC256
KMACXOF128
KMACXOF256
SHA-3 では Keccak というアルゴリズムが採用された w=64 などいくつか値を固定して利用する
可変長のSHAKE128, SHAKE256 もある
cSHAKE128, cSHAKE256 は KMAC128, KMAC256 などで使われる
SHA-3のブロック長
1600 (5x5x64) - Keccakの強度 bit
table: ブロック長
ハッシュ 計算 ブロック長bit byte 出力サイズ
SHA3-224 1600 - 448 1152 144 224
SHA3-256 1600 - 512 1088 136 256
SHA3-384 1600 - 768 832 104 384
SHA3-512 1600 - 1024 576 72 512
SHA-3系SHAKE等はpadding前の数ビットが違うことで区別できる、結果も異なるハッシュ値になる。
cSHAKE は Function名がつく。
table: XOFとか
SHA-2 -
HMAC(SHA) ○
SHA-3 ? -
RawSHAKE ?
SHAKE ◎
cSHAKE
KMAC - ○
KMACXOF ◎