Getrainde honden ruiken SD-kaarten en USB-sticks
#################
Veel gebruikers vragen zich af of een checksum of een CRC de beste methode is om data op een USB flash drive te controleren. Hieronder volgt een eenvoudig overzicht met voorbeelden en uitleg. Onderaan dit artikel vindt u referentielinks voor wie dieper in de materie wil duiken.
Kort antwoord: Cyclische Redundancy Check (CRC) is betrouwbaarder dan een checksum voor het controleren van data op een USB flash drive.
Veel mensen geloven dat een checksum (zoals MD5) de beste methode is, waarschijnlijk omdat dit eenvoudiger te begrijpen en te implementeren is. Maar checksums hebben tekortkomingen: er is een kans dat beschadigde of verwisselde bits alsnog een correcte checksum opleveren.
Checksum: gebruikt optellingen in de berekeningen. De zender telt alle bits bij elkaar op en voegt de som toe. De ontvanger herhaalt dit proces en vergelijkt het resultaat. Het probleem: fouten onderweg kunnen onopgemerkt blijven.
CRC: gebruikt binaire staartdeling. Dit lijkt ingewikkelder, maar biedt een veel grondigere controle omdat het hele datapakket wordt meegenomen, niet slechts één controlesomgetal.
Checksum: Stel dat u een bak met appels en sinaasappels van Los Angeles naar New York stuurt. Er worden alleen aantallen genoteerd, niet de details. Onderweg worden rode appels vervangen door groene. De telling klopt nog steeds, maar de inhoud is veranderd zonder dat de ontvanger dit weet.
CRC: Hier worden de appels en sinaasappels netjes op trays gelegd, zoals eierdozen. Het manifest beschrijft niet alleen aantallen, maar ook kleuren en lagen. De ontvanger kan controleren of alle details overeenkomen. CRC kijkt dus naar meer kenmerken van de data en kan fouten beter detecteren.
De reden om verificatie te gebruiken is meestal ruis of fouten in transmissielijnen, niet zozeer hackers. Ruis kan ontstaan door slecht ontwerp van de printplaat, onvoldoende aarding (USB-specificatie vraagt minimaal vier lagen PCB, veel goedkope drives hebben er maar twee) of gebruik van materialen van mindere kwaliteit. Een robuuste verificatiemethode zoals CRC helpt om te bepalen of data volledig en correct is aangekomen.
Bron: Met dank aan de Nexcopy Inc ingenieurs voor het helder uitleggen van dit technische onderwerp.
We weten allemaal dat een USB-stick slechts een beperkt aantal keren kan worden beschreven. Sommige bronnen spreken van 1.000 schrijfbewerkingen, anderen van 100.000. Een exact getal is lastig te geven, omdat de levensduur afhankelijk is van zowel het type flashgeheugen als de gebruikte controller. Wel kunnen we de theorie uitleggen achter het verlengen van de levensduur. In essentie draait het om twee factoren: (A) het type en de kwaliteit van het geheugen en (B) de techniek van wear leveling.
NAND-flash kan bestaan uit SLC, MLC of TLC (single-level cell, multi-level cell of triple-level cell). SLC vind je vrijwel alleen in high-end producten; MLC en vooral TLC zijn het meest gebruikelijk in USB-sticks.
Wear leveling is een techniek die de controller gebruikt om het aantal wis- en schrijfcycli gelijkmatig over alle cellen in het geheugen te verdelen. Een cel kan meestal 3.000 tot 5.000 cycli aan. Daarnaast heeft flashgeheugen ook speciale blokken die tot circa 100.000 cycli aankunnen. De controller vermijdt overmatig gebruik van dezelfde cellen door data slim te herschikken en nieuwe cellen in kaart te brengen.
Geen wear leveling: Zonder wear leveling worden logische adressen direct toegewezen aan fysieke blokken. Dit zorgt ervoor dat bepaalde blokken snel slijten terwijl andere ongebruikt blijven. Zodra een aantal blokken defect raakt, is de drive onbruikbaar.
Dynamische wear leveling: Hierbij worden logische adressen telkens opnieuw toegewezen wanneer data wordt herschreven. Oude blokken worden ongeldig verklaard en nieuwe blokken gebruikt. Zo wordt slijtage beter verdeeld.
Statische wear leveling: Dit lijkt op dynamische wear leveling, maar gaat een stap verder door ook zelden gebruikte blokken periodiek te verplaatsen. Zo worden zelfs de minst gebruikte cellen in de rotatie opgenomen en slijten alle blokken gelijkmatiger.
Bron: Wikipedia en Nexcopy Inc.