O Protocolo Signal (anteriormente conhecido como Protocolo TextSecure) é um protocolo criptográfico não federado que pode ser usado para fornecer criptografia de ponta a ponta para chamadas de voz, chamadas de vídeo[1] e conversas de mensagens instantâneas.[2] O protocolo foi desenvolvido pela Open Whisper Systems em 2013[2] e foi introduzido pela primeira vez no aplicativo TextSecure de código aberto, que mais tarde se tornou o Signal. Vários aplicativos de código fechado afirmam ter implementado o protocolo, como o WhatsApp, que diz criptografar as conversas de "mais de um bilhão de pessoas em todo o mundo".[3] O Facebook Messenger também afirma oferecer o protocolo para conversas secretas opcionais, assim como o Skype para suas conversas privadas.

O protocolo combina o algoritmo de Double Ratchet, pré-chaves e um aperto de mãos (handshake) Diffie–Hellman de curva elíptica triplo (3-DH),[4] e usa Curve25519, AES-256 e HMAC-SHA256 como primitivas.[5]

História editar

O desenvolvimento do protocolo Signal foi iniciado por Trevor Perrin e Moxie Marlinspike (Open Whisper Systems) em 2013. A primeira versão do protocolo, TextSecure v1, foi baseada em Off-the-Record Messaging (OTR).[6][7]

Em 24 de fevereiro de 2014, a Open Whisper Systems lançou o TextSecure v2,[8] que migrou para o Axolotl Ratchet.[6][9] O design do Axolotl Ratchet é baseado na troca de chave efêmera que foi introduzida pelo OTR e a combina com uma catraca de chave simétrica modelada após o Silent Circle Instant Messaging Protocol (SCIMP).[10] Trouxe suporte para comunicação assíncrona ("mensagens offline") como sua grande novidade, bem como melhor resiliência com ordem distorcida de mensagens e suporte mais simples para conversas com múltiplos participantes.[11] A Axolotl Ratchet foi nomeada em homenagem à salamandra aquática Axolotl, criticamente ameaçada de extinção, que possui extraordinárias capacidades de autocura. Os desenvolvedores se referem ao algoritmo como autocorretivo porque ele impede automaticamente que um invasor acesse o texto não criptografado de mensagens posteriores após ter comprometido uma chave de sessão.[10]

A terceira versão do protocolo, TextSecure v3, fez algumas alterações nas primitivas criptográficas e no protocolo de cabeamento.[6] Em outubro de 2014, pesquisadores da Universidade de Ruhr de Bochum publicaram uma análise do TextSecure v3.[5][6] Entre outras descobertas, eles apresentaram um ataque de compartilhamento de chave desconhecido ao protocolo, mas, em geral, descobriram que era seguro.[12]

Em março de 2016, os desenvolvedores renomearam o protocolo como protocolo Signal. Eles também renomearam Axolotl Ratchet como algoritmo Double Ratchet para melhor diferenciar entre a catraca e o protocolo completo[13] porque alguns usaram o nome Axolotl ao se referir ao protocolo completo.[13][14]

Em outubro de 2016, o protocolo Signal era baseado no TextSecure v3, mas com mudanças criptográficas adicionais.[6] Em outubro de 2016, pesquisadores da Universidade de Oxford do Reino Unido, da Universidade de Tecnologia de Queensland da Australia, e da Universidade de McMaster do Canadá publicaram uma análise formal do protocolo, concluindo que ele é criptograficamente sólido.[15][16]

Outra auditoria do protocolo foi publicada em 2017.[17]

Propriedades editar

O protocolo fornece confidencialidade, integridade, autenticação, consistência de participantes, validação de destino, confidencialidade persistente, segurança pós-comprometimento (também conhecido como sigilo futuro), preservação de causalidade, desvinculação de mensagens, repúdio de mensagem, repúdio de participação e assincronicidade.[18] Não fornece preservação do anonimato e requer servidores para a retransmissão de mensagens e armazenamento de material de chave pública.[18]

O protocolo Signal também oferece suporte a bate-papos em grupo criptografados de ponta a ponta. O protocolo de chat em grupo é uma combinação de dupla catraca par a par e criptografia multicast.[18] Além das propriedades fornecidas pelo protocolo de um para um, o protocolo de chat em grupo fornece consistência do locutor, resiliência fora de ordem, resiliência de mensagem perdida, igualdade computacional, igualdade de confiança, mensagens de subgrupo, bem como associação expansível e contratável.[18]

