針對Path ORAM的叉型訪問方法
【技術領域】
[0001]本發明屬于信息安全領域,涉及一種隱藏訪存模式的硬件結構優化方法,具體涉及一種針對Path ORAM的叉型訪問方法。
【背景技術】
[0002]基于路徑的模式不可見存儲器(Path Obliv1us RAM,Path ORAM)是一種可以隱藏訪存模式的硬件結構。Path ORAM擁有高訪存效率,算法簡單等優點。由于其可行性,PathORAM被認為是最有可能用于安全處理器(Secure Processor)上的ORAM結構之一,其原型被實現在了FPGA以及ASIC代碼上。但是Path ORAM還是存在一些問題,最大的問題就是訪存代價過高。
[0003]在文獻“MaasM, Love E, Stefanov E, et a 1.Phantom: Practical obliv1uscomputat1n in a secure processor.Acm Ccs,2013:311-324” 中,美國Martin Maas等人用FPGA實現了第一個基于Path ORAM的安全處理器Phantom,通過使用頂部緩存法(treetopcaching)以及一種樹狀結構來組織stash,從而降低了訪存代價;但是,Phantom的每個數據塊大小為4KB,和通常基于64B的塊大小的ORAM設計相比,大大增加了其訪存方面的代價。在文獻“Fletcher C ff ,Ren L,Kwon A,et al.Freecursive oram: [nearly]free recurs1nand integrity verificat1n for posit1n-based obliv1us ram.2015.,,中,美國的Christopher W.Fletcher等人提出一種優化Hierarchical Path ORAM中對Posit1n Map訪問的方法,該方法引入了PosMap Lookaside Buff er的結構來緩存PosMap的信息,同時,PosMap壓縮技術也有效降低了訪存代價;但是,該方法針對Path ORAM的訪存代價還是很尚O
【發明內容】
[0004]為了克服上述現有技術的不足,本發明提供一種針對PathORAM的叉型訪問方法,該方法是一種隱藏訪存模式的硬件結構優化方法,能夠達到在很小的硬件代價下降低PathORAM的訪存代價,從而大大提尚系統整體性能。
[0005]為了行文方便,本文所有術語定義如下:
[0006]ORAM Tree(樹狀結構的模式不可見存儲器):指外部存儲memory的一種樹形組織形式。外部memory被邏輯上組織成一個二叉樹結構。每個節點叫做一個bucket (籃子),其中包含Z個加密后的memory塊(Z為一個大于3的整數)。每個葉節點都有一個標號,叫做label。每次memory訪問都是對ORAM tree的一條從某個葉子節點(label-k)到根節點的路徑進行訪問(簡稱為path-k),會將這條path上的所有memory塊取入到處理器中(讀階段),處理器讀取出相應塊后,會把數據寫回到這條path(寫階段)。
[0007]ORAM Controller(模式不可見存儲器的控制器):指processor(處理器)內部的控制ORAM工作的相關電路;包含三個部分:地址表(Posit1n Map),隱蔽緩存(Stash)以及地址轉換邏輯(Address Logic)。地址表是一個包含每個program地址的對應IabeI的查詢表,隱蔽緩存是一個緩存結構,用來存放每次訪存上來path中的數據塊。地址轉換邏輯用來計算每個program地址轉換后對應path上每個塊的地址。
[0008]Label Request Queue(LRQ,標簽請求隊列):表示在處理器中,大量program地址經過地址表轉換為大量的label后,存放label的一個隊列結構。Label Request Queue里的每個label請求都有一個counter,用來記錄label進入queue的時間。
[0009]Address Request Queue(ARQ,地址請求隊列):表示在處理器中,大量的program地址訪存請求存放的一個隊列結構。每個訪存請求都有一個Ready標志位,用來解決數據冒險問題。
[0010]Merging Aware Cache(MAC,考慮路徑合并策略的高速緩存):表示一個在地址轉換邏輯之后的緩存結構,只用來緩存ORAM tree中特定層的數據。實現時,可以用傳統cache結構,每個Oram tree中的memory塊都可以根據塊地址轉換為特定的組數(set number),每個set內部采用LRU替換策略。
[0011]本發明的原理是,首先對于任意一個末級緩存(LLC)發來的訪存請求,將其插入到ARQ中,通過dependency(數據依賴性)判斷以及在地址表的輔助下,將其轉化為label值并插入到LRQ中,然后進行調度(scheduling)算法,將與前一個訪存path重疊度最高的label提到queue的最前等待執行。每次LRQ最前的一個label會被傳遞給地址轉換邏輯,轉換為一系列邏輯地址(即在ORAM tree中與IabeI對應的path上所有塊地址)后,首先判斷每個地址是否在MAC中,如果在,將其對應數據從MAC中讀取到隱蔽緩存中,如果不在就訪問memory的相應位置。在隱蔽緩存處理完數據、末級緩存的請求被完成后,隱蔽緩存會重新寫回數據到label對應的path,特定層的數據會被寫回到MAC中,其余層的數據會被寫回到memory中。由此實現在很小的硬件代價下降低Path ORAM的訪存代價,能夠大大提高系統整體性能。
[0012]本發明提供的技術方案是:
[0013]一種針對Path ORAM的叉型訪問方法,包括:地址請求隊列ARQ處理末級緩存請求LLC階段、標簽請求隊列LRQ處理地址請求隊列ARQ請求的階段、地址轉換邏輯處理標簽請求隊列LRQ請求的階段,MAC處理地址轉換邏輯請求階段和內存處理MAC請求階段,所述叉型訪問方法通過隱藏訪存模式的硬件結構優化,達到在很小的硬件代價下降低Path ORAM的訪存代價,從而大大提尚系統整體性能;具體包括如下步驟:
[0014]A.在地址請求隊列ARQ處理末級緩存LLC請求階段,執行如下操作:
[0015]Al.末級緩存(LLC)請求設為{op,addr},op表示讀操作請求或寫操作請求,addr表示末級緩存希望訪問的邏輯地址;當末級緩存(LLC)發生一次miss(未命中)時,需要對內存進行訪問;
[0016]A2.來自末級緩存LLC的請求需要對內存進行訪問時,對于每個末級緩存LLC請求{op,addr},根據地址請求隊列ARQ中是否有和addr相同的請求{op’,addr}分別進行處理,當地址請求隊列ARQ中沒有和addr相同的請求時(addr不沖突),直接將末級緩存LLC請求插入到地址請求隊列ARQ;
[00?7] 當地址請求隊列ARQ中有和addr相同的請求{op ’,addr}時,分為下列四種情況:
[0018]A21)當(op’,op) = (read,read)時,將{op,addr}當做普通請求處理即可;
[0019]A22)當(op,,op) = (read,write)時,{op,addr}被掛起等待{op,,addr}被處理完才能發射;[OO2O]A23)當(op’,op) = (write,read)時,直接返回數據給末級緩存;
[0021 ] A24)當(op,,op) = (write ,write)時,{op,,addr}會被取消;
[0022]A3.對于ARQ中的所有請求,通過查詢地址表轉換為對應的label,如果地址表中沒有對應的label,通過層次化模式不可見存儲器(hierarchy ORAM)中的相應機制轉化為一個新的label ;
[0023]A4.將已被轉換為label請求的ARQ請求傳輸至標簽請求隊列LRQ,直到標簽請求隊列LRQ已經充滿數據請求,這時ARQ會等待LRQ有空位再傳輸,直到LRQ中沒有無意義請求時停止傳輸;
[0024]B.在標簽請求隊列LRQ處理地址請求隊列ARQ