移植并评估了microECC库,但是出现了Bug,无论随机数如何变化,其产生的共享Key居然没有变化。退而求其次,分别看了nanoECC,mbedTLS,和衍生的nRF52-crypt。
SHA-256 : 556 KB/s
AES-CBC-128 : 863 KB/s
AES-CBC-192 : 750 KB/s
AES-CBC-256 : 663 KB/s
AES-GCM-128 : 363 KB/s
AES-GCM-192 : 341 KB/s
AES-GCM-256 : 322 KB/s
AES-CCM-128 : 367 KB/s
AES-CCM-192 : 325 KB/s
AES-CCM-256 : 291 KB/s
HMAC_DRBG SHA-256 (NOPR) : 68 KB/s
HMAC_DRBG SHA-256 (PR) : 60 KB/s
ECDSA-secp384r1 : 995 ms/sign
ECDSA-secp256r1 : 603 ms/sign
ECDSA-secp384r1 : 1905 ms/verify
ECDSA-secp256r1 : 1180 ms/verify
DONE
FIG 1 mbedTLS benchmark例程,但是ECDH无论如何都不出来。
越看越晕。目前在mbedTLS官网上补课,看如何调用它的API。
更新
micro-ECC for mbed 已经得到更新,主要问题在于随机数发生器,现在采用ADC作为随机数发生器之后,每次计算的公钥、私钥以及生成的共享密钥都有变化,而且共享密钥一致,可以作为AES加密密钥使用。
目前,基于microECC可以在大多数MCU平台间建立安全连接,且与传输媒体无关,可以在UART/USB/BLE/socket上进行传输。
接下来,联调Python-ECC与micro-ECC,用于构建完整的安全连接。如果顺利,可以满足大多数Cortex-M MCU的需求。