Shufflecake, et verktøysett for å lage skjulte krypterte diskpartisjoner, har blitt publisert

Sikkerhetsrevisjonsselskapet Kudelski Security har publisert et verktøy kalt Shufflecake som lar deg lage skjulte filsystemer spredt over tilgjengelig ledig plass på eksisterende partisjoner og ikke kan skilles fra tilfeldige gjenværende data. Partisjoner er opprettet på en slik måte at uten å kjenne tilgangsnøkkelen, er det vanskelig å bevise deres eksistens selv når man utfører rettsmedisinske analyser. Koden til verktøyene (shufflecake-userland) og Linux-kjernemodulen (dm-sflc) er skrevet i C og distribuert under GPLv3-lisensen, noe som gjør det umulig å inkludere den publiserte kjernemodulen i hoved Linux-kjernen på grunn av inkompatibilitet med GPLv2-lisensen som kjernen leveres under.

Prosjektet er posisjonert som en mer avansert løsning enn Truecrypt og Veracrypt for å skjule data som krever beskyttelse, som har innebygd støtte for Linux-plattformen og lar deg plassere opptil 15 skjulte partisjoner på enheten, nestet inne i hverandre for å forvirre parsingen av deres eksistens. Hvis bruken av Shufflecake i seg selv ikke er en hemmelighet, som kan bedømmes for eksempel ved tilstedeværelsen av de tilsvarende verktøyene i systemet, kan det totale antallet skjulte partisjoner som er opprettet ikke bestemmes. De opprettede skjulte partisjonene kan formateres etter brukerens skjønn for å imøtekomme ethvert filsystem, for eksempel ext4, xfs eller btrfs. Hver partisjon behandles som en separat virtuell blokkeringsenhet med sin egen opplåsingsnøkkel.

For å forvirre sporene, foreslås det å bruke "plausible deniability"-atferdsmodellen, hvis essens er at verdifulle data er skjult som ekstra lag i krypterte seksjoner med mindre verdifulle data, og danner et slags skjult hierarki av seksjoner. I tilfelle press kan eieren av enheten avsløre nøkkelen til den krypterte partisjonen, men andre partisjoner (opptil 15 nestede nivåer) kan være skjult i denne partisjonen, og det er problematisk å bestemme deres tilstedeværelse og bevise deres eksistens.

Skjuling oppnås ved å konstruere hver partisjon som et sett med krypterte skiver plassert på tilfeldige posisjoner på lagringsenheten. Hver skive lages dynamisk når det er behov for ekstra lagringsplass i partisjonen. For å gjøre analysen vanskeligere, veksles skiver av forskjellige seksjoner, dvs. Shufflecake-seksjoner er ikke knyttet til sammenhengende regioner, og skiver fra alle seksjoner er blandet. Informasjon om brukte og ledige skiver lagres i et stedskart knyttet til hver partisjon, som refereres til av en kryptert overskrift. Kortene og overskriften er kryptert, og uten å kjenne tilgangsnøkkelen kan de ikke skilles fra tilfeldige data.

Overskriften er delt inn i spor, som hver definerer sin egen seksjon og tilhørende skiver. Sporene i overskriften er stablet og rekursivt koblet - det gjeldende sporet inneholder nøkkelen for å dekryptere parametrene til forrige seksjon i hierarkiet (den mindre skjulte), slik at ett passord kan brukes til å dekryptere alle de mindre skjulte delene knyttet til den valgte delen. Hver mindre skjult partisjon behandler stykkene av nestede partisjoner som gratis.

Som standard har alle Shufflecake-underseksjoner samme synlige størrelse som toppnivåseksjonen. For eksempel, hvis det er tre partisjoner på en 1 GB-enhet, vil hver av dem være synlige for systemet som en 1 GB-partisjon og den totale tilgjengelige diskplassen deles mellom alle partisjoner - hvis den totale størrelsen på de lagrede dataene overskrider den faktiske størrelsen på enheten, vil den starte en I/O-feil blir kastet.

Nestede seksjoner som ikke er åpne deltar ikke i plasstildeling, d.v.s. et forsøk på å fylle en toppnivåpartisjon vil resultere i at data makuleres i nestede partisjoner, men vil ikke gjøre det mulig å avsløre deres tilstedeværelse gjennom analyse av størrelsen på dataene som kan plasseres i partisjonen før feilen begynner (det antas at de øvre partisjonene inneholder uforanderlige data for å distrahere oppmerksomheten og aldri separat ikke brukes, og regelmessig arbeid utføres alltid med den nyeste nestede delen, innebærer selve ordningen at det er viktigere å opprettholde hemmeligheten bak eksistensen av data enn å miste disse dataene).

Faktisk opprettes det alltid 15 Shufflecake-partisjoner - brukerpassordet er knyttet til de brukte partisjonene, og de ubrukte partisjonene leveres med et tilfeldig generert passord (det er umulig å forstå hvor mange partisjoner som faktisk brukes). Når Shufflecake-partisjoner initialiseres, blir disken, partisjonen eller den virtuelle blokkenheten som er tildelt for plassering fylt med tilfeldige data, noe som gjør det umulig å identifisere Shufflecake-metadata og data mot den generelle bakgrunnen.

Shufflecake-implementeringen har ganske høy ytelse, men på grunn av tilstedeværelsen av overhead er den omtrent dobbelt så treg i gjennomstrømming sammenlignet med diskkryptering basert på LUKS-undersystemet. Bruk av Shufflecake resulterer også i ekstra kostnader for RAM og diskplass for lagring av tjenestedata. Minneforbruk er estimert til 60 MB per partisjon, og diskplass til 1 % av den totale størrelsen. Til sammenligning fører WORAM-teknikken, med lignende formål, til en nedgang på 5 til 200 ganger med 75 % tap av brukbar diskplass.

Verktøysettet og kjernemodulen har kun blitt testet på Debian og Ubuntu med kjerner 5.13 og 5.15 (støttet på Ubuntu 22.04). Det bemerkes at prosjektet fortsatt bør betraktes som en fungerende prototype, som ikke skal brukes til å lagre viktige data. I fremtiden planlegger vi å foreta ytterligere optimaliseringer for ytelse, pålitelighet og sikkerhet, samt gi muligheten til å starte opp fra Shufflecake-partisjoner.

Kilde: opennet.ru

Legg til en kommentar