News I’ve been waiting for for years – the document formally known as draft-murray-auth-ftp-ssl-16.txt has finally been released by the RFC editor as RFC 4217 – â€śSecuring FTP with TLSâ€ť
What exactly does this mean?Â Technically, not very much – FTPS has been implemented by several FTP clients, servers and wrappers for several years.Â I added FTPS supportÂ to WFTPD Pro back in 2001, after first expressing interest in doing so in 1997, but being held back by the lack of crypto support in Windows.
I nearly had it ready in 2000, but spent some time trying to debug an issue that turned out to be caused by a corrupted certificate issued by the Windows 2000 Server CA that I was testing against.Â Let that be a lesson to you crypto developers – sometimes the code is right, and it’s the certs that are wrong!
A few minor things have changed since then in the document that is now RFC 4217, but almost nothing significant to the compatibility of FTPS offerings.
I will end withÂ a brief FAQ for you – please let me know if there are any other questions you’d like to see answered:
1. What’s TLS, and what is its relation to SSL?
TLS is Transport Layer Security, and is the name of the protocol that grew from Netscape’s SSL and Microsoft’s PCT.Â Most people still use the term â€śSSLâ€ť, but TLS is where all ongoing work is carried out by the IETF.
2. Is FTPS the official term?
No – the RFC is â€śSecuring FTP with TLSâ€ť, and perhaps the official term should be â€śAUTH TLSâ€ť.Â However, with the general public already familiar with the concept of â€śhttpsâ€ť being the secured equivalent of â€śhttpâ€ť, the term â€śftpsâ€ť has sprung up in general use to describe an FTP transfer, or session, encrypted and/or authenticated with SSL or TLS.
3. How different is FTPS from HTTPS?
Quite significantly – HTTPS uses a separate port for incoming SSL connections (usually port 443), compared to the port for unprotected HTTP connections (usually port 80).Â Because FTP is (and has always been)Â a session-based protocol, it allows the client to â€śnegotiate upâ€ť to SSL or TLS security through the use of the AUTH command described in RFC 2228.
Note also that FTP uses two channels – a control channel and a data channel, and that these channels can be secured – or left unsecured – almost independently.Â HTTPS is secured from the moment you connect to the HTTPS port, until you close down the connection.Â FTP is secured on the control channel from the moment you send an â€śAUTH TLSâ€ť or â€śAUTH SSLâ€ť command, until you log out; the data channel is not necessarily secured by default, and security on the data channel can be turned on or off using the PROT command, with parameters â€śCâ€ť for â€śClearâ€ť or â€śPâ€ť for â€śPrivateâ€ť.
FTPSÂ always authenticates the server through its certificate, and can be configured to authenticate the client by certificate, or by USER / PASS commands supplying username and password.Â HTTP and HTTPS have several other methods of authentication (none of which bear much examination at the moment) – NTLM CHAP, Basic, Digest, etc, etc.
4. What about SFTP?Â What’s that?
I get to answer this question a lot.Â With all these acronyms getting thrown around, it’s easy to get confused.Â Many people automatically assume that any acronym including the letters â€śFTPâ€ť refer to protocols based on FTP.Â Obviously, that’s why â€śFTPSâ€ť was chosen as an informal description of â€śSecuring FTP with TLSâ€ť.Â Unfortunately, others may create confusing acronyms by including the FTP letters, either by accident or on purpose.Â One such confusion was always â€śTFTP – Trivial File Transfer Protocolâ€ť.Â This is about as far from FTP as you can get, and still be associated with transferring files from one machine to the other.
The same is true of â€śSFTPâ€ť – it’s a file transfer extension to â€śSSHâ€ť.Â As that sentence implies, to do an SFTP file transfer, you need to have an SSH connection in place.Â This isn’t always practical.