當(dāng)前位置:首頁 > > ZYNQ
	


1.Efuse是什么
eFuse基于一個(gè)簡單概念,即通過測量已知電阻器上的電壓來檢測電流,然后在電流超過設(shè)計(jì)限值時(shí),通過場效應(yīng)晶體管 (FET) 切斷電流。eFuse具有熱保險(xiǎn)絲無法實(shí)現(xiàn)特性、靈活性和功能。eFuse在電路系統(tǒng)和芯片級(jí)的應(yīng)用是不一樣的,電路系統(tǒng)級(jí)就是傳統(tǒng)意義上的保險(xiǎn)絲的作用,今天我們來聊聊芯片級(jí)的eFuse。
eFuse在電路系統(tǒng)的應(yīng)用
eFuse(electronic fuse):電子保險(xiǎn)絲,熔絲性的一種器件,屬于一次性可編程存儲(chǔ)器。之所以成為eFuse,因?yàn)槠湓硐耠娮颖kU(xiǎn)絲一樣,CPU出廠后,這片eFuse空間內(nèi)所有比特全為“1”,如果向一位比特寫入“0”,那么就徹底燒死這個(gè)比特了,再也無法改變它的值,也就是再也回不去“1”了。一般OEM從CPU廠商購買芯片后,一般都要燒寫eFuse,用于標(biāo)識(shí)自己公司的版本信息,運(yùn)行模式等相關(guān)信息。同時(shí),由于其一次性編程的特性,我們又將其用在Secure Boot安全啟動(dòng)中。
eFUSE在芯片系統(tǒng)中的應(yīng)用

2.OTP是什么

了解完eFuse后,我們就順便了解一下OTP。首先我們了解一下NVM的概念,再來引出OTP。
NVM: Non-Volatile Memory,非易失性存儲(chǔ)器。
NVM 的特點(diǎn)是存儲(chǔ)的數(shù)據(jù)不會(huì)因?yàn)殡娫搓P(guān)閉而消失,像 Mask ROM、PROM、EPROM、EEPROM、NAND / NOR 閃存 (Flash Memory) 等傳統(tǒng) NVM,以及,目前許多正在研發(fā)的新型態(tài)存儲(chǔ)器,如磁性存儲(chǔ)器 (MRAM)、阻變存儲(chǔ)器(RRAM)、相變存儲(chǔ)器 (PRAM)、鐵電存儲(chǔ)器(FeRAM) 等等都屬于 NVM。所以NVM的概念很大。
從可編程次數(shù)來看,NVM可以分為3類:
  • MTP: Multiple-Time Programmable,可以多次編程
  • FTP: Few-Time Programmable,可編程的次數(shù)有限
  • OTP: One-Time Programmable,只允許編程一次,一旦被編程,數(shù)據(jù)永久有效
可見,OTP(One Time Programmable)指的是可編程的次數(shù),并不特指某一種存儲(chǔ)器。

3.OTP存儲(chǔ)器的分類

現(xiàn)在SOC中使用的OTP通常有兩種——eFuse and AntiFuse。

fuse是保險(xiǎn)絲、熔絲的意思,在計(jì)算機(jī)技術(shù)中,eFuse(electric-fuse,電子保險(xiǎn)絲)是置于計(jì)算機(jī)芯片中的微觀保險(xiǎn)絲。該技術(shù)是IBM在2004年發(fā)明的,可以對(duì)芯片進(jìn)行動(dòng)態(tài)實(shí)時(shí)重新編程。概括地說,計(jì)算機(jī)邏輯通常被“蝕刻”或“硬連線”("etched" or "hard-wired")到芯片上,在芯片制造完成后不能更改,但使用eFuse,芯片制造商可以在芯片上的電路運(yùn)行時(shí)進(jìn)行更改。
eFuse可以用硅或金屬制成,它們都是通過電遷移來工作的,即電流導(dǎo)致導(dǎo)體材料移動(dòng)的現(xiàn)象。隨著時(shí)間的流逝,編程期間產(chǎn)生的“熔絲碎屑”會(huì)反向生長,導(dǎo)致金屬線斷開的相同電遷移也會(huì)導(dǎo)致金屬線無意中再次連接,從而改變原本要存儲(chǔ)的數(shù)據(jù),導(dǎo)致了錯(cuò)誤的行為。這個(gè)特性限制了eFuse 的可讀次數(shù)。
Anti-Fuse(反熔絲)是一種電氣裝置,其功能與保險(xiǎn)絲相反。保險(xiǎn)絲從低電阻開始,默認(rèn)是導(dǎo)通狀態(tài),當(dāng)灌以較大的電流時(shí)切斷電路。而反熔絲從高電阻開始,默認(rèn)是不導(dǎo)通狀態(tài),當(dāng)灌以較大的電壓時(shí),可將其轉(zhuǎn)換為永久性導(dǎo)電路徑。

