Explicación SRTP


El Protocolo seguro de transporte en tiempo real (SRTP) es un sistema de seguridad que extiende el Protocolo de transporte en tiempo real (RTP) con un conjunto de mecanismos de seguridad.

WebRTC utiliza DTLS-SRTP para el cifrado, la autenticación y la integridad de los mensajes, así como la protección contra ataques de repetición. Esto brinda privacidad a través del cifrado de carga RTP y la autenticación. SRTP es uno de los componentes para la seguridad, es muy conveniente para los desarrolladores que buscan una API confiable y segura. Pero, ¿qué es SRTP y cómo funciona?

¿Qué es el SRTP?


SRTP mejora la seguridad RTP. El protocolo fue publicado por IETF (Internet Engineering Task Force) en RFC 3711 , en marzo de 2004.

SRTP proporciona privacidad encriptando la carga RTP, sin incluir los encabezados RTP. También se admite la autenticación, que se usa ampliamente como mecanismo de seguridad en RTP. Si bien SRTP se puede usar en su totalidad, también es posible deshabilitar / habilitar ciertas funciones. El complemento principal en SRTP es la gestión de claves, ya que hay muchas opciones: DTLS-SRTP, MIKEY en SIP, SDES (Descripción de seguridad) en SDP, ZRTP, etc.

Cifrado


SRTP utiliza AES (Advanced Encryption Standard) como el cifrado predeterminado. AES tiene dos modos de cifrado: modo de contador de enteros segmentados y modo f8. Por lo general, se utiliza el modo de contador: es de vital importancia cuando se transmite tráfico a través de una red poco confiable con posible pérdida de paquetes. El modo f8 se usa en redes móviles 3G y es una variante del modo Salida Feedback, en el que el descifrado ocurre de la misma manera que el cifrado.

SRTP también permite a los desarrolladores desactivar el cifrado utilizando un cifrado nulo. Cifrado cero no hace cifrado; copia el flujo entrante directamente al saliente, sin cambios.

WebRTC no recomienda el uso de un cifrado cero, ya que la seguridad de los datos es bastante importante para los usuarios finales. De hecho, las implementaciones válidas de WebRTC DEBEN soportar el cifrado, actualmente con DTLS-SRTP .

Integridad


Para preservar la integridad del mensaje en SRTP, se crea una etiqueta de autenticación basada en el contenido y parte de los encabezados de los paquetes, que luego se agrega al paquete RTP. Esta etiqueta se utiliza para validar el contenido de la carga útil, lo que a su vez evita la falsificación de datos.

La autenticación también es la base para rechazar los ataques de re-acceso. Para bloquearlos, se asigna un índice secuencial a cada paquete. Se aceptará un nuevo mensaje solo si su índice es el siguiente en orden y aún no se ha recibido. Los índices son efectivos debido a la integridad descrita anteriormente; sin ella, existe la posibilidad de una sustitución de índices.

Aunque WebRTC utiliza principalmente el algoritmo HMAC-SHA1 para la integridad de SRTP, se recomienda encarecidamente que seleccione conjuntos de algoritmos con PFS (Perfect Forward Secrecy) sobre no PFS y AEAD (Authenticated Encryption with Associated Data) sobre no AEAD. Las implementaciones recientes de WebRTC usan DTLS v1.2 con el conjunto de algoritmos TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.

Las llaves


SRTP utiliza la función de generación de claves (KDF) para crear claves basadas en la clave maestra. El protocolo de administración de claves crea todas las claves en una sesión utilizando una clave maestra. Debido al hecho de que cada sesión tiene su propia clave única, todas las sesiones están protegidas. Por lo tanto, si una sesión se vio comprometida, el resto aún está protegido. El protocolo de administración de claves se utiliza para la clave maestra, generalmente es ZRTP o MIKEY, pero existen otras variaciones.


Pila IP RTP

Las secuencias en WebRTC están protegidas por uno de dos protocolos: SRTP o DTLS (Datagram Transport Layer Security). DTLS - para el cifrado de flujos de datos, SRTP - para flujos de medios. Sin embargo, para el intercambio de claves en SRTP, DTLS-SRTP se utiliza para detectar ataques de intermediario. Esto se detalla en los documentos IETF: seguridad WebRTC y arco de seguridad .

SRTCP (Protocolo seguro de control de transporte en tiempo real)


SRTP tiene un protocolo hermano: SRTCP (Protocolo de control de transporte seguro en tiempo real). SRTCP extiende RTCP (Protocolo de control de transporte en tiempo real) con las mismas características que SRTP extiende RTP, incluyendo cifrado y autenticación. Al igual que SRTP, casi todas las características de seguridad de SRTCP se pueden deshabilitar, excepto la autenticación de mensajes, es necesario para SRTCP.

Errores de SRTP


SRTP cifra la carga útil de los paquetes RTP, pero no la extensión del encabezado. Esto crea una vulnerabilidad porque la extensión del encabezado en el paquete RTP puede contener información importante, por ejemplo, los niveles de sonido de cada paquete en el flujo de medios. Potencialmente, esto puede ser familiar para un atacante que dos personas se están comunicando en la red; la privacidad de la conversación puede verse comprometida. Esto se discutió en IETF Request for Comments: 6904 , que requiere todas las implementaciones posteriores de SRTP para cifrar las extensiones de encabezado.

En algunos casos, por ejemplo, una conferencia con muchos participantes, puede ser necesario un intermediario en forma de SFM (Selective Forwarding Mixer) para optimizar los parámetros RTP durante el reenvío de flujos. Tal intermediario viola el principio de cifrado de extremo a extremo utilizado en los sistemas punto a punto; en otras palabras, los dispositivos finales deben "confiar" en otro participante. Para evitar esta limitación, la Conferencia de privacidad mejorada RTP (PERC, uno de los grupos de trabajo de IETF) está trabajando en soluciones como los procedimientos de doble cifrado de SRTP . Los PERC brindan garantías respaldadas por el cifrado de salto a salto y de extremo a extremo en dos contextos separados pero relacionados. ¡Te lo diremos en las próximas publicaciones!

Source: https://habr.com/ru/post/es413165/


All Articles