Autenticação editar

Para autenticação, os usuários podem comparar manualmente as impressões digitais da chave pública por meio de um canal externo.[19] Isso possibilita que os usuários verifiquem as identidades uns dos outros e evitem um ataque man-in-the-middle.[19] Uma implementação também pode optar por empregar um mecanismo de confiança no primeiro uso para notificar os usuários se a chave de um correspondente for alterada.[19]

Metadados editar

O protocolo Signal não impede que uma empresa retenha informações sobre quando e com quem os usuários se comunicam.[20][21] Pode então haver diferenças em como os provedores de serviço de mensagens escolhem lidar com essas informações. A política de privacidade do Signal afirma que os identificadores dos destinatários são mantidos nos servidores do Signal apenas pelo tempo necessário para transmitir cada mensagem.[22] Em junho de 2016, Moxie Marlinspike disse ao The Intercept: "a informação mais próxima aos metadados que o servidor do Signal armazena é a última vez que cada usuário se conectou ao servidor, e a precisão dessas informações se reduz ao dia, e não a hora, minuto e segundo."[21]

Em outubro de 2018, o Signal Messenger anunciou que implementou um recurso de "remetente selado" no Signal, que reduz a quantidade de metadados aos quais os servidores do Signal têm acesso, ocultando o identificador do remetente.[23][24] A identidade do remetente é transmitida ao destinatário em cada mensagem, mas é criptografada com uma chave que o servidor não possui.[24] Isso é feito automaticamente se o remetente estiver nos contatos do destinatário ou se tiver acesso ao seu perfil do Signal.[24] Os usuários também podem habilitar a opção de receber mensagens de "remetente selado" de pessoas que não são contatos e que não têm acesso ao seu perfil do Signal.[24] Um grampo contemporâneo do dispositivo do usuário e/ou dos servidores do Signal ainda poderia revelar que o endereço IP do dispositivo acessou um servidor do Signal para enviar ou receber mensagens em determinados momentos.[23]

Uso editar

A Open Whisper Systems apresentou o protocolo pela primeira vez em seu aplicativo TextSecure. Mais tarde, eles mesclaram um aplicativo de chamada de voz criptografado chamado RedPhone no aplicativo TextSecure e o renomearam como Signal. O RedPhone usava ZRTP para criptografar suas chamadas. Em março de 2017, o Signal fez a transição para um novo sistema de chamadas baseado em WebRTC,[1] que também introduziu a capacidade de fazer chamadas de vídeo.[25] O novo sistema de chamadas do Signal usa o protocolo Signal para a criptografia de ponta a ponta.[1]

Em novembro de 2014, a Open Whisper Systems anunciou uma parceria com o WhatsApp para fornecer criptografia de ponta a ponta, incorporando o protocolo Signal em cada plataforma cliente WhatsApp.[26] A Open Whisper Systems disse que o protocolo já havia sido incorporado no cliente mais recente do WhatsApp para Android e que o suporte para outros clientes, mensagens de grupo/mídia e verificação de chaves viriam logo em seguida.[27] Em 5 de abril de 2016, o WhatsApp e a Open Whisper Systems anunciaram que terminaram de adicionar a criptografia de ponta a ponta a "todas as formas de comunicação" no WhatsApp e que os usuários agora podem verificar as chaves uns dos outros.[28][29] Em fevereiro de 2017, o WhatsApp anunciou um novo recurso, o WhatsApp Status, que usa o protocolo Signal para proteger seu conteúdo.[30] Em outubro de 2016 o Facebook, empresa controladora do WhatsApp, também implantou um modo opcional chamado Conversas Secretas no Facebook Messenger, que fornece criptografia de ponta a ponta usando uma implementação do protocolo Signal.[31][32][33][34]

Em setembro de 2015, a G Data Software lançou um novo aplicativo de mensagens chamado Secure Chat que usava o protocolo Signal.[35][36] A G Data descontinuou o serviço em maio de 2018.[37]

Em setembro de 2016, o Google lançou um novo aplicativo de mensagens chamado Allo, que apresentava um modo de navegação anônima opcional que usava o protocolo Signal para a criptografia de ponta a ponta.[38][39] Em março de 2019, o Google descontinuou o Allo em favor do aplicativo Mensagens no Android.[40][41] Em novembro de 2020, o Google anunciou que usaria o protocolo Signal para fornecer criptografia de ponta a ponta por padrão para todas as conversas baseadas em RCS entre usuários de seu aplicativo de mensagens, começando com conversas de um-para-um.[42][43]

Em janeiro de 2018, a Open Whisper Systems e a Microsoft anunciaram a adição do suporte ao protocolo Signal para um modo opcional do Skype chamado de conversas privadas.[44][45]

Influência editar

O protocolo Signal teve influência em outros protocolos criptográficos. Em maio de 2016, o Viber disse que seu protocolo de criptografia é uma implementação personalizada que "usa os mesmos conceitos" do protocolo Signal.[46][47] Os desenvolvedores do Forsta disseram que seu aplicativo usa uma implementação personalizada do protocolo Signal.[48][49]

O algoritmo de Double Ratchet que foi introduzido como parte do protocolo Signal também foi adotado por outros protocolos. O OMEMO é um protocolo de extensão do XMPP (XEP) que foi introduzido no aplicativo de mensagens Conversations e aprovado pela XMPP Standards Foundation (XSF) em dezembro de 2016 como XEP-0384.[2][50] O Matrix é um protocolo de comunicação aberto que inclui Olm, uma biblioteca que fornece criptografia de ponta a ponta opcional em uma base de sala para sala por meio de uma implementação de algoritmo Double Ratchet.[2] Os desenvolvedores do Wire disseram que seu aplicativo usa uma implementação personalizada do algoritmo de Double Ratchet.[51][52][53]

Implementações editar

O Signal Messenger mantém as seguintes bibliotecas do protocolo Signal sob a licença GPLv3 no GitHub:

Também existem bibliotecas alternativas escritas por terceiros em outras linguagens, como TypeScript.[54]

