Intel SGX Extensions

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 februari 2021; kontroller kräver 4 redigeringar .

Intel Software Guard Extensions (Intel SGX)  är en uppsättning CPU-instruktioner som gör det möjligt för en applikation att skapa enklaver  - områden i det virtuella adressutrymmet som är skyddade från läsning och skrivning utanför detta område av andra processer, inklusive operativsystemets kärna . Intel SGX tillhandahåller integriteten och konfidentialiteten hos högsäkerhetsdatorer som utförs på system där privilegierade processer (kärna, hypervisor , etc.) anses opålitliga.

Intel SGX är designad för säker fjärrdator, säker webbsurfning och upphovsrättsskydd . Andra praktiska tillämpningar av denna teknik inkluderar att säkerställa konfidentialitet för proprietära algoritmer och krypteringsnycklar.

Skapande historia

Intel SGX-tillägg kom 2015 med den sjätte generationen av Intel-mikroprocessorer baserade på Skylake- mikroarkitekturen . Från och med Skylake har processorn en ny hårdvarumodul som kallas Memory Encryption Engine (MEE), som möjliggör automatisk kryptering av data som överförs från processorn till enklavens minnesområde. Detta gjorde det möjligt att överge antagandet om tillförlitlighet hos RAM och att begränsa säkerhetsperimetern till en central processor, vilket gjorde skapandet av SGX möjligt [1] .

2016 introducerades den andra versionen av SGX-tekniken, kallad SGX2. Den utökade SGX1-instruktionsuppsättningen med dynamisk enklavminneshantering. SGX1 införde restriktioner gällande minnesallokering och återanvändning av enklavminne - utvecklaren var skyldig att allokera allt minne när en enklavinstans skapades. SGX2 introducerade nya instruktioner och programmeringsmodeller för att utöka stödet för dynamisk enklavminneshantering [2] .

Stöds endast på Intel Core 7000, 8000, 9000 och 10000 generationens processorer (SGX-tekniken har tagits bort på 11 och 12 generationens Core-processorer), såväl som 3:e generationens Intel Xeon Scalabale -serverprocessorer. AMD-processorer stöder inte SGX. [3]

Förklaring av problemet

Först och främst skapades SGX-tekniken för att möjliggöra säker fjärrdatorn - kör programvara på en fjärrdator som ägs av en opålitlig part, med vissa garantier för integritet och konfidentialitet. I allmänhet är säker fjärrdator ett olöst problem. Fullständigt homomorf kryptering löser problemet för en begränsad familj av beräkningar, men har en opraktisk prestandaoverhead [4] .

Intel SGX-tillägg löser problemet med säker fjärrdator genom att använda pålitlig hårdvara på fjärrdatorn. Utrustningens äkthet fastställs under certifieringsprocessen. Pålitlig hårdvara skapar ett "säkert område" och användaren av fjärrdatortjänsten kan ladda upp nödvändig kod och data till detta "område". Pålitlig hårdvara skyddar datas konfidentialitet och integritet samtidigt som man utför beräkningar på den [5] .

Mål

Utvecklingen av Intel SGX följde 8 huvudmål [6] :

Enhetsdetaljer

SGX allokerar ett minnesområde som kallas Processor Reserved Memory (PRM). Processorn skyddar PRM från alla icke-enklavminnesåtkomster, inklusive kernel-, hypervisor- och System Management Mode (SMM)-åtkomst, såväl som DMA- åtkomst från kringutrustning [5] [7] .

PRM innehåller Enclave Page Cache (EPC), som består av 4-kilobyte sidor som lagrar enklavkod och data. Otillförlitlig systemprogramvara är ansvarig för att tilldela EPC-sidor till enklaver. CPU:n håller reda på tillståndet för varje EPC-sida i metadata för Enclave Page Cache Metadata (EPCM) för att säkerställa att varje EPC-sida endast tillhör en enklav [7] .

Källkoden och data i enklaven laddas av opålitlig systemprogramvara. Under uppstartsfasen ber systemmjukvaran CPU:n att kopiera data från oskyddat minne (utanför PRM) till EPC-sidorna och tilldelar sidorna till den enklav som installeras. Det följer att det initiala tillståndet för enklaven är känt för systemmjukvaran [5] [7] .

Efter att alla sidor i enklaven har laddats in i EPC:n, ber systemmjukvaran CPU:n att markera enklaven som initierad, varefter applikationsmjukvaran kan exekvera koden inuti enklaven. Efter att enklaven har initierats är laddningsmetoden som beskrivs ovan [5] [7] förbjuden .

