• Tianjia Zhang's avatar
    crypto: x86/sm4 - add AES-NI/AVX/x86_64 implementation · a7ee22ee
    Tianjia Zhang authored
    This patch adds AES-NI/AVX/x86_64 assembler implementation of SM4
    block cipher. Through two affine transforms, we can use the AES S-Box
    to simulate the SM4 S-Box to achieve the effect of instruction
    acceleration.
    
    The main algorithm implementation comes from SM4 AES-NI work by
    libgcrypt and Markku-Juhani O. Saarinen at:
    https://github.com/mjosaarinen/sm4ni
    
    This optimization supports the four modes of SM4, ECB, CBC, CFB, and
    CTR. Since CBC and CFB do not support multiple block parallel
    encryption, the optimization effect is not obvious.
    
    Benchmark on Intel Xeon Cascadelake, the data comes from the 218 mode
    and 518 mode of tcrypt. The abscissas are blocks of different lengths.
    The data is tabulated and the unit is Mb/s:
    
    sm4-generic   |    16      64     128     256    1024    1420    4096
          ECB enc | 40.99   46.50   48.05   48.41   49.20   49.25   49.28
          ECB dec | 41.07   46.99   48.15   48.67   49.20   49.25   49.29
          CBC enc | 37.71   45.28   46.77   47.60   48.32   48.37   48.40
          CBC dec | 36.48   44.82   46.43   47.45   48.23   48.30   48.36
          CFB enc | 37.94   44.84   46.12   46.94   47.57   47.46   47.68
          CFB dec | 37.50   42.84   43.74   44.37   44.85   44.80   44.96
          CTR enc | 39.20   45.63   46.75   47.49   48.09   47.85   48.08
          CTR dec | 39.64   45.70   46.72   47.47   47.98   47.88   48.06
    sm4-aesni-avx
          ECB enc | 33.75  134.47  221.64  243.43  264.05  251.58  258.13
          ECB dec | 34.02  134.92  223.11  245.14  264.12  251.04  258.33
          CBC enc | 38.85   46.18   47.67   48.34   49.00   48.96   49.14
          CBC dec | 33.54  131.29  223.88  245.27  265.50  252.41  263.78
          CFB enc | 38.70   46.10   47.58   48.29   49.01   48.94   49.19
          CFB dec | 32.79  128.40  223.23  244.87  265.77  253.31  262.79
          CTR enc | 32.58  122.23  220.29  241.16  259.57  248.32  256.69
          CTR dec | 32.81  122.47  218.99  241.54  258.42  248.58  256.61
    Signed-off-by: default avatarTianjia Zhang <tianjia.zhang@linux.alibaba.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    a7ee22ee
sm4-aesni-avx-asm_64.S 17.6 KB