[v3,1/2] blk-crypto: Add support for SM4-XTS blk crypto mode

Message ID 20221125121630.87793-2-tianjia.zhang@linux.alibaba.com
State New
Headers
Series Add SM4 XTS symmetric algorithm for blk-crypto and fscrypt |

Commit Message

Tianjia Zhang Nov. 25, 2022, 12:16 p.m. UTC
  SM4 is a symmetric algorithm widely used in China, and SM4-XTS is also
used to encrypt length-preserving data, these algoritms are mandatory
in many scenarios. This patch enables the use of SM4-XTS algorithm in
block inline encryption, and provides support for fscrypt.

Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
---
 block/blk-crypto.c         | 6 ++++++
 include/linux/blk-crypto.h | 1 +
 2 files changed, 7 insertions(+)
  

Comments

Eric Biggers Nov. 25, 2022, 6:35 p.m. UTC | #1
On Fri, Nov 25, 2022 at 08:16:29PM +0800, Tianjia Zhang wrote:
> SM4 is a symmetric algorithm widely used in China, and SM4-XTS is also
> used to encrypt length-preserving data, these algoritms are mandatory
> in many scenarios. This patch enables the use of SM4-XTS algorithm in
> block inline encryption, and provides support for fscrypt.
> 
> Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
> ---
>  block/blk-crypto.c         | 6 ++++++
>  include/linux/blk-crypto.h | 1 +
>  2 files changed, 7 insertions(+)
> 
> diff --git a/block/blk-crypto.c b/block/blk-crypto.c
> index a496aaef85ba..e44709fc6a08 100644
> --- a/block/blk-crypto.c
> +++ b/block/blk-crypto.c
> @@ -36,6 +36,12 @@ const struct blk_crypto_mode blk_crypto_modes[] = {
>  		.keysize = 32,
>  		.ivsize = 32,
>  	},
> +	[BLK_ENCRYPTION_MODE_SM4_XTS] = {
> +		.name = "SM4-XTS",
> +		.cipher_str = "xts(sm4)",
> +		.keysize = 32,
> +		.ivsize = 16,
> +	},
>  };
>  
>  /*
> diff --git a/include/linux/blk-crypto.h b/include/linux/blk-crypto.h
> index 69b24fe92cbf..26b1b71c3091 100644
> --- a/include/linux/blk-crypto.h
> +++ b/include/linux/blk-crypto.h
> @@ -13,6 +13,7 @@ enum blk_crypto_mode_num {
>  	BLK_ENCRYPTION_MODE_AES_256_XTS,
>  	BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV,
>  	BLK_ENCRYPTION_MODE_ADIANTUM,
> +	BLK_ENCRYPTION_MODE_SM4_XTS,
>  	BLK_ENCRYPTION_MODE_MAX,

The commit message should mention that this is needed for the inlinecrypt mount
option to be supported via blk-crypto-fallback, as it is for the other fscrypt
modes.  (Since there's no inline encryption hardware that supports SM4-XTS.)

Anyway, if SM4-XTS support is really being added to fscrypt, then this patch
looks fine.  Jens, are you okay with me taking it through the fscrypt tree?

- Eric
  
Jens Axboe Nov. 25, 2022, 6:37 p.m. UTC | #2
On 11/25/22 11:35 AM, Eric Biggers wrote:
> On Fri, Nov 25, 2022 at 08:16:29PM +0800, Tianjia Zhang wrote:
>> SM4 is a symmetric algorithm widely used in China, and SM4-XTS is also
>> used to encrypt length-preserving data, these algoritms are mandatory
>> in many scenarios. This patch enables the use of SM4-XTS algorithm in
>> block inline encryption, and provides support for fscrypt.
>>
>> Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
>> ---
>>  block/blk-crypto.c         | 6 ++++++
>>  include/linux/blk-crypto.h | 1 +
>>  2 files changed, 7 insertions(+)
>>
>> diff --git a/block/blk-crypto.c b/block/blk-crypto.c
>> index a496aaef85ba..e44709fc6a08 100644
>> --- a/block/blk-crypto.c
>> +++ b/block/blk-crypto.c
>> @@ -36,6 +36,12 @@ const struct blk_crypto_mode blk_crypto_modes[] = {
>>  		.keysize = 32,
>>  		.ivsize = 32,
>>  	},
>> +	[BLK_ENCRYPTION_MODE_SM4_XTS] = {
>> +		.name = "SM4-XTS",
>> +		.cipher_str = "xts(sm4)",
>> +		.keysize = 32,
>> +		.ivsize = 16,
>> +	},
>>  };
>>  
>>  /*
>> diff --git a/include/linux/blk-crypto.h b/include/linux/blk-crypto.h
>> index 69b24fe92cbf..26b1b71c3091 100644
>> --- a/include/linux/blk-crypto.h
>> +++ b/include/linux/blk-crypto.h
>> @@ -13,6 +13,7 @@ enum blk_crypto_mode_num {
>>  	BLK_ENCRYPTION_MODE_AES_256_XTS,
>>  	BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV,
>>  	BLK_ENCRYPTION_MODE_ADIANTUM,
>> +	BLK_ENCRYPTION_MODE_SM4_XTS,
>>  	BLK_ENCRYPTION_MODE_MAX,
> 
> The commit message should mention that this is needed for the inlinecrypt mount
> option to be supported via blk-crypto-fallback, as it is for the other fscrypt
> modes.  (Since there's no inline encryption hardware that supports SM4-XTS.)
> 
> Anyway, if SM4-XTS support is really being added to fscrypt, then this patch
> looks fine.  Jens, are you okay with me taking it through the fscrypt tree?

Yes, go ahead.
  
Bagas Sanjaya Nov. 28, 2022, 1:26 p.m. UTC | #3
On 11/25/22 19:16, Tianjia Zhang wrote:
> SM4 is a symmetric algorithm widely used in China, and SM4-XTS is also
> used to encrypt length-preserving data, these algoritms are mandatory
> in many scenarios. This patch enables the use of SM4-XTS algorithm in
> block inline encryption, and provides support for fscrypt.
> 

Please reformulate the patch description in imperative mood instead.
Also, take care of wording and punctuation - commas should not be
used for continuing distinct sentences/clauses where separating them
by a full stop is more appropriate.

That is, the description should be:

```
SM4 is a symmetric cipher algorithm widely used in China. The SM4-XTS
variant is used to encrypt length-preserving data.

Enable the algorithm in block inline encryption, as well as enable
fscrypt support.
```

Thanks.
  

Patch

diff --git a/block/blk-crypto.c b/block/blk-crypto.c
index a496aaef85ba..e44709fc6a08 100644
--- a/block/blk-crypto.c
+++ b/block/blk-crypto.c
@@ -36,6 +36,12 @@  const struct blk_crypto_mode blk_crypto_modes[] = {
 		.keysize = 32,
 		.ivsize = 32,
 	},
+	[BLK_ENCRYPTION_MODE_SM4_XTS] = {
+		.name = "SM4-XTS",
+		.cipher_str = "xts(sm4)",
+		.keysize = 32,
+		.ivsize = 16,
+	},
 };
 
 /*
diff --git a/include/linux/blk-crypto.h b/include/linux/blk-crypto.h
index 69b24fe92cbf..26b1b71c3091 100644
--- a/include/linux/blk-crypto.h
+++ b/include/linux/blk-crypto.h
@@ -13,6 +13,7 @@  enum blk_crypto_mode_num {
 	BLK_ENCRYPTION_MODE_AES_256_XTS,
 	BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV,
 	BLK_ENCRYPTION_MODE_ADIANTUM,
+	BLK_ENCRYPTION_MODE_SM4_XTS,
 	BLK_ENCRYPTION_MODE_MAX,
 };