Shufflecake, isang tool para sa paglikha ng mga nakatagong volume

shufflecake

Ang Shufflecake ay isang tool para sa Linux na nagbibigay-daan sa paglikha ng maraming nakatagong volume sa isang storage device sa paraang napakahirap, kahit na sa ilalim ng forensic inspection, upang patunayan ang pagkakaroon ng mga naturang volume.

Inilabas ng kompanya ng security auditing na Kudelski Security ang Shufflecake toolset , na nagbibigay-daan sa paglikha ng mga nakatagong file system na ipinamamahagi sa mga available na libreng espasyo sa mga umiiral na partisyon, na hindi makikilala sa mga random na natitirang data. Ang mga seksyong ito ay nilikha sa paraang, nang hindi nalalaman ang access key, ay nagpapatunay na ang kanilang pag-iral ay may problema, kahit na sa panahon ng forensic analysis.

Ipinoposisyon ng proyekto ang sarili nito bilang isang mas advanced na solusyon kaysa sa Truecrypt at Veracrypt para sa pagtatago ng kumpidensyal na data, na nag-aalok ng katutubong suporta para sa platform ng Linux at nagbibigay-daan sa iyong maglagay ng hanggang 15 nakatagong partisyon sa device, na nakapaloob sa isa't isa upang palabnawin ang pagsusuri ng kanilang pag-iral.

Ang mga nakatagong partisyon na nilikha , ayon sa pagpapasya ng gumagamit, ay maaaring i-format upang umangkop sa anumang file system, halimbawa, ext4, xfs, o btrfs. Ang bawat partisyon ay itinuturing bilang isang independiyenteng virtual block device na may sarili nitong unlock key.

Upang palaboin ang mga bakas, iminungkahi ang modelo ng pag-uugali na "plausible deniability". Sa esensya, ang mahalagang data ay itinatago bilang mga karagdagang layer sa loob ng mga naka-encrypt na seksyon na naglalaman ng hindi gaanong mahalagang data, na bumubuo ng isang uri ng nakatagong hierarchy ng mga seksyon. Sa ilalim ng pressure, maaaring ibunyag ng may-ari ng device ang susi sa naka-encrypt na seksyon, ngunit ang iba pang mga seksyon (hanggang 15 nested level) ay maaaring maitago sa loob nito, na nagpapahirap sa pagtukoy ng kanilang presensya at patunayan ang kanilang pag-iral.

Ang Shufflecake at ang kernel module ay nasubukan lamang sa Debian at Ubuntu na may mga kernel na 5.13 at 5.15 (sinusuportahan ang Ubuntu 22.04). Dapat tandaan na ang proyekto ay dapat pa ring ituring na isang gumaganang prototype at hindi dapat gamitin upang mag-imbak ng sensitibong data.

Sa hinaharap, plano naming gumawa ng mga karagdagang pag-optimize para sa pagganap, pagiging maaasahan, at seguridad, pati na rin magbigay ng kakayahang mag-boot mula sa mga partisyon ng Shufflecake.

Tungkol sa Shufflecake

Nakakamit ang pagtatago sa pamamagitan ng pagbuo ng bawat partisyon bilang isang hanay ng mga naka-encrypt na segment na nakalagay sa mga random na posisyon sa storage device. Ang bawat segment ay dynamic na nalilikha kapag ang partisyon ay nangangailangan ng karagdagang espasyo sa imbakan. Upang maging kumplikado ang pagsusuri, ang mga hiwa mula sa iba't ibang mga seksyon ay pinagsasama-sama.

Ang mga seksyon ng shufflecake ay hindi naka-link sa magkadikit na mga rehiyon, at ang mga bahagi mula sa lahat ng mga seksyon ay pinagsama-sama. Ang impormasyon tungkol sa mga ginamit at libreng bahagi ay naka-imbak sa mapa ng lokasyon na naka-attach sa bawat seksyon, na tinutukoy ng naka-encrypt na header. Ang mga card at header ay naka-encrypt at, nang hindi nalalaman ang passkey, ay hindi nakikilala mula sa random na data.

Ang header ay nahahati sa mga puwang , na ang bawat isa ay tumutukoy sa sarili nitong seksyon at mga kaugnay na sektor. Ang mga puwang sa header ay nakasalansan at naka-link nang paulit-ulit: ang kasalukuyang puwang ay naglalaman ng susi upang i-decrypt ang mga parameter ng nakaraang (hindi gaanong nakatago) na seksyon sa hierarchy, na nagpapahintulot sa isang password na i-decrypt ang lahat ng hindi gaanong nakatagong mga seksyon na nauugnay sa napiling item. Ang bawat hindi gaanong nakatagong seksyon ay tinatrato ang mga bahagi ng mga nested na seksyon bilang libre.

Bilang default, lahat ng nested Shufflecake partitions ay may parehong nakikitang laki gaya ng nasa top-level na partition. Halimbawa, kung tatlong partition ang gagamitin sa isang 1GB na device, ang bawat isa ay makikita ng system bilang isang 1GB na partition, at ang kabuuang available na disk space ay ibabahagi sa lahat ng partition. Kung ang kabuuang dami ng data na nakaimbak ay lumampas sa aktwal na laki ng device, magsisimulang magkaroon ng mga I/O error.

Ang mga hindi nabuksang nested section ay hindi kasali sa alokasyon ng espasyo; ibig sabihin, ang pagtatangkang punan ang isang seksyon na mas mataas ang antas ay mag-o-overwrite sa data sa mga nested section, ngunit hindi ipapakita ang kanilang presensya sa pamamagitan ng pagsusuri ng laki ng data na maaaring ilagay sa seksyon bago pa man magkaroon ng error (ipinapalagay na ang mga seksyon na mas mataas ang antas ay naglalaman ng hindi nababagong data). Ang data ay hindi ginagamit nang nagkataon at hindi kailanman hiwalay, at ang regular na gawain ay palaging isinasagawa kasama ang pinakabagong nested section; ang schema mismo ay nagpapahiwatig na ang pangunahing bagay ay panatilihing lihim ang pagkakaroon ng data, kahit na sa kapalit ng pagkawala ng data.

Ang implementasyon ng Shufflecake ay nag-aalok ng medyo mataas na pagganap, ngunit dahil sa mga gastos sa overhead, halos kalahati ang nagagawa nito kumpara sa disk encryption batay sa LUKS subsystem. Ang paggamit ng Shufflecake ay nagdudulot din ng karagdagang gastos sa RAM at disk space para sa pag-iimbak ng data ng serbisyo. Ang mga gastos sa memory ay tinatayang nasa 60 MB bawat partition , at ang paggamit ng disk space ay tinatayang nasa 1% ng kabuuang laki ng partition. Sa paghahambing, ang katulad na layunin na pamamaraan ng WORAM ay nagreresulta sa 5- hanggang 200-beses na paghina na may 75% na pagkawala ng magagamit na disk space.

Ang code para sa mga utility (shufflecake-userland) at ang Linux kernel module (dm-sflc) ay nakasulat sa C at inilabas sa ilalim ng lisensya ng GPLv3, na ginagawang imposibleng isama ang nai-publish na kernel module sa pangunahing Linux kernel. dahil sa hindi pagkakatugma sa ilalim ng lisensya ng GPLv2 kung saan ipinapadala ang kernel.

Kung interesado kang matuto nang higit pa, makikita mo ang mga detalye sa sumusunod na link.


Idagdag bilang ginustong mapagkukunan sa Google