TRIM v discích SMR a SSD.

Adresování úrovní v datových nosičích.

Z pohledu uživatele jsou data uložena v souborech uspořádaných v logické adresářové struktuře. Adresářové stromy jsou zase umístěny na oddílech – logicky oddělených částech disků nebo jejich sadách – polích RAID (Redundant Array of Independent Discs - vícenásobné pole nezávislých disků). Ukládání souborů v uspořádané struktuře je spravováno souborovými systémy, které se v detailech výrazně liší.
Kromě těchto rozdílů si můžeme všimnout i některých podobností napříč všemi souborovými systémy. Souborové systémy uspořádávají soubory do určitých alokačních jednotek nazývaných klastry (v souborových systémech souvisejících s Microsoftem) nebo bloky (obvykle v prostředích odvozených od Unixu), v závislosti na nomenklatuře konkrétního souborového systému. Vzhledem k tomu, že pojem blok je velmi nejednoznačný, budeme dále pro označení těchto alokačních jednotek používat termín „klastr“, abychom se vyhnuli nejasnostem.
Klastry obsahují menší nebo větší (ale vždy rovný mocnině dvou) počet sektorů LBA (Logical Block Addressing). Adresování LBA bylo vynalezeno v první polovině 80. let 20. století s cílem zjednodušit správu pevných disků, nahradit adresování CHS (cylinder, sector, head), které odkazovalo přímo na fyzické sektory, a zajistit kompatibilitu mezi zařízeními od různých výrobců. Toto adresování bylo přijato standardy ATA a SCSI a používají ho také další komunikační protokoly používané k výměně informací s různými datovými nosiči.
Pokud je nutné číst nebo zapisovat data na médium, klastrované adresování souborového systému se převede na adresování LBA a příslušné příkazy ukazují na příslušné sektory v tomto adresování. Pevné disky se ale stále skládají z menšího či většího počtu desek s kruhovými, soustřednými stopami rozdělenými do fyzických sektorů. Proto je nutné vhodně přiřadit adresní čísla LBA konkrétním fyzickým sektorům. Tento úkol je řešen částí firmwaru – subsystémem překladu logických adres na fyzické, krátce nazývaným překladač.
Podobná situace je i v případě polovodičových médií ukládajících data v čipech Flash-NAND. Také je adresujeme pomocí LBA adresování, i když tento typ média nemá desky, stopy ani sektory. Zařízení Flash-NAND adresují data ve stránkách (minimální jednotka programování a čtení) a blocích (minimální jednotka mazání). Sektory jsou emulovány řadičem výhradně pro účely komunikace s okolním světem. A také v případě polovodičových médií obsahuje firmware část zodpovědnou za překlad fyzických adres na logické, často označovanou jako mezivrstva překladu flaš (FTL - Flash Translation Layer).
Adresování LBA používají také pole RAID. Když mluvíme o RAID poli, máme na mysli jeho LBA adresování, které je následně řadičem pole převedeno na LBA adresování jednotlivých disků, které ho tvoří. Pokud se zabýváme komplexním prostředím, ve kterém se vyskytují pole za polem, je LBA adresování pole, které adresujeme, nejprve převedeno na adresování polí, která ho tvoří, a teprve poté na adresování fyzických disků.
Adresování LBA používají také soubory virtuálních strojů. Každý z takových souborů má nainstalován svůj vlastní souborový systém, nezávislý na souborovém systému popisujícím soubor virtuálního stroje. A uvnitř takového souboru máme adresu virtuálního klastru převedenou na adresu virtuálního LBA, která nám říká, který fragment virtuálního stroje chceme číst nebo zapisovat. A pouze s těmito informacemi lze tyto adresy převést na skutečné klastry souborového systému popisující soubor virtuálního stroje a skutečné LBA adresy fyzického média.

Volný a obsazený prostor.

