Adiantum (cipher)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Adiantum
General
DesignersPaul Crowley and Eric Biggers at Google
First publishedOctober 12, 2018; 7 years ago (2018-10-12)
Related toHPolyC
Cipher detail
Key sizes8192 bits
Block sizesno practical limit; intended for 4096-byte disk sectors
StructureHBSH (hash, block cipher, stream cipher, hash)

Adiantum is a cipher composition for disk encryption. It uses a new cipher construction called HBSH (hash, block cipher, stream cipher, hash), specifically choosing NH, 256-bit Advanced Encryption Standard (AES-256), (X)ChaCha12/ChaCha20[a], Poly1305 for the four elements.[1] The version in Linux kernel preferentially uses XChaCha12, xchacha12,aes-adiantum.[2]

It was designed in 2018 by Paul Crowley and Eric Biggers at Google specifically for low-powered mobile devices running Android Go. It has been included in the Linux kernel since version 5.0.[3] The construct is designed to be "wide-block", where any change in the plaintext causes the entire ciphertext to be unrecognizably changed.[4]

Adiantum is implemented in Android 10 as an alternative cipher for device encryption, particularly on low-end devices lacking hardware-accelerated support for AES. (Adiantum only invokes AES once per plaintext.) The company stated that Adiantum ran five times faster than AES-256-XTS on ARM Cortex-A7 CPUs.[1] Google had previously exempted devices from mandatory device encryption if their specifications affected system performance if enabled. Due to the introduction of Adiantum, device encryption becomes mandatory on all Android devices beginning on Android 10.[5][6]

HPolyC is an earlier variant which does not use NH.[1]

References

[edit | edit source]
  1. ^ the paper also mentions the construction Adiantum-XChaCha20-AES and dm-crypt allows constructions like xchacha20,aes-adiantum-plain64
  1. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).


[edit | edit source]