fbpx
Wikipedia

SHA-3

SHA-3 (Secure Hash Algorithm 3) is the latest member of the Secure Hash Algorithm family of standards, released by NIST on August 5, 2015.[4][5][6] Although part of the same series of standards, SHA-3 is internally different from the MD5-like structure of SHA-1 and SHA-2.

Secure Hash Algorithms
Concepts
hash functions · SHA · DSA
Main standards
SHA-0 · SHA-1 · SHA-2 · SHA-3
SHA-3
(Keccak)
General
DesignersGuido Bertoni, Joan Daemen, Michaël Peeters, and Gilles van Assche.
First published2016; 7 years ago (2016)
Series(SHA-0), SHA-1, SHA-2, SHA-3
CertificationFIPS PUB 202
Detail
Digest sizesarbitrary
Structuresponge construction
Speed12.6 cpb on a typical x86-64-based machine for Keccak-f[1600] plus XORing 1024 bits,[1] which roughly corresponds to SHA2-256.
Best public cryptanalysis
Preimage attack on Keccak-512 reduced to 8 rounds, requiring 2511.5 time and 2508 memory.[2] Zero-sum distinguishers exist for the full 24-round Keccak-f[1600], though they cannot be used to attack the hash function itself[3]

SHA-3 is a subset of the broader cryptographic primitive family Keccak (/ˈkɛæk/ or /ˈkɛɑːk/),[7][8] designed by Guido Bertoni, Joan Daemen, Michaël Peeters, and Gilles Van Assche, building upon RadioGatún. Keccak's authors have proposed additional uses for the function, not (yet) standardized by NIST, including a stream cipher, an authenticated encryption system, a "tree" hashing scheme for faster hashing on certain architectures,[9][10] and AEAD ciphers Keyak and Ketje.[11][12]

Keccak is based on a novel approach called sponge construction.[13] Sponge construction is based on a wide random function or random permutation, and allows inputting ("absorbing" in sponge terminology) any amount of data, and outputting ("squeezing") any amount of data, while acting as a pseudorandom function with regard to all previous inputs. This leads to great flexibility.

NIST does not currently plan to withdraw SHA-2 or remove it from the revised Secure Hash Standard.[needs update?] The purpose of SHA-3 is that it can be directly substituted for SHA-2 in current applications if necessary, and to significantly improve the robustness of NIST's overall hash algorithm toolkit.[14]

For small message sizes, the creators of the Keccak algorithms and the SHA-3 functions suggest using the faster function KangarooTwelve with adjusted parameters and a new tree hashing mode without extra overhead.

History

The Keccak algorithm is the work of Guido Bertoni, Joan Daemen (who also co-designed the Rijndael cipher with Vincent Rijmen), Michaël Peeters, and Gilles Van Assche. It is based on earlier hash function designs PANAMA and RadioGatún. PANAMA was designed by Daemen and Craig Clapp in 1998. RadioGatún, a successor of PANAMA, was designed by Daemen, Peeters, and Van Assche, and was presented at the NIST Hash Workshop in 2006.[15] The reference implementation source code was dedicated to public domain via CC0 waiver.[16]

In 2006, NIST started to organize the NIST hash function competition to create a new hash standard, SHA-3. SHA-3 is not meant to replace SHA-2, as no significant attack on SHA-2 has been demonstrated. Because of the successful attacks on MD5, SHA-0 and SHA-1,[17][18] NIST perceived a need for an alternative, dissimilar cryptographic hash, which became SHA-3.

After a setup period, admissions were to be submitted by the end of 2008. Keccak was accepted as one of the 51 candidates. In July 2009, 14 algorithms were selected for the second round. Keccak advanced to the last round in December 2010.[19]

During the competition, entrants were permitted to "tweak" their algorithms to address issues that were discovered. Changes that have been made to Keccak are:[20][21]

  • The number of rounds was increased from 12 + ℓ to 12 + 2ℓ to be more conservative about security.
  • The message padding was changed from a more complex scheme to the simple 10*1 pattern described below.
  • The rate r was increased to the security limit, rather than rounding down to the nearest power of 2.

On October 2, 2012, Keccak was selected as the winner of the competition.[7]

In 2014, the NIST published a draft FIPS 202 "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions".[22] FIPS 202 was approved on August 5, 2015.[23]

On August 5, 2015, NIST announced that SHA-3 had become a hashing standard.[24]

Weakening controversy

In early 2013 NIST announced they would select different values for the "capacity", the overall strength vs. speed parameter, for the SHA-3 standard, compared to the submission.[25][26] The changes caused some turmoil.

The hash function competition called for hash functions at least as secure as the SHA-2 instances. It means that a d-bit output should have d/2-bit resistance to collision attacks and d-bit resistance to preimage attacks, the maximum achievable for d bits of output. Keccak's security proof allows an adjustable level of security based on a "capacity" c, providing c/2-bit resistance to both collision and preimage attacks. To meet the original competition rules, Keccak's authors proposed c = 2d. The announced change was to accept the same d/2-bit security for all forms of attack and standardize c = d. This would have sped up Keccak by allowing an additional d bits of input to be hashed each iteration. However, the hash functions would not have been drop-in replacements with the same preimage resistance as SHA-2 any more; it would have been cut in half, making it vulnerable to advances in quantum computing, which effectively would cut it in half once more.[27]

In September 2013, Daniel J. Bernstein suggested on the NIST hash-forum mailing list[28] to strengthen the security to the 576-bit capacity that was originally proposed as the default Keccak, in addition to and not included in the SHA-3 specifications.[29] This would have provided at least a SHA3-224 and SHA3-256 with the same preimage resistance as their SHA-2 predecessors, but SHA3-384 and SHA3-512 would have had significantly less preimage resistance than their SHA-2 predecessors. In late September, the Keccak team responded by stating that they had proposed 128-bit security by setting c = 256 as an option already in their SHA-3 proposal.[30] Although the reduced capacity was justifiable in their opinion, in the light of the negative response, they proposed raising the capacity to c = 512 bits for all instances. This would be as much as any previous standard up to the 256-bit security level, while providing reasonable efficiency,[31] but not the 384-/512-bit preimage resistance offered by SHA2-384 and SHA2-512. The authors stated that "claiming or relying on security strength levels above 256 bits is meaningless".

In early October 2013, Bruce Schneier criticized NIST's decision on the basis of its possible detrimental effects on the acceptance of the algorithm, saying:

There is too much mistrust in the air. NIST risks publishing an algorithm that no one will trust and no one (except those forced) will use.[32]

He later retracted his earlier statement, saying:

I misspoke when I wrote that NIST made "internal changes" to the algorithm. That was sloppy of me. The Keccak permutation remains unchanged. What NIST proposed was reducing the hash function's capacity in the name of performance. One of Keccak's nice features is that it's highly tunable.[32]

Paul Crowley, a cryptographer and senior developer at an independent software development company, expressed his support of the decision, saying that Keccak is supposed to be tunable and there is no reason for different security levels within one primitive. He also added:

Yes, it's a bit of a shame for the competition that they demanded a certain security level for entrants, then went to publish a standard with a different one. But there's nothing that can be done to fix that now, except re-opening the competition. Demanding that they stick to their mistake doesn't improve things for anyone.[33]

There was some confusion that internal changes may have been made to Keccak, which were cleared up by the original team, stating that NIST's proposal for SHA-3 is a subset of the Keccak family, for which one can generate test vectors using their reference code submitted to the contest, and that this proposal was the result of a series of discussions between them and the NIST hash team.[34]

In response to the controversy, in November 2013 John Kelsey of NIST proposed to go back to the original c = 2d proposal for all SHA-2 drop-in replacement instances.[35] The reversion was confirmed in subsequent drafts[36] and in the final release.[4]

Design

 
The sponge construction for hash functions. Pi are input, Zi are hashed output. The unused "capacity" c should be twice the desired resistance to collision or preimage attacks.

SHA-3 uses the sponge construction,[13] in which data is "absorbed" into the sponge, then the result is "squeezed" out. In the absorbing phase, message blocks are XORed into a subset of the state, which is then transformed as a whole using a permutation function  . In the "squeeze" phase, output blocks are read from the same subset of the state, alternated with the state transformation function  . The size of the part of the state that is written and read is called the "rate" (denoted  ), and the size of the part that is untouched by input/output is called the "capacity" (denoted  ). The capacity determines the security of the scheme. The maximum security level is half the capacity.

Given an input bit string  , a padding function  , a permutation function   that operates on bit blocks of width  , a rate   and an output length  , we have capacity   and the sponge construction  , yielding a bit string   of length  , works as follows:[5]: 18 

  • pad the input N using the pad function, yielding a padded bit string P with a length divisible by   (such that   is an integer)
  • break P into n consecutive r-bit pieces P0, ..., Pn−1
  • initialize the state S to a string of b zero bits
  • absorb the input into the state: for each block Pi:
    • extend Pi at the end by a string of c zero bits, yielding one of length b
    • XOR that with S
    • apply the block permutation f to the result, yielding a new state S
  • initialize Z to be the empty string
  • while the length of Z is less than d:
    • append the first r bits of S to Z
    • if Z is still less than d bits long, apply f to S, yielding a new state S
  • truncate Z to d bits

