boringssl/crypto/cipher_extra
David Benjamin 33f456b8b0 Don't use bsaes over vpaes for CTR-DRBG.
RAND_bytes rarely uses large enough inputs for bsaes to be worth it.
https://boringssl-review.googlesource.com/c/boringssl/+/33589 includes some
rough benchmarks of various bits here. Some observations:

- 8 blocks of bsaes costs roughly 6.5 blocks of vpaes. Note the comparison
  isn't quite accurate because I'm measuring bsaes_ctr32_encrypt_blocks against
  vpaes_encrypt and vpaes in CTR mode today must make do with a C loop. Even
  assuming a cutoff of 6 rather than 7 blocks, it's rare to ask for 96 bytes
  of entropy at a time.

- CTR-DRBG performs some stray block operations (ctr_drbg_update), which bsaes
  is bad at without extra work to fold them into the CTR loop (not really worth
  it).

- CTR-DRBG calculates a couple new key schedules every RAND_bytes call. We
  don't currently have a constant-time bsaes key schedule. Unfortunately, even
  plain vpaes loses to the current aes_nohw used by bsaes, but it's not
  constant-time. Also taking CTR-DRBG out of the bsaes equation

- Machines without AES hardware (clients) are not going to be RNG-bound. It's
  mostly servers pushing way too many CBC IVs that care. This means bsaes's
  current side channel tradeoffs make even less sense here.

I'm not sure yet what we should do for the rest of the bsaes mess, but it seems
clear that we want to stick with vpaes for the RNG.

Bug: 256
Change-Id: Iec8f13af232794afd007cb1065913e8117eeee24
Reviewed-on: https://boringssl-review.googlesource.com/c/34744
Reviewed-by: Adam Langley <agl@google.com>
2019-02-01 18:03:39 +00:00
..
asm
test Test CBC padding more aggressively. 2018-10-30 20:53:00 +00:00
aead_test.cc Add XChaCha20-Poly1305 AEAD. 2018-08-09 18:49:09 +00:00
cipher_extra.c Actually add AES-192-OFB. 2018-06-21 22:03:34 +00:00
cipher_test.cc Add EVP_CTRL_AEAD_* constants. 2018-08-09 17:08:15 +00:00
derive_key.c
e_aesccm.c Don't use bsaes over vpaes for CTR-DRBG. 2019-02-01 18:03:39 +00:00
e_aesctrhmac.c Don't use bsaes over vpaes for CTR-DRBG. 2019-02-01 18:03:39 +00:00
e_aesgcmsiv.c Don't use bsaes over vpaes for CTR-DRBG. 2019-02-01 18:03:39 +00:00
e_chacha20poly1305.c Modernize OPENSSL_COMPILE_ASSERT, part 2. 2018-11-14 16:06:37 +00:00
e_null.c
e_rc2.c Move OPENSSL_FALLTHROUGH to internal headers. 2018-01-29 18:17:57 +00:00
e_rc4.c
e_tls.c Add start of infrastructure for checking constant-time properties. 2018-12-18 22:43:02 +00:00
internal.h Run the comment converter on libcrypto. 2017-08-18 21:49:04 +00:00
tls_cbc.c Fix EVP_tls_cbc_digest_record is slow using SHA-384 and short messages 2018-10-29 18:26:27 +00:00