NSA e o monitoramento dos EUA, parte 3: criptografia

No artigo da semana passada, falamos sobre como as agências de segurança podem facilmente ter acesso à maioria do tráfego de Internet, simplesmente capturando informações nas fibras óticas dos cabos submarinos que passam pelos EUA ou por países aliados. Porém, uma parte desse tráfego de dados é criptografado, o que dificulta essa captura. Nesse artigo, vamos então mostrar como funciona a criptografia, e o que eles podem fazer para conseguir ter acesso mesmo a esse tipo de tráfego.

Criptografia não é um assunto novo nem sequer limitado ao mundo da Internet. Na realidade, ela existe desde que o homem começou a usar a escrita, e teve a necessidade de registrar informações que queria que fossem entendidas somente por um grupo limitado de pessoas. No império Romano, por exemplo, era comum o envio de mensagens criptografadas tanto para as tropas em campo quanto entre os governantes de diferentes províncias.

Porém, incialmente as técnicas de criptografia eram baseadas em processos que utilizam rotinas de embaralhamento das letras ou tabelas de substituição para trocar as letras por outros símbolos. O que esses processos tinham em comum era que se você conhecesse o processo utilizado, poderia facilmente decodificar a mensagem, então o segredo estava no processo. Somente nas década de 40 e 50, é que as técnicas de criptografia começaram a ser estudadas mais à fundo pelos matemáticos, e o governo Americano começou a tratar a área como sendo de alta segurança, investindo em empresas como a NSA. Essa situação perdurou até a década de 70, quando foi publicado pelo governo americano o padrão DES (Data Encryption Standard), e posteriormente, com o trabalho de Whitfield Diffie e Martin Hellman, que iniciaram a pesquisa em sistemas de criptografia de chave pública, foi publicado o padrão RSA.

A principal diferença desse novo padrão é que o segredo não está mais no processo, e sim nas chaves criptográficas utilizadas. São baseados em matemática avançada, que vou abstrair completamente pois foge à capacidade dos reles mortais (incluindo a minha). O importante é sabermos que utilizam pares de chaves criptográficas complementares, calculadas utilizando números primos bem grandes, e garantem que o texto criptografado com uma das chaves pode ser lido somente utilizando a outra chave complementar. O processo de criptografia é público e conhecido por todos, mas sem a chave, não é possível decodificar o texto. Na realidade, é possível “adivinhar” a chave, gerando valores aleatórios sequenciais e tentando decodificar o texto utilizando cada um deles. Com muita sorte você pode acertar na primeira tentativa, ou levar milhares de anos tentando, de acordo com a quantidade de computadores disponíveis para essa tarefa e a capacidade de processamento deles. Esse processo de adivinhação da chave é chamado ataque de “força bruta”. Como a garantia da criptografia é baseada no tamanho das chaves, com o avanço das tecnologias ele foi sendo aumentado progressivamente, tendo começado com 64 bits, e hoje são recomendadas chaves de 2048 ou 4096 bits para serviços mais críticos.

Os algoritmos de criptografia também evoluíram desde então, pois foram encontradas falhas em sua matemática, que permitiria a identificação mais fácil das chaves. Sempre que isso ocorria, o problema era corrigido e novas versões de algoritmos eram desenvolvidas. O principal órgão responsável pelo desenvolvimento e publicação de novos algoritmos é o NIST (National Institute of Standards and Technology), que mantém inclusive concursos que premiam qualquer um que conseguir comprovar a quebra de um algoritmo de criptografia de forma mais rápida do que pela “força bruta”. Apesar de serem um órgão do governo americano, são muito abertos à comunidade civil de matemáticos especializados em criptografia, então seu trabalho pode ser considerado altamente confiável. Apesar disso, em 2007 o NIST foi acusado de publicar um novo padrão de criptografia que incorporava um componente “defeituoso” desenvolvido pela NSA, que poderia permitir a quebra das chaves criptográficas. Após muita pesquisa e discussão a respeito, e inclusive com revelações de Snowdeam reforçando essa hipótese, o novo padrão foi recolhido pelo NIST, e não está mais sendo utilizado hoje. Não se sabe ainda se houve má fé na elaboração do algoritmo, ou era realmente uma falha, o que seria uma feliz coincidência para eles. Mas o fato é que apesar disso, os algoritmos de criptografia existentes seguem relativamente confiáveis, pelo menos nas versões mais modernas e utilizando chaves criptográficas maiores do que 2048 bits.

