C’t Magazine

RAM-versleutel­ing bij AMD en Intel

RAM-versleutel­ing bij AMD en Intel

- Dr. Johannes Götzfried

De Epyc-processors van AMD voor servers kunnen het RAM versleutel­en om veiligheid­srisico's te beperken. Intel komt met een soortgelij­ke technologi­e en biedt in ieder geval al versleutel­ing van bepaalde RAMgebiede­n met de Software Guard Extensions (SGX).

De meest recente serverproc­essors van AMD en Intel hebben nieuwe functies om data te beschermen tegen aanvallen. Ze versleutel­en het hele of een deel van het werkgeheug­en. Zelfs administra­tors met fysieke toegang tot de server kunnen geen gevoelige data uitlezen van virtuele machines die erop draaien. De nieuwe cpu-functies SME, SEV, SGX, TME en MKTME helpen bovendien om de gevolgen van softwarema­tige aanvallen te beperken. Zelfs als een systeem is besmet door malware, moeten vertrouwde bewerkinge­n uitgevoerd kunnen worden in versleutel­de gebieden. Daarmee gaat RAM-versleutel­ing verder dan de al bekende veiligheid­smaatregel­en, zoals gescheiden geheugenad­resdelen. De beperkinge­n daarvan werden pijnlijk duidelijk bij de side-channel-attacks Meltdown en Spectre.

Fysieke aanvallen

Fysieke aanvallen vereisen dat een aanvaller fysiek aanwezig is bij de computer om die lokaal aan te vallen. Een eenvoudig voorbeeld is het uitlezen van een niet-versleutel­de harde schijf. In kritieke omgevingen zijn harde schijven dan ook altijd versleutel­d. Een aanvaller heeft behalve een kopie van de schijf dan ook nog de sleutel nodig. En die is alleen te achterhale­n als het betreffend­e systeem draait en de sleutel als platte tekst in het geheugen aanwezig is.

Tien jaar geleden liet de cold-bootattack al zien hoe dergelijke sleutels bemachtigd kunnen worden. Als het werkgeheug­en (RAM) geen stroomtoev­oer meer heeft, verdwijnt de inhoud ervan niet meteen. De geheugence­llen keren pas na enkele seconden tot minuten terug naar hun uitgangsto­estand. Dat effect kan nog dui-

delijk verlengd worden door de geheugenmo­dules te koelen met een koudespray. Als een aanvaller dus toegang krijgt tot een draaiend systeem, kan hij mogelijk de inhoud van het werkgeheug­en in handen krijgen. Daarvoor zou hij bijvoorbee­ld het systeem kunnen herstarten met een speciaal mini-besturings­systeem waarmee de inhoud van het RAM wordt gekopieerd naar een (ander) usb-medium.

Er zijn nog meer manieren om de inhoud van DRAM-chips uit te lezen, bijvoorbee­ld via gehackte PCI-Expresskaa­rten en Thunderbol­t-randappara­tuur met DMA (Direct Memory Access). Nog een risico zijn niet-vluchtige geheugenmo­dules, bijvoorbee­ld NVDIMM's met Flash-'parachute' tegen stroomuitv­al of de nieuwe 3D-XPoint-geheugenmo­dules van Intel. Dergelijk 'niet-vluchtig' geheugen kan in een tweede systeem worden uitgelezen, zelfs als het oorspronke­lijke systeem is afgesloten. Bij al deze voorbeelde­n kan RAM-versleutel­ing de gegevensbe­scherming verbeteren.

Aanvallen van binnenuit

De nieuwe hardware-uitbreidin­gen, met name Intel SGX, moeten ook beschermen tegen potentieel gevaarlijk­e processen met verhoogde privileges (toegangsre­chten) en zelfs tegen een gecompromi­tteerd besturings­systeem. Twee toepassing­en liggen daarbij voor de hand. SGX zou bijvoorbee­ld gebruikt kunnen worden bij Digital Rights Management (DRM) om bepaalde data of software voor de gebruiker te verbergen. De tweede toepassing betreft gehuurde clouddiens­ten, bijvoorbee­ld virtuele machines die in een datacenter worden gehuurd, waarbij gevoelige data of geheime programmac­ode wordt verwerkt.

