O WebRTC deve implementar o DTLS-SRTP, mas… não deve implementar SDEs

A segunda disposição desse tipo é que qualquer implementação fornecerá um mecanismo para o javascript do aplicativo de chamada para indicar que apenas os candidatos devem ser usados. Isso pode impedir que um colega aprenda o endereço IP de alguém.

De onde vem o domínio DTLS em webrtc?

Para os colegas WebRTC, que domínio é DTLS usado para negociação? Estou confuso. Parece não haver definição de atributo relevante no SDP. É o domínio onde a página da web está localizada?

perguntou 12 de julho de 2021 às 14:36

25 3 3 crachás de bronze

1 Resposta 1

O WebRTC não usa uma autoridade de certificado. Nenhum domínio está envolvido. Com o WebRTC, a autenticidade que você recebe do PKI é apenas substituída por impressões digitais de certificado.

Cada lado gera um certificado e depois compartilha a impressão digital na descrição da sessão (oferta/resposta). Depois que o handshake do DTLS estiver completo, ele garante que o certificado trocado fosse o mesmo.

Como o DTLS realmente funciona é explicado no webrtc para o curioso#garantir um pouco mais.

respondeu 12 de julho de 2021 às 15:25

Sean Dubois Sean Dubois

3.867 1 1 crachá de ouro 11 11 crachás de prata 22 22 crachás de bronze

Mas, o OpenSSL SSLConnector precisa de um domínio. Nesse caso, que valor deve ser transmitido para este parâmetro?

O WebRTC deve implementar o DTLS-SRTP, mas… não deve implementar SDEs?

Como eu previ em meu post sobre a padronização WebRTC, a reunião da IETF 87 ocorreu na semana passada em Berlim, Alemanha. Um dos itens da agenda para o WebRTC foi se os SDEs deveriam fazer parte (e como) do WebRTC.

De acordo com os rascunhos da IETF, qualquer implementação compatível com o WebRTC deve suportar o perfil RTP/SAVPF que se baseia no topo do perfil RTP seguro RTP/SAVP. Isso significa que os canais de mídia (e.g. áudio, vídeo) deve ser protegido via RTP seguro (SRTP), que fornece criptografia de mídia entre outros recursos de segurança. De fato, o uso de RTP simples (não criptografado) é explicitamente proibido pelas especificações do WebRTC.

Alternativas de gerenciamento de chaves do WebRTC

O SRTP precisa interagir com os principais protocolos de gerenciamento (e.g. Mikey, ZRTP, SDES, DTLS-SRTP) para negociar os parâmetros de segurança para a sessão de tráfego de mídia. Isto’vale a pena notar que a sinalização (e.g. SIP, http) e mídia (e.g. Rtp) envolvidos em uma comunicação multimídia pode ser garantida de forma independente. Por exemplo, as descrições de segurança do SDP para fluxos de mídia (SDEs) e troca de chaves multimídia (Mikey) usam o plano de sinalização para transportar os parâmetros de segurança da sessão via SDP; Isso significa que a sinalização deve ser protegida por sua vez. No entanto, garantir a sinalização e a mídia de forma independente pode ser insuficiente em alguns casos, pois não oferece garantia de que o usuário de sinalização seja o mesmo que o usuário da mídia. Portanto, é desejável uma ligação criptográfica entre os dois aviões-ZRTP e DTLS-SRTP fazem isso.

Muita literatura pode ser encontrada no assunto, mas em poucas palavras:

  • SDES – Parâmetros de segurança e teclas para configurar sessões SRTP são trocadas em texto claro na forma de atributos SDP, dependendo do plano de sinalização para proteger a mensagem SDP, usando, por exemplo, TLS.
  • Mikey – realiza a troca -chave e negocia parâmetros criptográficos em nome de aplicativos multimídia. Suas mensagens são transportadas na carga útil do SDP e codificadas na base64.
  • ZRTP-Um segredo compartilhado e outros parâmetros de segurança são trocados dependendo de Diffie-Hellman. A autenticação mútua pode usar uma string de autenticação curta (SAS), então não’T requer suporte de um PKI. A troca do ZRTP ocorre sobre os mesmos números de porta usados ​​pela sessão multimídia para o tráfego RTP (em oposição ao caminho de sinalização).
  • DTLS-SRTP-Permite a troca dos parâmetros criptográficos e derivar material de chave. A troca de chaves ocorre no avião de mídia e é multiplexada nas mesmas portas que a própria mídia. Vamos elaborar isso em um post futuro, mas, em suma, uma vez que alguns dos cheques de gelo concluírem, o DTLS-SRTP permite que o canal de mídia SRTP seja estabelecido sem necessidade de revelar chaves na troca de mensagens SDP, como é feito com SDEs.

De acordo com o Draft-IETF-RTCWEB-RTP-USAGE-07 (Draft atual, julho de 2013), WebRTC:

As implementações devem apoiar o DTLS-SRTP para gerenciamento de chaves. Outros esquemas de gerenciamento -chave podem ser suportados

O DTLS-SRTP é o mecanismo padrão e preferido, o que significa que, se for recebida uma oferta que suporta DTLS-SRTP e SDEs, o DTLS-SRTP deve ser selecionado-independentemente de a sinalização ser protegida ou não. Do que eu’estou vendo no campo mais (eu posso’TIGO TODOS) Os testes do WebRTC estão executando a sinalização sobre o TLS, geralmente via HTTP seguro (HTTPS) ou WebSockets Secure Webs (WSS).

O debate

Em geral, existem poucas dúvidas de que o DTLS-SRTP deve ser o mecanismo de segurança obrigatório para implementar (MTI) para a mídia em tempo real do WebRTC (bem, alguns argumentam que o ZRTP poderia potencialmente fornecer uma abordagem mais simples ou uma proteção ainda melhor em alguns cenários). A discussão em Berlim era se o IETF, além de exigir apoio ao DTLS-SRTP, poderia fornecer recomendações sobre como reutilizar alguns outros mecanismos existentes que temos hoje em vigor hoje para fornecer compatibilidade com versões anteriores; ou seja, reutilizar SDEs em cenários de entrelaçamento webrtc-to-sip. Sim’É verdade que a maioria do tráfego RTP nas redes VoIP não está garantida hoje – na verdade, este é um dos primeiros recursos que os clientes geralmente pedem aos fornecedores que removam para atender aos seus orçamentos. No entanto, quando garantido, a maioria das implantações eu’visto estão usando SDEs (que mencionado tem uma forte dependência da segurança do plano de sinalização).

Quando se trata de implementações do WebRTC, Google’s

O WebRTC deve implementar o DTLS-SRTP, mas… não deve implementar SDEs

A segunda disposição desse tipo é que qualquer implementação fornecerá um mecanismo para o javascript do aplicativo de chamada para indicar que apenas os candidatos devem ser usados. Isso pode impedir que um colega aprenda o endereço IP de alguém.

De onde vem o domínio DTLS em webrtc?

Para os colegas WebRTC, que domínio é DTLS usado para negociação? Estou confuso. Parece não haver definição de atributo relevante no SDP. É o domínio onde a página da web está localizada?

perguntou 12 de julho de 2021 às 14:36

25 3 3 crachás de bronze

1 Resposta 1

O WebRTC não usa uma autoridade de certificado. Nenhum domínio está envolvido. Com o WebRTC, a autenticidade que você recebe do PKI é apenas substituída por impressões digitais de certificado.

Cada lado gera um certificado e depois compartilha a impressão digital na descrição da sessão (oferta/resposta). Depois que o handshake do DTLS estiver completo, ele garante que o certificado trocado fosse o mesmo.

Como o DTLS realmente funciona é explicado no webrtc para o curioso#garantir um pouco mais.

respondeu 12 de julho de 2021 às 15:25

Sean Dubois Sean Dubois

3.867 1 1 crachá de ouro 11 11 crachás de prata 22 22 crachás de bronze

Mas, o OpenSSL SSLConnector precisa de um domínio. Nesse caso, que valor deve ser transmitido para este parâmetro?

O WebRTC deve implementar o DTLS-SRTP, mas… não deve implementar SDEs?

Como eu previ em meu post sobre a padronização WebRTC, a reunião da IETF 87 ocorreu na semana passada em Berlim, Alemanha. Um dos itens da agenda para o WebRTC foi se os SDEs deveriam fazer parte (e como) do WebRTC.

De acordo com os rascunhos da IETF, qualquer implementação compatível com o WebRTC deve suportar o perfil RTP/SAVPF que se baseia no topo do perfil RTP seguro RTP/SAVP. Isso significa que os canais de mídia (e.g. áudio, vídeo) deve ser protegido via RTP seguro (SRTP), que fornece criptografia de mídia entre outros recursos de segurança. De fato, o uso de RTP simples (não criptografado) é explicitamente proibido pelas especificações do WebRTC.

Alternativas de gerenciamento de chaves do WebRTC

O SRTP precisa interagir com os principais protocolos de gerenciamento (e.g. Mikey, ZRTP, SDES, DTLS-SRTP) para negociar os parâmetros de segurança para a sessão de tráfego de mídia. Isto’vale a pena notar que a sinalização (e.g. SIP, http) e mídia (e.g. Rtp) envolvidos em uma comunicação multimídia pode ser garantida de forma independente. Por exemplo, as descrições de segurança do SDP para fluxos de mídia (SDEs) e troca de chaves multimídia (Mikey) usam o plano de sinalização para transportar os parâmetros de segurança da sessão via SDP; Isso significa que a sinalização deve ser protegida por sua vez. No entanto, garantir a sinalização e a mídia de forma independente pode ser insuficiente em alguns casos, pois não oferece garantia de que o usuário de sinalização seja o mesmo que o usuário da mídia. Portanto, é desejável uma ligação criptográfica entre os dois aviões-ZRTP e DTLS-SRTP fazem isso.

