El Lunes, 5 de Mayo de 2008, Victor Pascual Ávila escribió:
2008/5/5 Gustavo ggb@tid.es:
Victor Pascual Ávila wrote:
¿Cómo puede un UA verificar que el From del Invite que recibe es realmente de quien dice ser?
Yo creo que la cosa está chunga, como en el email.
- Teoricamente si dispones de una infraestructura PKI podrías utilizar
métodos para firmar las cabeceras (incluido el from) [RFC3893][RFC447]
- En la práctica, si el mensaje es de un usuario de tu mismo dominio y
pasa por el servidor de tu dominio, el servidor debería asegurarse que el From es quien dice ser. Si el mensaje es de un usuario de otro dominio no hay nada que hacer, salvo establecer relaciones de confianza entre dominios y cosas similares.
¿Tendría sentido hacer lo siguiente?
- Suponemos que todos los UA (callerB i calleeA) se registran contra su
proxy 1) CalleeA recibe un INVITE con el From de CallerB 2) CalleeA genera un re-INVITE contra el From de CallerB (en este caso, contra su proxy) 3) El proxy, mediante el location service, hace un re-targeting contra el CallerB
De este modo, si un attacker genera una llamada hacia CalleeA suplantando el From de CallerB, CalleeA le preguntará a CallerB si realmente es él quien le llama...
Pero no va a funcionar ya que al ser un re-INVITE el proxy no va a a hacer un "location". Es decir, el INVITE de callerB a callerA era:
INVITE sip:callerA From: sip:callerB;tag=1x1x1x1x1 To: sip:callerA Contact: sip:caller_a@80.80.80.88:5070
Pero una vez aceptada la llamada, si callerA envía un re-INVITE será:
INVITE sip:caller_a@80.80.80.88:5070 From: sip:callerA;tag=2x2x2x2x2 To: sip:callerB;tag=1x1x1x1x1
Como es in-dialog (To tag) el proxy no hará un location. Además, el location se hace del RURI y en un mensaje in-dialog el RURI no indica un AoR sino la ubicación real de un usuario.
Puede sonar algo perverso, pero en un entorno no-trusted... ¿hay otro modo de hacerlo?
Si no me equivoco, hay un RFC para eso:
RFC 4916 - Connected Identity in the Session Initiation Protocol (SIP): http://tools.ietf.org/html/rfc4916
Viene un ejemplo aquí:
http://tools.ietf.org/html/rfc4916#section-5.1
Saludos.