1. 你的芯片安全嗎?
如果大家看過速度與激情這部電影,一定對下面這一幕有深刻的印象:黑客通過遠程控制上千輛的僵尸車輛,去自動攔截搶奪握有核發射密碼的人! 然后掌控人類的命運?,F實生活中可能沒有電影里這么戲劇化,不過危機卻在我們身邊時刻不停地在上演。
大品牌的電子產品被仿冒造成的損失是不可估量的。同時,將來隨著物聯網,自動駕駛等技術的普及,其核心芯片的安全問題越來越重要,一旦被破解,遭受攻擊,后果難以想象。然而,芯片的安全性確是大多數工程師往往忽略,或者說不太重視的問題。這里我們對芯片如何被破解進行一個簡單的探討,從而大家可以有針對性地采取一些防護手段。
大家知道一個電子產品,硬件電路被復制是幾乎沒有什么難度的,即使打磨掉芯片上的字符。所以最關鍵的是獲得芯片內部存儲的代碼,因為代碼是整個系統運行的靈魂?,F在大多數芯片都有加密位,在設置加密位后,通過編程工具是沒有辦法讀出代碼的。但我們不要低估了壞人的邪惡,他們會想盡種種辦法來進行攻擊。從總體上來說可以歸結為兩種方法:侵入式攻擊和非侵入式攻擊。如果用保險箱來比喻,盜取鑰匙打開保險箱可以說是非侵入式攻擊,拿電鋸鋸開保險箱就屬于侵入式攻擊了。
2. 常用的攻擊手段
2.1 部分擦除
加密后的芯片一般允許整體擦除(Mass Erase)。如果在整體擦除芯片時,控制擦除的時間,在剛剛好擦除掉加密位的時候停止(比如掉電),那么芯片就被解密了。
2.2 電壓毛刺(Power Glitch)
攻擊是在芯片電源引腳故意輸入毛刺,使得芯片運行受到影響,使其運行跳過某些指令或發生錯誤的操作,從而使芯片信息泄露。
2.3 欠壓,過壓,時鐘瞬態跳變
利用欠壓,過壓,時鐘的瞬態跳變,使芯片產生異常,影響芯片的正常執行,使保護電路失效。
代碼在處理不同的數據,或走不同的流程時,時間上是不同的。時序攻擊利用這一特點可以反推密鑰。
2.5 功率分析(SPA: Simple Power Analysis)
芯片在運行不同的指令的時候,消耗的功率是不一樣的。功率分析正是利用種特性,在代碼運行密碼相關運算時,用高分辨率功率測量儀器從外部測量芯片功率的變化,從而提取加密密鑰。
2.6 差分功率分析 DPA(Differential Power Analysis)
在SPA的基礎上,收集已有的密碼運算時的功率變化數據,在多次統計的基礎上進行分析。是比SPA更有效的攻擊。
2.7 硬解密
這是最暴力,最不好防范的攻擊方法。它用溶劑溶解芯片外面的殼體,把芯片暴露出來,然后用高倍顯微鏡和聚焦離子束 FIB(Focused Ion Beam)找到加密位置,把它改變為非加密狀態,然后讀出芯片內容,然后進行解密,反匯編。看了這些攻擊手段,是不是開始出冷汗了呢?別擔心,這只是一部分大家都熟悉的方法,哈哈。不過隨著進攻之矛越來越鋒利,防御之盾也越來越堅固。在講防御辦法前,我們先對相關的加密算法做一個簡單的介紹吧。
3. 流行的加密算法
3.1 哈希算法(Hash)
它的作用是把任意長度的明文,通過單向加密函數,生成固定長度的信息摘要。如果明文發生變化,那么會引起信息摘要的變化。從信息摘要無法反推出明文。常用算法: MD5,SHA-1。
3.2 對稱加密算法(Symmetric Encryption)
用相同的密鑰進行加密和解密。如同一個保險柜,一個人用一把鑰匙把文件鎖進去,另一個人需要用相同的鑰匙打開保險柜,才能看到文件里寫的什么。這種算法的關鍵是密鑰的保存,分發,防止非授權的人獲得密鑰。常用算法: DES, AES,RCx
3.3 非對稱加密算法(Asymmetric Encryption)
所謂非對稱指的是加密方和解密方使用的密鑰不同。如同一個保險柜有兩個門,一個是入口,一個是出口,用入口的鑰匙只可以把明文放進去,用出口的鑰匙可以把明文取出。這種算法帶來的好處是可以把入口的鑰匙公開出來(公鑰),大家都可以用公鑰進行加密,但是除了掌管私鑰的人,其他人是沒有辦法看到保險柜中的內容的。常用算法: RSA,ECC
4. 加密算法的特點和安全性
Hash 主要用于數字簽名。據說最早的應用之一是美蘇互相把地震儀放到對方,監控對方有沒有進行核試驗。雙方對對方都不放心啊,所以用這種算法把數據做數字簽名,大家都能看到數據,而且不能篡改。對稱加密算法運算速度快,一般用來對大量數據加解密。公鑰算法運算速度比較慢,消耗資源多。它常常在開始階段用來分發對稱算法使用的密鑰,之后通訊切換到對稱加解密算法。
理論上所有加密算法都是可以被破解的,只是花費的時間和代價的問題。只有一種加密方法是完全無法破解的,那就是一次一密。加密者和解密者使用相同的密碼本,密鑰是真隨機數,而且長度和明文相等,每一個明文字母用一個密鑰字母加密成密文,密碼本使用一次后既廢棄。據說很多間諜就是用的這種加密方法。
5. 如何保護芯片
假如我們寫了一份機密文件,怎樣才能不被別人得到呢?首先想到的還是保險柜,我們可以把文件鎖進保險柜里,當然保險柜有不同級別,有的還有監控功能,比如發現有人敲擊,挪動,高溫(切割)等就發出報警,或者把文件銷毀。當然越高級的保險柜價格越高。再有就是我們把寫的內容加密,即使間諜拿到了也看不懂。最后為了更保險,我們還可以把文件分為兩份,分別鎖進兩個保險柜里。對于代碼來說,也是類似的。
把代碼放入芯片后設置加密位,使別人無法讀出;或者用芯片的唯一序列號用算法加密后存入特定地址,運行前做比對;或者把代碼(或代碼的一部分)加密后存入外部存儲器,只發送給握有密鑰的主芯片;這就會用到前面我們介紹的幾種算法之一,或幾種的組合。我們可以根據產品的價值來使用不同等級的保護方法。
下面是一些從硬件到軟件需要考慮的地方:
a. 設置加密位。如果芯片支持則設置禁止整體擦除。
b. 下載代碼后把調試口禁止掉。
c. 地址線和數據線打亂。用PAL,GAL,CPLD做映射。
d. 盡量不用代碼里的默認值,代碼空間不留空白區域。如果猜測出一部分明文,將會導致破解變得容易。
e. 在處理密碼或數據時用混入隨機數,插入指令等方法,使功耗變化盡量小,不同分支運行時間差別盡量小。防止時序和功率分析攻擊。
f. 加密盡量用長的密鑰。
g. 在選用 MCU 時,要考慮它是否有足夠強的防破解能力。如 STM32L562的以下特性可以用來提高系統的防御能力:
ARM TrustZone 內核
電壓跌落檢測 Brownout Reset
帶入侵檢測寄存器 Tamper and backup registers (TAMP)
支持安全啟動 unique boot entry and hide protection area
主動入侵檢測(Active tamper and protection against temperature, voltage and frequency attacks)
真隨機數發生器(True random number generator NIST SP800- 90B compliant)
全球唯一序列號(96-bit Unique ID)
哈希算法加速器(HASH hardware accelerator)
AES協處理器
公鑰算法加速器(Public key accelerator)
h. 如果使用的芯片沒有很強的防護能力時,可以考慮添加一顆外部芯片來提高防御能力。比如:DS28E01(SHA-1),DS28E3
8(ECC-P256),LKT4201N(DES/3DES/AES/SHA1/SHA256/RSA/ECC)等。i. 把一部分核心代碼加密后放到外部有加密功能的芯片,加載入MCU后再解密運行。好了,希望這些對大家有些幫助,以后有機會進行更進一步的探討。
原文標題:你的芯片,能抵擋住幾次攻擊?
文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
芯片
+關注
關注
456文章
50892瀏覽量
424346 -
加速器
+關注
關注
2文章
800瀏覽量
37918
原文標題:你的芯片,能抵擋住幾次攻擊?
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論