Když si koupíme nový disk, myslíme si, že je prázdný. Teprve jakmile ho inicializujeme, rozdělíme na oddíly, naformátujeme a začneme na něm ukládat nějaká data, začneme si všímat, že se pomalu zaplňuje. Můžeme také použít nástroje operačního systému ke kontrole, kolik volného a využitého místa máme. O použitém a volném prostoru se ale můžeme bavit pouze ve vztahu k logickým strukturám souborového systému.
Ve fyzickém smyslu každý nosič dat vždy uchovává nějakou informaci, i když je na logické úrovni neinterpretovatelná. S odkazem na jakýkoli sektor LBA vždy dostaneme nějakou odpověď, bez ohledu na to, zda chceme číst volný sektor ve smyslu logických struktur, nebo obsazený sektor. V případě nových disků to bude sekvence bajtů s hodnotou 0x00, ale v případě použitých to není tak zřejmé.
Někdy se nám může zdát, že volné místo jsou sektory vyplněné nulami a sektory obsahující jiný obsah jsou obsazené sektory. Ve skutečnosti je to jiné. Použitý prostor je velikost diskových oblastí alokovaných v logických strukturách souborového systému, i když obsahují sektory vyplněné nulami. Pokud jsou tyto nuly popsány jako součást souboru nebo nějaké logické struktury a jsou nějakým způsobem interpretovatelné, pak je nemůžeme považovat za volné místo. Na druhou stranu, i oblasti obsahující souvislé a úplné soubory, pokud nejsou správně adresovány v logických strukturách souborového systému, budou z jejich pohledu volným prostorem, do kterého lze umístit další data. Takové neadresované soubory nejsou v adresářové struktuře viditelné, ale pokud nejsou přepsány, jsou obnovitelné.

Subsystém překladu logických adres na fyzické.

Klasický překladač na pevných discích.

Po celá desetiletí byl převod LBA do fyzického adresování na pevných discích relativně jednoduchý. Fyzickým sektorům byla přiřazena sekvenční čísla LBA počínaje od 0 do posledního čísla vyplývajícího z nominální kapacity disku. Adresy LBA byly přiřazovány počínaje stopami na vnějším okraji diskové desky a jejich čísla rostou směrem k ose motoru. Je to proto, že stopy s větším poloměrem jsou delší, takže na ně lze umístit více sektorů než na kratší stopy s menším poloměrem.
Díky tomuto řešení lze počáteční LBA sektory číst rychleji, protože během jedné otáčky desky jich lze přečíst více. To je snadno pozorovatelné při testování disku, kde graf rychlosti čtení klesá s rostoucími čísly adres LBA. Pokud disk používá více povrchů desek, je kontinuita číslování na daném povrchu čas od času přerušena, aby se následné adresy umístily na jiné povrchy. Přiřazení specifických LBA adres konkrétním povrchům desek se nazývá mapa hlav, protože taková mapa nám říká, která hlava čte specifické rozsahy LBA adres.
Jedním z úkolů překladače je obejít vadné sektory. Z pohledu překladového subsystému lze vadné sektory rozdělit na tovární a ty, které vznikají během provozu. První z nich jsou zaznamenány v primárním seznamu defektů (seznam P) a při přiřazování adresních čísel LBA jsou přeskakovány. Ty jsou odhaleny během provozu disku a zaznamenány v seznamu inkrementálních defektů (seznam G), a protože jim již jsou přiřazena čísla adres LBA, jsou tato čísla přiřazena rezervním sektorům v procesu přemapování (realokace).
Detaily překladového subsystému se liší v závislosti na architektuře firmwaru a modelu disků, ale k pochopení fungování funkce TRIM nebudeme potřebovat tak detailní znalosti. Ve skutečnosti nejvýznamnější změnou, ke které došlo mezi zavedením adresování LBA a vynálezem šindelového magnetického záznamu, bylo nahrazení 512-bajtových sektorů sektory o velikosti 4 kB (Advanced Format). V druhém případě jeden fyzický sektor odpovídá 8 sektorům LBA.

Diský SMR a překladač druhé úrovně

