WEBVTT

1
00:00:00.000 --> 00:00:05.160
控制路徑「拒絕錯誤輸出」不等於密碼實作「沒有洩漏」。

2
00:00:05.160 --> 00:00:07.780
DFA 利用故障輸出的差異；

3
00:00:07.780 --> 00:00:15.060
SIFA 以故障已注入但輸出仍正確的 ineffectivefault 樣本為條件，分析中間值的統計偏差；

4
00:00:15.060 --> 00:00:18.240
兩者都要把觀測與攻擊能力說清楚。

5
00:00:18.240 --> 00:00:24.600
食品工廠的金屬探測器能攔下異物，卻不保證生產紀錄不會透露哪條配方線啟用。

6
00:00:24.600 --> 00:00:27.640
第一個是控制安全，第二個是資訊洩漏。

7
00:00:27.640 --> 00:00:30.220
密碼電路也可能把錯誤結果擋住，

8
00:00:30.220 --> 00:00:35.940
仍透過「錯誤／有效」旗標、完成時間、重試次數或功耗差異洩漏資訊。

9
00:00:35.940 --> 00:00:39.060
類比只分開問題，不映射密碼攻擊的統計能力。

10
00:00:39.375 --> 00:00:46.275
DFA 通常比較正確與故障密文，利用特定round/byte 的差異推回密鑰候選；

11
00:00:46.275 --> 00:00:51.835
故障位置、時間、輪次與可觀察輸出都會影響攻擊是否成立。

12
00:00:51.835 --> 00:00:57.755
SIFA 只保留 ineffective fault 樣本：故障已注入，但輸出仍正確；

13
00:00:57.755 --> 00:01:04.535
再分析這些樣本條件下中間值的統計偏差，以區分密鑰候選，不一定要取得錯誤密文。

14
00:01:04.535 --> 00:01:10.595
依此處的 oracle，effective／ineffective 指運算是否改變，不是 DUT 的 out_valid 腳位。

15
00:01:10.895 --> 00:01:17.975
RTL 層可檢查錯誤狀態不會在 valid、ready、retry 或 key-release 控制上形成未授權分支；

16
00:01:17.975 --> 00:01:21.575
但 SVA 對「功耗無關密鑰」不夠。

17
00:01:21.575 --> 00:01:25.895
使用 gate-level/netlist 和實體測量做side-channel 評估，

18
00:01:25.895 --> 00:01:29.675
分開記錄控制 property 與資訊洩漏 evidence。

19
00:01:29.675 --> 00:01:35.015
實驗列出每組樣本的 fault class、運算是否改變、錯誤旗標、延遲，

20
00:01:35.015 --> 00:01:37.855
以及觀察是否能區分不同結果類別。

21
00:01:37.855 --> 00:01:42.395
分類器若只在同一批訓練資料看起來好，不算泛化；

22
00:01:42.395 --> 00:01:45.615
必須留出未見樣本與明確 confidence。

23
00:01:45.615 --> 00:01:49.355
沒有觀察到差異，只代表在該實驗條件下未檢出。

24
00:01:49.695 --> 00:01:55.715
以下為性質草案：先定義 harness 的transaction、reset 與 oracle，並確認取樣邊界，

25
00:01:55.715 --> 00:01:58.835
再接入設計；尚未編譯或證明。

26
00:01:58.835 --> 00:02:04.095
這個草案只有一條 assertion：error_seen 成立時，out_valid 必須為低。

27
00:02:04.095 --> 00:02:08.775
它不檢查 ready、retry 或 key-release，這些要各自寫 property。

28
00:02:08.775 --> 00:02:12.955
若 error_seen 從未成立，assertion 會 vacuouspass；

29
00:02:12.955 --> 00:02:19.135
fault_class_applied 是 harness 旗標，用來記錄本次模型測試已施加指定故障類別。

30
00:02:19.135 --> 00:02:21.955
cover 把這個紀錄與 error_seen 配對；

31
00:02:21.955 --> 00:02:25.095
它不證明故障已成功進入實體晶片。

32
00:02:25.095 --> 00:02:29.795
文章中的這條性質不證明 CDC、timing、side-channel 或實體注入；

33
00:02:29.795 --> 00:02:32.715
需由各自工具與測量提供證據。

34
00:02:32.715 --> 00:02:37.435
把「錯誤資料有沒有送出」和「輸出是否透露秘密」分開檢查。

35
00:02:37.435 --> 00:02:41.355
DFA 比較正確與故障輸出的差異；

36
00:02:41.355 --> 00:02:46.635
SIFA 以 ineffective fault 樣本為條件，分析這些樣本下中間值分布的統計偏差。

37
00:02:46.635 --> 00:02:53.835
即使遮住故障密文，結果類別、延遲、重試或功耗仍可能形成分類訊號。

38
00:02:53.835 --> 00:02:59.595
實驗要先列出攻擊者能選什麼輸入、能重複幾次、能觀察哪些訊號，

39
00:02:59.595 --> 00:03:03.975
再用未參與調參的樣本檢查泛化並報告不確定性。

40
00:03:03.975 --> 00:03:06.955
沒有測出差異，只表示這次條件下未檢出。

41
00:03:07.835 --> 00:03:15.095
攻擊者可能重複注入故障，觀察密文、結果類別、延遲或功耗，目標是密鑰或中間值。

42
00:03:15.095 --> 00:03:18.495
DFA 利用正確與故障輸出的差異；

43
00:03:18.495 --> 00:03:25.015
SIFA 只保留 ineffective fault 樣本，再分析這些樣本條件下中間值的統計偏差。

44
00:03:25.015 --> 00:03:30.575
審查時要寫清楚攻擊者能控制哪些故障、能觀察哪些訊號。

45
00:03:30.575 --> 00:03:36.115
接著檢查輸出遮蔽與錯誤處理，並用獨立證據評估實體側通道。

46
00:03:36.115 --> 00:03:40.775
控制 assertions 不能代替攻擊成功率或資訊洩漏分析。

47
00:03:40.775 --> 00:03:44.095
這些合成樣本不是密碼實作測試。

48
00:03:44.095 --> 00:03:49.715
若實驗沒有設定洩漏模型，未檢出差異只代表這項測試沒有測出來；

49
00:03:49.715 --> 00:03:54.815
不能因此證明零洩漏，也沒有涵蓋所有功耗與電磁攻擊。

50
00:03:54.815 --> 00:04:04.135
現在換成攻擊者的角度：若故障資料沒有送出，結果類別、延遲、重試或功耗還能否區分結果？

51
00:04:04.135 --> 00:04:10.695
若加入隨機延遲，或改用新的一批樣本，oracle哪一部分改變、哪些訊號仍看得見？

52
00:04:10.695 --> 00:04:14.955
報告時要附上觀察條件，也要說明這次實驗實際檢查到哪裡。

