Bei Hashing handelt es sich um eine kryp­to­gra­fi­sche Methode, die Da­ten­sät­ze und Zeichen be­lie­bi­ger Länge in kompakte, feste Hashwerte ver­wan­delt. Auf diese Weise bietet Hashing mehr Si­cher­heit als Ver­schlüs­se­lung, denn Hashwerte lassen sich ohne Schüssel nicht in Ur­sprungs­wer­te zu­rück­ver­wan­deln. Besondere Bedeutung hat Hashing für die Ver­wal­tung und Si­cher­heit von Da­ten­ban­ken, Nut­zer­da­ten, Pass­wort­ver­wal­tung und Zu­griffs­au­then­ti­fi­zie­rung.

Was ist Hashing?

Hashing ist ein wichtiges kryp­to­gra­fi­sches In­stru­ment, um Daten in so­ge­nann­te Hashwerte zu ver­wan­deln. Hierzu kommt eine spezielle Hash­funk­ti­on, meist in Form eines Al­go­rith­mus, zum Einsatz. Die zentrale Aufgabe des Hashings lässt sich anhand der deutschen Über­set­zung „zerhacken“ erahnen. Denn nichts anderes geschieht beim Hashing: Da­ten­sät­ze wie Pass­wör­ter, Firmen- und Nut­zer­da­ten oder andere Da­ten­for­men werden zerlegt und in eine neue, kurze Form – den Hashwert – ver­wan­delt. Im je­wei­li­gen Hashing-Verfahren weisen Hashwerte immer die gleiche Länge auf und re­prä­sen­tie­ren originale Da­ten­sät­ze. Als Hash­ta­bel­le lassen sich Hashwerte in Da­ten­ban­ken in kompakter Form sicher und res­sour­cen­scho­nend speichern.

Der Vorteil am Hashing: Hashwerte lassen sich ohne Schlüssel nicht in die Ori­gi­nal­form zu­rück­ver­wan­deln. Selbst wenn sie in die falschen Hände fallen, können Cy­ber­kri­mi­nel­le nichts mit Hash­wer­ten anfangen. Oft kommt es zur Ver­wechs­lung zwischen Hashing und Ver­schlüs­se­lung. Da Hashwerte jedoch nicht ver­schlüs­selt, sondern in eine voll­stän­dig neue Zei­chen­fol­ge ver­wan­delt werden, lassen sie sich auch nicht ent­schlüs­seln. Für eine Zuordnung bräuchte es vielmehr die ent­spre­chen­den Schlüssel, den ver­wen­de­ten Al­go­rith­mus und die Ori­gi­nal­da­ten, die mit den Hash­wer­ten as­so­zi­iert sind.

Wie funk­tio­niert Hashing?

Der Prozess des Hashings setzt sich aus drei Bau­stei­nen zusammen:

  • Hash­funk­ti­on: Bei der Hash­funk­ti­on handelt es sich in der Regel um einen kryp­to­gra­fi­schen Al­go­rith­mus, der Daten ver­schie­de­ner Länge voll­stän­dig zerlegt, auflöst und in Zei­chen­fol­gen immer gleicher Länge ver­wan­delt. Diese Hashwerte sind deutlich kürzer und kompakter als die Ori­gi­nal­wer­te.
  • Hashwert: Hashwerte sind das Ergebnis der Hash­funk­ti­on. Im Rahmen der an­ge­wand­ten Hash­me­tho­de weisen sie anders als die Ori­gi­nal­wer­te immer eine feste Länge aus he­xa­de­zi­ma­len Zeichen auf. Die feste Länge der Hashwerte hängt vom je­wei­li­gen Verfahren ab.
  • Hash­ta­bel­len: Hashwerte lassen sich in Da­ten­ban­ken als Hash­ta­bel­len speichern. Diese erfordern deutlich weniger Datenraum als das Speichern von ori­gi­na­len Da­ten­sät­zen. Hierzu erhalten Da­ten­sät­ze per Hashing spe­zi­fi­sche Index-Werte, die anzeigen, wo sich der Datensatz befindet. Dadurch verkürzt sich die Ver­ar­bei­tungs­zeit und Re­chen­leis­tung bei der Suche nach In­for­ma­tio­nen deutlich.

