Off-the-Record Messaging

Off-the-Record Messaging (OTR) é um protocolo de criptografia que fornece a encriptação de conversas de mensagens instantâneas. O OTR usa uma combinação de algoritmo AES de chave simétrica com chave de 128 bits de comprimento, o grupo Diffie–Hellman de troca de chaves com tamanho de 1536 bits e a função hash SHA-1. Além de autenticação e criptografia, o OTR proporciona sigilo e criptografia maleável.

libotr
Desenvolvedor Development Team
Versão estável 4.1.1 (9 de abril de 2016; há 7 anos)
Escrito em C
Sistema operacional Cross-platform
Gênero(s) Criptografia, Biblioteca de Programa
Licença LGPL v2.1+[1]
Estado do desenvolvimento Corrente

A motivação principal por trás do protocolo foi fornecer autenticação negável para os participantes de conversação, mantendo conversas confidenciais, como uma conversa privada na vida real, ou desativar o registro em fonte (jornalismo). Isto está em contraste com ferramentas de criptografia que produzem uma saída, que pode ser usada mais tarde como um certificado de registro de evento de comunicação e as identidades dos participantes. Seu slogan inicial era "Comunicação Off-the-Record", ou "Por que Não Usar o PGP".[2]

O protocolo OTR foi projetado pelos criptógrafos Ian Goldberg e Nikita Borisov e lançado em 26 de outubro de 2004.[3] Eles fornecem um biblioteca de cliente para facilitar o suporte para desenvolvedores de cliente de mensagens instantâneas que desejam implementar o protocolo. Existe um plug-in para Pidgin e Kopete, que permite usar o OTR em qualquer protocolo de IM nesses clientes, oferecendo uma autodetecção de função, que inicia a sessão OTR com os amigos que tem ativado, sem interferir com as conversas não criptografada regulares.

História editar

O OTR foi apresentado em 2004 por Nikita Borisov, Ian Avrum Goldberg e Eric A. Brewer como uma melhoria sobre o OpenPGP e o sistema S/MIME no "Workshop sobre Privacidade na Sociedade Electrónica" (WPES).[2] A primeira versão 0.8.0 da implementação de referência foi publicada em 21 de novembro de 2004. Em 2005, uma análise foi apresentada por Mario Di Raimondo, Rosario Gennaro e Hugo Krawczyk, que chamou a atenção para diversas vulnerabilidades e propostas de correções apropriadas, nomeadamente, incluindo uma falha na troca de chaves.[4] Como resultado, a versão 2 do protocolo OTR foi publicada em 2005, que implementa uma variação da proposta de modificação, que também esconde as chaves públicas. Além disso, a possibilidade de fragmento de mensagens OTR foi introduzida a fim de lidar com sistemas de chat que têm limitações de tamanho de mensagem; e um método mais simples de verificação contra os ataques man-in-the-middle foi implementado.[5]

Em 2007, Olivier Goffart publicou o mod_otr[6] para ejabberd, tornando-se possível realizar ataques man-in-the-middle em usuários OTR que não verificam a chave de impressões digitais. Os desenvolvedores do OTR anularam este ataque, introduzindo o "protocolo do socialista milionário", implementado em libotr. Em vez de realizar a verificação por comparação de soma de chaves, o conhecimento de um segredo arbitrário compartilhado pode ser utilizado, para o qual uma entropia relativamente baixa pode ser tolerada, usando o "protocolo do socialista milionário".[7]

A versão 3 do protocolo foi publicada em 2012, como uma medida contra o reestabelecimento repetido de uma sessão, no caso de vários clientes de bate-papo concorrentes serem acessados no mesmo endereço do usuário, ao mesmo tempo. A identificação mais precisa de etiquetas para envio e recebimento de instâncias de cliente foi introduzida na versão 3. Além disso, uma chave adicional é negociada, o que pode ser usado para outro canal de dados.[8]

