Hi Matt,
Thanks for your nice feedback!
Yes, your understanding is correct. We had discussed this issue in mbedtls github, you can refer the details herehttps://github.com/ARMmbed/mbed-crypto/issues/175. We also feedback it to psa arch test team, hope they can fix it soon.
Again, thanks for pointing it out : )
BR, Summer
________________________________ From: TF-M tf-m-bounces@lists.trustedfirmware.org on behalf of Matt via TF-M tf-m@lists.trustedfirmware.org Sent: Wednesday, June 30, 2021 10:33 AM To: tf-m@lists.trustedfirmware.org tf-m@lists.trustedfirmware.org Subject: [TF-M] TFM psa-arch-tests using mbedtls
Hi all TFM experts, 近期我在移植psa-arch-tests到我们的板子上,想看下functional api的测试结果。 TFM用的是1.1的版本,psa-arch-tests 用的是master分支,代码取到 1f96094734897674fa907fba2050bc52e1b3d0fe 这个commit. mbedtls使用的分支是2.23.0。
在测试crypto 的 c021 ,即psa_key_derivation_output_key的测试时,看结果是FAIL的,看了下c021下的test_data.h,check1数组前面两项的信息如下, static const test_data check1[] = { {"Test psa_key_derivation_output_key - Key\n", PSA_KEY_TYPE_DERIVE, {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99, 0x5F, 0xC9, 0x77}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)), PSA_KEY_DERIVATION_INPUT_SECRET, 32, {0}, 0, PSA_KEY_TYPE_AES, BYTES_TO_BITS(AES_32B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, PSA_SUCCESS },
{"Test psa_key_derivation_output_key - Info\n", PSA_KEY_TYPE_DERIVE, {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99, 0x5F, 0xC9, 0x77}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)), PSA_KEY_DERIVATION_INPUT_INFO, 32, "This is the info", 16, PSA_KEY_TYPE_AES, BYTES_TO_BITS(AES_32B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, PSA_SUCCESS },
秘钥派生的算法使用的是PSA_ALG_HKDF(PSA_ALG_SHA_256),在mbedtls库中,使用HKDF算法时,在读取输出即调用 psa_key_derivation_output_bytes或者psa_key_derivation_output_key时,内部调用到 psa_key_derivation_hkdf_read时会检查两个必要的条件,一个是是否已输入key,一个是是否已输入info,如果只输入一个,就返回BAD_STATE。
但是上面 check1的前两项都是只输入一个项, check1的第一项是只输入key, 第二项是只输入info,所以应该返回 BAD_STATE,不应该是 PSA_SUCCESS。
在psa arch tests crypto的 c020测试中早期的版本也有类似的问题,不过最新的代码已变化为输入key和info 这两个量后才去读取派生的结果。
在网上也了解了下HKDF的介绍,也提到了key和info这两个必要的输入: [cid:20571824$1$17a5ac32875$Coremail$majun.china$126.com]
如果使用TFM默认的 mbedtls库,crypto的这个测试应该是通不过的,因为mbedtls最新的版本,在读取派生结果时,依然要检测key和info是否都已输入。请帮check下,是我理解的不对,还是crypto 的 c021 这个case不适合mbedtls软算法库。
以上信息,感谢TFM的各位专家,期盼你们的回复
谢谢!
Hi Summer,
Thanks for your quick reply. Hope psa arch test team can fix it soon.
Thanks, Matt
At 2021-06-30 10:57:41, "Summer Qin" Summer.Qin@arm.com wrote:
Hi Matt,
Thanks for your nice feedback!
Yes, your understanding is correct. We had discussed this issue in mbedtls github, you can refer the details here. We also feedback it to psa arch test team, hope they can fix it soon.
Again, thanks for pointing it out : )
BR, Summer
From: TF-M tf-m-bounces@lists.trustedfirmware.org on behalf of Matt via TF-M tf-m@lists.trustedfirmware.org Sent: Wednesday, June 30, 2021 10:33 AM To: tf-m@lists.trustedfirmware.org tf-m@lists.trustedfirmware.org Subject: [TF-M] TFM psa-arch-tests using mbedtls
Hi all TFM experts, 近期我在移植psa-arch-tests到我们的板子上,想看下functional api的测试结果。 TFM用的是1.1的版本,psa-arch-tests 用的是master分支,代码取到 1f96094734897674fa907fba2050bc52e1b3d0fe 这个commit. mbedtls使用的分支是2.23.0。
在测试crypto 的 c021 ,即psa_key_derivation_output_key的测试时,看结果是FAIL的,看了下c021下的test_data.h,check1数组前面两项的信息如下, static const test_data check1[] = { {"Test psa_key_derivation_output_key - Key\n", PSA_KEY_TYPE_DERIVE, {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99, 0x5F, 0xC9, 0x77}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)), PSA_KEY_DERIVATION_INPUT_SECRET, 32, {0}, 0, PSA_KEY_TYPE_AES, BYTES_TO_BITS(AES_32B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, PSA_SUCCESS },
{"Test psa_key_derivation_output_key - Info\n", PSA_KEY_TYPE_DERIVE, {0x49, 0x8E, 0xC7, 0x7D, 0x01, 0x95, 0x0D, 0x94, 0x2C, 0x16, 0xA5, 0x3E, 0x99, 0x5F, 0xC9, 0x77}, AES_16B_KEY_SIZE, PSA_KEY_USAGE_DERIVE, PSA_ALG_KEY_AGREEMENT(PSA_ALG_ECDH, PSA_ALG_HKDF(PSA_ALG_SHA_256)), PSA_KEY_DERIVATION_INPUT_INFO, 32, "This is the info", 16, PSA_KEY_TYPE_AES, BYTES_TO_BITS(AES_32B_KEY_SIZE), PSA_KEY_USAGE_EXPORT, PSA_ALG_CTR, PSA_SUCCESS },
秘钥派生的算法使用的是PSA_ALG_HKDF(PSA_ALG_SHA_256),在mbedtls库中,使用HKDF算法时,在读取输出即调用 psa_key_derivation_output_bytes或者psa_key_derivation_output_key时,内部调用到 psa_key_derivation_hkdf_read时会检查两个必要的条件,一个是是否已输入key,一个是是否已输入info,如果只输入一个,就返回BAD_STATE。
但是上面 check1的前两项都是只输入一个项, check1的第一项是只输入key, 第二项是只输入info,所以应该返回 BAD_STATE,不应该是 PSA_SUCCESS。
在psa arch tests crypto的 c020测试中早期的版本也有类似的问题,不过最新的代码已变化为输入key和info 这两个量后才去读取派生的结果。
在网上也了解了下HKDF的介绍,也提到了key和info这两个必要的输入:
如果使用TFM默认的 mbedtls库,crypto的这个测试应该是通不过的,因为mbedtls最新的版本,在读取派生结果时,依然要检测key和info是否都已输入。请帮check下,是我理解的不对,还是crypto 的 c021 这个case不适合mbedtls软算法库。
以上信息,感谢TFM的各位专家,期盼你们的回复
谢谢!
tf-m@lists.trustedfirmware.org