Tvrtka Kudelski Security, koja se specijalizira za izvođenje sigurnosnih audita, objavila je alat Shufflecake koji omogućuje stvaranje skrivenih datotečnih sustava raspršenih po raspoloživom slobodnom prostoru unutar postojećih particija, a nevidljivih od slučajnih ostataka podataka. Particije se stvaraju na način da je, ne znajući pristupni ključ, teško dokazati njihovo postojanje čak i tijekom forenzičke analize. Kod alata (shufflecake-userland) i modula jezgre Linuxa (dm-sflc) napisan je na jeziku C i distribuira se pod GPLv3 licencom, što onemogućuje uključivanje objavljenog modula jezgre u glavnu verziju jezgre Linuxa zbog nespojivosti s GPLv2 licencom pod kojom se kernel isporučuje.
Projekt se pozicionira kao naprednije rješenje od Truecrypta i Veracrypta za skrivanje podataka koji zahtijevaju zaštitu, s izvorom podrške za platformu Linux i mogućnošću smještanja do 15 skrivenih particija na uređaju, ugrađenih jedna u drugu radi zbunjivanja analize njihovog postojanja. Ako sama upotreba Shufflecakea ne predstavlja tajnu, primjerice, s obzirom na prisutnost srodnih alata u sustavu, ukupni broj stvorenih skrivenih particija je nemoguće odrediti. Stvorene skrivene particije mogu se, prema izboru korisnika, formatirati za smještaj raznih datotečnih sustava, poput ext4, xfs ili btrfs. Svaka particija se obrađuje kao zasebni virtualni blok uređaj s vlastitim ključem za otključavanje.
Za zamagljivanje tragova predlaže se koristiti model ponašanja „plauzibilni negiranje” (plausible deniability), čija je suština da se vrijedni podaci skrivaju kao dodatni slojevi u šifriranim particijama s manje vrijednim podacima, stvarajući tako svojevrsnu skrivenu hijerarhiju particija. U slučaju pritiska, vlasnik uređaja može otkriti ključ za šifriranu particiju, ali u toj particiji mogu biti skrivene druge particije (do 15 ugniježdenih razina), a teško je odrediti njihovo postojanje i dokazati njihovu egzistenciju.
Skrivenost se postiže formiranjem svakog odjeljka kao skupa šifriranih slajdova, smještenih na nasumičnim pozicijama na uređaju za pohranu. Svaki slajd se dinamički stvara u trenutku kada je u odjeljku potrebno dodatno prostor za pohranu. Kako bi se otežala analiza, slajdovi različitih odjeljaka se izmjenjuju, tj. dijelovi Shufflecake nisu povezani s kontinuiranim područjima i slajdovi svih odjeljaka su izmiješani. Informacije o korištenim i slobodnim slajdovima pohranjuju se u karti lokacija vezanoj uz svaki odjeljak, na koju se poziva šifrirana oznaka. Karte i oznaka su šifrirane i bez znanja ključa pristupa ne razlikuju se od nasumičnih podataka.
Oznaka je podijeljena na slotove, od kojih svaki definira svoj odjeljak i povezane slajdove. Slotovi u oznaci su smješteni u stog redoslijed i rekurzivno povezani — trenutni slot sadrži ključ za dešifriranje parametara prethodnog odjeljka u hijerarhiji (manje skrivenog), što omogućava korištenje jedne lozinke za dešifriranje svih manje skrivenih odjeljaka povezanih s odabranim odjeljkom. Svaki manje skriveni odjeljak smatra slajdove ugniježdenih odjeljaka kao slobodne.
Prema zadanim postavkama, svi ugniježdeni odjeljci Shufflecake imaju istu vidljivu veličinu kao i odjeljak gornjeg nivoa. Na primjer, ako je na uređaju od 1 GB aktivno tri odjeljka, svaki od njih će biti vidljiv sustavu kao odjeljak veličine 1 GB i ukupni dostupni prostor na disku bit će zajednički korišten u svim odjeljcima — ako ukupna veličina pohranjenih podataka premaši stvarnu veličinu uređaja, počet će se javljati greške pri unosu/izlazu.
Neotvoreni pododjeli ne sudjeluju u raspodjeli prostora, tj. pokušaj ispunjavanja nadređenog odjeljka će rezultirati prepisivanjem podataka u pododjelima, ali neće omogućiti otkrivanje njihove prisutnosti analizom veličine podataka koji mogu biti pohranjeni unutar odjeljka prije nego što se prikaže pogreška (pretpostavlja se da nadređeni odjeli sadrže nepromjenjive podatke za odvraćanje pažnje i nikada se ne koriste odvojeno, a redovno se obavlja rad uvijek s najnovijim pododjelom; sama shema pretpostavlja da je važnije zadržati tajnost postojanja podataka nego izgubiti te podatke).
U stvari, uvijek se stvara 15 odjela Shufflecake - korištenim odjelima se veže lozinka korisnika, dok na neiskorištene odjele se dodjeljuju nasumično generirane lozinke (nije moguće odrediti koliko se stvarno odjela koristi). Prilikom inicijalizacije odjela Shufflecake, disk, pododjel ili virtualni blok uređaj dodijeljen za njihovo smještanje se ispunjava nasumičnim podacima, što onemogućava određivanje metapodataka i podataka Shufflecake na općem fondu.
Implementacija Shufflecake ima prilično visoku izvedbu, ali zbog prisutnosti overheada za otprilike dvostruko sporiji od propusnosti u usporedbi s enkripcijom diskova temeljenom na LUKS pod-sustavu. Korištenje Shufflecake također rezultira dodatnim troškovima RAM-a i prostora za pohranu pomoćnih podataka na disku. Trošak memorije procjenjuje se na 60 MB po odjelu, a prostora na disku na 1% od ukupne veličine. U usporedbi, slična tehnika WORAM uzrokuje usporenje od 5 do 200 puta uz gubitak korisnog prostora na disku od 75%.
Alat i modul jezgre testirani su samo pri radu na Debianu i Ubuntu s jezgrama 5.13 i 5.15 (podržava se rad na Ubuntu 22.04). Primjećuje se da se projekt trenutno može smatrati radnim prototipom koji ne bi trebao biti korišten za pohranu važnih podataka. U budućnosti se planira dodatna optimizacija izvedbe, pouzdanosti i sigurnosti, kao i omogućavanje podizanja sa Shufflecake odjela.
Izvor: opennet.ru
