Encryptie van RAM bij Intel en AMD

Marco den Teuling
0
Albert Hulm © Albert Hulm

Inhoudsopgave

De Epyc-processors van AMD voor servers kunnen het RAM versleutelen om veiligheidsrisico’s te beperken. Intel komt met een soortgelijke technologie en biedt in elk geval al versleuteling van bepaalde RAM-gebieden met de Software Guard Extensions (SGX). We gaan in op de verschillende soorten RAM-encryptie en de beveiliging die ze bieden.

De meest recente serverprocessors van AMD en Intel hebben nieuwe functies om data te beschermen tegen aanvallen. Ze versleutelen het hele of een deel van het werkgeheugen. Zelfs administrators 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 softwarematige aanvallen te beperken.

Zelfs als een systeem is besmet door malware, moeten vertrouwde bewerkingen uitgevoerd kunnen worden in versleutelde gebieden. Daarmee gaat RAM-versleuteling verder dan de al bekende veiligheidsmaatregelen, zoals gescheiden geheugenadresdelen. De beperkingen 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-versleutelde harde schijf. In kritieke omgevingen zijn harde schijven dan ook altijd versleuteld. Een aanvaller heeft behalve een kopie van de schijf dan ook nog de sleutel nodig. En die is alleen te achterhalen als het betreffende 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 werkgeheugen (RAM) geen stroomtoevoer meer heeft, verdwijnt de inhoud ervan niet meteen. De geheugencellen keren pas na enkele seconden tot minuten terug naar hun uitgangstoestand. Dat effect kan nog duidelijk verlengd worden door de geheugenmodules te koelen met een koudespray. Als een aanvaller dus toegang krijgt tot een draaiend systeem, kan hij mogelijk de inhoud van het werkgeheugen in handen krijgen. Daarvoor zou hij bijvoorbeeld het systeem kunnen herstarten met een speciaal mini-besturingssysteem waarmee de inhoud van het RAM wordt gekopieerd naar een (ander) usb-medium.

Encryptie RAM versleuteling werkgeheugen cold boot attack

In 2008 demonstreerden onderzoekers 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 de DRAM-modules.

Er zijn nog meer manieren om de inhoud van DRAM-chips uit te lezen, bijvoorbeeld via gehackte PCI-Expresskaarten en Thunderbolt-randapparatuur met DMA (Direct Memory Access). Nog een risico zijn niet-vluchtige geheugenmodules, bijvoorbeeld NVDIMM’s met Flash-‘parachute’ tegen stroomuitval of de nieuwe 3D-XPoint-geheugenmodules van Intel. Dergelijk ‘niet-vluchtig’ geheugen kan in een tweede systeem worden uitgelezen, zelfs als het oorspronkelijke systeem is afgesloten. Bij al deze voorbeelden kan RAM-versleuteling de gegevensbescherming verbeteren.

Aanvallen van binnenuit

De nieuwe hardware-uitbreidingen, met name Intel SGX, moeten ook beschermen tegen potentieel gevaarlijke processen met verhoogde privileges (toegangsrechten) en zelfs tegen een gecompromitteerd besturingssysteem. Twee toepassingen liggen daarbij voor de hand. SGX zou bijvoorbeeld gebruikt kunnen worden bij Digital Rights Management (DRM) om bepaalde data of software voor de gebruiker te verbergen. De tweede toepassing betreft gehuurde clouddiensten, bijvoorbeeld virtuele machines die in een datacenter worden gehuurd, waarbij gevoelige data of geheime programmacode wordt verwerkt.

Encryptie RAM versleuteling werkgeheugen server AMD Intel server cloud beveiliging

In het tot 4 TB grote RAM-geheugen van moderne cloudservers draaien gelijktijdig duizenden virtuele machines: RAM-versleuteling beveiligt daarbij gevoelige data.

Voor DRM wordt SGX al ingezet, bijvoorbeeld 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 filmmateriaal wordt daarbij alleen gebruikt in een versleuteld SGX-geheugengebied. Het besturingssysteem en de actieve programma’s kunnen dat niet uitlezen. De gedecodeerde videostream 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 onderschept, omgeleid of op de harde schijf worden opgeslagen.

