2065738_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2065738_zh-CN

2065738_zh-CN

LPC55S28引导加载程序中的ECDSA验证帮助(32KB大小限制)

NXP社区的各位朋友,大家好!

我正在为 LPC55S28 开发一个安全引导加载程序,但在实现 ECDSA 签名验证时遇到了严重的代码大小问题。

当前问题

我的引导加载程序需要验证 ECDSA P-256 签名,并且它必须能够容纳在 32KB 的闪存区域中。当使用 mbedTLS 进行 ECDSA 验证时(即使是仅启用 ECDSA 的最小配置),我的代码大小也会从大约 13KB 激增至 56KB:

剧透
名称 运行地址 加载地址 大小 类型
。文本0x0 不适用 56412 节
mpi_mul_hlp 0x9ae2 不适用 6388 本地函数
ecp_mod_p256 0x839c 不适用 2032 本地函数
shiftleft 0x2bd0 不适用 1792 本地函数
MultprecCiosMul521_ct 0x4fdc 不适用 1772 本地函数
右移 0x2514 不适用 1724 本地函数
双标量乘法 0x3fb4 不适用 1580 全局函数
MultprecCiosMul_ct 0x1b4c 不适用 1444 本地函数
mbedtls_mpi_div_mpi 0xb69c 不适用 1316 全局函数
mbedtls_mpi_inv_mod 0xbdfa 不适用 1090 全局函数
precompute_double_scalar_LUT16 0x3aac n/a 1084 本地函数
invert_mod_p384 0x4884 不适用 1062 本地函数
ecp_double_jac 0x7d6c 不适用 972 本地函数
ecp_add_mixed 0xac8 不适用 912 本地函数
mbedtls_ecp_muladd_restartable 0xea8 不适用 868 全局函数
Jac_addition 0x33ec 不适用 776 全局函数
StrFormatPrintf 0x735c 不适用 700 全局函数
invert_mod_p521 0x4d14 不适用 616 本地函数
invert_mod_p256 0x45e0 不适用 576 本地函数
verify_ecdsa_signature 0x4a4 不适用 544 本地函数
Jac_add_affine 0x36f4 不适用 536 全局函数
ecdsa_verify_restartable 0x12c0 不适用 504 本地函数
USART_Init 0x6404 不适用 460 全局函数
mbedtls_mpi_gcd 0xbc4a 不适用 432 全局函数
CASPER_montadd 0x21f0 不适用 428 本地函数
hashcrypt_sha_process_message_data 0x5ddc 不适用 420 本地函数
Jac_double 0x390c 不适用 416 全局函数
USART_SetBaudRate 0x6650 不适用 396 全局函数
mbedtls_mpi_mul_mpi 0xb3d6 不适用 382 全局函数
CLOCK_SetFLASHAccessCyclesForFreq 0x5888 不适用 380 全局函数
__aeabi_uldivmod 0xd048 不适用 372 全局函数
mbedtls_mpi_add_abs 0x96ba 不适用 366 全局函数
read_and_verify_toc 0x6c4 不适用 364 本地函数
CASPER_ECC_SECP521R1_MulAdd 0x19f4 不适用 344 全局函数
CASPER_half 0x239c 不适用 340 本地函数
lowpower_set_system_voltage 0x6024 不适用 340 本地函数
mbedtls_mpi_shift_l 0x91bc 不适用 330 全局函数
mbedtls_mpi_sub_abs 0x98ba 不适用 326 全局函数
CASPER_ECC_SECP256R1_MulAdd 0x179c 不适用 324 全局函数
DbgConsole_Init 0x2b0 不适用 312 全局函数
mbedtls_mpi_shift_r 0x9306 不适用 310 全局函数
mbedtls_mpi_cmp_mpi 0x9540 不适用 310 全局函数
__Vectors 0x0 不适用 304 全局对象
g_pfnVectors 0x0 不适用 304 全局对象
CASPER_ECC_SECP384R1_MulAdd 0x18e0 不适用 276 全局函数
HAL_UartInitCommon 0x68cc 不适用 272 本地函数
mbedtls_mpi_cmp_abs 0x943c 不适用 260 全局函数
CASPER_montsub 0x20f0 不适用 256 本地函数
CASPER_MEMCPY 0x14e0 不适用 252 全局函数
fseek 0x6d50 不适用 248 全局函数
ecp_normalize_jac 0x7c78 不适用 244 本地函数
hashcrypt_sha_finalize 0xc5e2 不适用 238 本地函数
lowpower_set_dcdc_power_profile 0x6178 不适用 236 本地函数
mbedtls_mpi_copy 0x8cf6 不适用 210 全局函数
ecp_modp 0x9f8 不适用 208 本地函数
HASHCRYPT_SHA_Update 0xc7ac 不适用 208 全局函数
precompute_double_scalar_LUT4 0x3ee8 不适用 204 本地函数
mbedtls_ecp_point_read_binary 0x930 不适用 200 全局函数
malloc 0x6b2c n/a 200 全局函数
mbedtls_mpi_write_binary 0x90f4 不适用 200 全局函数
ConvertRadixNumToString 0x7208 不适用 194 本地函数
HASHCRYPT_SHA_Finish 0xc87c 不适用 184 全局函数
mbedtls_int_div_int 0xb5e8 不适用 180 本地函数
mbedtls_ecp_fix_negative 0x82f0 不适用 172 本地函数
lowpower_set_voltage_for_process 0xc934 不适用 170 本地函数
Jac_toAffine 0x3348 不适用 164 全局函数
HASHCRYPT_DriverIRQHandler 0x5f80 不适用 164 全局函数
ecp_group_load 0x81c2 不适用 162 本地函数
CLOCK_AttachClk 0x56e8 不适用 160 全局函数
add_sub_mpi 0x9a00 不适用 156 本地函数
mbedtls_ecp_group_free 0x7966 不适用 152 全局函数
lowpower_get_part_process_corner 0x6264 不适用 148 本地函数
mbedtls_mpi_mul_int 0xb554 不适用 148 全局函数
derive_mpi 0xc23c 不适用 148 本地函数
mpi_sub_hlp 0x9828 不适用 146 本地函数
casper_select 0x15dc 不适用 144 本地函数
hashcrypt_get_data 0xc454 不适用 144 本地函数
USART_WriteBlocking 0x67dc 不适用 140 全局函数
PrintGetPrecision 0x6fba 不适用 140 本地函数
mbedtls_mpi_mod_mpi 0xbbc0 不适用 138 全局函数
mbedtls_ecp_group_load 0x1238 不适用 136 全局函数
主 0x8ac 不适用 132 全局函数
mbedtls_mpi_grow 0x8c1c 不适用 132 全局函数
CLOCK_SetClkDiv 0x5788 不适用 128 全局函数
CLOCK_SetupFROClocking 0x5808 不适用 128 全局函数
USART_GetDefaultConfig 0x65d0 不适用 128 全局函数
mbedtls_ecp_group_init 0x7888 不适用 126 全局函数
jump_to_application 0x830 不适用 124 本地函数
mbedtls_mpi_read_binary 0x907a 不适用 122 全局函数
CASPER_ecc_init 0x166c 不适用 120 全局函数
multiply_casper 0x32d0 不适用 120 本地函数
_initio 0x6bf4 不适用 120 全局函数
FLEXCOMM_SetPeriph 0xc3e0 不适用 116 本地函数
CASPER_ECC_equal 0x16e4 不适用 112 全局函数
_Cwritebuf 0x6ca8 不适用 108 全局函数
hashcrypt_sha_one_block 0xc576 不适用 108 本地函数
PrintGetWidth 0x6f50 不适用 106 本地函数
DbgConsole_Vprintf 0x3e8 不适用 104 全局函数
toMontgomery_ECC_P384 0x4cac 不适用 104 本地函数
mbedtls_mpi_bitlen 0x8f30 不适用 104 全局函数
_fdopen 0xcee2 不适用 104 全局函数
DbgConsole_PrintCallback 0x6ebe 不适用 102 本地函数
mbedtls_mpi_lsb 0x8e88 不适用 102 全局函数
mpi_bigendian_to_host 0x9014 不适用 102 本地函数
ResetISR 0x180 n/a 100 全局函数
toMontgomery_ECC_P256 0x4820 不适用 100 本地函数
SystemInit 0x6868 不适用 100 弱函数
HAL_UartSendBlocking 0x69dc 不适用 100 全局函数
FLEXCOMM_PeripheralIsPresent 0xc37c 不适用 100 本地功能
mbedtls_ecp_copy 0x7a48 不适用 98 全局函数
toMontgomery_ECC_P521 0x4f7c 不适用 96 本地函数
RESET_ClearPeripheralReset 0x63a4 不适用 96 全局函数
mbedtls_mpi_sub_mod 0x7b64 不适用 96 本地函数
SerialManager_Init 0xcb56 不适用 96 全局函数
SerialManager_OpenReadHandle 0xcc06 不适用 96 全局函数
反向数组 0x8138 不适用 94 本地函数
HASHCRYPT_SHA 0xc6fe 不适用 94 全局函数
FLEXCOMM0_DriverIRQHandler 0x5aa0 不适用 92 全局函数
FLEXCOMM1_DriverIRQHandler 0x5afc 不适用 92 全局函数
FLEXCOMM2_DriverIRQHandler 0x5b58 不适用 92 全局函数
FLEXCOMM3_DriverIRQHandler 0x5bb4 不适用 92 全局函数
FLEXCOMM4_DriverIRQHandler 0x5c10 不适用 92 全局函数
FLEXCOMM5_DriverIRQHandler 0x5c6c 不适用 92 全局函数
FLEXCOMM6_DriverIRQHandler 0x5cc8 不适用 92 全局函数
FLEXCOMM7_DriverIRQHandler 0x5d24 不适用 92 全局函数
FLEXCOMM8_DriverIRQHandler 0x5d80 不适用 92 全局函数
RESET_SetPeripheralReset 0x6348 不适用 92 全局函数
mbedtls_mpi_add_mod 0x7bc4 不适用 92 本地函数
mbedtls_mpi_lset 0x8dea 不适用 92 全局函数
BOARD_BootClockFROHF96M 0x6a98 不适用 88 全局函数
mbedtls_mpi_shift_l_mod 0x7c20 不适用 88 本地函数
fclose 0xcf9c 不适用 88 全局函数
mbedtls_mpi_resize_clear 0x8ca0 不适用 86 本地函数
DbgConsole_SendDataReliable 0x25c 不适用 84 全局函数
calculate_sha256 0x450 不适用 84 本地函数
mbedtls_ecp_set_zero 0x7aaa 不适用 82 全局函数
_fflush 0xcf4a 不适用 82 全局函数
ecp_add 0xe58 不适用 80 全局函数
FLEXCOMM_Init 0x5a50 不适用 80 全局函数
POWER_SetVoltageForFreq 0x62f8 不适用 80 全局函数
HASHCRYPT_SHA_Init 0xc75c 不适用 80 全局函数
SerialManager_OpenWriteHandle 0xcbb6 不适用 80 全局函数
calloc 0xcdc6 不适用 80 全局函数
strlen 0xce54 不适用 78 全局函数
FLEXCOMM_GetInstance 0x5a04 不适用 76 全局函数
mbedtls_mpi_free 0x8bd0 不适用 76 全局函数
CASPER_ECC_equal_to_zero 0x1754 不适用 72 全局函数
mpi_uint_bigendian_to_host_c 0x8fb4 不适用 72 本地函数
add32 0x8264 不适用 70 本地函数
sub32 0x82aa 不适用 70 本地函数
ftell 0x6e48 不适用 68 全局函数
PrintOutputdifFobpu 0x70aa n/a 68 本地函数
PrintOutputxX 0x70ee 不适用 68 本地函数
mbedtls_mpi_cmp_int 0x9676 不适用 68 全局函数
SerialManager_Write 0xcb12 不适用 68 本地函数
mbedtls_mpi_get_bit 0x8e46 不适用 66 全局函数
mbedtls_clz 0x8eee 不适用 66 本地函数
PrintGetRadixFromobpu 0x71c8 不适用 64 本地函数
mbedtls_mpi_mul_mod 0x7b24 不适用 64 本地函数
_deferredlazyseek 0xcea2 不适用 64 全局函数
_do_fflush 0xd008 不适用 64 全局函数
toc_verification_key 0xda84 不适用 64 本地对象
PrintFilterLengthFlag 0x718a 不适用 62 本地函数
Serial_UartInit 0xcc86 不适用 62 全局函数
setvbuf 0xce16 不适用 62 全局函数
BOARD_InitDEBUG_UARTPins 0x6af0 不适用 60 全局函数
_sbrk 0x6c6c 不适用 60 全局函数
fflush 0x6d14 不适用 60 全局函数
hashcrypt_sha_check_input_args 0xc53a 不适用 60 本地函数
BOARD_InitDebugConsole 0x6a40 不适用 56 全局函数
PrintIsobpu 0x7046 不适用 56 本地函数
USART_EnableContinuousSCLK 0xc9fa 不适用 56 本地函数
SerialManager_StartWriting 0xcada n/a 56 本地函数
Serial_UartWrite 0xccc4 不适用 56 全局函数
HardFault_Handler 0x77f8 不适用 54 全局函数
HAL_UartInit 0xca62 不适用 54 全局函数
mbedtls_ecp_point_free 0x7932 不适用 52 全局函数
mbedtls_ecp_keypair_free_o 0x79fe 不适用 52 全局函数
__aeabi_lowlevel_memset 0xd1f2 不适用 50 全局函数
mbedtls_ecdsa_verify 0xc2e8 不适用 48 全局函数
CLOCK_EnableClock 0xc34c 不适用 48 本地函数
免费 0xcd96 不适用 48 全局函数
mbedtls_ecp_get_type 0x782e 不适用 46 全局函数
IOCON_PinMuxSet 0xcd46 不适用 46 本地函数
__assertion_failed 0x230 不适用 44 全局函数 />ecp_mpi_set1 0x120c 不适用 44 本地函数
DbgConsole_Printf 0x6f24 不适用 44 全局函数
PrintIsdi 0x707e 不适用 44 本地函数
PrintIsfF 0x7132 不适用 44 本地函数
PrintIsxX 0x715e 不适用 44 本地函数
mbedtls_ecp_point_init 0x785c 不适用 44 全局函数
mbedtls_ecp_keypair_init 0x7906 不适用 44 全局函数
ecp_mpi_load 0x8196 不适用 44 本地函数
hashcrypt_engine_init 0xc4e4 不适用 44 本地函数
hashcrypt_sha_check_input_alg 0xc510 不适用 42 本地函数
__aeabi_memcpy4 0xd1c8 不适用 42 全局函数
__aeabi_memcpy8 0xd1c8 不适用 42 全局函数
mbedtls_platform_zeroize 0x14b8 不适用 40 全局函数
mbedtls_ecp_is_zero 0x7afc 不适用 40 全局函数
StrFormatExaminedi 0x72ca 不适用 38 本地函数
StrFormatExaminexX 0x72f0 不适用 38 本地函数
StrFormatExamineobpu 0x7316 不适用 38 本地函数
mbedtls_mpi_init 0x8baa 不适用 38 全局函数
casper_get_word 0x24f0 不适用 36 本地函数
mbedtls_mpi_sub_mpi 0x9abe 不适用 36 全局函数
s_flexcommBaseAddrs 0xdbd8 不适用 36 本地对象
s_flexcommResets 0xdc10 不适用 36 本地对象
mpi_sint_abs 0x8dc8 不适用 34 本地函数
mbedtls_mpi_add_mpi 0x9a9c 不适用 34 全局函数
HAL_UartGetStatus 0xca40 不适用 34 本地函数
DisableGlobalIRQ 0xca98 不适用 34 本地函数
POWER_DisablePD 0x56c8 不适用 32 本地函数
ConvertPrecisionWidthToLength 0x733c 不适用 32 本地函数
启用全局中断 0xcaba 不适用 32 本地函数
SerialManager_WriteBlocking 0xcc66 不适用 32 全局函数
secp256r1_p 0xdac4 不适用 32 本地对象
secp256r1_a 0xdae4 不适用 32 本地对象
secp256r1_b 0xdb04 不适用 32 本地对象
secp256r1_gx 0xdb24 不适用 32 本地对象
secp256r1_gy 0xdb44 不适用 32 本地对象
secp256r1_n 0xdb64 不适用 32 本地对象
s_UsartAdapterBase 0xdc34 不适用 32 本地对象
data_init 0x1e8 不适用 30 全局函数
mbedtls_mpi_zeroize 0x8b8c 不适用 30 本地函数
mbedtls_ecdsa_free 0xc32e 不适用 30 全局函数
mbedtls_mpi_size 0x8f98 不适用 28 全局函数
RESET_PeripheralReset 0xc9de 不适用 28 全局函数
fsl_assert_hook 0x6ea4 不适用 26 弱函数
__check_heap_overflow 0x6e8c 不适用 24 全局函数
mpi_uint_bigendian_to_host 0x8ffc 不适用 24 本地函数
mbedtls_ecdsa_can_do 0xc2d0 不适用 24 全局函数
hashcrypt_save_running_hash 0xc6d0 不适用 24 本地函数
mbedtls_ecp_keypair_free 0x7a32 不适用 22 全局函数
mbedtls_ecdsa_init 0xc318 不适用 22 全局函数
hashcrypt_restore_running_hash 0xc6e8 不适用 22 本地函数
移除 0xcff4 不适用 20 全局函数
bss_init 0x206 不适用 18 全局函数
s_flexcommClocks 0xdbfc 不适用 18 本地对象
SystemInitHook 0xca32 不适用 14 弱函数
BOARD_InitPeripherals 0xccfc 不适用 14 全局函数
__main 0xcd80 不适用 14 全局函数
BOARD_InitBootPeripherals 0xcd0a 不适用 12 全局函数
BOARD_InitBootPins 0xcd74 不适用 12 全局函数
__aeabi_memcpy 0xd1be 不适用 10 全局函数

据我所知,CASPER 本身无法执行 ECDSA 验证——它似乎需要 mbedTLS 作为包装器,而 mbedTLS 会引入所有额外的代码。

我已经停用了 ksdk_mbedtls_config.h 文件中的几乎所有内容。

问题

  1. 是否有办法直接使用 CASPER 硬件进行 ECDSA 验证,而无需 mbedTLS 开销?
  2. LPC55S28 中是否有任何基于 ROM 的加密功能可以处理 ECDSA 验证?
  3. 有没有人能提供一个符合我 32KB 限制的 LPC55S28 的 ECDSA P-256 验证的最小实现版本?
  4. 是否有比 mbedTLS 占用空间更小的替代方案?
Re: Help with ECDSA Verification in LPC55S28 Bootloader (32KB Size Limit)
由于当时社区平台出现问题,此工单是通过电子邮件处理的。
Tags (1)
No ratings
Version history
Last update:
‎07-02-2026 04:30 AM
Updated by: