ZRTP (Z Real-time Transport Protocol)

ZRTP es un mecanismo basado en SRTP (Protocolo Seguro de Transporte en Tiempo Real) que facilita el acuerdo de secreto compartido y el intercambio de claves entre dos puntos finales. ZRTP emplea el "secreto hacia adelante", lo que significa que el flujo RTP no tiene que preocuparse por cuestiones de seguridad, sino que se las deja a ZRTP.
Cuando se establece una conexión RTP entre dos o más puntos finales, ZRTP detecta automáticamente si el otro punto final soporta ZRTP y fortifica de forma segura el canal hacia el programa que maneja el flujo RTP. A diferencia de SRTP, ZRTP intercambia claves de cifrado dentro del flujo multimedia, lo que hace que el proceso de cifrado sea más seguro y transparente para los servidores que no soportan el protocolo. Esto hace que ZRTP sea más flexible que SRTP y proporciona un control de extremo a extremo para manejar los requisitos de cifrado en todos los niveles, sin el riesgo de ataques man-in-the-middle.
ZRTP es una extensión de Real-time Transport Protocol (RTP) que describe el establecimiento de un intercambio de claves Diffie-Hellman para el Secure Real-time Transport Protocol (SRTP).
ZRTP se describe en el Internet-Draft como un protocolo de acuerdo de claves que realiza un intercambio de claves Diffie-Hellman durante el establecimiento en banda (in-band) de una llamada en el flujo de datos Real-time Transport Protocol (RTP) que ha sido establecido empleando otro protocolo de señalización como pueda ser Session Initiation Protocol (SIP). Esto genera un secreto compartido que es usado para generar las claves y el salto para una sesión de Secure RTP (SRTP).
Una de las funcionalidades de ZRTP es que no requiere el intercambio previo de otros secretos compartidos o una Infraestructura de Clave Pública (PKI), a la vez que evita ataques de man in the middle. Además, no delegan en la señalización SIP para la gestión de claves ni en ningún servidor. Soporta cifrado oportunista detectando automáticamente si el cliente VoIP del otro lado soporta ZRTP.
ZRTP puede usarse con cualquier protocolo de señalización como SIP, H.323, XMPP y P2PSIP. ZRTP es independiente de la capa de señalización, puesto que realiza toda su negociación de claves dentro del flujo de datos RTP.
ZRTP is key exchange protocol designed to enable VoIP devices to agree keys for encrypting media streams (voice or video) using SRTP.
The authors of ZRTP describe it as “Media Path Key Agreement for Secure RTP”. This means that the ZRTP end points use the media stream rather than the signaling stream to establish the SRTP encryption keys. Many other key exchange protocols use the signaling stream (for example SIP or H.323) for media key exchange. The disadvantage of this approach is that the key exchange is visible to any intermediate device that processes the signaling stream.
ZRTP’s use of the media path for key agreement ensures that media keys are agreed directly between the caller and call recipient and those keys are not visible to any intermediate signaling device. This makes ZRTP an ideal choice for use on networks where signaling is processed by intermediate devices and where it is important to ensure call confidentiality.
Key Exchange - Protección Man-in-the-Middle
ZRTP está diseñado para proporcionar un método seguro para que dos puntos finales de VoIP acuerden de forma segura claves de cifrado que posteriormente se utilizan para cifrar flujos de medios (voz o vídeo) utilizando SRTP. ZRTP utiliza el algoritmo Diffie-Hellman, que permite el acuerdo seguro de claves y evita la sobrecarga de la gestión de certificados o cualquier otra configuración previa. ZRTP admite dos variantes de Diffie-Hellman: 1.de campo finito y 2.de curva elíptica. Las claves acordadas por ZRTP son efímeras, lo que significa que se descartan al final de una llamada, evitando la necesidad de gestión de claves.
ZRTP incluye funciones para detectar y prevenir ataques MitM. MitM es un método clásico de espionaje de comunicaciones cifradas. Un atacante intercepta la comunicación y retransmite los mensajes entre los dos puntos finales haciendo creer a cada uno que tiene un canal seguro con el otro. Las defensas MitM de ZRTP incluyen el uso de una Cadena Corta de Autenticación (SAS: Short Authentication String) y la Continuidad de Claves (Key Continuity).
El SAS es un hash criptográfico de algunos de los valores Diffie-Hellman que se muestran como un par de palabras en la interfaz de usuario de cada dispositivo ZRTP. Las palabras se seleccionan de la lista de palabras PGP. Esta lista genera 65.356 valores SAS diferentes. Los usuarios comparan las cadenas mostradas leyéndolas entre sí. Para no ser detectado, un atacante MitM tendría que adivinar el SAS correcto, sólo hay una posibilidad entre 65.536 de acerta.
El compromiso de claves (Key Continuity) añade más defensas al reutilizar parte del material de claves en acuerdos de claves posteriores. Esta característica significa que un MitM tendría que estar presente en la primera llamada entre cualquier par de interlocutores. El SAS ofrece a los usuarios finales la garantía de que disponen de una línea segura. Al leer y comparar un par de palabras, los usuarios pueden estar seguros de que el intercambio de claves se ha completado.