我們怎么知道展出的著名藝術(shù)品是真實的而不是偽造的?這顯然不是一件容易的事,因為藝術(shù)品偽造行業(yè)估計每年產(chǎn)生約30億美元的收入。藝術(shù)家經(jīng)常在他們的原創(chuàng)作品上簽名,但很難區(qū)分原始簽名和復(fù)制品。
識別偽造品的一種方法是利用原子彈,或者更確切地說,在14年代原子彈試驗之后在所有有機材料中發(fā)現(xiàn)的高碳-1960同位素比率的特征。如果用于結(jié)合油漆中顏料的有機物來自在此期間之前死亡的植物,則碳-14的比例將大大低于更現(xiàn)代油漆中的比例,從而使調(diào)查人員能夠可靠地識別現(xiàn)代偽造品。
與藝術(shù)一樣,我們經(jīng)常更關(guān)心數(shù)據(jù)的真實性,而不是其他人是否能夠查看它。例如,我們?nèi)绾沃涝O(shè)備上運行的代碼是真實的?我們并不總是關(guān)心隱藏代碼 - 任何人都可以查看開源的u-boot引導(dǎo)加載程序代碼。但是,在開始執(zhí)行之前,我們的設(shè)備能夠驗證引導(dǎo)加載程序代碼是否未經(jīng)更改且真實,這一點至關(guān)重要。
本博客介紹了消息身份驗證代碼和數(shù)字簽名,它們是驗證數(shù)據(jù)的完整性(數(shù)據(jù)是否已更改?)和真實性(誰生成了數(shù)據(jù)?)的加密方法。但是,為什么不直接使用校驗和或CRC來驗證數(shù)據(jù)是否未被更改呢?正如我們將在下一節(jié)中看到的那樣,不幸的是,它們無法抵御故意修改數(shù)據(jù)的對手。
為什么CRC不合適
驗證數(shù)據(jù)是否已被更改的一種眾所周知的方法是添加錯誤檢測代碼,例如循環(huán)冗余校驗 (CRC)。例如,考慮由多項式 x+1 生成的 1 位 CRC。這相當(dāng)于添加一個偶數(shù)奇偶校驗位,如果數(shù)據(jù)中的 1 個數(shù)為奇數(shù),則在數(shù)據(jù)后附加 1,否則附加 0。
如果我們10010111輸入數(shù)據(jù),我們可以看到數(shù)據(jù)中有一個奇數(shù)個 1,所以我們的奇偶校驗位將是 1。那么,為什么這種有效的錯誤檢測方案不適合確保完整性和真實性呢?
問題在于CRC相當(dāng)于藝術(shù)家的簽名。如果我們像CRC偽造者一樣思考,設(shè)備怎么會被愚弄,接受更改后的數(shù)據(jù)不變?首先,讓我們采用最簡單的情況:假設(shè)數(shù)據(jù)及其CRC一起存儲在未受保護的內(nèi)存(例如閃存)中。攻擊者需要做的就是用自己的數(shù)據(jù)覆蓋原始數(shù)據(jù),然后計算適當(dāng)?shù)腃RC并將其附加到他們的數(shù)據(jù)中。當(dāng)設(shè)備讀取更改后的數(shù)據(jù)時,它將計算CRC并驗證其是否與攻擊者生成的CRC匹配,接受更改后的數(shù)據(jù)為原始數(shù)據(jù)!對于此攻擊的真實示例,本演練詳細(xì)解釋了黑客如何通過操縱 Linux 內(nèi)核中的 CRC 來控制 Docker 服務(wù)器。
規(guī)避 CRC:(左)原始代碼和 CRC 通過驗證,(中間)具有對抗性修改和原始 CRC 驗證失敗的代碼,(右)具有對抗性修改和對抗性 CRC 通過驗證的代碼
為了使攻擊者更難,該設(shè)備可以將CRC存儲在一次性可編程(OTP)存儲器中。不幸的是,這并不能消除問題。雖然CRC是檢測通道噪聲或不穩(wěn)定單元良性錯誤的好方法,但它們不能防止主動惡意修改。
假設(shè)我們前面的示例數(shù)據(jù)用于啟用或禁用不同的產(chǎn)品功能,具體取決于客戶選擇的許可證模型。如果高價值功能位于最左側(cè)的位中,則能夠更改我們的示例向量10010111將更左側(cè)的位翻轉(zhuǎn)為 1s 將啟用這些功能,而無需為價格較高的許可模型付費。對于對手來說,這是微不足道的:
原始數(shù)據(jù) | 修改后的數(shù)據(jù) |
10010111 1 | 11110111 1 |
由于 1 位 CRC 在原始數(shù)據(jù)中為 1(表示數(shù)據(jù)中的奇數(shù)為 1),因此對手只需要確保修改后的數(shù)據(jù)也有奇數(shù) 1。通過將最左邊的兩個 0 翻轉(zhuǎn)為 1,攻擊者啟用了兩個額外的高價值功能,而無需修改安全存儲在 OTP 中的 CRC 檢查位。此策略也適用于實際應(yīng)用中使用的較大 CRC。
重要的一點是,CRC僅提供良性錯誤保護,例如通信通道上的噪聲或不穩(wěn)定的SRAM單元。當(dāng)攻擊者主動嘗試修改數(shù)據(jù)時,他們可以以一種不會改變從原始數(shù)據(jù)生成的CRC的方式進行修改。
審核編輯:郭婷
-
存儲器
+關(guān)注
關(guān)注
38文章
7643瀏覽量
166880 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9757瀏覽量
87589 -
crc
+關(guān)注
關(guān)注
0文章
204瀏覽量
30055
發(fā)布評論請先 登錄
了解信號完整性的基本原理

信號完整性測試基礎(chǔ)知識

電源完整性分析及其應(yīng)用
聽懂什么是信號完整性

GND與信號完整性的關(guān)系

評論