El Protocolo de transporte seguro en tiempo real ( SRTP ) es un perfil del Protocolo de transporte en tiempo real (RTP) que tiene como objetivo proporcionar cifrado, autenticación e integridad de mensajes y protección contra ataques de repetición a los datos RTP en aplicaciones de unidifusión y multidifusión . Fue desarrollado por un pequeño equipo de expertos en protocolo de Internet y criptografía de Cisco y Ericsson . Fue publicado por primera vez por el IETF en marzo de 2004 como RFC 3711.
Dado que RTP está acompañado por el Protocolo de Control RTP (RTCP) que se utiliza para controlar una sesión RTP, SRTP tiene un protocolo hermano, llamado RTCP Seguro ( SRTCP ); éste proporciona de forma segura las mismas funciones a SRTP que las que proporciona RTCP a RTP.
El uso de SRTP o SRTCP es opcional en aplicaciones RTP o RTCP; pero incluso si se utilizan SRTP o SRTCP, todas las funciones proporcionadas (como el cifrado y la autenticación) son opcionales y se pueden habilitar o deshabilitar por separado. La única excepción es la función de autenticación de mensajes, que es indispensable y necesaria cuando se utiliza SRTCP.
Cifrado del flujo de datos
SRTP y SRTCP utilizan el Estándar de cifrado avanzado (AES) como cifrado predeterminado . Hay dos modos de cifrado definidos que permiten utilizar el cifrado de bloque AES como cifrado de flujo :
- Modo de contador de enteros segmentados
- Un modo de contador típico , que permite el acceso aleatorio a cualquier bloque, lo cual es esencial para el tráfico RTP que se ejecuta en una red no confiable con posible pérdida de paquetes. En el caso general, casi cualquier función se puede utilizar en el papel de contador , suponiendo que esta función no se repita durante una gran cantidad de iteraciones. Pero el estándar para el cifrado de datos RTP es simplemente un contador incremental de números enteros habitual. AES que se ejecuta en este modo es el algoritmo de cifrado predeterminado, con un tamaño de clave predeterminado de 128 bits y una longitud de clave de sal de sesión predeterminada de 112 bits.
- modo f8
- Una variación del modo de retroalimentación de salida , mejorada para que se pueda buscar y con una función de inicialización modificada. Los valores predeterminados de la clave de cifrado y la clave de sal son los mismos que para AES en modo contador. (Se eligió el modo AES que se ejecuta en este modo para su uso en redes móviles 3G ).
Además del cifrado AES, SRTP permite la posibilidad de desactivar el cifrado por completo, utilizando el denominado cifrado de cifrado nulo , que puede considerarse un cifrado alternativo compatible. De hecho, el cifrado de cifrado nulo no realiza ningún cifrado; el algoritmo de cifrado funciona como la función de identidad y copia el flujo de entrada en el flujo de salida sin ningún cambio. Es obligatorio que este modo de cifrado se implemente en cualquier sistema compatible con SRTP. Como tal, se puede utilizar cuando no se requieren las garantías de confidencialidad aseguradas por SRTP, mientras que se pueden utilizar otras características de SRTP, como la autenticación y la integridad del mensaje.
Si bien SRTP puede acomodar fácilmente nuevos algoritmos de cifrado, el estándar SRTP establece que los nuevos algoritmos de cifrado solo pueden introducirse mediante la publicación de un nuevo RFC complementario del estándar que debe definir claramente el nuevo algoritmo.
Autenticación, integridad y protección de reproducción
Los algoritmos de cifrado mencionados anteriormente no garantizan por sí solos la integridad de los mensajes; un atacante no podrá descifrar los datos, pero sí podrá falsificarlos o reproducirlos. Por lo tanto, el estándar SRTP también proporciona los medios para garantizar la integridad de los datos y evitar su reproducción.
Para autenticar el mensaje y proteger su integridad, se utiliza el algoritmo HMAC-SHA1 [1] . Este produce un resultado de 160 bits, que luego se trunca a 80 o 32 bits para convertirse en la etiqueta de autenticación adjunta a cada paquete. El HMAC se calcula sobre la carga útil del paquete y el material del encabezado del paquete, incluido el número de secuencia del paquete. Para protegerse contra ataques de repetición , el receptor mantiene los números de secuencia de los mensajes recibidos anteriormente, los compara con el número de secuencia en cada nuevo mensaje recibido y admite el nuevo mensaje solo si no se ha recibido previamente. Este enfoque se basa en la protección de la integridad para hacer imposible modificar el número de secuencia sin detección.
Derivación de claves
Se utiliza una función de derivación de claves para derivar las diferentes claves utilizadas en un contexto criptográfico (claves y sales de cifrado SRTP y SRTCP, claves de autenticación SRTP y SRTCP) a partir de una única clave maestra de forma criptográficamente segura. De este modo, el protocolo de gestión de claves necesita intercambiar únicamente una clave maestra y todas las claves de sesión necesarias se generan aplicando la función de derivación de claves.
La aplicación periódica de la función de derivación de claves impide que un atacante recopile grandes cantidades de texto cifrado cifrado con una única clave de sesión. Esto proporciona protección contra determinados ataques que son más fáciles de llevar a cabo cuando se dispone de una gran cantidad de texto cifrado. Además, la aplicación múltiple de la función de derivación de claves proporciona seguridad hacia atrás y hacia delante en el sentido de que una clave de sesión comprometida no compromete otras claves de sesión derivadas de la misma clave maestra. Esto significa que incluso si un atacante logra recuperar una clave de sesión, no puede descifrar mensajes protegidos con claves de sesión anteriores y posteriores derivadas de la misma clave maestra. (Tenga en cuenta que, por supuesto, una clave maestra filtrada revela todas las claves de sesión derivadas de ella).
SRTP se basa en un protocolo de gestión de claves externo para configurar la clave maestra inicial. Dos protocolos diseñados específicamente para usarse con SRTP son ZRTP y MIKEY . También existen otros métodos para negociar las claves SRTP. Hay varios proveedores que ofrecen productos que utilizan el método de intercambio de claves SDES .
DTLS-SRTP
- RFC 5764 ha definido DTLS-SRTP . DTLS-SRTP utiliza el protocolo DTLS para entregar una clave maestra y permite la autenticación de clave pública.
Interoperabilidad y aplicaciones
Consulte Comparación de software de VoIP § Software de VoIP seguro para teléfonos, servidores y aplicaciones que admiten SRTP.
Telefonía (VoIP)
- Asterisco (PBX) [2] [3]
Compatibilidad con navegadores web
.svg/500px-Usage_share_of_web_browsers_(Source_StatCounter).svg.png)
Navegadores conocidos con algún tipo de soporte SRTP
- Familia Blink (motor de navegación)
- Chromium (navegador web) admite SRTP (aunque no de manera universal) de manera experimental desde 2016
- Opera (navegador web)
- Vivaldi (navegador web)
Familias de navegadores web con algún nivel de SRTP en las ramas de actualización de la línea principal del sistema de representación central
- Gecko (programa)
- MSHTML (reemplazado, pero existía un soporte mínimo al momento de su vencimiento)
- Kit web
Hasta el momento no se conoce compatibilidad con SRTP para navegadores web basados en texto. Aunque SRTP podría utilizarse para operar en una VPN junto con navegadores web, no se conoce que ninguna red VPN lo utilice.
Documentos de normas
- RFC 3711, Propuesta de estándar, Protocolo de transporte seguro en tiempo real (SRTP)
- RFC 4771, Propuesta de estándar, Contador de transferencia de datos de transformación de integridad para el Protocolo de transporte seguro en tiempo real (SRTP)
- RFC 3551, Estándar 65, Perfil RTP para conferencias de audio y video con control mínimo
- RFC 3550, Estándar 64, RTP: Un protocolo de transporte para aplicaciones en tiempo real
- RFC 2104, Informativo, HMAC: Hashing con clave para autenticación de mensajes
- RFC 7714, propuesta de norma, cifrado autenticado AES-GCM en el protocolo de transporte seguro en tiempo real (SRTP)
Referencias
- ^ RFC 2104
- ^ "Tutorial de llamadas seguras - Proyecto Asterisk - Wiki del proyecto Asterisk". wiki.asterisk.org . Consultado el 22 de diciembre de 2019 .
- ^ "Asterisk SRTP". VoIP-Info . 2007-02-13 . Consultado el 2019-12-22 .