
crypto-performance-on-arm-cortexm-processors-42-638.jpg
偶然机会看到老外的BLE安全算法演讲,Bluetooth: With Low Energy Comes Low Security,演讲者Mike Ryan。他简略讲解了使用CC2400+LPC175X MCU构建的Ubertooth工具抓包和攻击流程。
在他演讲稿中提到了自己贡献的nano-ecc算法库,而nano-ecc是micro-ecc的分支。今早留意了一下Nordic的论坛,发现Nordic的bootloader中将micro-ecc作为自己的ecc微型算法库,用于构建安全通道下载固件。
两者相比,nano-ecc针对Arduino适配,但没有汇编级优化,而micro-ecc针对乘法在ARM处理器中的实现做了汇编级优化。配合M0/M4处理器,可以更快实施ECC算法:ECDH/ECDSA。
就Nordic BLE本身来说,只有nRF52832/S132才会支持ECDH,之前nRF51和S110/S120/S130都不再,也不会支持。
网址
更新
把micro-ecc工程移植到了mbed之上,由于不熟悉Cortex-M的Thumb2汇编级优化,所以关闭了优化模式,在F401RE/F103RB上计算速度还挺快,但需要做更多测试。
代码共享在: https://developer.mbed.org/users/allankliu/code/mbed_microECC/