Shufflecake on Linuxi jaoks mõeldud tööriist, mis võimaldab luua salvestusseadmele mitu peidetud köidet nii, et isegi kohtuekspertiisi kontrolli all on väga raske selliste köidete olemasolu tõestada.
Turvaauditi firma Kudelski Security on välja andnud Shufflecake'i tööriistakomplekti , mis võimaldab luua peidetud failisüsteeme, mis on jaotatud olemasolevate partitsioonide vabale ruumile ja mida ei saa eristada juhuslikest jääkandmetest. Need sektsioonid on loodud nii, et ilma juurdepääsuvõtit teadmata on nende olemasolu tõestamine problemaatiline isegi kohtuekspertiisi käigus.
Projekt positsioneerib end konfidentsiaalsete andmete peitmiseks Truecryptist ja Veracryptist arenenuma lahendusena , pakkudes Linuxi platvormile natiivset tuge ja võimaldades seadmesse paigutada kuni 15 peidetud partitsiooni, mis on üksteise sisse pesastatud, et nende olemasolu analüüsi varjata.
Kasutaja saab loodud peidetud partitsioone vormindada mis tahes failisüsteemile sobivaks, näiteks ext4, xfs või btrfs. Iga partitsiooni käsitletakse iseseisva virtuaalse plokkseadmena, millel on oma avamisvõti.
Jälgede hägustamiseks pakutakse välja "usutava eitamise" käitumismudel. Põhimõtteliselt peidetakse väärtuslikud andmed krüpteeritud sektsioonide sees täiendavate kihtidena, mis sisaldavad vähem väärtuslikke andmeid, moodustades omamoodi sektsioonide peidetud hierarhia. Surve all saab seadme omanik krüpteeritud sektsiooni võtme avaldada, kuid selle sisse saab peita ka teisi sektsioone (kuni 15 pesastatud taset), mis raskendab nende olemasolu kindlakstegemist ja tõestamist.
Shufflecake'i ja kerneli moodulit on testitud ainult Debiani ja Ubuntu peal kerneli versioonidega 5.13 ja 5.15 (toetatud on Ubuntu 22.04). Tuleb märkida, et projekti tuleks siiski pidada toimivaks prototüübiks ja seda ei tohiks kasutada tundlike andmete salvestamiseks.
Tulevikus plaanime teha täiendavaid optimeerimisi jõudluse, töökindluse ja turvalisuse tagamiseks ning pakkuda ka Shufflecake'i partitsioonidest alglaadimise võimalust.
Shufflecake'i kohta
Varjamine saavutatakse iga partitsiooni moodustamisega krüpteeritud segmentide kogumina, mis paigutatakse salvestusseadmele juhuslikesse kohtadesse. Iga segment luuakse dünaamiliselt, kui partitsioon vajab täiendavat salvestusruumi. Analüüsi keerukamaks muutmiseks põimitakse eri sektsioonide viilud omavahel.
Shufflecake'i sektsioone ei seostata külgnevate piirkondadega ja kõigi osade osad segatakse. Teave kasutatud ja tasuta osade kohta salvestatakse iga jaotise juurde lisatud asukohakaardile, millele viitab krüpteeritud päis. Kaardid ja päis on krüptitud ning pääsuvõtit teadmata ei erista neid juhuslikest andmetest.
Päis on jagatud pesadeks , millest igaüks määratleb oma sektsiooni ja sellega seotud sektorid. Päise pesad on virnastatud ja rekursiivselt lingitud: praegune pesa sisaldab võtit hierarhias eelmise (vähem peidetud) sektsiooni parameetrite dekrüpteerimiseks, võimaldades ühe parooliga dekrüpteerida kõik valitud üksusega seotud vähem peidetud sektsioonid. Iga vähem peidetud sektsioon käsitleb pesastatud sektsioonide osi vabadena.
Vaikimisi on kõigil pesastatud Shufflecake'i partitsioonidel sama nähtav suurus kui ülemise taseme partitsioonil. Näiteks kui 1 GB seadmel kasutatakse kolme partitsiooni, on igaüks neist süsteemile nähtav 1 GB partitsioonina ja kogu saadaolev kettaruum jagatakse kõigi partitsioonide vahel. Kui salvestatud andmete kogumaht ületab seadme tegeliku suuruse, hakkavad tekkima I/O-vead.
Avamata pesastatud sektsioonid ei osale ruumi eraldamises; see tähendab, et kõrgema taseme sektsiooni täitmise katse kirjutab pesastatud sektsioonide andmed üle, kuid ei paljasta nende olemasolu sektsiooni paigutatavate andmete suuruse analüüsi kaudu enne vea tekkimist (eeldatakse, et kõrgema taseme sektsioonid sisaldavad muutumatuid andmeid). Andmeid ei kasutata juhuslikult ja mitte kunagi eraldi ning regulaarselt töötatakse alati kõige uuema pesastatud sektsiooniga; skeem ise viitab sellele, et peamine on hoida andmete olemasolu saladuses, isegi andmete kaotamise hinnaga.
Shufflecake'i implementatsioon pakub suhteliselt kõrget jõudlust, kuid üldkulude tõttu on selle jõudlus umbes poole parem kui LUKS-alamsüsteemil põhineval ketta krüptimisel. Shufflecake'i kasutamine toob kaasa ka täiendavaid RAM-i ja kettaruumi kulusid teenuseandmete salvestamiseks. Mälukulud on hinnanguliselt 60 MB partitsiooni kohta ja kettaruumi kasutus on hinnanguliselt 1% partitsiooni kogumahust. Võrdluseks, sarnase otstarbega WORAM-tehnika tulemuseks on 5–200-kordne aeglustus ja 75% kasutatava kettaruumi kadu.
Utiliitide (shufflecake-userland) ja Linuxi kerneli mooduli (dm-sflc) kood on kirjutatud C-keeles ja välja antud GPLv3 litsentsi all, mis teeb kokkusobimatuse tõttu võimatuks välja antud kernelimooduli kaasamise Linuxi põhikernelisse. GPLv2 litsentsi alusel, mille alusel kernel tarnitakse.
Kui olete huvitatud lisateabe saamisest, leiate üksikasjad järgmiselt lingilt.