Referências editar

  1. a b c Marlinspike, Moxie (14 de fevereiro de 2017). «Video calls for Signal now in public beta». Signal Blog. Open Whisper Systems. Consultado em 7 de abril de 2017. Cópia arquivada em 15 de março de 2017 
  2. a b c d Ermoshina, Ksenia; Musiani, Francesca; Halpin, Harry (setembro de 2016). «End-to-End Encrypted Messaging Protocols: An Overview». In: Bagnoli, Franco; et al. Internet Science. INSCI 2016. Florence, Italy: Springer. pp. 244–254. ISBN 978-3-319-45982-0. doi:10.1007/978-3-319-45982-0_22 
  3. «Moxie Marlinspike - 40 under 40». Fortune. Time Inc. 2016. Consultado em 22 de setembro de 2016. Cópia arquivada em 3 de fevereiro de 2017 
  4. Unger et al. 2015, p. 241
  5. a b Frosch et al. 2016
  6. a b c d e Cohn-Gordon et al. 2016, p. 2
  7. «Protocol». Open Whisper Systems. 2 de março de 2014. Consultado em 28 de outubro de 2016. Cópia arquivada em 7 de janeiro de 2015 – via GitHub 
  8. Donohue, Brian (24 de fevereiro de 2014). «TextSecure Sheds SMS in Latest Version». Threatpost. Consultado em 14 de julho de 2016. Cópia arquivada em 15 de fevereiro de 2017 
  9. «ProtocolV2». Open Whisper Systems. 2 de março de 2014. Consultado em 28 de outubro de 2016. Cópia arquivada em 15 de outubro de 2014 – via GitHub 
  10. a b Marlinspike, Moxie (26 de novembro de 2013). «Advanced cryptographic ratcheting». Signal Blog. Open Whisper Systems. Consultado em 23 de setembro de 2016. Cópia arquivada em 24 de março de 2017 
  11. Unger et al. 2015
  12. Pauli, Darren (3 de novembro de 2014). «Auditors find encrypted chat client TextSecure is secure». The Register. Consultado em 4 de novembro de 2014. Cópia arquivada em 4 de novembro de 2014 
  13. a b Marlinspike, Moxie (30 de março de 2016). «Signal on the outside, Signal on the inside». Signal Blog. Open Whisper Systems. Consultado em 9 de abril de 2016. Cópia arquivada em 28 de dezembro de 2016 
  14. Cohn-Gordon et al. 2016, p. 1
  15. Brook, Chris (10 de novembro de 2016). «Signal Audit Reveals Protocol Cryptographically Sound». Threatpost. Kaspersky Lab. Consultado em 11 de novembro de 2016. Cópia arquivada em 14 de fevereiro de 2017 
  16. Cohn-Gordon et al. 2016
  17. N. Kobeissi; K. Bhargavan; B. Blanchet (2017). «Automated verification for secure messaging protocols and their implementations: A symbolic and computational approach». 2017 IEEE European Symposium on Security and Privacy (EuroS&P) (PDF). [S.l.: s.n.] pp. 435–450. ISBN 978-1-5090-5762-7. doi:10.1109/EuroSP.2017.38. Consultado em 29 de agosto de 2020. Cópia arquivada (PDF) em 24 de julho de 2018 
  18. a b c d Unger et al. 2015, p. 239
  19. a b c Rottermanner et al. 2015, p. 5
  20. Rottermanner et al. 2015, p. 4
  21. a b Lee, Micah (22 de junho de 2016). «Battle of the Secure Messaging Apps: How Signal Beats WhatsApp». The Intercept. Consultado em 8 de outubro de 2016. Cópia arquivada em 19 de fevereiro de 2017 
  22. «Privacy Policy». Open Whisper Systems. N.d. Consultado em 8 de outubro de 2016. Cópia arquivada em 29 de abril de 2017 
  23. a b Dan Goodin (30 de outubro de 2018). «New Signal privacy feature removes sender ID from metadata». Ars Technica. Consultado em 28 de março de 2019. Cópia arquivada em 28 de março de 2019 
  24. a b c d Lund, Joshua (29 de outubro de 2018). «Technology preview: Sealed sender for Signal». signal.org. Signal Messenger. Consultado em 16 de abril de 2019. Cópia arquivada em 24 de novembro de 2018 
  25. Marlinspike, Moxie (13 de março de 2017). «Video calls for Signal out of beta». Signal Blog. Open Whisper Systems. Consultado em 7 de abril de 2017. Cópia arquivada em 15 de março de 2017 
  26. Evans, Jon (18 de novembro de 2014). «WhatsApp Partners With Open Whisper Systems To End-To-End Encrypt Billions Of Messages A Day». TechCrunch. Consultado em 14 de março de 2016. Cópia arquivada em 18 de novembro de 2014 
  27. Marlinspike, Moxie (18 de novembro de 2014). «Open Whisper Systems partners with WhatsApp to provide end-to-end encryption». Open Whisper Systems. Consultado em 14 de março de 2016. Cópia arquivada em 18 de novembro de 2014 
  28. Metz, Cade (5 de abril de 2016). «Forget Apple vs. the FBI: WhatsApp Just Switched on Encryption for a Billion People». Wired. Consultado em 5 de abril de 2016. Cópia arquivada em 5 de abril de 2016 
  29. Lomas, Natasha (5 de abril de 2016). «WhatsApp completes end-to-end encryption rollout». TechCrunch. Consultado em 5 de abril de 2016. Cópia arquivada em 6 de abril de 2016 
  30. «WhatsApp Status». WhatsApp. Facebook. 20 de fevereiro de 2017. Consultado em 23 de fevereiro de 2017. Cópia arquivada em 23 de fevereiro de 2017 
  31. Isaac, Mike (8 de julho de 2016). «Facebook to Add 'Secret Conversations' to Messenger App». The New York Times. Consultado em 12 de julho de 2016. Cópia arquivada em 12 de julho de 2016 
  32. «Messenger Starts Testing End-to-End Encryption with Secret Conversations». Facebook. 8 de julho de 2016. Consultado em 11 de janeiro de 2018. Cópia arquivada em 12 de janeiro de 2018 
  33. Greenberg, Andy (8 de julho de 2016). «'Secret Conversations:' End-to-End Encryption Comes to Facebook Messenger». Wired. Consultado em 12 de julho de 2016. Cópia arquivada em 11 de julho de 2016 
  34. Greenberg, Andy (4 de outubro de 2016). «You Can All Finally Encrypt Facebook Messenger, So Do It». Wired. Consultado em 5 de outubro de 2016. Cópia arquivada em 15 de abril de 2017 
  35. Seals, Tara (17 de setembro de 2015). «G DATA Adds Encryption for Secure Mobile Chat». Infosecurity Magazine. Consultado em 14 de julho de 2016. Cópia arquivada em 22 de julho de 2016 
  36. «SecureChat». G Data. Consultado em 14 de julho de 2016. Cópia arquivada em 7 de maio de 2017 – via GitHub 
  37. «G DATA Secure Chat wird eingestellt» (em alemão). G DATA Software AG. 18 de maio de 2018. Consultado em 26 de abril de 2019. Cópia arquivada em 26 de abril de 2019 
  38. Greenberg, Andy (18 de maio de 2016). «With Allo and Duo, Google Finally Encrypts Conversations End-to-End». Wired. Consultado em 18 de maio de 2016. Cópia arquivada em 2 de fevereiro de 2017 
  39. Gibbs, Samuel (21 de setembro de 2016). «Google launches WhatsApp competitor Allo – with Google Assistant». The Guardian. Consultado em 21 de setembro de 2016. Cópia arquivada em 7 de janeiro de 2019 
  40. Porter, Jon (12 de março de 2019). «Google is finally saying goodbye to Allo today». The Verge. Vox Media. Consultado em 26 de abril de 2019. Cópia arquivada em 12 de março de 2019 
  41. Klainer, Matt (5 de dezembro de 2018). «The latest on Messages, Allo, Duo and Hangouts». Consultado em 26 de abril de 2019. Cópia arquivada em 13 de abril de 2019 
  42. Bohn, Dieter (19 de novembro de 2020). «Google is rolling out end-to-end encryption for RCS in Android Messages beta». The Verge. Vox Media, Inc. Consultado em 28 de novembro de 2020 
  43. Omara, Emad (novembro de 2020). «Messages End-to-End Encryption Overview» (PDF). gstatic.com. Google. Consultado em 28 de novembro de 2020 
  44. Newman, Lily Hay (11 de janeiro de 2018). «Skype's Rolling Out End-to-End Encryption For Hundreds of Millions of People». Wired. Consultado em 13 de janeiro de 2018. Cópia arquivada em 12 de janeiro de 2018 
  45. Lund, Joshua (11 de janeiro de 2018). «Signal partners with Microsoft to bring end-to-end encryption to Skype». Signal Blog. Open Whisper Systems. Consultado em 13 de janeiro de 2018. Cópia arquivada em 2 de fevereiro de 2020 
  46. «Viber Encryption Overview». Viber. 3 de maio de 2016. Consultado em 8 de julho de 2017. Cópia arquivada em 11 de julho de 2016 
  47. Eyal, Ofir (3 de maio de 2016). «Canada, Germany and Australia are getting e2e encryption». Viber. Consultado em 9 de outubro de 2016. Cópia arquivada em 5 de outubro de 2016 
  48. u/tooker. «r/crypto - Forsta - Signal based messaging platform for enterprises». reddit (em inglês). Consultado em 6 de fevereiro de 2019. Cópia arquivada em 2 de maio de 2018 
  49. «ForstaLabs/libsignal-node». GitHub (em inglês). Forsta Inc. 3 de fevereiro de 2019. Consultado em 6 de fevereiro de 2019. Cópia arquivada em 13 de junho de 2018 
  50. Andreas Straub (7 de dezembro de 2016). «XEP-0384: OMEMO Encryption». XMPP Standards Foundation website. Consultado em 28 de abril de 2017. Cópia arquivada em 25 de fevereiro de 2017 
  51. «Add attribution». GitHub. Wire Swiss GmbH. 9 de maio de 2016. Consultado em 9 de outubro de 2016. Cópia arquivada em 7 de maio de 2017 
  52. «Wire Security Whitepaper» (PDF). Wire Swiss GmbH. 3 de março de 2016. Consultado em 7 de fevereiro de 2019. Cópia arquivada (PDF) em 10 de setembro de 2018 
  53. Lomas, Natasha (16 de dezembro de 2016). «Encrypted messaging app Wire adds usernames so you can limit what you share with contacts». TechCrunch. Verizon Media. Consultado em 8 de fevereiro de 2019. Cópia arquivada em 9 de fevereiro de 2019 
  54. Privacy Research, LLC. «libsignal-protocol-typescript». github.com. Consultado em 28 de novembro de 2020 

Literatura editar

Ligações externas editar