Nezapomenutelná RAM - Oblivious RAM - Wikipedia
Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
An zapomnětlivý simulátor RAM (ORAM) je překladač který se transformuje algoritmy takovým způsobem, aby výsledné algoritmy zachovaly vstup -výstup chování původního algoritmu, ale rozdělení z Paměť přístupový vzor transformovaného algoritmu je nezávislý na přístupovém vzoru paměti původního algoritmu. Definice ORAM je motivována skutečností, že protivník může získat netriviální informace o provádění programu a povaze data s nimiž se potýká, pouhým pozorováním vzoru, ve kterém se během jejího provádění přistupuje k různým umístěním paměti. Protivník může získat tyto informace, i když jsou hodnoty dat všechny šifrované. Definice se hodí stejně dobře jako nastavení chráněných programů běžících na nechráněných sdílená paměť stejně jako klient běžící na svém systému přístupem k dříve uloženým datům v a vzdálený server. Koncept byl formulován Oded Goldreich v roce 1987.[1]
Definice
A Turingův stroj TM je matematická abstrakce skutečného počítače (programu) zapomíná pokud u jakýchkoli dvou vstupů stejné délky zůstávají pohyby hlav pásky stejné. Pippenger a Fischer[2] dokázal, že každá TM s dobou chodu lze zapomenout a že doba provozu zapomnětlivé TM je . Realističtější model výpočtu je RAM model. V modelu výpočtu RAM existuje a procesor které mohou provádět základní matematické, logické a řídicí pokyny. CPU je také spojen s několika registry a fyzický náhodný přístup Paměť, kde ukládá operandy svých pokynů. CPU má navíc pokyny ke čtení obsahu paměťové buňky a zápisu konkrétní hodnoty do paměťové buňky. Definice ORAM zachycuje podobný pojem obliviousness přístupů do paměti v tomto modelu.
ORAM je neformálně algoritmus na rozhraní chráněného CPU a fyzické RAM, takže se chová jako RAM pro CPU dotazem na fyzickou RAM pro CPU, zatímco skrývá informace o skutečném vzoru přístupu k paměti CPU z fyzická RAM. Jinými slovy, distribuce přístupů do paměti dvou programů, které zajišťují stejný počet přístupů do paměti RAM, je od sebe nerozeznatelná. Tento popis bude mít smysl, pokud CPU nahradí klient s malým úložištěm a fyzická paměť RAM bude nahrazena vzdáleným serverem s velkou úložnou kapacitou, kde jsou uložena data klienta.
Následuje formální definice ORAMů.[3] Nechat označují program vyžadující paměť velikosti při provádění na vstupu . Předpokládejme to má kromě dvou speciálních pokynů také pokyny pro základní matematické a řídicí operace a , kde přečte hodnotu na místě a zapíše hodnotu na . Posloupnost paměťové buňky přístupné programem během jeho provádění se nazývá jeho vzor přístupu do paměti a je označen .
A algoritmus polynomiálního času, je kompilátor Oblivious RAM (ORAM) s výpočetní režií a paměť nad hlavou , pokud daný a a deterministický program RAM s velikostí paměti výstup programu s velikostí paměti takový, že pro jakýkoli vstup , doba provozu je ohraničen kde je doba běhu , a existuje a zanedbatelná funkce takové, že platí následující vlastnosti:
- Správnost: Pro všechny a jakýkoli řetězec alespoň s pravděpodobností , .
- Zapomenutí: Pro libovolné dva programy , jakýkoli a jakékoli dva vstupy, -li , pak je -blízko k v statistická vzdálenost, kde a .
Všimněte si, že výše uvedená definice používá pojem statistická bezpečnost. Podobně lze definovat i pojem výpočetní bezpečnost.
Historie ORAMů
ORAM byly zavedeny Goldreich a Ostrovský[1][4][5] přičemž klíčová motivace byla uvedena jako ochrana softwaru před protivníkem, který dokáže pozorovat vzorec přístupu do paměti (ale ne obsah paměti).
Hlavní výsledek této práce[5] je, že existuje kompilátor ORAM, který používá prostoru serveru a vznikne režijní doba běhu při vytváření programu, který používá paměťové buňky zapomínají. Tato práce zahájila sérii prací na konstrukci zapomínajících RAM, které pokračují až do dnešního dne. Při porovnávání různých konstrukcí ORAM je třeba vzít v úvahu několik atributů. Nejdůležitějšími parametry konstrukce ORAM jsou množství úložiště klienta, velikost úložiště serveru a časová náročnost při přístupu k jedné paměti. Na základě těchto atributů byla konstrukce Kushilevitze et al.[6] je nejznámější konstrukce ORAM. Dosahuje to úložiště klienta, úložiště serveru a přístup nad hlavou.
Dalším důležitým atributem konstrukce ORAM je, zda je režie přístupu amortizovaný nebo nejhorší případ. Několik dřívějších konstrukcí ORAM má dobré amortizované režijní záruky přístupu, ale mají nejhorší přístupové režie. Některé z konstrukcí ORAM s polylogaritmický nejhorší výpočetní režie jsou.[6][7][8][9][10] Stavby[1][4][5] byly pro model náhodného věštce, kde klient předpokládá přístup k věštci, který se chová jako náhodná funkce a vrací konzistentní odpovědi pro opakované dotazy. Také si všimli, že toto věštce lze nahradit pseudonáhodnou funkcí, jejíž semenem je tajný klíč uložený klientem, pokud předpokládáme existenci jednosměrných funkcí. Papíry[11][12] byly zaměřeny na úplné odstranění tohoto předpokladu. Autoři[12] také dosáhnout režie přístupu , což je jen log-faktor od nejznámějšího přístupu ORAM.
Zatímco většina dřívějších prací se zaměřuje na prokázání zabezpečení výpočetně, existuje i novějších prací[3][8][11][12] které používají silnější statistickou představu o bezpečnosti.
Jeden z mála známých spodních limitů režie přístupu ORAM je způsoben Goldreichem et al.[5] Ukazují a dolní mez pro ORAM přístup nad hlavou, kde je velikost dat. K dispozici je také podmíněná dolní mez na režii přístupu ORAM v důsledku Boyle et al.[13] která toto množství spojuje s velikostí třídicích sítí.
Konstrukce ORAM
Triviální konstrukce
Konstrukce triviálního simulátoru ORAM pro každou operaci čtení nebo zápisu čte a zapisuje na každý jednotlivý prvek v poli, pouze provádí smysluplnou akci pro adresu uvedenou v této jediné operaci. Triviální řešení tedy prohledává celou paměť pro každou operaci. Toto schéma přináší časovou režii pro každou paměťovou operaci, kde n je velikost paměti.
Jednoduché schéma ORAM
Jednoduchá verze statisticky zabezpečeného kompilátoru ORAM vytvořeného Chungem a Passem[3] je popsán v dalším textu spolu s přehledem důkazu o jeho správnosti. Kompilátor na vstupu n a program Π s jeho pamětí n, vypíše ekvivalentní lhostejný program Π ′.
Pokud je vstupní program Π používá r registry, výstupní program Π ′ bude potřeba registry, kde je parametr konstrukce. Π ′ používá paměť a její (nejhorší) přístupová režie je .
Překladač ORAM lze velmi snadno popsat. Předpokládejme, že původní program Π má kromě dvou speciálních pokynů také pokyny pro základní matematické a řídicí operace a , kde přečte hodnotu na místě l a zapíše hodnotu proti na l. Kompilátor ORAM při konstrukci Π ′, jednoduše nahradí každý číst a psát si pokyny s podprogramy Oread a Owrite a udržuje zbytek programu stejný. Je možné poznamenat, že tuto konstrukci lze nastavit tak, aby fungovala i pro požadavky na paměť přicházející v online móda.
Organizace paměti zapomenutého programu
Program Π ′ ukládá kompletní binární strom T hloubky v jeho paměti. Každý uzel v T je reprezentován maximálně binárním řetězcem délky d. Kořen je prázdný řetězec označený λ. Levé a pravé potomky uzlu představovaného řetězcem jsou a resp. Program Π ′ myslí na vzpomínku na Π jako jsou rozděleny do bloků, kde každý blok je souvislou posloupností paměťových buněk o velikosti α. Existuje tedy nanejvýš celkem. Jinými slovy paměťová buňka r odpovídá bloku .
V každém okamžiku existuje asociace mezi bloky a listy dovnitř TChcete-li sledovat toto sdružení, Π ′ také ukládá datovou strukturu nazvanou mapa polohy, označená , použitím registry. Tato datová struktura pro každý blok b, ukládá list T spojený s b v .
Každý uzel v T obsahuje pole maximálně K. trojnásobek. Každá trojice má formu , kde b je identifikátor bloku a proti je obsah bloku. Tady, K. je bezpečnostní parametr a je .
Popis lhostejného programu
Program Π ′ začíná inicializací jeho paměti a registrů na ⊥. Popis postupů Owrite a Oread stačí k dokončení popisu Π ′. Dílčí rutina Owrite je uveden níže. Vstupy do dílčí rutiny jsou paměťové místo a hodnota proti být uloženy na místě l. Má tři hlavní fáze, jmenovitě FETCH, PUT_BACK a FLUSH.
vstup: umístění l, hodnota proti
Postup FETCH // Vyhledejte požadovaný blok. // b je blok obsahující l. // i je lsoučást v bloku b. -li pak . // Soubor na rovnoměrně náhodný list dovnitř T. vlajka . pro každý uzel N na cestě od kořene k dělat -li N má trojnásobek formy pak Odstranit z N, obchod X do rejstříku a aktualizovaný odepište N na T. vlajka . jiný Odepsat N na T. Postup PUT_BACK // Přidejte zpět aktualizovaný blok v kořenovém adresáři. . // Soubor na rovnoměrně náhodný list dovnitř T. -li vlajka pak Soubor být stejný jako X až na proti na i-tá pozice. jiný Soubor být blok s proti na i-tá pozice a ⊥je všude jinde. -li v kořenovém adresáři zbývá místo pak Přidejte trojnásobek do kořene T. jiný Přerušit výstup přetékat. Postup FLUSH // Zatlačte bloky přítomné v náhodném směru tak daleko, jak je to možné. . // Soubor na jednotně náhodný list dovnitř T. pro každý trojitý v uzlech prošla cesta z kořene do Zatlačte tuto trojku dolů do uzlu N který odpovídá nejdelší běžné předponě a . -li kdykoli se nějaký kbelík přetéká pak Přerušit výstup přetékat.
Úkolem FETCH fáze je hledat místo l ve stromě T. Předpokládat je list spojený s blokem obsahujícím umístění l. Pro každý uzel N v T na cestě od kořene k , tento postup prochází všemi trojnásobky N a hledá trojnásobek odpovídající bloku obsahujícímu l. Pokud zjistí, že trojnásobek N, odstraní trojitý z N a zapíše zpět aktualizovaný stav N. Jinak jednoduše odepíše celý uzel N.
V další fázi aktualizuje blok obsahující l s novou hodnotou proti, přidruží tento blok s čerstvě vzorkovaným jednotně náhodným listem stromu, zapíše aktualizovanou trojku do kořene T.
Poslední fáze, která se nazývá FLUSH, je další operací k uvolnění paměťových buněk v kořenovém adresáři a dalších vyšších vnitřních uzlech. Algoritmus konkrétně vybere jednotně náhodný list a poté se pokusí co nejvíce potlačit každý uzel na cestě od kořene k . Přeruší výstup přetečení, pokud v určitém okamžiku některý kbelík přeteče svou kapacitu.
Dílčí rutina Oread je podobný Owrite. Pro Oread sub-rutina, vstup je pouze místo v paměti a je téměř stejný jako Owrite. Ve fázi FETCH, pokud nenajde trojitý odpovídající umístění l, vrátí se ⊥ jako hodnota v místě l. Ve fázi PUT_BACK zapíše zpět stejný blok, který načetl do kořenového adresáře, po jeho přidružení k čerstvě vzorkovanému jednotně náhodnému listu.
Správnost jednoduchého schématu ORAM
Nechat C znamená kompilátor ORAM, který byl popsán výše. Vzhledem k programu Π, nechť Π ′ označit . Nechat označují provedení programu Π na vstupu X použitím n paměťové buňky. Také nechte označuje vzor přístupu do paměti . Nechat μ označit funkci takovou, že pro libovolné , pro libovolný program Π a pro jakýkoli vstup , pravděpodobnost, že výstup přetečení je maximálně . Následující lemma je snadno vidět z popisu C.
- Rovnocennost Lemma
- Nechat a . Vzhledem k programu Πalespoň s pravděpodobností , výstup je shodný s výstupem .
Je snadné to vidět Owrite a Oread operace prochází kořenem k listovým cestám ve Windows T vybráno jednotně a náhodně nezávisle. Tato skutečnost naznačuje, že distribuce vzorů přístupu do paměti u libovolných dvou programů, které vytvářejí stejný počet přístupů do paměti, jsou k nerozeznání, pokud oba nepřetékají.
- Zapomnětlivost Lemma
- Vzhledem ke dvěma programům a a dva vstupy takhle alespoň s pravděpodobností , přístupové vzory a jsou identické.
Následující lemma doplňuje důkaz správnosti schématu ORAM.
- Přetečení Lemma
- Existuje zanedbatelná funkce μ takové, že pro velmi program Π, každý n a vstup X, Program přetečení výstupů s největší pravděpodobností .
Výpočetní a paměťové režie
Během každého Oread a Owrite operace, dvě náhodné cesty root-to-leaf T jsou plně prozkoumány Π ′. To trvá čas. To je stejné jako výpočetní režie a je od té doby K. je .
Celková paměť vyčerpaná uživatelem Π ′ se rovná velikosti T. Každá trojice uložená ve stromu má slova v něm, a tak tam jsou slova na uzel stromu. Protože celkový počet uzlů ve stromu je , celková velikost paměti je slova, což je . Proto je paměťová režie stavby .
Reference
- ^ A b C Goldreich, Oded (1987), "Směrem k teorii ochrany a simulace softwaru pomocí zapomínajících RAM", in Aho, Alfred V. (vyd.), Sborník 19. výročního sympózia ACM o teorii výpočtů (STOC '87), Sdružení pro výpočetní techniku, s. 182–194, doi:10.1145/28395.28416
- ^ Pippenger, Nicholas; Fischer, Michael J. (1979), „Vztahy mezi opatřeními složitosti“, Deník ACM, 26 (2): 361–381, doi:10.1145/322123.322138, PAN 0528038
- ^ A b C Chung, Kai-Min; Pass, Rafael (2013), „Jednoduchý ORAM“, Archiv ePrint kryptologie IACR
- ^ A b Ostrovský, Rafail (1990), „Efektivní výpočet na lhostejných RAM“, Sborník z 22. výročního sympózia ACM o teorii práce s počítači (STOC '90), Sdružení pro výpočetní techniku, str. 514–523, doi:10.1145/100216.100289
- ^ A b C d Goldreich, Oded; Ostrovský, Rafail (1996), „Softwarová ochrana a simulace na lhostejných RAM“, Deník ACM, 43 (3): 431–473, doi:10.1145/233551.233553, hdl:1721.1/103684, PAN 1408562
- ^ A b Kushilevitz, Eyal; Lu, Steve; Ostrovský, Rafail (2012), „On (in) security of hash-based livious RAM and a new balancing scheme“, Proceedings of the Twenty-Third Annual ACM-SIAM Symposium on Discrete Algorithms, Sdružení pro výpočetní techniku, s. 143–156, doi:10.1137/1.9781611973099.13, PAN 3205204
- ^ Ostrovský, Rafail; Shoup, Victor (1997), "Soukromé úložiště informací (rozšířený abstrakt)", v Leighton, F. Thomson; Shor, Peter W. (eds.), Sborník z dvacátého devátého výročního symposia ACM o teorii práce na počítači (STOC '97), Sdružení pro výpočetní techniku, str. 294–303, doi:10.1145/258533.258606
- ^ A b Shi, Elaine; Chan, T.-H. Hubert; Stefanov, Emil; Li, Mingfei (2011), „Oblivious RAM with náklady v nejhorším případě “, Lee, Dong Hoon; Wang, Xiaoyun (eds.), Pokroky v kryptologii - ASIACRYPT 2011 - 17. mezinárodní konference o teorii a aplikaci kryptologie a informační bezpečnosti, Soul, Jižní Korea, 4. – 8. Prosince 2011, sborník, Přednášky v informatice, 7073, Springer, str. 197–214, doi:10.1007/978-3-642-25385-0_11
- ^ Goodrich, Michael T.; Mitzenmacher, Michael; Ohrimenko, Olga; Tamassia, Roberto (2011), „Oblivious RAM simulation with efficient most-case access overhead“, in Cachin, Christian; Ristenpart, Thomas (eds.), Sborník příspěvků ze 3. workshopu ACM Cloud Computing Security, CCSW 2011, Chicago, IL, USA, 21. října 2011, Sdružení pro výpočetní techniku, str. 95–100, doi:10.1145/2046660.2046680
- ^ Chung, Kai-Min; Liu, Zhenming; Pass, Rafael (2014), „Statisticky zabezpečený ORAM s režie ", Sarkar, Palash; Iwata, Tetsu (eds.), Advances in Cryptology - ASIACRYPT 2014 - 20th International Conference on the Theory and Application of Cryptology and Information Security, Kaoshiung, Taiwan, R.O.C., 7-11. Prosince 2014, Proceedings, Part II, Přednášky v informatice, 8874, Springer, str. 62–81, doi:10.1007/978-3-662-45608-8_4
- ^ A b Ajtai, Miklósi (2010), „Oblivious RAMs without cryptographic predpoklads [extended abstract]“, Sborník 42. sympozia ACM o teorii výpočtů (STOC 2010), Sdružení pro výpočetní techniku, s. 181–190, doi:10.1145/1806689.1806716, PAN 2743267
- ^ A b C Damgård, Ivan; Meldgaard, Sigurd; Nielsen, Jesper Buus (2011), „Perfektně zabezpečit zapomenutou RAM bez náhodných věštců“, Ishai, Yuval (ed.), Teorie kryptografie - 8. konference o teorii kryptografie, TCC 2011, Providence, RI, USA, 28. – 30. Března 2011, sborník, Přednášky v informatice, 6597, Springer, str. 144–163, doi:10.1007/978-3-642-19571-6_10
- ^ Boyle, Elette; Naor, Moni (2016), „Existuje zapomenutá dolní mez RAM?“, Sborník konference ACM 2016 o inovacích v teoretické informatice (ITCS '16), Sdružení pro výpočetní techniku, str. 357–368, doi:10.1145/2840728.2840761, PAN 3629839