Shufflecake on työkalu Linuxille, joka mahdollistaa useiden piilotettujen taltioiden luomisen tallennuslaitteelle siten, että tällaisten taltioiden olemassaolo on erittäin vaikeaa todistaa jopa rikosteknisessä tarkastuksessa.
Tietoturvatarkastusyritys Kudelski Security on julkaissut Shufflecake-työkalupakin , jonka avulla voidaan luoda piilotettuja tiedostojärjestelmiä, jotka on jaettu olemassa olevien osioiden vapaaseen tilaan ja joita ei voida erottaa satunnaisista jäännöstiedoista. Nämä osiot on luotu siten, että ilman käyttöoikeusavainta niiden olemassaolon todistaminen on ongelmallista jopa rikosteknisen analyysin aikana.
Projekti asemoituu Truecryptiä ja Veracryptiä edistyneemmäksi ratkaisuksi luottamuksellisten tietojen piilottamiseen, tarjoten natiivin tuen Linux-alustalle ja sallien jopa 15 piilotetun osion sijoittamisen laitteelle, jotka on sisäkkäin sijoitettu niiden olemassaolon analysoinnin hämärtämiseksi.
Käyttäjän harkinnan mukaan luodut piilotetut osiot voidaan muotoilla mille tahansa tiedostojärjestelmälle sopivaksi, esimerkiksi ext4, xfs tai btrfs. Jokaista osiota käsitellään itsenäisenä virtuaalisena lohkolaitteena, jolla on oma lukituksen avausavain.
Jälkien hämärtämiseksi esitetään "uskottavan kiistämisen" käyttäytymismalli. Pohjimmiltaan arvokas data piilotetaan lisäkerroksiksi salattujen osioiden sisään, jotka sisältävät vähemmän arvokasta dataa, muodostaen eräänlaisen piilotetun osioiden hierarkian. Paineen alla laitteen omistaja voi paljastaa salatun osion avaimen, mutta muut osiot (jopa 15 sisäkkäistä tasoa) voidaan piilottaa sen sisään, mikä vaikeuttaa niiden olemassaolon määrittämistä ja todistamista.
Shufflecakea ja sen ydinmoduulia on testattu vain Debianilla ja Ubuntulla ytimien versioilla 5.13 ja 5.15 (Ubuntu 22.04 on tuettu). On huomattava, että projektia tulisi edelleen pitää toimivana prototyyppinä , eikä sitä tulisi käyttää arkaluonteisten tietojen tallentamiseen.
Jatkossa aiomme tehdä lisäoptimointeja suorituskyvyn, luotettavuuden ja turvallisuuden kannalta sekä tarjota mahdollisuuden käynnistää Shufflecake-osioista.
Tietoja Shufflecakesta
Kätkeminen saavutetaan muodostamalla jokainen osio joukkona salattuja segmenttejä, jotka sijoitetaan satunnaisiin paikkoihin tallennuslaitteella. Jokainen segmentti luodaan dynaamisesti, kun osio tarvitsee lisää tallennustilaa. Analyysin monimutkaisemiseksi eri osioista peräisin olevat viipaleet lomitetaan.
Shufflecake-osioita ei ole linkitetty vierekkäisiin alueisiin, ja kaikkien osien osia sekoitetaan yhteen. Tiedot käytetyistä ja ilmaisista osista tallennetaan kunkin osan liitteenä olevaan sijaintikarttaan, johon viitataan salatulla otsikolla. Kortit ja otsikko ovat salattuja, ja niitä ei voi erottaa satunnaisista tiedoista ilman salasanaa.
Ylätunniste on jaettu osiin , joista jokainen määrittelee oman osionsa ja siihen liittyvät sektorit. Ylätunnisteen paikat on pinottu ja rekursiivisesti linkitetty: nykyinen paikka sisältää avaimen hierarkian edellisen (vähemmän piilotetun) osan parametrien salauksen purkamiseksi, jolloin yhdellä salasanalla voidaan purkaa kaikkien valittuun kohteeseen liittyvien vähemmän piilotettujen osioiden salaus. Jokainen vähemmän piilotettu osio käsittelee sisäkkäisten osioiden osia vapaina.
Oletusarvoisesti kaikilla sisäkkäisillä Shufflecake-osioilla on sama näkyvä koko kuin ylimmän tason osiolla. Jos esimerkiksi 1 Gt:n laitteella käytetään kolmea osiota, jokainen niistä näkyy järjestelmälle 1 Gt:n osiona, ja käytettävissä oleva levytila jaetaan kaikkien osioiden kesken. Jos tallennetun tiedon kokonaismäärä ylittää laitteen todellisen koon, I/O-virheitä alkaa esiintyä.
Avaamattomat sisäkkäiset osiot eivät osallistu tilan allokointiin; eli korkeamman tason osion täyttäminen ylikirjoittaa sisäkkäisten osioiden tiedot, mutta ei paljasta niiden olemassaoloa analysoimalla osioon sijoitettavien tietojen kokoa ennen virheen syntymistä (oletetaan, että korkeamman tason osiot sisältävät muuttumatonta tietoa). Tietoja ei käytetä sattumalta eikä koskaan erikseen, ja säännöllistä työtä tehdään aina viimeisimmän sisäkkäisen osion kanssa; itse skeema viittaa siihen, että tärkeintä on pitää tiedon olemassaolo salassa, jopa tiedon menettämisen kustannuksella.
Shufflecake-toteutus tarjoaa suhteellisen korkean suorituskyvyn, mutta yleiskustannusten vuoksi se suorittaa noin puolet LUKS-alijärjestelmään perustuvan levynsalauksen suorituskyvystä. Shufflecaken käyttö aiheuttaa myös ylimääräisiä RAM- ja levytilakustannuksia palvelutietojen tallentamiseen. Muistikustannusten arvioidaan olevan 60 Mt osiota kohden ja levytilan käytön arvioidaan olevan 1 % osion kokonaiskoosta. Vertailun vuoksi samalla tavalla tarkoituksenmukainen WORAM-tekniikka johtaa 5–200-kertaiseen hidastumiseen ja 75 %:n käytettävissä olevan levytilan menetykseen.
Apuohjelmien (shufflecake-userland) ja Linux-ydinmoduulin (dm-sflc) koodi on kirjoitettu C-kielellä ja julkaistu GPLv3-lisenssillä, mikä tekee mahdottomaksi sisällyttää julkaistua ydinmoduulia Linuxin pääytimeen yhteensopimattomuuden vuoksi. GPLv2-lisenssin alaisena, jolla ydin toimitetaan.
Jos olet kiinnostunut oppimaan lisää, löydät tiedot seuraavasta linkistä.