Ich verwende RSA, um die Kommunikation zwischen einem Server und einem Client zu verschlüsseln. Sagen wir, wir haben 2 Asymmetrische Schlüssel, Schlüssel 1 und Schlüssel2.
Der Server hat key1 (Private) von Anfang an und der Client hat den Schlüssel1 (public)
Also hier ist das Szenario:
Soweit ich sehen kann, sollte dies einen Man-in-the-Middle-Angriff verhindern, oder fehlt mir etwas? Bei Punkt 7 sollte der Client wissen, ob jemand versucht, dem Server den falschen Schlüssel zum Verschlüsseln zu geben, da niemand außer dem Server key2 (public) entschlüsseln kann.
Wenn Sie etwas tun können, um die Sicherheit zu verbessern, sagen Sie es mir bitte.
Das Beste, was Sie tun können, um die Sicherheit zu verbessern, ist ein vorhandenes Design zu verwenden und nicht das Rad neu zu erfinden. Ich sage nicht, dass das, was Sie getan haben, notwendigerweise falsch ist, aber nur so viele Menschen, die klüger sind als Sie und ich, haben viel Zeit damit verbracht, über dieses Problem nachzudenken. Verwenden Sie stattdessen TLS.
Solange key1 (privat) nicht von einem Drittanbieter abgefangen wurde, sieht Ihr Szenario sicher aus.
Ich glaube, ich habe das irgendwo in einer Zeitung gesehen. Darin gab Alice Bob eine unverschlossene Schachtel (Schlüssel 1 öffentlich), dann steckte Bob ein paar seiner eigenen Boxen (Schlüssel 2 öffentlich) hinein, sperrte sie ein und schickte sie zurück zu Alice. Alice öffnet dann die Box (Schlüssel 1 privat) und jetzt kann sie die Boxen, die Bob ihr gerade gegeben hat, sicher verschließen.
Trotz der Box-Analogie, das ist im Wesentlichen, was Sie tun, also würde ich sagen, es ist sicher.
Ich stimme zu, verwenden Sie einfach TLS.
Welchen Wert bieten auch die Schritte 5 bis 7? Ein MITM, der einen Angriff ausführen möchte, der nach den Schritten 1-4 funktioniert (z. B. DoS, indem er n Transaktionen durchleitet und dann stoppt, erzwingt einen erneuten Versuch von Anfang an), könnte dies genauso gut nach 5-7 tun. Was fügen sie hinzu?
- MarkusQ
Nein, dieses Protokoll ist nicht sicher.
Ein Man-in-the-Middle kann die vom Client gesendeten Daten abfangen und die gewünschten Daten an den Server senden, da Sie für den Server keinen Mechanismus zur Authentifizierung des Clients oder zur Überprüfung der Integrität der Nachrichten angegeben haben empfängt.
Sicher, Sie könnten Ihr Protokoll aufarbeiten, um diese eklatanten Probleme zu beheben, aber es würde andere geben. Wenn Sie jemals alle beheben, haben Sie etwas, das TLS oder SSH zugeordnet ist, also warum nicht einfach dort anfangen?
@ Petoj - das Problem, auf das ich mich konzentrierte, war, dass der Server den empfangenen Nachrichten vertraute; Ihr Vorschlag bietet dort keine Sicherheit. Wenn Sie jedoch Bedenken hinsichtlich der Vertraulichkeit haben, haben Sie immer noch ein Problem, weil das MITM Nachrichten unverändert hin und her weiterleiten kann, bis er sieht, was zu finden ist, weil Sie keine Privatsphäre auf den Client-Nachrichten haben.
Ihr Vorschlag scheint darauf ausgerichtet zu sein, die Integrität von Nachrichten vom Client sicherzustellen. Sie haben das Protokoll so weit entwickelt, dass der Client nicht zwischen einem Angriff und einem Netzwerkausfall unterscheiden kann. Statt zu versuchen, dem Client zu helfen, festzustellen, ob der Server auf eine manipulierte Nachricht reagiert hat, lassen Sie den Server die Integrität der Nachricht überprüfen, bevor Sie darauf reagieren.
Ich stimme Greg zu, dass Sie das Rad neu erfinden . Was Sie im Wesentlichen beschreiben, ist eine grundlegende Form des Schlüsselaustausches . Um sicherzugehen, dass es gegen Man-in-the-Middle-Angriffe sicher ist, müssen Sie sich außerdem der Identität des Servers sicher sein, dh sicherstellen, dass der Client mit Sicherheit weiß, was er für öffentlich hält (key1) der Server und nicht der Man-in-the-Middle-Server (z. B. eine CA verwenden oder das Public (key1) des Servers im sicheren Speicher auf der Clientseite haben).
Außerdem gibt es zusätzliche Überlegungen , die Sie vom Standpunkt des Systems aus kennen müssen, wie zum Beispiel:
key2
generieren, wird dies möglicherweise gemildert. Tags und Links security encryption rsa