Photo by Maria Ziegler on Unsplash

96-bit Nonces Too Small? Try XChaCha20 and Rust

--

With symmetric-key, Bob and Alice have the same key. Rust can use the XChaCha20 method, and which supports stream encryption (and which does not require padding as a block cipher does, and is also faster than block cipher modes). ChaCha20 was created by Daniel J. Bernstein and has an eight-byte or 16-byte nonce. XChaCha20 (eXtended-nonce ChaCha) is an update to ChaCha20, and uses a 24 byte (192-bit) nonce. It was created by S. Arciszewski:

XChaCha20 has a lower probability of nonce misuse than ChaCha20. The cipher text is made up of the cipher message (and which is the same length as the plaintext message) is the same number of bytes as the message (five bytes), and that the cipher text has an extra 16 bytes (used for AEAD — Authenticated Encryption with Associated Data). The MAC bytes used Poly1305 and provide an integrity check for the cipher.

An outline of the Rust code is [here]:

extern crate base64;
extern crate hex;
extern crate crypto;
use crypto::{symmetriccipher::{ SynchronousStreamCipher}};use rustc_serialize::hex::FromHex;use std::env;
use core::str;
use…

--

--

Prof Bill Buchanan OBE FRSE
ASecuritySite: When Bob Met Alice

Professor of Cryptography. Serial innovator. Believer in fairness, justice & freedom. Based in Edinburgh. Old World Breaker. New World Creator. Building trust.