3.1 efuse 和 anti-Fuse 的區(qū)別

Antifuse 跟eFuse 的最大差別在功耗、安全性、編程機(jī)制:

1)從器件面積上講,eFuse 的 cell 的面積更大,所以僅僅有小容量的器件可以考慮。當(dāng)然如果需要大容量的,也可以多個(gè) eFuse Macro 拼接,但是這意味著芯片面積的增加,成本也會(huì)增加;anti-Fuse的 cell 面積很小,所有相對(duì)來講,可以提供更大容量的 Macro 可供使用。

2)功耗,與eFuse 相比,Antifuse 在未編程狀態(tài)下消耗的功耗更少。未編程eFuse 的典型電阻值約為50到100歐姆,而編程的eFuse 的典型電阻值約為10Kohms 到100Kohms,  Antifuse 的阻值正好相反,在未編程狀態(tài)下電阻較高,在編程狀態(tài)下電阻較低。不論是eFuse 還是Antifuse 未編程位的默認(rèn)值都是“0”, 使用時(shí)只需要將少數(shù)的對(duì)應(yīng)比特編程為"1", 而在eFuse 中存儲(chǔ)的“0” 越多功耗就越大,在Antifuse 中存儲(chǔ)的“0” 越多,功耗就越??;此外,eFuse 的靜態(tài)功耗要比Antifuse 高得多。

3)安全性,Antifuse 比eFuse 的安全性更好,在顯微鏡下也無法區(qū)別編程位和未編程位,因此無法讀取編程數(shù)據(jù)。在多晶硅柵CMOS 工藝中,多晶硅eFuse 應(yīng)用廣泛,EM 發(fā)生在硅化物層。然而在MOSFET 工藝中,用high-k 材料做金屬柵極( HKMG ),  沒有多晶硅層可用作eFuse,  因此改用金屬層作eFuse。不論哪種eFuse 在顯微鏡下都可以區(qū)別出編程位和未編程位,而Antifuse 不僅在顯微鏡下無法窺探到編程信息,通過FIB 也檢測不到電壓熱點(diǎn),這使得未經(jīng)授權(quán)的用戶很難獲得存儲(chǔ)在Antifuse內(nèi)存中的數(shù)據(jù)。

4)編程機(jī)制:Antifuse, 在薄柵氧上施加高電壓,通過雪崩擊穿使晶體管的柵極和源極短路來編程。eFuse, 通過使用I/O 電壓,向金屬條或多晶硅條施加高密度電流來編程,eFuse 中的低電阻金屬由于高密度電流通過窄金屬或多晶硅而被電遷移熔斷,在編程期間,eFuse 的兩端寬大比中間較窄區(qū)域有更好的冷卻效果,因此,eFuse 的熔斷部分始終位于eFuse 中間的窄區(qū)域;此外,編程一比特,需要一對(duì)eFuse, 一個(gè)用于編程,另一個(gè)用做差分放大器讀取參考電阻;eFuse 只能被編程一次,將對(duì)應(yīng)比特的值編程為"1", 如果編程后讀取的值不為"1", 則編程失敗,這意味著良率下降。而Antifuse 可以被編程18次左右,如果初次編程失敗,則可以反復(fù)對(duì)其編程,有助于良率提升。