Muita literatura pode ser encontrada no assunto, mas em poucas palavras:

  • SDES – Parâmetros de segurança e teclas para configurar sessões SRTP são trocadas em texto claro na forma de atributos SDP, dependendo do plano de sinalização para proteger a mensagem SDP, usando, por exemplo, TLS.
  • Mikey – realiza a troca -chave e negocia parâmetros criptográficos em nome de aplicativos multimídia. Suas mensagens são transportadas na carga útil do SDP e codificadas na base64.
  • ZRTP-Um segredo compartilhado e outros parâmetros de segurança são trocados dependendo de Diffie-Hellman. A autenticação mútua pode usar uma string de autenticação curta (SAS), então não’T requer suporte de um PKI. A troca do ZRTP ocorre sobre os mesmos números de porta usados ​​pela sessão multimídia para o tráfego RTP (em oposição ao caminho de sinalização).
  • DTLS-SRTP-Permite a troca dos parâmetros criptográficos e derivar material de chave. A troca de chaves ocorre no avião de mídia e é multiplexada nas mesmas portas que a própria mídia. Vamos elaborar isso em um post futuro, mas, em suma, uma vez que alguns dos cheques de gelo concluírem, o DTLS-SRTP permite que o canal de mídia SRTP seja estabelecido sem necessidade de revelar chaves na troca de mensagens SDP, como é feito com SDEs.

De acordo com o Draft-IETF-RTCWEB-RTP-USAGE-07 (Draft atual, julho de 2013), WebRTC:

As implementações devem apoiar o DTLS-SRTP para gerenciamento de chaves. Outros esquemas de gerenciamento -chave podem ser suportados

O DTLS-SRTP é o mecanismo padrão e preferido, o que significa que, se for recebida uma oferta que suporta DTLS-SRTP e SDEs, o DTLS-SRTP deve ser selecionado-independentemente de a sinalização ser protegida ou não. Do que eu’estou vendo no campo mais (eu posso’TIGO TODOS) Os testes do WebRTC estão executando a sinalização sobre o TLS, geralmente via HTTP seguro (HTTPS) ou WebSockets Secure Webs (WSS).

O debate

Em geral, existem poucas dúvidas de que o DTLS-SRTP deve ser o mecanismo de segurança obrigatório para implementar (MTI) para a mídia em tempo real do WebRTC (bem, alguns argumentam que o ZRTP poderia potencialmente fornecer uma abordagem mais simples ou uma proteção ainda melhor em alguns cenários). A discussão em Berlim era se o IETF, além de exigir apoio ao DTLS-SRTP, poderia fornecer recomendações sobre como reutilizar alguns outros mecanismos existentes que temos hoje em vigor hoje para fornecer compatibilidade com versões anteriores; ou seja, reutilizar SDEs em cenários de entrelaçamento webrtc-to-sip. Sim’É verdade que a maioria do tráfego RTP nas redes VoIP não está garantida hoje – na verdade, este é um dos primeiros recursos que os clientes geralmente pedem aos fornecedores que removam para atender aos seus orçamentos. No entanto, quando garantido, a maioria das implantações eu’visto estão usando SDEs (que mencionado tem uma forte dependência da segurança do plano de sinalização).

Quando se trata de implementações do WebRTC, Google’S Chrome suporta DTLS-SRTP e SDEs enquanto Mozilla’S Firefox apenas implementa DTLS-SRTP. Como curiosidade, eu’m Atualmente envolvido em ensaios de campo em que alguns dos gateways WebRTC-to-SIP em avaliação implementam apenas SDEs e têm DTLS-SRTP como um item de roteiro. Esses fornecedores de gateway provavelmente consideraram os SDEs bons o suficiente para o cenário básico de trabalho e esperavam que fosse adotado em algum momento pelas especificações do WebRTC.

Suporte de chave de segurança do navegador WebRTC

Os slides da discussão em Berlim podem ser encontrados aqui. Como pode ser visto nas apresentações, alguns dos argumentos dos apoiadores do SDES incluíram:

  • Incentivo comercial -’já está lá e funciona
  • A recorte de mídia inicial
  • Compensação entre complexidade e custo
  • Subsídio para SRTP de ponta a ponta em casos de trabalho

Na última bala, isso significa que não precisaria descriptografar o tráfego SRTP no gateway entrelaçado se o terminal VoIP no outro extremo estiver usando SDEs.

Obviamente, o principal ponto de debate foi se os SDEs realmente degradam a segurança no caso de uso entre trabalhadores quando comparado ao DTLS-SRTP. Na minha opinião. Observe que os apoiadores do SDES não estavam propondo isso para todos os casos de uso, mas estavam defendendo de alguma forma limitando sua aplicabilidade ao cenário de entrelaçamento em vez disso.

Outros argumentaram que a compatibilidade com versões anteriores não era um fator tão importante quando se precisará de usar gateways de mídia de qualquer maneira (no mínimo para o término do gelo); Portanto, o entreparelhamento DTLS-SRTP-to-SDES pode ser apenas mais uma característica da função de gateway (como mostrado no diagrama a seguir extraído desta apresentação).

O resultado

Como resultado da discussão, os SDEs não apenas não foram recomendados a partir de casos de uso selecionados, como o WebRTC-to-Sip, mas foi completamente proibido para o WebRTC em geral. A adoção de SDEs foi interpretada pela maioria como impondo um requisito aos navegadores da web além do escopo das comunicações de navegador para navegador, enquanto potencialmente degrada suas propriedades de segurança.

Eu acredito que ter uma única solução pode ser benéfica da perspectiva de interoperabilidade (eu.e. quanto menos opções que temos geralmente significa a melhor interoperabilidade), mas eu’estou me perguntando o que a indústria realmente implementará, especialmente em cenários não-navegadores do WebRTC que podem ter requisitos de segurança diferentes ou que desejam interoperar diretamente com os dispositivos VoIP existentes (como eu’estou vendo em um projeto, isso pode significar vários milhões de terminais). O tempo dirá como os fornecedores reagem, mas esse definitivamente não seria o primeiro caso em que um recurso/comportamento específico é desativado por padrão para ser compatível com RFC, mas uma opção configurável e às vezes oculta é fornecida “em um’r risco” Para apoiar o recurso ��

Quero aprender um pouco mais sobre a segurança do WebRTC? Vamos elaborar sobre este tópico em futuras entradas do blog. Enquanto isso, encontre aqui e aqui algumas referências interessantes. Meus amigos e ex -colegas Jiri, Dorgham, John, Uli e Henning incluem uma descrição muito abrangente sobre segurança multimídia em seu livro de segurança SIP. Você também pode me enviar um e -mail para [email protegido] ou me seguir no Twitter em @victorPascual.

Postagens relacionadas

Feed RSS

Interações com leitores

Comentários

  1. Vijay k. Gurbani diz que 15 de agosto de 2013 às 11h14

A questão que Victor está discutindo não é endêmica apenas para o webrtc. É um problema geral que o mundo do SIP abordou um pouco. O artigo abaixo fornece méritos relativos e desvantagens de vários esquemas de digitação em um ambiente de telecomunicações multimídia na Internet. Se você quiser uma cópia, pode me enviar um e-mail no VKG no Bell-Labs Dot Com. Gurbani, v.K. e Kolesnikov, V., “Uma pesquisa e análise de técnicas de chave de mídia no protocolo de iniciação da sessão (SIP),” Em pesquisas e tutoriais de comunicação IEEE, 13 (2), pp. 183-198, 2011.

Obrigado pela referência vijay – artigo muito interessante. BTW, este novo draft da Internet foi publicado há algumas horas: “Usando o ZRTP para proteger o webrtc”
http: // ferramentas.IETF.org/html/draft-johnston-rtcweb-zrtp-00 Resumo: “WebRTC, Web Communications em tempo real, é um conjunto de protocolos e APIs usados ​​para permitir que os desenvolvedores da Web adicionem comunicações em tempo real em suas páginas e aplicativos da web com algumas linhas de JavaScript. Os fluxos de mídia WebRTC são criptografados e autenticados pelo SRTP, o protocolo de transporte seguro em tempo real, enquanto o principal contrato é fornecido pelo DTLS-SRTP, segurança de transporte de datagram. No entanto, sem algum serviço de identidade de terceiros ou autoridade de certificação, os fluxos de mídia WebRTC não têm proteção contra um ataque de homem no meio-médio (MITM). ZRTP, Media Path Key Accord para o Unicast Secure RTP, RFC 6189, fornece proteção contra atacantes do MITM usando a continuidade -chave aumentada com uma curta string de autenticação (SAS). Esta especificação descreve como o ZRTP pode ser usado sobre o canal de dados do WebRTC para fornecer proteção MITM para os fluxos de mídia WebRTC com chave usando DTLS-SRTP. Isso fornece proteção aos usuários contra atacantes do MITM sem exigir que os navegadores suportem o ZRTP ou os usuários para baixar um plug -in ou extensão para implementar o ZRTP.”

Atualização rápida: o Google acabou de anunciar o Chrome está eliminando os SDEs em um processo de várias etapas “1) No Chrome 31, o DTLS está agora por padrão, embora o SDES ainda seja oferecido também. Você não precisa mais passar pelo dtlssrtpKeyGreement: True Restrint to Habiling DTLS. Como estamos usando o cache de certificado de origem por origem, o acerto de desempenho da geração de um certificado DTLS não é mais um problema, permitindo que isso faça disso o padrão. Nenhuma alteração de aplicativo é necessária no momento, embora os DTLs possam ser desativados definindo dtlssrtpkeyGreement: false, que reverte para a operação somente para SDES. 2) Em uma versão futura do Chrome, provavelmente o Chrome 33, os SDEs não serão mais oferecidos por padrão e só serão usados ​​se uma nova restrição de TBD for especificada. Para aplicativos que requerem SDEs, isso exigirá uma alteração de aplicativo para especificar esta nova restrição. 3) Em uma versão futura do Chrome, TBD neste momento, essa restrição SDES será removida e apenas o DTLS-SRTP será suportado. Esperamos que isso ocorra em 2014, então comece a migração de seus aplicativos para o DTLS-SRTP o mais rápido possível.” Fonte: https: // grupos.Google.com/fórum/#!Tópico/Discuta-Webrtc/67W4zrtmons

