La "clave precompartida" es, de hecho, un modelo válido y simple, si puede llevarlo a cabo. La criptografía asimétrica, con claves públicas y privadas, y certificados, se inventó para resolver el problema de la distribución de claves secretas: en general , es difícil asegurar que todos los pares de sistemas / personas que deben hablar de forma segura con cada uno Otros realmente comparten un valor secreto. En una configuración cliente-servidor, donde el cliente y el servidor son máquinas distintas, entonces un secreto compartido debe necesariamente haber viajado de una máquina a otra. Los secretos itinerantes son "menos secretos". Con la criptografía asimétrica, solo los valores públicos pasan por los cables; Las claves privadas pueden seguir siendo locales a lo largo de su ciclo de vida completo, y eso suele ser una buena idea.
De forma similar, si el cliente y el servidor comparten el mismo valor secreto, entonces un atacante que piratee cualquier máquina aprende el secreto y puede hacerse pasar por ambos. Con la criptografía asimétrica, un atacante que saquea la RAM o el disco del cliente puede conectarse posteriormente al servidor y autenticarse como cliente, pero no puede ejecutar un servidor falso que engañaría al cliente.
Estas son las razones por las que un mecanismo de clave precompartida, aunque es tentador (es más liviano para la CPU y no involucra ninguno de los temidos negocios X.509 / CA), hace que en la práctica impliquen algunas debilidades, dependiendo de cómo esté el sistema. instalado y mantenido.
(Por supuesto, en todo lo anterior, supongo que usted no hace nada estúpido, como tener un "secreto" compartido entre el servidor y 10000 clientes; si 10000 clientes conocen un "secreto", ya no lo es. un secreto. Los sistemas de claves compartidas apropiadas utilizan una clave diferente para cada par cliente-servidor. Cuando la clave compartida es un secreto recordado por el ser humano, es decir, una contraseña , se debe tener cuidado adicional. , porque las contraseñas son débiles; esto se puede administrar con SRP .)