Ve snaze o zvýšení hustoty záznamu úložiště si výrobci pevných disků uvědomili, že čtecí hlava je schopna číst signál z mnohem užší stopy, než na kterou dokáže zapisovat zapisovací hlava. Proto vyvinuli metodu šindelového (dlaždicového) magnetického záznamu (SMR - Shingled Magnetic Recording), při které následující stopy částečně přepisují ty předchozí. To vyžadovalo změnu konstrukce zapisovací hlavy tak, aby indukovala magnetické pole asymetricky, a tím se nejsilnější signál zaznamenával co nejblíže předchozí stopě, aniž by s ní interferoval.
Negativním důsledkem zavedení dlaždicového záznamu byla ztráta volného přístupu k sektoru při psaní. Když zapisujeme nový obsah do sektoru, magnetické pole indukované hlavou poškozuje obsah sektorů umístěných na dalších stopách. Aby se zabránilo nutnosti pokaždé přepisovat celý povrch desky, seskupují výrobci stopy do SMR zón s kapacitou několika desítek MB a tyto zóny oddělují bezpečnými prostory.
Provedení změn v jednom sektoru však stále vyžaduje přepsání celé skupiny stop. Protože to má velmi negativní dopad na výkon zápisu, výrobci se rozhodli zapisovat nový obsah sektorů nikoli tam, kde se fyzicky nacházely dříve, ale tam, kde je to v dané situaci nejpohodlnější. Detaily řešení tohoto problému se u jednotlivých výrobců liší, ale všechny mají jedno společné: ruší relativně trvalé propojení adresy LBA s konkrétní fyzickou adresou.
V discích SMR mohou adresní čísla LBA snadno měnit svou fyzickou polohu a druhá úroveň překladače je zodpovědná za sledování jejich aktuální polohy. Takové dynamické změny pozice logických adres ve fyzických adresách vyžadují zavedení speciálních tabulek do firmwaru disku pro zaznamenání těchto změn. Prakticky každý zápis na disk zahrnuje nutnost zaznamenat nové fyzické umístění některých LBA adres. To má za následek zvýšené riziko chyb v modulech překladačů druhé úrovně, což je běžná příčina selhání disků SMR a ztráty přístupu k datům.

Vrstva překladu flaš v polovodičových nosičích.

Charakteristickým rysem polovodičových médií je nemožnost přímého přepsání existujícího obsahu. To je dáno fyzikou ukládání dat, která umožňuje umisťovat elektrony pouze do prázdných plovoucích bran tranzistorů, které je nutné před přeprogramováním vymazat. Pokud tedy změníme obsah sektoru LBA, zapíše se na jiné fyzické místo a zastaralý obsah musí být vymazán, aby se uvolnila fyzická alokační jednotka pro následné zápisy.
Toto řešení vyžaduje, aby některé fyzické alokační jednotky v médiu byly vždy připraveny k zápisu nových dat. Adresování LBA proto nemůže pokrýt celou fyzickou kapacitu média. Poměr počtu dostupných sektorů LBA k fyzické velikosti média je kompromisem mezi snahou prodávat zařízení s co nejvyšší kapacitou a potřebou udržovat rezervu umožňující jejich efektivní a bezporuchový provoz.
Existence operací zápisu a mazání v polovodičových médiích činí úpravu obsahu sektorů LBA složitější než v magnetických médiích, která umožňují přímé přepisování. Zápis nového obsahu sektorů LBA na jiné fyzické umístění nutí překladové tabulky zaznamenat jejich nové umístění. Bloky obsahující zastaralá data jsou následně odstraněny z adresování LBA a jsou naplánovány k vymazání. Tato metoda správy dat znamená, že adresy LBA nejsou vázány na konkrétní fyzické alokační jednotky, ale rotují mezi nimi způsobem určeným prováděnými operacemi.
Další komplikací v případě polovodičových médií je, že používají dvě různé alokační jednotky: stránky, které představují minimální jednotku pro čtení a programování, a bloky, které představují minimální jednotku pro mazání. Velikost stránek obvykle umožňuje uložení od jednoho do 32 512 bajtových sektorů LBA (jejich počet na stránce je vždy mocnina dvojky) a také redundantních informací nezbytných pro správný provoz média. Bloky zase obsahují několik až několik stovek stránek a do určitého bodu byl počet stránek v bloku mocninou dvou, ale toto pravidlo se již několik let nedodržuje.
To v praxi znamená, že změny v obsahu nosiče na úrovni sektoru LBA způsobit, že fyzické alokační jednotky obsahují současně aktivní i zastaralé sektory LBA. To se stává problematickým, když se počet volných bloků připravených k přijetí nových dat začne snižovat. Dalším problémem, kterému čelí polovodičová média, je jejich opotřebení v důsledku operací mazání a zápisu, které nakonec vede k selhání zařízení. A právě tyto problémy vedly k implementaci funkce TRIM.

