r/crypto 22h ago

Ergonomic implementation of FLOE: Fast Lightweight Online Encryption

Thumbnail github.com
0 Upvotes

FLOE is a misuse-resistant nonce-based online authenticated encryption scheme for the encryption of very large data sets.

fast-floe is Rust implementation of FLOE that provides several ergonomic misuse-resistant APIs for working with FLOE messages, ordered below from simplest (and more high-level) to more advanced (and low-level).

Need API Input
Encrypt or decrypt bytes already in memory encrypt, decrypt One-shot complete message
Process a file, socket, or std::io adapter fast_floe::io Read or Write
Read selected authenticated ranges fast_floe::random_access Read + Seek ciphertext
Exchange segments, possibly out-of-order fast_floe::online Streaming data
Process segments manually or in parallel fast_floe::low_level Experts needing control

You're probably familiar with STREAM/nOAE from Hoang et al), and FLOE is an nOAE variant with some additional properties that STREAM-like constructions are lacking, like key-commitment and a formal treatment of random-access.