NetBSD/distrib/sets/lists/debug
riastradh 04a6492d1e New cgd cipher adiantum.
Adiantum is a wide-block cipher, built out of AES, XChaCha12,
Poly1305, and NH, defined in

   Paul Crowley and Eric Biggers, `Adiantum: length-preserving
   encryption for entry-level processors', IACR Transactions on
   Symmetric Cryptology 2018(4), pp. 39--61.

Adiantum provides better security than a narrow-block cipher with CBC
or XTS, because every bit of each sector affects every other bit,
whereas with CBC each block of plaintext only affects the following
blocks of ciphertext in the disk sector, and with XTS each block of
plaintext only affects its own block of ciphertext and nothing else.

Adiantum generally provides much better performance than
constant-time AES-CBC or AES-XTS software do without hardware
support, and performance comparable to or better than the
variable-time (i.e., leaky) AES-CBC and AES-XTS software we had
before.  (Note: Adiantum also uses AES as a subroutine, but only once
per disk sector.  It takes only a small fraction of the time spent by
Adiantum, so there's relatively little performance impact to using
constant-time AES software over using variable-time AES software for
it.)

Adiantum naturally scales to essentially arbitrary disk sector sizes;
sizes >=1024-bytes take the most advantage of Adiantum's design for
performance, so 4096-byte sectors would be a natural choice if we
taught cgd to change the disk sector size.  (However, it's a
different cipher for each disk sector size, so it _must_ be a cgd
parameter.)

The paper presents a similar construction HPolyC.  The salient
difference is that HPolyC uses Poly1305 directly, whereas Adiantum
uses Poly1395(NH(...)).  NH is annoying because it requires a
1072-byte key, which means the test vectors are ginormous, and
changing keys is costly; HPolyC avoids these shortcomings by using
Poly1305 directly, but HPolyC is measurably slower, costing about
1.5x what Adiantum costs on 4096-byte sectors.

For the purposes of cgd, we will reuse each key for many messages,
and there will be very few keys in total (one per cgd volume) so --
except for the annoying verbosity of test vectors -- the tradeoff
weighs in the favour of Adiantum, especially if we teach cgd to do
>>512-byte sectors.

For now, everything that Adiantum needs beyond what's already in the
kernel is gathered into a single file, including NH, Poly1305, and
XChaCha12.  We can split those out -- and reuse them, and provide MD
tuned implementations, and so on -- as needed; this is just a first
pass to get Adiantum implemented for experimentation.
2020-06-29 23:44:01 +00:00
..
ad.aarch64 Add missing compat debug symbols only available for llvm && dtrace. 2020-06-03 02:55:17 +00:00
ad.arm
ad.m68k
ad.m68k.shl
ad.mips gcc 8 set lists updates. i don't appear to have broken gcc 7 builds 2019-10-03 00:59:49 +00:00
ad.powerpc
ad.riscv
md.alpha
md.amd64 Fix lists for RUMP-less builds 2020-05-17 15:28:27 +00:00
md.amiga
md.atari
md.bebox
md.dreamcast
md.ews4800mips
md.hp300
md.hpcmips
md.hpcsh
md.hppa
md.i386
md.ia64
md.luna68k
md.mac68k
md.macppc
md.mipsco give syspkg names to -unknown- files under debug category 2019-03-21 07:44:05 +00:00
md.mmeye give syspkg names to -unknown- files under debug category 2019-03-21 07:44:05 +00:00
md.mvme68k
md.newsmips
md.ofppc
md.pmax
md.prep
md.rs6000
md.sgimips give syspkg names to -unknown- files under debug category 2019-03-21 07:44:05 +00:00
md.sparc
md.sparc64
md.sun2
md.sun3
md.vax
md.x68k
mi New cgd cipher adiantum. 2020-06-29 23:44:01 +00:00
module.ad.aarch64 Add module debug sets 2020-05-01 22:21:11 +00:00
module.ad.arm Add module debug sets 2020-05-01 22:21:11 +00:00
module.ad.m68k Add module debug sets 2020-05-01 22:21:11 +00:00
module.ad.mips Add module debug sets 2020-05-01 22:21:11 +00:00
module.ad.powerpc Add module debug sets 2020-05-01 22:21:11 +00:00
module.ad.sh3 Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.alpha Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.amd64 Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.evbarm Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.hppa Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.i386 Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.ia64 Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.prep Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.sgimips Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.sparc Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.sparc64 Add module debug sets 2020-05-01 22:21:11 +00:00
module.md.vax Add module debug sets 2020-05-01 22:21:11 +00:00
module.mi Add module debug sets 2020-05-01 22:21:11 +00:00
shl.mi Add compatfile to libblacklist 2020-06-15 23:41:55 +00:00