Text
The Hash function BLAKE
CONTENTS:
1.Introduction
1.1.Cryptographic Hashing
1.2.The SHA3 Competition
1.3.BLAKE, in a Nutshell
1.4.Conventions
2.Preliminaries
2.1.Applications
2.1.1.Modification Detection
2.1.2.Message Authentication
2.1.3.Digital Signatures
2.1.4.Pseudorandom Functions
2.1.5.Entropy Extraction and Key Derivation
2.1.6.Password Hashing
2.1.7.Data Identification
2.1.8.Key Update
2.1.9.Proof-of-Work Systems
2.1.10.Timestamping
2.2.Security Notions
2.2.1.Security Models
2.2.2.Classical Security Definitions
2.2.3.General Security Definition
2.3.Black-Box Collision Search
2.3.1.Cycles and Tails
2.3.2.Cycle Detection
2.3.3.Parallel Collision Search
2.3.4.Application to Meet-in-the-Middle
2.3.5.Quantum Collision Search
2.4.Constructing Hash Functions
2.4.1.Merkle-Damgard
2.4.2.HAIFA
2.4.3.Wide-Pipe
2.4.4.Sponge Functions
2.4.5.Compression Functions
2.5.The SHA Family
2.5.2.SHA2
2.5.3.SHA3 Finalists
3.Specification of BLAKE
3.1.BLAKE-256
3.1.1.Constant Parameters
3.1.2.Compression Function
3.1.3.Iteration Mode
3.2.BLAKE-512
3.2.1.Constant Parameters
3.2.2.Compression Function
3.2.3.Iteration Mode
3.3.BLAKE-224
3.4.BLAKE-384
3.5.Toy Versions
4.Using BLAKE
4.1.Simple Hashing
4.1.1.Description
4.1.2.Hashing a Large File with BLAKE-256
4.1.3.Hashing a Bit with BLAKE-512
4.1.4.Hashing the Empty String with BLAKE-512
4.2.Hashing with a Salt
4.2.1.Description
4.2.2.Hashing a Bit with BLAKE-512 and a Salt
4.3.Message Authentication with HMAC
4.3.1.Description
4.3.2.Authenticating a File with HMAC-BLAKE-512
4.4.Password-Based Key Derivation with PBKDF2
4.4.1.Basic Description
4.4.2.Generating a Key with PBKDF2-HMAC-BLAKE-224
5.BLAKE in Software
5.1.Straightforward Implementation
5.1.1.Portable C
5.1.2.Other Languages
5.2.1.8-Bit AVR
5.2.2.32-Bit ARM
5.3.Vectorized Implementation Principle
5.4.Vectorized Implementation with SSE Extensions
5.4.1.Streaming SIMD Extensions 2 (SSE2)
5.4.2.Implementing BLAKE-256 with SSE2
5.4.3.Implementing BLAKE-512 with SSE2
5.4.4.Implementations with SSSE3 and SSE4.1
5.5.Vectorized Implementation with AVX2 Extensions
5.5.1.Relevant AVX2 Instructions
5.5.2.Implementing BLAKE-512 with AVX2
5.5.3.Implementing BLAKE-256 with AVX2
5.6.Vectorized Implementation with XOP Extensions
5.6.1.Relevant XOP Instructions
5.6.2.Implementing BLAKE with XOP
5.7.Vectorized Implementation with NEON Extensions
5.7.1.Relevant NEON Instructions
5.7.2.Implementing BLAKE-256 with NEON
5.7.3.Implementing BLAKE-512 with NEON
5.8.Performance
5.8.1.Speed Summary
5.8.2.8-Bit AVR
5.8.3.ARM Platforms
5.8.4.x86 Platforms (32-bit)
5.8.5.amd64 Platforms (64-bit)
6.BLAKE in Hardware
6.1.RTL Design
6.2.ASIC Implementation
6.2.1.High-Speed Design
6.2.2.Compact Design
6.3.FPGA Design
6.4.Performance
6.4.1.ASIC
6.4.2.FPGA
6.4.3.Discussion
7.Design Rationale
7.1.NIST Call for Submissions
7.1.1.General Requirements
7.1.2.Technical and Security Requirements
7.1.3.Could SHA2 Be SHA3?
7.2.Needs Analysis
7.2.1.Ease of Implementation
7.2.2.Performance
7.2.3.Security
7.2.4.Extra Features
7.3.Design Philosophy
7.3.1.Minimalism
7.3.2.Robustness
7.3.3.Versatility
7.4.Design Choices
7.4.1.General Choices
7.4.2.Iteration Mode
7.4.3.Core Algorithm
7.4.4.Rotation Counts
7.4.5.Permutations
7.4.6.Number of Rounds
7.4.7.Constants
8.Security of BLAKE
8.1.Differential Cryptanalysis
8.1.1.Differences and Differentials
8.1.2.Finding Good Differentials
8.2.Properties of BLAKE's G Function
8.2.2.Differential Properties of G
8.3.Properties of the Round Function
8.3.1.Bijectivity
8.3.2.Diffusion and Low-Weight Differences
8.3.3.Invertibility
8.3.4.Impossible Differentials
8.4.Properties of the Compression Function
8.4.1.Finalization
8.4.2.Local Collisions
8.4.3.Fixed Points
8.4.4.Fixed Point Collisions
8.4.5.Pseudorandomness
8.5.Security Against Generic Attacks
8.5.1.Indifferentiability
8.5.2.Length Extension
8.5.3.Collision Multiplication
8.5.4.Multicollisions
8.5.5.Second Preimages
8.6.Attacks on Reduced BLAKE
8.6.1.Preimage Attacks
8.6.2.Near-Collision Attack
8.6.3.Boomerang Distinguisher
8.6.4.Iterative Characteristics
8.6.5.Breaking BLOKE
8.6.6.Attack on a Variant with Identical Constants
9.BLAKE2
9.1.Motivations
9.2.Differences with BLAKE
9.2.1.Fewer Rounds
9.2.2.Rotations Optimized for Speed
9.2.3.Minimal Padding
Contents note continued: 9.2.4.Finalization Flags
9.2.5.Fewer Constants
9.2.6.Little-Endianness
9.2.7.Counter in Bytes
9.2.8.Salt Processing
9.2.9.Parameter Block
9.3.Keyed Hashing (MAC and PRF)
9.4.Tree Hashing
9.4.1.Basic Mechanism
9.4.2.Message Parsing
9.4.3.Special Cases
9.4.4.Generic Tree Parameters
9.4.5.Updatable Hashing Example
9.5.Parallel Hashing: BLAKE2sp and BLAKE2bp
9.6.Performance
9.6.1.Why BLAKE2 Is Fast in Software
9.6.2.64-bit Platforms
9.6.3.Low-End Platforms
9.6.4.Hardware
9.7.Security
9.7.1.BLAKE Legacy
9.7.2.Implications of BLAKE2 Tweaks
9.7.3.Third-Party Cryptanalysis
10.Conclusion
No other version available