FTP, FTPS, y SFTP, son unos términos que pueden y son confundidos habitualmente. En pocas palabras, FTP es un sistema basico de transferencia de ficheros, mientras que FTPS y SFTP, nos proporcionan transferencias de ficheros seguras. SFTP utiliza el protocolo SSH para enviar los datos de forma segura, mientras que FTPS utiliza SSL y certificados con este fin. La utilizacion de uno u otro protocolo depende de la naturaleza de tu aplicacion y los requisitos de la misma.

Profundicemos un poco mas en las diferencias entre estos protocolos:

FTP (File Transfer Protocol)

FTP no utiliza ningun tipo de seguridad en sus transmisiones, es decir, transmite tanto el nombre de usuario, como la contraseña, como los archivos y los comandos sin ningún tipo de cifrado o codificación de forma que pueden ser vistos e interpretados por cualquier usuario o aplicación maliciosa dentro de la misma red.

SFTP (Secure File Transferred Protocol)

SFTP es una herramienta sustituta de FTP para la transmisión de archivos de forma segura mediante el uso del protocolo SSH(Secure Shell Protocol).

Las características principales de SFTP son:

1. SFTP codifica los datos mientras se están transfiriendo a traves de la red.
2. SFTP cifra tanto los comandos como los datos proporcionando una protección efectiva contra los problemas de seguridad comunes en la red.
3. SFTP cifra los datos de sesion, evitando la detección de tu nombre de usuario, contraseña, o cualquier cosa que transmitas.

FTPS (File Transfer Protocol – SSL)

FTPS no es una herramienta sustituta de FTP, FTPS implementa el protocolo original de FTP a traves de un tunel seguro. FTPS es FTP puro sobre SSL/TLS (Secure Socket Layer / Transport Layer Security) que cifra el control de la sesion y los datos si es necesario mientras dure la transmison a traves de la red.
Tanto FTPS como SFTP utilizan una combinacion de algoritmos asimetricos(RSA, DSA), un protocolo simetrico (DES/3DES, AES, Twhofish y otros), y un algoritmo de intercambio de claves. Para la autentificacion de usuarios, FTPS (o para ser mas preciso, SSL/TLS sobre FTP) utiliza certificados X.509, mientras que SFTP utiliza claves SSH.

A diferencia de FTPS, SFTP no utiliza canales diferentes para los datos y los comandos FTP. En SFTP los datos y los comandos son transferidos en un formato especial a traves de una sola conexión.

¿Cual elegir?

Como es natural, la respuesta depende de cuales son las necesidades y objetivos. En general SFTP es tecnologicamente superior a FTPS. Por supuesto, es una buena idea ofrecer soporte para los dos protocolos, ya que son diferentes tanto en concepto, como en comandos soportados, como en algunas otras cosas.

Parece mas lógico utilizar FTPS cuando los accesos al servidor se hacen desde dispostivos personales (Smartphones, PDAs, y similares), o desde otros sistemas operativos que tienen soporte para FTP pero no tienen clientes SSH/SFTP. Pero si estas desarrollando un sistema de seguridad personalizado, quizás sea mejor solución SFTP.

Por la parte del cliente, el servidor al que te quieres conectar es el que define los requisitos necesarios para ello. Cuando te conectas a servidores en internet, SFTP es mas popular ya que tiene soporte nativo en los servidores Linux y UNIX.

Para transferencias entre clientes, puedes utilizar cualquiera de los dos sistemas, tanto FTPS, como SFTP. Para FTPS, necesitas un cliente FTPS y una aplicación de servidor, normalmente puedes encontrarlos tanto gratuitos como de pago. Para ofrecer soporte SFTP, puedes instalar el paquete OpenSSH, disponible para casi todos los sistemas operativos, de forma gratuita, tanto en cliente como servidor.