The final implementation of the algorithm has been published , offering a cryptographic hash function designed for applications such as file integrity checks, message authentication, and data creation for digital signatures. BLAKE3 is not intended for hashing passwords (for passwords, use yescrypt, bcrypt, scrypt, or Argon2), as it aims for the fastest hash computations with guaranteed collision resistance, protection against and insensitivity to the size of hashed data. The reference implementation of BLAKE3 is under dual licensing — public domain (CC0) and Apache 2.0.
A key distinguishing feature of the new hash function is its very high hashing performance while maintaining reliability at the level of SHA-3. By default, the resulting hash size in BLAKE3 is 32 bytes (256 bits), but it can be extended to arbitrary values. In a test for generating a hash for a 16 KB file, BLAKE3 outperforms SHA3-256 by 15 times, SHA-256 by 12 times, SHA-512 by 8 times, SHA-1 by 6 times, and BLAKE2b by 4 times. A significant lead is maintained even when processing very large volumes of data; for example, BLAKE3 proved to be 8 times faster than SHA-256 when calculating the hash for 1 GB of random data.
The algorithm was developed by renowned cryptography experts (, , , ) and continues to evolve the algorithm and uses the block chain tree encoding mechanism . Unlike BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 offers a unified algorithm for all platforms, independent of bitness and hash size.
Performance improvements have been achieved by reducing the number of rounds from 10 to 7 and hashing blocks in chunks of 1 KB. According to the creators, they found compelling , which allows for 7 rounds instead of 10 while maintaining the same level of reliability (for clarity, consider the example of mixing fruits in a blender — after 7 seconds, the fruits are already fully mixed, and the additional 3 seconds will not affect the consistency of the mixture). Some researchers express doubts, believing that even if 7 rounds are currently sufficient to withstand all known attacks on hashes, the additional 3 rounds may be beneficial in case new attacks are discovered in the future.
When it comes to block division, BLAKE3 splits the stream into chunks of 1 KB and hashes each chunk independently. Based on the hashes of the chunks, forms one large hash. This division allows for solving the problem of parallelizing data processing when computing the hash — for example, 4-threaded SIMD instructions can be used to compute hashes of 4 blocks simultaneously. Traditional hash functions SHA-* process data sequentially.
Features of BLAKE3:
- High performance;
- Security, including resistance to to which SHA-2 is vulnerable;
- Providing parallelization of computations across any number of threads and SIMD lanes;
- Capability for incremental updating and verified stream processing;
- Usage in PRF, MAC, KDF, XOF modes, and as a regular hash;
- A single algorithm for all architectures, fast on both x86-64 systems and 32-bit ARM processors.
Source: opennet.ru
