Cutting-edge Encryption Algorithm
OTTO combines AES‑256‑GCM with an HKDF key schedule, Argon2id password hardening, optional X25519 end‑to‑end mode, and a robust chunked streaming layout.
Security note: OTTO’s construction is new; obtain an independent cryptographic review before production use.
HEADER = [ magic:"OTTO1" | algo:0xA1 | kdf | flags | 0x00 | hlen | HVAR ]
HVAR = file_salt | (pw_salt + ops + mem) | (eph_pubkey)
CHUNK i = [ clen(u32) | ciphertext | tag(16) ]
enc_key = HKDF(master, 32, info="OTTO-ENC-KEY", salt=file_salt)
nonce_key = HKDF(master, 32, info="OTTO-NONCE-KEY", salt=file_salt)
nonce_i = HKDF(nonce_key, 12, info="OTTO-CHUNK-NONCE" || counter64be)
Download SDK
All SDKs share the exact same header and streaming format. Encrypt in one, decrypt in another.
Demo apps per SDK
Download Client Apps
Why OTTO Algorithm?
- Cross‑language, one format. Identical header + streaming layout in PHP, JS, Python, .NET, Java/Android, Swift, and Flutter.
- Stream big media safely. Chunked AEAD with per‑chunk tags for video/audio; constant memory and resumable processing.
- Nonce misuse resistance. Deterministic HKDF‑SIV‑style nonces derived from a counter — no random nonces to manage.
- Password or E2E. Argon2id for passphrases or X25519 for end‑to‑end sessions; raw 32‑byte keys also supported.
- AAD‑bound metadata. The full header is AEAD Associated Data, tying algorithm/KDF params and (for E2E) the sender’s ephemeral key to the ciphertext.
magic:"OTTO1" | algo_id:0xA1 | kdf_id | flags | 0x00 | header_len
HVAR: file_salt | (pw_salt + opslimit + memlimitKiB) | (eph_pubkey)
Note: OTTO is a new composition of established primitives. Get an independent security review before production use.
Comparison
Scheme | AEAD | Keying | Streaming | Nonces | Interop | Notes |
---|
Technical documentation
Read the full specification, wire format, header fields, key schedule, threat model, and interoperability checklist in the OTTO repository.