Intel SGX -laajennukset

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 23. helmikuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 4 muokkausta .

Intel Software Guard Extensions (Intel SGX)  on joukko suorittimen ohjeita , joiden avulla sovellus voi luoda enklaaveja  - alueita virtuaaliseen osoiteavaruuteen, joita muut prosessit, mukaan lukien käyttöjärjestelmän ydin , suojaavat tämän alueen ulkopuolelta tulevalta lukemiselta ja kirjoittamiselta . Intel SGX tarjoaa eheyden ja luottamuksellisuuden korkean turvatason tietojenkäsittelylle järjestelmissä, joissa etuoikeutettujen prosessien (ydin, hypervisor jne.) katsotaan olevan epäluotettavia.

Intel SGX on suunniteltu suojattuun etätietokoneeseen, turvalliseen verkkoselailuun ja tekijänoikeussuojaukseen . Muita tämän tekniikan käytännön sovelluksia ovat patentoitujen algoritmien ja salausavainten luottamuksellisuuden varmistaminen.

Luontihistoria

Intel SGX -laajennukset saapuivat vuonna 2015 kuudennen sukupolven Intelin mikroprosessoreilla, jotka perustuvat Skylake -mikroarkkitehtuuriin . Skylakesta alkaen prosessorissa on uusi laitteistomoduuli nimeltään Memory Encryption Engine (MEE), joka mahdollistaa prosessorista erillisalueen muistialueelle siirretyn tiedon automaattisen salauksen. Tämä mahdollisti RAM-muistin luotettavuuden oletuksen luopumisen ja suojapiirin rajoittamisen yhteen keskusprosessoriin, mikä mahdollisti SGX:n luomisen [1] .

Vuonna 2016 esiteltiin SGX-tekniikan toinen versio, nimeltään SGX2. Se laajensi SGX1-käskysarjaa dynaamisella erillismuistin hallinnalla. SGX1 asetti rajoituksia muistin varaamiseen ja erillismuistin uudelleenkäyttöön - kehittäjä vaadittiin varaamaan kaikki muisti enklaaviinstanssia luodessaan. SGX2 esitteli uusia ohjeita ja ohjelmointimalleja laajentaakseen dynaamisen erillismuistin hallinnan tukea [2] .

Tuettu vain Intel Core 7000-, 8000-, 9000- ja 10000-sukupolven prosessoreissa (SGX-tekniikka on poistettu 11 ja 12 sukupolven Core-prosessoreista) sekä 3. sukupolven Intel Xeon Scalabale -palvelinprosessoreissa. AMD-prosessorit eivät tue SGX:tä. [3]

Ongelman selvitys

Ensinnäkin SGX-tekniikka luotiin mahdollistamaan suojattu etälaskenta – ohjelmistojen käyttäminen epäluotettavan osapuolen omistamassa etätietokoneessa, jossa on tiettyjä eheyden ja luottamuksellisuuden takuita. Yleensä suojattu etälaskenta on ratkaisematon ongelma. Täysin homomorfinen salaus ratkaisee ongelman rajoitetulle laskentaperheelle, mutta sen suorituskyky on epäkäytännöllinen [4] .

Intel SGX -laajennukset ratkaisevat suojatun etätietokoneen ongelman käyttämällä etätietokoneen luotettavaa laitteistoa. Laitteen aitous varmistetaan sertifiointiprosessin aikana. Luotettu laitteisto luo "suojatun alueen" ja etälaskentapalvelun käyttäjä voi ladata tarvittavan koodin ja datan tälle "alueelle". Luotettava laitteisto suojaa tietojen luottamuksellisuutta ja eheyttä suoritettaessa sille laskelmia [5] .

Tavoitteet

Intel SGX:n kehitys noudatti 8 päätavoitetta [6] :

Laitteen tiedot

