HTTPS make your data transmission secure by encrypting the traffic between the client and the server.
La crittografia è solo una parte della sicurezza durante il trasferimento dei dati. La seconda e simile parte importante è l'autenticazione, cioè assicurandoti di parlare con il server corretto. Inoltre, TLS rileva la modifica dei dati al di sopra della crittografia. Ciò è necessario poiché molti metodi di crittografia non si rendono conto se i dati crittografati sono stati modificati, ma invece semplicemente decodificano questi dati in qualcosa di diverso. Inoltre, TLS ti consente di generare in modo sicuro una chiave di crittografia unica per la connessione in modo da non dover scambiare in qualche modo una chiave segreta comune a tutte le parti in anticipo.
Is HTTPS still needed if the username/password is encrypted at the application level?
Se tutto ciò che devi proteggere sono nome utente e password e la tua protezione è strong come quella di TLS (cioè crittografia strong con chiave unica e non pre-condivisa, autenticazione strong, rilevamento di modifiche) allora non hai bisogno anche per usare TLS. Ma in molti scenari non solo il nome utente e la password sono sensibili e devono essere protetti, ma anche i contenuti del sito Web potrebbero essere protetti (come estratti conto bancari, rapporti sulla salute o simili) o persino l'URL che visiti. E anche la protezione dalle modifiche è necessaria, ad esempio nel settore bancario online. Inoltre, spesso non hai infrastrutture per scambiare in modo sicuro la chiave di crittografia e affidarti a una chiave codificata all'interno dell'applicazione potrebbe essere troppo insicuro.
How HTTPS make my data more secure even if I have encryption implemented at the software level?
Se tutto è già crittografato con la stessa forza di TLS (vedi ultimo punto), TLS non aggiunge più sicurezza.
How do both concepts differ? And how it can be security loophole if one of them is not implemented in a very critical environment?
TLS fornisce la crittografia end-to-end tra l'applicazione client e server. Con la crittografia a livello di applicazione è possibile aggiungere ulteriore sicurezza, se necessario, ad esempio crittografando le informazioni sensibili non solo durante il trasferimento ma anche a riposo (file, database ..).
Un esempio tipico per vedere queste differenze è il recapito della posta. TLS può essere utilizzato quando si consegna la posta tra ciascuno degli agenti di trasferimento della posta (MTA). Ma su ogni MTA la posta è visibile in chiaro poiché la connessione TLS protegge solo il trasferimento tra il MTA. Se si desidera aggiungere più sicurezza, è possibile utilizzare S / MIME di PGP che aggiunge la crittografia a livello di applicazione. In questo modo il MTA può vedere solo la posta crittografata e può essere decifrato dal destinatario finale solo chi ha la chiave di crittografia (o può calcolarla).