The fact that the internal state S contains c additional bits of information in addition to what is output to Z prevents the length extension attacks that SHA-2, SHA-1, MD5 and other hashes based on the Merkle–Damgård construction are susceptible to.

In SHA-3, the state S consists of a 5 × 5 array of w-bit words (with w = 64), b = 5 × 5 × w = 5 × 5 × 64 = 1600 bits total. Keccak is also defined for smaller power-of-2 word sizes w down to 1 bit (total state of 25 bits). Small state sizes can be used to test cryptanalytic attacks, and intermediate state sizes (from w = 8, 200 bits, to w = 32, 800 bits) can be used in practical, lightweight applications.[11][12]

For SHA3-224, SHA3-256, SHA3-384, and SHA3-512 instances, r is greater than d, so there is no need for additional block permutations in the squeezing phase; the leading d bits of the state are the desired hash. However, SHAKE128 and SHAKE256 allow an arbitrary output length, which is useful in applications such as optimal asymmetric encryption padding.

Padding

To ensure the message can be evenly divided into r-bit blocks, padding is required. SHA-3 uses the pattern 10*1 in its padding function: a 1 bit, followed by zero or more 0 bits (maximum r − 1) and a final 1 bit.

The maximum of r − 1 zero bits occurs when the last message block is r − 1 bits long. Then another block is added after the initial 1 bit, containing r − 1 zero bits before the final 1 bit.

The two 1 bits will be added even if the length of the message is already divisible by r.[5]: 5.1  In this case, another block is added to the message, containing a 1 bit, followed by a block of r − 2 zero bits and another 1 bit. This is necessary so that a message with length divisible by r ending in something that looks like padding does not produce the same hash as the message with those bits removed.

The initial 1 bit is required so messages differing only in a few additional 0 bits at the end do not produce the same hash.

The position of the final 1 bit indicates which rate r was used (multi-rate padding), which is required for the security proof to work for different hash variants. Without it, different hash variants of the same short message would be the same up to truncation.

The block permutation

The block transformation f, which is Keccak-f[1600] for SHA-3, is a permutation that uses XOR, AND and NOT operations, and is designed for easy implementation in both software and hardware.

It is defined for any power-of-two word size, w = 2 bits. The main SHA-3 submission uses 64-bit words, = 6.

The state can be considered to be a 5 × 5 × w array of bits. Let a[i][ j][k] be bit (5i + j) × w + k of the input, using a little-endian bit numbering convention and row-major indexing. I.e. i selects the row, j the column, and k the bit.

Index arithmetic is performed modulo 5 for the first two dimensions and modulo w for the third.

The basic block permutation function consists of 12 + 2 rounds of five steps:

θ (theta)
Compute the parity of each of the 5w (320, when w = 64) 5-bit columns, and exclusive-or that into two nearby columns in a regular pattern. To be precise, a[i][ j][k] ← a[i][ j][k] ⊕ parity(a[0...4][j-1][k]) ⊕ parity(a[0...4][j+1][k−1])
ρ (rho)
Bitwise rotate each of the 25 words by a different triangular number 0, 1, 3, 6, 10, 15, .... To be precise, a[0][0] is not rotated, and for all 0 ≤ t < 24, a[i][ j][k] ← a[i][ j][k−(t+1)(t+2)/2], where  .
π (pi)
Permute the 25 words in a fixed pattern. a[3i+2j][i] ← a[ i][j].
χ (chi)
Bitwise combine along rows, using xx ⊕ (¬y & z). To be precise, a[i][ j][k] ← a[i][ j][k] ⊕ (¬a[i][ j+1][k] & a[i][ j+2][k]). This is the only non-linear operation in SHA-3.
ι (iota)
Exclusive-or a round constant into one word of the state. To be precise, in round n, for 0 ≤ m, a[0][0][2m−1] is XORed with bit m + 7n of a degree-8 LFSR sequence. This breaks the symmetry that is preserved by the other steps.

Speed

The speed of SHA-3 hashing of long messages is dominated by the computation of f = Keccak-f[1600] and XORing S with the extended Pi, an operation on b = 1600 bits. However, since the last c bits of the extended Pi are 0 anyway, and XOR with 0 is a NOP, it is sufficient to perform XOR operations only for r bits (r = 1600 − 2 × 224 = 1152 bits for SHA3-224, 1088 bits for SHA3-256, 832 bits for SHA3-384 and 576 bits for SHA3-512). The lower r is (and, conversely, the higher c = br = 1600 − r), the less efficient but more secure the hashing becomes since fewer bits of the message can be XORed into the state (a quick operation) before each application of the computationally expensive f. The authors report the following speeds for software implementations of Keccak-f[1600] plus XORing 1024 bits,[1] which roughly corresponds to SHA3-256:

  • 57.4 cpb on IA-32, Intel Pentium 3[37]
  • 41 cpb on IA-32+MMX, Intel Pentium 3
  • 20 cpb on IA-32+SSE, Intel Core 2 Duo or AMD Athlon 64
  • 12.6 cpb on a typical x86-64-based machine
  • 6–7 cpb on IA-64[38]

For the exact SHA3-256 on x86-64, Bernstein measures 11.7–12.25 cpb depending on the CPU.[39]: 7  SHA-3 has been criticized for being slow on instruction set architectures (CPUs) which do not have instructions meant specially for computing Keccak functions faster – SHA2-512 is more than twice as fast as SHA3-512, and SHA-1 is more than three times as fast on an Intel Skylake processor clocked at 3.2 GHz.[40] The authors have reacted to this criticism by suggesting to use SHAKE128 and SHAKE256 instead of SHA3-256 and SHA3-512, at the expense of cutting the preimage resistance in half (but while keeping the collision resistance). With this, performance is on par with SHA2-256 and SHA2-512.

However, in hardware implementations, SHA-3 is notably faster than all other finalists,[41] and also faster than SHA-2 and SHA-1.[40]

As of 2018, ARM's ARMv8[42] and IBM's s390x architectures include special instructions which enable Keccak algorithms to execute faster.

Instances

The NIST standard defines the following instances, for message M and output length d:[5]: 20, 23 

Instance Output
size d
Rate r
= block size
Capacity c Definition Security strengths in bits
Collision Preimage 2nd preimage
SHA3-224(M) 224 1152 448 Keccak[448](M || 01, 224) 112 224 224
SHA3-256(M) 256 1088 512 Keccak[512](M || 01, 256) 128 256 256
SHA3-384(M) 384 832 768 Keccak[768](M || 01, 384) 192 384 384
SHA3-512(M) 512 576 1024 Keccak[1024](M || 01, 512) 256 512 512
SHAKE128(M, d) d 1344 256 Keccak[256](M || 1111, d) min(d/2,128) ≥min(d,128) min(d,128)
SHAKE256(M, d) d 1088 512 Keccak[512](M || 1111, d) min(d/2,256) ≥min(d,256) min(d,256)

With the following definitions

  • Keccak[c](N, d) = sponge[Keccak-f[1600], pad10*1, r](N, d)[5]: 20 
  • Keccak-f[1600] = Keccak-p[1600, 24][5]: 17 
  • c is the capacity
  • r is the rate = 1600 − c
  • N is the input bit string

SHA-3 instances are drop-in replacements for SHA-2, intended to have identical security properties.

SHAKE will generate as many bits from its sponge as requested, called XOFs (Extendable Output Functions). For example, SHAKE128(M, 256) can be used as a hash function with a 256 character bitstream with 128-bit security strength. Arbitrarily large lengths can be used as pseudo-random number generators. Alternately, SHAKE256(M, 128) can be used as a hash function with a 128-bit length and 128-bit resistance.[5]

All instances append some bits to the message, the rightmost of which represent the domain separation suffix. The purpose of this is to ensure that it is not possible to construct messages that produce the same hash output for different applications of the Keccak hash function. The following domain separation suffixes exist:[5][43]

Suffix Meaning
...0 reserved for future use
01 SHA-3
...11 RawSHAKE
1111 SHAKE

Additional instances

In December 2016 NIST published a new document, NIST SP.800-185,[44] describing additional SHA-3 derived functions:

Instance Description
cSHAKE128(X, L, N, S) A version of SHAKE supporting explicit domain separation via customization parameters.
cSHAKE256(X, L, N, S)
KMAC128(K, X, L, S) A keyed hash function based on Keccak. Can also be used without a key as a regular hash function.
KMAC256(K, X, L, S)
KMACXOF128(K, X, L, S)
KMACXOF256(K, X, L, S)
TupleHash128(X, L, S) A function for hashing tuples of strings. The output of this function depends on both the contents and the sequence of input strings.
TupleHash256(X, L, S)
TupleHashXOF128(X, L, S)
TupleHashXOF256(X, L, S)
ParallelHash128(X, B, L, S) A function designed to exploit parallelism in modern processors for faster hashing. Unlike KangarooTwelve, does not use reduced-round Keccak.
ParallelHash256(X, B, L, S)
ParallelHashXOF128(X, B, L, S)
ParallelHashXOF256(X, B, L, S)

• X is the main input bit string. It may be of any length, including zero.

• L is an integer representing the requested output length in bits.

• N is a function-name bit string, used by NIST to define functions based on cSHAKE. When no function other than cSHAKE is desired, N is set to the empty string.

• S is a customization bit string. The user selects this string to define a variant of the function. When no customization is desired, S is set to the empty string.

• K is a key bit string of any length, including zero.

