#cipher #aead #crypto

no-std morus

MORUS authenticated cipher (MORUS-1280-128)

4 releases

0.1.3 Oct 29, 2021
0.1.2 Oct 28, 2021
0.1.1 Oct 28, 2021
0.1.0 Oct 28, 2021

#2405 in Cryptography

MIT license

22KB
466 lines

MORUS for Rust

This is a Rust implementation of MORUS (MORUS-1280-128)

MORUS is a fast authenticated cipher for platforms without hardware AES acceleration.

It performs especially well on WebAssembly compared to alternatives.

Cargo flags

  • std: allow dynamic allocations

std is the default.

A benchmark can be run that way:

export RUSTFLAGS="-C target-cpu=native"
cargo bench

Benchmarks

Benchmarks take a 16384 bytes input block. Results are in bytes per second.

Rust implementations

Crates:

  • aes-gcm
  • chacha20poly1305
  • morus

Macbook Pro - 2,4 GHz Intel Core i9.

cipher speed
aes128-gcm 1.91 G/s
chacha20-poly1305 1.48 G/s
morus 3.76 G/s

WebAssembly (Wasmtime)

cipher speed
aes128-gcm 44.13 M/s
chacha20-poly1305 193.05 M/s
chacha20-poly1305 (+simd128) 196.54 M/s
morus 1.07 G/s
morus (+simd128) 1.38 G/s

WebAssembly (WAVM)

cipher speed
aes128-gcm 57.01 M/s
chacha20-poly1305 335.82 M/s
morus 1.95 G/s

Other implementations (macOS native)

cipher (implementation, runtime) speed
zig-morus (Zig) 5.89 G/s

Other implementations (WebAssembly)

cipher (implementation, runtime) speed
zig-morus (Zig, wasmtime+simd128) 1.77 G/s
zig-morus (Zig, WAVM) 3.50 G/s

No runtime deps