Iris squarepanensisleg. cstef, 6.i.2025
SquarePants Sponge Hashing
A quick explanation of the sponge hashing algorithm, notably used in SHA-3
In 2007, the NIST (National Institue of Standards and Technology) announced a Cryptographic Hash Algorithm Competition, with the winner being awarded the grant to be standardized as the new SHA-3. It ended in 2012 with being announced as the winner.
The function uses a sponge construction, but what the hell is even this thing? Letβs take a look!
We have a message as our input and the final hash . We then have two βregistersβ: and , which both make up our state . These two are initialized with s in them.
The message is first padded so that it can fit in exactly parts , each of size . The process of βabsorptionβ is the following:
-
XOR (denoted ) the message-part with the register bit-by-bit
-
Scramble the whole register ( and ) altogether to produce a new state by applying The function needs to generate a pseudo-random permutation of the bits in
Example permutation via f. -
Pass on the state to the next iteration
We can now βsqueezeβ our sponge to extract the hash from it, by applying again and taking a small chunk ( bits) over and over until we have enough for our desired output length.
This whole process can be described with the following diagram:
This whole process can also be modified to fit streaming needs, by combining both absorption and squeezing steps at each iteration.