Obrigado pelo interessante post vencedor. Eu estava apenas procurando alguns problemas de segurança sobre o WebRTC e achei isso. Talvez o status atual sobre isso tenha mudado, devido ao post, foi publicado há cerca de um ano, sou novo no WebRTC, e tudo parece que o WebRTC está usando o DLTS-RTSP. No entanto, o que acontece com a segurança em telefones celulares?. Até onde eu sei, o RTSP pode ser um pouco lento para descriptografar o vídeo, por exemplo, em Mobile Plattforms. Obrigado antecipadamente Víctor Hidalgo

  • Chad Hart diz 12 de julho de 2014 às 7:55

Por Favor don’t Misture o protocolo de streaming em tempo real (RTSP) com transporte seguro em tempo real (SRTP). O WebRTC usa DTLS-SRTP. DTLS-SRTP como toda criptografia requer descriptografia, e há alguma sobrecarga associada a isso, mas é minúscula em dispositivos modernos. As preocupações com os custos de criptografia geralmente têm sido focadas nos equipamentos do lado do servidor que precisam lidar com altos volumes e, portanto, podem aumentar o preço de oferecer um serviço.

  • Victor diz 14 de julho de 2014 às 3:06

Oi Chad, certo, eu estava me referindo a dtls-srtp no dtls-rtsp, desculpe pelo meu erro. Eu queria algum tipo de esclarecimento antes de fazer algum teste, já que a sobrecarga minúscula associada aos dispositivos modernos é o que eu esperava. Muito obrigado pela sua resposta. Vencedor

Deixe uma resposta Cancelar resposta

Este site usa Akismet para reduzir o spam. Saiba como os dados do seu comentário são processados.

Um estudo da segurança do WebRTC

A comunicação em tempo real da Web (abreviada como WebRTC) é uma tendência recente na tecnologia de aplicativos da web, que promete a capacidade de permitir a comunicação em tempo real no navegador sem a necessidade de plug-ins ou outros requisitos. No entanto, a natureza de código aberto da tecnologia pode ter o potencial de causar preocupações relacionadas à segurança aos possíveis adotantes da tecnologia. Este artigo discutirá em detalhes a segurança do WebRTC, com o objetivo de demonstrar a segurança comparativa da tecnologia.

1. Introdução

O WebRTC é uma tecnologia de aplicativos baseada na Web de código aberto, que permite aos usuários enviar mídia em tempo real sem a necessidade de instalar plugins. Usar um navegador adequado pode permitir que um usuário ligue para outra parte simplesmente navegando na página da web relevante.

Alguns dos principais casos de uso dessa tecnologia incluem o seguinte:

  • As chamadas de áudio e/ou vídeo em tempo real
  • Conferência da Web
  • Transferências de dados diretas

Ao contrário da maioria dos sistemas em tempo real (e.g. SIP), as comunicações WebRTC são controladas diretamente por algum servidor da web, por meio de uma API JavaScript.

A perspectiva de permitir a comunicação de áudio e visual incorporada em um navegador sem plugins é emocionante. No entanto, isso naturalmente levanta preocupações com a segurança dessa tecnologia e se pode ser confiável para fornecer comunicação confiável para os usuários finais e quaisquer operadoras intermediárias ou terceiros.

Este relatório abordará esses tópicos e examinará as proteções que o WebRTC fornece para fornecer segurança em todos os casos. Para os propósitos deste artigo, no entanto, aplicações nativas serão tratadas como fora do escopo.

2. Visão geral da arquitetura WebRTC

O WebRTC permite a comunicação direta rica em mídia entre dois pares, usando uma topologia ponto a ponto (P2P). WebRTC reside no navegador do usuário e não requer software adicional para operar. A comunicação real entre colegas é precedida por uma troca de metadados, denominada “sinalização”. Esse processo é usado para iniciar e anunciar chamadas e facilitar o estabelecimento de conexão entre partes desconhecidas.

Conforme mostrado na Figura 1, esse processo ocorre através de um servidor intermediário:

Figura 1. Uma topologia simples de chamadas do WebRTC

figura 1. Uma topologia simples de chamadas webrtc

Um protocolo de sinalização não é especificado no WebRTC, permitindo que os desenvolvedores implementem sua própria escolha de protocolo. Isso permite um grau mais profundo de flexibilidade na adaptação de um aplicativo WebRTC para um caso ou cenário de uso específico.

Como funciona a comunicação WebRTC?

O WebRTC depende de três APIs, cada uma com uma função específica para permitir a comunicação em tempo real em um aplicativo da Web. Essas APIs serão nomeadas e explicadas brevemente. A implementação e detalhes técnicos de cada protocolo e tecnologia estão fora do escopo deste relatório, no entanto, a documentação relevante está prontamente disponível online.

getUsermedia

Por muitos anos, foi necessário confiar em plugins de navegador de terceiros, como flash ou Silverlight para capturar áudio ou vídeo de um computador. No entanto, a era do HTML 5 inaugurou o acesso direto ao hardware a vários dispositivos e fornece APIs de JavaScript que fazem interface com os recursos de hardware subjacente de um sistema.

GetUsermedia é uma dessas API, permitindo que um navegador acesse a câmera e o microfone de um usuário. Embora utilizado pelo WebRTC, esta API é realmente oferecida como parte do HTML 5.

RtcpeerConnection

RTCPeerConnection é o primeiro de duas APIs que são oferecidas especificamente como parte da especificação WebRTC. Uma interface RTCPeerConnection representa a conexão WebRTC real e é confiada para lidar com o fluxo eficiente de dados entre dois pares.

Quando um chamador deseja iniciar uma conexão com uma parte remota, o navegador começa instantando um objeto RTCPeerConnection. Isso inclui uma descrição do SDP auto-gerada para trocar com seus colegas. O destinatário, por sua vez, responde com sua própria descrição do SDP. As descrições do SDP são usadas como parte do fluxo de trabalho de gelo completo para Traversal de Nat para.

Com a conexão agora estabelecida, o RTCPeerConnection permite o envio de dados de áudio e vídeo em tempo real como um fluxo de bits entre os navegadores.

Por fim, a API RTCPeerConnection é responsável por gerenciar o ciclo de vida completo de cada conexão ponto a ponto e encapsula toda a configuração, gerenciamento e estado de conexão em uma única interface fácil de usar.

RTCPeerConnection tem duas características específicas: – Comunicação direta ponto a ponto entre dois navegadores – uso de UDP/IP – não há garantia de chegada de pacotes (como no TCP/IP), mas há muita sobrecarga reduzida como resultado. – (Ao permitir a perda de alguns dados, podemos nos concentrar em oferecer comunicação em tempo real.)

Rtcdatachannel

O rtcdatachannel é a segunda API principal oferecida como parte do WebRTC e representa o principal canal de comunicação através do qual ocorre a troca de dados de aplicativos arbitrários entre os pares. Em outras palavras, é usado para transferir dados diretamente de um par.

Embora existam várias opções alternativas para canais de comunicação (e.g. WebSocket, servidor enviado por eventos), no entanto, essas alternativas foram projetadas para comunicação com um servidor, em vez de um par diretamente conectado. O rtcdatachannel se assemelha ao popular webSocket, mas, em vez disso, leva um formato ponto a ponto, oferecendo propriedades de entrega personalizáveis ​​do transporte subjacente.

2.1. Tecnologias subjacentes

As três APIs principais são os aspectos voltados para o desenvolvedor do WebRTC, mas existem várias tecnologias fundamentais que são utilizadas para fornecer esses protocolos (o RTCPeerConnection e o RTCDATACHANNEL APIs).

Figura 2. pilha do protocolo WebRTC

Figura 2. Pilha do protocolo WebRTC

Gelo, atordoamento e turno são necessários para estabelecer e manter uma conexão ponto a ponto sobre UDP. O DTLS é usado para proteger todas as transferências de dados entre pares, pois a criptografia é um recurso obrigatório do WebRTC. Finalmente, o SCTP e o SRTP são os protocolos de aplicativos usados ​​para multiplex os diferentes fluxos, fornecem congestionamento e controle de fluxo e fornecem entrega parcialmente confiável e outros serviços adicionais sobre o UDP.

SDP: Protocolo de Descrição da Sessão

Sessão Descrição Protocolo (SDP) é um protocolo descritivo que é usado como um método padrão de anunciar e gerenciar convites de sessão, além de executar outras tarefas de iniciação para sessões multimídia. SDP represents the browser capabilities and preferences in a text-based format, and may include the following information: – Media capabilities (video, audio) and the employed codecs – IP address and port number – P2P data transmission protocol (WebRTC uses SecureRTP) – Bandwidth usable for communication – Session attributes (name, identifier, time active, etc.) -> No entanto, estes não são usados ​​no webrtc. – Outros metadados relacionados.

Atualmente, o SDP é amplamente utilizado nos contextos do protocolo de iniciação de sessão (SIP), Protocolo de Transporte em tempo real (RTP) e Protocolo de Streaming em tempo real (RSP).

Gelo: Estabelecimento de conectividade interativa

A sinalização requer o uso inicial de um servidor intermediário para a troca de metadados, mas após a conclusão do WebRTC tenta estabelecer uma conexão P2P direta entre os usuários. Este processo é realizado através da estrutura de gelo.

O gelo é uma estrutura usada para estabelecer uma conexão entre colegas pela Internet. Embora o WebRTC tente utilizar conexões diretas de P2P, na realidade a presença generalizada de NAT (tradução de endereços de rede) dificulta a negociação de como dois colegas se comunicarão.