Mas vamos entender então como funciona a criptografia: vimos que temos sempre um par de chaves similares e complementares. Para distingui-las, uma é chamada de chave pública, e a outra de chave privada. A ideia é guardar a sua chave privada a sete chaves, e divulgar a chave pública para todos. Então se alguém quer mandar uma mensagem criptografada para você, ele utiliza a chave pública que você disponibilizou para cifrar o texto, de forma que só você que possui a chave privada poderá decifrar o texto e ler a mensagem.

Alice envia a chave pública para Bob e guarda a chave privada

Bob cifra o texto com a chave pública de Alice e envia para ela.

Ela decifra o texto com a sua chave privada.

Esse tipo de criptografia é chamado de assimétrico, pois as chaves utilizadas para cifrar e decifrar o texto são diferentes. É a forma mais segura, mas também requer uma capacidade de processamento maior, por isso é utilizada para serviços de menor volume de dados como o envio de e-mails.

Quando você acessa um site com o protocolo HTTPS, como os dos bancos, existe uma outra forma de criptografia denominada TLS (Transport Layer Security), que funciona de uma forma um pouco diferente. Ao acessar o site pela primeira vez, é executado um processo chamado negociação TLS, que consiste em criar um canal criptografado utilizando criptografia assimétrica e depois gerar uma chave criptográfica temporária, que é transferida para o seu computador pelo canal seguro. Uma vez que você possua essa chave, a comunicação passa a ser feita utilizando criptografia simétrica, ou seja, a mesma chave é utilizada para cifrar e decifrar as mensagens. Como a criptografia simétrica utiliza cálculos mais simples e rápidos, os servidores ficam menos sobrecarregados. Claro que criptografia simétrica é mais fácil de ser quebrada, mas como ela é temporária e serve somente para aquele acesso, qualquer tipo de ataque precisa ser feito antes que você feche o seu browser, reduzindo a possibilidade e a sua utilidade para o atacante.

Agora que já sabemos como funciona a criptografia, podemos então entender o que são os certificados digitais. Além de conterem as chaves pública e privada, o certificado é um documento eletrônico que contém alguns dados sobre um sujeito, como o nome e CPF para um eCPF, ou a razão social e o CNPJ para um eCNPJ, ou ainda o endereço de um site para um certificado utilizado em servidores da Internet. O documento contém também uma assinatura digital, que é um código calculado utilizando os dados do certificado e a chave privada do emissor, e que como na criptografia, pode ser verificado utilizando a sua chave pública. A principal função dessa assinatura é garantir que os dados do certificado não serão alterados após a sua emissão. Com isso, um certificado configura uma cadeia de confiança, onde uma entidade raiz confiável garante a autenticidade dos dados de um outro certificado, que por sua vez pode garantir outros certificados que tenha emitido, e assim por diante.