Jak funguje TRIM v SSD discích?

Základem funkce TRIM je fakt, že, alespoň teoreticky, z pohledu uživatele není nutné fyzicky ukládat data, která nejsou alokována v logických strukturách souborového systému. Pro překladový subsystém stačí vědět, které sektory leží v oblastech obsazených soubory nebo logickými strukturami, které je popisují, a které představují logicky volné místo. A v druhém případě může řadič místo fyzického čtení požadovaných sektorů okamžitě odeslat sektory vyplněné nulami.
Funkce TRIM funguje do jisté míry analogicky s řídkými soubory (sparse file), u kterých větší fragmenty souboru vyplněné nulami nemusí být fyzicky zapsány do oddílu. V některých souborových systémech stačí, aby metadata obsahovala informace o tom, kolik klastrů vyplněných nulami a kam přesně v souboru mají být při čtení vloženy. A pokud firmware SSD umožňuje zahrnutí podobných informací do vrstvy překladu flaš, překladač nebude hledat fyzické umístění hledaných sektorů, ale bude informovat řadič, že se jedná o „prázdné“ sektory.
Zavedení funkce TRIM v discich SSD zvýšilo jejich výkon. Absence nutnosti fyzického čtení sektorů umístěných ve „volné oblasti“ disku znamená, že můžeme získat odpověď rychleji. Můžeme také uchovávat více vymazaných bloků, což má nejen pozitivní vliv na výkon zápisu, ale také snižuje zátěž média z programovacích a mazací operací a usnadňuje algoritmy pro vyrovnávání opotřebení. To je důležité vzhledem k životnosti polovodičových médií, která do značné míry závisí na operacích zápisu a mazání.
Protože samotná paměťová média tato data neinterpretují, ale pouze ukládají, je pro fungování funkce TRIM, kromě její podpory firmwarem disku, nezbytný také zdroj informací o tom, co se děje na úrovni logických struktur souborových systémů. Disk musí nějak vědět, které sektory jsou „používány“ a které ne. Informace o tomto tématu poskytuje řadiči operační systém spravující souborové systémy na oddílech disku. V dnešní době většina používaných operačních systémů podporuje funkci TRIM, a podpora pro tuto funkci je ve výchozím nastavení povolena. Ne ve všech případech však operační systém podporuje funkci TRIM pro všechny podporované souborové systémy. Existují také situace, kdy operační systém nechce s některými disky spolupracovat, ačkoli systém i médium podporují funkci TRIM. Příkladem by mohly být starší verze systému MacOS, které vyžadovaly externí software pro podporu disků SSD od jiných dodavatelů než od společnosti Apple.
Aby funkce TRIM fungovala, musí být také podporována komunikačním protokolem použitým ke komunikaci s médiem. TRIM proto nebude fungovat na starším hardwaru, který není kompatibilní s ATA 8. Mohou se také vyskytnout problémy s řadiči RAID nepodporujícími funkce TRIM. Tuto funkci nepodporuje také většina adaptérů USB. Ekvivalentem funkce TRIM v SCSI je UNMAP.

Rozptyl dat v čipech Flash-NAND.

