這是一個簡化的硬盤結構圖,機械硬盤和固態(tài)硬盤SSD具有相似的結構。由上圖可以看出,硬盤內部其實還有一個小系統(tǒng),有處理器,有ROM,有緩存RAM等。

其中,處理器運行固件,負責初始化周邊模組,驅動周邊模組完成命令和數(shù)據(jù)的處理以及傳輸控制等;緩存用于主機和存儲介質之間進行數(shù)據(jù)中轉使用;主機接口負責對接主機側的命令協(xié)議和數(shù)據(jù)傳輸;ROM負責加載處理器提供存儲服務的產品固件。

對于機械硬盤,產品固件可能存放在獨立的I2C接口的EEPROM上,也可能存放在SPI接口的NOR Flash上;對于固態(tài)硬盤SSD,產品固件通常存放在NAND Flash上的系統(tǒng)區(qū)(由固件定義,用戶不可見區(qū)域)。產品固件可能是在出廠時由硬盤廠商寫好的,也可能是在后續(xù)的使用過程中,或者某個中間環(huán)節(jié)通過升級工具升級寫入的。幾乎所有的硬盤廠商,考慮修復軟件bug等因素,都會提供升級功能。

硬盤上電時,處理器執(zhí)行Boot ROM,Boot ROM再加載產品固件,然后將CPU控制權移交給產品固件。產品固件獲取控制權過后,通過控制主機接口、DMA以及緩存資源等,來完成主機業(yè)務對數(shù)據(jù)的存取業(yè)務。由于產品固件存放于硬盤的系統(tǒng)區(qū),運行于硬盤的內部小系統(tǒng),這部分數(shù)據(jù)和處理獨立于主機所在安全系統(tǒng)以外,不受任何安全措施監(jiān)控。所以,數(shù)據(jù)如何處理,完全受控于產品固件本身,產品固件本身的可靠性和安全性,在很大程度上決定了數(shù)據(jù)的可靠性和安全性。

那么,問題來了,我們的產品固件是否安全?如果不安全,如何保證安全?

固件與安全

硬盤制造商在發(fā)布固件時,有的廠家為了簡化處理,只簡單在固件頭部寫入部分廠家標識和版本標識,方便在后續(xù)的生產和升級場景進行識別;有的做的多一點,在前面的基礎上還對固件進行了CRC校驗,檢查固件數(shù)據(jù)的完整性。前者可以識別是否是自己固件以及對應版本號,后者則可以進一步看出固件在傳輸過程中是否發(fā)生了變化。

這些手段在大部分應用下已經可以滿足需要,但無法防備帶有惡意目的的特殊用戶對固件進行針對性的修改(hacker行為),注入惡意軟件代碼,然后再重新計算出新的CRC來偽裝成合法的固件。這種經過偽裝的固件,可以在硬盤流通和使用的各個環(huán)節(jié)通過升級方式寫入,并在重新使用時駐扎硬盤內部小系統(tǒng),且完全不被任何安全措施發(fā)現(xiàn)。

如果這種帶有惡意代碼的固件接管硬盤的內部小系統(tǒng),那么接下來,他可以做更多可怕的事情。比如識別并截取BIOS加載loader的讀命令,返回感染的loader數(shù)據(jù)。如果bios加載了受感染的loader,并將CPU控制權交給這種loader,那么接下來就可以做更多攻擊行為,如截取密碼等。且這種感染的loader非常隱蔽(不在硬盤用戶可見區(qū)),在系統(tǒng)啟動階段即被激活,可無限次復活,危害性巨大。

這種惡意固件還可通過檢測固定特征或地址的讀寫數(shù)據(jù)內容,截取并修改內容;或者記錄內容,將其寫入系統(tǒng)不可見區(qū),等待合適時候獲取記錄內容等各種非法行為。

這種直接對硬盤固件的攻擊行為,隱蔽性高,不易發(fā)現(xiàn),但卻危害巨大,曾經被著名的“方程式組織”所采用,攻擊了多個硬盤廠商的硬盤,覆蓋包括中國、俄羅斯、英國等在內的30多個國家。

其實,這種攻擊很容易防范,因為非法固件一定要下載到硬盤內部,且被內部的ROM加載過后才可運行。硬盤廠商完全可以在生產、升級以及ROM加載階段,通過對固件進行合法性檢測,來杜絕非法固件下載并獲取到CPU的控制權。如版本發(fā)布時對固件進行簽名,生產和升級時硬盤對下載的固件進行驗簽,ROM加載時也驗簽整個固件。所有操作都保證固件真正合法,理論上就杜絕所有惡意目的惡意行為。

