El Lunes, 5 de Mayo de 2008, Victor Pascual Ávila escribió:
2008/5/5 Gustavo <ggb(a)tid.es>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?
0) 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.
--
Iñaki Baz Castillo