Die Funk­ti­ons­wei­se des Hashings basiert auf fünf cha­rak­te­ris­ti­schen Ei­gen­schaf­ten, die Si­cher­heit und Zu­ver­läs­sig­keit ga­ran­tie­ren:

  • De­ter­mi­nis­mus: Die Hash­funk­ti­on muss bei vielen Eingaben un­ter­schied­lich langer Zei­chen­fol­gen immer einen Hashwert fester, kurzer Länge erzeugen.
  • Nicht rück­les­bar: Hashing ver­wan­delt Ori­gi­nal­wer­te in Hashwerte, die sich nicht „rücklesen“ lassen. Es darf keine Mög­lich­keit geben, den Hashwert im klas­si­schen Sinne zu ent­schlüs­seln und den Ur­sprungs­text oder die originale Zei­chen­fol­ge daraus zu erzeugen.
  • Kol­li­si­ons­si­cher­heit: Ver­schie­de­nen Eingaben darf nicht derselbe Hashwert zu­ge­wie­sen sein. Erhalten zwei Ori­gi­nal­wer­te denselben Hashwert, liegt eine Kollision vor. Un­ver­wech­sel­ba­re, ein­zig­ar­ti­ge Hashwerte ver­rin­gern die An­griffs­punk­te und erhöhen die Si­cher­heit. Je nach An­wen­dungs­fall kann eine Kollision jedoch auch gewünscht sein.
  • Kon­ti­nui­tät bzw. Nicht­kon­ti­nui­tät: Grund­sätz­lich bieten Hashwerte eine höhere Si­cher­heit, wenn sie nicht kon­ti­nu­ier­lich sind – wenn also ver­schie­de­ne originale Da­ten­sät­ze möglichst un­ter­schied­li­che Hashwerte erhalten. Kon­ti­nu­ier­li­che Hashwerte sind wiederum erwünscht, wenn Hashing zur Ver­wal­tung ähnlicher Da­ten­sät­ze und Eingaben dient.
  • Ge­schwin­dig­keit: Hashing er­mög­licht nicht nur mehr Si­cher­heit, sondern auch einen schnel­le­ren Zugriff auf Da­ten­ban­ken.

An­wen­dungs­be­rei­che von Hashing

Besonders deutlich werden Nutzen und Funk­ti­ons­wei­se des Hashings anhand ver­schie­de­ner An­wen­dungs­fäl­le und Ein­satz­be­rei­che. Typische An­wen­dungs­be­rei­che sind:

  • Erzeugung von Hash­ta­bel­len
  • „Ver­schlüs­se­lung“ wichtiger Daten
  • Suche nach Du­pli­ka­ten
  • Prüf­sum­men und digitale Si­gna­tu­ren
  • Suche nach ähnlichen Daten
  • Au­then­ti­fi­zie­rungs­sys­te­me
  • Caching

Ver­wal­tung von Da­ten­ban­ken

Hashing bietet den Vorteil, dass sich große Da­ten­men­gen kompakter und ef­fi­zi­en­ter in Form von Hash­ta­bel­len speichern lassen. Hierzu werden Zei­chen­fol­gen als Hashwerte unter einer Adress­po­si­ti­on in der Datenbank als Hash­ta­bel­le zu­sam­men­ge­fasst. Das spart Speicher, erhöht die Si­cher­heit von Da­ten­ban­ken und be­schleu­nigt die Suche nach be­stimm­ten Einträgen in der Hash­ta­bel­le. Hashwerte und Hash­ta­bel­len op­ti­mie­ren die Or­ga­ni­sa­ti­on und Ver­wal­tung von Index- und Da­ten­in­fra­struk­tu­ren.

Zur Ver­an­schau­li­chung: Kun­den­da­ten­ban­ken umfassen in der Regel wichtige In­for­ma­tio­nen wie Namen, Kon­takt­da­ten oder Adressen der Kundinnen und Kunden. Soll eine Datenbank nach spe­zi­fi­schen In­for­ma­tio­nen durch­sucht werden, würde eine reguläre Suche lange dauern. Denn die gesamte Datenbank müsste nach den gesuchten Werten gescannt werden. Durch Hashing lassen sich jedoch Da­ten­blö­cke mit einer be­stimm­ten Adress­po­si­ti­on in der Datenbank bilden. So springt der Computer bei der Suche sofort an die Position, unter der ein zu­ge­hö­ri­ger Hashwert in einer Hash­ta­bel­le adres­sier­bar ist.

Digitale Si­gna­tu­ren und Prüf­sum­men

Hashing spielt auch als Au­then­ti­fi­zie­rungs­me­tho­de eine wichtige Rolle. Bei­spiels­wei­se dient es zum Erzeugen digitaler Si­gna­tu­ren, so­ge­nann­ter digitaler Fin­ger­ab­drü­cke. Hierdurch lässt sich die In­te­gri­tät bei der Kom­mu­ni­ka­ti­on zwischen Sender und Empfänger be­stä­ti­gen. Auch beim Anlegen eines neuen Be­nut­zer­kon­tos lassen sich auf diese Weise Pass­wör­ter mit einem Hashwert ver­knüp­fen. Beim Anlegen neuer Be­nut­zer­kon­ten erzeugt eine Hash­funk­ti­on einen Hashwert für das gewählte Passwort. Bei jeder weiteren Anmeldung wird das ein­ge­ge­be­ne Passwort per Hashing mit dem hin­ter­leg­ten Hashwert ab­ge­gli­chen. Auch bei der Pass­wort­wie­der­her­stel­lung kommt es zur Erzeugung eines neuen Hashwerts für das neue Passwort.

