Title: Convergence e Monkeysphere: chaves para gestão SSL distribuída Author: Silvio Generator: S9 %css body { font-family: monospace; } .centered img { display: block; margin-left: auto; margin-right: auto; } .centered { text-align: center; } %end Convergence e Monkeysphere: chaves para gestão SSL distribuída - Co0l - Ed. 2 ============================================================================= Duas alternativas viáveis para substituir ou complementar o atual cartel das Autoridades Certificadoras utilizadas na pilha SSL/TLS. Propósito ========= De 2008 até o momento, foram reveladas falhas fundamentais em vários protocolos básicos da internet: - DNS: [Dan Kaminsky Discovers Fundamental Issue In DNS](https://lwn.net/Articles/289138) ([análise](http://www.unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html)) - BGP: [The Internet’s Biggest Security Hole](http://www.wired.com/threatlevel/2008/08/how-to-intercep/) - SSL: [Várias brechas](https://links.sarava.org/tags/ssl) Estamos falando principalmente de falhas de especificação e não de implementação ou DoS, o que é muito mais difícil de mitigar. SSL: Breve histórico ==================== Pontos principais de um protocolo seguro: 1. Sigilo: a informação não será lida por terceiros. 2. Integridade: a informação não será adulterada. 3. Autenticidade: os pontos da comunicação serão verificados. 4. Disponibilidade: proteção a DoS, etc. 5. Anonimato. SSL: Breve histórico (cont) =========================== No [caso do SSL/TLS](https://techmeet.sarava.org/uploads/Agenda/SSL_For_Activists.pdf): 1. Sigilo: - Criptografia usando chaves assimétricas. - Troca de chaves: RSA or Diffie-Hellman (usem DHE!) 2. Integridade: MAC Digest (hash) 3. Autenticidade: Certificados SSL === - Encapsulamento de outros protocolos - CipherSuite e Perfect Forward Secrecy - Revogação (CRL / OCSP) - Autoridades Certificadoras (CAs) - Ataques: - [SSL Computational DoS (THC)](http://www.thc.org/thc-ssl-dos/) - [Hashclash (MD5)](http://www.win.tue.nl/hashclash/rogue-ca/) - [BEAST](https://wiki.koumbit.net/BeastSecurityAssessment) - [LittleBlackBox](https://code.google.com/p/littleblackbox/): chaves padrões em dispositivos embarcados! - [sslsnif](http://www.thoughtcrime.org/software/sslsniff) Autoridades certificadoras ========================== - Sistema PKI em x509 (ITU-T - 1998): atrela uma chave pública a um nome (domínio, email, etc) - Árvore hierárquica de certificação - 2009: [Relatório da Netcraft](https://ssl.netcraft.com/ssl-sample-report) - 2010: Verisign: operação de CA vendida por US$1.28 bi para a Symantec - "Two big to fail" Netcraft (2009) =============== <div class="centered" markdown="1"> ![Netcraft - Linha do Tempo](images/netcraft-ssl-timeline.png) ![Netcraft - Fatias do Bolo](images/netcraft-ssl-pizza.png) </div> Como me torno uma autoridade certificadora? =========================================== Depende dos processos de inclusão - Pelo fabricante da aplicação ou biblioteca - Pelo distribuidor da aplicação ou biblioteca - O usuário pode incluir manualmente Quanto mais upstream for a inclusão, maior a ubiquidade. Certificados não-instalados são considerados como autoassinados. - Exemplo: o caso do http://www.cacert.org, uma CA Comunitária - Mozilla: https://www.mozilla.org/projects/security/certs/included/ - ICP-Brasil: http://www.iti.gov.br CA: Procedimentos ================= - Mozilla - https://wiki.mozilla.org/CA:How_to_apply - Opera - http://www.opera.com/docs/ca/ - M$ - http://technet.microsoft.com/en-us/library/cc751157.aspx (desatualizado) - Safari - https://www.apple.com/certificateauthority/ca_program.html - Chromium - [NSS](http://code.google.com/p/chromium/wiki/LinuxCertManagement) (GNU/Linux) CA: Em geral ============ - Há pouca transparência na relação entre CAs e fabricantes de software - Sem gestão multissetorial - Admins de instituições pequenas não tem outra escolha senão utilizar esses CAs - As CAs são confiadas exatamente por serem CAs. Onde está a abertura das auditorias? Obtenção de um certificado assinado =================================== ________ | | ___| CA |--. / |________| \ 2 ^ | : 1 | | 3 v ____|____ v __________ | | | | | | Admin |__/ | Servidor | |_________| |__________| Situação atual ============== The authenticity of host 'foo.example.org (192.0.2.3)' can't be established. RSA key fingerprint is 17:f4:2b:22:90:d4:98:9a:a2:c5:95:4e:4a:89:be:90. Are you sure you want to continue connecting (yes/no)? - Vocês checam seus fingerprints (OpenPGP, SSH e OpenSSL)? - Maus hábitos de sysadmins geram falsa sensação de segurança - Usabilidade: Bypass da tela de "conexão não-confiável" Evidências de cooperação ======================== - [Certified Lies: Detecting and Defeating Government Interception Attacks Against SSL](http://web.monkeysphere.info/news/CA_Cooperation_with_Governments/): _evidence that CAs may be cooperating with government agencies to help them spy undetected on "secure" encrypted communications_ - [Man-in-the-Middle Attacks Against SSL](https://www.schneier.com/blog/archives/2010/04/man-in-the-midd_2.html): _a new attack, the compelled certificate creation attack, in which government agencies compel a certificate authority to issue false SSL certificates that are then used by intelligence agencies to covertly intercept and hijack individuals' secure Web-based communications._ Casos reais =========== % "Crime maior do que roubar uma CA é fundar uma CA" - Bertold Brecha - [Comodogate](http://it.slashdot.org/story/08/12/23/0046258): mail.google.com, addons.mozilla.org, login.skype.com, etc. - [DigiNotar](http://www.f-secure.com/weblog/archives/00002228.html): certificados falsos da CIA, MI6 e Mossad ([timeline](http://www.networking4all.com/en/ssl+certificates/ssl+news/time-line+for+the+diginotar+hack/)). - [The EFF SSL Observatory](https://www.eff.org/observatory) ([27c3](http://events.ccc.de/congress/2010/Fahrplan/events/4121.en.html)) - A situação é alarmante: basta apenas que um único CA seja comprometido para ruir toda a infraestrutura. - SSL não se aplica apenas a HTTPS: StartTLS/SMTPS/IMAPS/XMPP/VPN/etc também sofrem dessas vulnerabilidades. O que é preciso para interceptar conexão SSL? ============================================= 1. Certificado falso. 2. Meios efetivos de um MITM: - DNS poisoning apontando requisições para servidores maliciosos. - Redirecionamento de tráfego via BGP. - Acesso físico à rede. Conexão SSL ============ _______________ | | | CA (local) | |_______________| | ^ 3 ____|____ 2 __________ | |------<-------| | | Cliente | | Servidor | |_________|------>-------|__________| 1 MITM ==== ________ | | .->| MITM |-<. / |________| \ | | v v ____|____ ____|_____ | | | | | Cliente |---X----| Servidor | |_________| |__________| Mas o quanto disso é factível? ============================== - Oriente médio: - [The Internet's Secret Back Door: Web users in the United Arab Emirates have more to worry about than having just their BlackBerries cracked](http://www.slate.com/articles/technology/webhead/2010/08/the_internets_secret_back_door.html) (Cybertrust / Verizon) - [Iran's Web Spying Aided By Western Technology ](http://online.wsj.com/article/SB124562668777335653.html#mod=rss_whats_news_us) (Nokia-Siemens) - [Out of Egypt Censorship, US Tech Export Under Fire](http://yro.slashdot.org/story/11/02/11/1920258/Out-of-Egypt-Censorship-US-Tech-Export-Under-Fire) (Narus) - [A Syrian Man-In-The-Middle Attack against Facebook](https://www.eff.org/deeplinks/2011/05/syrian-man-middle-against-facebook) - EUA: [NSA warrantless surveillance controversy](https://en.wikipedia.org/wiki/NSA_warrantless_surveillance_controversy / https://en.wikipedia.org/wiki/Hepting_v._AT%26T) - Brasil: [Massive DNS poisoning attacks in Brazil](http://www.securelist.com/en/blog/208193214/Massive_DNS_poisoning_attacks_in_Brazil) Pequenos provedores até grandes porções da internet podem ser afetados. O ataque é o mesmo, variando apenas a capacidade do atacante. Mitigação ========= Recentemente foram propostas várias formas de mitigação: - [HTTP Strict Transport Security - HSTS](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) - [Certificate Patrol](https://addons.mozilla.org/pt-BR/firefox/addon/certificate-patrol/?src=search): muito útil porém sofre to problema de secure introduction (Trust On First Use/Persistence of Pseudonym - TOFU/POP). - [Certlock](https://code.google.com/p/certlock/) - IETF: - [Public Key Pinning Extension for HTTP](https://www.ietf.org/id/draft-evans-palmer-key-pinning-00.txt): também sofre do "problema de bootstrapping". - [DNSSEC/DANE](http://tools.ietf.org/html/draft-ietf-dane-protocol-12): aumenta ainda mais a centralidade do DNS e apenas muda o problema de lugar. - [CAA](https://tools.ietf.org/html/draft-hallambaker-donotissue-03) - [HASTLS](https://tools.ietf.org/html/draft-hoffman-server-has-tls-04) - [Sovereign Keys (EFF)](https://www.eff.org/deeplinks/2011/11/sovereign-keys-proposal-make-https-and-email-more-secure) - Google: - [Certificate Authority Transparency and Auditability](http://tech.slashdot.org/story/11/11/29/2226211/google-researchers-propose-plan-to-fix-ca-system) - [Google Certificate Catalog](http://googleonlinesecurity.blogspot.com/2011/04/improving-ssl-certificate-security.html) Alternativas? ============= - A grande questão é: abandonar o SSL hoje é uma opção que não depende apenas dos/as usuários, porém é importante considerar que _o modelo atual de certificação não é mandatório._ - Ao invés disso, o modelo de CAs pode ser _plugável_ e explorar características _locais_ e _globais._ http://convergence.io ===================== - [Add-on para firefox](http://convergence.io/releases/firefox/convergence-current.application=x-xpinstall) + daemon - Precedido pelo Perspectives (http://perspectives-project.org) - "Trust agility": usuário/a escolhe em quem confiar e por quanto tempo - Sistema notarial distribuído e robusto - Anônimo e com boa usabilidade - [BlackHat USA 2011: SSL And The Future Of Authenticity](https://www.youtube.com/watch?v=Z7Wl2FW2TcA) Funcionamento ============= _______________ 5 cert | |----<----. | Notary server | \ |_______________|---->---. \ | | 4 \ \ 6 v ^ 3 h+fp \ \ _|__|____ 2 cert __\__\____ | |------<-------| | | Cliente | | Servidor | |_________|------>-------|__________| 1 Constelação =========== ____ .-----<-| | | .-->-| N1 |< ___________|_|_ |____| \ | | ____ \ | Notary bounce |->-| | \ |_______________|-<-| N2 |<. \ | | |____| \ \ v ^ . \ \ | | . \ \ | | . \ \ v ^ ____ \ \ | | | | \ \ | | | Nn | \ . v ^ |____|-<-->. . | ___|__|__ _\__v_v___ | |------<----------| | | Cliente | | Servidor | |_________|------>----------|__________| Convergence: Problemas ====================== - Se o MITM estiver exatamente no provedor upstream, o Convergence pode não perceber - Mudanças de chaves - The Citibank Problem - Futuro: [TACK (Tethered Assertions for Certificate Keys)](https://github.com/moxie0/Convergence/wiki/TACK): similar às Chaves Soberanas da EFF http://web.monkeysphere.info ============================ - [Add-on pra firefox](https://addons.mozilla.org/pt-BR/firefox/addon/monkeysphere/?src=search) + agent + userland - Atrela a autenticação à identificações pessoais pela Web Of Trust - Também provê autorização I - Estabelecimento de confiança entre pessoas ============================================== Usuários e/ou admins trocam seus fingerprints OpenPGP. ________ ________ | |-->--| | | Admin | | User | |________|--<--|________| II - Assinatura de chave do servidor ==================================== ___________ | | | Keyserver | |___________| | ^ 3 ____|____ 2 __________ | |------<-------| | | Admin | | Servidor | |_________|------>-------|__________| 1 III - Conexão SSL ================= ___________ | | | Keyserver | |___________| | ^ 3 ____|____ 2 __________ | |------<-------| | | User | | Servidor | |_________|------>-------|__________| 1 Web of Trust ============ - Identificação. - Confiabilidade. - Mesmo que um usuário não tenha identificado um admin que assinou a chave de um servidor, confiabilidade ainda pode ser estabelecida por meios indiretos. Integração ========== - O Monkeysphere ainda é muito geeky porém oferece um nível de segurança muito mais alto para a verificação de certificados; o código está maduro porém é preciso muito mais desenvolvimento de UI e usabilidade, além de depender de uma grande WoT para ser eficaz. - O Convergence pode utilizar como backend o Monkeysphere, o que pode reduzir o problema do MITM upstream. Perspectivas ============ - A indústria sabe que o modelo de CAs está falido, mas ainda assim existe uma insistência em dizer que o problema são as "maçãs podres" ou o excesso de CAs. - Os fabricantes de navegadores tem peso maior na decisão, porém dificilmente farão mudanças bruscas uma vez que a internet hoje é muito dependente na infraestrutura de CAs. - A pluralidade de métodos e a _plugalidade_ (:P) de soluções podem _convergir_ num esquema de validação híbrido. - Conscientização do público é fundamental. Demonstrações ============= - Monkeysphere - Convergence Perguntas? ========= :)