Bij cloud-databeveiliging 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 clouddiensten als Amazon AWS, Google Cloud en Microsoft Azure hebben de betreffende administrators in principe de mogelijkheid om alle data uit het servergeheugen te lezen. Maar als dit werkgeheugen met de hardwarefuncties van de processor versleuteld is, kan de cloudaanbieder dan oprecht zeggen dat de gebruikersgegevens en programmacode niet gemanipuleerd of uitgelezen kunnen worden. Een klant van de cloudaanbieder hoeft dan niet meer alleen te vertrouwen op diens woord – maar wel op de werking van AMD’s en Intels versleuteling.

Oudere maatregelen

Er waren nog geen hardware-extensies voor standaardprocessors om bescherming te bieden tegen fysieke aanvallen of aanvallers met verhoogde privileges. Processors van AMD en Intel beschikken met AES-NI al langer over een instructieset om encryptie te implementeren, maar die is vooral bestemd voor het versnellen van AES-algoritmes. Daar bovenop komt de Trusted Platform Module, een soort vastgesoldeerde smartcard die als vertrouwensanker dient.

TPM biedt in wezen drie basisbewerkingen: binding, sealing en remote attestation. Binding maakt het mogelijk om data en code zo te versleutelen dat ze alleen op hetzelfde apparaat ontsleuteld kunnen worden. Sealing werkt vergelijkbaar met binding, maar betrekt daarbij ook de platformconfiguratie, zoals de BIOS-instellingen, het actieve besturingssysteem en geopende programma’s. Alleen als alles hetzelfde is als op het moment van sealen, kunnen de data weer ontgrendeld worden. Bij remote attestation kan een derde partij, bijvoorbeeld een softwareproducent, de huidige platformconfiguratie controleren. Code of data worden alleen vrijgegeven als het systeem zich in een goedgekeurde status bevindt. Remote attestation kan bijvoorbeeld gebruikt worden om notebooks alleen toegang te geven tot een bedrijfs-VPN als daarop bepaalde (antivirus)software is geïnstalleerd.

Een bekende toepassing van TPM’s is ook het beveiligen van het bootproces tegen manipulatie (Measured Launch). Daarbij bewaart de TPM hashwaarden voor de firmware en bootloader in een beveiligd geheugengebied, de Platform Configuration Registers. Bovendien kan de Windows-schijfversleuteling BitLocker een TPM gebruiken om de sleutel te sealen. De gegevens op de harde schijf of ssd kunnen dan niet meer worden ontsleuteld als je de schijf op een ander systeem aansluit.

Een groot nadeel van TPM is echter dat alle bewerkingen vertrouwen op een enkel, onveranderlijk vertrouwensanker. Bovendien moet bij TPM naar de complete configuratie van een systeem worden gekeken om de vertrouwenswaardigheid te bepalen. Behalve de al genoemde Measured Launch gaat het dan ook om hashes voor alle componenten van het besturingssysteem, voor alle drivers en elk geladen programma. TPM is daardoor niet geschikt voor DRM of het scenario met cloudaanbieders omdat of de klant of de fabrikant de complete softwarestack moet beheren. TPM kan ook niet beschermen tegen fysieke aanvallen op het werkgeheugen omdat de actieve programma’s en gebruikte gegevens niet-versleuteld in het werkgeheugen 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 overschakelen naar vertrouwde TXT-software in principe een cpu-reset nodig is, wat nadelig is voor de performance.

TrustZone bij AMD

Cpu-ontwikkelaar ARM heeft een andere aanpak gekozen voor het beveiligen van data op mobiele apparaten zoals smartphones. 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 besturingssysteem 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 systeemaanroep in het besturingssysteem geïntegreerd.

De scheiding bij ARM TrustZone is meer dan alleen softwarematig. Een ‘secure bit’ op de interne bus van de chipset zorgt ervoor dat bepaalde componenten en aanvullende chips alleen vanuit de Secure World bereikbaar zijn. Zo kan een vingerafdruklezer worden gebruikt om het hele aanmeldproces af te handelen in de beveiligde zone.

TrustZone zit in alle vanaf 2014 geïntroduceerde AMD-processors in de vorm van een ingebedde ARM Cortex A5-core met TrustZone. Daarop draait een minisysteem dat bijvoorbeeld TPM-functies biedt (firmware-TPM 2.0, fTPM 2.0). AMD noemt dat de Platform Security Processor (PSP) oftewel Secure Processor. Samsung gebruikt TrustZone bijvoorbeeld bij zijn Android-smartphones voor de beveiligingsfunctie Samsung Knox.

