Bootstrapping Mutual Attestation with Kleene's Second Recursion Theorem
Dit artikel lost de oneindige regressie van wederzijdse attestatie op door de tweede recursietheorema van Kleene toe te passen om knooppunten te construeren die elkaars exacte broncode wederzijds kunnen reconstrueren en verifiëren op basis van ingebouwde gegevens alleen, waardoor de noodzaak voor vertrouwde derde partijen of externe referentiewaarden over verschillende computerarchitecturen heen wordt geëlimineerd.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In de wereld van beveiligde computing is er een fundamentele behoefte om te bewijzen dat een computerprogramma precies is wat het beweert te zijn. Dit proces, bekend als remote attestation (afstandelijke attestatie), is het digitale equivalent van een beveiliger die een rijbewijs controleert voordat hij iemand een beperkt gebouw laat binnenkomen. De beveiliger vergelijkt de foto en de details op het rijbewijs met een vertrouwde database van hoe een geldig rijbewijs eruit zou moeten zien. Als de details overeenkomen, mag de persoon naar binnen. In de digitale wereld genereert een computerprogramma een unieke vingerafdruk, een 'measurement' genoemd, die wordt vergeleken met een referentiewaarde — een bekende, verwachte vingerafdruk — die door de verifieerder wordt vastgehouden. Dit systeem werkt perfect wanneer één partij een andere controleert, maar het loopt tegen een logische muur aan wanneer twee of meer computers elkaar gelijktijdig moeten controleren. Als Computer A de vingerafdruk van Computer B moet kennen om deze te verifiëren, en Computer B de vingerafdruk van Computer A moet kennen om deze te verifiëren, kan geen van beide het proces starten zonder al het antwoord te hebben. Dit creëert een circulaire afhankelijkheid waarbij de ene machine wacht tot de andere het bewijs levert dat nodig is om het proces te beginnen.
Onderzoekers bij Acompany Co., Ltd. in Nagoya, Japan, hebben een manier gevonden om deze cirkel te doorbreken zonder te vertrouwen op een centrale autoriteit of een vooraf bestaande lijst met vertrouwde codes. Ze benaderden het probleem niet als een beveiligingspuzzel, maar als een vraagstuk van logica en zelfreferentie. Door een wiskundig principe toe te passen dat bekend staat als Kleene's tweede recursietheorema, hebben zij aangetoond dat een groep computers geprogrammeerd kan worden om de exacte broncode van elk ander lid binnen hun eigen geheugen te bevatten. Dit stelt elke machine in staat om de code van haar tegenhangers vanaf de basis te reconstrueren, de juiste vingerafdruk on the fly te berekenen en de identiteit van de ander te verifiëren zonder ooit een externe partij om het antwoord te hoeven vragen. Het team bouwde werkende prototypes om dit concept te bewijzen, waarmee zij lieten zien dat twee beveiligde computers elkaars integriteit succesvol konden verifiëren met alleen de gegevens die zij met zich mee droegen.
De kern van het probleem ligt in de aard van moderne beveiligde omgevingen, zoals Trusted Execution Environments (TEE's), dit zijn geïsoleerde ruimtes waar gevoelige gegevens verwerkt kunnen worden zonder angst om gezien of gemanipuleerd te worden. In een typische opstelling bewijst één computer haar betrouwbaarheid aan een server. De server houdt een lijst bij van goedgekeurde code-vingerafdrukken en controleert de rapportage van de computer tegen deze lijst. Echter, in een gedecentraliseerd netwerk waar meerdere computers moeten samenwerken aan vertrouwelijke taken, fungeert elke machine zowel als de controleur als de gecontroleerde. Als zij proberen de verwachte vingerafdrukken van hun partners hard te coderen in hun eigen software, lopen zij in een oneindige lus. Om de vingerafdruk van Partner B te kennen, moet Computer A de code van Partner B kennen. Maar de code van Partner B bevat de vingerafdruk van Computer A, wat weer kennis vereist over de code van Computer A, die op haar beurt de vingerafdruk van Computer B bevat, enzovoort. Eerdere oplossingen voor dit dilemma hielden in dat er een vertrouwde derde partij werd ingezet om de vingerafdrukken te distribueren, of dat er werd vertrouwd op specifieke hardwarefuncties om de waarden bij het opstarten te injecteren. Deze methoden werken, maar ze introduceren opnieuw een centraal punt van vertrouwen of koppelen de oplossing aan een specif kind van hardware, wat het gebruik ervan beperkt.
De onderzoekers stelden een ander pad voor door de groep computers te behandelen als één enkel, onderling verbonden systeem. Ze realiseerden zich dat de circulaire afhankelijkheid opgelost kon worden als elke computer de code van haar tegenhangers kon genereren vanuit een gedeelde set instructies. Gebruikmakend van een concept uit de informatica dat een programma toestaat naar zijn eigen broncode te verwijzen, ontwierpen zij een methode waarbij een groep programma's wordt getransformeerd tot een set van zelfvoorzienende eenheden. Elke eenheid draagt een volledige beschrijving van de gehele familie van programma's in zich. Wanneer een computer opstart, leest deze de interne beschrijving, reconstrueert de exacte broncode van de partner en berekent vervolgens de vingerafdruk van de partner. Omdat de reconstructie van binnenuit gebeurt, heeft de computer geen externe lijst nodig; de computer berekent simpelweg het antwoord op basis van de gegevens die zij al bezit. Deze aanpak elimineert de noodzaak voor een centrale autoriteit en werkt op verschillende soorten beveiligde hardware zonder wijzigingen te vereisen in de onderliggende beveiligingstools.
Om deze theorie te bewijzen, creëerde het team twee werkende demonstraties. De eerste richtte zich op systemen die de code direct tijdens de uitvoering meten, zoals standaard Linux-systemen. Zij bouwden een tool genaamd PyReflect, die een sjabloon van code neemt en automatisch de zelfreferentiële programma's genereert. In hun test wisselden twee virtuele machines, ondersteund door een softwarematige beveiligingsmodule, succesvol verificatierapporten uit. Elke machine reconstrueerde de code van de ander, berekende de verwachte vingerafdruk en bevestigde dat de peer de juiste software draaide. De tweede demonstratie richtte zich op systemen die een gecompileerd build-artefact meten, zoals AWS Nitro Enclaves, wat gespecialiseerde beveiligde containers zijn. Hier is het proces complexer omdat de computer niet alleen de broncode moet reconstrueren, maar ook het uiteindelijke uitvoerbare bestand exact moet herbouwen zoals het oorspronelijk is gemaakt. Zij ontwikkelden een tool genaamd NixReflect om dit te beheren. In hun experiment werden twee beveiligde enclaves gelanceerd, waarbij elk van hen onafhankelijk de volledige image van de ander herbouwde vanuit de data die in het eigen geheugen was opgeslagen. Vervolgens berekenden zij de vingerafdruk van de herbouwde image en vergeleken deze met de vingerafdruk die door de peer werd gerapporteerd. De resultaten kwamen perfect overeen, wat bewees dat de machines de juiste referentiewaarden uit hun eigen interne gegevens konden afleiden.
De onderzoekers maten ook de kosten van deze aanpak. In het geval van de beveiligde enclaves duurde het proces van het herbouwen van de image van de peer aanzienlijk langer dan simpelweg het berekenen van een hash van de code. Voor hun specifieke testgeval duurde het reconstructie- en herbouwproces ongeveer 6,8 seconden, terwijl een eenvoudige hash-berekening minder dan 0,1 seconde in beslag nam. Dit verschil zal naar verwachting groter worden voor complexere applicaties, aangezien de computer de gehele keten van afhankelijkheden moet doorlopen om de software te herbouwen. Ondanks deze tijdskosten bevestigde het experiment dat de methode haalbaar is en geen nieuwe hardware of een vertrouwde derde partij vereist. Het team merkte op dat het voor complexere systemen mogelijk is om het herbouwproces te verplaatsen naar een beveiligde build-omgeving vóór de implementatie, wat de runtime-kosten zou verminderen, hoewel dit een andere set vertrouwen-aannames met betrekking tot de build-omgeving met zich meebrengt.
De betekenis van dit werk ligt in het vermogen om een logische doodlopende weg op te lossen die al lang de weg blokkeert voor volledig gedecentraliseerde beveiligde computing. Door aan te tonen dat wederzijdse attestatie kan worden bereikt door middel van zelfvoorzienende reconstructie, hebben de onderzoekers een pad geopend voor peer-to-peer netwerken waarbij geen enkele entiteit door alle deelnemers wordt vertrouwd. De oplossing is architectuur-onafhankelijk, wat betekent dat deze op diverse soorten beveiligde hardware kan worden toegepast zonder dat daar aangepaste wijzigingen in de hardware nodig zijn. Het steunt op de fundamentele eigenschappen van computation in plaats op specifieke hardwarefuncties, wat het een veelzijdige tool maakt voor de toekomst van confidential computing. Hoewel de huidige prototypes proof-of-concept demonstraties zijn, vestigen zij vast dat het probleem van het bootstrappen van referentiewaarden kan worden opgelost zonder een vertrouwde derde partij, wat de deur opent naar robuustere en onafhankelijke beveiligde netwerken.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.