Verschlüsselung: Von Caesar bis RSA

lock
Bevorstehend

Lerne die Grundlagen der Verschlüsselung: Caesar-Chiffre in Python implementieren, symmetrisch vs. asymmetrisch, Hash-Funktionen und das RSA-Prinzip verstehen.

Ziele dieses Moduls
Keine Ziele hinterlegt.

In diesem Modul lernst du die Grundlagen der Verschlüsselung kennen. Du implementierst die Caesar-Chiffre in Python, lernst den Unterschied zwischen symmetrischer und asymmetrischer Verschlüsselung und verstehst, wie RSA funktioniert. Ausserdem lernst du, was Hash-Funktionen sind und warum sie für die Sicherheit im Internet zentral sind.

Was ist Verschlüsselung?

Verschlüsselung verwandelt lesbare Daten (Klartext) in eine unlesbare Form (Chiffretext), sodass nur autorisierte Personen die Daten wieder lesen können.

Stell dir vor, du schreibst eine Nachricht an eine Freundin. Wenn jemand die Nachricht abfängt, soll er sie nicht lesen können. Verschlüsselung löst genau dieses Problem.

Zwei Hauptarten

  • Symmetrische Verschlüsselung: Derselbe Schlüssel wird zum Ver- und Entschlüsseln verwendet (wie ein Haustürschlüssel)
  • Asymmetrische Verschlüsselung: Es gibt zwei Schlüssel – einen öffentlichen (Public Key) und einen privaten (Private Key)

Symmetrisch vs. Asymmetrisch

Symmetrische Verschlüsselung

Sender und Empfänger verwenden denselben geheimen Schlüssel. Das ist schnell und effizient, aber es gibt ein Problem: Wie tauscht man den Schlüssel sicher aus?

Beispiele: AES (Advanced Encryption Standard), Caesar-Chiffre

Asymmetrische Verschlüsselung

Es gibt ein Schlüsselpaar:

  • Public Key (öffentlich) – damit verschlüsselt man Nachrichten an dich
  • Private Key (geheim) – nur du kannst damit die Nachrichten entschlüsseln

Wie ein Briefkasten: Jeder kann etwas hineinwerfen (Public Key), aber nur du hast den Schlüssel zum Öffnen (Private Key).

Beispiele: RSA, Elliptic Curve

Die Caesar-Chiffre in Python

Die Caesar-Chiffre ist eine der ältesten Verschlüsselungsmethoden. Julius Caesar hat sie verwendet, um geheime Nachrichten zu senden. Dabei wird jeder Buchstabe im Alphabet um eine bestimmte Anzahl verschoben.

Beispiel mit Verschiebung 3: A→D, B→E, C→F, ..., Z→C

Aus HALLO wird KDOOR.

Implementierung in Python

def caesar_encrypt(text, shift):
    result = ""
    for char in text:
        if char.isalpha():
            base = ord('A') if char.isupper() else ord('a')
            result += chr((ord(char) - base + shift) % 26 + base)
        else:
            result += char
    return result

def caesar_decrypt(text, shift):
    return caesar_encrypt(text, -shift)

# Test
nachricht = "HALLO WELT"
verschluesselt = caesar_encrypt(nachricht, 3)
print(f"Original: {nachricht}")
print(f"Verschlüsselt: {verschluesselt}")
print(f"Entschlüsselt: {caesar_decrypt(verschluesselt, 3)}")

Probiere es aus! Was passiert bei verschiedenen Verschiebungen?

lock

Login erforderlich

Melde dich an, um diese Frage zu bearbeiten.

Zum Login

Verschlüssele den Text INFORMATIK mit der Caesar-Chiffre und Verschiebung 5. Was ist das Ergebnis?

Hash-Funktionen

Hash-Funktionen sind Einweg-Verschlüsselung: Aus einem Input wird ein fester Hash-Wert berechnet, aber man kann den Input nicht aus dem Hash zurückgewinnen.

Eigenschaften:

  • Kleine Änderung im Input → völlig anderer Hash
  • Immer gleiche Länge (z.B. SHA-256: 64 Zeichen)
  • Nicht umkehrbar

Python Beispiel

import hashlib

text = "Hallo Welt"
hash_wert = hashlib.sha256(text.encode()).hexdigest()
print(f"Text: {text}")
print(f"SHA-256: {hash_wert}")

# Kleine Änderung → völlig anderer Hash
text2 = "Hallo welt"  # nur 'w' klein
text2_hash = hashlib.sha256(text2.encode()).hexdigest()
print(f"\nText: {text2}")
print(f"SHA-256: {text2_hash}")

Hash-Funktionen werden verwendet für:

  • Passwort-Speicherung (nächste Lektion!)
  • Datei-Integrität prüfen (Download unverfälscht?)
  • Digitale Signaturen

Das RSA-Prinzip

RSA ist das bekannteste asymmetrische Verschlüsselungsverfahren. Es basiert auf einem mathematischen Trick: Es ist einfach, zwei grosse Primzahlen zu multiplizieren, aber extrem schwer, das Produkt wieder in die Primzahlen zu zerlegen.

Vereinfacht

  1. Wähle zwei grosse Primzahlen p und q
  2. Berechne n = p × q (Teil des Public Key)
  3. Der Private Key hängt von p und q ab

Warum sicher? Wenn n eine 2048-Bit-Zahl ist (über 600 Stellen!), würde es selbst dem schnellsten Computer Millionen Jahre brauchen, p und q zu finden.

Beispiel mit kleinen Zahlen

p = 61  # Primzahl
q = 53  # Primzahl
n = p * q  # Public Key Teil: 3233

print(f"Public Key Teil (n): {n}")
print(f"Private Primzahlen: p={p}, q={q}")
print(f"\nEin Angreifer kennt nur n={n}")
print(f"Er müsste 3233 = 61 x 53 faktorisieren.")
print(f"Bei kleinen Zahlen noch einfach – bei 600+ Stellen unmöglich!")
lock

Login erforderlich

Melde dich an, um diese Frage zu bearbeiten.

Zum Login

Was ist der wesentliche Unterschied zwischen symmetrischer und asymmetrischer Verschlüsselung?

Wähle eine Antwort

Reflection

Zusammenfassung

  • Symmetrische Verschlüsselung: Schnell, aber Schlüsselaustausch ist problematisch
  • Asymmetrische Verschlüsselung (RSA): Public/Private Key, sicherer Schlüsselaustausch
  • Hash-Funktionen: Einweg, für Passwörter und Integritätsprüfung

In der Praxis kombiniert man beides: Asymmetrisch für den Schlüsselaustausch, symmetrisch (AES) für die eigentliche Datenübertragung. So bekommt man das Beste aus beiden Welten.