Mas então, se a criptografia é relativamente confiável, como as agências de segurança podem ter acesso aos seus dados? Embora seja sempre possível um ataque do tipo “força bruta”, e existirem evidências de que diversos equipamentos especiais foram encomendados pela NSA especificamente para essa tarefa, existem algumas outras formas que podem ser utilizadas:

  • Muitos administradores de sistemas conhecem bem pouco sobre criptografia, e permitem que seus sistemas funcionem com erros de configuração, ou utilizando chaves pequenas e/ou algoritmos velhos e com vulnerabilidades conhecidas, que podem facilitar a quebra da chave privada. Uma vez que essa quebra seja alcançada para um site, a comunicação de todos os usuários com ele estará comprometida.
  • Quando você adquire um certificado digital, ele é gerado em uma entidade certificadora e entregue somente à você. Como vimos no primeiro artigo, se essa entidade certificadora for uma empresa americana, pode ter sido “convencida” pelo governo americano a manter e disponibilizar uma cópia do seu certificado. Não encontrei até agora nenhuma evidência de que isso tenha acontecido, mas depois de entendermos o que está sendo feito, não seria exatamente uma surpresa.
  • É evidente que qualquer tipo de criptografia feita pelas empresas americanas que já colaboram enviando informações para a NSA está naturalmente comprometida, pois provavelmente eles já forneceram previamente todas as chaves privadas. Então toda iniciativa de criptografia, como a anunciada recentemente pelo Yahoo!, é somente uma questão de marketing sem nenhum efeito real.
  • Outra forma de conseguir a chave privada de um site é através de ataques convencionais. Ao identificar um site como de interesse especial, podem ser lançados diversos ataques de hackers, para tentar invadir o sistema e descobrir a chave criptográfica. Como são comuns falhas na administração dos sistemas, esse ataque consegue obter sucesso em boa parte das vezes, e não é sequer percebido pois nada é alterado. Uma vez obtido o certificado, ele vai para o banco de dados da NSA, e passa a estar disponível para decifrar os dados de qualquer comunicação criptografada.
  • A forma de ataque mais eficiente para canais criptografados é o chamado “man in the middle”. Consiste basicamente em enganar o usuário, fingindo que ele está se comunicando com o site desejado, quando na realidade está se comunicando com o atacante, que por sua vez encaminha os dados para o site desejado e envia todas as respostas para o usuário. Então, do ponto de vista do usuário, parece que tudo está normal, mas o certificado que está sendo utilizado é o do atacante, que pode então decifrar e ter acesso a todos os dados. Essa é uma forma bastante complexa de ataque e possui implicações profundas na estrutura de resolução de nomes da Internet, e por isso vou deixar para falar dele com mais detalhes no próximo artigo.

Pelo que vimos até agora, apesar de existirem formas de quebrar a criptografia, essa é uma tarefa difícil, e que não pode ser feita em massa. Então pelas evidências que temos, isso é feito pela NSA somente para alvos ou sites de interesse especial, e não para todo o tráfego interceptado.

Proteger-se desse tipo de bisbilhotice não é muito fácil, mas partindo da premissa acima, utilizar um certificado digital eCPF ou eCNPJ, emitidos por uma certificador brasileira, com chaves de pelo menos 2048 bits já lhe dá um nível de proteção bastante razoável (a não ser que você seja um terrorista). Você pode utilizar esse certificado para trocar mensagens de e-mail ou arquivos com dados criptografados com outras pessoas, mas é claro que essas pessoas terão que possuir também certificados e utilizá-los, senão não adianta muito. Lembrando o processo de criptografia, para mandar uma mensagem cifrada para alguém você vai precisar da chave pública da pessoa, e para ela responder de forma cifrada ela vai precisar da sua chave pública. A obtenção das chaves públicas geralmente é feita de forma automática por seu programa de e-mail, mas normalmente para efetuar a criptografia precisamos lembrar de marcar essa opção na hora de enviar o e-mail, senão ele irá aberto. Então não adianta mandar criptografado se a pessoa responder de forma aberta (chamada de clear text) e com todo o histórico de encaminhamento da mensagem incluído.

Já quanto ao acesso a sites por HTTPS, não existe muita coisa a ser feita, pois dependemos da ação do administrador do sistema para termos alguma segurança. O que pode ser feito é avaliar os dados do certificado apresentado e verificar se são confiáveis, estão atualizados, dentro da validade e possuem padrões razoáveis de segurança. Ao verificar que um certificado possui algum problema, o browser nos avisa, mas a ação da maioria das pessoas é simplesmente ignorar o aviso e continuar acessando.

Se você possui ou administra um site, então é melhor perder algum tempo estudando mais à respeito, para garantir o mínimo de segurança. Procure utilizar sempre certificados com no mínimo 2048 bits, pelo menos com os algoritmos RSA, 3DES e SHA512, e principalmente, manter seus certificados seguros. Aliás, essa também é uma recomendação expressa para certificados pessoais: mantenha eles seguros, de preferência armazenados em dispositivos físicos (smart-cards), e protegidos com senhas fortes. Se você tem muita dificuldade em gravar senhas, uma forma relativamente segura e simples é anotá-las em um papel e guardá-lo. Como a grande maioria dos ataques vem pela Internet, isso lhe dá mais segurança do que utilizar um arquivo com as senhas.

