Re: [RFC PATCH 2/8] crypto/krb5: Provide Kerberos 5 crypto through AEAD API

David Howells
2025-01-10T10:39:39Z

Herbert Xu <herbert@gondor.apana.org.au> wrote:

> > Authentication tags are not used at all and should cause EINVAL if used (a
> > later patch does that).
>
> What do you mean by this? The authentication tag is the checksum
> that you're referring to and you appear to be using it in the rfc8009
> encrypt/decrypt functions.

Is it? That's entirely unclear. The algorithm should deal with inserting the
checksum in the appropriate place. The caller should not need to know about
that or where the checksum is or about extra bits of metadata that may need to
be inserted (as I think the extra gssapi layer does for sunrpc).

One of the reason the library has a number of layout functions is to handle
that stuff transparently. Unfortunately, I couldn't make it work in the AEAD
interface. The previous library implementation was better in that regard.

> > For the moment, the kerberos encryption algorithms use separate hash and
> > cipher algorithms internally, but should really use dual hash+cipher and
> > cipher+hash algorithms if possible to avoid doing these in series. Offload
> > off this may be possible through something like the Intel QAT.
>
> Please elaborate on what you mean by this. For IPsec, the main
> benefit with reframing cbc(aes)+hmac as aead is having a single
> code-path that supports both types of algorithms.

By "dual" I mean, for example, a piece of code that does the cipher and the
hash concurrently. I think it may be possible to do this using x86 AES and
SHA instructions - if there are sufficient registers. What I want to do is
avoid having to call a cipher and a hash sequentially. It appears that the
Intel QAT can actually do this with authenc combos - but the one I have
doesn't offer CTS(CBC(AES)) but only CBC(AES).

> So does your use-case support both standard AEAD algorithms such
> as GCM as well as these legacy algorithms?

At the moment AFS's rxgk does not support GCM. The same goes for sunrpc in
the kernel.

David