Using ECDSA-P265 (and ED25519) signature in mcuboot

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Using ECDSA-P265 (and ED25519) signature in mcuboot

824 次查看
mastupristi
Senior Contributor I

Hi,

 

I'm trying mcuboot_opensource and ota_mcuboot_basic examples.

The example use rsa2048 out-of-the-box and works well.

Since ecdsa key pair are also provided (files bootutil/nxp_port/keys/sign-ecdsa-p256-*), I would like to try this type of signature.

I have replaced 

#define CONFIG_BOOT_SIGNATURE_TYPE_RSA
#define CONFIG_BOOT_SIGNATURE_TYPE_RSA_LEN 2048


with

#define CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256


then I have signed the ota_mcuboot_basic binary:

python3 imgtool.py sign \
	--key evkmimxrt1020_mcuboot_opensource_v2.2.0/bootutil/nxp_port/keys/sign-ecdsa-p256-priv.pem \
        --align 4 \
	--header-size 0x400 \
	--pad-header \
	--slot-size 0x100000 \
	--max-sectors 800 \
	--version "1.1" \
        evkmimxrt1020_ota_mcuboot_basic.bin \
	evkmimxrt1020_ota_mcuboot_basic_signed_ecdsap256.bin

 

But it doesn't work.

Which steps do I need to do to make it works?

 

The further test for me is to use ed25519, that is not provided out-of-the-box in the examples. Could you list the steps to make is works as well?

 

regards

Max

标记 (3)
0 项奖励
回复
3 回复数

778 次查看
diego_charles
NXP TechSupport
NXP TechSupport

Hi @mastupristi 

Which MCU are you using?  I want to test with you on the same platform.

Have you updated the MCUBoot to contain the public ECDSA_P256 key? 

Diego

0 项奖励
回复

766 次查看
mastupristi
Senior Contributor I

Hi @diego_charles 

 

Which MCU are you using?

RT1021. I'm testing on MIMXRT1020-EVK

 

Have you updated the MCUBoot to contain the public ECDSA_P256 key?

Yes, this is done automatically by the example..

in source/mcux_config.h I have substituted #define CONFIG_BOOT_ENCRYPT_RSA with #define CONFIG_BOOT_ENCRYPT_ECDSA_P256
In file source/sblconfig.h I have substituted 

#define CONFIG_BOOT_SIGNATURE_TYPE_RSA
#define CONFIG_BOOT_SIGNATURE_TYPE_RSA_LEN 2048

with

#define CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256

 

in file bootutil/nxp_port/keys.c the correct key file should be selected based on the definitions:

#if defined(MCUBOOT_SIGN_RSA)
#include "sign-rsa2048-pub.c"
#elif defined(MCUBOOT_SIGN_EC256)
#include "sign-ecdsa-p256-pub.c"
#else
#error "No public key available for given signing algorithm."
#endif

 

best regards

Max

0 项奖励
回复

446 次查看
diego_charles
NXP TechSupport
NXP TechSupport

Hi @mastupristi 

I am sorry for the delay.

I noticed that none of our i.MX RT samples for MCUboot use the key you want. But the MCXN and MCXA examples for MCUBoot use the ecdsa-p256. I think the source could help us as a reference. 

