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