Rozšíření Intel SGX

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 23. února 2021; kontroly vyžadují 4 úpravy .

Intel Software Guard Extensions (Intel SGX)  je sada instrukcí CPU , která umožňuje aplikaci vytvářet enklávy  – oblasti ve virtuálním adresovém prostoru, které jsou chráněny před čtením a zápisem z vnějšku této oblasti jinými procesy, včetně jádra operačního systému . Intel SGX poskytuje integritu a důvěrnost vysoce zabezpečených výpočtů prováděných na systémech, kde jsou privilegované procesy (kernel, hypervisor atd.) považovány za nedůvěryhodné.

Intel SGX je navržen pro zabezpečený vzdálený počítač, bezpečné procházení webu a ochranu autorských práv . Mezi další praktické aplikace této technologie patří zajištění důvěrnosti proprietárních algoritmů a šifrovacích klíčů.

Historie vytvoření

Rozšíření Intel SGX přišla v roce 2015 s šestou generací mikroprocesorů Intel založených na mikroarchitektuře Skylake . Počínaje Skylake má procesor nový hardwarový modul nazvaný Memory Encryption Engine (MEE), který umožňuje automatické šifrování dat přenášených z procesoru do paměťové oblasti enklávy. To umožnilo opustit předpoklad spolehlivosti RAM a omezit bezpečnostní perimetr na jeden centrální procesor, což umožnilo vytvoření SGX [1] .

V roce 2016 byla představena druhá verze technologie SGX s názvem SGX2. Rozšířil instrukční sadu SGX1 o dynamickou správu paměti enklávy. SGX1 zavedl omezení týkající se alokace paměti a opětovného použití paměti enklávy – vývojář musel při vytváření instance enklávy alokovat veškerou paměť. SGX2 představil nové instrukce a programovací modely pro rozšíření podpory pro dynamickou správu paměti enklávy [2] .

Podporováno pouze na procesorech Intel Core 7000, 8000, 9000 a 10000 generace (technologie SGX byla odstraněna z 11. a 12. generace Core procesorů), stejně jako na serverových procesorech Intel Xeon Scalabale 3. generace . Procesory AMD nepodporují SGX. [3]

Prohlášení o problému

Za prvé, technologie SGX byla vytvořena, aby umožnila bezpečný vzdálený výpočet - spouštění softwaru na vzdáleném počítači vlastněném nedůvěryhodnou stranou, s určitými zárukami integrity a důvěrnosti. Obecně platí, že bezpečný vzdálený počítač je nevyřešeným problémem. Plně homomorfní šifrování řeší problém pro omezenou rodinu výpočtů, ale má nepraktickou výkonnostní režii [4] .

Rozšíření Intel SGX řeší problém bezpečného vzdáleného počítače pomocí spolehlivého hardwaru na vzdáleném počítači. Autenticita zařízení je stanovena během certifikačního procesu. Důvěryhodný hardware vytváří „zabezpečenou oblast“ a uživatel vzdálené výpočetní služby může do této „oblasti“ nahrát potřebný kód a data. Spolehlivý hardware chrání důvěrnost a integritu dat při provádění výpočtů na nich [5] .

Cíle

Vývoj Intel SGX sledoval 8 hlavních cílů [6] :

Podrobnosti o zařízení

SGX alokuje oblast paměti nazvanou Processor Reserved Memory (PRM). Procesor chrání PRM před všemi neenklávovými přístupy do paměti, včetně přístupu k jádru, hypervizoru a režimu správy systému (SMM) a také před přístupem DMA z periferií [5] [7] .

PRM obsahuje Enclave Page Cache (EPC), která se skládá ze 4kilobajtových stránek, které ukládají kód a data enklávy. Za přiřazení stránek EPC k enklávám je zodpovědný nespolehlivý systémový software. CPU sleduje stav každé stránky EPC v metadatech Enclave Page Cache Metadata (EPCM), aby bylo zajištěno, že každá stránka EPC patří pouze do jedné enklávy [7] .

Zdrojový kód a data v enklávě jsou načteny nedůvěryhodným systémovým softwarem. Během spouštěcí fáze systémový software požádá CPU, aby zkopírovala data z nechráněné paměti (mimo PRM) na stránky EPC a přiřadí stránky instalované enklávě. Z toho plyne, že počáteční stav enklávy zná systémový software [5] [7] .

Po načtení všech stránek enklávy do EPC systémový software požádá CPU, aby označilo enklávu jako inicializovanou, načež aplikační software může spustit kód uvnitř enklávy. Po inicializaci enklávy je výše popsaná metoda zatížení [5] [7] zakázána .

Zatímco se enkláva načítá, je na základě jejího obsahu vypočítán kryptografický hash. Po inicializaci enklávy je proces hašování dokončen a výsledný hash se stává hashem měření enklávy [8] .

