在UFS里,有這么一個LU,主機往該LU寫數(shù)據(jù)時,UFS設(shè)備會校驗數(shù)據(jù)的合法性,只有特定的主機才能寫入;同時,主機在讀取數(shù)據(jù)時,也提供了校驗機制,保證了主機讀取到的數(shù)據(jù)是從該LU上讀的數(shù)據(jù),而不是攻擊者偽造的數(shù)據(jù)。這個LU就是RPMB(Replay Protected Memory Block)LU,四大“名擼”(四個Well Known LU)之一。
有些人家里有保險箱,用以存放他們認為重要的東西,比如現(xiàn)金、存折、房產(chǎn)證、情書等。輸入密碼,打開密碼箱,然后放東西進去;取的時候,首先需要密碼打開保險箱,然后把東西取出。沒有密碼,老婆是萬萬看不到老公和他初戀之間的情書的。RPMB就像是手機里的密碼箱,用戶可以把一些重要數(shù)據(jù)存儲其中。
我們來看看RPMB這個數(shù)據(jù)保護保險箱。
UFS主機通過認證(authenticated)的方式訪問RPMB LU。下圖展示了數(shù)據(jù)寫過程:
首先,UFS主機和UFS設(shè)備共享密鑰,該密鑰在UFS設(shè)備出廠時就保存在UFS設(shè)備;
UFS主機在發(fā)送主機數(shù)據(jù)給UFS設(shè)備前,會用該密鑰和哈希算法生成消息認證碼(Message Authentication Code, MAC);
UFS主機把主機數(shù)據(jù)連同MAC一起發(fā)給UFS設(shè)備;
UFS設(shè)備把收到的主機數(shù)據(jù)和共享密鑰在本地重新計算MAC,然后把計算出的MAC和收到的MAC做對比,如果一致,則認證成功,寫入到閃存;否則,拒絕該筆數(shù)據(jù)的寫。
UFS使用HMAC(Hash-based Message Authentication Code)SHA-256算法生成消息認證碼。HMAC運算利用哈希算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出。關(guān)于HMAC具體算法,可參看https://en.wikipedia.org/wiki/HMAC,我們這里不深入。
消息認證碼本質(zhì)是哈希值。哈希的一個特點是,即使只改變原數(shù)據(jù)一比特數(shù)據(jù),兩者的哈希值也是完全不同的。如果惡意攻擊者在數(shù)據(jù)傳輸過程中篡改了用戶數(shù)據(jù),那么UFS設(shè)備根據(jù)收到的數(shù)據(jù)和共享密鑰生成的MAC肯定與接收到的MAC不一樣,認證通不過,數(shù)據(jù)就不會寫入UFS設(shè)備。
這里的前提是共享密鑰不能被惡意攻擊者獲取,否則,惡意攻擊者完全可以模擬主機行為:把自己的惡意數(shù)據(jù)和共享密鑰生成MAC,然后把惡意數(shù)據(jù)和其對應(yīng)的MAC發(fā)送給UFS設(shè)備。UFS設(shè)備會認證成功,惡意數(shù)據(jù)被寫入。所以,請保管好你的密碼!
但是,惡意攻擊者是狡猾的,即使他沒有辦法獲得你的密鑰,它還是有辦法對你進行攻擊的。
惡意攻擊者監(jiān)聽到UFS主機和UFS設(shè)備之間某次數(shù)據(jù)傳輸,得到“主機數(shù)據(jù) + MAC”,然后該惡意攻擊者重復(fù)發(fā)送該“主機數(shù)據(jù) + MAC”給UFS設(shè)備,由于“主機數(shù)據(jù) + MAC”是合法的,認證通過,UFS設(shè)備就會接收該數(shù)據(jù)并寫到閃存。惡意攻擊者如果一直重復(fù)發(fā)這些數(shù)據(jù)給UFS設(shè)備,UFS設(shè)備RPMB LU將會被寫爆!這就是重放攻擊, Replay Attack。
RPMB的全名是:Replay Protection Memory Block,它的名字暗示了RPMB是能抵御重放攻擊的。那么RPMB是怎么對付重放攻擊的呢?
UFS維護了一個寫計數(shù)(Write Counter),初始化為0。UFS設(shè)備每次成功處理完一個RPMB寫命令,寫計數(shù)加一。主機在往設(shè)備寫入數(shù)據(jù)前,獲得該計數(shù)。然后把用戶數(shù)據(jù)和該計數(shù)一起做MAC計算。這樣,即使惡意攻擊者竊聽到某次合法的“用戶數(shù)據(jù) + MAC”,往設(shè)備寫入時,由于寫計數(shù)發(fā)生變化,它無法生成寫計數(shù)改變之后的MAC值,因此就無法一直重復(fù)往設(shè)備寫入某次合法的“用戶數(shù)據(jù) + MAC”。魔高一尺,道高一丈,正義終戰(zhàn)勝邪惡!
上面就是RPMB數(shù)據(jù)安全性背后的原理。下面再回到UFS RPMB協(xié)議上來。
UFS2.1中,RPMB LU最小邏輯空間為128KB,最大為16MB。它的邏輯塊大小為256B(普通LU邏輯塊大小一般為4KB)。應(yīng)用層不是通過普通的Read/Write命令讀/寫RPMB上的數(shù)據(jù),而是通過SECURITY PROTOCOL OUT/IN命令來訪問RPMB的。
UFS主機在訪問設(shè)備RPMB時,是通過下面消息交互完成的。
每條消息包含一條或者若干條消息數(shù)據(jù)幀。消息數(shù)據(jù)幀大小是512字節(jié),具體如下:
從中,我們看到:
認證密鑰(Key)是32字節(jié);
1使用SHA-256計算MAC,就是任意長度的數(shù)據(jù),產(chǎn)生的MAC值總是256比特,即MAC大小為32字節(jié)。
邏輯塊數(shù)據(jù)大小為256字節(jié)。
寫計數(shù)(Write Counter)為4字節(jié),當該值漲到0xFFFF FFFF,它就保持不動,不會繼續(xù)增長了。
Address,RPMB的邏輯地址,同LBA。兩個字節(jié),最多表示65536個邏輯塊,每個邏輯塊大小為256字節(jié),因此RPMB邏輯空間最大為
Block Count,邏輯塊數(shù),即指定讀寫多少個邏輯塊。
Result,RPMB操作結(jié)果(狀態(tài))。
下面舉幾個RPMB操作例子來理解上面的消息:
主機讀取寫計數(shù)
如前所述,寫計數(shù)的目的是抵御重放攻擊。寫計數(shù)是UFS設(shè)備管理和維護的,UFS設(shè)備遞增該計數(shù)。主機在寫數(shù)據(jù)時,需要知道該計數(shù),然后加上用戶數(shù)據(jù),一起計算MAC。
命令層發(fā)SECURITY PROTOCOL OUT/IN命令讀取寫計數(shù),然后傳輸層生成相應(yīng)的UPIU進行主機與設(shè)備之間的交互,具體見上圖。
主機寫認證數(shù)據(jù)
主機命令層通過SECURITY PROTOCOL OUT命令把用戶數(shù)據(jù)和對應(yīng)的MAC發(fā)送給設(shè)備,然后通過SECURITY PROTOCOL OUT請求獲取前面數(shù)據(jù)寫結(jié)果,最后通過SECURITY PROTOCOL IN讀取寫結(jié)果。寫結(jié)果中包含新的寫計數(shù),這樣下次主機利用新的寫計數(shù)計算MAC。注意,只有本次寫認證數(shù)據(jù)成功,設(shè)備才會遞增該計數(shù)。
主機讀認證數(shù)據(jù)
首先,主機通過SECURITY PROTOCOL OUT命令發(fā)送讀取認證數(shù)據(jù)請求給設(shè)備,然后發(fā)送SECURITY PROTOCOL IN命令讀取數(shù)據(jù)。
注意,主機讀取數(shù)據(jù)也是需要認證的。在設(shè)備端,UFS設(shè)備會計算MAC,然后主機端根據(jù)MAC認證該數(shù)據(jù)。這樣可以防止惡意攻擊者在數(shù)據(jù)傳輸過程中(從設(shè)備到主機),用惡意數(shù)據(jù)更換原始數(shù)據(jù)。
RPMB提供了認證訪問方式和抵御重放攻擊的機制,保證了存儲在RPMB LU上數(shù)據(jù)的安全。因此,用戶可以把一些敏感和重要的信息寫在RPMB上。在實際應(yīng)用中,它通常用于存儲一些有防止非法篡改需求的數(shù)據(jù),例如手機上指紋支付相關(guān)的公鑰、序列號等敏感信息。
-
Mac
+關(guān)注
關(guān)注
0文章
1112瀏覽量
51965 -
Out
+關(guān)注
關(guān)注
0文章
31瀏覽量
13224 -
數(shù)據(jù)保護
+關(guān)注
關(guān)注
1文章
111瀏覽量
13581 -
UFS
+關(guān)注
關(guān)注
6文章
106瀏覽量
24333
原文標題:蛋蛋讀UFS之八:RPMB
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
保險箱智能化真的有必要嗎?
基于無線傳感器網(wǎng)絡(luò)智能保險箱安防系統(tǒng)的設(shè)計(一)
IC 卡保險箱
基于WiFi的51單片機雙層密碼保險箱的設(shè)計與實現(xiàn)_曾維鵬
DIY機器人開二手保險箱
塑料的保險箱 你敢用嗎?
使用C51單片機和Proteus仿真設(shè)計密碼保險箱的應(yīng)用實例資料免費下載

帶振動感應(yīng)功能的保險箱保證您的保險箱財產(chǎn)安全
了解如何創(chuàng)建Arduino保險箱

評論