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