Devido à contínua prevalência generalizada de endereços IPv4, com sua representação limitada de 32 bits, a maioria dos dispositivos habilitados para rede não possui um endereço IPv4 público voltado para o público com o qual seria diretamente visível na Internet. O NAT funciona traduzindo dinamicamente os endereços privados para os públicos quando uma solicitação de saída passa por eles. Da mesma forma, as solicitações de entrada para um IP público são convertidas de volta em um IP privado para garantir o roteamento correto na rede interna. Resultado, o compartilhamento de um IP privado geralmente não é informações suficientes para estabelecer uma conexão com um colega. Tentativas de gelo para superar as dificuldades apresentadas pela comunicação via NAT para encontrar o melhor caminho para conectar colegas.

Ao tentar todas as possibilidades em paralelo, o ICE é capaz de escolher a opção mais eficiente que funciona. O ICE primeiro tenta fazer uma conexão usando o endereço do host obtido no sistema operacional e na placa de rede de um dispositivo; Se isso falhar (o que inevitavelmente fará para dispositivos atrás do NATS), o gelo obtém um endereço externo usando um servidor de atordoamento. Se isso também falhar, o tráfego volta ao roteamento por meio de um servidor de retransmissão de turno.

As rotas de comunicação do candidato são renderizadas em um formato baseado em texto e a lista ordenada pela prioridade. As opções assumem a forma de um dos seguintes: – Comunicação direta de P2P – usando o atordoamento, com um mapeamento de portas para Traversal Nat (essa rota acaba se resolve a direcionar a comunicação P2P) – usando o Turn como intermediário (essa configuração emprega comunicação retransmitida em vez de P2P)

De todos os candidatos possíveis, a rota com a menor sobrecarga é escolhida.

Atordo: Utilitários de Traversal de sessão para NAT

Para realizar a comunicação P2P, ambas as partes exigem necessariamente pelo menos o conhecimento do endereço IP de seus colegas e da porta UDP atribuída. Como resultado, uma certa quantidade de troca de informações é necessária antes que a comunicação do WebRTC possa ser estabelecida.

Um servidor de atordoamento é usado por cada par para determinar seu endereço IP público e é referenciado pela estrutura do gelo durante o estabelecimento de conexão. Os servidores de atordoamento são tipicamente acessíveis publicamente e podem ser usados ​​livremente por aplicativos WebRTC.

Turn: Traversal usando relés em torno do NAT

Na eventualidade que o estabelecimento de uma comunicação P2P falha, uma opção de fallback pode ser fornecida através de um servidor de turno. Ao retransmitir tráfego entre colegas, a comunicação WebRTC pode ser garantida, mas pode sofrer degradações na qualidade e latência da mídia.

Os servidores Turn podem garantir um grande sucesso na criação de chamadas, independentemente dos ambientes do usuário final. Como os dados são enviados através de um servidor intermediário, a largura de banda do servidor também é consumida. Se muitas chamadas forem roteadas simultaneamente através do servidor, a largura de banda também se tornou considerável em tamanho.

O servidor em si normalmente não é acessível livremente e deve ser fornecido especificamente (ou alugado) pelo provedor de aplicativos.

3. Considerações de segurança baseadas no navegador

Existem várias maneiras, pois um aplicativo de comunicação em tempo real pode impor riscos de segurança, tanto na transportadora quanto nos usuários finais. Esses riscos de segurança podem ser aplicáveis ​​a qualquer aplicativo que lide com a transmissão de dados e mídia em tempo real.

O WebRTC difere de outros aplicativos RTC, fornecendo uma infraestrutura forte e confiável para que até novos desenvolvedores utilizem sem comprometer a segurança. Passamos agora a discutir como o WebRTC lida com cada um desses riscos, por sua vez.

3.1. Modelo de confiança do navegador

A arquitetura WebRTC assume de uma perspectiva de segurança que os recursos de rede existem em uma hierarquia de confiança. Do ponto de vista do usuário, o navegador (ou cliente de usuário) é base de toda a segurança do WebRTC e atua como sua base de computação confiável (TCB).

O trabalho do navegador é permitir o acesso à Internet, fornecendo proteções de segurança adequadas ao usuário. Os requisitos de segurança do WebRTC são construídos diretamente sobre esse requisito; O navegador é o portal através do qual o usuário acessa todos os aplicativos e conteúdo do WebRTC.

Enquanto HTML e JS fornecidos pelo servidor podem fazer com que o navegador execute uma variedade de ações, o navegador segrega esses scripts em caixas de areia. As caixas de areia referidas isolam scripts um do outro e do computador do usuário. De um modo geral, os scripts só podem interagir com os recursos do mesmo domínio – ou mais especificamente, a mesma “origem”.

O navegador aplica todas as políticas de segurança que o usuário deseja e é o primeiro passo na verificação de todos os terceiros. Todas as entidades autenticadas têm sua identidade verificada pelo navegador.

Se o usuário escolher um navegador adequado que eles conhecem, pode confiar, toda a comunicação do WebRTC pode ser considerada “segura” e seguir a arquitetura de segurança aceita padrão da tecnologia WebRTC. No entanto, se houver alguma dúvida de que um navegador seja “confiável” (e.g. Tendo sido baixado de terceiros, em vez de um local confiável), todas as seguintes interações com aplicativos WebRTC são impactadas e podem não ser seguras de forma confiável.

Em outras palavras, o nível de confiança fornecido ao usuário pelo WebRTC é diretamente influenciado pela confiança do usuário no navegador.

3.2. SOP: Mesma política de origem

É um aspecto fundamental do DOM que todos os recursos da página da web são buscados no servidor da web da página, sempre que alguns ou toda a página são carregados. A busca de recursos ocorre quando uma página é carregada recentemente pelo navegador, ou quando um script residente em uma página da web faz tal solicitação. Esses scripts são prontamente capazes de fazer solicitações HTTP via e.g. A API xmlHttPrequest (), mas não tem permissão para fazer tais solicitações para qualquer servidor que eles especifiquem. Em vez disso, os pedidos devem ser feitos para a mesma “origem” de onde o script se originou. Uma “origem” é composta por um esquema de URI, nome do host e número da porta. Essa restrição geral é denominada “mesma política de origem” (SOP).

O SOP força os scripts a executar em caixas de areia isoladas específicas para seu domínio de origem, impedindo as páginas de origens diferentes ou mesmo iframes na mesma página de trocar informações. Páginas e scripts da Web do mesmo servidor de origem permanecem sem obstáculos em interagir entre si’S JS variáveis. Como tal, a origem constitui a unidade básica de sandboxing da web.

Através da aplicação de caixas de areia de execução por origem, o usuário final é protegido do uso indevido de suas credenciais. Você esperaria razoavelmente usar um site de redes sociais com segurança sem um script executando em um painel de anúncios e roubando suas informações de login.

Da mesma forma, os servidores de E.g. O provedor de páginas da web está protegido dos ataques montados através do navegador do usuário; Se tais salvaguardas não existiam, os ataques do DOS poderiam ser lançados por meio de solicitações de recursos abusivos.

3.2.1 ignorando o SOP

O SOP é incrivelmente importante para a segurança dos servidores do usuário e da Web em geral, embora tenha a desvantagem de dificultar a criação de certos tipos de aplicativos da web. Métodos de permitir a interação entre sites existem, embora estes sejam tipicamente mutuamente consensuais e limitados a determinados canais.

A especificação W3C Cross-Origin Resource Sharing (CORS) é uma das respostas para o problema. Ele permite que o navegador entre em contato com o servidor de destino do script para determinar se está disposto a participar de um determinado tipo de transação. Como tal, solicitações de origem cruzada podem ser permitidas com segurança, dando ao servidor de destino a opção de optar especificamente a determinadas solicitações e recusar todos os outros.

Websockets é outra opção que permite funcionalidade semelhante, mas em canais transparentes, em vez de solicitações HTTP isoladas. Depois que essa conexão foi estabelecida, o script pode transferir tráfego e recursos como gosta, com a necessidade de enquadrar como uma série de transações de solicitação/resposta HTTP.

Nos dois casos, o estágio de verificação inicial impede a transferência arbitrária de dados por um script com uma origem diferente.

4. Considerações de segurança do WebRTC

4.1. Instalação e atualizações

Um problema predominante com o software de desktop tradicional é se alguém pode confiar no próprio aplicativo. A instalação de novo software ou um plug -in pode potencialmente instalar malware ou outro software indesejável. Muitos usuários finais não têm idéia de onde o software foi feito ou exatamente quem eles estão baixando o aplicativo de. Terceiros maliciosos tiveram grande sucesso em reembalar software perfeitamente seguro e confiável para incluir malware e oferecer seu pacote personalizado em sites de software livre.

WebRTC, no entanto, não é um plug -in, nem há nenhum processo de instalação para nenhum de seus componentes. Toda a tecnologia WebRTC subjacente é instalada simplesmente como parte do download de um navegador compatível com o WebRTC adequado, como Chrome ou Firefox. Se um usuário tiver esse navegador, ele poderá navegar e usar qualquer aplicativo WebRTC sem outra configuração ou preparação necessária. Como tal, não há risco de instalação de malware ou vírus através do uso de um aplicativo WebRTC apropriado. No entanto, os aplicativos WebRTC ainda devem ser acessados ​​por meio de um site HTTPS assinado por um autenticador válido como o Verisign.

Outra consideração relacionada é o patch de falhas de segurança descobertas no software. Como em qualquer tecnologia de software, é inteiramente possível que futuros bugs ou vulnerabilidades sejam descobertos no WebRTC. Se uma vulnerabilidade for encontrada em um aplicativo de desktop tradicional (como um aplicativo de VoIP típico), o desenvolvimento de um patch pode levar um tempo considerável. Este é um problema frequente com o desenvolvimento de aplicativos, pois a segurança ainda é frequentemente tratada como uma consideração secundária após a funcionalidade. Indo mais fundo do que isso, podemos contemplar os métodos de comunicação baseados em hardware. Com que frequência um telefone VoIP recebe uma atualização de segurança? Você pode confiar na pessoa responsável por atualizá -lo regularmente? Você sabe quem é responsável?