Muitas soluções têm sido propostas para suportar conversações com múltiplos participantes. Um método proposto em 2007 por Jiang Bian, Remzi Seker e Umit Topaloglu usa o sistema de um participante como um "servidor virtual".[9] O método chamado Multi-party Off-the-Record Messaging (mpOTR), que foi publicado em 2009, funciona sem um gerente anfitrião central; e foi introduzido no Cryptocat por Ian Goldberg et al..[10] Em 2013, o Protocolo Signal foi introduzido, que é baseado no OTR Messaging e no Silent Circle Instant Messaging Protocol (SCIMP). Ele trouxe suporte para comunicação assíncrona ("mensagens offline") como sua maior característica nova, tão boa quanto a melhor resiliência, com mensagens de ordem distorcida e suporte mais simples para conversação com múltiplos participantes.[11] OMEMO introduziu em um cliente XMPP para Android, chamado Conversations, em 2015, integra o algoritmo Double Ratchet, usado no Signal, no protocolo XMPP (Jabber) de mensageiro instantâneo; e também habilita a criptografia de transferência de arquivos. No outono (do hemisfério norte) de 2015, foi submetido à XMPP Standards Foundation para padronização.[12][13]

Implementação editar

Além de prover criptografia e autenticação — características também fornecidas por suítes de chave-pública típicas, tais como PGP, GnuPG, e X.509 (S/MIME) — o OTR também oferece algumas características menos comuns:

  • Forward secrecy: Mensagens são criptografadas somente com chaves AES temporárias por mensagem, negociadas usando o protocolo de troca de chaves Diffie-Hellman. O compromisso de qualquer chave de "criptografia de longa vida" não compromete qualquer conversa prévia, mesmo se um atacante tiver posse do texto cifrado.
  • Autenticação negável: Mensagens em uma conversa não tem assinaturas digitais; e depois que uma conversa está completa, qualquer um é apto a forjar uma mensagem para parecer ter vindo de um dos participantes da conversa, assegurando que é impossível provar que uma mensagem específica veio de uma pessoa específica. Dentro da conversa, o destinatário pode ter certeza que uma mensagem está vindo da pessoa que eles identificaram.

Autenticação editar

Como no OTR 3.1, o protocolo suporta autenticação mútua de usuários, usando um segredo compartilhado pelo "protocolo do socialista milionário". Esta característica torna possível para usuários verificar a identidade da parte remota; e evita um ataque man-in-the-middle, sem o inconveniente de comparar manualmente a public key fingerprints através de um canal externo.

Limitações editar

Devido a limitações do protocolo, o OTR não suporta bate-papos em grupos multiusuário a partir de 2009, mas isso pode ser implementado no futuro.[14] A partir da versão 3[8] da especificação do protocolo, uma chave simétrica extra é derivada durante as trocas de chaves autenticadas que podem ser usadas para comunicação segura (e.g., transferências de arquivos criptografados) sobre um canal diferente. O suporte para áudio ou vídeo criptografado não está nos planos (SRTP com ZRTP existe para esse propósito). Um projeto de produção de um protocolo para mensagens multi-party off-the-record (mpOTR) tem sido organizado pelo Cryptocat, eQualitie, e outros contribuintes, inclusive Ian Goldberg.[10][15]

Desde o protocolo OTR v3 (libotr 4.0.0) o plug-in suporta múltiplas conversas OTR com o mesmo friend conversations, que está logado em múltiplas localidades.[16]

Suporte a clientes editar

Nativo editar

Estes clientes suportam mensagens Off-the-Record out of the box.

Via plug-in editar

 
Autenticação Off-The-Record no Pidgin, usando o protocolo Socialist millionaires

Os seguintes clientes requerem um plug-in para usar mensagens Off-the-Record.

Não no Google Talk editar

Embora o Google Talk do Gmail use o termo off the record, as características não têm conexão com o protocolo de mensagens Off-the-Record descrito neste artigo, pois seus bate-papos não são criptografados do modo descrito acima - e poderia ser logado internamente pela Google, mesmo se não estiver acessível pelos usuários finais.[34][35]