如果固件是合法安全的固件,是否數(shù)據(jù)在所有場景下就安全了呢?

合法安全的固件讓硬盤處于一個安全的運行環(huán)境。但我們平時使用時,通常一個環(huán)境被多個人使用,或者需要經常移動硬盤接入多個不同的主機環(huán)境,這樣的應用場景下,數(shù)據(jù)是否安全?

數(shù)據(jù)安全

用戶存放在硬盤上的數(shù)據(jù),由于內容不同,可能對用戶的重要性也不盡相同。如何保證訪問特定數(shù)據(jù)內容的用戶一定是真正對應的合法用戶?你可能首先想到這個可以由系統(tǒng)來保證,和硬盤沒有關系。那么,再加上一條,如果這個硬盤是一塊移動硬盤呢?在一些特殊的應用場景下,我們的移動硬盤可能會在多個不同安全環(huán)境下進行接入。如何從存儲的角度來保證數(shù)據(jù)訪問的用戶是被授權的用戶?

如果將數(shù)據(jù)訪問與用戶權限進行一對一綁定,在用戶訪問特定范圍數(shù)據(jù)時,需要得到對應區(qū)間授權,硬盤按照區(qū)間范圍對用戶鑒權成功過后,才被允許數(shù)據(jù)訪問,那么這種訪問方式,無疑將滿足最大可能性的數(shù)據(jù)訪問安全。

更進一步,不同區(qū)間的數(shù)據(jù)使用不同的密鑰對數(shù)據(jù)加密存儲,加密密鑰必須與對應區(qū)間的授權碼有綁定關系,只有正確的授權碼才能解開對應數(shù)據(jù)區(qū)的加密密鑰,通過這樣的一種方式,數(shù)據(jù)將得到最大安全保障。

固件安全保證生產、升級時只有合法的固件才能下載到硬盤;數(shù)據(jù)安全保證硬盤使用過程當中,只有得到數(shù)據(jù)訪問授權的用戶,才能訪問對應區(qū)域的重要數(shù)據(jù),保證訪問合法性。那么,硬盤淘汰過后的數(shù)據(jù)如何保證數(shù)據(jù)不被非法訪問呢?

數(shù)據(jù)銷毀

硬盤因為容量、性能、可靠性等原因,可能面臨升級換代或淘汰。但通常這種淘汰下來的硬盤有很大可能性被重新流通使用或者被存有惡意目的用戶非法獲取,且這種硬盤上通??赡苡腥菀妆晃覀兒雎缘闹匾獢?shù)據(jù)和信息。

一般的做法可能是,格式化整個硬盤,或杜絕這類硬盤進行再次流通,統(tǒng)一物理銷毀。但這樣的方法前者比較耗時,且不一定真正的刪除了硬盤上的數(shù)據(jù);后者雖可真正銷毀,但增加成本。

有沒有一種辦法,成本低,能夠快速銷毀硬盤上的數(shù)據(jù),且銷毀后理論上無法再次恢復數(shù)據(jù)?答案當然是肯定的,且當前有些做得好的硬盤廠商已經支持,目前國科微的SSD硬盤方案已具有這種功能,這就是硬盤的安全擦除。

所有支持安全擦除功能的硬盤,其上的數(shù)據(jù)都是經過符合行業(yè)或國家認可的加密算法進行加密存儲的。當需要進行數(shù)據(jù)銷毀時,我們只需要向硬盤發(fā)送一個安全擦除命令,硬盤收到命令后對數(shù)據(jù)加密的密鑰進行銷毀。一旦數(shù)據(jù)的加密密鑰被銷毀,硬盤上存放的密文數(shù)據(jù)再也無法恢復回來。

當然,這種用于數(shù)據(jù)加密的密鑰,一定是不同硬盤唯一的,甚至同一硬盤不同區(qū)域唯一的,且是隨機產生的,存儲的方式必須也是以密文方式存放,這樣就可以保證密鑰的唯一性和不可復制。一旦密鑰被銷毀,那么技術上無法找到恢復的可能性。

只有真正的從生產、流通、應用和回收等各個環(huán)節(jié),針對固件安全、數(shù)據(jù)安全、數(shù)據(jù)銷毀等場景都做了安全設計的硬盤,才算是真正的安全存儲產品。一套安全解決方案只有在各個節(jié)點和環(huán)節(jié)都使用進行了安全設計的產品,才能說是真正的安全解決方案,才是一個能夠全方位防護的安全解決方案。

(來源:國科微電子股份有限公司)

分享到

zhangnn

相關推薦