之前和AVRCrypto的作者聊過(guò),在AVR/ARM7的基礎(chǔ)上雹姊,他認(rèn)為RSA512以上計(jì)算時(shí)間就已經(jīng)非常長(zhǎng)了股缸。所以我腦子里總是得到了MCU無(wú)法支持TLS的結(jié)論。ARM mbed收購(gòu)PolarTLS之后吱雏,將其開(kāi)源并更名為mbed TLS,成為mbed OS的一部分瘾境。我曾經(jīng)嘗試在最標(biāo)準(zhǔn)的STM32F103RB上實(shí)現(xiàn)歧杏,但是無(wú)法運(yùn)行。
今天我利用ARM mbed online compiler和NUCLEO-F401RE重新做了一次快速測(cè)試迷守。記過(guò)讓人驚喜:F401RE居然可以在2秒鐘內(nèi)完成RSA2048位的計(jì)算犬绒,這已經(jīng)符合主流的TLS證書(shū)要求。也可以用于Android USB設(shè)備認(rèn)證兑凿,雖然現(xiàn)在AOA設(shè)備早就被人所遺忘凯力。
圖1:Tera-Term中F401RE所打印的各種密碼算法性能對(duì)比
可以看到RSA-2048所需時(shí)間為52ms/1968ms,比我預(yù)算的幾分鐘要快許多礼华,處于可接受的范圍咐鹤。如果使用ECC的ECDSA,最短也只需要403ms圣絮。非常實(shí)用祈惶。
但是有兩點(diǎn):
- 為何STM32F103RB無(wú)法運(yùn)行基礎(chǔ)的SHA-256算法而直接崩潰?
- 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沒(méi)有利用DSP和FPU力麸,僅這些主頻差別意味著F103RB其實(shí)也是可以支持TLS/RSA2048的認(rèn)證的可款。
再次編譯F103RB,系統(tǒng)終端提示RSA2048 malloc出錯(cuò)末盔,意味著20KB RAM是主要的瓶頸筑舅,而且即使關(guān)閉RSA項(xiàng)目,ECDSA同樣也沒(méi)有任何輸出陨舱。而對(duì)比F103RB/F401RE兩者性能翠拣,大約是1:1.67左右,且與算法有關(guān)聯(lián)游盲。所以下次需要在STM32F103RE(64KB RAM)上測(cè)試一下误墓。