Ao contrário disso, os navegadores são um cenário de desenvolvimento em ritmo acelerado devido à frequência e faixa de riscos aos usuários, bem como sua natureza onipresente (e a importância das informações acessadas através do navegador). Como os componentes do WebRTC são oferecidos como parte de um navegador, eles também são atualizados sempre que o navegador é atualizado. Se uma futura vulnerabilidade foi encontrada na implementação do WebRTC de um navegador, uma correção provavelmente será entregue rapidamente. Isso pode ser visto particularmente nos ciclos de desenvolvimento rápido do Chrome e Firefox. De fato, na era das atualizações automáticas, os componentes do WebRTC podem ser atualizados através de uma nova versão do navegador assim que o patch for disponibilizado em servidores. A maioria dos navegadores modernos tem um bom registro de se atualizar automaticamente dentro de 24 horas após a descoberta de uma vulnerabilidade ou ameaça séria.

Como uma nota lateral: embora tenhamos declarado que o WebRTC exige que os plugins sejam instalados, é possível que as estruturas WebRTC de terceiros possam oferecer plugins para permitir o suporte atualmente não suportados (como Safari e IE). Cuidado do usuário (ou um navegador suportado) é recomendado nesses casos.

4.2. Acesso à mídia/recursos locais

O navegador pode acessar recursos locais (incluindo câmera, microfone, arquivos), que lidera a inevitável preocupação de um aplicativo da web acessando o microfone e a câmera de um usuário. Se os aplicativos da Web puderam obter acesso livre à câmera ou microfone de um usuário, um aplicativo sem escrúpulos poderá tentar gravar ou distribuir feeds de vídeo ou áudio sem o conhecimento do usuário. Pode ser uma questão simples para um site residente em uma guia de segundo plano para abusar da confiança do usuário (o usuário pode nem perceber que um site abriga esse aplicativo de comunicação).

O WebRTC combate isso, exigindo que o usuário forneça permissão explícita para que a câmera ou o microfone seja usada (ambos podem ser configurados individualmente). É possível pedir ao usuário acesso único ou permanente. Não é possível que um aplicativo WebRTC obtenha acesso ou opere arbitrariamente o dispositivo. Além disso, quando o microfone ou a câmera está sendo usada, a interface do usuário do cliente deve mostrar expressamente ao usuário que o microfone ou a câmera estão sendo operados. No Chrome, isso assume a forma de um ponto vermelho em qualquer guia acessando a mídia de um usuário.

Figura 3. Indicadores de interface do usuário do cromo

Figura 3. Indicadores de interface do usuário do cromo

A filosofia dessa proteção de segurança é que um usuário deve estar sempre tomando uma decisão informada sobre se deve permitir uma chamada para ocorrer ou receber uma chamada. Em outras palavras, um usuário deve entender: – quem ou o que está solicitando acesso à sua mídia – para onde a mídia está indo – ou ambos.

Como uma provisão adicional, a especificação WebRTC especifica que os navegadores devem parar a câmera e o microfone quando o indicador da interface do usuário é mascarado (e.g. por sobreposição de janela). Embora este seja mais um comportamento ideal, não é necessariamente garantido e os usuários devem ter cuidado. Felizmente, no entanto, essa funcionalidade adicional provavelmente não será um comportamento esperado pelo usuário.

O compartilhamento de tela introduz mais considerações de segurança devido à flexibilidade inerente ao escopo. Um usuário pode não estar ciente imediatamente da extensão das informações que estão compartilhando. Por exemplo, eles podem acreditar que estão simplesmente compartilhando um fluxo de uma janela específica (e.g. enquanto faz uma apresentação para partes remotas), quando, na realidade, eles estão mostrando toda a tela para o público. Isso pode ser resultado do usuário que não consegue estabelecer corretamente a configuração inicial de compartilhamento de tela, ou então o usuário pode simplesmente esquecer a extensão do que está compartilhando.

4.3. Criptografia de mídia e segurança de comunicação

Existem várias maneiras, pois um aplicativo de comunicação em tempo real pode impor riscos de segurança. Um particularmente notável é a interceptação de mídia ou dados não criptografados durante a transmissão. Isso pode ocorrer entre o navegador do navegador ou a comunicação do servidor do navegador, com um terceiro de espionagem capaz de ver todos os dados enviados. Criptografia, no entanto, torna efetivamente impossível para um espionagem determinar o conteúdo dos fluxos de comunicação. Somente partes com acesso à chave de criptografia secreta podem decodificar os fluxos de comunicação.

A criptografia é uma característica obrigatória do WebRTC e é aplicada em todos os componentes, incluindo mecanismos de sinalização. Resultado, todos os fluxos de mídia enviados pelo WebRTC são criptografados com segurança, promulgados por protocolos de criptografia padronizados e conhecidos. O protocolo de criptografia usado depende do tipo de canal; Os fluxos de dados são criptografados usando a segurança da camada de transporte de datagrama (DTLS) e os fluxos de mídia são criptografados usando o Protocolo de Transporte Em tempo real seguro (SRTP).

4.3.1. DTLS: segurança da camada de transporte de datagrama

O WebRTC criptografa informações (especificamente canais de dados) usando o Datagram Transport Cayer Security (DTLS). Todos os dados enviados pelo rtcdatachannel são protegidos usando DTLS.

O DTLS é um protocolo padronizado que é incorporado em todos os navegadores que suportam o WebRTC e é um protocolo usado consistentemente em navegadores da web, email e plataformas de VoIP para criptografar informações. A natureza integrada também significa que nenhuma configuração anterior é necessária antes de usar. Assim como em outros protocolos de criptografia, foi projetado para evitar a escuta e adulteração de informações. O próprio DTLS é modelado no TLS orientado para fluxo, um protocolo que oferece criptografia completa com métodos de criptografia assimétrica, autenticação de dados e autenticação de mensagem. TLS é o padrão de fato para criptografia da Web, utilizado para fins de protocolos como HTTPS. O TLS foi projetado para o mecanismo de transporte confiável do TCP, mas aplicativos VoIP (e jogos, etc.) normalmente utiliza transportes de datagrama não confiáveis, como UDP.

Como o DTLS é um derivado do SSL, todos os dados são conhecidos por serem tão seguros quanto o uso de qualquer conexão baseada em SSL padrão. De fato, os dados do WebRTC podem ser protegidos por meio de qualquer conexão SSL padrão na Web, permitindo que o WebRTC ofereça criptografia de ponta a ponta entre pares com quase qualquer arranjo de servidor.

4.3.1.1. DTLs sobre a curva

A opção padrão para toda a comunicação WebRTC é a comunicação direta de P2P entre dois navegadores, auxiliados com servidores de sinalização durante a fase de configuração. A criptografia P2P é relativamente fácil de prever e configurar, mas no caso de falha a configuração do WebRTC volta à comunicação por meio de um servidor de turno (se disponível). Durante a comunicação de turno, a mídia pode sofrer uma perda de qualidade e maior latência, mas permite que um cenário “se tudo mais falhar” permite que o aplicativo WebRTC funcione mesmo em circunstâncias desafiadoras. Também devemos considerar a comunicação criptografada sob a estrutura de comunicação alternativa de Turn.

Sabe -se que, independentemente do método de comunicação, os dados enviados são criptografados nos pontos finais. O objetivo de um servidor de Turn é simplesmente o relé dos dados do WebRTC entre as partes em uma chamada e apenas analisará a camada UDP de um pacote WebRTC para fins de roteamento. Os servidores não decodificarão a camada de dados do aplicativo para rotear pacotes e, portanto, sabemos que eles não (e não podem) tocar na criptografia DTLS.

Resultado, as proteções implementadas por meio da criptografia não são, portanto, comprometidas durante a comunicação do WebRTC ao longo da curva, e o servidor não pode entender ou modificar informações que os colegas enviam um para o outro.

4.3.2. SRTP: Protocolo de transporte em tempo real seguro

O RTP básico não possui mecanismos de segurança internos e, portanto, não coloca proteções da confidencialidade dos dados transmitidos. Os mecanismos externos são confiados para fornecer criptografia. De fato, o uso de RTP não criptografado é explicitamente proibido pela especificação WebRTC.

O WebRTC utiliza SRTP para a criptografia de fluxos de mídia, em vez de DTLS. Isso ocorre porque o SRTP é uma opção mais leve que o DTLS. A especificação exige que qualquer suporte de implementação do WEBRTC compatível RTP/SAVPF (que seja construído no topo do RTP/SAVP) [9] . No entanto, a troca de chave SRTP real é realizada inicialmente de ponta a ponta com o DTLS-SRTP, permitindo a detecção de qualquer ataque de MITM.

4.3.3. Estabelecimento de um link seguro

Vamos passar pelo processo de estabelecer uma nova chamada em um aplicativo WebRTC. Nesse caso, haverá duas partes envolvidas; Alice e Bob. O procedimento de chamada é iniciado quando uma parte (Alice) chama a outra (BOB), e o processo de sinalização troca os metadados relevantes entre ambas as partes.

Depois que as verificações iniciais do gelo concluírem (ou especificamente, algumas delas), os dois pares começarão a configurar um ou mais canais seguros. Inicialmente, um aperto de mão DTLS é realizado em todos os canais que são estabelecidos por gelo. Para os canais de dados, esta etapa é suficiente, pois os DTLs simples são usados ​​para criptografia. Para os canais de mídia, no entanto, mais medidas são tomadas.

Depois que o handshake do DTLS é concluído, as chaves são “exportadas” e usadas para dizer SRTP para os canais de mídia. Nesta fase, ambas as partes sabem que compartilham um conjunto de dados seguros e/ou canais de mídia com chaves que não são conhecidas por nenhum terceiro malicioso.

4.3.4. DTLS-SRTP vs SDES

Para negociar os parâmetros de segurança para a sessão de tráfego de mídia, o SRTP precisa interagir com um protocolo de gerenciamento -chave. Este protocolo não está estabelecido, oferecendo várias opções possíveis para a tarefa. Duas dessas opções são SDEs e DTLS-SRTP.