Zur Ver­an­schau­li­chung: Durch digitale Si­gna­tu­ren lässt sich über­prü­fen, ob Nach­rich­ten, Downloads oder auch Websites sicher sind. Hierzu erzeugen Absender Hashwerte aus Nach­rich­ten oder liefern einen Hashwert beim Download eines Programms. Empfänger wiederum erzeugen mit derselben Hash­funk­ti­on ebenfalls einen Hashwert. Dieser wird mit dem mit­ge­lie­fer­ten, meist ver­schlüs­sel­ten Hashwert ab­ge­gli­chen. Bestes Beispiel hierfür ist die SSL/TLS-Ver­schlüs­se­lung im Web. Hierbei sendet der Webserver ein so­ge­nann­tes Ser­ver­zer­ti­fi­kat an den Browser. Hashing erzeugt daraus einen Sit­zungs­schlüs­sel, den der Server erhält, ent­schlüs­selt und bestätigt. Nach der Au­then­ti­fi­zie­rung erfolgt der HTTPS-Da­ten­ver­kehr. Auch SFTP funk­tio­niert auf ähnliche Weise.

Pass­wör­ter und andere sensible Daten

Für das Speichern sensibler Daten, etwa von Pass­wör­tern oder Anmelde- und Nut­zer­da­ten, bietet Hashing deutlich höhere Si­cher­heit. Denn diese werden nicht in Ori­gi­nal­form oder „bloß“ ver­schlüs­selt in der Datenbank hin­ter­legt. Statt­des­sen werden Da­ten­sät­ze in Hashwerte zerlegt, die selbst bei Da­ten­dieb­stahl ohne ent­spre­chen­de Mittel oder Schlüssel nichts bringen. Bei der Pass­wort­ein­ga­be wird nämlich der be­rech­ne­te Hashwert für das Passwort mit dem ge­spei­cher­ten Hashwert ver­gli­chen. Auch beim Caching kommt Hashing bisweilen zum Einsatz, um temporär ge­spei­cher­te Daten wie besuchte Websites oder Anmelde- und Zahldaten für Unbefugte unlesbar zu machen.

Zur Ver­an­schau­li­chung: Auch das Speichern viel­fäl­ti­ger Inhalte wie Texte oder Audio- und Vi­deo­da­tei­en lässt sich per Hashing sicherer gestalten. So werden die binären Struk­tu­ren von Dateien in kompakte Hashwerte über­tra­gen, über die sich der zu­ge­hö­ri­ge Da­ten­block re­fe­ren­zie­ren lässt. Da Hashwerte mit der Da­ten­bank­po­si­ti­on verknüpft sind, lassen sich gesuchte Daten nicht nur schneller finden; sie sind auch für An­grei­fen­de ohne ent­spre­chen­den Schlüssel nicht lesbar und nicht in die Ori­gi­nal­form über­trag­bar.

Welche Vorteile bietet Hashing?

Die Vorteile von Hashing auf einen Blick:

  • Sensible Daten lassen sich sicher und kompakt speichern und verwalten.
  • In Hashwerte über­tra­ge­ne Da­ten­sät­ze lassen sich nicht ohne weiteres „ent­schlüs­seln“ bzw. in ihre Ori­gi­nal­form rück­über­tra­gen.
  • Der Zugriff auf Da­ten­ban­ken erfolgt schneller, da Hashwerte mit Po­si­tio­nen in der Datenbank as­so­zi­iert sind.
  • Ge­stoh­le­ne Hashwerte sind für An­grei­fen­de ohne ent­spre­chen­de Tech­no­lo­gien oder In­for­ma­tio­nen zur Hash­funk­ti­on nicht nützlich.
  • Der sichere Austausch von Daten, Nach­rich­ten oder Software lässt sich durch Hashing zu­ver­läs­sig au­then­ti­fi­zie­ren oder signieren.

Hashing und Block­chain

