Wat is hashing?
Hashing is het proces van het vertalen van een gegeven pakket met informatie naar een code. Een hashfunctie wordt gebruikt om de informatie te vervangen door een nieuw gegenereerde hashcode. Specifiek is hashing de praktijk van het selecteren van een ‘string’ of ‘input key’, een variabele gecreëerd voor het opslaan van gegevens, en deze te koppelen aan een hashwaarde, die meestal wordt bepaald door een algoritme en een veel kortere string vormt dan het origineel.
De hashtabel creëert een lijst waarin alle waardeparen worden opgeslagen, die gemakkelijk toegankelijk is via de index. Het resultaat is een techniek om op een zeer efficiënte manier toegang te krijgen tot sleutelwaarden in een databasetabel en een methode om de beveiliging van een database te verbeteren door encryptie wat altijd wordt gebruikt bij platformen zoals crypto exchanges in Nederland.
Hashing maakt gebruik van algoritmes die blokken met gegevens uit een bestand omzetten in een veel kortere waarde. De resulterende hashwaarde is een soort geconcentreerde samenvatting van elke tekenreeks in een bepaald bestand en moet zelfs kunnen veranderen als er ook maar één byte aan gegevens in dat bestand wordt veranderd (lawine-effect). Hashing biedt hierdoor enorme voordelen met betrekking tot gegevenscompressie. Hoewel hashing geen compressie is, kan het veel lijken op bestandscompressie in die zin dat het een grotere gegevensset verkleint tot een beter hanteerbare vorm.
Stel dat “John’s wallet ID” 4000 keer in een database is geschreven. Door al die herhalende strings te hashen tot een kortere string, bespaar je tonnen geheugenruimte.
Techopedia verklaart hashing
Stel je voor dat een zin met drie woorden wordt gecodeerd in een database of andere geheugenlocatie, en kan worden gehasht tot een korte alfanumerieke waarde bestaande uit slechts een paar letters en cijfers. Op grote schaal kan dit ongelooflijk efficiënt zijn, en dat is slechts één reden waarom hashing wordt gebruikt.
Hashing in computerwetenschappen en encryptie
Hashing heeft verschillende belangrijke toepassingen in de informatica. Een die vandaag de dag misschien wel de meeste aandacht krijgt in een wereld waar cyberbeveiliging van het grootste belang is, is het gebruik van hashing bij encryptie.
Omdat gehashte strings en inputs niet in hun originele vorm zijn, kunnen ze niet gestolen worden zoals dat wel zou kunnen als ze niet gehasht zijn. Als een hacker in een database een originele string vindt, zoals “John’s wallet ID 34567”, kunnen ze deze informatie eenvoudig verzamelen, inpikken of stelen en in hun voordeel gebruiken. Wanneer ze in plaats daarvan een hashwaarde vinden zoals “a67b2”, is die informatie volledig nutteloos voor hen, tenzij ze een sleutel hebben om het te ontcijferen. SHA-1, SHA-2 en MD5 zijn populaire cryptografische hashes.
Een goede hashingfunctie voor beveiligingsdoeleinden moet een eenrichtingsproces zijn dat een one-way hashingalgoritme gebruikt. Anders kunnen hackers gemakkelijk achterhalen hoe de hash is opgebouwd, om het vervolgens terug te converteren naar de originele gegevens. Daarmee zou voorbij worden gegaan aan het primaire doel van de encryptie.
Om te waarborgen dat de versleutelde code uniek is, kunnen willekeurige gegevens worden toegevoegd aan de invoer van een hashfunctie. Deze techniek staat bekend als “salting” en garandeert unieke resultaat, zelfs in het geval van identieke invoer. Hackers kunnen bijvoorbeeld de wachtwoorden van gebruikers in een database raden met behulp van een rainbow table attack of een dictionary attack. Sommige gebruikers kunnen hetzelfde wachtwoord delen dat, als het geraden wordt door de hacker, voor allemaal gestolen is. Het toevoegen van de salt voorkomt dat de hacker toegang krijgt tot deze niet-unieke wachtwoorden, omdat elke hashwaarde nu uniek zal zijn en zal elke rainbow table aanval stoppen.
Hashing gebruiken voor het ophalen van databases
Hashing kan worden gebruikt bij het ophalen van databases. Hier komt een ander voorbeeld van pas – veel experts vergelijken hashing met een belangrijke bibliotheekinnovatie van de 20e eeuw – het Dewey decimale systeem.
In zekere zin is wat je krijgt als je een hashwaarde ophaalt, hetzelfde als het krijgen van een Dewey decimaal systeemnummer voor een boek. In plaats van te zoeken naar de titel van het boek, zoek je naar het Dewey decimale systeemadres of identificatie, plus een paar belangrijke alfanumerieke tekens van de titel of auteur van het boek.
We hebben gezien hoe goed het Dewey decimale systeem heeft gewerkt in bibliotheken, en het werkt net zo goed in de informatica. Kortom, door deze originele invoergegevens te verkleinen tot korte alfanumerieke hashsleutels, zijn ingenieurs in staat om verschillende belangrijke cyberbeveiligingsverbeteringen uit te voeren en tegelijkertijd bestandsruimte te besparen.
De rol van hashing bij geknoei met bestanden
Hashing is ook waardevol bij het voorkomen of analyseren van geknoei met bestanden. Het originele bestand genereert een hash die bij de bestandsgegevens wordt bewaard. Het bestand en de hash worden samen verzonden en de ontvangende partij controleert de hash om te zien of het bestand gecompromitteerd is. Als er wijzigingen in het bestand zijn aangebracht, zal de hash dat laten zien.
Dit alles laat zien waarom hashing zo’n populair onderdeel is van een databasa management system.