#
bcc120f5 |
| 26-Jul-2024 |
riastradh <riastradh@NetBSD.org> |
sys/crypto/sodium: Add a self-test for IETF ChaCha20/Poly1305 AEAD.
PR kern/58468
|
#
d9f886e2 |
| 21-Aug-2021 |
christos <christos@NetBSD.org> |
rename glue.c to sodium_module.c
|
#
ddf60632 |
| 21-Aug-2021 |
christos <christos@NetBSD.org> |
Add glue.c for libsodium (suggested by riastradh). Tidy up.
|
#
261d3f19 |
| 27-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
Move address hashing from init_main.c to kern_sysctl.c.
This way rump gets it automatically. Make sure blake2s is in librumpkern.so, not just in librumpkern_crypto.so, for this to work.
|
#
062505bf |
| 26-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
Tidy up libsodium makefile and config fragments.
|
#
465b1b1b |
| 21-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
Disable libsodium HAVE_TI_MODE for now.
This may reduce performance by not taking advantage of 64x64->128 multiplications on some platforms, but let's worry about that later and fix the build on the
Disable libsodium HAVE_TI_MODE for now.
This may reduce performance by not taking advantage of 64x64->128 multiplications on some platforms, but let's worry about that later and fix the build on the other platforms instead.
show more ...
|
#
588821d8 |
| 21-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
Split flags onto separate lines, sorted, to make diffs easier.
|
#
9bd7cf68 |
| 21-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
Disable -Wshadow for libsodium.
Evidently ed25519_ref10.c has a global and a local both named `d'.
|
#
18c1858b |
| 20-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
Missed a spot -- add sys/crypto/blake2 to .PATH here.
|
#
1ce89b90 |
| 20-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
Fix vestiges of libb2.
|
#
a14187ec |
| 20-Aug-2020 |
riastradh <riastradh@NetBSD.org> |
[ozaki-r] Changes to the kernel core for wireguard
|
#
8748ca0e |
| 28-Jul-2020 |
riastradh <riastradh@NetBSD.org> |
Rewrite cprng_fast in terms of new ChaCha API.
|
#
985de54c |
| 26-Jul-2020 |
riastradh <riastradh@NetBSD.org> |
Fix more sort order.
|
#
4fd8ff03 |
| 26-Jul-2020 |
riastradh <riastradh@NetBSD.org> |
Add missing aes_ccm.c, aes_ccm_mbuf.c. Fix sort order.
|
#
31462776 |
| 26-Jul-2020 |
riastradh <riastradh@NetBSD.org> |
Add chacha to rump libcrypto.
|
#
7e7db0ca |
| 25-Jul-2020 |
riastradh <riastradh@NetBSD.org> |
Remove now-unused legacy rijndael API.
|
#
04a6492d |
| 29-Jun-2020 |
riastradh <riastradh@NetBSD.org> |
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
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.
show more ...
|
#
5dcdae41 |
| 29-Jun-2020 |
riastradh <riastradh@NetBSD.org> |
Rework AES in kernel to finally address CVE-2005-1797.
1. Rip out old variable-time reference implementation. 2. Replace it by BearSSL's constant-time 32-bit logic. => Obtained from commit dda1f8
Rework AES in kernel to finally address CVE-2005-1797.
1. Rip out old variable-time reference implementation. 2. Replace it by BearSSL's constant-time 32-bit logic. => Obtained from commit dda1f8a0c46e15b4a235163470ff700b2f13dcc5. => We could conditionally adopt the 64-bit logic too, which would likely give a modest performance boost on 64-bit platforms without AES-NI, but that's a bit more trouble. 3. Select the AES implementation at boot-time; allow an MD override. => Use self-tests to verify basic correctness at boot. => The implementation selection policy is rather rudimentary at the moment but it is isolated to one place so it's easy to change later on.
This (a) plugs a host of timing attacks on, e.g., cgd, and (b) paves the way to take advantage of CPU support for AES -- both things we should've done a decade ago. Downside: Computing AES takes 2-3x the CPU time. But that's what hardware support will be coming for.
Rudimentary measurement of performance impact done by:
mount -t tmpfs tmpfs /tmp dd if=/dev/zero of=/tmp/disk bs=1m count=512 vnconfig -cv vnd0 /tmp/disk cgdconfig -s cgd0 /dev/vnd0 aes-cbc 256 < /dev/zero dd if=/dev/rcgd0d of=/dev/null bs=64k dd if=/dev/zero of=/dev/rcgd0d bs=64k
The AES-CBC encryption performance impact is closer to 3x because it is inherently sequential; the AES-CBC decryption impact is closer to 2x because the bitsliced AES logic can process two blocks at once.
Discussed on tech-kern:
https://mail-index.NetBSD.org/tech-kern/2020/06/18/msg026505.html
show more ...
|
#
38e3ff59 |
| 05-Dec-2019 |
riastradh <riastradh@NetBSD.org> |
Missed a spot in the crypto/arc4 deletion.
|
#
8e07b517 |
| 02-Sep-2019 |
riastradh <riastradh@NetBSD.org> |
Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.
Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security' - better resistance to timing side channels t
Switch from NIST CTR_DRBG with AES to NIST Hash_DRBG with SHA-256.
Benefits:
- larger seeds -- a 128-bit key alone is not enough for `128-bit security' - better resistance to timing side channels than AES - a better-understood security story (https://eprint.iacr.org/2018/349) - no loss in compliance with US government standards that nobody ever got fired for choosing, at least in the US-dominated western world - no dirty endianness tricks - self-tests
Drawbacks:
- performance hit: throughput is reduced to about 1/3 in naive measurements => possible to mitigate by using hardware SHA-256 instructions => all you really need is 32 bytes to seed a userland PRNG anyway => if we just used ChaCha this would go away...
XXX pullup-7 XXX pullup-8 XXX pullup-9
show more ...
|
#
b2b6f260 |
| 19-Oct-2015 |
pooka <pooka@NetBSD.org> |
Add a COMMENT describing what each component roughly does.
"make describe" prints the comment.
Requested/inspired by Vincent Schwarzer on rumpkernel-users
|
#
2d797719 |
| 17-Jan-2014 |
pooka <pooka@NetBSD.org> |
Use subr_cprng.c instead of stub implementation. Rijndael migrates from rumpkern_crypto to rumpkern due to it being mandatory for cprng.
|
#
2e6d77ce |
| 14-Jan-2014 |
pgoyette <pgoyette@NetBSD.org> |
Add the MODULE parts for blowfish and des.
Add camellia algorithm. (pooka@ says no lib version change required)
|
#
fee25d6c |
| 05-Dec-2010 |
pooka <pooka@NetBSD.org> |
rumpcrypto should never have been its own faction, so finally make it a component under kern, i.e. rumpcrypto -> rumpkern_crypto.
|