Para aplicações ou atividades que exijam mais segurança, existe sempre o PGP (Pretty Good Privacy), um padrão aberto de criptografia criado por Phil Zimmermann em 1991, que é considerado como o calcanhar de Aquiles das agências de segurança, pois até hoje ninguém conseguiu quebrá-lo. Existem alguns programas de criptografia PGP que podem ser utilizados como clientes de e-mail, utilitários para a criptografia de arquivos ou mesmo de todo o seu disco, que podem lhe dar um nível de proteção próximo ao dos padrões de criptografia militares. O padrão PGP hoje é de propriedade da Symantec, que distribui o PGP Desktop. Porém, se você é paranoico com segurança, vai querer utilizar um programa comercial de uma empresa americana para a criptografia? Se a resposta for não, existe o projeto OpenPGP/GnuPG, baseado em código livre, e alguns aplicativos grátis que podem ser encontrados no site Cripto.info.

Por último, quero lembrar que uma das premissas da área de segurança é considerar sempre o custo/benefício. Se você vai mandar uma receita de bolo ou um convite para uma festa de aniversário por e-mail, não precisa mandar criptografado. Mas se você está discutindo detalhes do planejamento estratégico de sua empresa, trabalha como diplomata ou está efetuando transações financeiras, é uma boa prática e pode evitar muitos problemas. Além disso, lembre-se que uma das formas de virar um alvo preferencial da NSA é ser pego utilizando criptografia PGP constantemente, ou mesmo escrever artigos sobre ela. Ooops…

No próximo artigo vou abordar a estrutura de resolução de nomes da Internet, e como ela pode ser utilizada para interceptar tráfego criptografado, ou mesmo para controlar o que as pessoas estão fazendo na Internet.

Referências:

http://cartilha.cert.br/criptografia/

http://pt.wikipedia.org/wiki/Criptografia

http://pt.wikipedia.org/wiki/DES

http://en.wikipedia.org/wiki/Dual_EC_DRBG

http://pt.wikipedia.org/wiki/TLS

http://www.openpgp.org/

http://en.wikipedia.org/wiki/National_Institute_of_Standards_and_Technology