Medan enklaven laddas beräknas en kryptografisk hash baserat på dess innehåll. Efter att enklaven har initierats slutförs hashprocessen och den resulterande hashen blir enklavens mäthash [8] .

Fjärrparten kan gå igenom en attestationsprocess för att säkerställa att den kommunicerar med en enklav som har en viss verifieringshash och som körs i en säker miljö [9] .

En exekveringstråd kan komma in i enklaven endast genom speciella CPU-instruktioner, som liknar mekanismen för att byta från användarläge till kärnläge. Enklavkörning sker alltid i skyddat läge, på ring 3 , och använder adressöversättningen som ställts in av OS-kärnan och hypervisorn [5] [7] .

För att undvika läckage av känslig data, servar inte CPU:n avbrott (som sidfel ) eller virtuell maskinavslutning (vmexit) medan enklavkoden körs. Istället utför CPU:n först en Asynkron Enclave Exit (AEX) för att byta från enklavkod till ring 3-kod och servar sedan ett avbrott eller en virtuell maskinutgång. CPU:n utför en AEX, lagrar dess tillstånd i ett fördefinierat område inuti enklaven, och överför kontrollen till en fördefinierad instruktion utanför enklaven, och ersätter CPU-registren med syntetiska värden [5] [7] .

Tilldelningen av EPC-sidor för enklaver delegeras till operativsystemets kärna (eller hypervisor). Operativsystemet kommunicerar sina minnesallokeringsbeslut till SGX-implementeringen via speciella CPU-instruktioner ring 0. Operativsystemet kan också byta ut EPC-sidor till opålitligt RAM och sedan ladda tillbaka dem med hjälp av speciella processorinstruktioner [5] .

SGX använder Memory Encryption Engine (MEE) för att säkerställa konfidentialitet, integritet och färskhet hos uppladdade EPC-sidor medan de lagras i opålitligt minne [5] . MME fungerar som en förlängning av minneshanteringsenheten och krypterar automatiskt all data som överförs från processorn till minnet [10] .

Applikationsdesign

Applikationsdesign med Intel SGX kräver att applikationen är uppdelad i två komponenter [9] :

En betrodd böna bör begränsas till endast den data som behöver mest skydd och de operationer som behöver interagera med den. En stor enklav med ett komplext gränssnitt förbrukar inte bara mer skyddat minne, det ökar också attackytan. Enklaver bör också ha minimal interaktion mellan betrodda komponenter. Även om enklaver kan anropa funktioner i en opålitlig komponent (med en speciell instruktion), kommer begränsning av sådana anrop att stärka enklaven från attacker [9] [8] .

Certifiering

I Intel SGX-arkitekturen är verifiering processen för enklavautentisering. Det finns två bestyrkandemekanismer [9] :

Lokalt intyg

Lokalt intyg är användbart när en applikation har mer än en enklav som måste fungera tillsammans, eller när två applikationer måste kommunicera mellan enklaver [9] .

I attesteringsprocessen mellan två enklaver måste varje enklav först se till att den andra är pålitlig. En enklav autentiserar sig till en annan målenklav med hjälp av EREPORT-satsen. Denna SGX-instruktion skapar en attestationsrapport (REPORT) som kryptografiskt associerar ett enklavmeddelande med en identitet baserad på enklavhash och baserat på certifikat. Kryptografisk bindning utförs med hjälp av en speciell tagg som beräknas med en symmetrisk nyckel som endast är tillgänglig för målenklaven och SGX-implementeringen [5] .

Enklaverna kan sedan upprätta en säker session med hjälp av Diffie-Hellman-protokollet för att utbyta sessionsnyckeln. Denna sessionsnyckel kan användas för att kryptera data som ska delas mellan två enklaver [9] .

Eftersom en enklav inte kan komma åt det skyddade minnesutrymmet i en annan enklav, även om de tillhör samma applikation, måste alla pekare avreferens, och data måste skickas direkt mellan enklaver [9] .

Fjärråtester

Certifieringsprocessen är som följer. En SGX-aktiverad processor beräknar en hash av koden och data i varje enklav. Programvaran inuti enklaven startar processen att beräkna SGX-attestationssignaturen, som inkluderar enklav-hash och enklavmeddelandet [8] .