Vale a pena notar que a sinalização (SIP, HTTP) e mídia (RTP) envolvida em uma comunicação multimídia pode ser garantida de forma independente.

Sdes

Descrições de segurança do SDP para fluxos de mídia (SDEs) foi a opção anteriormente favorecida por WebRTC.

Nas SDEs, os parâmetros de segurança e as chaves usados ​​para configurar sessões SRTP são trocadas em texto claro na forma de atributos SDP. Como o SDP é comunicado sobre o plano de sinalização, se a criptografia não for adotada adicionalmente sobre tais mensagens de sinalização, um terceiro de espionagem pode obter as chaves para os dados criptografados do SDES. Em outras palavras, um outro protocolo de criptografia deve ser utilizado especificamente para a criptografia do plano de sinalização. Uma dessas opções para isso é usar TLS.

Garantir a sinalização e a mídia de forma independente, no entanto, pode levar à situação em que o usuário da mídia é diferente do usuário de sinalização (como nenhuma garantia é fornecida). Para fornecer esta garantia, é necessária uma ligação criptográfica. DTLS-SRTP é um desses mecanismos que fornece isso, mas SDES não.

Continua sendo fato que ainda hoje, a maioria do tráfego RTP nas redes VoIP não está garantida. De fato, a criptografia é um dos primeiros recursos que os clientes geralmente pedem aos fornecedores para remover para atender aos seus orçamentos. Quando protegidos, a maioria das implantações utiliza SDEs, que, como acabamos de mencionar, depende fortemente da segurança do plano de sinalização.

DTLS-SRTP

O DTLS-SRTP, por outro lado, troca teclas sobre o plano de mídia, em vez do plano de sinalização. A conseqüência de tal diferença é que um canal de mídia SRTP não precisa revelar as chaves de criptografia secreta através de uma troca de mensagens SDP, como é o caso dos SDEs.

A especificação WebRTC [9] afirma que as implementações do WebRTC são necessárias para oferecer suporte a DTLS-SRTP para gerenciamento de chaves. Além disso, é especificado o esquema padrão e preferido, e não há provisão para que outros esquemas de gerenciamento -chave sejam implementados. Em outras palavras, outros esquemas podem ou não ser suportados.

Se uma oferta ou “chamada” for recebida de um suporte de publicidade por pares para DTLS-SRTP e SDEs, o DTLS-SRTP deve ser selecionado-independentemente de a sinalização estar garantida ou não.

O debate

É geralmente aceito que o DTLS-SRTP deve ser a opção obrigatória e padrão para a criptografia de mídia webrtc. O que está sendo questionado é se outros mecanismos, ou seja, SDEs, devem ser utilizados para fornecer compatibilidade com versões anteriores.

Do ponto de vista da compatibilidade, o navegador Chrome do Google fornece suporte para SDES e DTLS-SRTP. O Firefox de Mozilla, por outro lado, implementa apenas o DTLS-SRTP.

4.3.5. Uma fraqueza no SRTP

SRTP apenas criptografa a carga útil dos pacotes RTP, não fornecendo criptografia para o cabeçalho. No entanto, o cabeçalho contém uma variedade de informações que podem ser desejáveis ​​para manter em segredo.

Uma dessas informações incluídas no cabeçalho RTP são os níveis de áudio dos dados de mídia contidos. Efetivamente, qualquer pessoa que possa ver os pacotes SRTP pode dizer se um usuário está falando ou não a qualquer momento. Embora o conteúdo da mídia permaneça em segredo para qualquer escuta, essa ainda é uma perspectiva assustadora. Por exemplo, as autoridades policiais podem determinar se um usuário está se comunicando com um bandido conhecido.

4.4. Autenticação de pares baseada na Web e gerenciamento de identidade

É desejável para um usuário poder verificar a identidade de seus colegas. EU.e. Um usuário naturalmente quer ter certeza de que está falando com a pessoa com quem acredita que está falando, e não um impostor.

Embora o servidor de sinalização possa ser capaz de reivindicar a identidade de um usuário, o próprio servidor de sinalização pode não (e para o caso de autenticação não deve) ser confiável. Precisamos ser capazes de executar a autenticação de nossos pares independentemente do servidor de sinalização. Isso pode ser possível através do uso de provedores de identidade.

Figura 4. Uma chamada com identidade baseada em IDP

Figura 4. Uma chamada com identidade baseada em IDP

Vários provedores de identidade baseados na Web (IDP) tornaram-se recentemente comuns na web, incluindo o Facebook Connect, BrowserID (de Mozilla), Oauth (pelo Twitter). O objetivo desses mecanismos é simplesmente verificar sua identidade com outros serviços/usuários, sob a autoridade do próprio provedor de identidade. Se um usuário tiver uma conta no Facebook, poderá usar o Facebook Connect, o IDP do Facebook para provar a outras pessoas que eles são quem eles dizem que estão no Facebook. Isso permite que os usuários vinculem sua autenticação em outros serviços a sua conta principal em um serviço “confiável”. Observe que, neste caso, o nível de “confiança” que um provedor de identidade possui é subjetivo ao usuário ou serviço do ponto final e geralmente está amplamente ligado à base de usuários e à reputação em toda a World Wide Web.

As implementações de cada IDP podem diferir devido ao desenvolvimento independente de diferentes empresas, em vez de serem baseadas em um padrão de código aberto, mas o princípio e a funcionalidade subjacentes permanecem essencialmente iguais. Os IDPs não fornecem autenticação para um servidor de sinalização; Em vez disso, eles fornecem autenticação para um usuário (e seu navegador durante o processo). O WebRTC também não coloca requisitos sobre quais serviços devem ser usados, e os utilizados são baseados na implementação do aplicativo da web.

Como o aplicativo da web (site de chamada) não está relacionado a esse processo de autenticação, é importante que o navegador gerem com segurança a entrada para o processo de autenticação e também exiba com segurança a saída no aplicativo da Web. Este processo não deve ser capaz de ser falsificado ou deturpado pelo aplicativo da web.

Figura 5. A operação de um provedor de identidade

Figura 5. A operação de um provedor de identidade

4.5. Privacidade da localização do IP

Um efeito colateral adverso do uso de gelo é que um colega pode aprender o endereço IP de alguém. Como os endereços IP são registrados publicamente com as autoridades globais, eles podem revelar detalhes como a localização de um determinado par. Isso pode naturalmente ter implicações negativas para um par, que eles desejariam evitar.

O WebRTC não foi projetado com a intenção de proteger um usuário de um site malicioso que deseja aprender essas informações. Normalmente, esse site aprenderá pelo menos o endereço reflexivo do servidor de um usuário em qualquer transação HTTP. Esconder o endereço IP do servidor exigiria algum tipo de mecanismo explícito de preservação de privacidade no cliente e está fora do escopo deste relatório.

No entanto, o WebRTC fornece vários mecanismos que se destinam a permitir que um aplicativo da web coopere com o usuário para ocultar o endereço IP do usuário do outro lado da chamada. Esses mecanismos serão detalhados por sua vez.

Uma implementação do WebRTC é necessária para fornecer um mecanismo para permitir que o JS suprime a negociação do gelo até que o usuário tenha decidido atender a chamada. Esta disposição auxilia os usuários finais a impedir que um colega aprenda seu endereço IP se eles optarem por não atender uma chamada. Isso tem o efeito colateral de esconder se um usuário está online ou não para seus pares.

A segunda disposição desse tipo é que qualquer implementação fornecerá um mecanismo para o javascript do aplicativo de chamada para indicar que apenas os candidatos devem ser usados. Isso pode impedir que um colega aprenda o endereço IP de alguém.

Além disso, existe um mecanismo para o aplicativo de chamada para reconfigurar uma chamada existente para adicionar candidatos que não. Tomados em conjunto com a disposição anterior, isso permite que a negociação do gelo comece imediatamente após uma notificação de chamada recebida, reduzindo assim o atraso, mas também evitando a divulgação do endereço IP do usuário até que eles tenham decidido responder. Isso permite que os usuários ocultem completamente seu endereço IP durante a duração da chamada.

4.6. Camada de sinalização

Como o protocolo de sinalização não é especificado pelo WebRTC, o mecanismo de criptografia obviamente depende do protocolo de sinalização escolhido. Devido à natureza relativamente aberta da segurança da sinalização, este relatório se concentrará e explicará brevemente o protocolo mais comum, SIP (Protocolo de Iniciação de Sessão).

O SIP é um padrão amplamente implementado usado na comunicação VoIP para configurar e derrubar chamadas telefônicas. No entanto, é um derivado de HTTP e SMTP – ambos são protocolos que são explorados regularmente. Como usa mensagens de texto simples para trocar informações, é viável para qualquer festa maliciosa tocar em uma rede e capturar mensagens SIP. Se um invasor puder ler as informações confidenciais de um usuário, ele poderá usar essas informações para falsificar o usuário. E se o invasor puder prosseguir para obter acesso à rede do operador, pode até ser possível para eles decifrarem o conteúdo da comunicação WebRTC. [14]

Como o SIP é enviado em texto claro, é trivial para um atacante determinado interceptar mensagens SIP. O que acontece a seguir é deixado para a imaginação do atacante, mas não é difícil imaginar uma eventualidade, pois o conteúdo do corpo ou cabeçalho da mensagem é adulterado. Se o atacante interceptar uma mensagem de convite, poderá mudar o cabeçalho do cabeçalho para refletir seu próprio endereço IP.

4.6.1. Vulnerabilidades SIP

O SIP é um protocolo de comunicação para sinalizar e controlar as sessões de comunicação multimídia e é frequentemente implementado em tecnologias VoIP para fins de configuração e derrubamento de chamadas telefônicas. Da mesma forma, pode ser usado em uma implementação do WebRTC para fins de sinalização, como uma das várias opções possíveis. No entanto, as mensagens SIP são frequentemente enviadas em texto simples. Como isso pode resultar naturalmente em vários possíveis vetores de ataque, faremos um exame mais detalhado dessa área.