SGX varaa muistialueen, jota kutsutaan prosessorin varatuksi muistiksi (PRM). Prosessori suojaa PRM:ää kaikilta ei-enklaavimuistin käytöiltä, ​​mukaan lukien ytimen, hypervisorin ja System Management Mode (SMM) -pääsy sekä oheislaitteiden DMA -käyttö [5] [7] .

PRM sisältää Enclave Page Cache (EPC) -välimuistin, joka koostuu 4 kilotavun sivuista, jotka tallentavat enclave-koodia ja dataa. Epäluotettava järjestelmäohjelmisto on vastuussa EPC-sivujen osoittamisesta erillisalueille. CPU seuraa kunkin EPC-sivun tilaa Enclave Page Cache Metadata (EPCM) -metadatassa varmistaakseen, että jokainen EPC-sivu kuuluu vain yhteen erillisalueeseen [7] .

Enklaaven lähdekoodi ja tiedot ladataan epäluotettavalla järjestelmäohjelmistolla. Käynnistysvaiheen aikana järjestelmäohjelmisto pyytää CPU:ta kopioimaan tiedot suojaamattomasta muistista (PRM:n ulkopuolelta) EPC-sivuille ja määrittää sivut asennettavalle erillisalueelle. Tästä seuraa, että enklaavin alkutila on järjestelmäohjelmiston tiedossa [5] [7] .

Kun kaikki erillisalueen sivut on ladattu EPC:hen, järjestelmäohjelmisto pyytää CPU:ta merkitsemään erillisalueen alustetuksi, minkä jälkeen sovellusohjelmisto voi suorittaa koodin erillisalueen sisällä. Kun erillisalue on alustettu, edellä kuvattu latausmenetelmä [5] [7] on kielletty .

Kun erillisalue latautuu, salaustiiviste lasketaan sen sisällön perusteella. Kun erillisalue on alustettu, hajautusprosessi on valmis ja tuloksena olevasta hashista tulee erillisalueen mittaustiiviste [8] .

Etäosapuoli voi käydä läpi todistusprosessin varmistaakseen, että se kommunikoi erillisalueen kanssa, jolla on tietty varmennushajautus ja joka toimii suojatussa ympäristössä [9] .

Suoritussäie voi päästä enklaaviin vain erityisten CPU-käskyjen kautta, jotka ovat samanlaisia ​​kuin mekanismi, jolla vaihdetaan käyttäjätilasta ydintilaan. Enclave-suoritus tapahtuu aina suojatussa tilassa, renkaalla 3 ja käyttää käyttöjärjestelmän ytimen ja hypervisorin määrittämää osoitekäännöstä [5] [7] .

Arkaluontoisten tietojen vuotamisen välttämiseksi suoritin ei tarjoa palvelukeskeytyksiä (kuten sivuvirhe ) tai virtuaalikoneen poistumista ( vmexit ), kun enklaavikoodia suoritetaan. Sen sijaan suoritin suorittaa ensin AEX (Asynchronous Enclave Exit) -toiminnon vaihtaakseen enklaavikoodista soittokoodiin ja palvelee sitten keskeytyksen tai virtuaalikoneen poistumisen. CPU suorittaa AEX:n, tallentaa tilansa ennalta määrätylle alueelle erillisalueen sisällä ja siirtää ohjauksen ennalta määrättyyn ohjeeseen erillisalueen ulkopuolella korvaamalla CPU-rekisterit synteettisillä arvoilla [5] [7] .

EPC-sivujen varaaminen erillisalueille on delegoitu käyttöjärjestelmän ytimelle (tai hypervisorille). Käyttöjärjestelmä välittää muistinvarauspäätöksensä SGX-toteutukseen erityisten CPU-käskyjen avulla.Käyttöjärjestelmä voi myös vaihtaa EPC-sivuja epäluotettavaan RAM-muistiin ja ladata ne sitten takaisin erityisten prosessoriohjeiden avulla [5] .

