Kudelski Security, som specialiserar sig pÄ sÀkerhetsrevisioner, har publicerat verktyget Shufflecake, som möjliggör skapandet av dolda filsystem som sprids över det befintliga lediga utrymmet i existerande partitioner och som inte gÄr att sÀrskilja frÄn slumpmÀssiga kvarvarande data. Partitionerna skapas pÄ ett sÄdant sÀtt att utan nyckeln Àr det problematiskt att bevisa deras existens, Àven vid en kriminalteknisk analys. Koden för verktyget (shufflecake-userland) och Linux-kÀrnmodulen (dm-sflc) Àr skriven i C och distribueras under GPLv3-licensen, vilket gör det omöjligt att inkludera den publicerade kÀrnmodulen i den primÀra Linux-kÀrnan pÄ grund av inkompatibiliteten med GPLv2-licensen som kÀrnan levereras under.
Projektet positioneras som en mer avancerad lösning Àn Truecrypt och Veracrypt för att dölja data som krÀver skydd, med inbyggt stöd för Linux-plattformen och möjlighet att placera upp till 15 dolda partitioner pÄ en enhet, inbÀddade i varandra för att försvÄra analysen av deras existens. Om anvÀndningen av Shufflecake i sig inte utgör nÄgon hemlighet, vilket kan bedömas genom tillgÄngen till motsvarande verktyg i systemet, Àr det omöjligt att faststÀlla det totala antalet skapade dolda partitioner. De skapade dolda partitionerna kan formateras av anvÀndaren för att rymma olika filsystem, som ext4, xfs eller btrfs. Varje partition behandlas som en separat virtuell blockenhet med sin egen upplÄsningsnyckel.
För att försvÄra spÄr föreslÄs det att anvÀnda beteendemodellen "plausible deniability" (trojaktig förnekelse), vars kÀrna Àr att vÀrdefull data döljs som extra lager i krypterade partitioner med mindre vÀrdefulla data, vilket skapar en sorts dold hierarki av partitioner. Vid tryck kan Àgaren av enheten avslöja nyckeln till den krypterade partitionen, men i denna partition kan dolda partitioner finnas (upp till 15 inbÀddade nivÄer), och att faststÀlla deras existens och bevisa dem Àr problematiskt.
Dölja sÀkerstÀlls genom att varje sektion formas som en uppsÀttning krypterade skivor som placeras pÄ slumpmÀssiga positioner pÄ lagringsenheten. Varje skiva skapas dynamiskt nÀr sektionen behöver mer lagringsutrymme. För att försvÄra analysen vÀxlas skivor frÄn olika sektioner, dvs. Shufflecake-sektioner kopplas inte samman med kontinuerliga omrÄden och skivor frÄn alla sektioner blandas. Information om anvÀnda och lediga skivor lagras i en positionskarta kopplad till varje sektion, som refereras av den krypterade rubriken. Kartor och rubrik Àr krypterade och utan kunskap om Ätkomstnyckeln gÄr de inte att sÀrskilja frÄn slumpmÀssiga data.
Rubriken Ă€r uppdelad i fack, dĂ€r varje fack definierar sin sektion och dess relaterade skivor. Facken i rubriken Ă€r placerade i staplad ordning och Ă€r rekursivt kopplade â det nuvarande facket innehĂ„ller en nyckel för att avkoda parametrarna för den föregĂ„ende sektionen i hierarkin (mindre dolda), vilket tillĂ„ter att anvĂ€nda ett enda lösenord för att avkoda alla mindre dolda sektioner kopplade till den valda sektionen. Varje mindre dold sektion betraktar skivor frĂ„n inbĂ€ddade sektioner som lediga.
Som standard har alla inbĂ€ddade sektioner i Shufflecake samma synliga storlek som huvudsektionen. Till exempel, om tre sektioner anvĂ€nds pĂ„ en enhet med storlek 1 GB, kommer varje sektion att synas för systemet som en sektion med storlek 1 GB och det totala tillgĂ€ngliga lagringsutrymmet kommer att delas mellan alla sektioner â om den totala storleken pĂ„ de sparade data överstiger den faktiska storleken pĂ„ enheten, kommer det att börja uppkomma ett in-/utmatningsfel.
StÀngda undersektioner deltar inte i fördelningen av utrymme, det vill sÀga att ett försök att fylla en överordnad sektion leder till skrivförlust av data i undersektionerna, men ger inte möjlighet att avslöja deras existens genom analys av storleken pÄ data som kan lagras i sektionen innan ett felmeddelande visas (det antas att de överordnade sektionerna innehÄller oförÀnderliga data för att v distra den uppmÀrksamheten och aldrig anvÀnds separat, medan det normala arbetet alltid genomförs med den senaste undersektionen, sjÀlva schemat innebÀr att det Àr viktigare att bevara hemligheten av datans existens Àn att förlora dessa data).
Det skapas i praktiken alltid 15 sektioner i Shufflecake â till de anvĂ€nda sektionerna kopplas anvĂ€ndarens lösenord, medan oanvĂ€nda sektioner förses med ett slumpmĂ€ssigt genererat lösenord (det Ă€r omöjligt att förstĂ„ hur mĂ„nga sektioner som faktiskt anvĂ€nds). Vid initiering av sektionerna i Shufflecake fylls den disket, sektion eller virtuellt blockenhet som avsatts för dem med slumpmĂ€ssiga data, vilket gör det omöjligt att identifiera metadata och data frĂ„n Shufflecake mot en allmĂ€n bakgrund.
Implementeringen av Shufflecake har en tillrĂ€ckligt hög prestanda, men pĂ„ grund av överhead kostnader ligger den ungefĂ€r tvĂ„ gĂ„nger efter i bandbredd jĂ€mfört med kryptering av diskar baserat pĂ„ LUKS-underavdelningen. AnvĂ€ndning av Shufflecake medför ocksĂ„ ytterligare kostnader för RAM och lagring av metadata pĂ„ disken. Minne kostnaden uppskattas till 60 MB per sektion, och lagringsutrymmet â 1% av den totala storleken. I jĂ€mförelse meddragningstekniken WORAM, som Ă€r avsedd för samma syfte, medför en sĂ€nkning frĂ„n 5 till 200 gĂ„nger med 75% förlust av anvĂ€ndbart lagringsutrymme.
Verktygen och kÀrnmodulen har endast testats pÄ Debian och Ubuntu med kÀrnor 5.13 och 5.15 (arbetet stöds i Ubuntu 22.04). Det noteras att projektet för nÀrvarande bör betraktas som en fungerande prototyp som inte bör anvÀndas för lagring av viktiga data. I framtiden planeras ytterligare optimering av prestanda, tillförlitlighet och sÀkerhet, samt möjligheten att starta frÄn Shufflecake-sektioner.
KĂ€lla: opennet.ru
