Che cosa si desidera essere "sicuro da intercettare o anche attacchi man-in-the-middle"? La tua password o i tuoi dati?
Il titolo della domanda si riferisce specificamente all'autenticazione . MySQL fa un lavoro ragionevole di proteggere la tua password da intercettazioni (non viene inviato testo in chiaro e l'uso di un nonce sconfigge gli attacchi di replay). Citando MySQL protocol internals:
MySQL 4.1 e successivamente
Ricordate che i negozi mysql.user.Password SHA1 (SHA1 (password))
- Il server invia una stringa casuale (scramble) al client
- il cliente calcola:
- stage1_hash = SHA1 (password), utilizzando la password che l'utente ha inserito .
- gettone = SHA1 (scramble + SHA1 stage1_hash)() XOR stage1_hash
- il client invia il token al server
- il server calcola
- stage1_hash'= token XOR SHA1 (scramble + mysql.user.Password)
- il server confronta SHA1 (stage1_hash ') e mysql.user.Password
- Se ar e lo stesso, la password va bene.
(Nota SHA1 (A + B) è la SHA1 della concatenazione di A con B)
Questo protocollo risolve il difetto di quello vecchio, né snooping sul filo né mysql. user.Password sono sufficienti per una corretta connessione . Ma quando si hanno sia mysql.user.Password sia i dati intercettati sul filo, ha abbastanza informazioni per connettersi.
Tuttavia, le sessioni autenticate continuano in testo in chiaro: un intercettatore sarà in grado di vedere tutte le query e i risultati; e un MITM sarebbe in grado di apportare modifiche allo stesso.Come indicato in the manual:
Per impostazione predefinita, MySQL utilizza connessioni non crittografate tra il client e il server. Ciò significa che chiunque abbia accesso alla rete può guardare tutto il tuo traffico e guardare i dati inviati o ricevuti. Potrebbero persino cambiare i dati mentre è in transito tra client e server.
Mentre si può non piacere la risposta, SSL è lo strumento progettato per sconfiggere sia l'intercettazione dei dati (in quale altro modo possono le comunicazioni essere cifrati?) E gli attacchi MITM (altrimenti come può una delle parti di verificare che il suo pari è chi pensa che sia?). Infatti, se il solo protocollo client-server mysql avesse sconfitto queste minacce, non ci sarebbe stato motivo per usare mysql su SSL (e quindi sarebbe improbabile che fosse una configurazione supportata).
* Cosa intendi per "intercettazioni sicure o anche attacchi man-in-the-middle" *: come hai detto, il protocollo mysql non è sicuro dal MITM, la mia preoccupazione ora è solo se l'autenticazione è sicura da intercettare. Se qualcuno sta intercettando, sarà in grado di ottenere abbastanza informazioni per autenticarsi sul server mysql? Non mi importa se sta solo guardando i dati ... Grazie per la tua risposta! – TMS
@Tomas: No, come la mia risposta dice, vedrà solo una forma crittografata di un hash della password che non può essere riprodotto a causa dell'uso di un nonce. Tuttavia, se è in grado di manipolare i pacchetti, può dirottare la sessione per eseguire qualsiasi comando desideri. – eggyal
Scusami, non ho capito cosa intendevi con "nonce". È una stringa casuale inviata dal server? – TMS