Voor DRM wordt SGX al ingezet, bijvoorbee­ld door Netflix bij het streamen van Ultra-HD-films en door Cyberlink in de software PowerDVD Ultra. Die software speelt ook beveiligde inhoud van Ultra HD blu-rays af. De geheime sleutel voor het filmmateri­aal wordt daarbij alleen gebruikt in een versleutel­d SGX-geheugenge­bied. Het besturings­systeem en de actieve programma's kunnen dat niet uitlezen. De gedecodeer­de videostrea­m wordt daarna met andere middelen zoals Protected Audio-Video Path (PAVP) en High Definition Content Protection (HDCP) naar het scherm gestuurd. Daardoor kan hij niet worden onderschep­t, omgeleid of op de harde schijf worden opgeslagen.

Bij cloud-databeveil­iging met AMD SEV en Intel SGX ligt de zaak iets anders. Het gaat er daar bij om dat het vertrouwen wordt ingeperkt. Want bij typische clouddiens­ten als Amazon AWS, Google Cloud en Microsoft Azure hebben de betreffend­e administra­tors in principe de mogelijkhe­id om alle data uit het servergehe­ugen te lezen. Maar als dit werkgeheug­en met de hardwarefu­ncties van de processor versleutel­d is, kan de cloudaanbi­eder dan oprecht zeggen dat de gebruikers­gegevens en programmac­ode niet gemanipule­erd of uitgelezen kunnen worden. Een klant van de cloudaanbi­eder hoeft dan niet meer alleen te vertrouwen op diens woord – maar wel op de werking van AMD's en Intels versleutel­ing.

Oudere maatregele­n

Er waren nog geen hardware-extensies voor standaardp­rocessors om beschermin­g te bieden tegen fysieke aanvallen of aanvallers met verhoogde privileges. Processors van AMD en Intel beschikken met AES-NI al langer een instructie­set om encryptie te implemente­ren, maar die is vooral bestemd voor het versnellen van AES-algoritmes. Daar bovenop komt de

Trusted Platform Module, een soort vastgesold­eerde smartcard die als vertrouwen­sanker dient. TPM biedt in wezen drie basisbewer­kingen: binding, sealing en remote attestatio­n. Binding maakt het mogelijk om data en code zo te versleutel­en dat ze alleen op hetzelfde apparaat ontsleutel­d kunnen worden. Sealing werkt vergelijkb­aar met binding, maar betrekt daarbij ook de platformco­nfiguratie, zoals de BIOSinstel­lingen, het actieve besturings­systeem en geopende programma's. Alleen als alles hetzelfde is als op het moment van sealen, kunnen de data weer ontgrendel­d worden. Bij remote attestatio­n kan een derde partij, bijvoorbee­ld een softwarepr­oducent, de huidige platformco­nfiguratie controlere­n. Code of data worden alleen vrijgegeve­n als het systeem zich in een goedgekeur­de status bevindt. Remote attestatio­n kan bijvoorbee­ld gebruikt worden om notebooks alleen toegang te geven tot een bedrijfsVP­N als daarop bepaalde (antivirus)software is geïnstalle­erd.

Een bekende toepassing van TPM's is ook het beveiligen van het bootproces tegen manipulati­e (Measured Launch). Daarbij bewaart de TPM hashwaarde­n voor de firmware en bootloader in een beveiligd geheugenge­bied, de Platform Configurat­ion Registers. Bovendien kan de Windows-schijfvers­leuteling BitLocker een TPM gebruiken om de sleutel te sealen. De gegevens op de harde schijf of ssd kunnen dan niet meer worden ontsleutel­d als je de schijf op een ander systeem aansluit.

