Publikigita Shufflecake, ilaro por kreado de kaŝitaj ĉifritaj disksekcioj

Sekureca revizia kompanio Kudelski Security publikigis ilon nomatan Shufflecake, kiu ebligas al vi krei kaŝitajn dosiersistemojn disigitajn tra la disponebla libera spaco sur ekzistantaj sekcioj kaj nedistingeblaj de hazardaj restaj datumoj. Sekcioj estas kreitaj tiel, ke sen koni la alirŝlosilon, estas malfacile pruvi ilian ekziston eĉ kiam oni faras krimmedicinan analizon. La kodo de la utilecoj (shufflecake-userland) kaj la Linuksa kerno-modulo (dm-sflc) estas skribitaj en C kaj distribuita sub la permesilo GPLv3, kio malebligas inkluzivi la publikigitan kernan modulon en la ĉefa Linuksa kerno pro nekongruo kun la permesilo GPLv2 sub kiu la kerno estas provizita.

La projekto estas poziciigita kiel pli altnivela solvo ol Truecrypt kaj Veracrypt por kaŝi datumojn, kiuj postulas protekton, kiu havas denaskan subtenon por la Linukso-platformo kaj permesas vin meti ĝis 15 kaŝitajn sekciojn sur la aparato, nestitajn unu en la alian por konfuzi la analizadon. de ilia ekzisto. Se la uzo de Shufflecake mem ne estas sekreto, kiel oni povas juĝi, ekzemple, per la ĉeesto de la respondaj utilecoj en la sistemo, tiam la tuta nombro de kaŝitaj sekcioj kreitaj ne povas esti determinita. La kreitaj kaŝitaj sekcioj povas esti formatitaj laŭ la bontrovo de la uzanto por akomodi ajnan dosiersistemon, ekzemple, ext4, xfs aŭ btrfs. Ĉiu sekcio estas traktata kiel aparta virtuala bloka aparato kun sia propra malŝlosilo.

Por konfuzi la spurojn, oni proponas uzi la modelon de konduto de "probabla neado", kies esenco estas, ke valoraj datumoj estas kaŝitaj kiel pliaj tavoloj en ĉifritaj sekcioj kun malpli valoraj datumoj, formante specon de kaŝita hierarkio de sekcioj. En kazo de premo, la posedanto de la aparato povas malkaŝi la ŝlosilon al la ĉifrita sekcio, sed aliaj sekcioj (ĝis 15 nestitaj niveloj) povas esti kaŝitaj en ĉi tiu sekcio, kaj determini ilian ĉeeston kaj pruvi ilian ekziston estas problema.

Kaŝado estas atingita konstruante ĉiun sekcion kiel aro de ĉifritaj tranĉaĵoj metitaj ĉe hazardaj pozicioj sur la stokada aparato. Ĉiu tranĉaĵo estas kreita dinamike kiam aldona stoka spaco estas necesa en la sekcio. Por malfaciligi analizon, oni alternas tranĉaĵojn de malsamaj sekcioj, t.e. Shufflecake-sekcioj ne estas ligitaj al apudaj regionoj kaj tranĉaĵoj de ĉiuj sekcioj estas miksitaj. Informoj pri uzitaj kaj senpagaj tranĉaĵoj estas konservitaj en loka mapo asociita kun ĉiu sekcio, kiu estas referencita per ĉifrita kaplinio. La kartoj kaj kaplinio estas ĉifritaj kaj, sen koni la alirŝlosilon, estas nedistingeblaj de hazardaj datumoj.

La kaplinio estas dividita en fendojn, ĉiu el kiuj difinas sian propran sekcion kaj rilatajn tranĉaĵojn. La fendoj en la kaplinio estas stakigitaj kaj rekursive ligitaj - la nuna fendo enhavas la ŝlosilon por deĉifri la parametrojn de la antaŭa sekcio en la hierarkio (la malpli kaŝita), permesante al unu pasvorto esti uzata por deĉifri ĉiujn malpli kaŝitajn sekciojn asociitajn kun la elektita sekcio. Ĉiu malpli kaŝita vando traktas la tranĉaĵojn de nestitaj subdiskoj kiel liberaj.

Defaŭlte, ĉiuj Shufflecake-subsekcioj havas la saman videblan grandecon kiel la supranivela sekcio. Ekzemple, se estas tri subdiskoj sur 1 GB-aparato, ĉiu el ili estos videbla por la sistemo kiel 1 GB-diskodisko kaj la tuta disponebla diskspaco estos dividita inter ĉiuj subdiskoj - se la totala grandeco de la stokitaj datumoj superas. la reala grandeco de la aparato, ĝi komencos I/O-eraro estas ĵetita.

Nestitaj sekcioj kiuj ne estas malfermitaj ne partoprenas en spac-asigno, t.e. provo plenigi supranivelan subdiskon rezultos, ke datumoj estas pecetigitaj en nestitajn sekciojn, sed ne ebligos malkaŝi ilian ĉeeston per analizo de la grandeco de la datumoj kiuj povas esti metitaj en la sekcion antaŭ ol la eraro komenciĝas (ĝi oni supozas, ke la supraj subdiskoj enhavas neŝanĝeblajn datumojn por distri la atenton kaj neniam aparte ne estas uzataj, kaj regula laboro ĉiam efektiviĝas kun la plej lastatempa nestita sekcio, la skemo mem implicas, ke estas pli grave konservi la sekreton de la ekzisto de datumoj ol perdi ĉi tiujn datumojn).

Fakte, 15 Shufflecake-diskoj ĉiam estas kreitaj - la uzantpasvorto estas alfiksita al la uzitaj subdiskoj, kaj la neuzataj subdiskoj estas provizitaj per hazarde generita pasvorto (estas neeble kompreni kiom da sekcioj estas efektive uzataj). Kiam Shufflecake-sekcioj estas pravigitaj, la disko, sekcio aŭ virtuala bloka aparato asignita por ilia lokigo estas plenigita kun hazardaj datumoj, kio malebligas identigi Shufflecake-metadatenojn kaj datumojn kontraŭ la ĝenerala fono.

La efektivigo de Shufflecake havas sufiĉe altan rendimenton, sed pro la ĉeesto de superkosto, ĝi estas proksimume duoble pli malrapida en trairo kompare kun disko-ĉifrado bazita sur la LUKS-subsistemo. Uzado de Shufflecake ankaŭ rezultigas kromajn kostojn por RAM kaj diskospaco por stoki servajn datumojn. Memorkonsumo estas taksita je 60 MB per sekcio, kaj diskspaco je 1% de la totala grandeco. Por komparo, la WORAM-tekniko, simila en celo, kondukas al malrapidiĝo de 5 ĝis 200 fojojn kun 75% perdo de uzebla diskospaco.

La ilaro kaj kernomodulo estis nur testitaj sur Debian kaj Ubuntu kun kernoj 5.13 kaj 5.15 (subtenataj sur Ubuntu 22.04). Oni rimarkas, ke la projekto ankoraŭ devas esti konsiderata kiel funkcianta prototipo, kiu ne estu uzata por konservi gravajn datumojn. En la estonteco, ni planas fari pliajn optimumojn por rendimento, fidindeco kaj sekureco, kaj ankaŭ provizi la kapablon ekfunkciigi de Shufflecake-diskoj.

fonto: opennet.ru

Aldoni komenton