Afgezien van dat soort toepassingen, waarbij TrustZone wordt ingezet voor propriëtaire software, wordt TrustZone zelden gebruikt. Ten eerste is er geen eenvoudige SDK voor, ten tweede is de werking van TrustZone afhankelijk van de concrete implementatie in de betreffende ARM-SoC. Er is bovendien ook geen mogelijkheid om meerdere Secure Worlds gelijktijdig te gebruiken. Daar is een speciaal besturingssysteem voor vereist dat de verschillende veilige toepassingen beheert. Dat vergroot echter ook de complexiteit van de code en de aanvalsmogelijkheden. Tot slot kan TrustZone niet het hoofdgeheugen versleutelen en daardoor dus niet beschermen tegen fysieke aanvallen.

ARM TrustZone

TrustZone verdeelt het systeem in een onbeveiligde en een beveiligde zone. Die laatste vormt een Trusted Execution Environment (TEE). Externe chips (zoals een vingerafdruksensor) kunnen alleen veilig aan die beveiligde zone worden gekoppeld. Om meerdere applicaties te draaien, is een ‘Secure OS’ nodig dat dit beheert. Een ‘normale’ app kan alleen beveiligde functies gebruiken via nauwkeurig gedefinieerde software-interfaces (Monitor Calls).

Encryptie RAM versleuteling werkgeheugen server AMD Intel ARM TrustZone

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 inschakelen. Met SGX is het mogelijk om vertrouwensankers 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 adresruimte van een proces en worden desondanks door hardwaremechanismen beschermd tegen software met verhoogde privileges. Code in een SGX-enclave wordt bovendien met hoge performance uitgevoerd.

De processor genereert de geheime sleutel voor de encryptie bij elke systeemstart opnieuw. Die verlaat de cpu niet en is dus ook niet uit te lezen. Elke cpu met SGX heeft twee ‘ingebrande’ (fused) individuele en willekeurige 128-bit sleutels. Via de Root Provisioning Key, die Intel in een database bewaart, kan worden gecontroleerd dat de processor daadwerkelijk bestaat. En van de Root Seal Key, die Intel niet bewaart, kan een SGX-enclave sealing-sleutels afleiden om versleutelde data buiten de enclave te beveiligen.

Een SGX-applicatie bestaat doorgaans uit een onbeveiligd deel en een in de enclave draaiend, beveiligd deel. Voordat een programma een enclave kan gebruiken, moet het die eerst maken. Alle daarvoor benodigde bewerkingen vereisen privileges en kunnen dus alleen in de kernelmodus (Ring 0) worden gebruikt. Daarom is behalve een voor SGX geschikte cpu ook een speciale driver nodig, die vanaf Windows 10 en als Linux-kernelmodule beschikbaar is.

Doorlezen is gratis, maar eerst even dit:

Dit artikel is met grote zorg samengesteld door de redactie van c’t magazine – het meest toonaangevende computertijdschrift van Nederland en België. Met zeer uitgebreide tests en praktische workshops biedt c’t de diepgang die je nergens online vindt.

Bekijk de abonnementen   Lees eerst verder

Om een enclave te gebruiken, wordt de lay-out van de enclave eerst opgezet met niet vertrouwenswaardige code. Vervolgens communiceert de applicatie met de driver om de enclave uit te ‘meten’. Daarbij worden de geheugenlay-out en de inhoud ervan gehast en de geheugenbescherming geactiveerd.

Daarna kunnen het programma en de software niet met hogere privileges in de enclave kijken – oftewel gegevens uitlezen. Voor communicatie 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 systeemaanroep beveiligt de processor daarbij register- en stackinhoud, zodat geen beschermde gegevens uit de enclave naar de applicatie doorglippen. Een typische enclave biedt een aantal functies en kan vanuit de applicatie met parameters worden aangeroepen om een waarde terug te leveren.