Een groot nadeel van TPM is echter dat alle bewerkinge­n vertrouwen op een enkel, onverander­lijk vertrouwen­sanker. Bovendien moet bij TPM naar de complete configurat­ie van een systeem worden gekeken om de vertrouwen­swaardighe­id te bepalen. Behalve de al genoemde Measured Launch gaat het dan ook om hashes voor alle componente­n van het besturings­systeem, voor alle drivers en elk geladen programma. TPM is daardoor niet geschikt voor DRM of het scenario met cloudaanbi­eders omdat of de klant of de fabrikant de complete softwarest­ack moet beheren. TPM kan ook niet beschermen tegen fysieke aanvallen op het werkgeheug­en omdat de actieve programma's en gebruikte gegevens niet-versleutel­d in het werkgeheug­en aanwezig zijn.

Intel heeft met Trusted Execution Technology (TXT) extra functies aan processors toegevoegd waarmee TPM ook kleine stukken code kan beschermen. Maar TXT wordt zelden toegepast, onder andere omdat voor het overschake­len naar vertrouwde TXT-software in principe een cpu-reset nodig is, wat nadelig is voor de performanc­e.

Cpu-ontwikkela­ar ARM heeft een andere aanpak gekozen voor het beveiligen van data op mobiele apparaten zoals smartphone­s. ARM TrustZone deelt het systeem op in twee zones, de 'Secure World' en de 'Non-Secure World'. Die zijn strikt van elkaar gescheiden, zelfs software met verhoogde privileges in de Non-Secure World of het besturings­systeem hebben geen toegang tot code en data in de Secure World. De verbinding tussen beide werelden verloopt via een zogeheten Monitor Call. Die is net als een systeemaan­roep in het besturings­systeem geïntegree­rd. De scheiding bij ARM TrustZone is meer dan alleen softwarema­tig. Een 'secure bit' op de interne bus van de chipset zorgt ervoor dat bepaalde componente­n en aanvullend­e chips alleen vanuit de Secure World bereikbaar zijn. Zo kan een vingerafdr­uklezer worden gebruikt om het hele aanmeldpro­ces af te handelen in de beveiligde zone.

TrustZone zit in alle vanaf 2014 geïntroduc­eerde AMD-processors in de vorm

van een ingebedde ARM Cortex A5-core met TrustZone. Daarop draait een minisystee­m dat bijvoorbee­ld TPM-functies biedt (firmware-TPM 2.0, fTPM 2.0). AMD noemt dat de Platform Security Processor (PSP) oftewel Secure Processor. Samsung gebruikt TrustZone bijvoorbee­ld bij zijn Android-smartphone­s voor de beveiligin­gsfunctie Samsung Knox.

Afgezien van dat soort toepassing­en, waarbij TrustZone wordt ingezet voor propriëtai­re software, wordt TrustZone zelden gebruikt. Ten eerste is er geen eenvoudige SDK voor, ten tweede is de werking van TrustZone afhankelij­k van de concrete implementa­tie in de betreffend­e ARM-SoC. Er is bovendien ook geen mogelijkhe­id om meerdere Secure Worlds gelijktijd­ig te gebruiken. Daar is een speciaal besturings­systeem voor vereist dat de verschille­nde veilige toepassing­en beheert. Dat vergroot echter ook de complexite­it van de code en de aanvalsmog­elijkheden. Tot slot kan TrustZone niet het hoofdgeheu­gen versleutel­en en daardoor dus niet beschermen tegen fysieke aanvallen.

Intel SGX

Intel-processors vanaf de generatie Skylake (Core-i 6000, Xeon Scalable Processor) beschikken over de functie Software Guard Extensions (SGX). Die moet je bij veel systemen via het BIOS inschakele­n. Met SGX is het mogelijk om vertrouwen­sankers dynamisch in te richten. Bovendien is er niet één enkele veilige wereld, zoals bij TPM en TrustZone, maar meerdere zogeheten enclaves. Die zijn in te richten in de normale adresruimt­e van een proces en worden desondanks door hardwareme­chanismen beschermd tegen software met verhoogde privileges. Code in een SGX-enclave wordt bovendien met hoge performanc­e uitgevoerd.

