On 13/11/2019 20:05, Santiago Torres-Arias wrote:
- Move from CBC to GCM -> would require us to implement this new cipher
   block chaining (for which I can propose patches).
- Move from RSA key derivation to DSA/EDDSA variants for key derivation.
   This would require implementing a new key derivation function. (for
   this one I could also help, but I'd most likely want somebody familiar
   with the codebase to help me navigate what's the best way forward).

However, the rest of the stack can still safely remain on RSA, and thus
we wouldn't need to reimplement other parts for the forseeable future.

As a result, we would be able to support EDDSA-RSA-AES-GCM suites, which
are probably best practice for a couple of years.

What does everybody think?

I would suggest implementing and submitting GCM first, since that is likely to be a small and self-contained piece of work.

CBC in iPXE is implemented as a wrapper layer around an arbitrary underlying block cipher: GCM should use the same approach.

The CBC implementation is wholly contained in include/ipxe/cbc.h and crypto/cbc.c. This is then wrapped around raw AES using the CBC_CIPHER() macro to create aes_cbc_algorithm in crypto/aes.c, and the resulting AES-xxx-CBC ciphers are then tested for correctness (and performance) in tests/aes_test.c.

As with the existing crypto code, test coverage will be required, and should ideally use the published NIST test vectors.

Hope that helps, and thanks in advance!

Michael
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

Reply via email to