Fluxo de gole

No processo de configuração de uma chamada, o navegador de um usuário (ou “agente do usuário”) se registra com um registrador central. Este registro é uma necessidade no VoIP tradicional, pois é necessário fornecer os meios para localizar e entrar em contato com uma parte remota.

Quando uma parte (Bob) deseja iniciar uma chamada, ele envia uma mensagem de convite por meio de um servidor de proxy central (este é o servidor de sinalização). O servidor é responsável por transmitir essas mensagens e fornecer os meios para localizar outros usuários. O servidor pode tentar várias medidas para localizar um usuário final durante esse processo de pesquisa, como a utilização de DNs.

Seqüestro de registro

O registro inicial do navegador é usado para anunciar o ponto de contato de um usuário e indica que o dispositivo de um usuário está aceitando chamadas. No entanto, o processo fornece um vetor para entidades maliciosas realizarem um ataque de “seqüestro de registro”.

A troca de mensagens de registro inclui um campo “Contato”, contendo o endereço IP do usuário. Sempre que o servidor de sinalização processa uma chamada recebida, o nome de usuário (ou número de telefone) é comparado com o endereço IP registrado e o convite é encaminhado de acordo. Esses registros são atualizados periodicamente, garantindo que os registros sejam mantidos recentes e atualizados.

Como as mensagens SIP são sempre enviadas em texto simples, pode ser trivial para um invasor interceptar e ler o conteúdo dessas mensagens de registro. Após a interceptação, uma ferramenta apropriada (como o gerador de mensagens Sivus) pode ser usada para gerar informações SIP semelhantes, mas com o verdadeiro endereço IP do usuário substituído pelo próprio atacante. O invasor só precisa desativar o usuário real e enviar essas informações periodicamente para desviar todas as chamadas que recebem para si mesmas.

There are a number of methods that an attacker could utilise to disable a legitimate user, including: – Performing a DoS attack against the user’s device – Deregistering the user (another attack which is not covered here) – Generating a registration race-condition, in which the attacker sends repeatedly REGISTER requests in a shorter timeframe (such as every 15 seconds) in order to override the legitimate user’s registration request. Tudo isso é riscos genuínos para os serviços de sinalização WebRTC.

Como a implementação do SIP não suporta a verificação da integridade do conteúdo da mensagem, os ataques de modificação e reprodução não são detectados e são um vetor de ataque viável. Esse ataque funciona mesmo que o servidor exija autenticação do registro do usuário, pois o invasor pode capturar, modificar e reproduzir mensagens conforme desejado, conforme desejado.

Este ataque pode ser suprimido implementando SIPs (SIP sobre TLS) e autenticação de solicitações e respostas SIP (que podem incluir proteção de integridade). De fato, o uso de SIPs e a autenticação das respostas podem suprimir muitos ataques associados, incluindo espionagem e representação de mensagens ou usuário.