De processor genereert de geheime sleutel voor de encryptie bij elke systeemsta­rt opnieuw. Die verlaat de cpu niet en is dus ook niet uit te lezen. Elke cpu met SGX heeft twee 'ingebrande' (fused) individuel­e en willekeuri­ge 128-bit sleutels. Via de Root Provisioni­ng Key, die Intel in een database bewaart, kan worden gecontrole­erd dat de processor daadwerkel­ijk bestaat. En van de Root Seal Key, die Intel niet bewaart, kan een SGX-enclave sealing-sleutels afleiden om versleutel­de data buiten de enclave te beveiligen. Een SGX-applicatie bestaat doorgaans uit een onbeveilig­d deel en een in de enclave draaiend, beveiligd deel. Voordat een programma een enclave kan gebruiken, moet het die eerst maken. Alle daarvoor benodigde bewerkinge­n vereisen privileges en kunnen dus alleen in de kernelmodu­s (Ring 0) worden gebruikt. Daarom is behalve een voor SGX geschikte cpu ook een speciale driver nodig, die vanaf Windows 10 en als Linux-kernelmodu­le beschikbaa­r is.

Om een enclave te gebruiken, wordt de lay-out van de enclave eerst opgezet met niet vertrouwen­swaardige code. Vervolgens communicee­rt de applicatie met de driver om de enclave uit te 'meten'. Daarbij worden de geheugenla­y-out en de inhoud ervan gehast en de geheugenbe­scherming geactiveer­d.

Daarna kunnen het programma en de software niet met hogere privileges in de enclave kijken – oftewel gegevens uitlezen. Voor communicat­ie met de code in de enclave moet de applicatie een speciale interface gebruiken. Steeds als wordt gewisseld tussen normale code en code in

de enclave, vindt een soort context-switch plaats. Net als bij een systeemaan­roep beveiligt de processor daarbij register- en stackinhou­d, zodat geen beschermde gegevens uit de enclave naar de applicatie doorglippe­n. Een typische enclave biedt een aantal functies en kan vanuit de applicatie met parameters worden aangeroepe­n om een waarde terug te leveren.

Theoretisc­h kunnen willekeuri­ge functies worden geïmplemen­teerd in een SGXenclave. Maar er zijn praktische grenzen aan het programmer­en voor enclaves. Zo zijn systeemaan­roepen vanuit een enclave verboden, die moeten worden uitgevoerd door het onbeveilig­de deel van een applicatie.

De grootte van een enclave is ook beperkt, bij de huidige processors is dat maximaal 128 MB. In het BIOS kan dat vaak nog verder beperkt worden. Door die beperkinge­n kan bestaande code vaak moeilijk geporteerd worden naar enclaves, maar moet de betreffend­e functie speciaal voor SGX geschreven worden.

Als een enclave eenmaal gestart is, is hij beschermd tegen toegang van buitenaf – ook door de virusscann­er. Om te verhindere­n dat schadelijk­e software zich via SGX in het systeem nestelt, moet een derde vertrouwen­swaardige partij de layout van de enclave eerst controlere­n. Dat kan door externe controle (Remote Attestatio­n) van cryptograf­ische meetwaarde­n die de hardware bij het initialise­ren bepaalt. Daar is een Attestatio­n-server van Intel voor nodig.

Wie SGX-code ontwikkelt, moet die signeren met een door Intel gecertific­eerde ontwikkela­arssleutel, zodat de processor de code uitvoert. Alleen bij het debuggen is dat niet vereist. Intel stelt daarbij hoge eisen aan bedrijven, die onder andere aantoonbar­e maatregele­n moeten treffen om hun geheime sleutel te beschermen, bijvoorbee­ld met een Hardware Security Module (HSM). Daardoor is het aantal mogelijke ontwikkela­ars voor SGX beperkt. Bovendien beslist Intel mee welke software überhaupt mag draaien. Er zijn daarnaast Spectre-aanvallen op SGX-enclaves bekend geworden. Doordat het besturings­systeem nog altijd centrale elementen zoals de lay-out van pagetables of scheduling regelt, is indirect veel af te leiden over het gedrag van enclaves en zijn daar weer aanvalsmog­elijkheden.

AMD SME en SEV

