Como ya sabemos Jabber es un protocolo que sigue el modelo cliente-servidor, en el que el cliente se conecta a su servidor. Un primer nivel de comunicación segura se puede conseguir cifrando esta comunicación. En Jabber puedes escoger conectarte a tu servidor Jabber usando cifrado SSL.
Aunque esto no garantiza que todo el trayecto realizado por los mensajes hasta el destinatario final esté cifrado, al menos lo protege desde el cliente hasta el servidor. Por ejemplo te protege frente a tu proveedor de Internet y otros usuarios de la red local.
Prácticamente todos los clientes y servidores Jabber soportan cifrado SSL, así que se no hay razón para no tenerlo activado.
Si cuando te conectas usando SSL tu cliente te muestra un aviso de que el certificado está auto-firmado ('Self signed certificate', 'unable to verificate the first certificate' o algo similar) lo que pasa es que el certificado SSL de tu servidor lo ha firmado el propio administrador del servidor. Esto suele ser muy común porque conseguir que una entidad certificadora (como Verisign) le firme un certificado suele ser carísimo. Es un aviso que en la mayoria de casos podemos dejar pasar, pero sin olvidar que en este caso el cifrado SSL solo nos protege frente a espias pasivos, ya que como Nethen ha explicado alguien podria hacerse pasar por el servidor. Muchos clientes Jabber, como Exodus, Psi o Tkabber tienen una opción para no mostrar este tipo de avisos.
- Inicie sesión o regístrese para enviar comentarios




Comentarios
El peligro de la autofirma: historia de Carlos, Simón y Marcos.
Esto no es cierto y puede ser una brecha que comprometa nuestra seguridad con lo que obtendríamos la misma seguridad que sin SSL pero con una falsa sensacion de seguridad.
Al no poder verificar la firma del certificado, no podemos saber si ese certificado es el del servidor o no, y por lo tanto no podemos saber con quien estamos hablando realmente y podemos estar expuestos fácilmente a un ataque de man-in-the-middle! (ver technicalesse)
Technicalesse (en forma de historieta clásica)
Si te lías/aburres salta a la conclusión:
Para nuestra historia, supongamos los siguientes personajes:
Carlos: El cliente de Jabber.
Simón: El servidor de Jabber.
Marcos: Un transportista malicioso que pueda modificar los datos. (un proveedor de Internet malicioso, otros usuarios de la red local cotillas y arp-spooferos, ...)
Y los siguientes objetos:
Candado: Un sistema que cualquiera puede cerrar, pero que sólo el propietario de la llave puede abrir
Sello: Como los típicos de goma de las empresas, sirve para certificar la autenticidad de un documento. En el caso del SSL se le llama Certificado.
Carlos quiere enviar a Simón información confidencial, así que lo pone en una caja, coge un candado de los de Simón y se lo pone a la caja. Marcos (que por ejemplo, trabaja en correos) ve la caja pero no la puede abrir, así que el mensaje llega intacto a Simón. Parece que el protocolo candado publico-llave privada funciona. Pero NO.
Ahora cuando Carlos quiere otro candado para enviar a Simón, Marcos le da su propio candado. Carlos cierra el candado y lo lleva a Correos. Marcos abre la caja, LEE el contenido, LO MODIFICA si quiere y pone el candado de Simón, con lo que éste no sospecha nada.
La solución es que Simón ponga su sello en sus candados, para que cuando Carlos cierre el candado, sepa de fijo que sólo Simón puede abrirlo.
Pero ¿cómo sabemos que el sello es de Simón?
Si en el candado al lado del sello pone: Este sello es de Simón, Verisign. y confiamos en Verisign (ya sabemos cómo es el sello de Verisign, pues viene de serie en la distribución de OpenSSL), pues sabremos que no nos van a dar gato por liebre.
Pero si pone Este sello es mio. Simón (auto firma SSL) pues no sabemos si es de Simón o del malicioso Marcos, a no ser que tengamos la posibilidad de obtener un papel sellado por Simón.
Conclusión:
1-. Si no sabemos de quien es el candado (llave publica SSL) puede que nuestros datos estén siendo descifrados por Marcos, modificados, y vueltos a cifrar, sin que nos demos cuenta.
2-. Para saber de quien el sello del candado (el certificado SSL) necesitamos que alguien como Verisign (Certification Authority) nos lo diga, o tener un papel sellado que podamos obtener por ejemplo de la Web de Simón. (certificado SSL en formato PEM obtenido por un canal fiable).
3-. De todas maneras como para poder atacar el cifrado SSL, es necesario modificar los paquetes, el SSL -incluso el autofirmado- es útil ante miradas de cotillas casuales (p.ej que no quieren hacerse su propio certificado SSL) que encontrarán las conversaciones de MSN mas sencillas de leer, y además siempre nos quedará el GnuPG.
Un par de links:
1:
Acerca del problema de la autofirma, soluciones para el servidor y el cliente (foro de PSI)
2: Para el admin de un servidor Jabber, como montar una CA:
Nethen nethen@jabberes.org.
Tienes toda la razón
Pero la solución a ese problema es muy difícil, a no ser que alguien nos done el certificado comprado a alguna de las CAs establecidas. Estos certificados cuestan del orden de los 100 USD.
De momento nos tenemos que conformar únicamente con el cifrado que ofrece SSL.
soluciones para el SSL
Lo que me comentó Nethen es que hay algunas posibilidades:
Lo de que JSF empieze una cadena para proyectos Jabber y su certificado se incpluya en los clientes me gusta. Si nadie objeta nada se le podría comentar a alguien de la JSF a ver.
Advertencia: este texto puede tener graves errores conceptuales ;) Agradecería que los comentaras.