Re: [PATCH v4 0/7] crypto: CAESAR final portfolio follow-up

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

 



Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote:
> This v2/v3/v4 is a follow-up to both 'crypto: aegis128 - add NEON intrinsics
> version for ARM/arm64' [0] and 'crypto: morus - remove generic and x86
> implementations' [1]. Since there is some overlap, it makes sense to merge
> them and avoid merge conflicts.
> 
> Now that aegis128 has been announced as one of the winners of the CAESAR
> competition, it's time to provide some better support for it on arm64 (and
> 32-bit ARM *)
> 
> This time, instead of cloning the generic driver twice and rewriting half
> of it in arm64 and ARM assembly, add hooks for an accelerated SIMD path to
> the generic driver, and populate it with a C version using NEON intrinsics
> that can be built for both ARM and arm64. This results in a speedup of ~11x,
> resulting in a performance of 2.2 cycles per byte on Cortex-A53.
> 
> Patches #3 and #4 are fixes/improvements for the generic code. Patch #5
> adds the plumbing for using a SIMD accelerated implementation. Patch #6
> adds the ARM and arm64 code, and patch #7 adds a speed test.
> 
> Since aegis128l and aegis256 were not selected, and nor where any of the
> morus contestants (which are in fact found to be cryptographically broken),
> patches #1 and #2 remove these entirely.
> 
> Changes since v3:
> - drop always_inline annotation from aegis_aes_round(), which triggers a
>  warning on ARM
> - add Ondrej's R-b to the series
> 
> Changes since v2:
> - drop AEGIS128L/256 Kconfig symbols from crypto/Kconfig
> - ensure that aese/aesmc are issued in pairs
> 
> Changes since v1s:
> - add reference to research paper (#1)
> - drop hunks against m68k defconfigs - these get regenerated automatically
>  anyway, and so it is better to avoid the potential merge conflicts.
> - drop patch to use unaligned accessors where it isn't needed
> - drop hunks against aegis variants that are being removed (#3)
> - add acks from Ondrej
> 
> * 32-bit ARM today rarely provides the special AES instruction that the
>  implementation in this series relies on, but this may change in the future,
>  and the NEON intrinsics code can be compiled for both ISAs.
> 
> Cc: Eric Biggers <ebiggers@xxxxxxxxxx>
> Cc: Ondrej Mosnacek <omosnace@xxxxxxxxxx>
> Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> Cc: Steve Capper <steve.capper@xxxxxxx>
> Cc: Milan Broz <gmazyland@xxxxxxxxx>
> 
> [0] https://lore.kernel.org/linux-crypto/20190624073818.29296-1-ard.biesheuvel@xxxxxxxxxx/
> [1] https://lore.kernel.org/linux-crypto/20190625145254.28510-1-ard.biesheuvel@xxxxxxxxxx/
> 
> Ard Biesheuvel (7):
>  crypto: morus - remove generic and x86 implementations
>  crypto: aegis128l/aegis256 - remove x86 and generic implementations
>  crypto: aegis128 - drop empty TFM init/exit routines
>  crypto: aegis - avoid prerotated AES tables
>  crypto: aegis128 - add support for SIMD acceleration
>  crypto: aegis128 - provide a SIMD implementation based on NEON
>    intrinsics
>  crypto: tcrypt - add a speed test for AEGIS128
> 
> arch/x86/crypto/Makefile               |   17 -
> arch/x86/crypto/aegis128l-aesni-asm.S  |  826 ------
> arch/x86/crypto/aegis128l-aesni-glue.c |  297 ---
> arch/x86/crypto/aegis256-aesni-asm.S   |  703 -----
> arch/x86/crypto/aegis256-aesni-glue.c  |  297 ---
> arch/x86/crypto/morus1280-avx2-asm.S   |  622 -----
> arch/x86/crypto/morus1280-avx2-glue.c  |   66 -
> arch/x86/crypto/morus1280-sse2-asm.S   |  896 -------
> arch/x86/crypto/morus1280-sse2-glue.c  |   65 -
> arch/x86/crypto/morus1280_glue.c       |  209 --
> arch/x86/crypto/morus640-sse2-asm.S    |  615 -----
> arch/x86/crypto/morus640-sse2-glue.c   |   65 -
> arch/x86/crypto/morus640_glue.c        |  204 --
> crypto/Kconfig                         |   89 +-
> crypto/Makefile                        |   16 +-
> crypto/aegis.h                         |   28 +-
> crypto/{aegis128.c => aegis128-core.c} |   53 +-
> crypto/aegis128-neon-inner.c           |  149 ++
> crypto/aegis128-neon.c                 |   43 +
> crypto/aegis128l.c                     |  522 ----
> crypto/aegis256.c                      |  473 ----
> crypto/morus1280.c                     |  542 ----
> crypto/morus640.c                      |  533 ----
> crypto/tcrypt.c                        |    7 +
> crypto/testmgr.c                       |   24 -
> crypto/testmgr.h                       | 2691 --------------------
> include/crypto/morus1280_glue.h        |   97 -
> include/crypto/morus640_glue.h         |   97 -
> include/crypto/morus_common.h          |   18 -
> 29 files changed, 266 insertions(+), 9998 deletions(-)
> delete mode 100644 arch/x86/crypto/aegis128l-aesni-asm.S
> delete mode 100644 arch/x86/crypto/aegis128l-aesni-glue.c
> delete mode 100644 arch/x86/crypto/aegis256-aesni-asm.S
> delete mode 100644 arch/x86/crypto/aegis256-aesni-glue.c
> delete mode 100644 arch/x86/crypto/morus1280-avx2-asm.S
> delete mode 100644 arch/x86/crypto/morus1280-avx2-glue.c
> delete mode 100644 arch/x86/crypto/morus1280-sse2-asm.S
> delete mode 100644 arch/x86/crypto/morus1280-sse2-glue.c
> delete mode 100644 arch/x86/crypto/morus1280_glue.c
> delete mode 100644 arch/x86/crypto/morus640-sse2-asm.S
> delete mode 100644 arch/x86/crypto/morus640-sse2-glue.c
> delete mode 100644 arch/x86/crypto/morus640_glue.c
> rename crypto/{aegis128.c => aegis128-core.c} (89%)
> create mode 100644 crypto/aegis128-neon-inner.c
> create mode 100644 crypto/aegis128-neon.c
> delete mode 100644 crypto/aegis128l.c
> delete mode 100644 crypto/aegis256.c
> delete mode 100644 crypto/morus1280.c
> delete mode 100644 crypto/morus640.c
> delete mode 100644 include/crypto/morus1280_glue.h
> delete mode 100644 include/crypto/morus640_glue.h
> delete mode 100644 include/crypto/morus_common.h

All applied.  Thanks.
-- 
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt



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

  Powered by Linux