• B is the block size in bytes for parallel hashing. It may be any integer such that 0 < B < 22040.

Later developments

KangarooTwelve

KangarooTwelve
General
DesignersGuido Bertoni, Joan Daemen, Michaël Peeters, Gilles Van Assche, Ronny Van Keer, Benoît Viguier
First publishedAugust 10, 2016; 6 years ago (2016-08-10)
Derived fromKeccak
Detail
Digest sizesarbitrary
Structuresponge construction and tree hashing with kangaroo hopping
Rounds12
Speed0.51 cpb on SkylakeX with AVX-512[45]
Best public cryptanalysis
Same as Keccak's

In 2016 the same team that made the SHA-3 functions and the Keccak algorithm introduced faster reduced-rounds (reduced to 12 and 14 rounds, from the 24 in SHA-3) alternatives which can exploit the availability of parallel execution because of using tree hashing: KangarooTwelve and MarsupilamiFourteen.[46]

These functions differ from ParallelHash, the FIPS standardized Keccak-based parallelizable hash function, with regard to the parallelism, in that they are faster than ParallelHash for small message sizes.

The reduced number of rounds is justified by the huge cryptanalytic effort focused on Keccak which did not produce practical attacks on anything close to twelve-round Keccak. These higher-speed algorithms are not part of SHA-3 (as they are a later development), and thus are not FIPS compliant; but because they use the same Keccak permutation they are secure for as long as there are no attacks on SHA-3 reduced to 12 rounds.[46]

KangarooTwelve is a higher-performance reduced-round (from 24 to 12 rounds) version of Keccak which claims to have 128 bits of security[47] while having performance as high as 0.55 cycles per byte on a Skylake CPU.[48] This algorithm is an IETF RFC draft.[49]

MarsupilamiFourteen, a slight variation on KangarooTwelve, uses 14 rounds of the Keccak permutation and claims 256 bits of security. Note that 256-bit security is not more useful in practice than 128-bit security, but may be required by some standards.[47] 128 bits are already sufficient to defeat brute-force attacks on current hardware, so having 256-bit security does not add practical value, unless the user is worried about significant advancements in the speed of classical computers. For resistance against quantum computers, see below.

KangarooTwelve and MarsupilamiFourteen are Extendable-Output Functions, similar to SHAKE, therefore they generate closely related output for a common message with different output length (the longer output is an extension of the shorter output). Such property is not exhibited by hash functions such as SHA-3 or ParallelHash (except of XOF variants).[5]

The Farfalle construction

In 2016, the Keccak team released a different construction called Farfalle construction, and Kravatte, an instance of Farfalle using the Keccak-p permutation,[50] as well as two authenticated encryption algorithms Kravatte-SANE and Kravatte-SANSE[51]

Sakura tree hashing

RawSHAKE is the basis for the Sakura coding for tree hashing, which has not been standardized yet. Sakura uses a suffix of 1111 for single nodes, equivalent to SHAKE, and other generated suffixes depending on the shape of the tree.[43]: 16 

Security against quantum attacks

