Explicação SRTP


O SRTP (Secure Real-time Transport Protocol) é um sistema de segurança que estende o RTP ( Real-time Transport Protocol ) com um conjunto de mecanismos de segurança.

O WebRTC usa DTLS-SRTP para criptografia, autenticação e integridade de mensagens, além de proteção contra ataques de repetição. Isso oferece privacidade através da criptografia e autenticação de carga RTP. O SRTP é um dos componentes de segurança; é muito conveniente para desenvolvedores que procuram uma API confiável e segura. Mas o que é SRTP e como ele funciona?

O que é SRTP?


O SRTP aprimora a segurança do RTP. O protocolo foi publicado pela IETF (Internet Engineering Task Force) na RFC 3711 , em março de 2004.

O SRTP fornece privacidade criptografando a carga do RTP, não incluindo os cabeçalhos do RTP. A autenticação também é suportada, amplamente utilizada como mecanismo de segurança no RTP. Embora o SRTP possa ser usado em sua totalidade, também é possível desativar / ativar determinadas funções. O plug-in principal no SRTP é o gerenciamento de chaves, pois existem muitas opções: DTLS-SRTP, MIKEY no SIP, SDES (Descrição de Segurança) no SDP, ZRTP, etc.

Criptografia


O SRTP usa AES (Advanced Encryption Standard) como a cifra padrão. O AES tem dois modos de criptografia: Modo Contador Inteiro Segmentado e modo f8. O modo de contador é geralmente usado - é extremamente importante ao transmitir tráfego por uma rede não confiável com possível perda de pacotes. O modo f8 é usado em redes móveis 3G e é uma variante do modo Feedback de Saída, no qual a descriptografia ocorre da mesma maneira que a criptografia.

O SRTP também permite que os desenvolvedores desativem a criptografia usando uma cifra nula. A cifra zero não faz criptografia; copia o fluxo recebido diretamente para o enviado, sem alterações.

O WebRTC não recomenda o uso de uma cifra zero, pois a segurança dos dados é muito importante para os usuários finais. De fato, implementações válidas do WebRTC DEVEM suportar a criptografia, atualmente com DTLS-SRTP .

Integridade


Para preservar a integridade da mensagem no SRTP, um rótulo de autenticação é criado com base no conteúdo e parte dos cabeçalhos dos pacotes, que são adicionados ao pacote RTP. Esse rótulo é usado para validar o conteúdo da carga, o que evita a falsificação de dados.

A autenticação também é a base para repelir ataques de re-acesso. Para bloqueá-los, um índice seqüencial é atribuído a cada pacote. Uma nova mensagem será aceita apenas se seu índice for o próximo na ordem e ainda não tiver sido recebido. Os índices são eficazes devido à integridade descrita acima; sem ele, existe a possibilidade de substituição de índices.

Embora o WebRTC use principalmente o algoritmo HMAC-SHA1 para integridade do SRTP, é altamente recomendável que você selecione conjuntos de algoritmos com PFS (Perfect Forward Secrecy) em vez de não PFS e AEAD (criptografia autenticada com dados associados) em não-AEAD. As implementações recentes do WebRTC usam o DTLS v1.2 com o conjunto de algoritmos TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256.

As chaves


O SRTP usa a função de geração de chaves (KDF) para criar chaves com base na chave mestra. O protocolo de gerenciamento de chaves cria todas as chaves em uma sessão usando uma chave mestra. Devido ao fato de que cada sessão tem sua própria chave exclusiva, todas as sessões são protegidas. Portanto, se uma sessão foi comprometida, o restante ainda está protegido. O protocolo de gerenciamento de chaves é usado para a chave mestra - geralmente é ZRTP ou MIKEY, mas existem outras variações.


Pilha IP RTP

Os fluxos no WebRTC são protegidos por um dos dois protocolos: SRTP ou DTLS (Datagram Transport Layer Security). DTLS - para criptografia de fluxos de dados, SRTP - para fluxos de mídia. No entanto, para troca de chaves no SRTP, o DTLS-SRTP é usado para detectar ataques do broker. Isso está detalhado nos documentos da IETF: Segurança do WebRTC e arco de segurança .

SRTCP (Protocolo de controle de transporte seguro em tempo real)


O SRTP possui um protocolo irmão - SRTCP (Secure Real-time Transport Control Protocol). O SRTCP estende o RTCP (Protocolo de controle de transporte em tempo real) com os mesmos recursos que o SRTP estende o RTP, incluindo criptografia e autenticação. Como o SRTP, quase todos os recursos de segurança SRTCP podem ser desativados, exceto a autenticação de mensagens - é necessário para o SRTCP.

Armadilhas do SRTP


O SRTP criptografa a carga útil dos pacotes RTP, mas não a extensão do cabeçalho. Isso cria uma vulnerabilidade porque a extensão do cabeçalho no pacote RTP pode conter informações importantes, por exemplo, os níveis de som de cada pacote no fluxo de mídia. Potencialmente, isso pode ser familiar para um invasor que duas pessoas estão se comunicando na rede - a privacidade da conversa pode estar comprometida. Isso foi discutido na solicitação de comentários da IETF : 6904 , que requer todas as implementações subseqüentes do SRTP para criptografar extensões de cabeçalho.

Em alguns casos - por exemplo, uma conferência com muitos participantes - um intermediário na forma de SFM (Selective Forwarding Mixer) pode ser necessário para otimizar os parâmetros RTP durante o encaminhamento de fluxos. Esse intermediário viola o princípio de criptografia de ponta a ponta usado em sistemas ponto a ponto; em outras palavras, os dispositivos finais devem "confiar" em outro participante. Para contornar essa limitação, a Privacidade RTP Conferencing (PERC, um dos grupos de trabalho da IETF) está trabalhando em soluções como os procedimentos de criptografia dupla do SRTP . Os PERCs oferecem garantias apoiadas por criptografia salto a salto e ponta a ponta em dois contextos separados, mas relacionados. Falaremos sobre isso nos próximos posts!

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


All Articles