硬件方面
如果加密芯片本身硬件會(huì)被物理破解,那就毫無(wú)安全可言,失去了加密芯片保護(hù)MCU方案的意義。
智能卡內(nèi)核的加密芯片,硬件方面安全性是最高的。智能卡自從上世紀(jì)70年代末誕生以來(lái),就是直接跟“錢(qián)”直接打交道。例如最早的IC卡就用于存話(huà)費(fèi)打電話(huà),現(xiàn)在銀行卡,社???,電表卡等等,上面就直接存放著“錢(qián)”,沒(méi)有足夠安全的硬件支持,這些行業(yè)也不可能敢將“錢(qián)”直接存放在卡上。
經(jīng)過(guò)幾十年的發(fā)展,MCU的功能越來(lái)越強(qiáng)大:如IO口數(shù)量,越來(lái)越多,IO口的種類(lèi)也越來(lái)越多,支持的通信協(xié)議也越來(lái)越多,等等。然而同樣是幾十年,接觸式智能卡,卻依舊只有ISO7816的UART口。硬件上增加的只有存儲(chǔ)空間大了,速度快了,算法及安全寄存器越來(lái)越多。幾十年來(lái),智能卡除了變大,變快外,就一直圍繞著安全在發(fā)展。
智能卡內(nèi)核,在硬件方面,使用了頂層金屬網(wǎng)絡(luò)設(shè)計(jì),提升入侵難度。所有的網(wǎng)格都用來(lái)監(jiān)控短路和開(kāi)路,一旦觸發(fā),會(huì)導(dǎo)致存儲(chǔ)器復(fù)位或清零;另外智能卡使用存儲(chǔ)器總線(xiàn)加密,每張卡片總線(xiàn)加密密鑰不同,這樣即使入侵者完全破解了,也無(wú)法生產(chǎn)出相同功能的芯片來(lái)。智能卡將標(biāo)準(zhǔn)的模塊結(jié)構(gòu)使用混合邏輯(Gle Logic)設(shè)計(jì),使得攻擊者不可能通過(guò)信號(hào)或節(jié)點(diǎn)來(lái)獲得卡的信息進(jìn)行物理攻擊;智能卡還砍掉了標(biāo)準(zhǔn)的編程接口,甚至干掉了讀取EEPROM接口,取而代之的是啟動(dòng)模塊,可以在代碼裝入后擦掉或者屏蔽自己,之后只能響應(yīng)使用者的嵌入軟件所支持的功能。
軟件方面
最好的軟件方案是將MCU的一部分功能程序,移植到加密芯片里面執(zhí)行。這樣即使攻擊者破解了MCU的程序,也無(wú)法得到加密芯片里面的代碼(加密芯片要能做到硬件上不被破解)。
很多加密芯片號(hào)稱(chēng)有AES算法,或者SHA256算法等等。一味的強(qiáng)調(diào)算法的強(qiáng)度,而忽略了其工作原理。實(shí)際上,不管用哪種加密算法,MCU及加密芯片上都要存儲(chǔ)一致的密鑰,才能保證雙方協(xié)同工作。而MCU可被破解,理論上都可以被攻擊者拿到密鑰,利用這種攻擊方法,再高強(qiáng)度加密算法也無(wú)濟(jì)于事。
例如DES算法,自從上世紀(jì)70年代被研制出來(lái),然后運(yùn)用到銀行卡中(PBOC銀行卡現(xiàn)在仍然還在使用的是DES/3DES算法)已經(jīng)幾十年了,目前為止,除了窮舉外還沒(méi)有其他方法可以破解其密鑰。我們假設(shè)1us計(jì)算一次DES,一年有365天24小時(shí)60分60秒100000微秒=3153600000000微秒。單DES密鑰長(zhǎng)度為8字節(jié),如果要把這8字節(jié)窮舉完,則要580萬(wàn)年(0xFFFFFFFFFFFFFFFF除以十進(jìn)制3153600000000 = 約等于580萬(wàn))。也就是說(shuō),如果不是直接從MCU中直接獲取密鑰的話(huà),破解DES算法,需要580萬(wàn)年。那些所謂的很多算法比DES算法更強(qiáng)大,毫無(wú)意義,人家破解不會(huì)從算法本身破解,而是從MCU中去獲取密鑰。
所以DES/AES/SM1 /SM3/SHA1/SHA256等等,無(wú)論是哪種算法,使用者都無(wú)需擔(dān)心算法本身的強(qiáng)度,不會(huì)有人來(lái)攻擊這些算法,因?yàn)榇鷥r(jià)太高。
相反,更多的破解是從MCU這端拿到密鑰的,因?yàn)槔碚撋现灰袽CU破解后仿真,定位到了加解密函數(shù),就能找到相關(guān)的密鑰。所以軟件方案本身的設(shè)計(jì),遠(yuǎn)比算法本身的強(qiáng)度重要。
只有把MCU的部分代碼移植到加密芯片中,并在加密芯片中執(zhí)行此代碼,這種軟件方案才是最安全的,其他的軟件方案,都可以被破解(因?yàn)镸CU可被破解,并被仿真)?,F(xiàn)在市面上有部分加密芯片,把MCU的部分代碼存放在加密芯片中,然后通過(guò)密文方式讀到MCU中去執(zhí)行。這種方法同樣可被破解,因?yàn)槠浯a不是在加密芯片中執(zhí)行。
瑞納捷的RJMU401加密芯片,硬件上使用的是最高安全強(qiáng)度的智能卡芯片內(nèi)核;軟件上使用的是靈活的可編程方式,可內(nèi)置算法。具有接口簡(jiǎn)單(SPI),安全強(qiáng)度高,開(kāi)發(fā)簡(jiǎn)單,價(jià)格低,性?xún)r(jià)比高等特點(diǎn)。我們提供了一套經(jīng)典加密方案設(shè)計(jì)樣例,并提供了各種MCU下的源代碼,例如:STM32等等。開(kāi)發(fā)者幾個(gè)小時(shí)就能上手,然后再根據(jù)樣例設(shè)計(jì)出自己的加密方案。
最后給廣大開(kāi)發(fā)者一些忠告:
不要相信主控MCU本身的加密機(jī)制, 我們太多的客戶(hù)因?yàn)橄嘈判酒旧淼募用?沒(méi)有做其他的保護(hù), 而受到巨大的損失。
要想加密芯片硬件本身不被破解,請(qǐng)盡量選擇智能卡內(nèi)核的加密芯片。
要想軟件方案足夠安全,一定要將MCU的部分代碼放入加密芯片中執(zhí)行,否則都會(huì)被攻擊者在MCU中,找到密鑰而破解方案。