Skip to main content

Einführung in Kryptographie (Teil 2)

Während Konzelationssysteme (vorgestellt in Teil 1 der Kryptographie-Einführung) die Vertraulichkeit von Daten sicher stellen, dienen Authentikationssystem dem Schutz ihrer Integrität.

Authentikationssysteme

Bei einem Authentikationssystem wird die Nachricht um einen Prüfwert erweitert, den sog. Message Authentication Code (MAC), der in Abhängigkeit von einem geheimen Schlüssel aus der Nachricht berechnet wird. Der Empfänger berechnet seinerseits den MAC und vergleicht ihn mit dem zuvor berechneten Wert. Stimmen beide überein, wurde die Nachricht nicht verändert.

Bei einem symmetrischen Authentikationssystem wird ein gemeinsamer Schlüssel sowohl zum Berechnen des MAC als auch zu dessen Prüfung verwendet. Ein solches System können Sie sich als Glaskasten mit einem Schloss mit zwei gleichen Schlüsseln vorstellen.

Authentikationssystem

Ein symmetrisches Authentikationssystem hat dieselben Nachteile beim Schlüsselaustausch wie symmetrische Konzelationssysteme. Asymmetrische Authentikationssysteme vereinfachen den Schlüsselaustausch analog zu asymmetrischen Konzelationssystemen, indem sie einen geheimen Schlüssel zur Berechnung des MAC verwenden, der dann mit dem dazu gehörenden öffentlichen Schlüssel geprüft werden kann. Der größte Vorteil asymmetrischer Systeme ist aber, dass mit ihnen nicht nur die Integrität der Nachricht, sondern auch die Identität des Senders überprüft werden kann.

Dies ist bei symmetrischen Systemen nicht möglich: Jeder, der den (einzigen) Schlüssel besitzt, kann den MAC berechnen. Bei asymmetrischen Systemen kann dies nur derjenige, der den geheimen Schlüssel besitzt. Asymmetrische Authentikationssysteme werden daher auch als digitale Signatursysteme bezeichnet. Ein asymmetrisches Authentikationssystem können Sie sich als Glaskasten mit einem Schloss mit einem einzigen Schlüssel vorstellen: Nur, wer den Schlüssel besitzt, kann etwas hinein legen.

asymmetrische Authentikationssysteme

Aufgrund ihrer Vorteile werden meist nur asymmetrische Authentikationssysteme eingesetzt, z.B. RSA, das nicht nur als Konzelations-, sondern auch als Authentikationssystem verwendet werden kann. Ein weiteres System ist der Digital Signature Algorithm (DSA), und auch schlüsselabhängige Hash-Funktionen können als Authentikationssysteme eingesetzt werden. Eine Reihe von Implementierungen für C#/.NET finden Sie im Namespace System.Security.Cryptography.

Im Rahmen von Desktop-Anwendungen kommen Authentikationssysteme z.B. zum Einsatz, wenn die Integrität nachgeladener Updates geprüft werden soll. Ohne so eine Prüfung könnte ein Angreifer ein gefälschtes Update mit Schadcode einschleusen.

Hash-Funktionen

Eine Hash-Funktion berechnet aus einer beliebig langen Eingabe, z.B. einem Text, einen möglichst eindeutigen Hash-Wert fester Länge, z.B. eine Zahlen-Buchstaben-Kombination. Der Hash-Wert wird auch als Fingerprint (Fingerabdruck) der Eingabe bezeichnet. Kryptographische Hashfunktionen müssen eine Reihe von Anforderungen erfüllen:

  • Aus einer großen Eingabe wird effizient eine kleine Ausgabe berechnet.
  • Ähnliche Eingaben führen zu unterschiedlichen Ausgaben.
  • Es handelt sich um eine sog. Einweg-Hash-Funktion (engl. 'one-way'):
    • Zu einem gegebenen Hash-Wert lässt sich nicht effizient eine passende Eingabe finden.
    • Zu einer gegebenen Eingabe lässt sich nicht effizient eine weitere Eingabe mit gleichem Hash-Wert finden.
  • Da die Ausgabemenge kleiner als die Eingabemenge ist, kommt es zwangsläufig zu Kollisionen, d.h. zwei unterschiedliche Eingaben ergeben den gleichen Hash-Wert. Eine Hash-Funktion wird als kollisionsfrei (manchmal auch als kollisionsresistent) bezeichnet, wenn sich diese Kollisionen praktisch nicht berechnen lassen.