Vzdálená strana může projít atestačním procesem, aby bylo zajištěno, že komunikuje s enklávou, která má určitý ověřovací hash a běží v zabezpečeném prostředí [9] .

Prováděcí vlákno může vstoupit do enklávy pouze prostřednictvím speciálních instrukcí CPU, které jsou podobné mechanismu přepínání z uživatelského režimu do režimu jádra. Provádění enklávy vždy probíhá v chráněném režimu, na kruhu 3 , a používá překlad adres nastavený jádrem OS a hypervizorem [5] [7] .

Aby se zabránilo úniku citlivých dat, CPU během provádění kódu enklávy neobsluhuje přerušení (jako je chyba stránky ) ani ukončení virtuálního stroje (vmexit). Místo toho CPU nejprve provede asynchronní ukončení enklávy (AEX) pro přepnutí z kódu enklávy na kód ring 3 a poté obsluhuje přerušení nebo ukončení virtuálního stroje. CPU provede AEX, uloží svůj stav do předem definované oblasti uvnitř enklávy a přenese řízení na předdefinovanou instrukci mimo enklávu, přičemž nahradí registry CPU syntetickými hodnotami [5] [7] .

Přidělování EPC stránek pro enklávy je delegováno na jádro operačního systému (nebo hypervizor). Operační systém sděluje svá rozhodnutí o alokaci paměti implementaci SGX prostřednictvím speciálních instrukcí CPU ring 0. Operační systém může také zaměnit EPC stránky na nespolehlivou RAM a poté je načíst zpět pomocí speciálních instrukcí procesoru [5] .

SGX používá Memory Encryption Engine (MEE) k zajištění důvěrnosti, integrity a čerstvosti nahraných stránek EPC, když jsou uloženy v nedůvěryhodné paměti [5] . MME funguje jako rozšíření jednotky pro správu paměti a automaticky šifruje všechna data přenášená z procesoru do paměti [10] .

Návrh aplikace

Návrh aplikace s Intel SGX vyžaduje, aby byla aplikace rozdělena do dvou komponent [9] :

Důvěryhodný bean by měl být omezen pouze na data, která potřebují největší ochranu, a operace, které s nimi potřebují interakci. Velká enkláva se složitým rozhraním nejen že spotřebovává více chráněné paměti, ale také zvyšuje útočnou plochu. Enklávy by také měly mít minimální interakci mezi důvěryhodnými složkami. Přestože enklávy mohou volat funkce v nedůvěryhodné komponentě (pomocí speciální instrukce), omezení takových volání posílí enklávu před útoky [9] [8] .

Certifikace

V architektuře Intel SGX je atestace procesem enklávové autentizace. Existují dva atestační mechanismy [9] :

Místní atest

Místní atestace je užitečná, když má aplikace více než jednu enklávu, které musí spolupracovat, nebo když mezi enklávami musí komunikovat dvě aplikace [9] .

V atestačním procesu mezi dvěma enklávami se musí každá enkláva nejprve ujistit, že ta druhá je důvěryhodná. Enkláva se autentizuje k jiné cílové enklávě pomocí příkazu EREPORT. Tato instrukce SGX vytváří atestační zprávu (REPORT), která kryptograficky spojuje zprávu enklávy s identitou založenou na hash enklávy a na základě certifikátů. Kryptografická vazba se provádí pomocí speciálního tagu počítaného pomocí symetrického klíče, který je dostupný pouze pro cílovou enklávu a implementaci SGX [5] .

Enklávy pak mohou vytvořit zabezpečenou relaci pomocí protokolu Diffie-Hellman k výměně klíče relace. Tento klíč relace lze použít k šifrování dat, která mají být sdílena mezi dvěma enklávami [9] .

Protože jedna enkláva nemůže přistupovat do chráněného paměťového prostoru jiné enklávy, i když patří do stejné aplikace, musí být všechny ukazatele dereferencovány a data musí být předávána přímo mezi enklávami [9] .

Dálková atestace

Proces certifikace je následující. Procesor s podporou SGX počítá hash kódu a dat v každé enklávě. Software uvnitř enklávy zahájí proces výpočtu atestačního podpisu SGX, který obsahuje hash enklávy a zprávu o enklávě [8] .

Kryptografické primitivum používané při podepisování atestací SGX je příliš složité na to, aby se dalo implementovat do hardwaru, takže proces podepisování provádí privilegovaná Quoting Enclave poskytovaná společností Intel s přístupem k atestačnímu klíči SGX, hardwarovému asymetrickému klíči jedinečnému pro každou platformu. Atestační klíč SGX v době vytvoření procesoru neexistuje. Vydává se později pomocí Provisioning Enclave poskytované společností Intel [5] .