3.2 存儲(chǔ)原理和壽命

  • efuse存儲(chǔ)原理是將金屬線熔斷形成小孔,因此數(shù)據(jù)存儲(chǔ)是不可逆的,且內(nèi)存容量比較小,通常在512位以下;
  • anti-Fuse則是使用快速電子束技術(shù)在晶體管柵極中制造永久的浮動(dòng)門,其數(shù)據(jù)存儲(chǔ)是可逆的,實(shí)現(xiàn)較大的存儲(chǔ)容量,通常在數(shù)MB以上;

4. efuse和 anti-Fuse 在芯片設(shè)計(jì)中的應(yīng)用

由于efuse和 anti-Fuse 的特點(diǎn)和優(yōu)勢不同,因此在芯片設(shè)計(jì)中它們的應(yīng)用也有所不同。
4.1 efuse在芯片設(shè)計(jì)中的應(yīng)用
(1) 設(shè)備標(biāo)識(shí)符和唯一序列號(hào):efuse可以用來存儲(chǔ)芯片的設(shè)備ID和唯一序列號(hào),這可以使設(shè)備具有唯一性,方便統(tǒng)計(jì)和識(shí)別。
(2) 版權(quán)保護(hù):efuse可以存儲(chǔ)版權(quán)保護(hù)密鑰,以保護(hù)代碼和文檔的安全性。
(3) 提高安全性:efuse可以用來存儲(chǔ)安全密鑰、密碼等關(guān)鍵信息,以提高芯片的安全性,避免被黑客攻擊。
4.2.  anti-Fuse 在芯片設(shè)計(jì)中的應(yīng)用
(1) 生產(chǎn)流水線:通過在  anti-Fuse OTP中存儲(chǔ)產(chǎn)品序列號(hào)、生產(chǎn)日期等信息,可以幫助生產(chǎn)商跟蹤產(chǎn)品的生產(chǎn)、質(zhì)量和歸屬情況。
(2) 啟動(dòng)代碼:通過將啟動(dòng)代碼存儲(chǔ)在 anti-Fuse  OTP中,可以保證代碼的安全性和完整性,防止被攻擊或篡改。
(3) 加密密鑰:anti-Fuse OTP可以用于存儲(chǔ)加密密鑰等關(guān)鍵信息,以提高設(shè)備的安全性。

5. 什么是Secure Boot

上面我們也了解過了,efuse主要用于記錄一些OEM的產(chǎn)品信息,并且也會(huì)用于安全啟動(dòng),那么安全啟動(dòng)是什么,為什么要做安全啟動(dòng)?

安全啟動(dòng)Secure Boot,其主要目的是:以限制消費(fèi)者能力,防止消費(fèi)者從軟硬件層面,對(duì)產(chǎn)品的部分關(guān)鍵系統(tǒng)進(jìn)行讀寫,調(diào)試等高級(jí)權(quán)限,達(dá)到對(duì)產(chǎn)品的商業(yè)保密,知識(shí)產(chǎn)權(quán)的保護(hù)。

安全啟動(dòng)的安全模型是建立在消費(fèi)者是攻擊者的假設(shè)之上,一般常見的操作有:

  1. 刷機(jī)安裝自定義的操作系統(tǒng)
  2. 繞過廠家封閉的支付平臺(tái)
  3. 繞過系統(tǒng)保護(hù),復(fù)制廠家保護(hù)的數(shù)字產(chǎn)品

除此之外呢,有的比較專業(yè)的消費(fèi)者,還可以:

使用數(shù)字示波器監(jiān)聽 CPU 和 RAM 、eMMC 之間的數(shù)據(jù)傳輸來讀取非常底層的數(shù)據(jù)傳輸,而且像 eMMC 這種芯片通常都是業(yè)界標(biāo)準(zhǔn)化的,攻擊者甚至可以把芯片拆下來,然后用市面上現(xiàn)成的通用 eMMC 編程工具來讀寫上面的內(nèi)容。安全啟動(dòng)等級(jí)也有一個(gè)上限:這個(gè)上限通常是認(rèn)為攻擊者不至于能夠剝離芯片的封裝,然后用電子顯微鏡等納米級(jí)別精度的顯像設(shè)備來逆向芯片的內(nèi)部結(jié)構(gòu)。
簡單來說:能成功攻破芯片安全機(jī)制的一次性投資成本至少需要在十萬美元以上才可以認(rèn)為是安全的。