SGX käyttää Memory Encryption Engine (MEE) -salausta varmistaakseen ladattujen EPC-sivujen luottamuksellisuuden, eheyden ja tuoreuden, kun ne on tallennettu epäluotettavaan muistiin [5] . MME toimii muistinhallintayksikön laajennuksena ja salaa automaattisesti kaiken prosessorista muistiin siirretyn tiedon [10] .

Sovellussuunnittelu

Sovellussuunnittelu Intel SGX:llä edellyttää, että sovellus jaetaan kahteen osaan [9] :

Luotettu bean tulisi rajoittaa vain tietoihin, jotka tarvitsevat eniten suojaa, ja toimintoihin, jotka tarvitsevat vuorovaikutusta sen kanssa. Suuri erillisalue, jossa on monimutkainen käyttöliittymä, ei vain kuluta enemmän suojattua muistia, vaan se myös lisää hyökkäyspintaa. Enklaaveilla tulisi myös olla mahdollisimman vähän vuorovaikutusta luotettujen komponenttien välillä. Vaikka erillisalueet voivat kutsua toimintoja epäluotetussa komponentissa (käyttäen erityistä ohjetta), tällaisten kutsujen rajoittaminen vahvistaa erillisaluetta hyökkäyksiltä [9] [8] .

Sertifiointi

Intel SGX -arkkitehtuurissa todistus on enklaavitodennusprosessi. On olemassa kaksi todistusmekanismia [9] :

Paikallinen todistus

Paikallinen todistus on hyödyllinen, kun sovelluksessa on useampi kuin yksi erillisalue, joiden on toimittava yhdessä, tai kun kahden sovelluksen on kommunikoitava erillisalueiden välillä [9] .

Kahden erillisalueen välisessä todistusprosessissa kunkin erillisalueen on ensin varmistettava, että toinen on luotettava. Enklaavi todentaa itsensä toiselle kohdealueelle EREPORT-käskyn avulla. Tämä SGX-käsky luo todistusraportin (REPORT), joka yhdistää salaussanoman salaustietoihin enklaavin tiivisteen ja varmenteiden perusteella. Kryptografinen sidonta suoritetaan käyttämällä erityistä tunnistetta, joka on laskettu käyttämällä symmetristä avainta, joka on vain kohdeenklaavin ja SGX-toteutuksen käytettävissä [5] .

Enklaavit voivat sitten muodostaa suojatun istunnon käyttämällä Diffie-Hellman-protokollaa istuntoavaimen vaihtamiseksi. Tätä istuntoavainta voidaan käyttää kahden erillisalueen välillä jaettavien tietojen salaamiseen [9] .

Koska yksi erillisalue ei pääse käsiksi toisen erillisalueen suojattuun muistitilaan, vaikka ne kuuluisivat samaan sovellukseen, kaikkien osoittimien viittaukset on poistettava ja tiedot on siirrettävä suoraan erillisalueiden välillä [9] .

Etätodistus

Sertifiointiprosessi on seuraava. SGX-yhteensopiva prosessori laskee tiivisteen koodista ja tiedoista jokaisessa erillisalueessa. Enklaaven sisällä oleva ohjelmisto aloittaa SGX-todistusallekirjoituksen laskemisen, joka sisältää erillisalueen hashin ja erillissanoman [8] .

SGX-todistuksen allekirjoituksessa käytetty kryptografinen primitiivi on liian monimutkainen laitteistossa toteutettavaksi, joten allekirjoitusprosessi suoritetaan etuoikeutetulla lainausselvityksellä, jonka Intel tarjoaa pääsyn SGX-todistusavaimeen, joka on jokaiselle alustalle ainutlaatuinen laitteiston epäsymmetrinen avain. SGX-todistusavainta ei ollut olemassa, kun prosessori luotiin. Se julkaistaan ​​myöhemmin käyttämällä Intelin tarjoamaa Provisioning Enclavea [5] .

