Hashing und Datenintegrität
Lernen Sie, wie SHA-256, MD5 und HMAC Hashwerte fester Länge erzeugen, mit denen überprüft wird, dass Daten bei der Übertragung oder Speicherung nicht verändert wurden.
Hashing und Datenintegrität ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Was ist eine Hashfunktion?
Eine kryptografische Hashfunktion ist ein mathematischer Algorithmus, der eine Eingabe beliebiger Größe entgegennimmt und eine Ausgabe fester Länge erzeugt, die als Hash, Digest oder Fingerabdruck bezeichnet wird. Hashfunktionen sind unidirektional: Ausgehend von einem Hash sollte es praktisch unmöglich sein, die ursprüngliche Eingabe zu ermitteln. Sie sind deterministisch: Dieselbe Eingabe erzeugt immer denselben Hash. Hashfunktionen bilden die Grundlage für die Überprüfung der Datenintegrität, digitale Signaturen, die Passwortspeicherung und viele weitere Sicherheitsmechanismen.
Eigenschaften sicherer Hashfunktionen
Eine sichere kryptografische Hashfunktion muss vier wichtige Eigenschaften aufweisen. Preimage-Resistenz: Ausgehend von einer Hash-Ausgabe muss es praktisch unmöglich sein, eine Eingabe zu finden, die diese Ausgabe erzeugt. Second-Preimage-Resistenz: Für eine gegebene Eingabe muss es praktisch unmöglich sein, eine andere Eingabe mit demselben Hash zu finden. Kollisionsresistenz: Es muss praktisch unmöglich sein, zwei verschiedene Eingaben zu finden, die dieselbe Hash-Ausgabe erzeugen. Avalanche-Effekt: Die Änderung auch nur eines einzelnen Eingabebits führt zu einer vollständig anderen Hash-Ausgabe, wodurch Manipulationen erkennbar werden.
# Avalanche effect demonstration
echo -n 'Hello' | sha256sum
# 185f8db32... (completely different when one char changes)
echo -n 'Hello!' | sha256sum
# 334d016f7... (entirely different hash)
# Same input ALWAYS produces same hash (deterministic)
echo -n 'Security+' | sha256sum
echo -n 'Security+' | sha256sum
# Both outputs are identicalMD5: Unsicher und veraltet
MD5 (Message Digest 5) erzeugt einen 128-Bit-Hash und wurde früher häufig eingesetzt. Forschende wiesen jedoch 2004 Kollisionsangriffe auf MD5 nach – es können also zwei verschiedene Eingaben gefunden werden, die denselben Hash erzeugen. Das ist für die Integritätsprüfung verheerend: Ein Angreifer könnte eine schädliche Datei einschleusen, die denselben MD5-Hash wie das Original besitzt. MD5 ist für die kryptografische Sicherheit vollständig gebrochen und darf nicht für Integritätsprüfungen, digitale Signaturen oder das Hashing von Passwörtern verwendet werden. Es wird gelegentlich noch für nicht sicherheitsrelevante Prüfsummen verwendet (etwa bei der Überprüfung älterer Dateien); das ist ausschließlich zur Erkennung versehentlicher Beschädigungen akzeptabel.
SHA-Familie: SHA-1, SHA-256, SHA-3
Die Familie der Secure Hash Algorithms (SHA) ist die wichtigste Gruppe von Hashfunktionen für Security+. SHA-1 (160 Bit) war jahrelang der Standard, wurde jedoch 2017 durch einen praktisch durchführbaren Kollisionsangriff gebrochen (Googles Projekt SHAttered) und ist inzwischen veraltet. SHA-256 (Teil der SHA-2-Familie, Ausgabe mit 256 Bit) ist der aktuelle Industriestandard für digitale Signaturen, TLS-Zertifikate und die Überprüfung der Dateiintegrität. SHA-3 (Keccak) ist ein alternativer Algorithmus von NIST, der Schutz gegen Angriffe bietet, die auf die Struktur von SHA-2 abzielen. Für die meisten Anwendungen bleibt SHA-256 jedoch die vorherrschende Wahl.
# Common hash computations
echo -n 'password123' | sha256sum
# a665a4592...64 hex chars = 256 bits
echo -n 'password123' | sha512sum
# b109f3bb...128 hex chars = 512 bits (SHA-512)
# File integrity check
sha256sum /path/to/downloaded_file.iso > file.sha256
sha256sum -c file.sha256
# file.iso: OKHashfunktionen zur Passwortspeicherung
Passwörter im Klartext zu speichern, ist niemals akzeptabel. Wenn ein Benutzer ein Passwort erstellt, wird stattdessen ein Hash in der Datenbank gespeichert. Meldet sich der Benutzer an, wird das eingegebene Passwort gehasht und mit dem gespeicherten Hash verglichen. Standardmäßiges SHA-256 ist für die Passwortspeicherung jedoch zu schnell – Angreifer verwenden GPUs, um Milliarden von Hashes pro Sekunde gegen gestohlene Passwortdatenbanken zu testen. Speziell entwickelte Passwort-Hashfunktionen wie bcrypt, PBKDF2 und Argon2 erhöhen den Rechenaufwand (Arbeitsfaktoren) und den Speicherbedarf, wodurch massenhaftes Knacken unpraktikabel wird.
# bcrypt hash example (Python-style pseudocode)
import bcrypt
password = b'mySecretPassword'
# Hash with work factor of 12 (2^12 = 4096 iterations)
hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))
# Stored in DB: $2b$12$H0qS/LkPkAiH8KlxJb3lFuK...
# Verify (never compare raw hashes for bcrypt)
bcrypt.checkpw(password, hashed) # Returns TrueSalting: Schutz vor Rainbow Tables
Eine Rainbow Table ist eine vorberechnete Nachschlagetabelle, die häufige Passwörter ihren Hashes zuordnet. Dadurch kann ein Angreifer einen Hash sofort nachschlagen und das ursprüngliche Passwort ermitteln. Zum Schutz vor Rainbow Tables müssen Passwort-Hashes mit einem Salt versehen werden. Ein Salt ist ein zufälliger Wert, der vor dem Hashing zum Passwort hinzugefügt wird. Dadurch ist der Hash jedes Benutzers eindeutig, selbst wenn zwei Benutzer dasselbe Passwort verwenden. Der Salt wird zusammen mit dem Hash gespeichert und muss nicht geheim sein. Selbst wenn ein Angreifer über Ihre gesamte Passwortdatenbank verfügt, sind vorberechnete Rainbow Tables nutzlos, weil für jeden Hash ein anderer Salt verwendet wurde.
# Salt demonstration
# Without salt: same password = same hash (rainbow table attack works)
# SHA256('password123') = always the same hash
# With salt: same password + random salt = unique hash
# SHA256('password123' + 'aBc8xZ') = unique hash for this user
# SHA256('password123' + 'mK2pYq') = completely different hash
# The salt is stored in the database alongside the hashed value
# Format: $salt$hash or combined as in bcrypt outputHMAC: Hashing um Authentifizierung erweitern
HMAC (Hash-based Message Authentication Code) ist eine Konstruktion, die eine Hashfunktion zusammen mit einem geheimen Schlüssel verwendet, um einen Authentifizierungscode zu erzeugen. Im Gegensatz zu einem einfachen Hash kann ein HMAC nur von Parteien berechnet und überprüft werden, die den geheimen Schlüssel kennen. Dadurch werden sowohl Integrität (Erkennen von Änderungen) als auch Authentifizierung (Nachweis, dass die Nachricht von jemandem mit dem Schlüssel stammt) gewährleistet. HMAC-SHA256 wird häufig für die API-Authentifizierung (zum Signieren von API-Anfragen), JWT-Tokens und TLS-MAC-Operationen verwendet. Es verhindert, dass ein Angreifer, der eine Nachricht abfängt, diese durch eine präparierte Alternative ersetzt.
# Compute HMAC-SHA256 with OpenSSL
openssl dgst -sha256 -hmac 'my-secret-api-key' -hex api_request.json
# Output: HMAC-SHA256(api_request.json)= 3d4e2f...
# Only someone with 'my-secret-api-key' can generate or verify this HMAC
# Used in AWS Signature V4 for API authentication
# Used in JWT HS256 algorithm for token integrityHashfunktionen bei digitalen Signaturen
Hashfunktionen spielen bei digitalen Signaturen eine zentrale Rolle. Beim Signieren eines großen Dokuments wird nicht das gesamte Dokument mit dem privaten Schlüssel verschlüsselt, da dies äußerst langsam wäre. Stattdessen gehen Sie folgendermaßen vor: (1) Sie berechnen den Hash des Dokuments (schnell und mit einem kleinen Digest fester Länge) und (2) signieren den kleinen Hash mit dem privaten Schlüssel. Die Signatur ist also ein verschlüsselter Hash. Die Überprüfung folgt demselben Muster: Entschlüsseln Sie die Signatur, um den Hash zu erhalten, hashen Sie das Dokument unabhängig davon und vergleichen Sie die beiden Werte. SHA-256 ist in allen modernen PKI-Zertifikaten vorgeschrieben; SHA-1 ist in neuen Zertifikaten verboten.
Überwachung der Dateiintegrität (FIM)
File Integrity Monitoring (FIM) verwendet Hashfunktionen, um unbefugte Änderungen an wichtigen Systemdateien zu erkennen. Zu Beginn hasht das FIM-Tool alle überwachten Dateien und speichert die Hashes sicher. In regelmäßigen Abständen (oder kontinuierlich) hasht es die Dateien erneut und vergleicht die Ergebnisse mit der Ausgangsbasis. Jede Abweichung weist darauf hin, dass eine Datei geändert wurde – möglicherweise durch Malware oder eine unbefugte Aktion eines Administrators. FIM-Tools wie Tripwire, AIDE (Linux) und die systemeigene Integritätsprüfung von Windows verwenden SHA-256-Hashes. FIM ist in Compliance-Frameworks wie PCI-DSS zum Schutz von Umgebungen mit Karteninhaberdaten vorgeschrieben.
# AIDE (Advanced Intrusion Detection Environment) - Linux FIM
# Initialize baseline database
aide --init
# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# Check for changes (run via cron daily)
aide --check
# Output shows any files that were added, changed, or deleted
# File: /etc/passwd changed
# MD5 : old_hash != new_hashPrüfsummen im Vergleich zu kryptografischen Hashes
Es ist wichtig, zwischen Prüfsummen und kryptografischen Hashes zu unterscheiden. Prüfsummen wie CRC32 dienen dazu, versehentliche Datenbeschädigungen während der Übertragung zu erkennen. Sie sind schnell und einfach, können von einem Angreifer jedoch leicht gefälscht werden. Kryptografische Hashes (SHA-256) sind so konzipiert, dass sie kollisionsresistent und selbst bei absichtlicher Manipulation durch Angreifer manipulationssensitiv sind. Verwenden Sie Prüfsummen, wenn Sie lediglich überprüfen müssen, dass ein Download bei der Übertragung nicht beschädigt wurde. Verwenden Sie kryptografische Hashes, wenn Sie überprüfen müssen, dass eine Datei nicht absichtlich von einem Angreifer manipuliert wurde.
Hashkollisionsangriffe in der Praxis
Hashkollisionsangriffe haben Auswirkungen in der Praxis. 2017 erstellten Forschende zwei verschiedene PDF-Dateien mit demselben SHA-1-Hash und zeigten damit, dass SHA-1-Zertifikate gefälscht werden konnten. 2008 nutzten Forschende MD5-Kollisionen, um ein gefälschtes CA-Zertifikat zu erstellen, das legitim wirkte. Aufgrund dieser Angriffe lehnen Browser MD5- und SHA-1-Zertifikate ab, und Zertifizierungsstellen müssen mindestens SHA-256 verwenden. Wenn Sie Kollisionsangriffe verstehen, können Sie erklären, warum Algorithmen abgekündigt werden und warum „aber es wird doch weiterhin ein Hash erzeugt“ kein ausreichendes Argument für die Verwendung unsicherer Algorithmen ist.
Schnelltest
Testen Sie Ihr Verständnis der CompTIA-Security+-Konzepte (SY0-701) aus dieser Lektion.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Hashfunktionen erzeugen Digests fester Länge zur Überprüfung der Integrität; MD5 und SHA-1 sind gebrochen und veraltet; SHA-256 ist der aktuelle Standard; Salting schützt vor Rainbow-Table-Angriffen; und HMAC erweitert Hashing mithilfe eines gemeinsam verwendeten geheimen Schlüssels um Authentifizierung. Als Nächstes behandeln wir Schlüsselaustausch und hybride Verschlüsselung.
Häufig gestellte Fragen
Ist die Lektion „Hashing und Datenintegrität“ kostenlos?
Ja — der vollständige Text von „Hashing und Datenintegrität“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Hashing und Datenintegrität“?
Lernen Sie, wie SHA-256, MD5 und HMAC Hashwerte fester Länge erzeugen, mit denen überprüft wird, dass Daten bei der Übertragung oder Speicherung nicht verändert wurden. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?
Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Hashing und Datenintegrität“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?
Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Symmetrische Verschlüsselungsalgorithmen
- Asymmetrische Verschlüsselung und Schlüsselpaaren
- Hashing und Datenintegrität
- Schlüsselaustausch und hybride Verschlüsselung