6. CPU內(nèi)部安全機(jī)制


6.1 bootROM

BootROM是集成在CPU芯片的一個(gè)ROM空間,其主要用于存放一小段可執(zhí)行程序,出廠的時(shí)候被燒錄進(jìn)去寫死,不可修改。
CPU在通電之后,執(zhí)行的第一條程序就在BootROM,用于初始化Secure Boot安全機(jī)制,加載Secure Boot Key密鑰,從存儲(chǔ)介質(zhì)中加載并驗(yàn)證 First Stage Bootloader(FSBL);最后跳轉(zhuǎn)進(jìn) FSBL 中。

6.2 iRAM

為了避免使用外部的RAM,支持Secure Boot的CPU都會(huì)內(nèi)置一塊很小的RAM,通常只有 16KB 到 64KB ,我們稱之為 iRAM。
這塊 iRAM 上的空間非常寶貴,bootROM 一般會(huì)用 4KB 的 iRAM 作為它的堆棧。FSBL 也會(huì)被直接加載到 iRAM 上執(zhí)行。

6.3 eFUSE

如上面所述,在Secure Boot中存放的是根密鑰,用于安全啟動(dòng)的驗(yàn)證。
一般有兩種根密鑰:一個(gè)是加密解密用的對(duì)稱密鑰Secure Boot Key,一般是 AES 128 的,每臺(tái)設(shè)備都是隨機(jī)生成不一樣的;另一個(gè)是一個(gè) Secure Boot Signing Key 公鑰,一般用的 RSA 或 ECC,這個(gè)是每個(gè) OEM 自己生成的,每臺(tái)設(shè)備用的都一樣,有些芯片會(huì)存公鑰的 Hash 來減少 eFUSE 的空間使用。

6.4 Security Engine

有些 CPU 中還會(huì)有一個(gè)專門負(fù)責(zé)加密解密的模塊,我們稱為 Security Engine。這個(gè)模塊通常會(huì)有若干個(gè)密鑰槽(Keyslots),可以通過寄存器將密鑰加載到任意一個(gè) Keyslot 當(dāng)中,通過寄存器操作 DMA 讀寫,可以使用 Keyslot 中的密鑰對(duì)數(shù)據(jù)進(jìn)行加密、解密、簽名、HMAC、隨機(jī)數(shù)生成等操作。

6.5 First Stage Bootloader(FSBL)

FSBL 的作用是初始化 PCB 板上的其他硬件設(shè)備,給外部 RAM 映射內(nèi)存空間,從外部存儲(chǔ)介質(zhì)中加載驗(yàn)證并執(zhí)行接下來的啟動(dòng)程序。

6.6 根信任建立

CPU上電后執(zhí)行Boot ROM的程序,其這一小段程序用于初始化RAM,并加載Efuse上的內(nèi)容,判斷其所處的運(yùn)行模式是不是生產(chǎn)模式。
如果在生產(chǎn)模式,開啟Secure Boot功能,把Efuse上保存的Secure Boot Key加載到Security Engine加密模塊中處理。從外部存儲(chǔ)介質(zhì)中加載FSBL,F(xiàn)SBL里面會(huì)有一個(gè)數(shù)字簽名和公鑰證書,bootROM 會(huì)驗(yàn)證這個(gè)簽名的合法性,以及根證書的 Hash 是否和 eFUSE 中的 Signing Key 的 Hash 相同。
如果驗(yàn)證通過,說明 FSBL 的的確確是 OEM 正式發(fā)布的,沒有受到過篡改。然后bootROM 就會(huì)跳轉(zhuǎn)到 FSBL 執(zhí)行接下來的啟動(dòng)程序。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