Den kryptografiska primitiv som används i SGX-attestationssignering är för komplex för att implementeras i hårdvara, så signeringsprocessen utförs av en privilegierad Quoting Enclave som tillhandahålls av Intel med tillgång till SGX-attestationsnyckeln, en asymmetrisk hårdvarunyckel som är unik för varje plattform. SGX-attestationsnyckeln existerade inte vid den tidpunkt då processorn skapades. Den ges ut senare, med hjälp av Provisioning Enclave som tillhandahålls av Intel [5] .

Eftersom signaturen beräknas i Quoting Enclave, finns det ett behov av en säker kommunikationskanal mellan enklaven som genomgår mjukvaruvalidering och Quoting Enclave. Detta problem löses med hjälp av den lokala verifieringsmekanismen [5] .

Om fjärrservern fastställer att enklaven har skapats korrekt och körs på en äkta Intel SGX-kompatibel processor, kan den nu lita på enklaven och skicka hemligheter till den via en betrodd kanal [9] .

Säkerhet

I fjärrdatorn laddas innehållet i enklaven ner av systemprogramvaran till datorn och bör därför inte innehålla hemligheter i klartext. Efter initiering finns det en attestationsprocess där enklaven autentiseras mot en fjärrserver. Efter framgångsrik autentisering förväntas fjärrservern avslöja några hemligheter för enklaven via en säker kommunikationskanal. Intel SGX-designen försöker säkerställa att hashen som beräknas under verifieringsprocessen korrekt återspeglar innehållet som laddats upp till enklaven [8] .

SGX erbjuder även ett certifikatbaserat identifieringssystem. Den används för att utbyta hemligheter mellan enklaver som har certifikat utfärdade av samma certifikatutfärdare. Utbytesprocessen går ut på att kryptera hemligheter innan de skickas vidare till opålitlig systemprogramvara, som sedan överför dem till en annan enklav [5] [8] .

Samma mekanism kan användas för att cachelagra hemligheter som erhållits under verifieringsprocessen på opålitliga lagringsmedia som hanteras av systemprogramvaran. Denna cachning kan minska antalet attestationsprocesser i ett distribuerat system [5] .

Prime+Probe Attack

Den 27 mars 2017 utvecklade forskare vid Graz University of Technology en prototyp som kan erhålla RSA- nycklar från SGX-enklaver som körs på samma system [11] [12] med hjälp av en tidsinställd attack inom fem minuter . En motåtgärd mot denna typ av attack presenterades och publicerades av Daniel Gruss et al. vid USENIX Security Symposium 2017 [13] . Bland andra motåtgärder som publicerades den 28 september 2017 var verktyget DR.SGX. DR.SGX påstås ha överlägsen prestanda samtidigt som den är mycket lättare att implementera än andra föreslagna lösningar [14] .

Spectre attacker

LSDS-gruppen vid Imperial College London visade att en spekulativ Spectre- säkerhetssårbarhet kunde anpassas för att attackera enklaven [15] . Foreshadow- attacken , som avslöjades i augusti 2018, kombinerar spekulativ exekvering och buffertspill för att kringgå SGX [16] .

Enclave Attack

Den 8 februari 2019 publicerade forskare från Graz University of Technology forskningsresultat som visade att det i vissa fall är möjligt att köra skadlig kod från själva enklaven [17] . Dokumentet hävdar att på grund av enklavens konfidentiella och skyddade karaktär kan antivirusprogramvara inte upptäcka och ta bort skadlig programvara som finns i den. Men eftersom moderna antiviruslösningar övervakar systemanrop och applikationsinteraktioner med operativsystemet, bör det vara möjligt att identifiera skadliga enklaver genom deras beteende. Intel släppte ett uttalande om att denna attack var utanför SGX-hotmodellen, att de inte kunde garantera att användarexekverad kod kom från betrodda källor, och uppmanade konsumenter att endast använda betrodd kod [18] .

Platypus Attack

Forskare vid universitetet i Graz i Österrike har upptäckt en ny farlig sårbarhet baserad på mätning av CPU-spänning som gör att AES- och RSA-nycklar kan extraheras från en säker SGX-enklav. Denna funktion har funnits i alla Intel-processorer sedan Sandy Bridge , där northbridge- funktionerna helt har ersatts av en systemagent integrerad i processormatrisen. Sårbarheten utnyttjar förmågan hos RAPL-systemet (Running Average Power Limit), som inte kräver privilegierad åtkomst, för att få detaljerade uppskattningar av strömförbrukningen för kärnan, systemagenten och DRAM [19] . För att bekämpa sårbarheten släppte Intel en mikrokodspatch (INTEL-SA-0389 [20] ).

