Der häufige Fehler
Die Abkürzung SFTP wird häufig (auf falsche Weise) verwendet, um "Secure FTP" zu beschreiben, was es de facto jedoch gar nicht ist.
Ein ähnlicher Fehler ist, dass der Begriff SFTP häufig als "FTP over SSL" verwendet wird, was ebenfalls in diesem Zusammenhang nicht korrekt ist. "FTP over SSL" ist FTPS!
Was SFTP und FTPS gemeinsam haben
Doch, so unterschiedlich beide Protokolle sind, gibt es auch Gemeinsamkeiten. FTPS und SFTP verwenden beide eine Kombination aus asymmetrischen Algorithmen (RSA und DSA um genau zu sein), einem symmetrischen Algorithmus (DES/TrippleDES (3DES), AES, etc.) sowie einem Schlüssel-Austausch Algorithmus. Für die Authentifizierung benutzt FTPS beziehungsweise dessen SSL/TLS Protokoll jedoch so genannte "x.509 Zertifikate", wohingegen SFTP durch das "SSH Protokoll" entsprechende Schlüssel verwendet.
Der Unterschied zwischen x.509 und SSH
X.509 Zertifikate beinhalten einen Public Key und Informationen über den Besitzer des Zertifikats. Durch diese Information kann die andere Seite prüfen, ob das Zertifikat und die Daten des Zertifikatbesitzers korrekt sind. Diese Prüfung kann sowohl von einem Computer als auch von einem Menschen durchgeführt werden. Ein x.509 Zertifikat hat einen zugehörigen Private Key, der aus Sicherheitsgründen üblicherweise separat vom Zertifikat aufbewahrt wird.
Ein SSH Schlüssel beinhaltet einen Public Key (der dazugehörige Private Key wird separat gespeichert) und beinhaltet keine Informationen über dessen Besitzer. Auch Informationen für eine Validierung sind nicht vorhanden, da nur der Public Key genutzt wird, wodurch die Authentifizierung natürlich unvollständig ist und gleich wie die übliche SSH Schlüssel Authentifizierung ist.
Das wichtigste aus dieser Quelle:
FTPS erfordert nur dann händisches Eingreifen wenn das X.509-Zertifikat nicht von einer im System als vertrauenswürdigen CA zertifiziert ist. Andernfalls verhält es sich genauso unauffällig wie HTTPS, da dem Zertifikat und damit dem Schlüssel in einer chain of trust vertraut wird.
SFTP dagegen ist entweder Teil oder eine Erweiterung des SSH-Protokolls. In jedem Fall verhält es sich in Authentifizierung in der Regel wie SSH:
Der Server identifiziert sich dem Client gegenüber mit einem
RSA-,
DSA- oder
ECDSA-Zertifikat, wodurch Manipulationen im Netzwerk erkannt werden können (kein anderer kann sich als ein bekannter Server ausgeben).
Der Client kann sich unter anderem per
Public-Key-Authentifizierung mit einem
privaten Schlüssel, dessen
öffentlicher Schlüssel auf dem Server hinterlegt ist, oder einem gewöhnlichen
Kennwort authentisieren.
Auf welchem Port lauscht denn der Server?