9 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

  1. Paranóia não, inteligência.

    Porém, se você é paranoico com segurança, vai querer utilizar um programa comercial de uma empresa americana para a criptografia?

    SOMENTE SOFTWARES LIVRES SÃO SEGUROS

    O governo dos EUA não liberam a comercialização de softwares de criptografia que eles não possam decodificar.

    Os softwares comerciais de criptografia permitem a quebra pela NSA mais facilmente.

    Lembrando que Zimmermann foi processado pelo governo dos EUA por ter publicado o seu trabalho:

    “Ele distribuiu uma versão gratuita do PGP, quando se sentiu ameaçado pela legislação do governo dos EUA que exigia a inclusão de Porta dos fundos em todos os produtos de criptografia desenvolvido dentro dos EUA. Seu sistema foi lançado mundialmente logo depois que ele lançou nos EUA, e então iniciou-se uma longa investigação criminal contra ele pelo Departamento de Justiça do Governo dos EUA, pela suposta violação das restrições à exportação. O Departamento de Justiça, posteriormente, retirou o processo contra Zimmermann, e a distribuição gratuita do PGP continuou ao redor do mundo. PGP acabou por se tornar um padrão IETF aberto (RFC 2440 ou OpenPGP).”

    http://pt.wikipedia.org/wiki/Hist%C3%B3ria_da_criptografia#Criptoan.C3.A1lise_moderna

     Em um workshop sobre informática, um técnico de segurança disse que, nessa área, “SOMENTE OS PARANÓICOS SOBREVIVEM”

     

    1. Mais ou menos

      Edson,

       

      Concordo em parte com você, mas acho que inteligência é usar os recursos certos para cada caso. A grande maioria das pessoas não tem a menor necessidade de preocupar-se com isso, pois as coisas que publica não tem nenhuma relevância para ninguém, mas independente disso, uma boa estratégia de resposta social seria todos começarem a utilizar PGP nas comunicações. Dessa forma eles não teriam como diferenciar o que é sensitivo do banal.

      Quanto ao software livre, vou falar disso no quinto artigo, mas a situação não é tão simples assim. Nem todo software livre é seguro, e nem todo software pago está comprometido. Mas vamos aguradar até lá…

       

      1. livre X fechado

        Nem todo software livre é seguro              Mas é possível descobrir se é seguro ou não!

         

        nem todo software pago está comprometido           IMPOSSÍVEL SABER!!!! 

        1. Eu digo entao:  esta sim.

          Eu digo entao:  esta sim.  Nao ta dando pra escrever mais na internet e nao vou explicar, mas TODO software pago esta comprometido sim, pelo simples expediente de chantagem do governo norte americano com a compania.

    1. Correto!

      Os tempos de anonimidade e privacidade na internet já se foram.

      É melhor se adaptar à situação atual, porquê ela não vai mudar.

      Como se diz em segurança, a única forma de manter seu computador seguro é desligar o cabo de rede….

  2. violação de cabos de fibra ótica.

    Nunca tinha ouvido falar em criptografia de 4096 bits. Sei que a Administração Clinton apoiou fortemente o uso de criptografia de 128 bits. Naquela época, um computador com processador 486 precisaria de uns dois mil anos para decifrar essa criptografia pela força bruta. Mesmo servidores com 4 processadores “hexacore” emulando 12 cores, num total de 48 cores virtuais, (processadores intel de 2011 pinos lançados em 2011)  teriam bastante dificuldade em decifrar criptografia de 128 bits. Até onde sei, os bancos brasileiros se utilizam de criptografia de 256 bits. Se o NSA consegue violar essa criptografia, qualquer grupo de hackers com uns cem membros de altíssimo nível, com supercomputadores montados, conseguiria violar a criptografia de bancos suíços ou instalados em algum paraíso fiscal. Isso (a violação) não me parece possível. O artigo está muito bem escrito, aprendi várias coisas, mas tenho uma dúvida fatal: Na época dos cabos submarinos de cobre, Os EUA espionaram a URSS simplesmente instalando “mordedores” nesses cabos. Todo condutor quando percorrido por uma corrente elétrica, cria um campo magnético perpendicular à passagem da corrente. Esses “mordedores” capturavam o campo magnético e a informação estava capturada. Claro, se criptografada, haveria mais trabalho, após a captura do sinal, descobrir como se deu a criptografia. Mas nos atuais, em cabos de fibra ótica, até onde sei, é impossível ler os sinais. O autor confirma que há possibilidade de se violar o sinal num cabo de fibra ótica? Como isso é feito? Obrigado. (em teoria, seria preciso cortar o cabo, crimpar um “Y”, remendá-lo para capturar o sinal. Mas seria uma bandeira incrível, algo como instalar uma escuta clandestina na nossa casa do tamanho de uma TV de 40 polegadas).

    1. Tapping de fibras óticas

      É possível sim, até onde sei. Existe um aparelho que encurva a fibra e derrete a cobertura, expondo o miolo e permitindo que a luz seja projetada para fora da fibra. Com isso, um receptor ótico especial instalado ao lado consegue receber os sinais de luz.Não sei se funciona com os novos padrões de WDM (Wavelength-division multiplexing), que multiplexa os sinais em frequências diferentes, conseguindo criar até 64 canais lógicos em uma única fibra. Como aumenta muito a precisão e qualquer deflexão inviabiliza a leitura, pode ser que não funcione. De qualquer forma, já imaginou a logistica para fazer isso no fundo do mar, com cabos de dezenas de fibras?

      Mas o maior problema para mim não é interceptar os sinais, mas sim o que fazer com eles. Para poder ter acesso aos dados, teria que ser instalada um outro cabo com a mesma capacidade para levar os sinais até uma estação de processamento, e isso significa uma logistíca imensa, além da grande possibilidade de ser descoberto.

      Além disso, li em algum lugar que mesmo esse equipamento especializado ainda provoca uma um desvio de frequência que pode ser detectado, denunciando o processo.

      Também podem ser usada criptografia forte (PGP) nas duas pontas do cabo, garantindo que não possa haver interceptação. isso adicionaria uma pouco de delay, mas não mudaria a alrgura de banda, ou seja, a capacidade de transmissão.

      No artigo anterior eu falei disso: http://www.jornalggn.com.br/blog/jluizberg/nsa-e-o-monitoramento-dos-eua-parte-2-inspecionando-o-trafego

       

  3. José Luiz Berg, conheci sua

    José Luiz Berg, conheci sua série de artigos somente agora. Gostei bastante da sua iniciativa, e aguardo ansioso pelo próximo artigo.

Você pode fazer o Jornal GGN ser cada vez melhor.

Apoie e faça parte desta caminhada para que ele se torne um veículo cada vez mais respeitado e forte.

Seja um apoiador