Diego

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2156738%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9C%A8%20mcuboot%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20ECDSA-P265%EF%BC%88%E5%92%8C%20ED25519%EF%BC%89%E7%AD%BE%E5%90%8D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2156738%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%82%A8%E5%A5%BD%EF%BC%8C%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E5%B0%9D%E8%AF%95%20mcuboot_opensource%20%E5%92%8C%20ota_mcuboot_basic%20%E7%A4%BA%E4%BE%8B%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E8%AF%A5%E7%A4%BA%E4%BE%8B%E5%BC%80%E7%AE%B1%E5%8D%B3%E7%94%A8%20rsa2048%EF%BC%8C%E8%BF%90%E8%A1%8C%E8%89%AF%E5%A5%BD%E3%80%82%3C%2FP%3E%3CP%3E%E7%94%B1%E4%BA%8E%E4%B9%9F%E6%8F%90%E4%BE%9B%E4%BA%86%20ecdsa%20%E5%AF%86%E9%92%A5%E5%AF%B9%EF%BC%88%E6%96%87%E4%BB%B6%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3Ebootutil%2F%3C%2FFONT%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3Enxp%3C%2FFONT%3E%20_port%2Fkeys%2Fsign-ecdsa-p256-*%EF%BC%89%EF%BC%8C%E6%88%91%E6%83%B3%E8%AF%95%E8%AF%95%E8%BF%99%E7%A7%8D%E7%B1%BB%E5%9E%8B%E7%9A%84%E7%AD%BE%E5%90%8D%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%91%E6%9B%B4%E6%8D%A2%E4%BA%86%20%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%23define%20CONFIG_BOOT_SIGNATURE_TYPE_RSA%0A%23define%20CONFIG_BOOT_SIGNATURE_TYPE_RSA_LEN%202048%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3E%E4%B8%8E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%23define%20CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3E%E7%84%B6%E5%90%8E%E6%88%91%E7%AD%BE%E7%BD%B2%E4%BA%86%20ota_mcuboot_basic%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%EF%BC%9A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%20translate%3D%22no%22%3Epython3%20imgtool.py%20sign%20%5C%0A%09--key%20evkmimxrt1020_mcuboot_opensource_v2.2.0%2Fbootutil%2Fnxp_port%2Fkeys%2Fsign-ecdsa-p256-priv.pem%20%5C%0A%20%20%20%20%20%20%20%20--align%204%20%5C%0A%09--header-size%200x400%20%5C%0A%09--pad-header%20%5C%0A%09--slot-size%200x100000%20%5C%0A%09--max-sectors%20800%20%5C%0A%09--version%20%221.1%22%20%5C%0A%20%20%20%20%20%20%20%20evkmimxrt1020_ota_mcuboot_basic.bin%20%5C%0A%09evkmimxrt1020_ota_mcuboot_basic_signed_ecdsap256.bin%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E4%BD%86%E8%BF%99%E8%A1%8C%E4%B8%8D%E9%80%9A%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E9%9C%80%E8%A6%81%E9%87%87%E5%8F%96%E5%93%AA%E4%BA%9B%E6%AD%A5%E9%AA%A4%E6%89%8D%E8%83%BD%E4%BD%BF%E5%85%B6%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%EF%BC%9F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E5%AF%B9%E6%88%91%E6%9D%A5%E8%AF%B4%EF%BC%8C%E8%BF%9B%E4%B8%80%E6%AD%A5%E7%9A%84%E6%B5%8B%E8%AF%95%E6%98%AF%E4%BD%BF%E7%94%A8%20ed25519%EF%BC%8C%E8%80%8C%E7%A4%BA%E4%BE%8B%E4%B8%AD%E5%B9%B6%E6%B2%A1%E6%9C%89%E6%8F%90%E4%BE%9B%E5%BC%80%E7%AE%B1%E5%8D%B3%E7%94%A8%E7%9A%84%20ed25519%E3%80%82%E6%82%A8%E8%83%BD%E5%88%97%E5%87%BA%E4%BD%BF%E5%85%B6%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%90%97%EF%BC%9F%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E6%AD%A4%E8%87%B4%E9%97%AE%E5%80%99%3C%2FP%3E%3CP%3E%E6%9C%80%E5%A4%A7%E5%80%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2178598%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Using%20ECDSA-P265%20(and%20ED25519)%20signature%20in%20mcuboot%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2178598%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F124967%22%20target%3D%22_blank%22%3E%40mastupristi%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E5%BE%88%E6%8A%B1%E6%AD%89%E8%80%BD%E8%AF%AF%E4%BA%86%E6%82%A8%E7%9A%84%E6%97%B6%E9%97%B4%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%88%91%E6%B3%A8%E6%84%8F%E5%88%B0%E6%88%91%E4%BB%AC%E7%94%A8%E4%BA%8E%20MCUboot%20%E7%9A%84%20i.MX%20RT%20%E7%A4%BA%E4%BE%8B%E9%83%BD%E6%B2%A1%E6%9C%89%E4%BD%BF%E7%94%A8%E6%82%A8%E6%83%B3%E8%A6%81%E7%9A%84%E5%AF%86%E9%92%A5%E3%80%82%E4%BD%86%20MCUBoot%20%E7%9A%84%20MCXN%20%E5%92%8C%20MCXA%20%E7%A4%BA%E4%BE%8B%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%20ecdsa-p256%E3%80%82%E6%88%91%E8%AE%A4%E4%B8%BA%E6%B6%88%E6%81%AF%E6%9D%A5%E6%BA%90%E5%8F%AF%E4%BB%A5%E5%B8%AE%E5%8A%A9%E6%88%91%E4%BB%AC%E4%BD%9C%E4%B8%BA%E5%8F%82%E8%80%83%E3%80%82%3C%2FP%3E%0A%3CP%3E%E8%BF%AA%E4%BA%9A%E6%88%88%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2158833%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Using%20ECDSA-P265%20(and%20ED25519)%20signature%20in%20mcuboot%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2158833%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F89833%22%20target%3D%22_blank%22%3E%40diego_charles%3C%2FA%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CP%3E%E6%82%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%93%AA%E7%A7%8D%20MCU%EF%BC%9F%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3ERT1021.%E6%88%91%E6%AD%A3%E5%9C%A8%20MIMXRT1020-EVK%20%E4%B8%8A%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95%3C%2FP%3E%3CBR%20%2F%3E%3CBLOCKQUOTE%3E%3CP%3E%E6%82%A8%E6%98%AF%E5%90%A6%E6%9B%B4%E6%96%B0%E4%BA%86%20MCUBoot%EF%BC%8C%E4%BD%BF%E5%85%B6%E5%8C%85%E5%90%AB%E5%85%AC%E5%BC%80%20ECDSA_P256%20%E5%AF%86%E9%92%A5%EF%BC%9F%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%E6%98%AF%E7%9A%84%EF%BC%8C%E8%BF%99%E5%B0%86%E7%94%B1%E7%A4%BA%E4%BE%8B%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%E3%80%82%3C%2FP%3E%3CP%3E%E5%9C%A8%20source%2Fmcux_config.h%20%E4%B8%AD%E6%88%91%E5%9C%A8%E6%96%87%E4%BB%B6%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%20source%2Fsblconfig%3C%2FFONT%3E.h%20%E4%B8%AD%E7%94%A8%23define%20%20CONFIG_BOOT_ENCRYPT_RSA%E4%BB%A3%E6%9B%BF%E4%BA%86%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%23define%20CONFIG_BOOT_ENCRYPT_ECDSA_P256%3C%2FFONT%3E%3CBR%20%2F%3E%E6%88%91%E4%BB%A3%E4%B9%8B%E4%BB%A5%20%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22comic%20sans%20ms%2Csans-serif%22%3E%23define%20CONFIG_BOOT_SIGNATURE_TYPE_RSA%3C%2FFONT%3E%3CBR%20%2F%3E%20%23define%3CFONT%20face%3D%22comic%20sans%20ms%2Csans-serif%22%3E%20CONFIG_BOOT_SIGNATURE_TYPE_RSA_LEN%202048%3C%2FFONT%3E%3CBR%20%2F%3E%3CBR%20%2F%3Ewith%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22courier%20new%2Ccourier%22%3E%23define%20CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256%3C%2FFONT%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E6%96%87%E4%BB%B6%20bootutil%2Fnxp_port%2Fkeys.c%20%E4%B8%AD%EF%BC%8C%E6%A0%B9%E6%8D%AE%E5%AE%9A%E4%B9%89%E9%80%89%E6%8B%A9%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%AF%86%E9%92%A5%E6%96%87%E4%BB%B6%EF%BC%9A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%23if%20defined(MCUBOOT_SIGN_RSA)%0A%23include%20%22sign-rsa2048-pub.c%22%0A%23elif%20defined(MCUBOOT_SIGN_EC256)%0A%23include%20%22sign-ecdsa-p256-pub.c%22%0A%23else%0A%23error%20%22No%20public%20key%20available%20for%20given%20signing%20algorithm.%22%0A%23endif%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3CP%3E%E6%9C%80%E5%A4%A7%E5%80%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2158536%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Using%20ECDSA-P265%20(and%20ED25519)%20signature%20in%20mcuboot%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2158536%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F124967%22%20target%3D%22_blank%22%3E%40mastupristi%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%93%AA%E7%A7%8D%20MCU%EF%BC%9F%20%E6%88%91%E6%83%B3%E5%92%8C%E4%BD%A0%E5%9C%A8%E5%90%8C%E4%B8%80%E4%B8%AA%E5%B9%B3%E5%8F%B0%E4%B8%8A%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E6%98%AF%E5%90%A6%E6%9B%B4%E6%96%B0%E4%BA%86%20MCUBoot%EF%BC%8C%E4%BD%BF%E5%85%B6%E5%8C%85%E5%90%AB%E5%85%AC%E5%BC%80%20ECDSA_P256%20%E5%AF%86%E9%92%A5%EF%BC%9F%20%3C%2FP%3E%0A%3CP%3E%E8%BF%AA%E4%BA%9A%E6%88%88%3C%2FP%3E%3C%2FLINGO-BODY%3E