1.Efuse是什么
eFuse基于一個簡單概念,即通過測量已知電阻器上的電壓來檢測電流,然后在電流超過設計限值時,通過場效應晶體管 (FET) 切斷電流。eFuse具有熱保險絲無法實現特性、靈活性和功能。eFuse在電路系統和芯片級的應用是不一樣的,電路系統級就是傳統意義上的保險絲的作用,今天我們來聊聊芯片級的eFuse。
eFuse在電路系統的應用
eFuse(electronic fuse):電子保險絲,熔絲性的一種器件,屬于一次性可編程存儲器。之所以成為eFuse,因為其原理像電子保險絲一樣,CPU出廠后,這片eFuse空間內所有比特全為“1”,如果向一位比特寫入“0”,那么就徹底燒死這個比特了,再也無法改變它的值,也就是再也回不去“1”了。一般OEM從CPU廠商購買芯片后,一般都要燒寫eFuse,用于標識自己公司的版本信息,運行模式等相關信息。同時,由于其一次性編程的特性,我們又將其用在Secure Boot安全啟動中。
eFUSE在芯片系統中的應用
2.OTP是什么
了解完eFuse后,我們就順便了解一下OTP。首先我們了解一下NVM的概念,再來引出OTP。
NVM: Non-Volatile Memory,非易失性存儲器。
NVM 的特點是存儲的數據不會因為電源關閉而消失,像 Mask ROM、PROM、EPROM、EEPROM、NAND / NOR 閃存 (Flash Memory) 等傳統 NVM,以及,目前許多正在研發的新型態存儲器,如磁性存儲器 (MRAM)、阻變存儲器(RRAM)、相變存儲器 (PRAM)、鐵電存儲器(FeRAM) 等等都屬于 NVM。所以NVM的概念很大。
從可編程次數來看,NVM可以分為3類:
MTP: Multiple-Time Programmable,可以多次編程
FTP: Few-Time Programmable,可編程的次數有限
OTP: One-Time Programmable,只允許編程一次,一旦被編程,數據永久有效
可見,OTP(One Time Programmable)指的是可編程的次數,并不特指某一種存儲器。
3.OTP存儲器的分類
現在SOC中使用的OTP通常有兩種——***eFuse ***andAntiFuse。
fuse是保險絲、熔絲的意思,在計算機技術中,eFuse(electric-fuse,電子保險絲)是置于計算機芯片中的微觀保險絲。該技術是IBM在2004年發明的,可以對芯片進行動態實時重新編程。概括地說,計算機邏輯通常被“蝕刻”或“硬連線”("etched" or "hard-wired")到芯片上,在芯片制造完成后不能更改,但使用eFuse,芯片制造商可以在芯片上的電路運行時進行更改。
eFuse可以用硅或金屬制成,它們都是通過電遷移來工作的,即電流導致導體材料移動的現象。隨著時間的流逝,編程期間產生的“熔絲碎屑”會反向生長,導致金屬線斷開的相同電遷移也會導致金屬線無意中再次連接,從而改變原本要存儲的數據,導致了錯誤的行為。這個特性限制了eFuse 的可讀次數。
Anti-Fuse(反熔絲)是一種電氣裝置,其功能與保險絲相反。保險絲從低電阻開始,默認是導通狀態,當灌以較大的電流時切斷電路。而反熔絲從高電阻開始,默認是不導通狀態,當灌以較大的電壓時,可將其轉換為永久性導電路徑。
3.1 efuse 和 anti-Fuse 的區別
Antifuse 跟eFuse 的最大差別在功耗、安全性、編程機制:
1)從器件面積上講,eFuse 的 cell 的面積更大,所以僅僅有小容量的器件可以考慮。當然如果需要大容量的,也可以多個 eFuse Macro 拼接,但是這意味著芯片面積的增加,成本也會增加;anti-Fuse的 cell 面積很小,所有相對來講,可以提供更大容量的 Macro 可供使用。
2)功耗,與eFuse 相比,Antifuse 在未編程狀態下消耗的功耗更少。未編程eFuse 的典型電阻值約為50到100歐姆,而編程的eFuse 的典型電阻值約為10Kohms 到100Kohms, Antifuse 的阻值正好相反,在未編程狀態下電阻較高,在編程狀態下電阻較低。不論是eFuse 還是Antifuse 未編程位的默認值都是“0”, 使用時只需要將少數的對應比特編程為"1", 而在eFuse 中存儲的“0” 越多功耗就越大,在Antifuse 中存儲的“0” 越多,功耗就越小;此外,eFuse 的靜態功耗要比Antifuse 高得多。
3)安全性,Antifuse 比eFuse 的安全性更好,在顯微鏡下也無法區別編程位和未編程位,因此無法讀取編程數據。在多晶硅柵CMOS 工藝中,多晶硅eFuse 應用廣泛,EM 發生在硅化物層。然而在MOSFET 工藝中,用high-k 材料做金屬柵極( HKMG ), 沒有多晶硅層可用作eFuse, 因此改用金屬層作eFuse。不論哪種eFuse 在顯微鏡下都可以區別出編程位和未編程位,而Antifuse 不僅在顯微鏡下無法窺探到編程信息,通過FIB 也檢測不到電壓熱點,這使得未經授權的用戶很難獲得存儲在Antifuse內存中的數據。
4)編程機制:Antifuse, 在薄柵氧上施加高電壓,通過雪崩擊穿使晶體管的柵極和源極短路來編程。eFuse, 通過使用I/O 電壓,向金屬條或多晶硅條施加高密度電流來編程,eFuse 中的低電阻金屬由于高密度電流通過窄金屬或多晶硅而被電遷移熔斷,在編程期間,eFuse 的兩端寬大比中間較窄區域有更好的冷卻效果,因此,eFuse 的熔斷部分始終位于eFuse 中間的窄區域;此外,編程一比特,需要一對eFuse, 一個用于編程,另一個用做差分放大器讀取參考電阻;eFuse 只能被編程一次,將對應比特的值編程為"1", 如果編程后讀取的值不為"1", 則編程失敗,這意味著良率下降。而Antifuse 可以被編程18次左右,如果初次編程失敗,則可以反復對其編程,有助于良率提升。
3.2 存儲原理和壽命
efuse存儲原理是將金屬線熔斷形成小孔,因此數據存儲是不可逆的,且內存容量比較小,通常在512位以下;
anti-Fuse則是使用快速電子束技術在晶體管柵極中制造永久的浮動門,其數據存儲是可逆的,實現較大的存儲容量,通常在數MB以上;
4. efuse和 anti-Fuse 在芯片設計中的應用
由于efuse和 anti-Fuse 的特點和優勢不同,因此在芯片設計中它們的應用也有所不同。
4.1 efuse在芯片設計中的應用
(1) 設備標識符和唯一序列號:efuse可以用來存儲芯片的設備ID和唯一序列號,這可以使設備具有唯一性,方便統計和識別。
(2) 版權保護:efuse可以存儲版權保護密鑰,以保護代碼和文檔的安全性。
(3) 提高安全性:efuse可以用來存儲安全密鑰、密碼等關鍵信息,以提高芯片的安全性,避免被黑客攻擊。
4.2. anti-Fuse 在芯片設計中的應用
(1) 生產流水線:通過在 anti-Fuse OTP中存儲產品序列號、生產日期等信息,可以幫助生產商跟蹤產品的生產、質量和歸屬情況。
(2) 啟動代碼:通過將啟動代碼存儲在 anti-Fuse OTP中,可以保證代碼的安全性和完整性,防止被攻擊或篡改。
(3) 加密密鑰:anti-Fuse OTP可以用于存儲加密密鑰等關鍵信息,以提高設備的安全性。
5. 什么是Secure Boot
上面我們也了解過了,efuse主要用于記錄一些OEM的產品信息,并且也會用于安全啟動,那么安全啟動是什么,為什么要做安全啟動?
安全啟動Secure Boot,其主要目的是:以限制消費者能力,防止消費者從軟硬件層面,對產品的部分關鍵系統進行讀寫,調試等高級權限,達到對產品的商業保密,知識產權的保護。
安全啟動的安全模型是建立在消費者是攻擊者的假設之上,一般常見的操作有:
刷機安裝自定義的操作系統
繞過廠家封閉的支付平臺
繞過系統保護,復制廠家保護的數字產品
除此之外呢,有的比較專業的消費者,還可以:
使用數字示波器監聽 CPU 和 RAM 、eMMC 之間的數據傳輸來讀取非常底層的數據傳輸,而且像 eMMC 這種芯片通常都是業界標準化的,攻擊者甚至可以把芯片拆下來,然后用市面上現成的通用 eMMC 編程工具來讀寫上面的內容。安全啟動等級也有一個上限:這個上限通常是認為攻擊者不至于能夠剝離芯片的封裝,然后用電子顯微鏡等納米級別精度的顯像設備來逆向芯片的內部結構。
簡單來說:能成功攻破芯片安全機制的一次性投資成本至少需要在十萬美元以上才可以認為是安全的。
6. CPU內部安全機制
6.1 bootROM
BootROM是集成在CPU芯片的一個ROM空間,其主要用于存放一小段可執行程序,出廠的時候被燒錄進去寫死,不可修改。
CPU在通電之后,執行的第一條程序就在BootROM,用于初始化Secure Boot安全機制,加載Secure Boot Key密鑰,從存儲介質中加載并驗證 First Stage Bootloader(FSBL);最后跳轉進 FSBL 中。
6.2 iRAM
為了避免使用外部的RAM,支持Secure Boot的CPU都會內置一塊很小的RAM,通常只有 16KB 到 64KB ,我們稱之為 iRAM。
這塊 iRAM 上的空間非常寶貴,bootROM 一般會用 4KB 的 iRAM 作為它的堆棧。FSBL 也會被直接加載到 iRAM 上執行。
6.3 eFUSE
如上面所述,在Secure Boot中存放的是根密鑰,用于安全啟動的驗證。
一般有兩種根密鑰:一個是加密解密用的對稱密鑰Secure Boot Key,一般是 AES 128 的,每臺設備都是隨機生成不一樣的;另一個是一個 Secure Boot Signing Key 公鑰,一般用的 RSA 或 ECC,這個是每個 OEM 自己生成的,每臺設備用的都一樣,有些芯片會存公鑰的 Hash 來減少 eFUSE 的空間使用。
6.4 Security Engine
有些 CPU 中還會有一個專門負責加密解密的模塊,我們稱為 Security Engine。這個模塊通常會有若干個密鑰槽(Keyslots),可以通過寄存器將密鑰加載到任意一個 Keyslot 當中,通過寄存器操作 DMA 讀寫,可以使用 Keyslot 中的密鑰對數據進行加密、解密、簽名、HMAC、隨機數生成等操作。
6.5 First Stage Bootloader(FSBL)
FSBL 的作用是初始化 PCB 板上的其他硬件設備,給外部 RAM 映射內存空間,從外部存儲介質中加載驗證并執行接下來的啟動程序。
6.6 根信任建立
CPU上電后執行Boot ROM的程序,其這一小段程序用于初始化RAM,并加載Efuse上的內容,判斷其所處的運行模式是不是生產模式。
如果在生產模式,開啟Secure Boot功能,把Efuse上保存的Secure Boot Key加載到Security Engine加密模塊中處理。從外部存儲介質中加載FSBL,FSBL里面會有一個數字簽名和公鑰證書,bootROM 會驗證這個簽名的合法性,以及根證書的 Hash 是否和 eFUSE 中的 Signing Key 的 Hash 相同。
如果驗證通過,說明 FSBL 的的確確是 OEM 正式發布的,沒有受到過篡改。然后bootROM 就會跳轉到 FSBL 執行接下來的啟動程序。
審核編輯:劉清
-
FET
+關注
關注
3文章
630瀏覽量
62888 -
場效應晶體管
+關注
關注
6文章
359瀏覽量
19470 -
NVM
+關注
關注
1文章
39瀏覽量
19108 -
可編程存儲器
+關注
關注
0文章
6瀏覽量
7387 -
eFuse
+關注
關注
1文章
28瀏覽量
6060
原文標題:芯片設計時,用到的efuse 和otp有什么區別?
文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論