Vzhledem k tomu, že podpis je vypočítáván v kotující enklávě, je potřeba bezpečný komunikační kanál mezi enklávou procházející validací softwaru a kotující enklávou. Tento problém je řešen pomocí lokálního atestačního mechanismu [5] .

Pokud vzdálený server zjistí, že enkláva byla správně vytvořena a běží na skutečném procesoru Intel SGX, může nyní enklávě důvěřovat a předat jí tajemství prostřednictvím důvěryhodného kanálu [9] .

Zabezpečení

Při vzdáleném počítání je obsah enklávy stažen systémovým softwarem do počítače, a proto by neměl obsahovat tajemství. Po inicializaci následuje atestační proces, kdy je enkláva autentizována vůči vzdálenému serveru. Po úspěšné autentizaci se očekává, že vzdálený server odhalí enklávě některá tajemství prostřednictvím zabezpečeného komunikačního kanálu. Návrh Intel SGX se snaží zajistit, aby hash vypočítaný během procesu atestace přesně odrážel obsah nahraný do enklávy [8] .

SGX také nabízí identifikační systém založený na certifikátu. Používá se k výměně tajemství mezi enklávami, které mají certifikáty vydané stejnou certifikační autoritou. Proces výměny zahrnuje šifrování tajemství před jejich předáním nedůvěryhodnému systémovému softwaru, který je poté přenese do jiné enklávy [5] [8] .

Stejný mechanismus lze použít k ukládání tajných informací získaných během procesu ověřování do mezipaměti na nedůvěryhodná paměťová média spravovaná systémovým softwarem. Toto ukládání do mezipaměti může snížit počet atestačních procesů v distribuovaném systému [5] .

Prime+Probe Attack

27. března 2017 vyvinuli vědci z Technické univerzity v Grazu prototyp schopný získat klíče RSA z enkláv SGX běžících na stejném systému [11] [12] pomocí časovaného útoku během pěti minut . Jedno protiopatření proti tomuto typu útoku představili a publikovali Daniel Gruss et al. na USENIX Security Symposium v ​​roce 2017 [13] . Mezi další protiopatření zveřejněná 28. září 2017 patřila utilita DR.SGX. DR.SGX je prohlašoval, že má vynikající výkon zatímco je hodně snadnější implementovat než jiná navrhovaná řešení [14] .

Strašidelné útoky

Skupina LSDS na Imperial College London demonstrovala, že spekulativní bezpečnostní zranitelnost Spectre by mohla být přizpůsobena k útoku na enklávu [15] . Útok Foreshadow , odhalený v srpnu 2018, kombinuje spekulativní provádění a přetečení bufferu, aby obešel SGX [16] .

Enclave Attack

8. února 2019 zveřejnili vědci z Technické univerzity ve Štýrském Hradci výsledky výzkumu, které ukázaly, že v některých případech je možné spustit škodlivý kód ze samotné enklávy [17] . Dokument tvrdí, že kvůli důvěrné a chráněné povaze enklávy nemůže antivirový software detekovat a odstranit malware, který se v ní nachází. Jelikož však moderní antivirová řešení monitorují systémová volání a interakce aplikací s operačním systémem, mělo by být možné identifikovat škodlivé enklávy podle jejich chování. Společnost Intel vydala prohlášení, že tento útok byl mimo model hrozby SGX, že nemůže zaručit, že uživatelsky spouštěný kód pochází z důvěryhodných zdrojů, a vyzval spotřebitele, aby používali pouze důvěryhodný kód [18] .

Platypus Attack

Vědci z univerzity v rakouském Grazu objevili novou nebezpečnou zranitelnost založenou na měření napětí CPU, která umožňuje extrahovat klíče AES a RSA ze zabezpečené enklávy SGX. Tato funkce je přítomna ve všech procesorech Intel od dob Sandy Bridge , u nichž byly funkce northbridge zcela nahrazeny systémovým agentem integrovaným do matrice procesoru. Tato chyba zabezpečení využívá schopnost systému RAPL (Running Average Power Limit), který nevyžaduje privilegovaný přístup, získat podrobné odhady spotřeby energie jádra, systémového agenta a DRAM [19] . V boji proti této zranitelnosti společnost Intel vydala opravu mikrokódu (INTEL-SA-0389 [20] ).