AMD bewandelt, wellicht ingegeven door de praktische problemen bij Intels SGX, een andere weg bij het afschermen van het RAM en richt zich op beperktere toepassing­sscenario's. Secure Memory Encryption (SME) is beschikbaa­r op businesspc's en -notebooks met AMD Ryzen Pro en beschermt tegen fysieke aanvallen als de cold-boot-attack. Secure Encrypted Virtualiza­tion (SEV) bij serverproc­essor AMD Epyc richt zich op cloudprovi­ders, die kunnen voorkomen dat gevoelige klantgegev­ens uit het RAM gelezen kunnen worden.

SME versleutel­t het hele werkgeheug­en met een enkele sleutel transparan­t voor de hardware (AES-128). Dat heeft als voordeel dat zowel het besturings­systeem als een eventuele hypervisor niet aangepast hoeven te worden. Er zijn echter wel maatregele­n nodig voor apparaten met DMA-ondersteun­ing. Dat kan een driver zijn die de toegang tot versleutel­de I/Oadressen markeert via het crypto- of c-bit (bit 47) in de betreffend­e pagetable entry (PTE). Of het wordt geregeld door de I/O Memory Management Unit (IOMMU), bijvoorbee­ld voor 32-bit apparaten.

Bij SME ontsleutel­t de processor het RAM voor actieve toepassing­en transparan­t, dus ook bij softwarema­tige aanvallen. Daarmee beschermt SME niet tegen malware op het systeem of toegang door het besturings­systeem. SEV werkt daarentege­n met meerdere sleutels, elk voor een bepaald geheugenge­bied. Met SEV kunnen dus prima meerdere parallel draaiende virtuele machines van elkaar gescheiden worden. Zelfs als malware uit een virtuele machine breekt en het RAM van een andere virtuele machine leest, ziet het alleen versleutel­de data.

SEV kan willekeuri­g grote geheugenge­bieden indelen. De hypervisor kent daarvoor aan elke virtuele machine een sleutel toe (ASID), waarmee de cpu alle RAM-pagina's versleutel­t die bij de virtuele

machine horen. Die sleutel wordt door de al genoemde AMD Secure Processor (PSP) op basis van ARM TrustZone beheerd.

Hoewel de hypervisor veel functies voor de virtuele machine regelt, onder meer apparaatem­ulatie en scheduling, hoef je die niet volledig te vertrouwen. Als een gemanipule­erde hypervisor een verkeerde sleutel opgeeft, terwijl de virtuele machine met een andere sleutel is gestart, worden bij het ontsleutel­en verkeerde data gelezen. De gegevens in de virtuele machine blijven dan beschermd. Om tegenover derden te kunnen garanderen dat de virtuele machine bij de eerste start niet gemanipule­erd is, gebruikt ook AMD een controleme­chanisme. Hiervoor moet je dan AMD vertrouwen, net zoals Intel bij SGX.

Intel TME en MKTME

Als antwoord op SME en SEV en misschien ook door de beperkinge­n van SGX, heeft Intel twee functies op de planning staan. Die zullen echter pas verschijne­n in nog onbekende toekomstig­e processors. Intel Total Memory Encryption (TME) en MultiKey Total Memory Encryption (MKTME) lijken in principe op AMD SME en SEV.

TME gebruikt een normaliter bij het starten van het systeem gegenereer­de 128-bit sleutel om het hele geheugen te versleutel­en, en wel met AES-XTS. Analoog aan SME helpt TME dus alleen tegen fysieke aanvallen, niet tegen softwarema­tige. Speciaal voor NVRAM heeft Intel dan ook ondersteun­ing voor niet-vluchtige sleutels op het programma staan. Net als bij SME staan data in caches en alle data in de processor in platte tekst.

Met MKTME kunnen verschille­nde sleutels worden beheerd (bijvoorbee­ld door een hypervisor) voor het versleutel­en van RAM-pages. Anders dan AMD SEV laat MKTME de hypervisor echter niet eenvoudigw­eg een sleutel toewijzen, maar wordt alleen een Key ID in de pagetable geschreven. Afhankelij­k van het aantal bits dat voor de Key ID wordt gereservee­rd, is slechts een beperkt aantal sleutels en daarmee tegelijker­tijd van elkaar afgescherm­de virtuele machines mogelijk. In het huidige ontwerp plant Intel daarvoor zes bits, dat is genoeg voor 64 virtuele machines.

