La ponencia consistirá en mostrar la importancia de la seguridad en servicios que utilicen XMPP (en muchos casos olvidada o en un segundo plano), mostrando para ello una breve introducción al protocolo y dos casos reales (Google y Tuenti).
3. Introducción
• 1998: Jeremie Miller -> Jabber
• 2000: Envío de draft al GD IETF -> IMPP
-> Expira sin contribuciones
• 2002: Segundo intento -> IETF -> XMPP
• 2004: Se establecen 4 RFC’s (core, …)
3
4. Estructura
• Conexiones TCP de larga duración
-> BOSH (HTTP-Bind) -> Connection Manager
• Intercambio asíncrono de información (id)
• XML Stream
• XML Stanza
4
5. XML Stanza - Message
• Uso: enviar mensajes de una entidad a otra
• Tipos: normal, chat, groupchat, headline, error
<message to='x2@domain.com' type='chat' xml:lang='es'>
<subject>SUBJECT</subject>
<body>BODY</body>
</message>
5
6. XML Stanza - Presence
• Forma básica de broadcast entre una entidad
y todos sus subscriptores
• Se puede enviar a un único usuario con el
atributo TO
<presence to='x2@domain.com' type='suscribe'/>
<presence to='x1@domain.com' type='suscribed'/>
6
7. XML Stanza - IQ
• Uso: pedir información a otra entidad/servidor
• Tipos: get, set, result, error
• Extensiones en XMPP
<iq type=’get’> <iq from=’x1@domain.com’
<query xmlns=’jabber:iq:roster’/> to ‘x1@domain.com’
</iq> type=’set’>
<query xmlns=’jabber:iq:roster’>
<item jid=’x2@domain.com’/>
</query>
</iq>
7
8. Seguridad
• Pilar importante del protocolo (&Privacidad)
• Pocas vulnerabilidades conocidas (1999+)
• ¿A qué nos enfrentamos?
-> rogue servers, address spoofing, DoS, spam,
phising, leaks, logging, code issues…
• Veamoslo más en detalle
8
9. Seguridad (II)
• Comunicación cifrada (TLS - SSL)
client<->server & server<->server
end-to-end encryption (PGP)
• Autenticación e identidad
parámetro ‘from’
verificación del dominio (dialback)
set de caracteres unicode (a<->a)
9
10. Seguridad (III)
• Spam
sistema de subscripción (presences)
$$ -> no es rentable
limite envíos/tiempo (cuentas+ -> captcha)
• Al final…
-> Implementación del protocolo (auth, tls)
-> Configuración de los servidores (presence)
10