Confidential Computing — er det virkelig mulig?
Confidential Computing — er det virkelig mulig?
Forrige uke annonserte Google på første dag av Google Cloud Next ’20 et teknologisk gjennombrudd som de kalte for “Confidential Computing”. Med denne annonseringen tilgjengeliggjør de en ny betatjeneste, som de kaller for “Confidential Virtual Machines” (Confidential VMs), og den skal hjelpe til med å få enda flere kunder over i skyen. Tjenesten er spesielt rettet mot selskaper og instanser som er skeptiske til å legge sensitive dataene ute i skyen. Riktignok er dataene allerede nå ofte tryggere ute i skyen hos en pålitelig skyleverandør enn om de hadde blitt lagret on-premises. Men for at dataene også skal kunne prosesseres, må de nødvendigvis dekrypteres, og da er de plutselig tilgjengelige i minnet i klartekst. Ikke alle selskaper er like komfortable med det. Men er det virkelig slik at data alltid må dekrypteres for at de skal kunne prosesseres? Det kanskje litt overraskende svaret er faktisk nei, det trenger de ikke.
Det er nemlig mulig å utføre beregninger på krypterte data, uten at de må dekrypteres først. En teknikk som gjør det mulig er homomorfisk kryptering. Første gang jeg ble kjent med teknikken var i forbindelse med e-valgforsøket for snart ti år siden. Og på et elementært nivå er det faktisk ikke så vanskelig å forstå hvordan teknikken fungerer.
Tenk for eksempel at vi skal jobbe med tall fra 0 til 99, og at vi om en eller annen grunn ønsker å summere to slike tall. Målet er at den som utfører beregningen ikke får vite hva de to tallene er, eller hva resultatet blir, men at resultatet blir korrekt likevel. La oss bruke en veldig enkel krypteringsalgoritme, E(m) = 7·m mod 100, altså multiplikasjon med 7. Tallet 7 er vår hemmelige krypteringsnøkkel. Da er det lett å forstå at det er faktisk mulig å summere to tall uten å måtte dekryptere dem først, for E(a + b) = E(a) + E(b), siden 7·(a + b) mod 100 = 7·a + 7·b mod 100. Men samtidig ser vi også at f.eks. multiplikasjon ikke er mulig i dette systemet, uten å dekryptere eller i det minste ha kjenskap til den hemmelig nøkkelen.
På samme måte tillater kryptografiske basisskjema som RSA og ElGamal noen basisoperasjoner, men ikke alle. Men de siste årene har det blitt utviklet systemer som tilbyr såkalt “fully homomorphic encryption” (FHE), som gjør det mulig å prosessere krypterte data uten begrensninger. Hvor praktisk det er, vet jeg ikke, men det viser i hvert fall at Confidential Computing som konsept er mulig, i hvert fall teoretisk sett.
Men det er viktig å påpeke at det er ikke dette Google har implementert i sin nye tjeneste. Faktisk er det slik at tjenesten fortsatt dekrypterer dataene rett før de skal prosesseres. Google tilbyr denne tjenesten gjennom en enkel avhuking under oppsettet av en virtuell maskin, og hjelpeteksten sier tydelig at tjenesten krypterer dataene mens de er i minne, som vist nedenfor. Men implisitt betyr det også at påstanden om at dataene forblir kryptert mens de prosesseres, slik som beskrevet i “I Googles nye VM-er er dataene kryptert også under prosessering” hos Digi.no, ikke er helt korrekt.
Det kommer også tydelig frem i Googles annonsering at denne tjenesten er et resultat av et samarbeid med AMD og deres utvikling av annen generasjons AMD EPYC™-prosessorer. Denne teknologien er basert på at dataene prosesseres i egne sikre soner på prosessorene, som er spesialdesignet for at de ikke skal kunne leses ut fra andre steder på chippen. Disse områder er på en måte hardwareversjoner av klasser der man bevisst har latt være å legge inn get-metoder og tilsvarende på attributter, slik at det ikke skal være mulig at det lekkes ut informasjon gjennom dem.
Er dette en tjeneste som er hundre prosent sikker, slik at det fremover blir mulig å flytte til og med de mest sensitive dataene over i skyen? Dessverre ikke. Har du jobbet med sikkerhet, vet du at «hundre prosent» nesten aldri finnes. Som IEEE Spectrum skriver, finnes det f.eks. fortsatt problemer med sidekanaler og timing. Og har man løst de to problemene, tipper jeg at noen vil klare å lese ut informasjon gjennom prosessorens strømforbruk eller varmeutvikling. Men det er klart at Googles Confidential VMs øker antall 9’ene man kan oppnå, og det gleder vi oss over.
Confidential Computing — er det virkelig mulig? was originally published in Grensesnittet on Medium, where people are continuing the conversation by highlighting and responding to this story.