RSA Publick-Key und Man-in-the-Middle in eigenen Projekten
Verfasst: 10.08.2018, 22:50
Guten Abend zusammen,
ich beschäftige mich gerade ein bisschen mit RSA und habe da ein Problem mit der Verteilung des Public-Keys. Grundsätzlich ist es ja so, wenn ich eine Person Bob habe und die hat sich ein Schlüsselpaar erzeugt, dass diese Person dann ihren Public-Schlüssel frei verteilt an Personen die mit Bob in Verbindung treten wollen, z.B. Alice. D.h. also Bob stellt den Public-Key z.B. auf seine Webseite.
Alice will jetzt mit Bob in Verbindung treten und lädt sich den Publickey herunter, um Ihre erste Nachricht zu verschlüsseln. Diese Vorgang ist unverschlüsselt und läuft über ganz normale IP-Kommunikation, im Falle der Webseite z.B. über HTTP, d.h. jeder kann es mitlesen wenn er will.
Hier setzt jetzt nun mein Verständnisproblem ein:
Nehmen wir an es gibt einen Bösewicht Joe, der sich als Man-in-the-middle in die Kommunikation zwischen Bob und Alice setzt. D.h. er liest mit, dass Alice den Publickey herunter lädt, er fängt diesen ab, ersetzt ihn durch seinen eigenen und schickt diesen stattdessen an Alice. Wenn jetzt Alice ihre geheime Nachricht mit dem empfangenen Public-Key verschlüsselt und an Bob schickt, fängt Joe diese Nachricht wieder ab entschlüsselt sie mit seinem eigenen privaten Key, verschlüsselt die geheime Nachricht wieder mit Bobs Publickey und schickt die Nachricht weiter an Bob. Niemand merkt, das Joe die geheime Nachricht mitgelesen hat und Joe hat alle Infos der geheimen Nachricht empfangen.
Wie kann ich dieses Szenario vermeiden? Muss ich dazu den Publickey von Bob an Alice vorverteilen (z.B. embedded in Binary)? Steh ich einfach nur auf dem Schlauch und ich muss das übermitteln des Publickeys einfach nur noch mit zusätzlichen Sicherheitsmechanismen absichern (Stichwort: Nonce, MAC)?
Für Anregungen wäre ich dankbar
Thoran
ich beschäftige mich gerade ein bisschen mit RSA und habe da ein Problem mit der Verteilung des Public-Keys. Grundsätzlich ist es ja so, wenn ich eine Person Bob habe und die hat sich ein Schlüsselpaar erzeugt, dass diese Person dann ihren Public-Schlüssel frei verteilt an Personen die mit Bob in Verbindung treten wollen, z.B. Alice. D.h. also Bob stellt den Public-Key z.B. auf seine Webseite.
Alice will jetzt mit Bob in Verbindung treten und lädt sich den Publickey herunter, um Ihre erste Nachricht zu verschlüsseln. Diese Vorgang ist unverschlüsselt und läuft über ganz normale IP-Kommunikation, im Falle der Webseite z.B. über HTTP, d.h. jeder kann es mitlesen wenn er will.
Hier setzt jetzt nun mein Verständnisproblem ein:
Nehmen wir an es gibt einen Bösewicht Joe, der sich als Man-in-the-middle in die Kommunikation zwischen Bob und Alice setzt. D.h. er liest mit, dass Alice den Publickey herunter lädt, er fängt diesen ab, ersetzt ihn durch seinen eigenen und schickt diesen stattdessen an Alice. Wenn jetzt Alice ihre geheime Nachricht mit dem empfangenen Public-Key verschlüsselt und an Bob schickt, fängt Joe diese Nachricht wieder ab entschlüsselt sie mit seinem eigenen privaten Key, verschlüsselt die geheime Nachricht wieder mit Bobs Publickey und schickt die Nachricht weiter an Bob. Niemand merkt, das Joe die geheime Nachricht mitgelesen hat und Joe hat alle Infos der geheimen Nachricht empfangen.
Wie kann ich dieses Szenario vermeiden? Muss ich dazu den Publickey von Bob an Alice vorverteilen (z.B. embedded in Binary)? Steh ich einfach nur auf dem Schlauch und ich muss das übermitteln des Publickeys einfach nur noch mit zusätzlichen Sicherheitsmechanismen absichern (Stichwort: Nonce, MAC)?
Für Anregungen wäre ich dankbar
Thoran