XOR(Exclusive OR)是一種邏輯運算。
規則很簡單:相同 → 0,不同 → 1。
例如:
| A | B | A ⊕ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XOR 有一個很重要的特性:
A XOR B = C
C XOR B = A
只要知道其中兩個,就可以算出第三個。
例如:
A = 1010
B = 1100
A XOR B = C = 0110
現在假設 A 不見了:
C XOR B
= 0110 XOR 1100
= 1010
= A
A 就被還原回來了。
假設 RAID 5 有三顆硬碟:
Disk 1 Disk 2 Disk 3
A B P
其中:
P = A XOR B
假設:
A = 1010
B = 1100
那麼:
P = 1010 XOR 1100
= 0110
所以三顆硬碟裡是:
Disk 1 Disk 2 Disk 3
1010 1100 0110
A B P
如果 Disk 1 壞掉:
Disk 1 Disk 2 Disk 3
? 1100 0110
A B P
就可以利用:
A = P XOR B
0110 XOR 1100
↓
1010
把 A 算回來。
這就是 RAID 5 Parity 能夠協助資料重建的基本概念。
RAID 6 比 RAID 5 更複雜,因為它使用兩組 Parity。
資料
↓
Parity P
Parity Q
因此即使同時遺失兩顆硬碟,也有機會利用剩下的資料與 Parity 進行重建。
不過 RAID 6 的第二組 Parity 並不是單純再做一次 XOR,實際上使用更複雜的數學運算。
Parity Q 是先對每個 Data 乘上不同的係數,再 XOR:
Q = (g₀ × D₀) ⊕ (g₁ × D₁) ⊕ (g₂ × D₂) ⊕ (g₃ × D₃)
這裡的 × 不是一般的乘法,而是在 Galois Field GF(2⁸) 裡做乘法。
如果是一般 IT 維運,發現 RAID 有一顆硬碟故障,通常會希望趕快把 Array 恢復正常。
但在數位鑑識中,情況完全不同。
因為 Rebuild 本身就是一個會對磁碟進行寫入的操作。
系統可能會根據其他磁碟上的資料與 Parity,重新產生遺失的內容並寫入新的磁碟。
重建過程可能涉及:
這時候後續分析的東西,就不一定還是案發當下的原始狀態。
因此實務上更重要的是先:
原始 RAID
↓
保存現場狀態
↓
逐顆取得證據
↓
建立 Forensic Image
↓
Hash
↓
在副本上研究 RAID 結構
↓
必要時進行重建
Parity = Data A XOR Data B。