Übungen
Aufgabe 1
Benutze die die Funktion sha256
aus der Python-Bibliothek hashlib
, um ein Signiersystem
wie im Abschnitt
Einstieg - Signiersysteme
zu simulieren.
Teste mit diesem Signiersystem, welche Möglichkeiten ein Angreifer zur Manipulation einer Nachricht hat.
from chiffriersystemModularePotenz import * from hashlib import sha256 def fingerabdruck(text): sha256Ergebnis = sha256(bytes(text, 'iso8859-1')).hexdigest() zahl = int('0x'+sha256Ergebnis, 16) return zahl # Vorgaben abc = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ' oeffentlicherSchluesselAlice = (65537, 3475540152245156575672595655541174668192098004113331077900989083455772646364338528746104119) privaterSchluesselAlice = (939191847296362710456103713316663920742207540542463637852353915678518786689275466125319473, 3475540152245156575672595655541174668192098004113331077900989083455772646364338528746104119) # Nachricht erstellen quelltext = 'HEUTE HITZEFREI' fingerabdruckQuelltext = fingerabdruck(quelltext) print('Fingerabdruck zur Nachricht:', fingerabdruckQuelltext) fingerabdruckVerschluesselt = verschluesselteZahl(fingerabdruckQuelltext, privaterSchluesselAlice) print('verschlüsselter Fingerabdruck:', fingerabdruckVerschluesselt) nachricht = (quelltext, fingerabdruckVerschluesselt) print('Nachricht gesendet:', nachricht) # Nachricht verändern quelltextVeraendert = 'HEUTE KEIN HITZEFREI' nachrichtEmpfangen = (quelltextVeraendert, fingerabdruckVerschluesselt) print('Nachricht empfangen:', nachrichtEmpfangen) # Nachricht analysieren # ...
Aufgabe 2
Sabrina hatte Marco aufgefordert, mit ihrer Hash-Funktion SRA zum Wort "Hund" eine Kollision zu finden. Marco antwortet: Zu "Hund" konnte ich jetzt nichts finden, aber zu "Katze" war es ziemlich einfach, eine Kollision zu finden."
Beurteile Sabrinas Funktion SRA in Hinblick auf starke und schwache Kollisionsresistenz.