先把 PUF 想成晶片自己的指紋
PUF 的直覺很簡單:即使兩顆晶片設計圖一樣,製程中仍會留下極微小、難以複製的差異。安全設計可以把這些差異當成晶片自己的指紋。
這篇會從 PUF 是什麼開始,再看常見類型、SRAM PUF 的啟動特性,以及 NeoPUF 的 enrollment 與 extraction。先看懂『每顆晶片天生不同』,後面的金鑰與認證就比較好懂。
重點不是把秘密寫進晶片後藏起來,而是讓晶片用自己的物理特徵,在需要時生成或保護安全資料。
同一份電路版圖、同一套製程做出的晶片,微觀上仍然不可能完全相同。PUF(Physical Unclonable Function,實體不可複製函數)利用這些製程差異,產生能代表個別晶片的回應。
它不是把一組固定序號寫進晶片,而是讓晶片的物理特性參與運算。因此,PUF 常被用於晶片識別、裝置認證、金鑰衍生與硬體信任根。
讀這篇時,可以先把 PUF 想成「把製程差異變成可用安全材料」的技術。製程差異本來是設計者想控制、想降低的變動;但在安全應用裡,這些不可完全複製的微小差異,反而可以成為每顆晶片與生俱來的識別來源。
不過,PUF 不是只要「夠隨機」就好。真正進入產品時,要同時考慮唯一性、可靠度、讀取條件、Enrollment 流程、helper data 是否洩漏資訊、金鑰如何衍生,以及攻擊者能不能透過量測或建模推回內部狀態。換句話說,PUF 是安全系統的一個根,不是整棵樹。
1. 什麼是 PUF?
PUF 可以想成晶片在製造過程中自然形成的「物理指紋」。外部給定 Challenge,電路根據內部微小差異產生 Response;不同晶片通常會得到不同結果。
評估 PUF 時,常關注三項特性:
- Uniqueness(唯一性):不同晶片的回應要有足夠差異。
- Reliability(可靠度):同一晶片在溫度、電壓與老化變化下,仍應盡量重現相同回應。
- Unclonability(難以複製):攻擊者不容易精準重建同樣的物理差異與輸入輸出行為。
PUF 的「不可複製」是安全設計目標,不代表任何 PUF 架構都天然免疫所有建模、旁通道或實體攻擊。
從工程角度看,PUF 的價值在於它降低了「秘密必須被寫入與保存」的壓力。傳統金鑰若直接存在非揮發性記憶體,攻擊者可能把目標放在讀出、複製或搬移那份資料;PUF 則嘗試讓秘密與晶片本身的物理狀態綁定。這也是為什麼 PUF 常被放在 secure boot、device authentication、anti-clone、root of trust 等議題中討論。
但這也帶來另一個要求:同一顆晶片在合法條件下必須能重現結果。若 response 今天是 1010、明天因溫度或老化變成 1110,系統就需要有篩選、校正、錯誤更正或重新建構 key 的方法。PUF 的難點通常就在這裡:它要夠物理、夠不可複製,又要夠穩定、夠工程化。
2. 常見的 PUF 類型
不同 PUF 利用的物理來源並不相同。SRAM PUF 觀察記憶體上電狀態;RO PUF 比較環形振盪器的頻率或延遲;NeoFuse 型 NeoPUF 則在 Enrollment 階段形成一次性的隨機物理路徑。
| 類型 | 主要物理來源 | 讀取概念 |
|---|---|---|
| SRAM PUF | SRAM cell 元件失配 | 觀察上電後偏向 0 或 1 |
| RO PUF | 邏輯閘與繞線延遲差 | 比較振盪頻率或計數值 |
| NeoFuse 型 NeoPUF | 氧化層微觀差異形成的隨機路徑 | 讀取成對 NeoFuse 中哪一側形成路徑 |
不同架構在面積、功耗、可靠度、Enrollment 方式與安全模型上各有取捨,不能只用「隨機」兩個字判斷優劣。
SRAM PUF 的好處是容易理解,也可能利用既有 SRAM 陣列作為物理來源;缺點是 raw bits 不一定都穩定,常需要多次量測、stable-bit selection、ECC 或 fuzzy extractor。RO / Arbiter PUF 則把延遲差轉成輸出,設計上可能簡潔,但若 challenge-response pair 暴露太多,會面臨建模攻擊與 PVT sensitivity 的問題。
Analog / Sensor PUF 代表另一種思路:把漏電流、電流 mismatch、溫度、濕度、感測器偏差等類比特性拿來用。這類 PUF 對 IoT 或感測器產品很有想像空間,但也會把類比設計、校準、雜訊濾波與環境補償納入安全設計範圍。
所以選 PUF 架構時,最好不要問「哪一種最強」,而是問「哪一種物理來源最適合我的產品生命週期」。例如:是否需要 field enrollment?是否能承受 ECC 面積?是否要求高溫可靠?是否有大量 challenge-response 認證需求?是否要跟 OTP、secure storage 或 key manager 整合?這些問題比名稱本身更重要。
3. SRAM PUF 的原理
SRAM cell 由互相回授的元件構成。電源剛升起時,理想電路看似對稱;實際上,電晶體臨界電壓、尺寸與寄生效應存在微小製程差異,使每個 cell 通常偏向某個啟動狀態。
把許多 SRAM cells 的啟動值排列起來,就能形成晶片特有的 bit pattern。不過,接近平衡的 cells 可能受溫度、供應電壓、雜訊與老化影響而翻轉,因此實際系統常搭配:
- 穩定 bit 篩選或 masking。
- 多次 Enrollment 與可靠度評估。
- Error Correction Code(ECC)或 fuzzy extractor。
- Helper data 與金鑰衍生流程。
SRAM PUF 的教學重點是「上電競賽」。一個 6T SRAM cell 可以看成兩個互相回授的 inverter。電源剛打開時,理想狀態下左右兩邊看似對稱;但實際電晶體的 threshold voltage、尺寸、寄生電容與線阻不可能完全一樣,於是某一側會先贏,最後穩定成 0 或 1。
若把很多 cells 的啟動狀態串起來,就得到一串看似隨機、但與該晶片物理狀態相關的 bit pattern。問題是,不是每個 bit 都一樣可靠。有些 cell 會每次都偏向同一邊,是好 bit;有些 cell 太接近平衡,受到溫度、電壓、雜訊或老化影響就容易翻轉,是不穩定 bit。
因此,真正的 SRAM PUF 系統通常不會直接把第一次 power-up 的 raw bits 當 key,而是先收集多次讀值、找出穩定位元、丟掉弱位元,再透過 ECC/helper data/fuzzy extractor 讓 key 可以被穩定重建。這些週邊設計才是把「物理現象」變成「安全產品」的關鍵。
4. From SRAM PUF to NeoPUF
NeoFuse 型 NeoPUF 的 bit-cell 使用一對 NeoFuse。它的重點不是持續比較一般漏電流,而是分成 Enrollment 與 Extraction 兩個階段。
Enrollment:形成隨機物理路徑
對成對 NeoFuse 施加高電壓 V+++。由於兩側氧化層存在微小的內生差異,量子穿隧造成的導電路徑會在其中一側先形成。以單一 bit-cell 的概念來看,路徑可能出現在左側或右側;實際分布與偏差仍需由製程與量測結果確認。
Extraction:把路徑位置讀成位元
讀取時使用較低的讀取電壓 VR,判斷導電路徑位於哪一側。依圖中的編碼:
- 左側形成路徑 →
1 - 右側形成路徑 →
0
Enrollment 後形成的物理狀態可供後續重複讀取。系統仍須驗證讀取裕量、PVT 變化、老化、位元偏差與可能的攻擊面,不能只用理想的 50/50 圖示推論整體安全性。
NeoPUF 這類設計的重點,是把 PUF 的物理差異和產品可用性拉近。eMemory 官方資料把 NeoPUF 描述為基於矽製程中 physically unclonable variations 的硬體安全技術,並強調 uniqueness、unpredictability、secure key generation、identification、authentication 等用途。這也說明了 NeoPUF 不是單純的隨機數展示,而是要服務 root of trust 與安全 IP 的產品需求。
從圖 4 來看,可以把 NeoPUF 的流程拆成兩個層次:第一層是 Enrollment,也就是把微觀氧化層差異透過受控條件固定成可讀的物理狀態;第二層是 Extraction,也就是在正常讀取條件下,把該物理狀態穩定讀成 1 或 0。這和 raw SRAM PUF「每次上電讀啟動偏好」的直覺不同。
對安全架構師來說,這裡的核心問題不是「NeoPUF 是否比較炫」,而是它如何降低產品整合負擔:能否減少複雜 ECC、能否提升 aging / voltage variation 下的穩定性、能否和 NeoFuse OTP、secure storage、key manager、PUFrt/PUF-based security IP 流程整合。這些才是量產導入時會被真正檢查的地方。
PUF 可以用在哪裡?
- 晶片與裝置身分識別。
- Challenge–Response Authentication。
- Device-bound key 或金鑰衍生。
- Secure Boot、韌體保護與硬體信任根。
- 防偽、供應鏈追蹤與授權管理。
PUF 通常不是單獨完成整套安全功能,而是與密碼演算法、金鑰管理、存取控制及防攻擊設計共同構成安全系統。
帶走一句話
SRAM PUF 從「上電偏好」讀出製程差異;NeoFuse 型 NeoPUF 則先在 Enrollment 形成隨機物理路徑,再於 Extraction 讀出路徑位置。兩者都利用製程差異,但物理機制與使用流程不同。
References
- eMemory, NeoPUF:eMemory 官方 NeoPUF 產品頁,說明 NeoPUF 基於矽製程中的 physically unclonable variations,並列出 identification、authentication、security key generation 等用途。
- PUFsecurity, NeoPUF, A Reliable and Non-traceable Quantum Tunneling PUF:說明 SRAM PUF 與 NeoPUF 的機制與穩定性差異,可作為理解圖 3 與圖 4 的補充資料。
- PUF Series 3: The Quantum Tunneling Mechanism of NeoPUF:介紹 NeoPUF quantum-tunneling PUF 的物理機制與氧化層差異。
- Gassend et al., Silicon Physical Random Functions:早期 PUF 概念的重要論文,可作為 Physical Random Function / PUF 概念的歷史背景。
學習指南
硬體安全入門
先備知識
- 基本數位邏輯與裝置身分
我學會了什麼
- 說明製程差異如何形成身分
- 區分 Enrollment 與 Extraction
- 解釋回應為何需要穩定化