Hashing und Hash­funk­tio­nen sind ein zentraler Be­stand­teil der Block­chain. Zur Au­then­ti­fi­zie­rung von Trans­ak­tio­nen mit Kryp­to­wäh­run­gen wie Bitcoin werden beim Mining Hashes erzeugt. Bitcoin arbeitet bei­spiels­wei­se mit dem SHA-256-Hashing-Al­go­rith­mus, der beliebig lange Zei­chen­fol­gen in eine feste Zei­chen­fol­ge, also Hashes, von 64 Zeichen umwandelt. Diese le­gi­ti­mie­ren, au­then­ti­fi­zie­ren und do­ku­men­tie­ren of­fi­zi­el­le Krypto-Trans­ak­tio­nen, hin­ter­le­gen diese in der Block­chain und sorgen somit für einen hohen Grad an Si­cher­heit.

In der Block­chain erfüllt Hashing drei Haupt­funk­tio­nen:

  • Mining: Die Mining-Leistung eines Kryp­to­netz­werks nennt sich auch Hashrate. Sie zeigt an, wie viele Miner aktiv sind. Miner erzeugen durch das Lösen ma­the­ma­ti­scher Rätsel Hashes. Ist ein Hash gültig, wird ein Trans­ak­ti­ons­block validiert. Je höher die Hashrate, desto mehr Coins oder Tokens lassen sich erzeugen. Kryp­to­mi­ning basiert somit auf trans­ak­ti­ons­be­zo­ge­nen Hashing-Al­go­rith­men.
  • Block­chain: Auf­ge­zeich­ne­te, va­li­dier­te Trans­ak­tio­nen werden als Blöcke se­quen­zi­ell do­ku­men­tiert. Sie werden im Verlauf des Minings zur Block­chain hin­zu­ge­fügt. Jeder Block wird hierbei mit dem vor­he­ri­gen verknüpft und enthält den Hashwert des vor­aus­ge­gan­ge­nen Blocks. So wird aus­ge­schlos­sen, dass ein invalider oder schäd­li­cher Block hin­zu­kommt.
  • Schlüs­sel­ge­nerie­rung: Hashing kommt auch zum Über­tra­gen von Kryp­to­wäh­run­gen zum Einsatz. Hierbei findet eine Au­then­ti­fi­zie­rung über öf­fent­li­che und private Schlüssel durch Hashing statt.

Wie sicher ist Hashing?

Grund­sätz­lich raten Da­ten­schutz­ex­per­tin­nen und -experten zum Einsatz von Hashing, um Da­ten­ban­ken und sensible Daten so sicher wie möglich zu speichern. Hashing ist der klas­si­schen Ver­schlüs­se­lung vor­zu­zie­hen, da Hashwerte keine Hinweise auf die ori­gi­na­len Da­ten­sät­ze enthalten und sich nicht „ent­schlüs­seln“ lassen. Selbst Brute-Force-Angriffe, bei denen Kom­bi­na­tio­nen von Zei­chen­ket­ten so lange aus­pro­biert werden, bis eine Über­ein­stim­mung vorliegt, benötigen eine as­tro­no­misch hohe Zahl an Versuchen.

Dennoch gibt es bösartige Akteure, die Listen von ge­stoh­le­nen Hash­wer­ten mit Rainbow Tables, auch Re­gen­bo­gen­lis­ten genannt, ab­glei­chen. Dabei handelt es sich um Listen mit geklauten Hash­wer­ten und ihnen zu­ge­ord­ne­ten Zu­gangs­da­ten. Stimmt ein Hashwert aus der Datenbank mit einem Hashwert der Re­gen­bo­gen­lis­te und dem zu­ge­ord­ne­ten Kennwort überein, dann besteht eine Si­cher­heits­lü­cke. Aus diesem Grund wird auch beim Hashing zum re­gel­mä­ßi­gen Ändern von Pass­wör­tern, re­gel­mä­ßi­gen Updates und neuen bzw. ak­tua­li­sier­ten Hashing-Al­go­rith­men geraten. So empfahl die Internet En­gi­nee­ring Taskforce (IETF) im Jahr 2021 folgende Hashing-Al­go­rith­men:

  • Argon2
  • Bcrpt
  • Scrypt
  • PBKDF2

Eine weitere Mög­lich­keit, Hashing noch sicherer zu gestalten, sind Ver­schüs­se­lungs­ver­fah­ren wie Salting und Pepper. Beim Salting erhält jedes in Hashwerte über­tra­ge­ne Kennwort eine zu­sätz­li­che zufällig erzeugte Zei­chen­fol­ge. Salts mit einer emp­foh­le­nen Länge von 16 Zeichen machen Brute-Force-Attacken fast unmöglich und bieten somit eine noch zu­ver­läs­si­ge­re Si­cher­heit. Kommt dann noch ein 32 Zeichen langer Code namens „Pepper“ für alle Pass­wör­ter hinzu, sind ge­stoh­le­ne Hashwerte mit zu­sätz­li­chem Salt kaum noch zu knacken.

Zum Hauptmenü