Rechnernetze / Kommunikationssysteme

Aufgaben Netzsicherheit - Symmetrische Verschlüsselung

Grundlagen

  1. Was ist der Unterschied von Nachrichtenvertraulichkeit und -integrität?
  2. Nennen Sie je ein Beispiel für das Ziel Verbindlichkeit und Unverbindlichkeit!
  3. Woran können Sie bei gegebenem Chiffrat erkennen, ob es sich um ein Transpositionschiffre oder Substitutionschiffre handelt?
  4. Dechiffrieren Sie folgende Cäsar-Chiffre mittels des Befehls tr : RVARVASNPUREGRFG
  5. Es wollen 10 Personen wechselseitig vertraulich kommunizieren. Wieviel Schlüssel werden insgesamt bei einer symmetrischen Verschlüsselung benötigt?

Stromchiffre

  1. Gegeben ist ein One-Time-Pad mit $c_1 = m_1 ⊕ k_1$. Ein Dritter erhält Zugriff auf $c_1$ und fordert unter Gewaltandrohung den Schlüssel $k_1$ zur Entschlüsselung. Ist es möglich, diesem Dritten mittels eines Schlüssels $k_2$ eine beliebig wählbare Nachricht $m_2$ vorzutäuschen?
  2. Ist ein Brute-Force-Angriff bei einem One-Time-Pad möglich?
  3. Warum ist ein Stromchiffre mit echtem Rauschen (TRNG) in vielen Fällen unpraktikabel?
  4. Können Sie anhand eines mitgeschnittenen Schlüsselstroms auf die Art der Schlüsselgenerierung schließen (TRNG, PRNG)?
  5. Warum darf bei einem Stromchiffre der Schlüssel nur einmal verwendet werden?
  6. Gegeben ist eine Stromchiffre mittels LCG mod 16. Sie konnten drei aufeinanderfolgende Werte des Schlüsselstroms mitlesen: 1 8 11. Bestimmen Sie die nächsten 3 Werte!
  7. Sie planen die Nutzung eines LFSR zur Zufallszahlengenerierung. Die Periode des Zahlenstroms sollte bei mindestens $10^9$ liegen. Wieviele Speicher benötigen Sie mindestens?
  8. Warum ist eine Manipulation des Chiffrates bei Stromchiffre besonders gefährlich? Wie kann das verhindert werden?

Blockchiffre

  1. Warum werden Blockchiffren manchmal als Stromchiffren betrieben?
  2. Welchen Betriebsmodus würden Sie wählen, wenn sowohl die Codierung als auch Decodierung parallelisiert werden soll und wahlfreier Zugriff auf Teile der Nachricht möglich sein soll?
  3. Welche Betriebsmodi führen nicht zu einer Vergrößerung des Chiffrates gegenüber des Klartextes?
  4. Warum ist es beim CFB-Modus wichtiger, einen Initialisierungsvekor nur einmal zu verwenden als beim CBC-Modus?

Lösung

Grundlagen

  1. siehe Vorlesungsfolien.
  2. Unterschreiben eines Vertrages. Unverbindliche Plauderei in einem Forum.
  3. Transposition: Zeichenhäufigkeit der Buchstaben bleibt gleich im Gegensatz zur Substitution.
  4. Verschiebungen durchprobieren: cat data.txt tr A-Z N-ZA-M
  5. Siehe Folien: a = n(n − 1)/2 = 45 Schlüssel

Stromchiffre

  1. Ja: $k_2 = c_1 ⊕ m_2$
  2. Nein. Da Schlüsselraum gleich Nachrichtenraum sind prinzipiell alle beliebigen Nachrichten möglich. Selbst bei a-priori Kenntnis von Teilen einer Nachricht, kann nicht auf andere Teile geschlossen werden.
  3. Schlüssel hat gleiche Länge wie Nachricht -> Schlüsselaustauschproblem
  4. Nein, statistische Tests werden i.d.R. von allen Generatoren bestanden. Die Periode bei PRNG kann so groß gewählt werden, dass diese nicht erkennbar ist.
  5. Aufgrund des Zusammenhangs zwischen Schüssel und Klartext $c_1 = m_1 ⊕ k$. Wird $m_1$ bekannt, wird damit auch $m_2$ bekannt.
  6. Gleichungssystem mit 2 Gleichungen aufstellen:
\[\begin{align} z_i &= az_{i−1} + b &\pmod {16} \\ 8 &= 1a + b &\pmod {16} \\ 11 &= 8a + b & \pmod {16} \end{align}\]
  Als Lösung ergibt sich a = 5 und b = 3 und damit die Folge:
  Folge: 1 8 11 10 5 12 15 14 9 0 3 2 13 4 7 6 1 . . .
  Hinweis: Bei der Rechung modulo m kann eine Zahl a durch im ± a mit i ∈ Z ersetzt werden.
  1. $⌈\log_2(10^9)⌉ = 30$
  2. Aufgrund der Modulo-Operation können gezielt bestimmte Bits der Nachricht manipuliert werden -> Nachrichtenintegritätsprüfung einbauen.

Blockchiffre

  1. Echtzeitkommunikation, kein Warten auf vollständige Blöcke notwendig
  2. Counter-Modus hat keine Rückkopplung
  3. Alle Betriebsarten im Stromchiffre-Modus (CFB, OFB, CTR)
  4. CFB ist eine Stromchiffre mit XOR-Verknüpfung zwischen Klartext und Chiffrat

Fakultativ

Code-Demo

1
2
    function some(code) { /*goes here*/ }
    let x = 21;

Letzte Änderung: 30. May 2024 15:59