WEBVTT

1
00:00:00.000 --> 00:00:04.420
延續第三課，失敗映像仍不能取得取指許可。

2
00:00:04.420 --> 00:00:07.520
這次驗證器改送四個位元。

3
00:00:07.520 --> 00:00:11.940
接收端必須決定，十六種組合中哪一種代表放行。

4
00:00:11.940 --> 00:00:14.980
編碼器與接收端的判讀方式，都會影響結果。

5
00:00:15.458 --> 00:00:18.918
多位元控制把一個判斷表示成碼字。

6
00:00:18.918 --> 00:00:24.418
本課使用 FAIL＝1001、PASS＝0110。

7
00:00:24.418 --> 00:00:26.638
兩者有四個位置不同。

8
00:00:26.638 --> 00:00:29.558
Hamming distance 就是不同位元的數量。

9
00:00:29.558 --> 00:00:32.578
它描述碼字距離，沒有量測實體攻擊難度。

10
00:00:33.358 --> 00:00:35.858
接收端可以完整比對 PASS。

11
00:00:35.858 --> 00:00:38.858
嚴格解碼只讓 0110 放行。

12
00:00:38.858 --> 00:00:42.238
另一種接法是「只要不是 FAIL 就放行」。

13
00:00:42.238 --> 00:00:46.458
寬鬆解碼會接受十五種值，包含十四種非法碼。

14
00:00:46.458 --> 00:00:49.638
同樣四條線，判讀方式卻讓保護範圍不同。

15
00:00:50.518 --> 00:00:56.918
用 mask＝0001 翻轉 FAIL 的最低位，接收端會看到 1000。

16
00:00:56.918 --> 00:01:00.078
嚴格解碼拒絕，寬鬆解碼則放行。

17
00:01:00.078 --> 00:01:06.518
非法碼偵測器可以發出 alert，但脆弱版本刻意沒有把偵測結果接入放行路徑。

18
00:01:06.518 --> 00:01:08.598
看到 alert，仍可能已經越權。

19
00:01:09.198 --> 00:01:15.918
OpenTitan 原始碼分開定義嚴格與寬鬆 MuBi 判讀，四位元常數為 6 與 9。

20
00:01:15.918 --> 00:01:23.518
本課借用公開值說明選擇，沒有測試 OpenTitan，也沒有宣稱寬鬆判讀在所有情境都錯。

21
00:01:23.518 --> 00:01:25.618
拒絕條件可能需要不同語意。

22
00:01:25.978 --> 00:01:28.738
儲存實驗從已保存的 FAIL 開始。

23
00:01:28.738 --> 00:01:34.078
一次事件在 edge 0 後，以 XOR 改動一個四位元暫存器。

24
00:01:34.078 --> 00:01:37.078
錯誤保留到 edge 1 的請求。

25
00:01:37.078 --> 00:01:40.798
程式枚舉全部十六種 mask，零值另作控制。

26
00:01:40.798 --> 00:01:43.778
該拍的 valid 與 ready 都成立。

27
00:01:44.538 --> 00:01:48.598
「至多翻三位」的主張排除了 mask＝1111。

28
00:01:48.598 --> 00:01:53.958
預算內的非零 mask，會把 FAIL 改成嚴格解碼拒絕的非法值。

29
00:01:53.958 --> 00:01:57.458
1111 則直接得到合法 PASS。

30
00:01:57.458 --> 00:02:02.358
若一次實體事件能反相整個碼字，就不能沿用三位元預算。

31
00:02:03.018 --> 00:02:06.798
儲存實驗先信任映像與獨立 reference。

32
00:02:06.798 --> 00:02:14.278
完成旗標、編碼與解碼也不受擾，時脈、重置及接受握手同樣可信。

33
00:02:14.278 --> 00:02:19.098
Reference 保存映像原本失敗的結果，不複製受擾碼字。

34
00:02:19.098 --> 00:02:21.878
否則錯誤 PASS 也會改掉測試判準。

35
00:02:22.228 --> 00:02:24.048
接著把目標移到上游。

