控制路徑拒絕錯誤輸出,不等於密碼實作沒有資訊洩漏。DFA 利用正確與故障輸出的差異;SIFA 以故障已注入但輸出仍正確的 ineffective fault 樣本為條件,分析中間值的統計偏差。兩者都要先說清楚攻擊者能做什麼、能觀察什麼。
兩種不同的安全問題
食品工廠的金屬探測器能攔下異物,卻不保證生產紀錄不會透露哪條配方線啟用。第一個是控制安全,第二個是資訊洩漏。密碼電路也可能把錯誤結果擋住,仍透過「錯誤/有效」旗標、完成時間、重試次數或功耗差異洩漏資訊。類比只分開問題,不映射密碼攻擊的統計能力。
DFA 通常比較正確與故障密文,利用特定 round/byte 差異推回密鑰候選;故障位置、時間、輪次與可觀察輸出決定攻擊是否成立。SIFA 則以 ineffective fault 樣本為條件:故障已注入,但輸出仍正確。攻擊者分析這些樣本中間值的條件分布偏差,以區分密鑰候選;不必取得錯誤密文。本文的 effective/ineffective 指注入故障後,運算或輸出是否改變;不是 DUT 的 out_valid 訊號。SIFA 原始論文。
先定義 oracle:攻擊者能選 plaintext 嗎?能重複注入嗎?能分辨 valid、timeout、alert、retry 嗎?是否能量測功耗或電磁?fault model 是 transient、permanent、skip 或資料破壞?再定義每種輸出與 secret 的關聯測試;固定時間本身不是充分證明,統計樣本、噪聲與多重比較也會改變結論。
RTL 層可檢查錯誤狀態不會在 valid、ready、retry 或 key-release 控制上形成未授權分支;但 SVA 對「功耗無關密鑰」不夠。使用 gate-level/netlist 和實體測量做 side-channel 評估,分開記錄控制 property 與資訊洩漏 evidence。
讀結果而不混淆指標
若進行實測,應為每組樣本記錄 fault class、運算是否改變、錯誤旗標、延遲,以及觀察是否能區分不同結果類別。分類器若只在同一批訓練資料看起來好,不算泛化;必須留出未見樣本與明確 confidence。沒有觀察到差異,只代表在該實驗條件下未檢出。
離線互動實驗
實驗以固定種子的合成資料展示樣本數、觀測雜訊與保留樣本如何影響分類結果。「常數比較可區分」只描述重複的常數代碼;含雜訊練習的泛化表現則由另一列留出測試準確度呈現。這是教學模型,不是實測洩漏、RTL 結果或攻擊成果。
RTL/SVA 審查方向
以下為性質草案:先定義 harness 的 transaction、reset 與 oracle,並確認取樣邊界,再接入設計;尚未編譯或證明。
assert property (@(posedge clk) disable iff (!rst_n)
error_seen |-> !out_valid);
cover property (@(posedge clk) disable iff (!rst_n)
fault_class_applied && error_seen);
這條 assertion 只在 error_seen 時檢查 out_valid 為低;它沒有檢查 ready、retry 或 key-release,這些控制各自需要 property。若 error_seen 從未成立,assertion 仍可能 vacuous pass。fault_class_applied 是 harness 記錄本次模型測試已施加指定故障類別的旗標。cover 確認該旗標與 error_seen 都發生;它不證明故障已成功注入實體晶片,也不能取代 DFA、SIFA 或延遲觀察的個別分析。此片段不證明 CDC、timing、side-channel 或實體注入;需由各自工具與測量提供證據。
檢核問題
- 辨認:DFA 主要觀察什麼?SIFA 又可能觀察什麼? 推理: DFA 利用正確與錯誤輸出的差異。SIFA 以 ineffective fault 樣本為條件,分析其中間值的統計偏差;effective/ineffective 指運算或輸出是否改變,不是 DUT 的 output-valid 腳位。
- 比較:拒絕錯誤輸出為什麼不能證明密碼模組沒有資訊洩漏? 推理: 拒絕屬於控制安全。Error flag、validity、retry、latency 或 power 仍可能隨秘密相關狀態變化。
- 情境:faulty ciphertext 已抑制,但兩種秘密相關類別的完成延遲不同。還有什麼暴露? 推理: Timing channel 仍可觀察。抑制資料輸出只遮蔽錯誤密文通道,不能證明實作具 constant-time 行為。
- 故障診斷:訓練樣本中的 fault-outcome code 可分開兩類,還缺哪些證據? 推理: 先定義結果類別,再檢查樣本數、雜訊、重複試驗與保留測試資料。小型合成樣本的規律不是校準後的攻擊結果。
- 設計風險/轉移:加入隨機延遲或改用新樣本後,oracle 哪些部分改變?若這次樣本沒有顯示差異,可以下什麼結論? 推理: 記錄延遲與樣本條件的改變。只能說這組樣本與觀測沒有區分類別;其他通道、條件與實體量測仍未排除。
延伸閱讀
DFA of AES (IACR ePrint 2011/178) · SIFA 原始論文 (IACR ePrint 2018/071) · SIFA on masked AES (IACR ePrint 2018/357) · SIFA 防護方法 (IACR ePrint 2019/536)
MY ACADEMY · LESSON FILM
教學影片
影片依序說明本課的資料路徑。看完一段,可以回到下面的互動練習,改變輸入或故障條件。動畫呈現教學模型;它沒有替代 RTL 模擬。
左右滑動影片,或用方向鍵查看圖卡。
圖卡的範圍說明
教學模型 · 非 RTL 模擬或晶片實測
概念圖與合成教學範圍;不是 SIFA 攻擊、金鑰恢復或晶片測量
旁白使用合成聲音。互動教學與動畫均有模型邊界;請以本課的來源與驗證範圍解讀結果。
Wrap-up|把這一課帶回設計審查
- 威脅模型與成立條件
攻擊者可能重複故障並觀察密文、有效旗標、延遲或功耗;資產是密鑰/中間值。
- 失效原因
DFA 利用正確/故障輸出差異;SIFA 以 ineffective fault 樣本為條件,分析其中間值的統計偏差。
- 防護方法
限制故障與oracle能力、驗證輸出遮蔽/錯誤流程,並對物理側通道做獨立統計評估。
- 驗證方式與待做檢查
故障類別與可觀察結果分開記錄;effective/ineffective 描述運算或輸出是否改變,不等於 DUT 的 out_valid。控制 assertions 不能取代攻擊成功率/資訊量分析。
- 防護界線與未驗證項目
合成樣本非密碼實測;無模型的未檢出不能證明零洩漏,也不涵蓋所有功耗/電磁攻擊。
換個情境再想一次
加入隨機延遲與重新取樣,討論它改變哪種 oracle,哪種攻擊仍然可行。
以上整理對照本課的教學案例、參考資料與實驗範圍;未列為已完成的驗證,都是後續工作。