Referências

  1. «Off-the-Record Messaging» 
  2. a b Nikita Borisov, Ian Goldberg, Eric Brewer (28 de outubro de 2004). «Off-the-Record Communication, or, Why Not To Use PGP» (PDF). Workshop on Privacy in the Electronic Society. Consultado em 6 de março de 2014 
  3. Ian Goldberg (26 de outubro de 2014). [OTR-users] Happy 10th anniversary!. Consultado em 27 de abril de 2015 
  4. Mario Di Raimondo; Rosario Gennaro; Hugo Krawczyk (2005). «Secure off-the-record messaging» (PDF). Association for Computing Machinery. Proceedings of the 2005 ACM workshop on Privacy in the electronic society: 81–89 
  5. «Off-the-Record Messaging Protocol version 2» 
  6. «mod_otr» 
  7. Chris Alexander; Ian Avrum Goldberg (fevereiro de 2007). «Improved User Authentication in Off-The-Record Messaging» (PDF). New York: Association for Computing Machinery. Proceedings of the 2007 ACM workshop on Privacy in electronic society: 41–47. doi:10.1145/1314333.1314340 
  8. a b «Off-the-Record Messaging Protocol version 3» 
  9. Jiang Bian; Remzi Seker; Umit Topaloglu (2007). Off-the-Record Instant Messaging for Group Conversation (PDF). IEEE International Conference on Information Reuse and Integration. IEEE. doi:10.1109/IRI.2007.4296601 
  10. a b Ian Avrum Goldberg; Berkant Ustaoğlu; Matthew D. Van Gundy; Hao Chen (2009). «Multi-party off-the-record messaging» (PDF). Association for Computing Machinery. Proceedings of the 16th ACM Computer and Communications Security Conference: 358–368. doi:10.1145/1653662.1653705 
  11. Nik Unger; Sergej Dechand; Joseph Bonneau; Sascha Fahl; Henning Perl; Ian Avrum Goldberg; Matthew Smith (2015). «SoK: Secure Messaging» (PDF). IEEE Computer Society's Technical Committee on Security and Privacy. Proceedings of the 2015 IEEE Symposium on Security and Privacy: 232–249 
  12. Straub, Andreas (25 de outubro de 2015). «OMEMO Encryption». XMPP Standards Foundation website. Consultado em 16 de janeiro de 2016. Arquivado do original em 29 de janeiro de 2016 
  13. Gultsch, Daniel (2 de setembro de 2015). «OMEMO Encrypted Jingle File Transfer». XMPP Standards Foundation website. Consultado em 16 de janeiro de 2016 
  14. Ian Goldberg (27 de maio de 2009). «multi-party OTR communications? (and other OTR details)». OTR-users mailing list 
  15. Nadim Kobeissi (1 de fevereiro de 2014). «mpOTR Project Plan». Cryptocat wiki on GitHub 
  16. Ian Goldberg (4 de setembro de 2012). «pidgin-otr and libotr 4.0.0 released!». OTR-announce mailing list 
  17. «OTR plugin in Gajim repo». Consultado em 26 de setembro de 2017. Arquivado do original em 6 de setembro de 2017 
  18. «OTR plugin at Gajim Wiki» 
  19. «BitlBee Wiki». Wiki.bitlbee.org. 25 de janeiro de 2014. Consultado em 15 de maio de 2014 
  20. «Kadu 1.0 Release Notes» 
  21. «kopete-otr in KDE for 4.1». Arquivado do original em 28 de março de 2008 
  22. «kopete-otr review request» 
  23. 0xd34df00d. «OTR Plugin». Github.com. Consultado em 6 de setembro de 2017 
  24. «Short description». Leechcraft.org. Consultado em 15 de maio de 2014 
  25. «source code». MCabber.com. 25 de outubro de 2013. Consultado em 15 de maio de 2014. Arquivado do original em 17 de maio de 2014 
  26. a b «OTR Plugin». Github.com. Consultado em 6 de setembro de 2017 
  27. «Psi+ snapshots». Github.com. Consultado em 6 de setembro de 2017 
  28. «irssi-otr / xchat-otr plugin» 
  29. «Miranda OTR Plugin» 
  30. «OTR plugin for Pidgin» 
  31. «Tkabber OTR Plugin». Consultado em 26 de setembro de 2017. Arquivado do original em 11 de março de 2014 
  32. «OTR plugin for WeeChat» 
  33. «TingPing/hexchat-otr». GitHub (em inglês). Consultado em 14 de março de 2017 
  34. «Chatting off the record - Talk Help» 
  35. «Google Talk - Privacy Policy» 

Leituras adicionais editar

Ligações externas editar