Theoretisch kunnen willekeurige functies worden geïmplementeerd in een SGX-enclave. Maar er zijn praktische grenzen aan het programmeren voor enclaves. Zo zijn systeemaanroepen vanuit een enclave verboden, die moeten worden uitgevoerd door het onbeveiligde 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 beperkingen kan bestaande code vaak moeilijk geporteerd worden naar enclaves, maar moet de betreffende functie speciaal voor SGX geschreven worden.

Als een enclave eenmaal gestart is, is hij beschermd tegen toegang van buitenaf – ook door de virusscanner. Om te verhinderen dat schadelijke software zich via SGX in het systeem nestelt, moet een derde vertrouwenswaardige partij de lay-out van de enclave eerst controleren. Dat kan door externe controle (Remote Attestation) van cryptografische meetwaarden die de hardware bij het initialiseren bepaalt. Daar is een Attestation-server van Intel voor nodig.

Wie SGX-code ontwikkelt, moet die signeren met een door Intel gecertificeerde ontwikkelaarssleutel, zodat de processor de code uitvoert. Alleen bij het debuggen is dat niet vereist. Intel stelt daarbij hoge eisen aan bedrijven, die onder andere aantoonbare maatregelen moeten treffen om hun geheime sleutel te beschermen, bijvoorbeeld met een Hardware Security Module (HSM). Daardoor is het aantal mogelijke ontwikkelaars voor SGX beperkt. Bovendien beslist Intel mee welke software überhaupt mag draaien. Er zijn daarnaast Spectre-aanvallen op SGX-enclaves bekend geworden. Doordat het besturingssysteem 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 aanvalsmogelijkheden.

Intel SGX

Op computers met Intel Software Guard Extensions (SGX) kunnen programmeurs een beveiligd geheugenbereik inrichten in het normale werkgeheugen. Deze maximaal 128 MB grote SGX-enclave is versleuteld. De integriteit wordt gecontroleerd middels hashes en verificatie door een externe Attestation Server.

Encryptie RAM versleuteling werkgeheugen server AMD Intel SGX enclave schema diagram

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 toepassingsscenario’s. Secure Memory Encryption (SME) is beschikbaar op business-pc’s en -notebooks met AMD Ryzen Pro en beschermt tegen fysieke aanvallen als de cold-boot-attack. Secure Encrypted Virtualization (SEV) bij serverprocessor AMD Epyc richt zich op cloudproviders, die kunnen voorkomen dat gevoelige klantgegevens uit het RAM gelezen kunnen worden.

RAM-versleuteling en RAM-enclaves

Benaming Functie
Intel SGX (Software Guard Extensions)maakt versleutelde enclaves in RAM: via Remote Attestation krijgt een externe partij
(klant van een cloudaanbieder) garanties over de draaiende software
Intel TME (Total Memory Encryption)versleutelt het gehele RAM transparant
Intel MKTME (Multi-Key Total Memory Encryption)versleutelt RAM-gedeelten die een hypervisor aangeeft
AMD SME (Secure Memory Encryption)versleutelt het gehele RAM transparant
AMD SEV (Secure Encrypted Virtualization)versleutelt RAM-gedeelten die een hypervisor aangeeft
ARM TrustZoneverdeelt een systeem in een beveiligde en onbeveiligde ‘wereld’

We gaan uitgebreider in op SME en SEV, en Intels ‘tegenhangers’ TME en MKTME in het juli-nummer van c’t magazine. Je kunt ook informatie van AMD en Intel bekijken die betrekking heeft op dit onderwerp.

Meer hierover in c't jul-aug/2018

Deel dit artikel

Marco den Teuling
Marco den TeulingHad als eerste eigen computer ooit een 16-bit systeem, waar van de 48 kilobyte toch echt niet ‘genoeg voor iedereen’ was. Sleutelt graag aan pc’s, van de hardware tot het uitpluizen van de BIOS-instellingen. Vindt ‘Software as a Service’ een onbedoeld ironische naamgeving.

Lees ook

Dit kun je verwachten als je ChatGPT als hacking-tool wilt gebruiken

Kun je ChatGPT gebruiken als hacking-tool? We neigden naar de duistere kant en onderzochten of de assistentie van een AI van elke scriptkiddie een eli...

Raspberry Pi GPIO pinnen: een overzicht van de aansluitingen

Een kleine Raspberry Pi board is zo volgepakt met alle componenten dat er geen ruimte meer over was om de 40 GPIO pinnen van informatie te voorzien. O...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er