Is one more secure than the other. I have heard that it is difficult to get FTP to downgrade protocols. So is the implementation of SSL onto FTP more secure than through FTP?
L'FTP su SSL dovrebbe avere in teoria la stessa sicurezza di HTTP su SSL. Ma in pratica questo probabilmente non è il caso:
- HTTPS viene spesso utilizzato nei browser. Per gestire i server danneggiati, i browser implementano il downgrade SSL se la connessione fallisce. Si noti che questo comportamento non è inerente a HTTPS, ma a un'implementazione specifica all'interno dei browser. L'implementazione HTTPS al di fuori dei browser di solito non esegue il downgrade SSL e invece fallisce al primo errore, così come l'implementazione SSL nei client FTPS.
- FTPS non è ampiamente utilizzato. E se viene utilizzato spesso con certificati autofirmati o altrimenti danneggiati (come certificati di catena mancanti, mancata corrispondenza dell'hostname ...). I client FTPS tendono a ignorare gli errori del certificato o a consentire all'utente di continuare facilmente senza una corretta convalida. Alcuni addirittura non controllano il certificato o fanno controlli incompleti (come non controllare il nome nel certificato). Al contrario, i browser oggi presentano spesso degli avvisi sugli errori dei certificati che sono difficili da bypassare. Altre applicazioni che utilizzano HTTPS hanno spesso gli stessi problemi dei client FTPS, ma lentamente implementano ai controlli appropriati che sono abilitati di default.
- FTPS ha diversi gradi di sicurezza. La modalità migliore è crittografare il controllo e il canale dati, ma questo può entrare in conflitto con gli helper del protocollo su middlebox (come firewall o router NAT) che devono controllare o riscrivere le risposte a
PASV
/ EPSV
o PORT
/ EPRT
comandi, in modo che le porte necessarie possano essere aperte sulla middlebox. Pertanto, FTPS può eseguire il downgrade della connessione di controllo da SSL a plain di nuovo (con il comando CCC
) e da allora su tutto il traffico sulla connessione di controllo non viene più crittografato. Questo apre la strada agli attacchi man-in-the-middle che potrebbero anche provare a convertire i canali dati in testo normale restituendo un codice di errore al comando PROT P
che viene utilizzato per impostare un canale dati crittografato.
In sintesi, penso che HTTPS sia più sicuro nella pratica, anche se i browser eseguono il downgrade dei protocolli SSL sugli errori.