Shufflecake është një mjet për Linux që lejon krijimin e vëllimeve të shumta të fshehura në një pajisje ruajtëse në mënyrë të tillë që është shumë e vështirë, edhe nën inspektimin mjeko-ligjor, të provohet ekzistenca e vëllimeve të tilla.
Firma e auditimit të sigurisë Kudelski Security ka publikuar setin e mjeteve Shufflecake , i cili lejon krijimin e sistemeve të skedarëve të fshehur të shpërndara në hapësirën e lirë të disponueshme në ndarjet ekzistuese, të padallueshme nga të dhënat e mbetura të rastësishme. Këto seksione krijohen në një mënyrë të tillë që, pa e ditur çelësin e aksesit, vërtetimi i ekzistencës së tyre është problematik, madje edhe gjatë analizës mjeko-ligjore.
Projekti pozicionohet si një zgjidhje më e avancuar se Truecrypt dhe Veracrypt për fshehjen e të dhënave konfidenciale, duke ofruar mbështetje native për platformën Linux dhe duke ju lejuar të vendosni deri në 15 ndarje të fshehura në pajisje, të vendosura brenda njëra-tjetrës për të errësuar analizën e ekzistencës së tyre.
Ndarjet e fshehura të krijuara , sipas gjykimit të përdoruesit, mund të formatohen për t'iu përshtatur çdo sistemi skedarësh, për shembull, ext4, xfs ose btrfs. Çdo ndarje trajtohet si një pajisje blloku virtuale e pavarur me çelësin e vet të zhbllokimit.
Për të errësuar gjurmët, propozohet modeli i sjelljes "mohimi i besueshëm". Në thelb, të dhënat e vlefshme fshihen si shtresa shtesë brenda seksioneve të enkriptuara që përmbajnë të dhëna më pak të vlefshme, duke formuar një lloj hierarkie të fshehur seksionesh. Nën presion, pronari i pajisjes mund të zbulojë çelësin e seksionit të enkriptuar, por seksione të tjera (deri në 15 nivele të ndërthurura) mund të fshihen brenda tij, duke e bërë të vështirë përcaktimin e pranisë së tyre dhe vërtetimin e ekzistencës së tyre.
Shufflecake dhe moduli i kernelit janë testuar vetëm në Debian dhe Ubuntu me kernelet 5.13 dhe 5.15 (mbështetet Ubuntu 22.04). Duhet theksuar se projekti duhet të konsiderohet ende si një prototip funksional dhe nuk duhet të përdoret për të ruajtur të dhëna të ndjeshme.
Në të ardhmen, ne planifikojmë të bëjmë optimizime shtesë për performancën, besueshmërinë dhe sigurinë, si dhe të ofrojmë mundësinë e nisjes nga ndarjet Shufflecake.
Rreth Shufflecake
Fshehja arrihet duke formuar çdo ndarje si një grup segmentesh të koduara të vendosura në pozicione të rastësishme në pajisjen e ruajtjes. Çdo segment krijohet në mënyrë dinamike kur ndarja kërkon hapësirë shtesë ruajtjeje. Për të komplikuar analizën, feta nga seksione të ndryshme ndërthuren.
Seksionet e shufflecake nuk janë të lidhura me rajone të afërta dhe pjesët nga të gjitha seksionet janë të përziera së bashku. Informacioni rreth pjesëve të përdorura dhe të lira ruhet në hartën e vendndodhjes bashkangjitur çdo seksioni, e cila referohet nga titulli i koduar. Kartat dhe titulli janë të koduara dhe, pa e ditur çelësin e kalimit, nuk dallohen nga të dhënat e rastësishme.
Koka është e ndarë në slote , secila prej të cilave përcakton seksionin e vet dhe sektorët përkatës. Slotet në kokë janë të grumbulluara dhe të lidhura në mënyrë rekursive: sloti aktual përmban çelësin për të dekriptuar parametrat e seksionit të mëparshëm (më pak të fshehur) në hierarki, duke lejuar që një fjalëkalim i vetëm të dekriptojë të gjitha seksionet më pak të fshehura të lidhura me artikullin e zgjedhur. Çdo seksion më pak i fshehur trajton pjesët e seksioneve të ndërthurura si të lira.
Si parazgjedhje, të gjitha ndarjet Shufflecake të ndërthurura kanë të njëjtën madhësi të dukshme si ndarja e nivelit të lartë. Për shembull, nëse përdoren tre ndarje në një pajisje 1GB, secila do të jetë e dukshme për sistemin si një ndarje 1GB dhe hapësira totale e disponueshme e diskut do të ndahet midis të gjitha ndarjeve. Nëse sasia totale e të dhënave të ruajtura tejkalon madhësinë aktuale të pajisjes, do të fillojnë të ndodhin gabime I/O.
Seksionet e pahapura të ndërfutura nuk marrin pjesë në ndarjen e hapësirës; domethënë, përpjekja për të mbushur një seksion të nivelit më të lartë do të mbishkruajë të dhënat në seksionet e ndërfutura, por nuk do të zbulojë praninë e tyre përmes analizës së madhësisë së të dhënave që mund të vendosen në seksion para se të gjenerohet një gabim (supozohet se seksionet e nivelit më të lartë përmbajnë të dhëna të pandryshueshme). Të dhënat nuk përdoren rastësisht dhe kurrë veçmas, dhe puna e rregullt kryhet gjithmonë me seksionin më të fundit të ndërfutur; vetë skema nënkupton se gjëja kryesore është të mbahet sekret ekzistenca e të dhënave, madje edhe me koston e humbjes së të dhënave.
Implementimi i Shufflecake ofron performancë relativisht të lartë, por për shkak të kostove të përgjithshme, ai kryen rreth gjysmën e enkriptimit të diskut bazuar në nënsistemin LUKS. Përdorimi i Shufflecake gjithashtu shkakton kosto shtesë të RAM-it dhe hapësirës së diskut për ruajtjen e të dhënave të shërbimit. Kostot e memories vlerësohen në 60 MB për ndarje , dhe përdorimi i hapësirës së diskut vlerësohet në 1% të madhësisë totale të ndarjes. Në krahasim, teknika WORAM me qëllim të ngjashëm rezulton në një ngadalësim 5 deri në 200-fish me një humbje prej 75% të hapësirës së përdorshme të diskut.
Kodi për shërbimet (shufflecake-userland) dhe modulin e kernelit Linux (dm-sflc) është shkruar në C dhe lëshohet nën licencën GPLv3, gjë që e bën të pamundur përfshirjen e modulit të kernelit të publikuar në kernelin kryesor Linux. për shkak të papajtueshmërisë nën licencën GPLv2 nën të cilën dërgohet kerneli.
Nëse jeni të interesuar të mësoni më shumë, mund t’i gjeni detajet në linkun e mëposhtëm.