mbed TLS簡單評(píng)估,讓人驚喜

之前和AVRCrypto的作者聊過,在AVR/ARM7的基礎(chǔ)上,他認(rèn)為RSA512以上計(jì)算時(shí)間就已經(jīng)非常長了。所以我腦子里總是得到了MCU無法支持TLS的結(jié)論。ARM mbed收購PolarTLS之后,將其開源并更名為mbed TLS,成為mbed OS的一部分。我曾經(jīng)嘗試在最標(biāo)準(zhǔn)的STM32F103RB上實(shí)現(xiàn),但是無法運(yùn)行。

今天我利用ARM mbed online compiler和NUCLEO-F401RE重新做了一次快速測試。記過讓人驚喜:F401RE居然可以在2秒鐘內(nèi)完成RSA2048位的計(jì)算,這已經(jīng)符合主流的TLS證書要求。也可以用于Android USB設(shè)備認(rèn)證,雖然現(xiàn)在AOA設(shè)備早就被人所遺忘。

mbed-os-example-tls-benchmark.png

圖1:Tera-Term中F401RE所打印的各種密碼算法性能對(duì)比

可以看到RSA-2048所需時(shí)間為52ms/1968ms,比我預(yù)算的幾分鐘要快許多,處于可接受的范圍。如果使用ECC的ECDSA,最短也只需要403ms。非常實(shí)用。

但是有兩點(diǎn):

  1. 為何STM32F103RB無法運(yùn)行基礎(chǔ)的SHA-256算法而直接崩潰?
  2. F401RE運(yùn)行后為何會(huì)拋出一個(gè)Stack underflow的錯(cuò)誤?

F103RB基于M3內(nèi)核,最高主頻72MHz,F(xiàn)401RE基于M4內(nèi)核,支持DSP/FPU,最高主頻84MHz。如果mbed-TLS沒有利用DSP和FPU,僅這些主頻差別意味著F103RB其實(shí)也是可以支持TLS/RSA2048的認(rèn)證的。

再次編譯F103RB,系統(tǒng)終端提示RSA2048 malloc出錯(cuò),意味著20KB RAM是主要的瓶頸,而且即使關(guān)閉RSA項(xiàng)目,ECDSA同樣也沒有任何輸出。而對(duì)比F103RB/F401RE兩者性能,大約是1:1.67左右,且與算法有關(guān)聯(lián)。所以下次需要在STM32F103RE(64KB RAM)上測試一下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容