mbed TLS简单评估,让人惊喜

之前和AVRCrypto的作者聊过,在AVR/ARM7的基础上,他认为RSA512以上计算时间就已经非常长了。所以我脑子里总是得到了MCU无法支持TLS的结论。ARM mbed收购PolarTLS之后,将其开源并更名为mbed TLS,成为mbed OS的一部分。我曾经尝试在最标准的STM32F103RB上实现,但是无法运行。

今天我利用ARM mbed online compiler和NUCLEO-F401RE重新做了一次快速测试。记过让人惊喜:F401RE居然可以在2秒钟内完成RSA2048位的计算,这已经符合主流的TLS证书要求。也可以用于Android USB设备认证,虽然现在AOA设备早就被人所遗忘。

mbed-os-example-tls-benchmark.png

图1:Tera-Term中F401RE所打印的各种密码算法性能对比

可以看到RSA-2048所需时间为52ms/1968ms,比我预算的几分钟要快许多,处于可接受的范围。如果使用ECC的ECDSA,最短也只需要403ms。非常实用。

但是有两点:

  1. 为何STM32F103RB无法运行基础的SHA-256算法而直接崩溃?
  2. F401RE运行后为何会抛出一个Stack underflow的错误?

F103RB基于M3内核,最高主频72MHz,F401RE基于M4内核,支持DSP/FPU,最高主频84MHz。如果mbed-TLS没有利用DSP和FPU,仅这些主频差别意味着F103RB其实也是可以支持TLS/RSA2048的认证的。

再次编译F103RB,系统终端提示RSA2048 malloc出错,意味着20KB RAM是主要的瓶颈,而且即使关闭RSA项目,ECDSA同样也没有任何输出。而对比F103RB/F401RE两者性能,大约是1:1.67左右,且与算法有关联。所以下次需要在STM32F103RE(64KB RAM)上测试一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容