1. 08 Apr, 2022 5 commits
    • Tianjia Zhang's avatar
      crypto: arm64/sm4 - add ARMv8 Crypto Extensions implementation · 5b33e0ec
      Tianjia Zhang authored
      This adds ARMv8 implementations of SM4 in ECB, CBC, CFB and CTR
      modes using Crypto Extensions, also includes key expansion operations
      because the Crypto Extensions instruction is much faster than software
      implementations.
      
      The Crypto Extensions for SM4 can only run on ARMv8 implementations
      that have support for these optional extensions.
      
      Benchmark on T-Head Yitian-710 2.75 GHz, the data comes from the 218
      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 |  80.05    91.42    93.66    94.77    95.69    95.77    95.86
          ECB dec |  79.98    91.41    93.64    94.76    95.66    95.77    95.85
          CBC enc |  78.55    86.50    88.02    88.77    89.36    89.42    89.48
          CBC dec |  76.82    89.06    91.52    92.77    93.75    93.83    93.96
          CFB enc |  77.64    86.13    87.62    88.42    89.08    88.83    89.18
          CFB dec |  77.57    88.34    90.36    91.45    92.34    92.00    92.44
          CTR enc |  77.80    88.28    90.23    91.22    92.11    91.81    92.25
          CTR dec |  77.83    88.22    90.22    91.22    92.04    91.82    92.28
      sm4-neon
          ECB enc |  28.31   112.77   203.03   209.89   215.49   202.11   210.59
          ECB dec |  28.36   113.45   203.23   210.00   215.52   202.13   210.65
          CBC enc |  79.32    87.02    88.51    89.28    89.85    89.89    89.97
          CBC dec |  28.29   112.20   203.30   209.82   214.99   201.51   209.95
          CFB enc |  79.59    87.16    88.54    89.30    89.83    89.62    89.92
          CFB dec |  28.12   111.05   202.47   209.02   214.21   210.90   209.12
          CTR enc |  28.04   108.81   200.62   206.65   211.78   208.78   206.74
          CTR dec |  28.02   108.82   200.45   206.62   211.78   208.74   206.70
      sm4-ce-cipher
          ECB enc | 336.79   587.13   682.70   747.37   803.75   811.52   818.06
          ECB dec | 339.18   584.52   679.72   743.68   798.82   803.83   811.54
          CBC enc | 316.63   521.47   597.00   647.14   690.82   695.21   700.55
          CBC dec | 291.80   503.79   585.66   640.82   689.86   695.16   701.72
          CFB enc | 294.79   482.31   552.13   594.71   631.60   628.91   638.92
          CFB dec | 293.09   466.44   526.56   563.17   594.41   592.26   601.97
          CTR enc | 309.61   506.13   576.86   620.47   656.38   654.51   665.10
          CTR dec | 306.69   505.57   576.84   620.18   657.09   654.52   665.32
      sm4-ce
          ECB enc | 366.96  1329.81  2024.29  2755.50  3790.07  3861.91  4051.40
          ECB dec | 367.30  1323.93  2018.72  2747.43  3787.39  3862.55  4052.62
          CBC enc | 358.09   682.68   807.24   885.35   958.29   963.60   973.73
          CBC dec | 366.51  1303.63  1978.64  2667.93  3624.53  3683.41  3856.08
          CFB enc | 351.51   681.26   807.81   893.10   968.54   969.17   985.83
          CFB dec | 354.98  1266.61  1929.63  2634.81  3614.23  3611.59  3841.68
          CTR enc | 324.23  1121.25  1689.44  2256.70  2981.90  3007.79  3060.74
          CTR dec | 324.18  1120.44  1694.31  2258.32  2982.01  3010.09  3060.99
      Signed-off-by: default avatarTianjia Zhang <tianjia.zhang@linux.alibaba.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      5b33e0ec
    • Tianjia Zhang's avatar
      crypto: arm64/sm4 - add ARMv8 NEON implementation · 4f1aef9b
      Tianjia Zhang authored
      This adds ARMv8 NEON implementations of SM4 in ECB, CBC, CFB and CTR
      modes. This implementation uses the plain NEON instruction set, All
      S-BOX substitutions uses the tbl/tbx instructions of ARMv8, combined
      with the out-of-order execution in CPU, this optimization supports
      encryption of up to 8 blocks at the same time.
      
      The performance of encrypting one block is not as good as software
      implementation, so the encryption operations of CBC and CFB still
      use pure software algorithms.
      
      Benchmark on T-Head Yitian-710 2.75 GHz, the data comes from the 218
      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 |  80.05    91.42    93.66    94.77    95.69    95.77    95.86
          ECB dec |  79.98    91.41    93.64    94.76    95.66    95.77    95.85
          CBC enc |  78.55    86.50    88.02    88.77    89.36    89.42    89.48
          CBC dec |  76.82    89.06    91.52    92.77    93.75    93.83    93.96
          CFB enc |  77.64    86.13    87.62    88.42    89.08    88.83    89.18
          CFB dec |  77.57    88.34    90.36    91.45    92.34    92.00    92.44
          CTR enc |  77.80    88.28    90.23    91.22    92.11    91.81    92.25
          CTR dec |  77.83    88.22    90.22    91.22    92.04    91.82    92.28
      sm4-neon
          ECB enc |  28.31   112.77   203.03   209.89   215.49   202.11   210.59
          ECB dec |  28.36   113.45   203.23   210.00   215.52   202.13   210.65
          CBC enc |  79.32    87.02    88.51    89.28    89.85    89.89    89.97
          CBC dec |  28.29   112.20   203.30   209.82   214.99   201.51   209.95
          CFB enc |  79.59    87.16    88.54    89.30    89.83    89.62    89.92
          CFB dec |  28.12   111.05   202.47   209.02   214.21   210.90   209.12
          CTR enc |  28.04   108.81   200.62   206.65   211.78   208.78   206.74
          CTR dec |  28.02   108.82   200.45   206.62   211.78   208.74   206.70
      Signed-off-by: default avatarTianjia Zhang <tianjia.zhang@linux.alibaba.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      4f1aef9b
    • Tianjia Zhang's avatar
      crypto: arm64/sm4-ce - rename to sm4-ce-cipher · 02436762
      Tianjia Zhang authored
      The subsequent patches of the series will have an implementation
      of SM4-ECB/CBC/CFB/CTR accelerated by the CE instruction set, which
      conflicts with the current module name. In order to keep the naming
      rules of the AES algorithm consistent, the sm4-ce algorithm is
      renamed to sm4-ce-cipher.
      
      In addition, the speed of sm4-ce-cipher is better than that of SM4
      NEON. By the way, the priority of the algorithm is adjusted to 300,
      which is also to leave room for the priority of SM4 NEON.
      Signed-off-by: default avatarTianjia Zhang <tianjia.zhang@linux.alibaba.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      02436762
    • Tianjia Zhang's avatar
      crypto: sm4 - export sm4 constant arrays · 73c919d3
      Tianjia Zhang authored
      Export the constant arrays fk, ck, sbox of the SM4 algorithm, and
      add the 'crypto_sm4_' prefix, where sbox is used in the SM4 NEON
      implementation for the tbl/tbx instruction to replace the S-BOX,
      and the fk, ck arrays are used in the SM4 CE implementation. Use
      the sm4ekey instruction to speed up key expansion operations.
      Signed-off-by: default avatarTianjia Zhang <tianjia.zhang@linux.alibaba.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      73c919d3
    • Jason A. Donenfeld's avatar
      crypto: sm3,sm4 - move into crypto directory · d2825fa9
      Jason A. Donenfeld authored
      The lib/crypto libraries live in lib because they are used by various
      drivers of the kernel. In contrast, the various helper functions in
      crypto are there because they're used exclusively by the crypto API. The
      SM3 and SM4 helper functions were erroniously moved into lib/crypto/
      instead of crypto/, even though there are no in-kernel users outside of
      the crypto API of those functions. This commit moves them into crypto/.
      
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
      Cc: Eric Biggers <ebiggers@kernel.org>
      Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      d2825fa9
  2. 03 Apr, 2022 8 commits
  3. 02 Apr, 2022 27 commits