Outros possíveis ataques

  • Ataque MITM
    • Se o invasor for capaz de interceptar as mensagens SIP iniciais, ele poderá realizar um ataque MITM.
    • Os pacotes capturados podem ser repetidos no servidor por uma festa maliciosa, fazendo com que o servidor ligue para o destino original de uma chamada. Em outras palavras, isso possivelmente assumiria a forma de uma segunda solicitação de chamada não solicitada, idêntica a uma que a parte já havia recebido. Embora um incômodo, o atacante não seria parte da chamada, pois suas informações de IP não seriam incluídas nos pacotes de sinalização.
    • Os servidores da Web não estão com estado, com cada solicitação servida em uma sessão separada (alivia a necessidade de autenticação continuamente). Cookies para autenticação, mas nada mais são do que um arquivo de dados que contém o ID da sessão. Esses cookies são enviados pelo servidor da web para o navegador após o acesso inicial.

    Criptografia

    Embora possa parecer que a sinalização fornece um ponto de vista particularmente tentador para os atacantes segmentarem, tudo não está perdido. Além dos fluxos de mídia, a camada de sinalização também pode ser criptografada. Uma dessas opções criptografadas é Onsip, que usa SIP sobre WebSockets seguros (WSS: // em vez de ws: //), com a conexão WebSocket criptografada por TLS.

    Embora fora do escopo deste relatório, outras tecnologias de sinalização podem usar o TLS da mesma forma para criptografar seu webSocket ou outro tráfego da web. Como em toda a criptografia, se o terceiro não conhece a chave de criptografia secreta, eles não conseguem ler o conteúdo de texto simples da comunicação. Isso ajuda a eliminar o risco de grande parte dos vetores de ataque acima, embora deva -se notar que o programador de aplicativos deve implementar especificamente o método de sinalização criptografada para que isso seja aplicável.

    4.7. Tópicos de segurança adicionais

    Ponto de vista da rede de telecomunicações

    Ao fornecer suporte ao WebRTC, uma rede de telecomunicações deve razoavelmente esperar não ser exposta ao aumento do risco de segurança. No entanto, dispositivos ou software nas mãos dos consumidores serão inevitavelmente comprometidos por festas maliciosas.

    Por esse motivo, todos os dados recebidos de fontes não confiáveis ​​(e.g. do consumidor/usuários) deve ser validado e a rede de telecomunicações deve assumir que quaisquer dados enviados ao cliente serão obtidos por fontes maliciosas.

    Ao adotar esses dois princípios, um provedor de telecomunicações deve se esforçar para fazer todas as tentativas razoáveis ​​de proteger o consumidor de seus próprios erros que podem comprometer seus próprios sistemas.

    Scripts de sites cruzados (XSS)

    O script entre sites é uma vulnerabilidade do tipo normalmente encontrada em aplicativos da web (como navegadores da web através de violações de segurança do navegador) que permitem que os atacantes injetem script do lado do cliente em páginas da web visualizadas por outros usuários. Uma vulnerabilidade de script entre sites pode ser usada pelos invasores para ignorar os controles de acesso, como a mesma política de origem.

    Seu efeito pode variar de um incômodo mesquinho a um risco significativo de segurança, dependendo da sensibilidade dos dados tratados pelo site vulnerável e da natureza de qualquer mitigação de segurança implementada pelo site’proprietário.

    Como espera -se que o método principal para acessar o WebRTC use os navegadores habilitados para HTML5, existem considerações de segurança específicas sobre seu uso como; Protegendo chaves e dados sensíveis de scripts cruzados ou ataques de domínio cruzado, uso da WebSocket, segurança do iframe e outros problemas. Como o software cliente será controlado pelo usuário e como o navegador não o faz, na maioria dos casos, executar em um ambiente protegido, há chances adicionais de que o cliente WebRTC se torne comprometido. Isso significa que todos os dados enviados ao cliente podem ser expostos.

    5. Comparação com tecnologias concorrentes/similares

    Um exame da segurança comparativa do WebRTC não faria sentido sem também considerar a segurança da competição. Felizmente para o WebRTC, a concorrência na arena de comunicação baseada na Web tem sua própria parcela de questões.

    Esta seção explorará os pontos fortes e fracos comparativos do WebRTC e de outras plataformas que oferecem funcionalidade RTC concorrente.

    Algumas plataformas que poderíamos explorar são as seguintes. As plataformas a serem exploradas ainda não foram escolhidas. (Para vir depois do primeiro rascunho.)

    Embora amplamente confiado, os processos de instalação adicionais podem representar uma barreira

    6. Práticas de design seguras

    Webrtc é construído para ser seguro. No entanto, mais do que apenas confiar cegamente na tecnologia subjacente, é uma boa ideia codificar conscientemente com a segurança em mente. Esta seção discutirá práticas de codificação que podem ser seguidas para garantir uma maior segurança sobre uma implementação de baunilha WebRTC. Em particular, essas práticas podem ser aplicáveis ​​às organizações que esperam lidar com informações confidenciais, e.g. Instituições bancárias, instituições de saúde ou informações corporativas confidenciais.

    Sinalização segura

    Como mencionado anteriormente, o WebRTC não impõe nenhuma restrição ao processo de sinalização, em vez de deixar o desenvolvedor para decidir sobre seu próprio método preferido. Embora isso permita um grau de flexibilidade que possa ter a implementação do WebRTC adaptada às necessidades do aplicativo, pode haver riscos associados a certos protocolos de sinalização.

    É aconselhável implementar um protocolo de sinalização que forneça segurança adicional, como criptografia do tráfego de sinalização. Por padrão, um processo de sinalização pode não incorporar nenhuma criptografia, que pode deixar o conteúdo de todas as mensagens de sinalização trocadas abertas para espionar. Aplicações com foco na segurança/confidencialidade devem, portanto, garantir que sua camada de sinalização seja implementada em um protocolo seguro, como SIPs, OpenSip, HTTPS ou WSS.

    Autenticação e monitoramento de pares

    Um aplicativo WebRTC básico requer apenas o ID de um usuário para executar uma chamada, sem autenticação realizada no ponto de vista do próprio serviço. Pode ser desejável exigir pré-registro ou autenticação antes que qualquer usuário possa participar de uma chamada. Entidades não autenticadas devem ser mantidas longe da sessão’s alcance, restringindo a acessibilidade a partes não confiáveis.

    Como as conexões de mídia são P2P, o conteúdo da mídia (canais de áudio e vídeo) são transmitidos entre pares diretamente em duplex completo. Assim, como o servidor de sinalização mantém o número de pares na comunicação, ele pode ser monitorado consistentemente para a adição de pares suspeitos em uma sessão de chamada. Se o número de colegas realmente apresentar no servidor de sinalização for mais do que o número de colegas interagindo na página do WebRTC, isso pode significar que alguém está escutando secretamente e deve ser encerrado do acesso à sessão por força.

    Solicitações de permissão

    É um comportamento notável que muitas vezes os usuários concordam com solicitações de permissão ou diálogos semelhantes sem ler conscientemente a mensagem. Isso representa o risco de conceder um aplicativo da web com permissões que não foram realmente pretendidas pelo usuário.

    Embora esse comportamento em si não possa ser facilmente tratado, uma solução pode ser definir claramente na página quais permissões o aplicativo solicitará. Tal aplicativo coloca a privacidade de um usuário na vanguarda.

    Homem no meio

    Na eventualidade que uma festa maliciosa consegue estabelecer um ataque MITM, normalmente não há uma solução fácil de descobrir ou lutar contra. Isso ocorre porque o ataque não tem aviso e a comunicação pode prosseguir normalmente. Se não estiver esperando esse ataque, o ataque provavelmente continuará despercebido.

    No entanto, ao monitorar o caminho da mídia regularmente sem relés suspeitos, podemos dar um pequeno passo para atenuar os ataques do MITM. Isso deve ser acoplado à sinalização criptografada, como mencionado acima.

    Compartilhamento de tela

    Um aplicativo que oferece qualquer grau de funcionalidade de compartilhamento de tela deve ter avisos para proteger o usuário. Como discutido anteriormente, um usuário pode não estar ciente da extensão da tela ser compartilhada. Esse problema deve voltar a um aplicativo adequadamente projetado para fornecer a essas informações apropriadas.

    Por exemplo, antes de iniciar o streaming de qualquer parte da tela, o usuário deve ser devidamente notificado e aconselhado a fechar qualquer tela que contenha informações confidenciais.

    Um fallback

    Como uma medida de fallback final, poderíamos nos aventurar até imaginar uma situação em que uma sessão de chamada ativa é comprometida por uma parte não autorizada. Se uma chamada for confirmada para ser comprometida dessa maneira, deve estar dentro do poder do servidor de aplicativos da Web, renderizando a página capaz do WebRTC para cortar a chamada.

    7. Conclusão

    Na era moderna de smartphones e dispositivos móveis, as pessoas estão se comunicando mais do que nunca, e de maneiras ainda mais pessoais do que já sabíamos antes. A criptografia, em particular. O resultado do qual tem sido um rápido aumento na desconfiança do usuário de tais organizações e exige armas na implementação de medidas de segurança muito aprimoradas. Todo o usuário final deseja saber que seus dados pessoais são mantidos privados sob controle.

    O WebRTC tem uma grande vantagem sobre a maioria dos serviços VoIP na área de segurança. Até agora, a maioria dos serviços normalmente tratava a segurança opcional, o que significa que a maioria dos usuários finais usa chamadas VoIP sem criptografia. As grandes corporações em particular são um culpado líder por isso, optando por economizar dinheiro com implementações mais baratas, em vez de considerar adequadamente seus usuários ou o valor dos dados que eles lidam. Mas como o WebRTC proíbe a comunicação não criptografada, os usuários podem ter certeza de que seus dados permanecem seguros e privados.

    Tendo sido projetado com a segurança em mente, o WebRTC aplica ou incentiva conceitos importantes de segurança em todas as áreas principais. Como tal, além de simplesmente ser construído seguro, incentiva os desenvolvedores do WebRTC a também levar sua segurança a sério.

    Como resultado desse forte foco na comunicação segura, o WebRTC é atualmente considerado por alguns como uma das soluções VoIP mais seguras por aí. A principal premissa de ter criptografia por padrão é que uma chamada é privada o tempo todo. Segurança e criptografia não são mais consideradas recursos opcionais. E para arredondar tudo, o WebRTC está disponível gratuitamente para todos, fornecendo uma estrutura tentadora e confiável para os desenvolvedores construirem seu próximo aplicativo.

    Em um futuro próximo, podemos esperar ver cada vez mais serviços de comunicação, proporcionando muito maior segurança para seus usuários. Mas, por enquanto, o WebRTC é um daqueles que estão liderando a acusação.

    8. Bibliografia

    2. Breve Introdução à API RTCPeerConnection .
    Rede de navegador de alto desempenho. Acessado em 2015-07-28.

    3. SDP para o WebRTC .
    ferramentas.IETF.org. Acessado em 2015-07-28.

    8. Ataque da semana: datagrama tls .
    blog.Engenharia de criptografia.com. Acessado em 2015-07-28.

    12. IETF-87 RTCWeb Agenda .
    ferramentas.IETF.org. Acessado em 2015-07-28.

    15. Segurança em uma rede SIP: Identificando ataques de rede .
    SearchUnifiedCommunications.TechTarget.com. Acessado em 2015-07-28.

    17. Segurança para aplicativos WebRTC .
    AltanaitElecom.WordPress.com. Acessado em 2015-07-28.

    18. Segurança do WebRTC .
    AltanaitElecom.WordPress.com. Acessado em 2015-07-28.

    SRTP usando o protocolo DTLS

    Para chamadas da SBC, você pode configurar o dispositivo para usar o protocolo de segurança da camada de transporte de datagrama (DTLS) para proteger o tráfego baseado em UDP (de acordo com a RFC 4347 e 6347) para entidades SIP específicas, usando perfis IP. O DTLS permite que os aplicativos baseados em datagrama se comuniquem de uma maneira projetada para evitar a escuta, adulteração ou falsificação de mensagens. O protocolo DTLS é baseado no protocolo TLS orientado para fluxo, fornecendo segurança semelhante. O dispositivo pode, portanto, se entrelaçar em ambientes mistos, onde uma rede pode exigir DTLs e o outro pode exigir descrições de segurança do protocolo de descrição da sessão (SDEs) ou mesmo RTP não seguras. O dispositivo suporta negociação DTLS para chamadas RTP para SRTP e SRTP para SRTP.

    O suporte ao DTLS é importante para implantações com o WebRTC. O WebRTC exige que os canais de mídia sejam criptografados por meio de DTLs para troca de chaves srtp. A negociação de teclas SRTP através do DTLS é feita durante o aperto de mão DTLS entre o cliente WebRTC e o par. Para mais informações sobre o WebRTC, consulte WebRTC.

    Em contraste com os SDEs, a criptografia de chave DTLS é feita no canal de mídia (UDP) e não sobre o canal de sinalização. Assim, o DTLS-SRTP é geralmente conhecido como “troca de chaves garantidas sobre a mídia”. O DTLS é semelhante ao TLS, mas atropela o UDP, enquanto o TLS está acima do TCP. Antes do aperto de mão DTLS, os pares trocam parâmetros DTLS (impressão digital e configuração) e tipos de algoritmo no corpo SDP das mensagens SIP trocadas por estabelecer a chamada (solicitação de convite e resposta). Os colegas participam de um aperto de mão DTLS, durante o qual trocam certificados. Esses certificados são usados ​​para derivar uma chave simétrica, usada para criptografar dados (SRTP) entre os pares. Um valor de hash calculado sobre o certificado é transportado no SDP usando o atributo ‘a = impressão digital’. No final do aperto de mão, cada lado verifica se o certificado que recebeu do outro lado se encaixa na impressão digital do SDP. Para indicar suporte ao DTLS, a oferta/resposta do SDP da mensagem SIP usa o atributo ‘a = configuração’. O valor do atributo ‘a = configuração: actPass’ é usado na oferta SDP pelo dispositivo. Isso indica que o dispositivo está disposto a ser um cliente (‘ato’) ou um servidor (‘passa’) no aperto de mão. O valor do atributo ‘a = configuração: ativo’ é usado na resposta do SDP pelo dispositivo. Isso significa que o dispositivo deseja ser o cliente (‘ativo’) no aperto de mão.

    A = Configuração: ActPass
    A = Impressão digital: SHA-1 \ 4A: AD: B9: B1: 3f: 82: 18: 3b: 54: 02: 12: df: 3e: 5d: 49: 6b: 19: e5: 7c: ab

    DTLS Cipher Suite reutiliza a suíte cifra TLS. O handshake DTLS é feito para cada nova chamada configurada para DTLS. Em outras palavras, diferentemente do TLS, onde a conexão permanece “aberta” para chamadas futuras, é necessária uma nova conexão DTLS para cada nova chamada. Observe que toda a autenticação e troca de chaves para proteger o tráfego da mídia são tratados no caminho da mídia através do DTLS. O caminho de sinalização é usado apenas para verificar as impressões digitais do certificado dos pares. As mensagens DTLS são multiplexadas nas mesmas portas usadas para a mídia.

    Para configurar DTLs:
    1. Na tabela de contexto do TLS (consulte Configurando os contextos de certificados TLS), configure um contexto TLS com a versão DTLS [TLSCONTEXTS_DTLSVERSION].
    2. Abra a tabela de grupos IP (consulte Configurando grupos IP) e, em seguida, para o grupo IP associado à entidade SIP, atribua o contexto TLS para DTLs, usando o parâmetro ‘Media TLS Context’ [ipgroup_dtlScontext].
    3. Abra a tabela de perfis IP (consulte Configurando os perfis de IP) e, em seguida, para o perfil IP associado à entidade SIP, configure o seguinte:
    Configure o parâmetro ‘SBC Media Security Mode’ [ipprofile_sbcmediasecuritybehavior] para proteger ou ambos .
    Configurar o parâmetro ‘Método de Segurança da Mídia’ [ipprofile_sbcmediasecuritymethod] para DTLS .
    Configure o parâmetro ‘rtcp mux’ [ipprofile_sbcrtcpmux] para suportado . A multiplexação é necessária, pois o aperto de mão DTLS é feito para a porta usada para RTP e, portanto, o RTCP e o RTP devem ser multiplexados na mesma porta.
    Configure o parâmetro de arquivo ini [sbcdtlsmtu] (ou comando cli configure voip> sbc configurações> sbc-dtls-mtu) para definir o tamanho máximo de transmissão (mtu) para o handshake de dtls.
    4. Configure o intervalo mínimo que o dispositivo aguarda entre a transmissão de pacotes DTLS no mesmo aperto de mão DTLS, usando o parâmetro de arquivo ini [dtlstimebetweentransmissions].
    O parâmetro ‘servidor cifra’ deve ser configurado para “tudo”.
    O dispositivo não suporta o encaminhamento de DTLs transparentemente entre os terminais.