36
00:02:24.048 --> 00:02:27.388
在保存前翻轉一位元授權輸入。

37
00:02:27.388 --> 00:02:30.648
編碼器收到 true，便保存合法 PASS。

38
00:02:30.648 --> 00:02:34.388
嚴格比對會通過，因為碼字格式完全正確。

39
00:02:34.388 --> 00:02:35.688
錯誤發生在編碼之前。

40
00:02:36.428 --> 00:02:40.768
這是單一來源目標的獨立實驗，沒有同時翻儲存位元。

41
00:02:40.768 --> 00:02:44.828
另一個擴大範圍實驗，只在 edge 1 反相最終 grant。

42
00:02:44.828 --> 00:02:47.188
兩者仍信任接受介面。

43
00:02:47.188 --> 00:02:49.788
它們指出碼字距離無法自行保護的兩個邊界。

44
00:02:50.368 --> 00:02:57.048
設計者可以讓編碼判斷沿更多路徑傳遞，檢查來源，或在接收端使用另外產生的證據。

45
00:02:57.048 --> 00:02:59.368
每種做法都需要可信條件。

46
00:02:59.368 --> 00:03:02.988
把同一個受擾 bool 展開成四位，不會產生四個獨立判斷。

47
00:03:03.353 --> 00:03:06.373
打開實驗，維持授權為 false。

48
00:03:06.373 --> 00:03:10.693
選 code 目標、strict 政策與 mask＝1。

49
00:03:10.693 --> 00:03:14.313
先看 raw、seen、bad 與 commit。

50
00:03:14.313 --> 00:03:18.493
只把政策改為 loose，接受結果就會改變。

51
00:03:18.493 --> 00:03:21.033
來源與故障都相同。

52
00:03:21.033 --> 00:03:23.833
匯出兩份軌跡，指出差異來自哪個閘。

53
00:03:24.893 --> 00:03:30.673
Node 枚舉十六種 mask，嚴格解碼有一種越權，寬鬆解碼有十五種。

54
00:03:30.673 --> 00:03:35.553
數字包含四位元反例，只表示枚舉結果，不能當攻擊機率。

55
00:03:35.553 --> 00:03:39.333
無故障的授權 PASS 能被接受；無故障 FAIL 會被拒絕。

56
00:03:40.253 --> 00:03:47.033
改選 source，再選 grant；非零 mask 在這兩組只作注入開關，不代表來源位元數。

57
00:03:47.033 --> 00:03:49.453
每組目標都是一個 bool。

58
00:03:49.453 --> 00:03:52.513
這些軌跡不能混入儲存 mask 表。

59
00:03:52.513 --> 00:03:57.933
最後設 authorized＝true、mask＝0，確認嚴格閘在正常情況能打開。

60
00:03:58.313 --> 00:04:01.653
這段 RTL／SVA 尚未編譯。

61
00:04:01.653 --> 00:04:09.573
四態 X 傳播、相等比較的綜合結果、編碼 AND／OR 語意，以及解碼後故障，都需要另外處理。

62
00:04:09.573 --> 00:04:12.553
綜合後也要重新追來源到接收端。

63
00:04:12.553 --> 00:04:16.293
第五課會檢查冗餘來源是否真的獨立失效。

64
00:04:16.688 --> 00:04:22.468
一次四位元儲存 XOR 在 edge 0 後作用，edge 1 接受。

65
00:04:22.468 --> 00:04:27.908
拒絕主張限定至多三位；四位、來源及 grant 另報。

66
00:04:27.908 --> 00:04:29.708
Reference 與非目標電路可信。

67
00:04:30.968 --> 00:04:36.708
Node 已跑十六種 mask、來源／grant 反例及無故障正負控制。

68
00:04:36.708 --> 00:04:40.308
RTL／SVA 與實體實作尚未驗證。

69
00:04:41.028 --> 00:04:47.088
主表為兩態碼字替換，排除拍內 glitch、實體獨立性與解碼器實作故障。

