mac80211: fils_aead: Use crypto api CMAC shash rather than bare cipher
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 6 Feb 2017 10:49:27 +0000 (10:49 +0000)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 8 Feb 2017 08:19:17 +0000 (09:19 +0100)
commitfe8de3da13bdbcbe8b583a3bbadf677da0f04f83
treeb57055b47f24bf61bab71eed776f258974d6b6f4
parentb699b71d82e77203be43bda5ff1b72516f129581
mac80211: fils_aead: Use crypto api CMAC shash rather than bare cipher

Switch the FILS AEAD code to use a cmac(aes) shash instantiated by the
crypto API rather than reusing the open coded implementation in
aes_cmac_vector(). This makes the code more understandable, and allows
platforms to implement cmac(aes) in a more secure (*) and efficient way
than is typically possible when using the AES cipher directly.

So replace the crypto_cipher by a crypto_shash, and update the aes_s2v()
routine to call the shash interface directly.

* In particular, the generic table based AES implementation is sensitive
  to known-plaintext timing attacks on the key, to which AES based MAC
  algorithms are especially vulnerable, given that their plaintext is not
  usually secret. Time invariant alternatives are available (e.g., based
  on SIMD algorithms), but may incur a setup cost that is prohibitive when
  operating on a single block at a time, which is why they don't usually
  expose the cipher API.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/Kconfig
net/mac80211/aes_cmac.h
net/mac80211/fils_aead.c