Wenn Sie die Kennwortauthentifizierung verwenden, sendet SSH das Kennwort über das Netzwerk. Die Verbindung ist verschlüsselt, sodass Lauscher das Kennwort nicht sehen können. Die Verbindung wird authentifiziert, vorausgesetzt, Sie klicken nicht blind durch die Meldung "Die Authentizität von ... kann nicht hergestellt werden", sodass Ihr Kennwort nur an den legitimen Server gesendet wird.
Die langweilige Antwort auf das „Warum“ lautet, dass das SSH-Protokoll dies erfordert.
Die weniger langweilige Antwort ist, dass die Passwortauthentifizierung so funktionieren muss. Es gibt Möglichkeiten, eine Authentifizierung durchzuführen, die auf diese Weise nicht funktioniert. Dies ist jedoch keine einfache Kennwortauthentifizierung mehr.
Die meisten Authentifizierungsprotokolle, die weiter fortgeschritten sind als die einfache Kennwortauthentifizierung, haben die nette Eigenschaft, dass der Client keine geheimen Daten an den Server sendet, die ein böswilliger Server verwenden könnte, um sich als Benutzer auf einem dritten Server auszugeben. Bei der Authentifizierung mit öffentlichem SSH- Schlüssel , der häufigsten SSH-Authentifizierungsmethode außer Kennwörtern, funktioniert dies, da der Client eine Signatur (die den privaten Schlüssel erfordert) von Daten sendet, die die Sitzungskennung enthalten. Wenn der böswillige Server versuchen würde, sich bei einem dritten Server zu authentifizieren, müsste er eine Signatur von Daten mit einer anderen Sitzungskennung generieren, was ohne den privaten Schlüssel, der auf dem Client verbleibt, nicht möglich wäre.
Beachten Sie, dass dies keine kennwortbasierte Authentifizierung ist, wenn Sie die Authentifizierung mit öffentlichem Schlüssel verwenden und ein Kennwort eingeben müssen, um den Schlüssel zu verwenden. Das Kennwort zur Verwendung des Schlüssels wird ausschließlich auf der Clientseite verwendet, um den Schlüssel aus der Schlüsseldatei zu lesen. Bei Verwendung der Authentifizierung mit öffentlichem Schlüssel weiß der Server nicht, ob der Schlüssel in einer verschlüsselten Datei gespeichert wurde.
Für die Kennwortauthentifizierung muss das Kennwort an den Server gesendet werden. Das Senden eines Hashs des Passworts anstelle des Passworts selbst hilft nicht, da das Passwort dann zum Hash wird: Ein Angreifer müsste nicht das tatsächliche Passwort finden, sondern nur den Hash. Ein Angreifer könnteAngriff durch Finden des tatsächlichen Passworts, so gibt es keine Verbesserung. Aber wenn der Angreifer in Ihrem vorgeschlagenen Schema den Hash, aber nicht das Passwort gefunden hat, würde dies ausreichen. Im Gegensatz dazu muss der Angreifer bei einer normalen kennwortbasierten Authentifizierung das Kennwort kennen, da er weiß, dass der Hash nicht gut genug ist. Wenn das Kennwort stark genug ist, kann der Angreifer das Kennwort nicht aus dem Hash finden. In der Praxis kennt der Angreifer möglicherweise den Hash, aber nicht das Kennwort, weil es dem Angreifer gelungen ist, die Datenbank mit Kennwort-Hashes vom Server zu extrahieren, möglicherweise aus einer ungeschützten Sicherung oder über eine Sicherheitsanfälligkeit auf dem Server. Solche Schwachstellen auf Websites machen die Nachrichten ziemlich oft.
Ihr vorgeschlagenes Protokoll ist weniger gut als das Standardprotokoll. Rollen Sie nicht Ihre eigene Krypto!