Anteckningar

  1. Simon Johnson. Intel® SGX Memory Encryption  Engine . software.intel.com (26 februari 2016). Datum för åtkomst: 7 december 2019. Arkiverad från originalet den 7 december 2019.
  2. McKeen, Frank & Alexandrovich, Ilya & Anati, Ittai & Caspi, Dror & Johnson, Simon & Leslie-Hurd, Rebekah & Rozas, Carlos. Intel® Software Guard Extensions (Intel® SGX) Stöd för dynamisk minneshantering inuti en enklav. // Konferens: Hårdvara och arkitektoniskt stöd för säkerhet och integritet. — 2016.
  3. Intel förbjöd ägare av sina nya processorer från att titta på licensierade filmer från 4K-skivor Arkiverade 18 januari 2022 på Wayback Machine // CNews 17 januari 2022
  4. Michael Naehrig, Kristin Lauter och Vinod Vaikun-tanathan. Kan homomorf kryptering vara praktiskt?  // Proceedings of the 3rd ACM workshop on Cloud computing security workshop. - 2011. - S. 113-124 . Arkiverad från originalet den 22 september 2020.
  5. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 Victor Costan och Srinivas Devadas. Intel SGX Explained  // Datavetenskap och artificiell intelligens Laboratory Massachusetts Institute of Technology. Arkiverad 4 maj 2020.
  6. Matthew H. Intel® SGX för dummies (Intel® SGX-designmål  ) . software.intel.com (2013-26-09). Hämtad 7 december 2019. Arkiverad från originalet 29 april 2014.
  7. ↑ 1 2 3 4 5 6 Alexandre Adamski. Översikt över Intel SGX - Del 1, SGX Internals (5 juli 2018). Hämtad 24 december 2019. Arkiverad från originalet 24 december 2019.
  8. ↑ 1 2 3 4 5 Ittai Anati, Shay Gueron, Simon P Johnson, Vincent R Scarlata. Innovativ teknik för CPU-baserad bekräftelse och tätning  // Intel Corporation. - 2013. Arkiverad den 24 december 2019.
  9. ↑ 1 2 3 4 5 6 7 8 John M., Benjamin O. Intel® Software Guard Extensions Tutorial Series : Del 1, Intel® SGX Foundation  . software.intel.com (7 juli 2016). Datum för åtkomst: 7 december 2019. Arkiverad från originalet den 7 december 2019.
  10. Shay Gueron. [ https://eprint.iacr.org/2016/204.pdf En minneskrypteringsmotor lämplig för processorer för allmänna ändamål] // Cryptology ePrint Archive. - 2016. Arkiverad den 15 juni 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 visar att Intels SGX kan läcka kryptonycklar , The Register (7 mars 2017). Arkiverad från originalet den 11 juli 2019. Hämtad 1 maj 2017.
  13. Daniel Gruss, Julian Lettner, Felix Schuster, Olya Ohrimenko, Istvan Haller och Manuel Costa. Starkt och effektivt cache-sidokanalskydd med hjälp av hårdvarutransaktionsminne . USENIX (16 augusti 2017). Hämtad 7 december 2019. Arkiverad från originalet 27 juli 2020.
  14. Brasser, Ferdinand; Capkun, 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 och Peter Pietzuch. SGXSpecter . Hämtad 7 december 2019. Arkiverad från originalet 7 maj 2020.
  16. Peter Bright - 10 juli 2018 21:00 UTC. Ny Spectre-liknande attack använder spekulativ exekvering för att svämma över buffertar . Ars Technica (10 juli 2018). Hämtad 2 november 2018. Arkiverad från originalet 23 november 2018.
  17. Schwarz, Michael; Weiser, Samuel & Gruss, Daniel (2019-02-08), Practical Enclave Malware med Intel SGX, arΧiv : 1902.03256 [cs.CR]. 
  18. Ljust, Peter Forskare använder Intel SGX för att placera skadlig programvara utom räckhåll för   antivirusprogram ? . Ars Technica (12 februari 2019). Hämtad 15 februari 2019. Arkiverad från originalet 15 februari 2019.
  19. Gennadij Detinich. Platypus attack: Intels processorförbrukningssensorer visade sig vara ett säkerhetshål . 3dnews.ru (11 november 2020). Hämtad 11 november 2020. Arkiverad från originalet 11 november 2020.
  20. ↑ 2020.2 IPU - Intel® RAPL Interface Advisory  . www.intel.com (10 november 2020). Hämtad 11 november 2020. Arkiverad från originalet 10 november 2020.

Länkar