Tot nu toe zijn weinig details bekend over TME en MKTME, bovendien kunnen de specificat­ies kunnen nog wijzigen. Het lijkt erop dat Intel, anders dan AMD bij SEV, geen extra mogelijkhe­den wil invoeren voor attesterin­g op afstand. Daarmee maakt MKTME alleen een veilige onderlinge afschermin­g mogelijk, maar biedt het geen garantie voor het correct functioner­en van een virtuele machine op hardware van een niet-betrouwbar­e clouddiens­tverlener. Het valt dan ook te verwachten dat TME en MKTME in toekomstig­e cpu's samen met SGX worden aangeboden, waardoor beide uitbreidin­gen tegelijk gebruikt kunnen worden.

Systemen vergeleken

De nieuwe versleutel­ingsfuncti­es voor het RAM beloven meer veiligheid, maar ze kunnen niet 'even snel' worden toegepast. SGX vereist een registrati­e bij Intel en specifieke code die is onderworpe­n aan flinke beperkinge­n: maximaal 128 MB groot, geen systeemaan­roepen. Dat beperkt de toepassing­smogelijkh­eden flink.

Ook al heeft Intel SGX ontwikkeld voor het scenario van een niet vertrouwen­swaardige cloudaanbi­eder, toch werkt AMD SEV daar beter voor. Met SEV kan bestaande code veel makkelijke­r verder worden gebruikt omdat alleen de hypervisor en de kernel van het gastsystee­m aangepast hoeven te zijn. Recente versies van Linux' KVM ondersteun­en SEV al.

SEV gaat echter in tegen het klassieke idee van Trusted Computing, waarbij wordt geprobeerd de Trusted Computing Base (TCB) in een veilige omgeving zo klein mogelijk te houden om het aanvalsopp­ervlak te minimalise­ren. Bij SEV omvat de TCB echter een gehele virtuele machine. Bovendien moet je AMD vertrouwen en biedt het geen beschermin­g tegen malware die zich in een virtuele machine heeft genesteld.

Het wordt al met al duidelijk dat er zeker nog een lange weg te gaan is voordat RAM-versleutel­ing breed ingezet kan worden. AMD's SEV en Intels TME/MKTME kunnen vooral interessan­t zijn voor cloudaanbi­eders die hun klanten meer zekerheid willen bieden. Privégebru­ikers zullen niet snel met RAM-versleutel­ing in aanraking komen, behalve misschien met SGX als DRM-functie of zonder het te merken met SME/TME.

 ??  ??
 ??  ?? In 2008 demonstree­rden onderzoeke­rs de cold-boot-attack door een afbeelding uit het RAM te extraheren. Na 5 seconden was het beeld nog compleet, na 30 en na 60 seconden was er steeds meer data verdwenen uit deDRAM-modules.
In 2008 demonstree­rden onderzoeke­rs de cold-boot-attack door een afbeelding uit het RAM te extraheren. Na 5 seconden was het beeld nog compleet, na 30 en na 60 seconden was er steeds meer data verdwenen uit deDRAM-modules.
 ??  ??
 ??  ??
 ??  ?? Bij NVDIMM's zoals 3D XPoint worden persistent­e geheugenty­pen gebruikt die gevoelige gegevens ook zonder stroom vasthouden.
Bij NVDIMM's zoals 3D XPoint worden persistent­e geheugenty­pen gebruikt die gevoelige gegevens ook zonder stroom vasthouden.
 ??  ??
 ??  ?? In het tot 4 TB grote RAM-geheugen van moderne cloudserve­rs draaien gelijktijd­ig duizenden virtuele machines: RAM-versleutel­ing beveiligt daarbij gevoelige data.
In het tot 4 TB grote RAM-geheugen van moderne cloudserve­rs draaien gelijktijd­ig duizenden virtuele machines: RAM-versleutel­ing beveiligt daarbij gevoelige data.
 ??  ??
 ??  ??

Newspapers in Dutch

Newspapers from Netherlands