¿Qué es lo que quiere que sea "seguro para espiar o incluso ataques de hombre en el medio"? Tu contraseña o tus datos?
El título de su pregunta se refiere específicamente a la autenticación . MySQL hace un trabajo razonable para proteger su contraseña de los espías (no se envía texto sin formato, y el uso de un nonce derrota los ataques de repetición). Citando MySQL protocol internals:
MySQL 4.1 y posterior
Recuerde que las tiendas mysql.user.Password SHA1 (SHA1 (contraseña))
- El servidor envía una cadena aleatoria (scramble) al cliente
- el cliente calcula:
- stage1_hash = SHA1 (contraseña), utilizando la contraseña que el usuario ha introducido . XOR
- token = SHA1 (SHA1) stage1_hash (scramble +) stage1_hash
- el cliente envía el token al servidor
- el servidor calcula
- stage1_hash'= símbolo XOR SHA1 (scramble + mysql.user.Password)
- el servidor compara SHA1 (stage1_hash ') y mysql.user.Password
- Si ar e lo mismo, la contraseña está bien.
(Nota SHA1 (A + B) es la SHA1 de la concatenación de A con B.)
Este protocolo corrige el defecto de la antigua, ni snooping en el alambre ni mysql. user.Password es suficiente para una conexión exitosa . Pero cuando uno tiene tanto mysql.user.Password como datos interceptados en el cable, tiene suficiente información para conectarse.
Sin embargo, las sesiones autenticadas continúan en texto plano: un oculista podrá ver todas las consultas y los resultados; y un MITM podría hacer modificaciones a la misma.Como se indica en the manual:
Por defecto, MySQL utiliza conexiones no cifradas entre el cliente y el servidor. Esto significa que alguien con acceso a la red podría mirar todo su tráfico y mirar los datos que se envían o reciben. Incluso podrían cambiar los datos mientras está en tránsito entre el cliente y el servidor.
Mientras que no le guste la respuesta, SSL es la herramienta diseñado para derrotar tanto espionaje de datos (de qué otra manera se pueden cifrar las comunicaciones?) Y los ataques MITM (¿Cómo puede cualquiera de las partes verificar que su par es quien cree que es?). De hecho, si el protocolo del cliente-servidor mysql solo derrota estas amenazas, entonces no habría ninguna razón para usar mysql sobre SSL (y por lo tanto, sería poco probable que sea una configuración compatible).
* ¿Qué quiere decir con "seguro para espiar o incluso ataques de hombre en el medio" *: como dijo, el protocolo simple mysql no es seguro para MITM, mi preocupación ahora es solo si la autenticación es segura para espiar. Si alguien está escuchando a escondidas, ¿podrá entonces obtener suficiente información para autenticarse en el servidor mysql? No me importa si solo está mirando los datos ... ¡Gracias por tu respuesta! – TMS
@Tomas: No, como mi respuesta dice, solo verá una forma encriptada de un hash de contraseña que no se puede reproducir debido al uso de un nonce. Sin embargo, si es capaz de manipular paquetes, podría secuestrar la sesión para realizar los comandos que desee. – eggyal
Disculpe, no entendí lo que quería decir con "nonce". ¿Es una cadena aleatoria enviada por el servidor? – TMS