Assignment crypto 05
Gruppenmitglieder: Basil Estermann, Jonas Arnold, Simon Frei

Wir konnten erfolgreich einen SHA-1 Hash Generator implementieren. Wie vorgesehen lässt sich der SHA-1 mit den verhältnismässig kleinen Zahlen (32bit) gut implementieren, auch beispielsweise auf Embedded Systemen mit der Programmiersprache C. 
Bei der Implementierung haben wir uns hauptsächlich auf das Dokument der NIST gestützt. Das Preprocessing bzw. Padding der Nachricht haben wir gemäss Abschnitt 5.1.1. implementiert. Aktuell kann unser Programm nur den Hash von eine Nachricht (1 Block a 512bit, mit Padding also maxima 447bit für Nachricht bzw. 55 ASCII Zeichen) berechnen. Dies wäre einfach erweiterbar gemäss Abschnitt 5.2.1. Die Hash Berechnung, welche wir anhand Abschnitt 6.1.2 implementiert haben, müsste ebenfalls um eine for-schleife von "i=1 bis N" erweitert werden.

Verifiziert haben wir unseren Generator einerseits mit den hilfreichen SHA1_DebugHelp.pdf von ILIAS. Damit war einfach nachvollziehbar wo unser Programm falsch rechnet. Ausserdem haben wir einen online SHA-1 Generator (http://www.sha1-online.com/) verwendet, um weitere Nachrichten zu testen.
Mithilfe dieser Verifikation war es möglich den Algorithmus zum Laufen zu bringen. Ein Prolglem bei der Implementierung war, dass wir erst den String-Ende Indikator ('\0') auch in den Hash integriert hatten, was dann zu anderen Hashes geführt hat als z.B. dem online SHA-1 Generator. Dieses Problem konnte jedoch rasch behoben werden, indem das '\0' einfach nicht miteinbezogen wird.

Beim Testen vom Hash einer Gruppen auf Ilias mussten wir jedoch feststellen, dass unser SHA-1 Generator nur bis zu einer Nachrichtengrösse von 32 Zeichen funktioniert. Der Grund dafür war, dass wir lediglich das Low-Byte der Länge der Nachricht in das Padding der Nachricht integriert hatten. Nachdem wir auch das High-Byte integrierten (nun also volle 64bit für die Länge der Nachricht am Ende des Message Blocks) konnten wir den SHA-1 Hash der anderen Gruppe OdermattStefan/PfrennigerDavid auch erfolgreich generieren.
Leider war zum Zeitpunkt dieses Berichts auch nur ein einziges Testfile einer anderen Gruppe im Austausch-Ordner.