RPMB原理介紹

2021-08-18 10:59:55 字數 1937 閱讀 8064

rpmb(replay protected memory block)partition 是 emmc 中的乙個具有安全特性的分割槽。

emmc 在寫入資料到 rpmb 時,會校驗資料的合法性,只有指定的 host 才能夠寫入,同時在讀資料時,也提供了簽名機制,保證 host 讀取到的資料是 rpmb 內部資料,而不是攻擊者偽造的資料。

rpmb 在實際應用中,通常用於儲存一些有防止非法篡改需求的資料,例如手機上指紋支付相關的公鑰、序列號等。rpmb 可以對寫入操作進行鑑權,但是讀取並不需要鑑權,任何人都可以進行讀取的操作,因此儲存到 rpmb 的資料通常會進行加密後再儲存。

兩個 rpmb partition 的大小是由 extended csd register 的 boot_size_mult field 決定,大小的計算公式如下:

size = 128kbytes x boot_size_mult

一般情況下,boot area partition 的大小是128kb的倍數,emmc中預設為 4 mb,即 rpmb_size_mult 為 32,部分晶元廠家會提供改寫 rpmb_size_mult 的功能來改變 rpmb partition 的容量大小。rpmb_size_mult 最大可以為 128,即 boot area partition 的最大容量大小可以為 128 x 128 kb = 16384 kb = 16 mb。

使用 emmc 的產品,在產線生產時,會為每乙個產品生產乙個唯一的 256 bits 的 secure key,燒寫到 emmc 的 otp 區域(只能燒寫一次的區域),同時 host 在安全區域中(例如:tee)也會保留該 secure key。

在 emmc 內部,還有乙個rpmb write counter。rpmb 每進行一次合法的寫入操作時,write counter 就會自動加一 。

通過 secure key 和 write counter 的應用,rmpb 可以實現資料讀取和寫入的 replay protect。

rpmb 資料讀取的流程如下:

1、 host 向 emmc 發起讀 rpmb 的請求,同時生成乙個 16 bytes 的隨機數,傳送給 emmc。

2、 emmc 將請求的資料從 rpmb 中讀出,並使用 secure key 通過 hmac sha-256 演算法,計算讀取到的資料和接收到的隨機數拼接到一起後的簽名。然後,emmc 將讀取到的資料、接收到的隨機數、計算得到的簽名一併傳送給 host。

3、 host 接收到 rpmb 的資料、隨機數以及簽名後,首先比較隨機數是否與自己傳送的一致,如果一致,再用同樣的 secure key 通過 hmac sha-256 演算法對資料和隨機數組合到一起進行簽名,如果簽名與 emmc 傳送的簽名是一致的,那麼就可以確定該資料是從 rpmb 中讀取到的正確資料,而不是攻擊者偽造的資料。

通過上述的讀取流程,可以保證 host 正確的讀取到 rpmb 的資料。

rpmb 資料寫入的流程如下:

1、host 按照上面的讀資料流程,讀取 rpmb 的 write counter(通過write counter來識別資料的有效性)。

2、 host 將需要寫入的資料和 write counter 拼接到一起並計算簽名,然後將資料、write counter 以及簽名一併發給 emmc。

3、emmc 接收到資料後,先對比 write counter 是否與當前的值相同,如果相同那麼再對資料和 write counter 的組合進行簽名,然後和 host 傳送過來的簽名進行比較,如果簽名相同則鑑權通過,將資料寫入到 rpmb 中。

通過上述的寫入流程,可以保證 rpmb 不會被非法篡改。

注意:ufs中rpmb也採用了和emmc相同的原理。

RPMB原理介紹

rpmb replay protected memory block partition 是 emmc 中的乙個具有安全特性的分割槽。emmc 在寫入資料到 rpmb 時,會校驗資料的合法性,只有指定的 host 才能夠寫入,同時在讀資料時,也提供了簽名機制,保證 host 讀取到的資料是 rpmb...

eMMC中的RPMB分割槽

rpmb replay protected memory block partition 是 emmc 中的乙個具有安全特性的分割槽。emmc 在寫入資料到 rpmb 時,會校驗資料的合法性,只有指定的 host 才能夠寫入,同時在讀資料時,也提供了簽名機制,保證 host 讀取到的資料是 rpmb...

Redis原理介紹

redis是乙個基於key value的快取記憶體系統,類似於memcached,但是支援更複雜的資料結構list set sortedset,並且有持久化的功能。由於近期工作很多地方都用到了它,所以花了不少時間來閱讀文章 編碼實驗,了解一下 redis 都能做些什麼,能有什麼樣的效能表現。首先遇到...