HTTPS verfügt über zahlreiche Anwendungsfälle, von denen die meisten zur Abwehr von Man-in-the-Middle-Angriffen entwickelt wurden. Jeder, der die Einstellung eines Hackers hat, wird schaudern, wenn er Ihnen sagt, dass es keinen anderen Weg gibt als den etablierten, etwas zu erreichen. Tatsache ist, dass nur weil Sie TLS (den Standard, den modernes HTTPS verwendet) verwenden, dies nicht bedeutet, dass Sie es gut verwenden. Darüber hinaus hindert die bloße Verwendung von TLS niemanden daran, bekannte Schwachstellen auszunutzen. So wie Sie möglicherweise kreative Wege finden, um Ihre Daten zu schützen, gibt es Menschen, die kreative Wege finden, um Ihre Sicherheitsmaßnahmen auszunutzen.
Also, was tun?
Wenn Sie auf TLS verzichten möchten, ist es zunächst hilfreich zu verstehen, wie es funktioniert. Und es geht um einen Handschlag.
Sobald sich Client und Server auf die Verwendung von TLS geeinigt haben, verhandeln sie mithilfe eines Handshake-Verfahrens eine zustandsbehaftete Verbindung. [7] Während dieses Handshakes vereinbaren Client und Server verschiedene Parameter, mit denen die Sicherheit der Verbindung hergestellt wird:
- Der Handshake beginnt, wenn ein Client eine Verbindung zu einem TLS-fähigen Server herstellt und eine sichere Verbindung anfordert und eine Liste der unterstützten Cipher Suites (Chiffren und Hash-Funktionen) anzeigt.
- Aus dieser Liste wählt der Server eine Verschlüsselungs- und Hash-Funktion aus, die er ebenfalls unterstützt, und benachrichtigt den Client über die Entscheidung.
- Der Server sendet seine Identifikation in Form eines digitalen Zertifikats zurück. [Widerspruch] Das Zertifikat enthält normalerweise den Servernamen, die vertrauenswürdige Zertifizierungsstelle (CA) und den öffentlichen Verschlüsselungsschlüssel des Servers.
- Der Client kann sich an den Server wenden, der das Zertifikat ausgestellt hat (die vertrauenswürdige Zertifizierungsstelle wie oben), und die Gültigkeit des Zertifikats bestätigen, bevor er fortfährt.
- Um die für die sichere Verbindung verwendeten Sitzungsschlüssel zu generieren, verschlüsselt der Client eine Zufallszahl mit dem öffentlichen Schlüssel des Servers und sendet das Ergebnis an den Server. Nur der Server sollte es mit seinem privaten Schlüssel entschlüsseln können.
- Aus der Zufallszahl generieren beide Parteien Schlüsselmaterial für die Ver- und Entschlüsselung. [Widerspruch] Damit ist der Handshake abgeschlossen und die gesicherte Verbindung wird gestartet, die mit dem Schlüsselmaterial verschlüsselt und entschlüsselt wird, bis die Verbindung geschlossen wird.
Wenn einer der oben genannten Schritte fehlschlägt, schlägt der TLS-Handshake fehl und die Verbindung wird nicht hergestellt.
Quelle: Wikipedia
Also ist es möglich? Ja. Mir wurde beigebracht, dass alles möglich ist. Es mag teuer sein, aber es ist immer möglich.
Ich möchte vollständig offenlegen, dass ich KEIN Sicherheitsexperte bin, sondern nur ein Enthusiast. Ich empfehle nicht, dies für ein Produktionsprojekt oder etwas anderes als Ihre eigene Erbauung zu versuchen. Sie sollten auf jeden Fall diesen SO-Beitrag lesen der eine hervorragende Erklärung für Hindernisse bei der Einrichtung Ihres eigenen Sicherheitsprotokolls bietet.
Wenn Sie jedoch weitermachen möchten, sind hier einige Gedanken, die Ihnen in den Sinn kommen. Dies sind Realitäten, die existieren werden, unabhängig davon, welchen direkten Weg Sie mit diesem Projekt gegangen sind.
HTTPS wird von allen gängigen modernen Browsern unterstützt. Trotz dieser Realität sind die HTTPS-Ladezeiten langsamer als bei normalem HTTP. Ohne umfangreiche Produktion ist es sehr wahrscheinlich, dass Ihre alternative Implementierung einen Bruchteil so sicher ist und gleichzeitig erheblich langsamer. Dies ist ein Nachteil jeder selbst erstellten Implementierung, es sei denn, Sie verwenden Browserfunktionen. Dadurch schließt sich der Kreis zurück zur Verwendung von TLS, wie es das moderne HTTPS verwendet.
Wenn Sie es schaffen, Ihr Passwort ohne TLS auf der Browserseite mit Javascript so unvorhersehbar zu verschlüsseln, dass ein MiTM-Angriff schwierig wäre, ruhen Sie sich nicht dort aus. Sie sollten auch die Daten sichern, die Sie hin und her senden. Ansonsten ist das zu verschlüsselnde Passwort wirklich irrelevant. Sicher, ein Angreifer kennt das Passwort von bobsmith109 möglicherweise nicht, benötigt es jedoch nicht, da er jede einzelne Aktivität im Netzwerk abhören kann. Er weiß, wann sich bobsmith109 anmeldet, kann wahrscheinlich seine IP und alle anderen vertraulichen Daten verfolgen, die Sie hin und her senden.
Unabhängig davon, welche Sicherheitsmaßnahmen Sie ergreifen, gibt es umfassende Sicherheit. Eine Sache, die Sie sofort tun können, ist sicherzustellen, dass Sie Ihre Daten in der Datenbank verschlüsseln und gleichzeitig sichere Passwörter benötigen.
Ich bekräftige, dass ich kein Sicherheitsexperte bin, und rate davon nachdrücklich davon ab , Ihre Neugier zu stillen. Es ist astronomisch unwahrscheinlich, dass Sie eine praktikable Alternative zu TLS schaffen können, ohne dass eine außerordentlich große Gruppe von Sicherheitsexperten jahrelang, wenn nicht jahrzehntelang an einem Projekt beteiligt ist. Dies kann SSL / TLS vorweisen. Ein guter Ausgangspunkt für die weitere Vorgehensweise ist jedoch, das obige Handshake-Modell zu betrachten und zu prüfen, wie Sie eine Version davon ohne TLS implementieren können.
Ich möchte nicht in meinem Beitrag mitteilen, dass die meisten realen Hindernisse für die Verwendung von HTTPS aktiv bekämpft werden. Einer der größten - Kosten - steht kurz davor, kein Thema zu werden. Eine kostenlose Zertifizierungsstelle wird im 2. Quartal 2015 herauskommen und von einigen großen Waffen unterstützt werden, darunter Mozilla und Akamai, um nur einige zu nennen. Hier ist ein Artikel .