Data v polovodičových médiích nejsou zapsána postupně, ale jsou rozptýlena mezi různými fyzickými alokačními jednotkami. To je ovlivněno mnoha faktory souvisejícími s výkonem a trvanlivostí média. Paměti Flash-NAND jsou poměrně pomalé, takže výkon médií využívajících tyto čipy je v mnoha systémech postaven na paralelním zpracování dat, podobně jako v případě RAID polí, která zpracovávají data paralelně na mnoha discích. Druhou důležitou příčinou rozptylu dat je problém Jouleova tepla uvolňovaného během zápisu a mazání dat.
Programovací a mazací operace v zařízeních využívajících čipy Flash-NAND využívají kvantově-mechanický jev tunelovací Fowlera-Nordheima, který vyžaduje zvýšení napětí uvnitř zařízení a je spojen se ztrátami energie. Pokud by se fyzický zápis do čipů Flash-NAND prováděl sekvenčně, mohlo by docházet k častému poškození paměti v důsledku lokálního přehřátí čipu. Proto jsou tyto paměti často vnitřně logicky rozděleny na dvě nebo čtyři části, mezi které se data zapisují v prokládaném pořadí.
Z výše uvedených důvodů jsou data zapsaná na polovodičová média rozptýlena takovým způsobem, že sousední sektory LBA obvykle fyzicky končí na různých stránkách. Toho si lze snadno všimnout na médiích, kde dochází k chybám při čtení. Při skenování takového média můžete často pozorovat sekvence vadných sektorů prokládaných těmi dobrými. Takové vadné sektory se čtou ze vadné strany a správně přečtené sektory mezi nimi se nacházejí na dobré straně.

Sběr odpadů.

Když jsou provedeny změny na úrovni adresování LBA, obsah změněných sektorů se zapíše na jiné fyzické stránky umístěné v jiných fyzických blocích. Protože bloky obsahují mnoho stránek, v dnešní době jich obvykle stovky, snadno se setkáme se situacemi, kdy bloky budou obsahovat některé stránky s aktuálním obsahem a některé stránky, které jsou zastaralé. Dokud blok obsahuje aktuální stránky, nelze ho smazat a připravit k přijetí nových dat.
Tato situace je z hlediska správy adresování médií velmi nevýhodná, protože se může ukázat, že příliš mnoho bloků obsahuje malý počet stránek s aktuálním obsahem, a proto je nelze smazat. To může způsobit výrazný pokles dostupných smazaných bloků a ztížit zápis nových dat, i když z logického hlediska bude médium stále obsahovat dostatek volného místa. K vyřešení tohoto problému se používá procedura sběru odpadů - Garbage Collection.
Inspirován procedurami sběru odpadů v paměti s náhodným přístupem, sběr odpadů v polovodičových médiích zahrnuje přesun stránek obsahujících aktuální obsah z bloků, které obsahují relativně málo takových aktuálních stránek, do jiných bloků. To umožňuje odstranit bloky, které již neobsahují aktuální data. Tento proces obvykle probíhá na pozadí, když řadič médií není zaneprázdněn zpracováním příchozích příkazů. Funkce TRIM umožňuje přeskočit stránky z uvolňování paměti, které obsahují platná data, ale byla odstraněna na logické úrovni. To nejen zrychluje provoz média, ale také snižuje jeho zátěž při operacích zápisu a mazání.

Proč je TRIM součástí disků SMR?

V případě disků SMR je použití funkce TRIM důsledkem ztráty volného přístupu k sektoru při zápisu. To donutilo výrobce hledat řešení pro úsporu výkonu zápisu disků SMR, což vedlo ke složitosti subsystému překladu logických adres na fyzické. Různí výrobci disků používají k problému ukládání dat na disky SMR různé přístupy.
Jedním z používaných řešení je použití stop s normální šířkou – Media Cache. Data přicházející na disk se zapisují do vyrovnávací paměti a teprve později, když disk není načten uživatelskými příkazy, se přenesou do příslušných zón SMR. Díky tomu může zdlouhavý proces přepisování celých zón SMR a čištění mezipaměti médií probíhat ve většině případů na pozadí, aniž by si to uživatel všiml. Ukládání velmi velkých bloků dat najednou je však problematické, zejména pokud tato data obsahují velké množství malých souborů. V takových situacích se může vyrovnávací paměť disku zaplnit a rychlost zápisu může drasticky klesnout.
Dalším přístupem je zapisovat data přímo do zón SMR, což jsou často jiné zóny, než ve kterých se dané sektory LBA nacházely před zápisem. Existuje zde určitá podobnost s rotací adres LBA napříč fyzickými alokačními jednotkami, ke které dochází v polovodičových médiích. I když v případě magnetických médií, jako jsou pevné disky, operaci mazání nepotřebujeme, protože můžeme přímo přepsat existující data, při zápisu do zóny SMR bychom nechtěli poškodit obsah těch sektorů, které se nemění.
Proto má v případě obou výše uvedených řešení použití funkce TRIM pozitivní vliv na výkon disku. Jak při zápisu, kdy disk ví, které oblasti nejsou alokovány v logických strukturách souborových systémů, a proto může ušetřit čas potřebný k jejich zápisu do cílového umístění, tak i při čtení, kdy nemusí fyzicky hledat sektory obsahující „prázdné místo“ a může místo toho obsahu vystavit sektory naplněné nulami. Protože na rozdíl od polovodičových médií operace zápisu neopotřebovávají pevné disky, funkce TRIM neovlivňuje jejich životnost jako u disků SSD.

Praktické důsledky funkce TRIM.

Obnova dat a počítačová forenzní analýza.

V případě médií používajících funkci TRIM znamená skutečnost, že data jsou mazána na logické úrovni, že při práci na úrovni adresování LBA nebudeme schopni obnovit smazané soubory. To je způsobeno tím, že v reakci na požadavek na přečtení sektorů obsahujících tyto soubory disk vrátí sektory vyplněné nulami. Nicméně na fyzické úrovni mohou tato data stále existovat. V případě pevných disků a SSD je situace jiná.
Protože polovodičová média musí fyzicky mazat data, proces fyzického ničení logicky smazaného obsahu začíná v podstatě ihned po jeho smazání. Důležité je, že se jedná o proces, který probíhá na úrovni firmwaru, takže dokud je médium připojeno k napájení, probíhá nezávisle na ostatních příkazech přijímaných z počítače a nelze jej zastavit pomocí blokátorů zápisu běžně používaných v počítačové forenzní analýze. Proces mazání bloků lze zastavit odpájením paměťových čipů a jejich načtením z programátoru nebo uvedením disku SSD do servisního režimu (safe mode).
V případě odpájení čipů Flash-NAND může obnova dat narazit na řadu praktických překážek, z nichž nejzávažnější je šifrování. V současné době se šifrování v discích SSD široce používá nejen proto, že se dobře prodává v marketingu jako prvek zabezpečení dat, ale také proto, že šifrovací algoritmy dobře randomizují data, což pomáhá snižovat výskyt chyb při čtení bitů. Tam, kde se nepoužívá šifrování, se často používá dynamická randomizace, kterou je matematicky obtížné dekódovat. Další zásadní překážkou, se kterou se lze setkat při dekódování binárních obrazů paměťových čipů, je interní komprese, jejímž účelem je snížit objem fyzicky uložených dat a tím i počet operací zápisu, které spotřebovávají čipy.
Z tohoto důvodu je odpájení čipů zdaleka ne ve všech případech řešením, které slibuje efektivní obnovu dat. Alternativou je přepnout SSD do servisního režimu, ve kterém řadič nemá přímý přístup k paměti. Pokud SSD je v servisním režimu, je možné přistupovat k fyzickému adresování a zároveň blokovat procesy na pozadí, je možné obnovit část dat, která ještě nebyla fyzicky smazána. Jelikož však proces fyzického mazání dat označených TRIMem jako smazaných na logické úrovni může proběhnout během několika až několika desítek minut, je šance na obnovení čehokoli tímto způsobem poměrně iluzorní.
Situace je o něco lepší v případě pevných disků, které nepodporují operace mazání dat. Na pevných discích zůstávají data, která jsou logicky smazána při fyzickém adresování, nedotčena, dokud nejsou přepsána jiným obsahem. V jejich případě není doba odezvy a samotný fakt připojení napájení v případě podpory funkce TRIM pro obnovu dat tak kritický. Je však třeba mít na paměti, že disky SMR nejsou bez procesů na pozadí, např. čištění mezipaměti Media Cache, přičemž se nepřepisují jednotlivé sektory, ale celé zóny SMR.

Zničení dat.

V případě zničení dat funkce TRIM ztěžuje ověření, zda byl úkol proveden správně. To znamená, že na logické úrovni můžeme dostat odpověď naznačující účinné zničení dat, zatímco na úrovni fyzické adresy teto data stále existují a je možné je obnovit. Teprve později vedou operace mazání bloků probíhající na pozadí ke skutečnému zničení dat.
Navíc u polovodičových médií i disků SMR existuje riziko, že nesmazaná data zůstanou v oblastech mimo adresování LBA. Toto riziko je větší v případě pevných disků, protože v případě polovodičových médií je nutné fyzicky vymazat bloky, které spadají mimo adresování LBA. Proto se poměrně běžně doporučuje pro skartaci dat používat proceduru Secure Erase, která má schopnost pracovat blíže fyzické adrese média, což by mělo zajistit efektivní skartaci dat. Někdy se však objevují pochybnosti o správné implementaci procedury Secure Erase ve firmwaru médií.
Zajímavý příklad nesprávné implementace procedury Secure Erase v pamětech eMMC předvedla Aya Fukami během konference Flash Data Recovery & Digital Forensic Summit 2024. V prezentaci „Exploiting the eMMC security features using the VNR” ukázala čipy eMMC, ze kterých bylo možné obnovit téměř 100 % obsahu, a to i přes provedení operace Secure Erase a přestože na úrovni adresování LBA byly vráceny sektory s obsahem vyplněným nulami. Nicméně, když jsme se dostali až na úroveň fyzického adresování, dospěli jsme k závěru, že obsah fyzických adresních jednotek byl poškozen jen mírně a významnou část bylo možné obnovit.
Z tohoto důvodu je při ničení dat vhodné věnovat pozornost času operace Secure Erase. Pokud se provede podezřele rychle, v čase kratším, než je doba potřebná k uložení média v celém rozsahu, je pravděpodobné, že data nebyla fyzicky zničena a na subsystému překladu logických adres na fyzické byly provedeny pouze příslušné operace. V případě šifrovaných médií, navíc by mohl být zničen šifrovací klíč (tzv. cryptoerase), což výrazně zvyšuje bezpečnost operace. V takových situacích je však lepší provést operaci Secure Erase s omezenou jistotou a zničit data přepsáním celého média.

Jak vypnout funkci TRIM?

Ve Windowsie

Spusť příkazový řádek (cmd) jako správce a zadej příkaz:

fsutil behavior set disabledeletenotify 1

V Linuxu

V případě Linuxu to není tak jednoduché a vzhledem k rozdílům mezi jednotlivými distribucemi a souborovými systémy používanými v linuxovém prostředí může být nutné ověřit si podrobnosti v dokumentaci. Funkce TRIM v Linuxu může být obvykle ovládána parametrem discard, který informuje disk o logickém smazání souboru ihned po operaci, nebo příkazem fstrim, který předává informace řadiči o logicky uvolněných oblastech po jeho ručním spuštění nebo automaticky (např. pomocí správce služeb systemd) v zadaných časových intervalech. Parametry pro připojení oddílu jsou uloženy v konfiguračním souboru etc/fstab a měly by být tam zkontrolovány. Je důležité si uvědomit, že některé souborové systémy mohou mít podporu TRIM povolenou ve výchozím nastavení (k vynucení její vypnutí se používá parametr nodiscard) nebo nastavením příznaku v parametrech superbloku.

V MacOS

Zadej do terminálu:

sudo trimforce disable

Zadej heslo správce a potvrď změny. Po potvrzení se počítač automaticky restartuje.


Stránka neshromažďuje uživatelská data