Pitva odvařeného 40GB SSD Intel 320
Kapitoly článků
Data
O čtení dat jsem se pokusil na náhodně vybraných místech, ale žádný cleartext jsem neobjevil, většina SSD disků šifruje, ať je již důvod jakýkoliv – lze souhlasit s menším opotřebením buňek – cokoliv po zašifrování bude v průměru zhruba stejný počet nul a jedniček. Z pohledu spotřeby při programování a mazání to bude taky lepší – žádné špičky, ale v průměru konstantní proud nezávisle od obsahu dat nebo buněk. Také to ale ztěžuje obnovu dat, když výrobce neuvolní specifikaci ukládacího algoritmu.
Co se zjistit dalo, je formátování dat. Disk používá sektory o velikosti 512 bajtů (kompatibilita s IDE/SATA), které jsou doplněny 27 bajty doplňkových informací – kontrolním součtem resp. opravným kódem (využívá se zejména BCH). Sektory a kontrolní součty jsou za sebou 16krát (539 × 16 = 8624) a zbylých 16 bajtů do konce stránky vypadá jako nevyužito. Stejný obsah sektoru končí vždy stejnou hodnotou kontrolního kódu.
Mapa vad
Nejzajímavější informace, která vlastně byla i cílem mého zájmu o zprovoznění flash pamětí, byla mapa vad. Víme, že paměti obsahují vadné bity a že jejich počet používáním přibývá. Ale kolik vad může takový „hodně jetý“ obvod obsahovat? Když se naskytla příležitost získat obvody z utrápeného SSD v akci Deep in Hell, neodolal jsem. A výsledek je vidět zde:
Obrázek je vizualizací jednoduché detekce vad – založené na faktu, že smazaná paměť by měla mít jen hodnotu jedničkovou, resp. 0xFF
. Protože jsem nechtěl smazat obsah obvodů, je použité místo označeno šedě, smazané pak bílou barvou a stránky obsahující výjimečně nulu v jinak jedničkové posloupnosti jsou tmavé body – vadné bloky. Kvůli lepší přehlednosti jsou na náhledovém obrázku ještě zesíleny. Liché a sudé bloky jsou vedle sebe, takže bitmapa pro každý obvod měří 512 × 2048 px.
Původní výpis z detekčního algoritmu byl v této formě:
První sloupec: číslo bloku, následováno 256 stavy stránek. X
/Y
/Z
jsou nejedničková data nalezená v počátečních 1 / 16 / 512 bajtech, =
jsou naformátované sektory (zřejmě FF data v celém sektoru), .
značí zcela prázdný sektor po smazání. Náhodný výskyt X
Y
Z
v okolí plném .
jsou stránky obsahující chybný (nulový) bit.
Pro úplnost, doplňkové značení na obvodech v pořadí zleva doprava je: CH772, CH772, CB852, CB8F2, CB852, CH772 – potvrzující můj odhad, že počet chyb závisí na výrobní sérii. Obvody souhlasně označené CH772 jsou ty, které mají chyb „viditelně méně“.
Je také vidět, že dvě oblasti (liché a sudé bloky) mají jiný charakter chyb – pravá polovina každé mapy obsahuje chyb méně. Zda je takto viditelný rozdíl možné způsobit při výrobě nebo návrhu obvodu, nebo jen nesprávným používáním, necháme na každém čtenáři.