前面提到RPMB使用認(rèn)證機(jī)制和抗重放攻擊機(jī)制保障數(shù)據(jù)不被黑客攻擊,除此之外,UFS還有其它一些手段來保護(hù)用戶數(shù)據(jù)安全,這一章節(jié)我們來關(guān)注UFS數(shù)據(jù)安全。
UFS設(shè)備用來存儲(chǔ)個(gè)人或者企業(yè)的數(shù)據(jù)信息,UFS設(shè)備需要這樣一種機(jī)制,就是必要時(shí),數(shù)據(jù)能永久從設(shè)備(閃存)刪除,這樣就能防止別有用心的人通過反向工程獲取你的數(shù)據(jù)。
話說,陳老師吸取了上次教訓(xùn),每次拍照后,事后“閱后即焚”。陳老師想:這樣就沒有人看到我們的照片了吧。陳老師很是得意。
沒有想到,不久后網(wǎng)上又爆出陳老師新的“艷照門”事件。陳老師很是納悶,我不是明明都刪除了嗎??
我們幫陳老師分析一下為什么刪了的照片還能被修手機(jī)的人弄出來。
手機(jī)文件系統(tǒng)把陳老師拍的照片數(shù)據(jù)用邏輯塊管理,然后把這些邏輯塊寫到UFS設(shè)備的存儲(chǔ)介質(zhì)(如上圖所示)。陳老師刪除照片,刪除的只是邏輯塊數(shù)據(jù),存在UFS存儲(chǔ)介質(zhì)上的數(shù)據(jù)還在原地,如下圖所示:
修手機(jī)的一看,這不陳老師嗎?修手機(jī)的知道肯定能發(fā)現(xiàn)什么,嘴角不禁露出一絲不易覺察的笑。他從文件中沒有找到照片,有點(diǎn)失望。小子吃一塹長一智呀!但獵奇的心不會(huì)讓他輕易放棄的,有經(jīng)驗(yàn)的他盯上了存儲(chǔ)卡。功夫不負(fù)有心人,他從存儲(chǔ)介質(zhì)里把照片弄出來!
拍照不容易,且拍且珍惜。我們看看如何避免陳老師的悲劇。
擦除操作(Erase Operation)
注意,這個(gè)“擦除”操作不是擦除存儲(chǔ)介質(zhì),不是閃存層面的擦除操作,而是UFS層面的擦除操作。數(shù)據(jù)寫在閃存上,UFS設(shè)備內(nèi)部有個(gè)邏輯地址到物理地址的映射,擦除操作通過切斷這種映射,主機(jī)就不能獲得擦除掉的數(shù)據(jù)。
當(dāng)陳老師刪除照片時(shí),它切斷了用戶直接訪問照片的途徑:
當(dāng)陳老師刪除照片后,手機(jī)系統(tǒng)會(huì)通過發(fā)送UNMAP命令(就是通常說的TRIM)來告訴設(shè)備這些照片數(shù)據(jù)無效。設(shè)備收到該命令后,然后根據(jù)邏輯單元描述符中的bProvisioningType來確定執(zhí)行具體操作。
bProvisioningType:
00h: Thin Provisioning is disabled (default)
02h: Thin Provisioning is enabled and TPRZ = 0 (Discard)
03h: Thin Provisioning is enabled and TPRZ = 1 (Erase)
即當(dāng)bProvisioningType= 03h時(shí),設(shè)備執(zhí)行擦除操作,即切斷邏輯地址到物理空間的映射。
一個(gè)邏輯塊如果被擦除,那么主機(jī)訪問這個(gè)邏輯塊時(shí),設(shè)備必須返回全0數(shù)據(jù)給主機(jī)。
注意,這個(gè)“擦除”操作不是擦除存儲(chǔ)介質(zhì),只是主機(jī)讓設(shè)備切斷邏輯地址到物理地址的映射,因此不保證照片數(shù)據(jù)從閃存介質(zhì)刪除。但是,由于UFS設(shè)備知道該照片數(shù)據(jù)已經(jīng)刪除(沒有邏輯塊到物理空間的映射),在后續(xù)垃圾回收時(shí),這些被刪掉的數(shù)據(jù)很大概率會(huì)從介質(zhì)上擦除掉。
舍棄操作(Discard Operation)
和擦除操作類似,主機(jī)通過發(fā)送UNMAP命令來執(zhí)行舍棄操作。當(dāng)bProvisioningType = 02h時(shí),設(shè)備執(zhí)行舍棄操作。
舍棄操作和擦除操作的區(qū)別:主機(jī)訪問一個(gè)被舍棄的邏輯塊,可能獲得任何數(shù)據(jù),甚至包括舍棄前的數(shù)據(jù),而擦除操作是主機(jī)獲得全0數(shù)據(jù)。也就是說,對(duì)刪除的照片,如果UFS設(shè)備執(zhí)行的是舍棄操作,那么主機(jī)還可能獲得原圖片;如果UFS設(shè)備執(zhí)行的是擦除操作,主機(jī)不可能再獲得原照片。
但不管是舍棄操作還是擦除操作,都不能保證照片從存儲(chǔ)介質(zhì)上刪除。像修手機(jī)這樣的人,它不走尋常路(通過手機(jī)系統(tǒng)),直接操作閃存的話,還是有可能把刪除的照片找回來。
陳老師看到這里,急了,難道我以后再也不能拍照了嗎??
別急,小陳!你先坐下,聽我慢慢講。
安全清除(Secure Removal)
陳老師,有三種可選策略用以安全清除數(shù)據(jù),你造嗎?
設(shè)備控制器擦除(Erase)要被刪除的邏輯塊所對(duì)應(yīng)的物理地址空間;
2. 設(shè)備控制器用單一字符覆蓋寫要被刪除的邏輯塊所對(duì)應(yīng)的物理地址空間,然后擦除設(shè)備;
3. 設(shè)備控制器用單一字符、字符補(bǔ)碼和隨機(jī)字符,依次覆蓋寫要被刪除的邏輯塊所對(duì)應(yīng)的物理地址空間。
又是覆蓋寫,又是擦除,照片是徹底從閃存中刪除了。
陳老師聽到這里,情緒緩和下來,終于是坐了下來。
清除操作(Purge Operation)
清除操作是針對(duì)垃圾數(shù)據(jù)(比如陳老師刪除的照片),讓這些數(shù)據(jù)不僅不能通過正規(guī)渠道(操作系統(tǒng))訪問,還讓這些數(shù)據(jù)無法從存儲(chǔ)介質(zhì)中獲取,徹底把垃圾數(shù)據(jù)從UFS設(shè)備清除掉。
前面所說的擦除和舍棄操作,都是主機(jī)通過命令層的UNMAP命令來實(shí)施的。而清除操作則是主機(jī)通過設(shè)備管理器的Query功能來告訴設(shè)備的。
這里涉及到一個(gè)重要的標(biāo)志(flag)和一個(gè)重要的屬性(Attribute),分別是發(fā)PurgeEnable和bPurgeStatus,前者用以使能/禁止清除操作,后者用以設(shè)備向主機(jī)提供清除操作的狀態(tài)信息。
fPurgeEnable:
上電或者重啟,該標(biāo)志位0;
主機(jī)通過設(shè)置或者清除該標(biāo)志,使能或禁止清除操作;
只有當(dāng)所有邏輯單元的命令隊(duì)列空的時(shí)候,主機(jī)才能設(shè)置該標(biāo)志為1使能清除操作;
當(dāng)UFS設(shè)備執(zhí)行完清除操作或者發(fā)生錯(cuò)誤,該標(biāo)志會(huì)被清零;
如果主機(jī)想終止設(shè)備執(zhí)行清除操作,可以通過清除該標(biāo)志達(dá)到目的。
bPurgeStatus:
主機(jī)為了讓設(shè)備執(zhí)行清除操作,主機(jī)通過QUERY REQUEST UPIU設(shè)置fPurgeEnable = 1。如果當(dāng)前邏輯單元的命令隊(duì)列中沒有任何命令,設(shè)備會(huì)執(zhí)行清除操作。一旦設(shè)備開始執(zhí)行清除操作,它不會(huì)響應(yīng)主機(jī)發(fā)來的任何命令。如果這個(gè)時(shí)候主機(jī)需要讓設(shè)備緊急響應(yīng)命令,主機(jī)首先應(yīng)該通過QUERY REQUEST UPIU設(shè)置fPurgeEnable = 0來提前終止設(shè)備的清除操作,然后再發(fā)送命令。
下圖是清除操作的狀態(tài)機(jī)圖:
UFS設(shè)備在執(zhí)行清除操作時(shí),對(duì)那些垃圾數(shù)據(jù),有以下幾種處理方式:
默認(rèn)是把這些垃圾數(shù)據(jù)從閃存空間擦除掉;
或者先用單個(gè)字符(比如全A)覆蓋寫,然后再擦除;
抑或先用單個(gè)字符(比如A)覆蓋寫,然后用它的補(bǔ)碼(比如5)覆蓋寫,最后用隨機(jī)字符覆蓋寫;
最后還可以使用用戶自定義的方式處理。
這些手段前面已經(jīng)介紹過。
格式化設(shè)備(Wipe Device)
主機(jī)通過發(fā)送FORMAT UNIT命令格式化所有的邏輯單元(RPMB LU除外)。不過,對(duì)那些寫保護(hù)的邏輯單元,F(xiàn)ORMAT UNIT命令會(huì)失敗。
FORMAT UNIT的命令對(duì)象是Device well know LU,它格式化除RPMB之外所有無寫保護(hù)的邏輯單元。
FORMAT UNIT會(huì)切斷邏輯塊到物理空間的映射。但如果要讓數(shù)據(jù)徹底從設(shè)備上清除,UFS設(shè)備還需要執(zhí)行Purge操作,這樣數(shù)據(jù)才能徹底刪除。
寫保護(hù)
前面都是千方百計(jì)的清除數(shù)據(jù),但有時(shí)候UFS設(shè)備需要保護(hù)寫的數(shù)據(jù)。
每個(gè)邏輯邏輯單元(除了RPMB)有寫保護(hù)屬性。寫保護(hù)包括永久寫保護(hù)和上電寫保護(hù),前者的意思是說,一旦該邏輯單元寫保護(hù)使能,將終生是寫保護(hù)(不能改回去了);而后者寫保護(hù)只對(duì)某次上電有效,如果設(shè)備重上電或者重啟,寫保護(hù)將失效。
最后總結(jié)一下UFS數(shù)據(jù)安全機(jī)制:
安全擦除(本章重點(diǎn)講述);
寫保護(hù)(本章講述);
RPMB,提供數(shù)據(jù)認(rèn)證和抗重放攻擊機(jī)制保護(hù)一些重要數(shù)據(jù)。
-
閃存
+關(guān)注
關(guān)注
16文章
1796瀏覽量
115020 -
數(shù)據(jù)安全
+關(guān)注
關(guān)注
2文章
682瀏覽量
29965 -
UFS
+關(guān)注
關(guān)注
6文章
104瀏覽量
24086
原文標(biāo)題:蛋蛋讀UFS之九:UFS數(shù)據(jù)安全
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論