RE: AEAD question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Herbert,

The discussion below still lacks some resolution ...

What is boils down to is: what should an authenc AEAD driver do when it
gets a setauthsize request of zero?

It could either return -EINVAL on the setauthsize request as AEAD with
an authsize of zero makes no sense at all and only allowing a limited 
subset of authsizes seems to be commonplace.
Or it could process the request without appending or verifying the 
authenticator (basically throwing away the authentication result!).

I have a strong preference for the former, as the latter would require
workarounds in the inside-secure driver for a corner case that does
not make any practicle sense (without the authenticator, it is not an
AEAD in the first place, why authenticate and throw away the result?), 
but the current generic implementation does seem to process this.

Consistent behavior here is important for the fuzz testing by testmgr.

Regards,
Pascal

> -----Original Message-----
> From: linux-crypto-owner@xxxxxxxxxxxxxxx <linux-crypto-owner@xxxxxxxxxxxxxxx> On Behalf Of
> Pascal Van Leeuwen
> Sent: Tuesday, July 23, 2019 12:27 AM
> To: Eric Biggers <ebiggers@xxxxxxxxxx>
> Cc: linux-crypto@xxxxxxxxxxxxxxx; Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>;
> davem@xxxxxxxxxxxxx
> Subject: RE: AEAD question
> 
> > -----Original Message-----
> > From: Eric Biggers <ebiggers@xxxxxxxxxx>
> > Sent: Monday, July 22, 2019 6:23 PM
> > To: Pascal Van Leeuwen <pvanleeuwen@xxxxxxxxxxxxxx>
> > Cc: linux-crypto@xxxxxxxxxxxxxxx; Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>;
> davem@xxxxxxxxxxxxx
> > Subject: Re: AEAD question
> >
> > On Mon, Jul 22, 2019 at 12:55:39PM +0000, Pascal Van Leeuwen wrote:
> > > Eric & Herbert,
> > >
> > > I noticed the testmgr fuzz tester generating (occasionally, see previous mail) tests
> cases with
> > > authsize=0 for the AEAD ciphers. I'm wondering if that is intentional. Or actually,
> I'm wondering
> > > whether that should be considered a legal case.
> > > To me, it doesn't seem to make a whole lot of sense to do *authenticated* encryption
> and then
> > > effectively throw away the authentication result ... (it's just a waste of power
> and/or cycles)
> > >
> > > The reason for this question is that supporting this requires some specific workaround
> in my
> > > driver (yet again). And yes, I'm aware of the fact that I can advertise I don't
> support zero length
> > > authentication tags, but then probably/likely testmgr will punish me for that instead.
> > >
> >
> > As before you're actually talking about the "authenc" template for IPSec and not
> > about AEADs in general, right?
> >
> Hmmm .... for the time being yes. At the time I wrote that, I was still expecting all
> AEAD's to be
> somewhat consistent in this respect (as our hardware is), but actually I've just been
> trying to
> reverse engineer the GCM template and IIRC it indeed does not allow an authsize of 0.
> Or anything below 4 bytes, actually.
> 
> >  I'm not familiar with that algorithm, so you'll
> > have to research what the specification says, and what's actually using it.
> >
> To the best of my knowledge, there is no formal specification of any such thing. There are
> protocols that use it (e.g. IPsec) which have restrictions but other protocols beyond my
> knowledge may have other restrictions ... 0 seems very unlikely though ...
> 
> > Using an AEAD with authsize=0 is indeed silly, but perhaps someone using that in
> > some badly designed protocol where authentication is optional.  Also AFAICS from
> > the code, any authsize fits naturally into the algorithm; i.e., excluding 0
> > would be a special case.
> >
> Again, looking at the GCM template, excluding certain authsizes is certainly not
> something out of the ordinary.
> 
> > But again, someone actually has to research this.  Maybe
> > crypto_aead_setauthsize() should simply reject authsize=0 for all AEADs.
> >
> IMHO that would make sense. Without authentication, it's not an AEAD.
> And actually executing the MAC and then throwing away the *full* result is really
> silly. More likely to be some programming mistake than actually intended use.
> (but if someone knows of an actual use case for that, please do correct me)
> 
> > What we should *not* do, IMO, is remove it from the tests and allow
> > implementations to do whatever they want.  If it's wrong we should fix it
> > everywhere, so that the behavior is consistent.
> >
> Oh, I fully agree there. All implementations should still respond the same.
> 
> > - Eric
> 
> Regards,
> Pascal van Leeuwen
> Silicon IP Architect, Multi-Protocol Engines @ Verimatrix
> www.insidesecure.com

Regards,
Pascal van Leeuwen
Silicon IP Architect, Multi-Protocol Engines @ Verimatrix
www.insidesecure.com




[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux