Protocolo de transporte seguro en tiempo real (abreviado SRTP, Rus. Protocolo seguro de transferencia de datos en tiempo real ): define el perfil del protocolo RTP y está diseñado para el cifrado, la autenticación de mensajes, la integridad, la protección contra la falsificación de datos RTP en transferencias de medios unidireccionales y de multidifusión y aplicaciones SRTP fue desarrollado por un pequeño equipo de expertos en criptografía de protocolo IP de Cisco y Ericsson , David Oran, David McGrew, Mark Baugher, Mats Naslund, Elisabetta Carrara, Karl Norman y Rolf Blom. Publicado por primera vez por el IETF en marzo de 2004 como RFC 3711 .
Dado que RTP está estrechamente relacionado con RTCP (Protocolo de control en tiempo real), que se puede usar para administrar una sesión RTP, SRTP también tiene un protocolo hermano llamado RTCP seguro (o SRTCP ). SRTCP proporciona la misma funcionalidad relacionada con la seguridad en RTCP para la misma funcionalidad SRTP en RTP.
El uso de SRTP o SRTCP es opcional cuando se usa RTP o RTCP, pero incluso si se usa SRTP/SRTCP, todas las funciones adicionales (como el cifrado y la autenticación) son opcionales y se pueden activar o desactivar. La única excepción es la función de autenticación de mensajes, que se requiere cuando se usa SRTCP.
Para cifrar un flujo de medios (con el fin de mantener la confidencialidad de una conexión de voz), SRTP (junto con SRTCP) estandariza el uso de un solo cifrado, AES , que se puede usar de dos modos, convirtiendo el cifrado de bloque original AES en un cifrado de flujo:
Además del cifrado AES, SRTP permite el cifrado directo utilizando el llamado "cifrado vacío", que puede tomarse como el segundo cifrado admitido (o un tercer modo de cifrado además de los dos descritos anteriormente). De hecho, un cifrado vacío no realiza ningún cifrado (es decir, las funciones del algoritmo de cifrado como si el flujo de claves contuviera solo ceros y copia el flujo de entrada al flujo de salida sin cambios). Esto es obligatorio para este método de cifrado, que debe proporcionarse en cualquier sistema compatible con SRTP. También se puede usar cuando no se requiere la confidencialidad garantizada por SRTP, pero se pueden usar las otras características de SRTP (autenticación e integridad del mensaje).
Si bien es técnicamente fácil incorporar nuevos algoritmos de cifrado en SRTP, el estándar SRTP establece que los nuevos algoritmos de cifrado más allá de los descritos no pueden simplemente agregarse a una implementación del protocolo SRTP. La única forma legal de agregar un nuevo algoritmo de encriptación para que sea compatible con el estándar SRTP es publicar un nuevo RFC, donde el uso del nuevo algoritmo debe estar claramente definido.
Los algoritmos de cifrado anteriores no aseguran directamente la integridad del mensaje, lo que permite realizar un ataque Man-in-the-middle y falsificar el contenido del mensaje, o al menos escuchar los datos transmitidos previamente. Por lo tanto, el estándar SRTP también debe proporcionar integridad de datos y protección contra escuchas.
Para autenticar el mensaje y proteger su integridad, se utiliza el algoritmo hash HMAC - SHA1 , definido en RFC 2104 , para obtener un hash de 160 bits, que luego se trunca a 80 o 32 bits para convertirse en un token de paquete. El HMAC se calcula a partir del tipo de carga útil del paquete y los datos en el encabezado del paquete, incluido el número de secuencia del paquete. Para protegerse contra la incrustación de mensajes Man -in-the-Middle , el receptor mantiene los índices de los paquetes recibidos anteriormente, los compara con el índice de cada paquete recién recibido y solo omite un paquete nuevo si no se ha reproducido (es decir, si se ha enviado). ) antes de. Este enfoque se basa en gran medida en la protección de integridad total (para que sea imposible cambiar los índices de secuencia de paquetes para hacer trampa).
La función de generación de claves se utiliza para derivar las claves de sesión utilizadas para cifrar el contexto (SRTP, claves de cifrado del protocolo de control SRTCP y claves de sesión, claves de autenticación SRTP y SRTCP) a partir de una única clave maestra. Por lo tanto, el protocolo de intercambio de claves le permite intercambiar solo claves maestras, el resto de las claves de sesión necesarias se obtendrán utilizando esta función.
Los cambios periódicos en la función de generación de claves conducen a medidas de seguridad adicionales. Por lo general, esto evita que Man -in-the-Middle recopile una gran cantidad de material cifrado con una única clave de sesión. Algunos hacks son más fáciles de realizar cuando hay una gran cantidad de material encriptado. Además, cambiar la función de generación de claves varias veces proporciona seguridad hacia adelante y hacia atrás en el sentido de que la clave de sesión descifrada no compromete otras claves de sesión derivadas de la misma clave maestra. Esto significa que incluso si un atacante ha logrado obtener una clave de sesión específica, no puede descifrar los mensajes proporcionados con claves de sesión anteriores y posteriores derivadas de la misma clave maestra. (Aunque, por supuesto, la clave maestra resultante proporcionará todas las claves de sesión derivadas de ella).
SRTP se basa en un protocolo de intercambio de claves externo para establecer una clave semilla maestra. Se han desarrollado dos protocolos especiales para usar con SRTP, ZRTP y MIKEY .
Existen otros métodos para negociar claves SRTP. Varios fabricantes diferentes ofrecen productos que utilizan el método de intercambio de claves SDES .