Fuzzy Extractor 與 ECC 的兩階段修復機制
傳統 PUF 產生的指紋(Response)在每次讀取時,會因為溫度或雜訊而產生微小的差異。Fuzzy Extractor 的任務,就是允許這些「模糊」的差異存在,並透過密碼學演算法將其收斂回唯一且正確的密鑰。
它的運作分為兩個核心階段:
-
註冊階段 (Enrollment - 工廠端): 晶片在安全且穩定的環境下首次通電,讀取出一組最純淨的 PUF 初始指紋 $R$ 。此時,Fuzzy Extractor 內部的生成演算法 $Gen()$ 會計算出一組輔助資料 (Helper Data) $W$ 。這組 $W$ 會被燒錄到晶片外部或內部的非揮發性記憶體中。請注意,$W$ 本身不包含密鑰資訊,它只是一張「糾錯地圖」。
-
重建階段 (Reconstruction - 應用端): 當晶片在實際場域運作時(可能伴隨高溫或電壓不穩),再次讀取 PUF 會得到一組帶有雜訊的指紋 $R'$ 。此時,系統會載入先前存好的 Helper Data $W$,並透過重建演算法 $Rep(R', W)$,搭配強大的硬體 ECC 電路(如 BCH 碼或 Reed-Muller 碼),將錯誤的位元精準翻轉回來,完美還原出最初的密鑰 $R$ 。
不同 PUF 技術的應用與架構比較
Fuzzy Extractor 雖然解決了傳統 PUF 的可靠度問題,但也帶來了硬體負擔。這正是為什麼業界要發展出無需 ECC 的 neoPUF。以下是兩者在系統層面的深度比較:
| 比較項目 | SRAM PUF (傳統延遲/亞穩態型) | neoPUF (高階量子穿隧型) |
|---|---|---|
| 物理原理 | 交叉耦合反相器通電時的亞穩態競爭 | 極高電場下閘極氧化層的量子穿隧與不可逆崩潰 |
| 錯誤率 (BER) | 易受環境與老化 (NBTI) 影響,極端環境下錯誤率可達 5%~15% | 物理破壞不可逆,達到 100% 可靠度 (0% BER) |
| ECC 與 Fuzzy Extractor | 絕對需要。需消耗大量邏輯閘面積與功耗來實作糾錯電路 | 完全不需要 (Zero Helper Data)。無須糾錯即可直接輸出穩定密鑰 |
| 安全性副作用 | Helper Data 的儲存與處理過程,可能成為側信道攻擊的漏洞 | 狀態隱藏於奈米級氧化層中,抗物理探測與側信道攻擊 |
| 應用層面與場域 | 適合對成本極度敏感、但安全層級與環境要求較普通的消費型電子 | 適合高安全性需求的國防、金融、車用電子、以及資源極度受限的 IoT 節點 |
# 安全開機 (Secure Boot) 機制 安全開機是系統啟動的第一道防線 。要達成端到端的資料安全,我們必須以 PUF 作為不可動搖的基石,往上堆疊出完整的信任鏈 (Chain of Trust)。 6.
信任鏈的核心概念
信任鏈的運作就像是一場嚴格的「接力賽」。每一位跑者(開機階段)在交出接力棒(系統控制權)給下一位跑者之前,都必須先檢查對方的識別證(數位簽章)。
這條鏈條的起點被稱為信任根 (Root of Trust, RoT)。在我們的情境中,neoPUF 提供了最底層、無法被篡改的晶片安全信任根 。因為這個起點是基於硬體物理特性且絕對安全的,後續由它驗證過的每一個軟體層級,也都能被賦予信任。
安全開機的運作階段
當 SoC 通電的那一刻起,系統會嚴格遵循以下驗證流程:
-
硬體信任根啟動 (Boot ROM): 系統通電後,首先執行的程式碼會被燒死在唯讀記憶體 (ROM) 中,無法被任何人修改。這是信任鏈的第一棒。
-
驗證初始開機程式 (FSBL): Boot ROM 會利用源自 PUF 的公鑰,去驗證第一階段開機程式 (First Stage Bootloader, FSBL) 的數位簽章。
-
阻斷或放行: 系統會比對計算出的雜湊值。只有確認韌體沒有被駭客篡改過,系統才會獲准繼續執行 。如果簽章不符,系統會立即中斷開機程序 (System Halt),防止惡意程式取得控制權。
-
信任延伸 (OS 與應用程式): 如果 FSBL 驗證通過,它會接管系統,並用同樣的數位簽章機制去驗證下一階段的作業系統 (OS) 核心。最終,OS 再去驗證各個應用程式。
透過這種「先驗證,再執行」的機制,系統確保了每一行被執行的程式碼,都是經過原廠授權且未經竄改的。
互動探索:安全開機信任鏈模擬
為了讓你直觀地理解信任鏈是如何阻斷威脅的,你可以透過下方的模擬器,扮演駭客嘗試篡改不同階段的韌體,觀察 Secure Boot 機制如何在威脅發生的當下切斷啟動流程。