Poznámky

  1. Simon Johnson. Intel® SGX Memory Encryption Engine  . software.intel.com (26. února 2016). Datum přístupu: 7. prosince 2019. Archivováno z originálu 7. prosince 2019.
  2. McKeen, Frank & Alexandrovič, Ilya & Anati, Ittai & Caspi, Dror & Johnson, Simon & Leslie-Hurd, Rebekah & Rozas, Carlos. Intel® Software Guard Extensions (Intel® SGX) Podpora pro dynamickou správu paměti uvnitř enklávy. // Konference: Hardwarová a architektonická podpora pro bezpečnost a soukromí. — 2016.
  3. Intel zakázal vlastníkům svých nových procesorů sledovat licencované filmy z 4K disků Archivováno 18. ledna 2022 na Wayback Machine // CNews , 17. ledna 2022
  4. Michael Naehrig, Kristin Lauter a Vinod Vaikun-tanathan. Může být homomorfní šifrování praktické?  // Sborník příspěvků z 3. workshopu ACM na téma Cloud computing security workshop. - 2011. - S. 113-124 . Archivováno z originálu 22. září 2020.
  5. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 Victor Costan a Srinivas Devadas. Vysvětlení Intel SGX  // Laboratoř počítačových věd a umělé inteligence Massachusetts Institute of Technology. Archivováno 4. května 2020.
  6. Matthew H. Intel® SGX for Dummies (Intel® SGX Design Objectives  ) . software.intel.com (2013-26-09). Získáno 7. prosince 2019. Archivováno z originálu dne 29. dubna 2014.
  7. ↑ 1 2 3 4 5 6 Alexandre Adamski. Přehled Intel SGX – část 1, SGX Internals (5. července 2018). Získáno 24. prosince 2019. Archivováno z originálu dne 24. prosince 2019.
  8. ↑ 1 2 3 4 5 Ittai Anati, Shay Gueron, Simon P Johnson, Vincent R Scarlata. Inovativní technologie pro atestaci a těsnění na základě CPU  // Intel Corporation. - 2013. Archivováno 24. prosince 2019.
  9. ↑ 1 2 3 4 5 6 7 8 John M., Benjamin O. Série výukových programů Intel® Software Guard Extensions : Část 1, Intel® SGX Foundation  . software.intel.com (7. července 2016). Datum přístupu: 7. prosince 2019. Archivováno z originálu 7. prosince 2019.
  10. Shay Gueron. [ https://eprint.iacr.org/2016/204.pdf Modul pro šifrování paměti vhodný pro procesory pro všeobecné použití] // Archiv Cryptology ePrint. - 2016. Archivováno 15. června 2020.
  11. Schwarz, Michael; Weiser, Samuel; Gruss, Daniel; Maurice, Clémentine & Mangard, Stefan (2017), Malware Guard Extension: Using SGX to Conceal Cache Attacks, arΧiv : 1702.08719 [cs.CR]. 
  12. Richard Chirgwin . Boffins ukazuje, že SGX společnosti Intel může unikat kryptoklíčům , The Register (7. března 2017). Archivováno z originálu 11. července 2019. Staženo 1. května 2017.
  13. Daniel Gruss, Julian Lettner, Felix Schuster, Olya Ohrimenko, Istvan Haller a Manuel Costa. Silná a účinná ochrana bočního kanálu mezipaměti pomocí hardwarové transakční paměti . USENIX (16. srpna 2017). Získáno 7. prosince 2019. Archivováno z originálu dne 27. července 2020.
  14. Brasser, Ferdinand; Čapkun, Srdjan; Dmitrienko, Alexandra; Frassetto, Tommaso; Kostiainen, Kari; Müller, Urs & Sadeghi, Ahmad-Reza (2017-09-28), DR.SGX: Hardening SGX Enclaves against Cache Attacks with Data Location Randomization, arΧiv : 1709.09917 [cs.CR]. 
  15. Dan O'Keeffe, Divya Muthukumaran, Pierre-Louis Aublin, Florian Kelbert, Christian Priebe, Josh Lind, Huanzhou Zhu a Peter Pietzuch. SGXSpecter . Získáno 7. prosince 2019. Archivováno z originálu dne 7. května 2020.
  16. Peter Bright - 10. července 2018 21:00 UTC. Nový útok podobný Spectre využívá spekulativní provádění k přetečení vyrovnávacích pamětí . Ars Technica (10. července 2018). Staženo 2. listopadu 2018. Archivováno z originálu dne 23. listopadu 2018.
  17. Schwarz, Michael; Weiser, Samuel & Gruss, Daniel (2019-02-08), Practical Enclave Malware with Intel SGX, arΧiv : 1902.03256 [cs.CR]. 
  18. Bright, Peter Výzkumníci používají Intel SGX, aby dostali malware mimo dosah antivirového   softwaru ? . Ars Technica (12. února 2019). Staženo 15. února 2019. Archivováno z originálu 15. února 2019.
  19. Gennadij Detinich. Platypus útok: Senzory spotřeby procesorů Intel se ukázaly být bezpečnostní dírou . 3dnews.ru (11. listopadu 2020). Získáno 11. listopadu 2020. Archivováno z originálu dne 11. listopadu 2020.
  20. ↑ 2020.2 IPU - Intel® RAPL Interface Advisory  . www.intel.com (10. listopadu 2020). Získáno 11. listopadu 2020. Archivováno z originálu dne 10. listopadu 2020.

Odkazy