你的芯片,能抵擋住幾次攻擊?
1. 你的芯片安全嗎?如果大家看過速度與激情這部電影,一定對(duì)下面這一幕有深刻的印象:黑客通過遠(yuǎn)程控制上千輛的僵尸車輛,去自動(dòng)攔截?fù)寠Z握有核發(fā)射密碼的人! 然后掌控人類的命運(yùn)。現(xiàn)實(shí)生活中可能沒有電影里這么戲劇化,不過危機(jī)卻在我們身邊時(shí)刻不停地在上演。大品牌的電子產(chǎn)品被仿冒造成的損失是不可估量的。同時(shí),將來隨著物聯(lián)網(wǎng),自動(dòng)駕駛等技術(shù)的普及,其核心芯片的安全問題越來越重要,一旦被破解,遭受攻擊,后果難以想象。然而,芯片的安全性確是大多數(shù)工程師往往忽略,或者說不太重視的問題。這里我們對(duì)芯片如何被破解進(jìn)行一個(gè)簡(jiǎn)單的探討,從而大家可以有針對(duì)性地采取一些防護(hù)手段。大家知道一個(gè)電子產(chǎn)品,硬件電路被復(fù)制是幾乎沒有什么難度的,即使打磨掉芯片上的字符。所以最關(guān)鍵的是獲得芯片內(nèi)部存儲(chǔ)的代碼,因?yàn)榇a是整個(gè)系統(tǒng)運(yùn)行的靈魂。現(xiàn)在大多數(shù)芯片都有加密位,在設(shè)置加密位后,通過編程工具是沒有辦法讀出代碼的。但我們不要低估了壞人的邪惡,他們會(huì)想盡種種辦法來進(jìn)行攻擊。從總體上來說可以歸結(jié)為兩種方法:侵入式攻擊和非侵入式攻擊。如果用保險(xiǎn)箱來比喻,盜取鑰匙打開保險(xiǎn)箱可以說是非侵入式攻擊,拿電鋸鋸開保險(xiǎn)箱就屬于侵入式攻擊了。2. 常用的攻擊手段2.1 部分擦除加密后的芯片一般允許整體擦除(Mass Erase)。如果在整體擦除芯片時(shí),控制擦除的時(shí)間,在剛剛好擦除掉加密位的時(shí)候停止(比如掉電),那么芯片就被解密了。2.2 電壓毛刺(Power Glitch)攻擊是在芯片電源引腳故意輸入毛刺,使得芯片運(yùn)行受到影響,使其運(yùn)行跳過某些指令或發(fā)生錯(cuò)誤的操作,從而使芯片信息泄露。2.3 欠壓,過壓,時(shí)鐘瞬態(tài)跳變利用欠壓,過壓,時(shí)鐘的瞬態(tài)跳變,使芯片產(chǎn)生異常,影響芯片的正常執(zhí)行,使保護(hù)電路失效。2.4 時(shí)序攻擊(Timing Attack)代碼在處理不同的數(shù)據(jù),或走不同的流程時(shí),時(shí)間上是不同的。時(shí)序攻擊利用這一特點(diǎn)可以反推密鑰。2.5 功率分析(SPA: Simple Power Analysis)芯片在運(yùn)行不同的指令的時(shí)候,消耗的功率是不一樣的。功率分析正是利用種特性,在代碼運(yùn)行密碼相關(guān)運(yùn)算時(shí),用高分辨率功率測(cè)量儀器從外部測(cè)量芯片功率的變化,從而提取加密密鑰。2.6 差分功率分析 DPA(Differential Power Analysis)在SPA的基礎(chǔ)上,收集已有的密碼運(yùn)算時(shí)的功率變化數(shù)據(jù),在多次統(tǒng)計(jì)的基礎(chǔ)上進(jìn)行分析。是比SPA更有效的攻擊。2.7 硬解密這是最暴力,最不好防范的攻擊方法。它用溶劑溶解芯片外面的殼體,把芯片暴露出來,然后用高倍顯微鏡和聚焦離子束 FIB(Focused Ion Beam)找到加密位置,把它改變?yōu)榉羌用軤顟B(tài),然后讀出芯片內(nèi)容,然后進(jìn)行解密,反匯編。看了這些攻擊手段,是不是開始出冷汗了呢?別擔(dān)心,這只是一部分大家都熟悉的方法,哈哈。不過隨著進(jìn)攻之矛越來越鋒利,防御之盾也越來越堅(jiān)固。在講防御辦法前,我們先對(duì)相關(guān)的加密算法做一個(gè)簡(jiǎn)單的介紹吧。
3. 流行的加密算法3.1 哈希算法(Hash)它的作用是把任意長度的明文,通過單向加密函數(shù),生成固定長度的信息摘要。如果明文發(fā)生變化,那么會(huì)引起信息摘要的變化。從信息摘要無法反推出明文。常用算法: 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,RCx3.3 非對(duì)稱加密算法(Asymmetric Encryption)所謂非對(duì)稱指的是加密方和解密方使用的密鑰不同。如同一個(gè)保險(xiǎn)柜有兩個(gè)門,一個(gè)是入口,一個(gè)是出口,用入口的鑰匙只可以把明文放進(jìn)去,用出口的鑰匙可以把明文取出。這種算法帶來的好處是可以把入口的鑰匙公開出來(公鑰),大家都可以用公鑰進(jìn)行加密,但是除了掌管私鑰的人,其他人是沒有辦法看到保險(xiǎn)柜中的內(nèi)容的。常用算法: RSA,ECC4. 加密算法的特點(diǎn)和安全性Hash 主要用于數(shù)字簽名。據(jù)說最早的應(yīng)用之一是美蘇互相把地震儀放到對(duì)方,監(jiān)控對(duì)方有沒有進(jìn)行核試驗(yàn)。雙方對(duì)對(duì)方都不放心啊,所以用這種算法把數(shù)據(jù)做數(shù)字簽名,大家都能看到數(shù)據(jù),而且不能篡改。對(duì)稱加密算法運(yùn)算速度快,一般用來對(duì)大量數(shù)據(jù)加解密。公鑰算法運(yùn)算速度比較慢,消耗資源多。它常常在開始階段用來分發(fā)對(duì)稱算法使用的密鑰,之后通訊切換到對(duì)稱加解密算法。理論上所有加密算法都是可以被破解的,只是花費(fèi)的時(shí)間和代價(jià)的問題。只有一種加密方法是完全無法破解的,那就是一次一密。加密者和解密者使用相同的密碼本,密鑰是真隨機(jī)數(shù),而且長度和明文相等,每一個(gè)明文字母用一個(gè)密鑰字母加密成密文,密碼本使用一次后既廢棄。據(jù)說很多間諜就是用的這種加密方法。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ì)于代碼來說,也是類似的。把代碼放入芯片后設(shè)置加密位,使別人無法讀出;或者用芯片的唯一序列號(hào)用算法加密后存入特定地址,運(yùn)行前做比對(duì);或者把代碼(或代碼的一部分)加密后存入外部存儲(chǔ)器,只發(fā)送給握有密鑰的主芯片;這就會(huì)用到前面我們介紹的幾種算法之一,或幾種的組合。我們可以根據(jù)產(chǎn)品的價(jià)值來使用不同等級(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. 加密盡量用長的密鑰。g. 在選用 MCU 時(shí),要考慮它是否有足夠強(qiáng)的防破解能力。如 STM32L562的以下特性可以用來提高系統(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)
參考資料:1.Applied Cryptograhpy, Bruce Schneier2.STM32L562 Datasheet
免責(zé)聲明:本文素材來源網(wǎng)絡(luò),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)與我聯(lián)系刪除。
------------?END?------------
后臺(tái)回復(fù)『科普知識(shí)』『嵌入式軟硬件知識(shí)』閱讀更多相關(guān)文章。
歡迎關(guān)注我的公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。
歡迎關(guān)注我的視頻號(hào):
點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。