Koska allekirjoitus lasketaan Qoting Enclavessa, ohjelmistotarkistuksen kohteena olevan erillisalueen ja lainausenklaaven välillä tarvitaan suojattu viestintäkanava. Tämä ongelma ratkaistaan ​​käyttämällä paikallista todistusmekanismia [5] .

Jos etäpalvelin toteaa, että erillisalue on luotu oikein ja että se toimii aidolla Intel SGX -yhteensopivalla prosessorilla, se voi nyt luottaa erillisalueeseen ja välittää salaisuudet sille luotettavan kanavan kautta [9] .

Turvallisuus

Etälaskennassa järjestelmäohjelmisto lataa erillisen sisällön tietokoneelle, joten se ei saa sisältää salaisuuksia selkeästi. Alustamisen jälkeen suoritetaan todistusprosessi, jossa erillisalue todennetaan etäpalvelinta vastaan. Onnistuneen todennuksen jälkeen etäpalvelimen odotetaan paljastavan joitain salaisuuksia erillisalueelle suojatun viestintäkanavan kautta. Intel SGX -suunnittelu pyrkii varmistamaan, että todistusprosessin aikana laskettu hash kuvastaa tarkasti erillisalueelle ladattua sisältöä [8] .

SGX tarjoaa myös varmenteisiin perustuvan tunnistusjärjestelmän. Sitä käytetään salaisuuksien vaihtamiseen erillisalueiden välillä, joilla on saman varmenteen myöntäjän myöntämät sertifikaatit. Vaihtoprosessi sisältää salaisuuksien salaamisen ennen niiden välittämistä epäluotettavalle järjestelmäohjelmistolle, joka sitten siirtää ne toiseen erillisalueeseen [5] [8] .

Samaa mekanismia voidaan käyttää välimuistiin todennusprosessin aikana hankituille salaisuuksille epäluotettaville tallennusvälineille, joita järjestelmäohjelmisto hallitsee. Tämä välimuisti voi vähentää todistusprosessien määrää hajautetussa järjestelmässä [5] .

Prime+Probe Attack

Grazin teknillisen yliopiston tutkijat kehittivät 27. maaliskuuta 2017 prototyypin, joka pystyy hankkimaan RSA -avaimia samassa järjestelmässä toimivista SGX-enklaaveista [11] [12] ajastetun hyökkäyksen avulla viiden minuutin sisällä . Daniel Gruss et al. esitteli ja julkaisi yhden vastatoimenpiteen tämäntyyppistä hyökkäystä vastaan. USENIX Security Symposiumissa vuonna 2017 [13] . Muiden 28. syyskuuta 2017 julkaistujen vastatoimien joukossa oli DR.SGX-apuohjelma. DR.SGX:n väitetään olevan ylivoimainen suorituskyky, vaikka se on paljon helpompi toteuttaa kuin muut ehdotetut ratkaisut [14] .

Aavehyökkäykset

Lontoon Imperial Collegen LSDS-ryhmä osoitti, että spekulatiivista Spectre -tietoturvahaavoittuvuutta voitaisiin mukauttaa hyökkäämään erillisaluetta vastaan ​​[15] . Foreshadow - hyökkäys , joka paljastettiin elokuussa 2018, yhdistää spekulatiivisen toteutuksen ja puskurin ylivuodon SGX:n ohittamiseksi [16] .

Enclave Attack

Grazin teknillisen yliopiston tutkijat julkaisivat 8. helmikuuta 2019 tutkimustuloksia, jotka osoittivat, että joissakin tapauksissa on mahdollista ajaa haitallista koodia erillisalueelta [17] . Asiakirja väittää, että erillisalueen luottamuksellisen ja suojatun luonteen vuoksi virustorjuntaohjelmisto ei pysty havaitsemaan ja poistamaan siinä olevia haittaohjelmia. Koska nykyaikaiset virustorjuntaratkaisut kuitenkin valvovat järjestelmäkutsuja ja sovellusten vuorovaikutusta käyttöjärjestelmän kanssa, haitalliset erillisalueet pitäisi olla mahdollista tunnistaa niiden käyttäytymisen perusteella. Intel julkaisi lausunnon, jossa todettiin, että tämä hyökkäys oli SGX-uhkamallin ulkopuolella, että he eivät voineet taata, että käyttäjän suorittama koodi tulee luotettavista lähteistä, ja kehotti kuluttajia käyttämään vain luotettua koodia [18] .

