aes_cbc_hmac_sha1 implementation
Matt Caswell
matt at openssl.org
Mon Mar 2 10:11:26 UTC 2020
On 28/02/2020 09:11, Phani 2004 wrote:
> OK. I understood that "AES-128-CBC-HMAC-SHA1"(aesni_cbc_hmac_sha1)
> always does mte.
> I am trying to implement engine implementation of combined mode cipher
> aes_cbc_hmac_sha1.
> So in my aes_cbc_hmac_sha1_cipher implementation should i do mte only?
Yes.
> If hardware engine can do both operations in a single request and save
> time. Also, say there is a flag which indicates whether its mte or etm.
> How should my aes_cbc_hmac_sha1 implementation look like?
That cipher only does mte.
> Should it do only mte always? Should i have two ciphers, one for etm and
> other for mte.
> But how to i tell openssl to use this cipher for etm and other for mte
> without changing the openssl code.
If you want to support etm you have to implement aes-cbc and sha1
separately.
>
> One more query i have is, how do we pass the etm option to the openssl
> in conf file.
etm will be negotiated by default if it is available - there is no need
to configure this. You can disable etm using the "EncryptThenMac"
option, e.g.
Options = -EncryptThenMac
See:
https://www.openssl.org/docs/man1.1.1/man3/SSL_CONF_cmd.html
Matt
>
> Regards
> Phani
>
> On Fri, Feb 28, 2020 at 8:53 AM Matt Caswell <matt at openssl.org
> <mailto:matt at openssl.org>> wrote:
>
>
>
> On 27/02/2020 18:30, Phani 2004 wrote:
> > Thanks for the reply.
> >
> > In ssl_get_evp_cipher api when etm flag is enabled the
> > aesni_cbc_hmac_sha1_cipher is not used. In this cipher only it
> > implements mte. This part is not clear to me? Support I implement one
> > cipher func which needs to handle both etm as well as mte, at the
> cipher
> > api level how do I know if we have etm extension enabled or not.
>
> At the engine level all it knows about are ciphers and hashes. Engines
> know nothing about TLS ciphersuites or TLS extensions. Your engine will
> not know whether etm or mte is in use. libssl makes the decision about
> what cipher it is going to ask the engine for based on what has been
> negotiated.
>
> If mte is in use then it will first look to see if it has an
> implementation of "AES-128-CBC-HMAC-SHA1" (of which
> aesni_cbc_hmac_sha1_cipher is the built-in implementation).
>
> If that is not available it will look for individual implementations of
> "AES-128" and "SHA1".
>
> If etm is in use it will just look for individual implementations of
> "AES-128" and "SHA1".
>
> Matt
>
>
>
> >
> > Regards
> > Phani
> >
> > On Wed, 26 Feb, 2020, 6:03 PM Hubert Kario, <hkario at redhat.com
> <mailto:hkario at redhat.com>
> > <mailto:hkario at redhat.com <mailto:hkario at redhat.com>>> wrote:
> >
> > On Wednesday, 26 February 2020 08:59:01 CET, Phani 2004 wrote:
> > > Thanks for the quick response Matt.
> > >
> > > My command was :
> > > openssl s_client -connect 10.29.20.26 -cipher
> ECDHE-RSA-AES128-SHA
> > -tls1_2.
> > > I did not realise that "2" was not copied.
> > >
> > > I am trying to implement combined algo support on our engine.
> > > I am using the openssl s_server and s_client apps to validate my
> > > implementation.
> > > The combined algo that i am looking to implement is
> AES128/256 and
> > SHA1.
> > > Its clear that i should always use tls version less than 1.3
> > otherwise GCM
> > > ciphers are used.
> > >
> > > What cipher suites can i use to validate the above
> combination of
> > combined
> > > algo?
> >
> > OpenSSL internally treats key exchange and symmetric cipher
> > separately, so
> > all "*AES128-SHA" ciphers use the same cipher backend
> >
> > you should also test AES256-SHA, AES128-SHA256, AES256-SHA256 and
> > AES256-SHA384
> >
> > > Which tls versions support which cipher suites?
> >
> > *-SHA1 and *MD5 is supported by everything between SSL3 and
> TLS 1.2
> > *-SHA256 and *-SHA384 (if they are not TLS1.3 cipher suites) are
> > supported
> > by TLS 1.2 only
> >
> > > Should i be doing "encrypt-then-mac" or "mac-then-encrypt" in my
> > > implementation?
> > > Does the cipher suite decide this?
> > > If yes, what are the ciphers which do "encrypt-then-mac" and
> what
> > ciphers
> > > to "mac-then-encrypt"?
> >
> > etm vs mte happens based on negotiated extension, not cipher suite
> >
> > --
> > Regards,
> > Hubert Kario
> > Senior Quality Engineer, QE BaseOS Security team
> > Web: www.cz.redhat.com <http://www.cz.redhat.com>
> <http://www.cz.redhat.com>
> > Red Hat Czech s.r.o., Purkyňova 115, 612 00 Brno, Czech Republic
> >
>
More information about the openssl-users
mailing list