Ü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:in 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
Marco hat Sabrina aufgefordert, mit seiner Hash-Funktion MCO zum Wort "Hund" eine Kollision zu finden. Sabrina antwortet: Zu "Hund" konnte ich jetzt nichts finden, aber zu "Katze" war es ziemlich einfach, eine Kollision zu finden."
Beurteile Marcos Funktion MCO im Hinblick auf starke und schwache Kollisionsresistenz.