Platypus Attack

Grazin yliopiston tutkijat Itävallassa ovat havainneet uuden vaarallisen haavoittuvuuden, joka perustuu CPU-jännitteen mittaamiseen ja jonka avulla AES- ja RSA-avaimet voidaan poimia suojatusta SGX-alueesta. Tämä ominaisuus on ollut kaikissa Intel-prosessoreissa Sandy Bridgestä lähtien, jossa Northbridge -toiminnot on korvattu kokonaan prosessorin suuttimeen integroidulla järjestelmäagentilla. Haavoittuvuus hyödyntää RAPL (Running Average Power Limit) -järjestelmän kykyä hankkia yksityiskohtaisia ​​arvioita ytimen, järjestelmäagentin ja DRAM:n virrankulutuksesta, joka ei vaadi etuoikeutettua pääsyä [19] . Haavoittuvuuden torjumiseksi Intel julkaisi mikrokoodikorjauksen (INTEL-SA-0389 [20] ).

Muistiinpanot

  1. Simon Johnson. Intel® SGX -muistin  salausmoottori . software.intel.com (26. helmikuuta 2016). Käyttöpäivä: 7. joulukuuta 2019. Arkistoitu alkuperäisestä 7. joulukuuta 2019.
  2. McKeen, Frank & Alexandrovich, Ilja & Anati, Ittai & Caspi, Dror & Johnson, Simon & Leslie-Hurd, Rebekah & Rozas, Carlos. Intel® Software Guard Extensions (Intel® SGX) Tuki dynaamiseen muistin hallintaan erillisalueessa. // Konferenssi: tietoturvan ja yksityisyyden laitteisto- ja arkkitehtuurituki. – 2016.
  3. Intel kielsi uusien prosessorien omistajia katsomasta lisensoituja elokuvia 4K-levyiltä . Arkistoitu 18. tammikuuta 2022 Wayback Machinessa // CNews , 17. tammikuuta 2022
  4. Michael Naehrig, Kristin Lauter ja Vinod Vaikun-tanathan. Voiko homomorfinen salaus olla käytännöllistä?  // Cloud computing -tietoturvatyöpajan 3. ACM-työpajan aineisto. - 2011. - S. 113-124 . Arkistoitu alkuperäisestä 22.9.2020.
  5. ↑ 1 2 3 4 5 6 7 8 9 10 11 12 13 Victor Costan ja Srinivas Devadas. Intel SGX Explained  // Tietojenkäsittelytieteen ja tekoälyn laboratorio Massachusetts Institute of Technology. Arkistoitu 4. toukokuuta 2020.
  6. Matthew H. Intel® SGX for Dummies (Intel® SGX Design Objectives  ) . software.intel.com (2013-26-09). Haettu 7. joulukuuta 2019. Arkistoitu alkuperäisestä 29. huhtikuuta 2014.
  7. ↑ 1 2 3 4 5 6 Alexandre Adamski. Intel SGX - Osa 1, SGX Internals -katsaus (5. heinäkuuta 2018). Haettu 24. joulukuuta 2019. Arkistoitu alkuperäisestä 24. joulukuuta 2019.
  8. ↑ 1 2 3 4 5 Ittai Anati, Shay Gueron, Simon P Johnson, Vincent R Scarlata. Innovatiivinen teknologia CPU-pohjaiseen sertifiointiin ja sinetöintiin  // Intel Corporation. - 2013. Arkistoitu 24. joulukuuta 2019.
  9. ↑ 1 2 3 4 5 6 7 8 John M., Benjamin O. Intel® Software Guard Extensions -opastussarja : Osa 1, Intel® SGX Foundation  . software.intel.com (7. heinäkuuta 2016). Käyttöpäivä: 7. joulukuuta 2019. Arkistoitu alkuperäisestä 7. joulukuuta 2019.
  10. Shay Gueron. [ https://eprint.iacr.org/2016/204.pdf Muistin salausmoottori, joka sopii yleiskäyttöisiin prosessoreihin] // Cryptology ePrint Archive. - 2016. Arkistoitu 15. kesäkuuta 2020.
  11. Schwarz, Michael; Weiser, Samuel; Gruss, Daniel; Maurice, Clémentine & Mangard, Stefan (2017), Malware Guard Extension: SGX:n käyttö välimuistihyökkäysten salaamiseen, arΧiv : 1702.08719 [cs.CR]. 
  12. Richard Chirgwin . Boffins osoittaa, että Intelin SGX voi vuotaa kryptoavaimia , The Register (7. maaliskuuta 2017). Arkistoitu alkuperäisestä 11. heinäkuuta 2019. Haettu 1.5.2017.
  13. Daniel Gruss, Julian Lettner, Felix Schuster, Olya Ohrimenko, Istvan Haller ja Manuel Costa. Vahva ja tehokas välimuistin sivukanavasuojaus laitteiston tapahtumamuistilla . USENIX (16. elokuuta 2017). Haettu 7. joulukuuta 2019. Arkistoitu alkuperäisestä 27. heinäkuuta 2020.
  14. Brasser, Ferdinand; Capkun, Srdjan; Dmitrienko, Aleksandra; Frassetto, Tommaso; Kostiainen, Kari; Müller, Urs & Sadeghi, Ahmad-Reza (28.09.2017), DR.SGX: SGX-enklaavien kovettaminen välimuistihyökkäystä vastaan ​​tietojen sijainnin satunnaistamisella, arΧiv : 1709.09917 [cs.CR]. 
  15. Dan O'Keeffe, Divya Muthukumaran, Pierre-Louis Aublin, Florian Kelbert, Christian Priebe, Josh Lind, Huanzhou Zhu ja Peter Pietzuch. SGXSpecter . Haettu 7. joulukuuta 2019. Arkistoitu alkuperäisestä 7. toukokuuta 2020.
  16. Peter Bright - 10. heinäkuuta 2018 klo 21.00 UTC. Uusi Spectre-tyyppinen hyökkäys käyttää spekulatiivista suoritusta puskureiden ylivuotamiseen . Ars Technica (10. heinäkuuta 2018). Haettu 2. marraskuuta 2018. Arkistoitu alkuperäisestä 23. marraskuuta 2018.
  17. Schwarz, Michael; Weiser, Samuel & Gruss, Daniel (2019-02-08), Practical Enclave Haittaohjelma Intel SGX:n kanssa, arvo : 1902.03256 [cs.CR]. 
  18. Bright, Peter Tutkijat käyttävät Intel SGX:tä haittaohjelmien siirtämiseen  virustorjuntaohjelmistojen ulottumattomiin  ? . Ars Technica (12. helmikuuta 2019). Haettu 15. helmikuuta 2019. Arkistoitu alkuperäisestä 15. helmikuuta 2019.
  19. Gennadi Detinich. Platypus-hyökkäys: Intelin prosessorin kulutusanturit osoittautuivat tietoturva-aukoksi . 3dnews.ru (11. marraskuuta 2020). Haettu 11. marraskuuta 2020. Arkistoitu alkuperäisestä 11. marraskuuta 2020.
  20. ↑ 2020.2 IPU - Intel® RAPL Interface Advisory  . www.intel.com (10. marraskuuta 2020). Haettu 11. marraskuuta 2020. Arkistoitu alkuperäisestä 10. marraskuuta 2020.

Linkit