Sicherheitscode generieren

Hi,

Klarstellung: Meine Code Beispiele sind nicht immer sicher, sondern vielmehr als Skizze zu verstehen. Sie sollen nur grundsätzliche die technische Implementierung zeigen.

Die Methode "verify" zum Beispiel testet nur, ob die Signatur zum Public Key passt. Mehr nicht. Um die Sicherheitsproblematik zu zeigen, nehmen wir folgende Situation an. Ein Sender schickt 2 Mails an den Empfänger. Eine enthält den Public Key und eine den Text mit der Signatur. Ein Angreifer fängt beide ab und tauscht sowohl Schlüssel als auch die Signatur durch eigene. Eine Änderung in der Nachricht ist durch den Empfänger nicht mehr feststellbar.

Deswegen braucht man Zertifikate. Diese können bei einer Zertifizierungsstelle (z.B. VersiSign) beantragt werden. Dazu schickt man Angaben zur Person (Firma oder Server) an diese Stelle. Von der Zertifizierungsstelle werden diese Daten auf Echtheit geprüft. (z.B. Postident, Vorlage Personalausweis , oä). Wenn die Angaben stimmen, wird ein Zertifikat mit diesen Angaben und einem Schlüsselpaar erzeugt und diese Daten werden von VeriSign (oder wem auch immer) digital signiert.

Dieses Zertifikat speichert der Sender in einem Keystore. Signaturen erstellt er jetzt mit dem privaten Schlüssel aus seinem Zertifikat. Statt dem Public Key kann er nun in seiner Mail den öffentlichen Teil des Zertifikats senden. Ein Empfänger kann jetzt die Echtheit der Absenderangaben und damit die Authentzität des Public Key mit dem öffentlichen Key von VeriSign überprüfen. Eine "Man in Middle"-Attacke fällt auf.

Den öffentlichen Teil des Zertifikats kann der Empfänger seinerseits in einem Truststore speichern und bei Bedarf Daten mit dem Public Key aus dem Zertifikat verschlüsseln und zurücksenden.

In eine Richtung kann man also mit dem Zertifikat digital signieren und in die andere Richtung verschlüsseln.

Hoffe ich habe das einigermassen klar ausgedrückt.

Gruss

EDIT:

Bei vielen Anbietern sind Zertifikate für Privatpersonen kostenlos. Mit keygen kann man übrigends auch "Eigenzertifikate" erstellen. Damit kann man im Intranet oder zu Testzwecken arbeiten.
 
Zuletzt bearbeitet:
Zurück