Es gibt zwei Haupteinsatzgebiete für Hash-Funktionen: Digitale Signaturen und Integritätsprüfungen. Im Rahmen einer digitalen Signatur wird die Hash-Funktion verwendet, um den zu signierenden Text zu komprimieren: Statt des kompletten Textes wird nur dessen Hash-Wert signiert ('Hash-then-Sign'-Paradigma). Bei der Integritätsprüfung wird der Hash-Wert beliebiger Daten berechnet, gespeichert und später mit dem erneut berechneten Hash-Wert verglichen. Stimmen gespeicherter und berechneter Hash-Wert überein, wurden die Daten nicht verändert. So kann durch Ihre Desktop-Anwendung z.B. die Unversehrtheit von Dateien sichergestellt werden.

Es gibt eine ganze Reihe von Hash-Funktionen, von denen ein Teil bereits als unsicher bekannt ist. Für den immer noch häufig eingesetzten MD5-Algorithmus wurde 2004 ein praktischer Angriff beschrieben, womit MD5 gebrochen ist und nicht mehr eingesetzt werden sollte.

Welche Hash-Funktionen Sie verwenden sollten, können Sie der von der Bundesnetzagentur veröffentlichten Übersicht zu den im Rahmen der "qualifizierten elektronischen Signatur" zulässigen Algorithmen und Schlüssellängen entnehmen. Was für die qualifizierte elektronische Signatur, an die hohe Ansprüche gestellt werden, gut genug ist, ist auch für jeden anderen Verwendungszweck geeignet. Dieses Jahr (2011) gelten z.B. einige Funktionen der SHA-2-Familie (SHA-256, SHA-384, SHA-512) für die kommenden sieben Jahre als sicher. Die Zahl hinter SHA gibt die Länge des Hash-Werts an. Die ebenfalls zur Familie gehörende Funktion SHA-224 gilt hingegen nur noch bis 2015 als sicher. In der Übersicht finden Sie auch Informationen über einige der anderen erwähnten Verfahren und deren Einsatz. Sie wird jährlich überarbeitet, sodass Sie darin ständig aktuelle Informationen finden.

Eine Reihe von Implementierungen für C#/.NET finden Sie im Namespace System.Security.Cryptography. Darin sind auch zwei Verfahren enthalten, die von der Bundesnetzagentur explizit als unsicher eingestuft werden: SHA-1 und RIPEMD-160. Diese sollten Sie nicht mehr verwenden. Das gleiche gilt natürlich für die inzwischen als unsicher eingestuften Varianten der Signatursysteme RSA und DSA. Und im Fall von RSA gilt zusätzlich "Eine für die Signatur zu kurze Schlüssellänge ist natürlich auch für die Verschlüsselung zu kurz".


 

Autor des Artikels

Dipl.-Inform. Carsten Eilers ( www.ceilers-it.de) ist als freier Berater und Coach für IT-Sicherheit und technischen Datenschutz tätig und als Autor verschiedener Artikel und des Buches "Ajax Security" bekannt.  Seinen Blog finden Sie hier.

 



These postings are provided "AS IS" with no warranties, and confers no rights. Use of included code samples are subject to the terms specified at Microsoft - Information on Terms of Use. The content of these security articles are the own personal opinions from Carsten Eilers.

Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur -Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die -Website verlassen.

Möchten Sie teilnehmen?