BLAKE
ChaChaでは4×4アレイのワードを操作し、BLAKEでは16のメッセージワードと8ワードのハッシュ値を連結することで、ChaChaの出力を切り詰めて次のハッシュ値の計算に用いる。
中核となる変換では入力の16ワードと16の変数を組み合わせるが、ブロック間では8ワード(256あるいは512ビット)しか保持されない。
BLAKEでは、16の固定ワード(πのフラクタル部の先頭の512あるいは1024ビット)と、16要素間での置換テーブル10個を用いる。
BLAKE-224, BLAKE-256では、固定ワードnに下記の定数を用いる。
BLAKE-384, BLAKE-512では、固定ワードnに下記の定数を用いる。
中核の操作はChaChaの1/4ラウンドと同等の操作であり、4ワードのカラムあるいは対角線上において2ワードのメッセージ m[] と2つの固定ワード n[] を結合する。1ラウンドごとに8回この操作が行われる。
上の計算は32ビットバージョンであるBLAKE-256, -224のものである。r はラウンド数(0から13)、i は繰り返し回数(0から7)である。
ChaChaの1/4ラウンドの関数とは以下の違いがある。
メッセージワードの和が追加された。
ローテートの方向が逆となった。
64ビットバージョン(ChaChaには存在しない)であるBLAKE-512, -384も32ビットバージョンであるBLAKE-256, -224と本質的には同じであるが、ローテートの量が32, 25, 16, 11に変更され、ラウンド数が14から16に増やされている。
2021年7月25日、BLAKE3が発表された。
MD5、SHA-1、SHA-2、SHA-3、そしてBLAKE2よりも高速である。
MD5及びSHA-1よりも堅牢で、さらに長さ拡張攻撃に対してSHA-2よりも堅牢である。
マークル木を利用しているため、並列化やストリーミングデータ・差分更新されるデータのハッシュ計算が可能である。
通常のハッシュ以外にも、 疑似乱数生成関数(PRF: PseudoRandom Function )、メッセージ認証コード(MAC: Message Authentication Code)、鍵導出関数(KDF: Key Derivation Function)、可変長出力関数 (XOF: eXtendable-Output Function)を利用可能である。
変種のない一種類のアルゴリズムを提供しており、x86-64や他の小さいアーキテクチャにおいて高速である。