M17 is probably one of the very few modes allowing users to sign their data streams.
In June 2024, I tested micro-ecc and ST CMOX library on a Module17. The results were published on Twitter:
Finally some good news regarding digital signatures. I’ve been experimenting with ST’s CMOX library and just got 160-bit ECDSA to run on the Module17. It takes around 8.25ms to sign a 16-byte M17 voice stream digest. The signature can be appended to the voice stream.
The MCU is STM32F405RGT6, clocked at 168 MHz.
Signing with NIST-R P-256 (SECP256R1) curve takes 14.86 ms.
If I remember correctly, CMOX library was used to get that 15ms result (secp256r1 curve). Micro-ecc yielded much worse execution times.
Today, I improved the micro-ecc library using comb multiplication. Preliminary tests using Renode (as I don’t have any STM32 Nucleo with me, nor any OpenRTX target) are promising. The signing time reduced from 27 down to 14ms, without CMOX, at 100MHz (emulated STM32F411). That’s great, because CMOX library can not be used on microcontrollers other than the original STM32. The library checks the hardware it is executed on and silently corrupts data without even telling. Great, right? This optimization should allow us to run ECDSA efficiently, even on GD32 MCUs.
The proposed code uses a uECC_COMB_MULT macro, so the user (developer) can select which calculation path to use – the original one or optimized.
Getting rid of this roadblock should get us one step closer to having M17 authentication support in OpenRTX.
Leave a Reply