There is a general result (Grover's algorithm) that quantum computers can perform a structured preimage attack in  , while a classical brute-force attack needs 2d. A structured preimage attack implies a second preimage attack[27] and thus a collision attack. A quantum computer can also perform a birthday attack, thus break collision resistance, in  [52] (although that is disputed[53]). Noting that the maximum strength can be  , this gives the following upper[54] bounds on the quantum security of SHA-3:

Instance Security strengths in bits
Collision
(Brassard et al.)
Collision
(Bernstein)
Preimage 2nd preimage
SHA3-224(M) 7423 112 112 112
SHA3-256(M) 8513 128 128 128
SHA3-384(M) 128 192 192 192
SHA3-512(M) 17023 256 256 256
SHAKE128(M, d) min(d/3,128) min(d/2,128) ≥min(d/2,128) min(d/2,128)
SHAKE256(M, d) min(d/3,256) min(d/2,256) ≥min(d/2,256) min(d/2,256)

It has been shown that the Merkle–Damgård construction, as used by SHA-2, is collapsing and, by consequence, quantum collision-resistant,[55] but for the sponge construction used by SHA-3, the authors provide proofs only for the case when the block function f is not efficiently invertible; Keccak-f[1600], however, is efficiently invertible, and so their proof does not apply.[56]

Examples of SHA-3 variants

The following hash values are from NIST.gov:[57]

SHA3-224("") 6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7 SHA3-256("") a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a SHA3-384("") 0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004 SHA3-512("") a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26 SHAKE128("", 256) 7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26 SHAKE256("", 512) 46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be 

Changing a single bit causes each bit in the output to change with 50% probability, demonstrating an avalanche effect:

SHAKE128("The quick brown fox jumps over the lazy dog", 256) f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e SHAKE128("The quick brown fox jumps over the lazy dof", 256) 853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c 

Comparison of SHA functions

In the table below, internal state means the number of bits that are carried over to the next block.

Comparison of SHA functions
Algorithm and variant Output size
(bits)
Internal
state size
(bits)
Block size
(bits)
Rounds Operations Security against collision attacks
(bits)
Security against length extension attacks
(bits)
Performance on Skylake (median cpb)[58] First published
Long messages 8 bytes
MD5 (as reference) 128 128
(4 × 32)
512 64 And, Xor, Or, Rot, Add (mod 232) ≤ 18
(collisions found)[59]
0 4.99 55.00 1992
SHA-0 160 160
(5 × 32)
512 80 And, Xor, Or, Rot, Add (mod 232) < 34
(collisions found)
0 ≈ SHA-1 ≈ SHA-1 1993
SHA-1 < 63
(collisions found)[60]
3.47 52.00 1995
SHA-2 SHA-224
SHA-256
224
256
256
(8 × 32)
512 64 And, Xor, Or,
Rot, Shr, Add (mod 232)
112
128
32
0
7.62
7.63
84.50
85.25
2004
2001
SHA-384 384 512
(8 × 64)
1024 80 And, Xor, Or,
Rot, Shr, Add (mod 264)
192 128 (≤ 384) 5.12 135.75 2001
SHA-512 512 256 0[61] 5.06 135.50 2001
SHA-512/224
SHA-512/256
224
256
112
128
288
256
≈ SHA-384 ≈ SHA-384 2012
SHA-3 SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
1600
(5 × 5 × 64)
1152
1088
832
576
24[62] And, Xor, Rot, Not 112
128
192
256
448
512
768
1024
8.12
8.59
11.06
15.88
154.25
155.50
164.00
164.00
2015
SHAKE128
SHAKE256
d (arbitrary)
d (arbitrary)
1344
1088
min(d/2, 128)
min(d/2, 256)
256
512
7.08
8.59
155.25
155.50

Optimized implementation using AVX-512VL (i.e. from OpenSSL, running on Skylake-X CPUs) of SHA3-256 do achieve about 6.4 cycles per byte for large messages,[63] and about 7.8 cycles per byte when using AVX2 on Skylake CPUs.[64] Performance on other x86, Power and ARM CPUs depending on instructions used, and exact CPU model varies from about 8 to 15 cycles per byte,[65][66][67] with some older x86 CPUs up to 25–40 cycles per byte.[68]

Implementations

Below is a list of cryptography libraries that support SHA-3:

Hardware acceleration

Apple A13 ARMv8 six-core SoC CPU cores have support[69] for accelerating SHA-3 (and SHA-512) using specialized instructions (EOR3, RAX1, XAR, BCAX) from ARMv8.2-SHA crypto extension set.[70]

Some software libraries use vectorization facilities of CPUs to accelerate usage of SHA-3. For example, Crypto++ can use SSE2 on x86 for accelerating SHA3,[71] and OpenSSL can use MMX, AVX-512 or AVX-512VL on many x86 systems too.[72] Also POWER8 CPUs implement 2x64-bit vector rotate, defined in PowerISA 2.07, which can accelerate SHA-3 implementations somehow.[73] Most implementations for ARM do not use Neon vector instructions as scalar code is faster. ARM implementations can however be accelerated using SVE and SVE2 vector instructions; these are available in the Fujitsu A64FX CPU for instance.[74]

The IBM z/Architecture supports SHA-3 since 2017 as part of the Message-Security-Assist Extension 6.[75] The processors support a complete implementation of the entire SHA-3 and SHAKE algorithms via the KIMD and KLMD instructions using a hardware assist engine built into each core.

Usage in protocols

See also

  • Ethash – another Keccak-based hash

References

  1. ^ a b Keccak implementation overview Version 3.2, section 3.1
  2. ^ Morawiecki, Paweł; Pieprzyk, Josef; Srebrny, Marian (2013). Moriai, S (ed.). "Rotational Cryptanalysis of Round-Reduced Keccak" (PDF). Fast Software Encryption Lecture Notes in Computer Science. Lecture Notes in Computer Science. 8424: 241–262. doi:10.1007/978-3-662-43933-3_13. ISBN 978-3-662-43932-6. (PDF) from the original on January 8, 2013. Retrieved February 8, 2019.
  3. ^ Bertoni, Guido; Daemen, Joan; Peeters, Michaël; van Assche, Giles (January 14, 2011). "The Keccak SHA-3 submission" (PDF). keccak.noekeon.org. (PDF) from the original on August 19, 2011. Retrieved February 9, 2014.
  4. ^ a b "Hash Functions". NIST. June 22, 2020. Retrieved February 17, 2021.
  5. ^ a b c d e f g h i NIST (August 2015). "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions" (PDF). doi:10.6028/NIST.FIPS.202. S2CID 64734386. Retrieved February 29, 2020. {{cite journal}}: Cite journal requires |journal= (help)
  6. ^ Dworkin, Morris J. (August 4, 2015). "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions". Federal Inf. Process. STDS. (NIST FIPS).
  7. ^ a b "NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition". NIST. October 2, 2012. Retrieved October 2, 2012.
  8. ^ Cruz, José R.C. (May 7, 2013). "Keccak: The New SHA-3 Encryption Standard". Dr. Dobbs.
  9. ^ Guido Bertoni; Joan Daemen; Michaël Peeters; Gilles Van Assche. "The Keccak sponge function family: Specifications summary". Retrieved May 11, 2011.
  10. ^ Chang, Shu-jen; Perlner, Ray; Burr, William E.; Sonmez Turan, Meltem; Kelsey, John M.; Paul, Souradyuti; Bassham, Lawrence E. (November 2012). "Third-Round Report of the SHA-3 Cryptographic Hash Algorithm Competition" (PDF). doi:10.6028/NIST.IR.7896. Retrieved February 29, 2020. {{cite journal}}: Cite journal requires |journal= (help) Sections 5.1.2.1 (mentioning "tree mode"), 6.2 ("other features", mentioning authenticated encryption), and 7 (saying "extras" may be standardized in the future).
  11. ^ a b Bertoni, Guido; Daemen, Joan; Peeters, Michaël; Van Assche, Gilles; Van Keer, Ronny (March 13, 2014). "CAESAR submission: Ketje v1" (PDF). Retrieved February 29, 2020.
  12. ^ a b Bertoni, Guido; Daemen, Joan; Peeters, Michaël; Van Assche, Gilles; Van Keer, Ronny (March 13, 2014). "CAESAR submission: Keyak v1" (PDF). Retrieved February 29, 2020.
  13. ^ a b Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche. "Sponge Functions". Ecrypt Hash Workshop 2007.{{cite web}}: CS1 maint: uses authors parameter (link)
  14. ^ "Announcing Request for Candidate Algorithm Nominations for a New Cryptographic Hash Algorithm (SHA-3) Family [U.S. Federal Register Vol. 72 No. 212)]" (PDF). November 2, 2007. (PDF) from the original on March 31, 2011. Retrieved July 18, 2017.
  15. ^ Bertoni, Guido; Daemen, Joan; Peeters, Michaël; Van Assche, Gilles. "The road from Panama to Keccak via RadioGatún" (PDF). Retrieved February 29, 2020.
  16. ^ KeccakReferenceAndOptimized-3.2.zip mainReference.c "The Keccak sponge function, designed by Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche. For more information, feedback or questions, please refer to our website: http://keccak.noekeon.org/Implementation[permanent dead link] by the designers, hereby denoted as "the implementer". To the extent possible under law, the implementer has waived all copyright and related or neighboring rights to the source code in this file. https://creativecommons.org/publicdomain/zero/1.0/"
  17. ^ Stevens, Marc; Bursztein, Elie; Karpman, Pierre; Albertini, Ange; Markov, Yarik. "The first collision for full SHA-1" (PDF). Retrieved February 23, 2017.
  18. ^ Leurent, Gaëtan; Peyrin, Thomas. "SHA-1 is a Shambles". Retrieved January 8, 2020.
  19. ^ "NIST Computer Security Division – The SHA-3 Cryptographic Hash Algorithm Competition, November 2007 – October 2012". January 4, 2017.
  20. ^ "Keccak parameter changes for round 2". Keccak Team. September 22, 2009. from the original on November 13, 2017. Retrieved February 29, 2020.
  21. ^ "Simplifying Keccak's padding rule for round 3". Keccak Team. January 17, 2011. Retrieved February 29, 2020.
  22. ^ "SHA-3 standardization". NIST. Retrieved April 16, 2015.
  23. ^ National Institute of Standards and Technology (August 5, 2015). "Federal Information Processing Standards: Permutation-Based Hash and Extendable-Output Functions, etc". Retrieved August 5, 2015.
  24. ^ "Announcing Approval of Federal Information Processing Standard (FIPS) 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, and Revision of the Applicability Clause of FIPS 180-4, Secure Hash Standard". August 5, 2015.
  25. ^ John Kelsey. "SHA3, Where We've Been, Where We're Going" (PDF). RSA Conference 2013.
  26. ^ John Kelsey. "SHA3, Past, Present, and Future". CHES 2013.
  27. ^ a b "Abstract" (PDF). cr.yp.to.
  28. ^ "NIST hash forum mailing list". January 4, 2017.
  29. ^ "The Keccak SHA-3 submission" (PDF). January 14, 2011. Retrieved February 8, 2014.
  30. ^ "On 128-bit security".
  31. ^ "A concrete proposal". October 2, 2013.
  32. ^ a b "Schneier on Security: Will Keccak = SHA-3?".
  33. ^ "LShift: Why I support the US Government making a cryptography standard weaker".
  34. ^ "Yes, this is Keccak!".
  35. ^ "Moving Forward with SHA-3" (PDF).
  36. ^ NIST Computer Security Division (CSD). "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions" (PDF). NIST.
  37. ^ "about 41 cycles/byte [...] represents a 40% speedup compared to an implementation using only 32-bit instructions". By formula   we obtain  
  38. ^ Bertoni, Guido (May 29, 2012). Keccak implementation overview (PDF). p. 25. Retrieved November 3, 2018.
  39. ^ Bernstein, Daniel J. (January 4, 2012). "Optimization failures in SHA-3 software" (PDF). cr.yp.to. Retrieved February 29, 2020.
  40. ^ a b "Keccak Team". keccak.noekeon.org.
  41. ^ Guo, Xu; Huang, Sinan; Nazhandali, Leyla; Schaumont, Patrick (August 2010), "Fair and Comprehensive Performance Evaluation of 14 Second Round SHA-3 ASIC Implementations" (PDF), NIST 2nd SHA-3 Candidate Conference: 12, retrieved February 18, 2011 Keccak is second only to Luffa, which did not advance to the final round.
  42. ^ ARM corporation, ARM architecture reference manual ARMv8, for ARMv8-A architecture profile, document ARM DDI 0487C.a (ID121917), https://www.arm.com
  43. ^ a b "Sakura: A Flexible Coding for Tree Hashing" (PDF). Keccak Team. 2014. Retrieved February 29, 2020.
  44. ^ SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash   This article incorporates text from this source, which is in the public domain.
  45. ^ "Software performance figures".
  46. ^ a b "Keccak Team: KangarooTwelve". Keccak Team.
  47. ^ a b "KangarooTwelve: fast hashing based on Keccak-p" (PDF). International Association for Cryptologic Research. 2016.
  48. ^ "KangarooTwelve slides presented at ACNS 2018" (PDF). Keccak Team.
  49. ^ "draft-irtf-cfrg-kangarootwelve-00 - KangarooTwelve". datatracker.ietf.org. IETF. Retrieved January 17, 2020.
  50. ^ Guido Bertoni, Joan Daemen, Seth Hoffert, Michaël Peeters, Gilles Van Assche, Ronny Van Keer (December 29, 2016). "Farfalle: parallel permutation-based cryptography". {{cite journal}}: Cite journal requires |journal= (help)CS1 maint: uses authors parameter (link)
  51. ^ Guido Bertoni, Joan Daemen, Seth Hoffert, Michaël Peeters, Gilles Van Assche, Ronny Van Keer (October 12, 2018). "The authenticated encryption schemes Kravatte-SANE and Kravatte-SANSE". {{cite journal}}: Cite journal requires |journal= (help)CS1 maint: uses authors parameter (link)
  52. ^ Brassard, Gilles; Høyer, Peter; Tapp, Alain (1998). "Quantum cryptanalysis of hash and claw-free functions". Abstract. Lecture Notes in Computer Science. Vol. 1380. pp. 163–169. arXiv:quant-ph/9705002. doi:10.1007/BFb0054319. ISBN 978-3-540-64275-6. S2CID 118940551.
  53. ^ "Cost Analysis" (PDF). cr.yp.to.
  54. ^ "Collision problem" (PDF). scottaaronson.com.
  55. ^ "Paper" (PDF). eprint.iacr.org. 2016.
  56. ^ "Abstract" (PDF). eprint.iacr.org. 2017.
  57. ^ "NIST.gov – Computer Security Division – Computer Security Resource Center". December 29, 2016.
  58. ^ "Measurements table". bench.cr.yp.to.
  59. ^ Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Fast Collision Attack on MD5 (PDF). Cryptology ePrint Archive (Technical report). IACR.
  60. ^ Stevens, Marc; Bursztein, Elie; Karpman, Pierre; Albertini, Ange; Markov, Yarik. The first collision for full SHA-1 (PDF) (Technical report). Google Research.
    • Marc Stevens; Elie Bursztein; Pierre Karpman; Ange Albertini; Yarik Markov; Alex Petit Bianco; Clement Baisse (February 23, 2017). "Announcing the first SHA1 collision". Google Security Blog.
  61. ^ Without truncation, the full internal state of the hash function is known, regardless of collision resistance. If the output is truncated, the removed part of the state must be searched for and found before the hash function can be resumed, allowing the attack to proceed.
  62. ^ "The Keccak sponge function family". Retrieved January 27, 2016.
  63. ^ "openssl/openssl- kecak1600-avx512vl.pl". GitHub. Retrieved June 25, 2020.
  64. ^ "openssl/openssl - keccak1600-avx2.pl". GitHub. November 2021.
  65. ^ "openssl/openssl - keccak1600-x86_64.pl". GitHub. Retrieved June 25, 2020.
  66. ^ "openssl/openssl - keccak1600-armv8.pl". GitHub. November 2021.
  67. ^ "openssl/openssl - keccak1600-ppc64.pl". GitHub. Retrieved June 25, 2020.
  68. ^ "openssl/openssl - kccak1600-mmx.pl". GitHub. Retrieved June 25, 2020.
  69. ^ "llvm/llvm-project - AArch64.td". GitHub. Retrieved June 24, 2020.
  70. ^ "ARMv8 - ARM - WikiChip". en.wikichip.org. Retrieved June 24, 2020.
  71. ^ "weidai11/cryptopp". GitHub. Retrieved June 25, 2020.
  72. ^ "openssl/openssl". GitHub. Retrieved June 25, 2020.
  73. ^ "openssl/openssl". GitHub. November 2021.
  74. ^ "apple/llvm-project - lib/Target/AArch64/AArch64SVEInstrInfo.td". GitHub. Retrieved June 25, 2020.
  75. ^ IBM z/Architecture Principles of Operation, publication number SA22-7832. See KIMD and KLMD instructions in Chapter 7.

External links

  • The Keccak web site
  • SHA-3 Standard

secure, hash, algorithm, latest, member, secure, hash, algorithm, family, standards, released, nist, august, 2015, although, part, same, series, standards, internally, different, from, like, structure, secure, hash, algorithmsconceptshash, functions, dsamain, . SHA 3 Secure Hash Algorithm 3 is the latest member of the Secure Hash Algorithm family of standards released by NIST on August 5 2015 4 5 6 Although part of the same series of standards SHA 3 is internally different from the MD5 like structure of SHA 1 and SHA 2 Secure Hash AlgorithmsConceptshash functions SHA DSAMain standardsSHA 0 SHA 1 SHA 2 SHA 3vteSHA 3 Keccak GeneralDesignersGuido Bertoni Joan Daemen Michael Peeters and Gilles van Assche First published2016 7 years ago 2016 Series SHA 0 SHA 1 SHA 2 SHA 3CertificationFIPS PUB 202DetailDigest sizesarbitraryStructuresponge constructionSpeed12 6 cpb on a typical x86 64 based machine for Keccak f 1600 plus XORing 1024 bits 1 which roughly corresponds to SHA2 256 Best public cryptanalysisPreimage attack on Keccak 512 reduced to 8 rounds requiring 2511 5 time and 2508 memory 2 Zero sum distinguishers exist for the full 24 round Keccak f 1600 though they cannot be used to attack the hash function itself 3 SHA 3 is a subset of the broader cryptographic primitive family Keccak ˈ k ɛ tʃ ae k or ˈ k ɛ tʃ ɑː k 7 8 designed by Guido Bertoni Joan Daemen Michael Peeters and Gilles Van Assche building upon RadioGatun Keccak s authors have proposed additional uses for the function not yet standardized by NIST including a stream cipher an authenticated encryption system a tree hashing scheme for faster hashing on certain architectures 9 10 and AEAD ciphers Keyak and Ketje 11 12 Keccak is based on a novel approach called sponge construction 13 Sponge construction is based on a wide random function or random permutation and allows inputting absorbing in sponge terminology any amount of data and outputting squeezing any amount of data while acting as a pseudorandom function with regard to all previous inputs This leads to great flexibility NIST does not currently plan to withdraw SHA 2 or remove it from the revised Secure Hash Standard needs update The purpose of SHA 3 is that it can be directly substituted for SHA 2 in current applications if necessary and to significantly improve the robustness of NIST s overall hash algorithm toolkit 14 For small message sizes the creators of the Keccak algorithms and the SHA 3 functions suggest using the faster function KangarooTwelve with adjusted parameters and a new tree hashing mode without extra overhead Contents 1 History 1 1 Weakening controversy 2 Design 3 Padding 4 The block permutation 5 Speed 6 Instances 7 Additional instances 8 Later developments 8 1 KangarooTwelve 8 2 The Farfalle construction 8 3 Sakura tree hashing 9 Security against quantum attacks 10 Examples of SHA 3 variants 11 Comparison of SHA functions 12 Implementations 13 Hardware acceleration 14 Usage in protocols 15 See also 16 References 17 External linksHistory EditThe Keccak algorithm is the work of Guido Bertoni Joan Daemen who also co designed the Rijndael cipher with Vincent Rijmen Michael Peeters and Gilles Van Assche It is based on earlier hash function designs PANAMA and RadioGatun PANAMA was designed by Daemen and Craig Clapp in 1998 RadioGatun a successor of PANAMA was designed by Daemen Peeters and Van Assche and was presented at the NIST Hash Workshop in 2006 15 The reference implementation source code was dedicated to public domain via CC0 waiver 16 In 2006 NIST started to organize the NIST hash function competition to create a new hash standard SHA 3 SHA 3 is not meant to replace SHA 2 as no significant attack on SHA 2 has been demonstrated Because of the successful attacks on MD5 SHA 0 and SHA 1 17 18 NIST perceived a need for an alternative dissimilar cryptographic hash which became SHA 3 After a setup period admissions were to be submitted by the end of 2008 Keccak was accepted as one of the 51 candidates In July 2009 14 algorithms were selected for the second round Keccak advanced to the last round in December 2010 19 During the competition entrants were permitted to tweak their algorithms to address issues that were discovered Changes that have been made to Keccak are 20 21 The number of rounds was increased from 12 ℓ to 12 2ℓ to be more conservative about security The message padding was changed from a more complex scheme to the simple 10 1 pattern described below The rate r was increased to the security limit rather than rounding down to the nearest power of 2 On October 2 2012 Keccak was selected as the winner of the competition 7 In 2014 the NIST published a draft FIPS 202 SHA 3 Standard Permutation Based Hash and Extendable Output Functions 22 FIPS 202 was approved on August 5 2015 23 On August 5 2015 NIST announced that SHA 3 had become a hashing standard 24 Weakening controversy Edit In early 2013 NIST announced they would select different values for the capacity the overall strength vs speed parameter for the SHA 3 standard compared to the submission 25 26 The changes caused some turmoil The hash function competition called for hash functions at least as secure as the SHA 2 instances It means that a d bit output should have d 2 bit resistance to collision attacks and d bit resistance to preimage attacks the maximum achievable for d bits of output Keccak s security proof allows an adjustable level of security based on a capacity c providing c 2 bit resistance to both collision and preimage attacks To meet the original competition rules Keccak s authors proposed c 2d The announced change was to accept the same d 2 bit security for all forms of attack and standardize c d This would have sped up Keccak by allowing an additional d bits of input to be hashed each iteration However the hash functions would not have been drop in replacements with the same preimage resistance as SHA 2 any more it would have been cut in half making it vulnerable to advances in quantum computing which effectively would cut it in half once more 27 In September 2013 Daniel J Bernstein suggested on the NIST hash forum mailing list 28 to strengthen the security to the 576 bit capacity that was originally proposed as the default Keccak in addition to and not included in the SHA 3 specifications 29 This would have provided at least a SHA3 224 and SHA3 256 with the same preimage resistance as their SHA 2 predecessors but SHA3 384 and SHA3 512 would have had significantly less preimage resistance than their SHA 2 predecessors In late September the Keccak team responded by stating that they had proposed 128 bit security by setting c 256 as an option already in their SHA 3 proposal 30 Although the reduced capacity was justifiable in their opinion in the light of the negative response they proposed raising the capacity to c 512 bits for all instances This would be as much as any previous standard up to the 256 bit security level while providing reasonable efficiency 31 but not the 384 512 bit preimage resistance offered by SHA2 384 and SHA2 512 The authors stated that claiming or relying on security strength levels above 256 bits is meaningless In early October 2013 Bruce Schneier criticized NIST s decision on the basis of its possible detrimental effects on the acceptance of the algorithm saying There is too much mistrust in the air NIST risks publishing an algorithm that no one will trust and no one except those forced will use 32 He later retracted his earlier statement saying I misspoke when I wrote that NIST made internal changes to the algorithm That was sloppy of me The Keccak permutation remains unchanged What NIST proposed was reducing the hash function s capacity in the name of performance One of Keccak s nice features is that it s highly tunable 32 Paul Crowley a cryptographer and senior developer at an independent software development company expressed his support of the decision saying that Keccak is supposed to be tunable and there is no reason for different security levels within one primitive He also added Yes it s a bit of a shame for the competition that they demanded a certain security level for entrants then went to publish a standard with a different one But there s nothing that can be done to fix that now except re opening the competition Demanding that they stick to their mistake doesn t improve things for anyone 33 There was some confusion that internal changes may have been made to Keccak which were cleared up by the original team stating that NIST s proposal for SHA 3 is a subset of the Keccak family for which one can generate test vectors using their reference code submitted to the contest and that this proposal was the result of a series of discussions between them and the NIST hash team 34 In response to the controversy in November 2013 John Kelsey of NIST proposed to go back to the original c 2d proposal for all SHA 2 drop in replacement instances 35 The reversion was confirmed in subsequent drafts 36 and in the final release 4 Design Edit The sponge construction for hash functions Pi are input Zi are hashed output The unused capacity c should be twice the desired resistance to collision or preimage attacks SHA 3 uses the sponge construction 13 in which data is absorbed into the sponge then the result is squeezed out In the absorbing phase message blocks are XORed into a subset of the state which is then transformed as a whole using a permutation function f displaystyle f In the squeeze phase output blocks are read from the same subset of the state alternated with the state transformation function f displaystyle f The size of the part of the state that is written and read is called the rate denoted r displaystyle r and the size of the part that is untouched by input output is called the capacity denoted c displaystyle c The capacity determines the security of the scheme The maximum security level is half the capacity Given an input bit string N displaystyle N a padding function p a d displaystyle pad a permutation function f displaystyle f that operates on bit blocks of width b displaystyle b a rate r displaystyle r and an output length d displaystyle d we have capacity c b r displaystyle c b r and the sponge construction Z sponge f p a d r N d displaystyle Z text sponge f pad r N d yielding a bit string Z displaystyle Z of length d displaystyle d works as follows 5 18 pad the input N using the pad function yielding a padded bit string P with a length divisible by r displaystyle r such that n len P r displaystyle n text len P r is an integer break P into n consecutive r bit pieces P0 Pn 1 initialize the state S to a string of b zero bits absorb the input into the state for each block Pi extend Pi at the end by a string of c zero bits yielding one of length b XOR that with S apply the block permutation f to the result yielding a new state S initialize Z to be the empty string while the length of Z is less than d append the first r bits of S to Z if Z is still less than d bits long apply f to S yielding a new state S truncate Z to d bitsThe fact that the internal state S contains c additional bits of information in addition to what is output to Z prevents the length extension attacks that SHA 2 SHA 1 MD5 and other hashes based on the Merkle Damgard construction are susceptible to In SHA 3 the state S consists of a 5 5 array of w bit words with w 64 b 5 5 w 5 5 64 1600 bits total Keccak is also defined for smaller power of 2 word sizes w down to 1 bit total state of 25 bits Small state sizes can be used to test cryptanalytic attacks and intermediate state sizes from w 8 200 bits to w 32 800 bits can be used in practical lightweight applications 11 12 For SHA3 224 SHA3 256 SHA3 384 and SHA3 512 instances r is greater than d so there is no need for additional block permutations in the squeezing phase the leading d bits of the state are the desired hash However SHAKE128 and SHAKE256 allow an arbitrary output length which is useful in applications such as optimal asymmetric encryption padding Padding EditTo ensure the message can be evenly divided into r bit blocks padding is required SHA 3 uses the pattern 10 1 in its padding function a 1 bit followed by zero or more 0 bits maximum r 1 and a final 1 bit The maximum of r 1 zero bits occurs when the last message block is r 1 bits long Then another block is added after the initial 1 bit containing r 1 zero bits before the final 1 bit The two 1 bits will be added even if the length of the message is already divisible by r 5 5 1 In this case another block is added to the message containing a 1 bit followed by a block of r 2 zero bits and another 1 bit This is necessary so that a message with length divisible by r ending in something that looks like padding does not produce the same hash as the message with those bits removed The initial 1 bit is required so messages differing only in a few additional 0 bits at the end do not produce the same hash The position of the final 1 bit indicates which rate r was used multi rate padding which is required for the security proof to work for different hash variants Without it different hash variants of the same short message would be the same up to truncation The block permutation EditThe block transformation f which is Keccak f 1600 for SHA 3 is a permutation that uses XOR AND and NOT operations and is designed for easy implementation in both software and hardware It is defined for any power of two word size w 2ℓ bits The main SHA 3 submission uses 64 bit words ℓ 6 The state can be considered to be a 5 5 w array of bits Let a i j k be bit 5i j w k of the input using a little endian bit numbering convention and row major indexing I e i selects the row j the column and k the bit Index arithmetic is performed modulo 5 for the first two dimensions and modulo w for the third The basic block permutation function consists of 12 2ℓ rounds of five steps 8 theta Compute the parity of each of the 5w 320 when w 64 5 bit columns and exclusive or that into two nearby columns in a regular pattern To be precise a i j k a i j k parity a 0 4 j 1 k parity a 0 4 j 1 k 1 r rho Bitwise rotate each of the 25 words by a different triangular number 0 1 3 6 10 15 To be precise a 0 0 is not rotated and for all 0 t lt 24 a i j k a i j k t 1 t 2 2 where i j 3 2 1 0 t 0 1 displaystyle begin pmatrix i j end pmatrix begin pmatrix 3 amp 2 1 amp 0 end pmatrix t begin pmatrix 0 1 end pmatrix p pi Permute the 25 words in a fixed pattern a 3i 2j i a i j x chi Bitwise combine along rows using x x y amp z To be precise a i j k a i j k a i j 1 k amp a i j 2 k This is the only non linear operation in SHA 3 i iota Exclusive or a round constant into one word of the state To be precise in round n for 0 m ℓ a 0 0 2m 1 is XORed with bit m 7n of a degree 8 LFSR sequence This breaks the symmetry that is preserved by the other steps Speed EditThe speed of SHA 3 hashing of long messages is dominated by the computation of f Keccak f 1600 and XORing S with the extended Pi an operation on b 1600 bits However since the last c bits of the extended Pi are 0 anyway and XOR with 0 is a NOP it is sufficient to perform XOR operations only for r bits r 1600 2 224 1152 bits for SHA3 224 1088 bits for SHA3 256 832 bits for SHA3 384 and 576 bits for SHA3 512 The lower r is and conversely the higher c b r 1600 r the less efficient but more secure the hashing becomes since fewer bits of the message can be XORed into the state a quick operation before each application of the computationally expensive f The authors report the following speeds for software implementations of Keccak f 1600 plus XORing 1024 bits 1 which roughly corresponds to SHA3 256 57 4 cpb on IA 32 Intel Pentium 3 37 41 cpb on IA 32 MMX Intel Pentium 3 20 cpb on IA 32 SSE Intel Core 2 Duo or AMD Athlon 64 12 6 cpb on a typical x86 64 based machine 6 7 cpb on IA 64 38 For the exact SHA3 256 on x86 64 Bernstein measures 11 7 12 25 cpb depending on the CPU 39 7 SHA 3 has been criticized for being slow on instruction set architectures CPUs which do not have instructions meant specially for computing Keccak functions faster SHA2 512 is more than twice as fast as SHA3 512 and SHA 1 is more than three times as fast on an Intel Skylake processor clocked at 3 2 GHz 40 The authors have reacted to this criticism by suggesting to use SHAKE128 and SHAKE256 instead of SHA3 256 and SHA3 512 at the expense of cutting the preimage resistance in half but while keeping the collision resistance With this performance is on par with SHA2 256 and SHA2 512 However in hardware implementations SHA 3 is notably faster than all other finalists 41 and also faster than SHA 2 and SHA 1 40 As of 2018 ARM s ARMv8 42 and IBM s s390x architectures include special instructions which enable Keccak algorithms to execute faster Instances EditThe NIST standard defines the following instances for message M and output length d 5 20 23 Instance Outputsize d Rate r block size Capacity c Definition Security strengths in bitsCollision Preimage 2nd preimageSHA3 224 M 224 1152 448 Keccak 448 M 01 224 112 224 224SHA3 256 M 256 1088 512 Keccak 512 M 01 256 128 256 256SHA3 384 M 384 832 768 Keccak 768 M 01 384 192 384 384SHA3 512 M 512 576 1024 Keccak 1024 M 01 512 256 512 512SHAKE128 M d d 1344 256 Keccak 256 M 1111 d min d 2 128 min d 128 min d 128 SHAKE256 M d d 1088 512 Keccak 512 M 1111 d min d 2 256 min d 256 min d 256 With the following definitions Keccak c N d sponge Keccak f 1600 pad10 1 r N d 5 20 Keccak f 1600 Keccak p 1600 24 5 17 c is the capacity r is the rate 1600 c N is the input bit stringSHA 3 instances are drop in replacements for SHA 2 intended to have identical security properties SHAKE will generate as many bits from its sponge as requested called XOFs Extendable Output Functions For example SHAKE128 M 256 can be used as a hash function with a 256 character bitstream with 128 bit security strength Arbitrarily large lengths can be used as pseudo random number generators Alternately SHAKE256 M 128 can be used as a hash function with a 128 bit length and 128 bit resistance 5 All instances append some bits to the message the rightmost of which represent the domain separation suffix The purpose of this is to ensure that it is not possible to construct messages that produce the same hash output for different applications of the Keccak hash function The following domain separation suffixes exist 5 43 Suffix Meaning 0 reserved for future use01 SHA 3 11 RawSHAKE1111 SHAKEAdditional instances EditIn December 2016 NIST published a new document NIST SP 800 185 44 describing additional SHA 3 derived functions Instance DescriptioncSHAKE128 X L N S A version of SHAKE supporting explicit domain separation via customization parameters cSHAKE256 X L N S KMAC128 K X L S A keyed hash function based on Keccak Can also be used without a key as a regular hash function KMAC256 K X L S KMACXOF128 K X L S KMACXOF256 K X L S TupleHash128 X L S A function for hashing tuples of strings The output of this function depends on both the contents and the sequence of input strings TupleHash256 X L S TupleHashXOF128 X L S TupleHashXOF256 X L S ParallelHash128 X B L S A function designed to exploit parallelism in modern processors for faster hashing Unlike KangarooTwelve does not use reduced round Keccak ParallelHash256 X B L S ParallelHashXOF128 X B L S ParallelHashXOF256 X B L S X is the main input bit string It may be of any length including zero L is an integer representing the requested output length in bits N is a function name bit string used by NIST to define functions based on cSHAKE When no function other than cSHAKE is desired N is set to the empty string S is a customization bit string The user selects this string to define a variant of the function When no customization is desired S is set to the empty string K is a key bit string of any length including zero B is the block size in bytes for parallel hashing It may be any integer such that 0 lt B lt 22040 Later developments EditKangarooTwelve Edit KangarooTwelveGeneralDesignersGuido Bertoni Joan Daemen Michael Peeters Gilles Van Assche Ronny Van Keer Benoit ViguierFirst publishedAugust 10 2016 6 years ago 2016 08 10 Derived fromKeccakDetailDigest sizesarbitraryStructuresponge construction and tree hashing with kangaroo hoppingRounds12Speed0 51 cpb on SkylakeX with AVX 512 45 Best public cryptanalysisSame as Keccak sIn 2016 the same team that made the SHA 3 functions and the Keccak algorithm introduced faster reduced rounds reduced to 12 and 14 rounds from the 24 in SHA 3 alternatives which can exploit the availability of parallel execution because of using tree hashing KangarooTwelve and MarsupilamiFourteen 46 These functions differ from ParallelHash the FIPS standardized Keccak based parallelizable hash function with regard to the parallelism in that they are faster than ParallelHash for small message sizes The reduced number of rounds is justified by the huge cryptanalytic effort focused on Keccak which did not produce practical attacks on anything close to twelve round Keccak These higher speed algorithms are not part of SHA 3 as they are a later development and thus are not FIPS compliant but because they use the same Keccak permutation they are secure for as long as there are no attacks on SHA 3 reduced to 12 rounds 46 KangarooTwelve is a higher performance reduced round from 24 to 12 rounds version of Keccak which claims to have 128 bits of security 47 while having performance as high as 0 55 cycles per byte on a Skylake CPU 48 This algorithm is an IETF RFC draft 49 MarsupilamiFourteen a slight variation on KangarooTwelve uses 14 rounds of the Keccak permutation and claims 256 bits of security Note that 256 bit security is not more useful in practice than 128 bit security but may be required by some standards 47 128 bits are already sufficient to defeat brute force attacks on current hardware so having 256 bit security does not add practical value unless the user is worried about significant advancements in the speed of classical computers For resistance against quantum computers see below KangarooTwelve and MarsupilamiFourteen are Extendable Output Functions similar to SHAKE therefore they generate closely related output for a common message with different output length the longer output is an extension of the shorter output Such property is not exhibited by hash functions such as SHA 3 or ParallelHash except of XOF variants 5 The Farfalle construction Edit In 2016 the Keccak team released a different construction called Farfalle construction and Kravatte an instance of Farfalle using the Keccak p permutation 50 as well as two authenticated encryption algorithms Kravatte SANE and Kravatte SANSE 51 Sakura tree hashing Edit RawSHAKE is the basis for the Sakura coding for tree hashing which has not been standardized yet Sakura uses a suffix of 1111 for single nodes equivalent to SHAKE and other generated suffixes depending on the shape of the tree 43 16 Security against quantum attacks EditThere is a general result Grover s algorithm that quantum computers can perform a structured preimage attack in 2 d 2 d 2 displaystyle sqrt 2 d 2 d 2 while a classical brute force attack needs 2d A structured preimage attack implies a second preimage attack 27 and thus a collision attack A quantum computer can also perform a birthday attack thus break collision resistance in 2 d 3 2 d 3 displaystyle sqrt 3 2 d 2 d 3 52 although that is disputed 53 Noting that the maximum strength can be c 2 displaystyle c 2 this gives the following upper 54 bounds on the quantum security of SHA 3 Instance Security strengths in bitsCollision Brassard et al Collision Bernstein Preimage 2nd preimageSHA3 224 M 742 3 112 112 112SHA3 256 M 851 3 128 128 128SHA3 384 M 128 192 192 192SHA3 512 M 1702 3 256 256 256SHAKE128 M d min d 3 128 min d 2 128 min d 2 128 min d 2 128 SHAKE256 M d min d 3 256 min d 2 256 min d 2 256 min d 2 256 It has been shown that the Merkle Damgard construction as used by SHA 2 is collapsing and by consequence quantum collision resistant 55 but for the sponge construction used by SHA 3 the authors provide proofs only for the case when the block function f is not efficiently invertible Keccak f 1600 however is efficiently invertible and so their proof does not apply 56 Examples of SHA 3 variants EditThe following hash values are from NIST gov 57 SHA3 224 6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7 SHA3 256 a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a SHA3 384 0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004 SHA3 512 a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26 SHAKE128 256 7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26 SHAKE256 512 46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be Changing a single bit causes each bit in the output to change with 50 probability demonstrating an avalanche effect SHAKE128 The quick brown fox jumps over the lazy dog 256 f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e SHAKE128 The quick brown fox jumps over the lazy dof 256 853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10cComparison of SHA functions EditIn the table below internal state means the number of bits that are carried over to the next block Comparison of SHA functions viewtalkedit Algorithm and variant Output size bits Internal state size bits Block size bits Rounds Operations Security against collision attacks bits Security against length extension attacks bits Performance on Skylake median cpb 58 First publishedLong messages 8 bytesMD5 as reference 128 128 4 32 512 64 And Xor Or Rot Add mod 232 18 collisions found 59 0 4 99 55 00 1992SHA 0 160 160 5 32 512 80 And Xor Or Rot Add mod 232 lt 34 collisions found 0 SHA 1 SHA 1 1993SHA 1 lt 63 collisions found 60 3 47 52 00 1995SHA 2 SHA 224SHA 256 224256 256 8 32 512 64 And Xor Or Rot Shr Add mod 232 112 128 320 7 627 63 84 5085 25 20042001SHA 384 384 512 8 64 1024 80 And Xor Or Rot Shr Add mod 264 192 128 384 5 12 135 75 2001SHA 512 512 256 0 61 5 06 135 50 2001SHA 512 224SHA 512 256 224256 112128 288256 SHA 384 SHA 384 2012SHA 3 SHA3 224SHA3 256SHA3 384SHA3 512 224256384512 1600 5 5 64 11521088832576 24 62 And Xor Rot Not 112128192256 4485127681024 8 128 5911 0615 88 154 25155 50164 00164 00 2015SHAKE128SHAKE256 d arbitrary d arbitrary 13441088 min d 2 128 min d 2 256 256512 7 088 59 155 25155 50Optimized implementation using AVX 512VL i e from OpenSSL running on Skylake X CPUs of SHA3 256 do achieve about 6 4 cycles per byte for large messages 63 and about 7 8 cycles per byte when using AVX2 on Skylake CPUs 64 Performance on other x86 Power and ARM CPUs depending on instructions used and exact CPU model varies from about 8 to 15 cycles per byte 65 66 67 with some older x86 CPUs up to 25 40 cycles per byte 68 Implementations EditBelow is a list of cryptography libraries that support SHA 3 Rust s sha3 Botan Bouncy Castle Crypto Libgcrypt Nettle OpenSSL wolfSSL MIRACL Cryptographic SDK Golang s x crypto sha3 libkeccakHardware acceleration EditApple A13 ARMv8 six core SoC CPU cores have support 69 for accelerating SHA 3 and SHA 512 using specialized instructions EOR3 RAX1 XAR BCAX from ARMv8 2 SHA crypto extension set 70 Some software libraries use vectorization facilities of CPUs to accelerate usage of SHA 3 For example Crypto can use SSE2 on x86 for accelerating SHA3 71 and OpenSSL can use MMX AVX 512 or AVX 512VL on many x86 systems too 72 Also POWER8 CPUs implement 2x64 bit vector rotate defined in PowerISA 2 07 which can accelerate SHA 3 implementations somehow 73 Most implementations for ARM do not use Neon vector instructions as scalar code is faster ARM implementations can however be accelerated using SVE and SVE2 vector instructions these are available in the Fujitsu A64FX CPU for instance 74 The IBM z Architecture supports SHA 3 since 2017 as part of the Message Security Assist Extension 6 75 The processors support a complete implementation of the entire SHA 3 and SHAKE algorithms via the KIMD and KLMD instructions using a hardware assist engine built into each core Usage in protocols EditEthereum EtherSee also EditEthash another Keccak based hashReferences Edit a b Keccak implementation overview Version 3 2 section 3 1 Morawiecki Pawel Pieprzyk Josef Srebrny Marian 2013 Moriai S ed Rotational Cryptanalysis of Round Reduced Keccak PDF Fast Software Encryption Lecture Notes in Computer Science Lecture Notes in Computer Science 8424 241 262 doi 10 1007 978 3 662 43933 3 13 ISBN 978 3 662 43932 6 Archived PDF from the original on January 8 2013 Retrieved February 8 2019 Bertoni Guido Daemen Joan Peeters Michael van Assche Giles January 14 2011 The Keccak SHA 3 submission PDF keccak noekeon org Archived PDF from the original on August 19 2011 Retrieved February 9 2014 a b Hash Functions NIST June 22 2020 Retrieved February 17 2021 a b c d e f g h i NIST August 2015 SHA 3 Standard Permutation Based Hash and Extendable Output Functions PDF doi 10 6028 NIST FIPS 202 S2CID 64734386 Retrieved February 29 2020 a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help Dworkin Morris J August 4 2015 SHA 3 Standard Permutation Based Hash and Extendable Output Functions Federal Inf Process STDS NIST FIPS a b NIST Selects Winner of Secure Hash Algorithm SHA 3 Competition NIST October 2 2012 Retrieved October 2 2012 Cruz Jose R C May 7 2013 Keccak The New SHA 3 Encryption Standard Dr Dobbs Guido Bertoni Joan Daemen Michael Peeters Gilles Van Assche The Keccak sponge function family Specifications summary Retrieved May 11 2011 Chang Shu jen Perlner Ray Burr William E Sonmez Turan Meltem Kelsey John M Paul Souradyuti Bassham Lawrence E November 2012 Third Round Report of the SHA 3 Cryptographic Hash Algorithm Competition PDF doi 10 6028 NIST IR 7896 Retrieved February 29 2020 a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help Sections 5 1 2 1 mentioning tree mode 6 2 other features mentioning authenticated encryption and 7 saying extras may be standardized in the future a b Bertoni Guido Daemen Joan Peeters Michael Van Assche Gilles Van Keer Ronny March 13 2014 CAESAR submission Ketje v1 PDF Retrieved February 29 2020 a b Bertoni Guido Daemen Joan Peeters Michael Van Assche Gilles Van Keer Ronny March 13 2014 CAESAR submission Keyak v1 PDF Retrieved February 29 2020 a b Guido Bertoni Joan Daemen Michael Peeters and Gilles Van Assche Sponge Functions Ecrypt Hash Workshop 2007 a href Template Cite web html title Template Cite web cite web a CS1 maint uses authors parameter link Announcing Request for Candidate Algorithm Nominations for a New Cryptographic Hash Algorithm SHA 3 Family U S Federal Register Vol 72 No 212 PDF November 2 2007 Archived PDF from the original on March 31 2011 Retrieved July 18 2017 Bertoni Guido Daemen Joan Peeters Michael Van Assche Gilles The road from Panama to Keccak via RadioGatun PDF Retrieved February 29 2020 KeccakReferenceAndOptimized 3 2 zip mainReference c The Keccak sponge function designed by Guido Bertoni Joan Daemen Michael Peeters and Gilles Van Assche For more information feedback or questions please refer to our website http keccak noekeon org Implementation permanent dead link by the designers hereby denoted as the implementer To the extent possible under law the implementer has waived all copyright and related or neighboring rights to the source code in this file https creativecommons org publicdomain zero 1 0 Stevens Marc Bursztein Elie Karpman Pierre Albertini Ange Markov Yarik The first collision for full SHA 1 PDF Retrieved February 23 2017 Leurent Gaetan Peyrin Thomas SHA 1 is a Shambles Retrieved January 8 2020 NIST Computer Security Division The SHA 3 Cryptographic Hash Algorithm Competition November 2007 October 2012 January 4 2017 Keccak parameter changes for round 2 Keccak Team September 22 2009 Archived from the original on November 13 2017 Retrieved February 29 2020 Simplifying Keccak s padding rule for round 3 Keccak Team January 17 2011 Retrieved February 29 2020 SHA 3 standardization NIST Retrieved April 16 2015 National Institute of Standards and Technology August 5 2015 Federal Information Processing Standards Permutation Based Hash and Extendable Output Functions etc Retrieved August 5 2015 Announcing Approval of Federal Information Processing Standard FIPS 202 SHA 3 Standard Permutation Based Hash and Extendable Output Functions and Revision of the Applicability Clause of FIPS 180 4 Secure Hash Standard August 5 2015 John Kelsey SHA3 Where We ve Been Where We re Going PDF RSA Conference 2013 John Kelsey SHA3 Past Present and Future CHES 2013 a b Abstract PDF cr yp to NIST hash forum mailing list January 4 2017 The Keccak SHA 3 submission PDF January 14 2011 Retrieved February 8 2014 On 128 bit security A concrete proposal October 2 2013 a b Schneier on Security Will Keccak SHA 3 LShift Why I support the US Government making a cryptography standard weaker Yes this is Keccak Moving Forward with SHA 3 PDF NIST Computer Security Division CSD SHA 3 Standard Permutation Based Hash and Extendable Output Functions PDF NIST about 41 cycles byte represents a 40 speedup compared to an implementation using only 32 bit instructions By formula 1 x 1 40 1 41 displaystyle frac 1 x times 1 40 frac 1 41 we obtain x 57 4 displaystyle x 57 4 Bertoni Guido May 29 2012 Keccak implementation overview PDF p 25 Retrieved November 3 2018 Bernstein Daniel J January 4 2012 Optimization failures in SHA 3 software PDF cr yp to Retrieved February 29 2020 a b Keccak Team keccak noekeon org Guo Xu Huang Sinan Nazhandali Leyla Schaumont Patrick August 2010 Fair and Comprehensive Performance Evaluation of 14 Second Round SHA 3 ASIC Implementations PDF NIST 2nd SHA 3 Candidate Conference 12 retrieved February 18 2011 Keccak is second only to Luffa which did not advance to the final round ARM corporation ARM architecture reference manual ARMv8 for ARMv8 A architecture profile document ARM DDI 0487C a ID121917 https www arm com a b Sakura A Flexible Coding for Tree Hashing PDF Keccak Team 2014 Retrieved February 29 2020 SHA 3 Derived Functions cSHAKE KMAC TupleHash and ParallelHash This article incorporates text from this source which is in the public domain Software performance figures a b Keccak Team KangarooTwelve Keccak Team a b KangarooTwelve fast hashing based on Keccak p PDF International Association for Cryptologic Research 2016 KangarooTwelve slides presented at ACNS 2018 PDF Keccak Team draft irtf cfrg kangarootwelve 00 KangarooTwelve datatracker ietf org IETF Retrieved January 17 2020 Guido Bertoni Joan Daemen Seth Hoffert Michael Peeters Gilles Van Assche Ronny Van Keer December 29 2016 Farfalle parallel permutation based cryptography a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help CS1 maint uses authors parameter link Guido Bertoni Joan Daemen Seth Hoffert Michael Peeters Gilles Van Assche Ronny Van Keer October 12 2018 The authenticated encryption schemes Kravatte SANE and Kravatte SANSE a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help CS1 maint uses authors parameter link Brassard Gilles Hoyer Peter Tapp Alain 1998 Quantum cryptanalysis of hash and claw free functions Abstract Lecture Notes in Computer Science Vol 1380 pp 163 169 arXiv quant ph 9705002 doi 10 1007 BFb0054319 ISBN 978 3 540 64275 6 S2CID 118940551 Cost Analysis PDF cr yp to Collision problem PDF scottaaronson com Paper PDF eprint iacr org 2016 Abstract PDF eprint iacr org 2017 NIST gov Computer Security Division Computer Security Resource Center December 29 2016 Measurements table bench cr yp to Tao Xie Liu Fanbao Feng Dengguo 2013 Fast Collision Attack on MD5 PDF Cryptology ePrint Archive Technical report IACR Stevens Marc Bursztein Elie Karpman Pierre Albertini Ange Markov Yarik The first collision for full SHA 1 PDF Technical report Google Research Marc Stevens Elie Bursztein Pierre Karpman Ange Albertini Yarik Markov Alex Petit Bianco Clement Baisse February 23 2017 Announcing the first SHA1 collision Google Security Blog Without truncation the full internal state of the hash function is known regardless of collision resistance If the output is truncated the removed part of the state must be searched for and found before the hash function can be resumed allowing the attack to proceed The Keccak sponge function family Retrieved January 27 2016 openssl openssl kecak1600 avx512vl pl GitHub Retrieved June 25 2020 openssl openssl keccak1600 avx2 pl GitHub November 2021 openssl openssl keccak1600 x86 64 pl GitHub Retrieved June 25 2020 openssl openssl keccak1600 armv8 pl GitHub November 2021 openssl openssl keccak1600 ppc64 pl GitHub Retrieved June 25 2020 openssl openssl kccak1600 mmx pl GitHub Retrieved June 25 2020 llvm llvm project AArch64 td GitHub Retrieved June 24 2020 ARMv8 ARM WikiChip en wikichip org Retrieved June 24 2020 weidai11 cryptopp GitHub Retrieved June 25 2020 openssl openssl GitHub Retrieved June 25 2020 openssl openssl GitHub November 2021 apple llvm project lib Target AArch64 AArch64SVEInstrInfo td GitHub Retrieved June 25 2020 IBM z Architecture Principles of Operation publication number SA22 7832 See KIMD and KLMD instructions in Chapter 7 External links EditThe Keccak web site SHA 3 Standard Retrieved from https en wikipedia org w index php title SHA 3 amp oldid 1129286736, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.