Sobre eficácia no uso de Criptografia
Debate sobre como o uso da Criptografia na web pode ou não funcionar conforme o esperado
Prof. Pedro Antonio Dourado de Rezende
Departamento de Ciência da Computação
Universidade de Brasília
Fevereiro de 2009
Entre 15 e 17 de janeiro de 2009, Rafael Rocha e o autor trocaram e-mails sobre como a Criptografia pode ser ou deixar de ser eficaz. Rafael autorizou a presente edição e publicação do debate que se seguiu.
email 1:
Rafael Rocha: Sou recém formado em Ciências da Computação e trabalho e milito no coletivo do Jornal Inverta, que luta contra o Neoliberalismo. ( http://www.inverta.org ). Cheguei a fazer uma entrevista com você em um Fórum Internacional Software Livre que depois utilizei numa matéria do jornal. Como eu sei que sua área é a criptografia, gostaria de perguntar-lhe sobre algumas dúvidas que venho tendo sobre as quais não encontrei muito material confiável. Não conheço nenhuma lista de discussão sobre o assunto.Existem algumas listas de discussão sobre criptografia em portugès, populadas por pesquisadores brasileiros da área, a maioria delas fechadas, com adesão por convite. Das listas com discursões abertas, conheço uma do Yahoo chamado Brasilcrypt, cujas mensagens estão disponíveis em http://tech.groups.yahoo.com/group/brasilcrypt/messages. Atualmente eu sigo apenas uma lista fechada, organizada pelo Gabinete de Segurança Institucional da Presidência da República.
Em relação à quebra da cifra na ausência ou desconhecimento de backdoors, replico aqui algo que postei a respeito na lista (fechada) do Instituto Brasileiro de Direito e Política de Informática (IBDI): existem métodos criptográficos (não todos) que não se dão a tentativas de quebra (sem a chave), seja com ordem judicial ou não, caso o método esteja corretamente implementado em ambiente sadio, por serem esses métodos nessas circunstâncias inquebráveis. Inquebráveis no sentido de que nenhuma quantidade de esforço computacional e combinatório será capaz de afastar a incerteza sobre qual dentre muitas possíveis decodificações é a correta.
RR: Sempre utilizei a criptografia de chave pública, primeiro o PGP e, desde que aderi ao Gnu/Linux e o GPG, principalmente na troca de emails com o plug in Enigmail do thunderbird. Tenho sido um divulgador dessas técnicas e incentivado movimentos sociais e movimentos de esquerda a utilizá-las. Sabemos hoje o grau de monitoramento que existe em nosso país, onde infelizmente os esbirros da época da ditadura seguem soltos e sabe-se lá como ainda manipulam a atuação social de vários grupos. Infelizmente esse é um dos resultados da derrota que sofremos que resultou nesta "transição planejada" à democracia...
Estudei um pouco a questão teórica de como esse sistema de criptografia funciona e entendi a impossibilidade computacional de descriptografar a mensagem em tempo útil com o poder computacional existente (creio que é um problema não resolvível em tempo polinomial). Porém, a desconfiança que sempre carregamos sobre o que é publicado e sobre o que os cientistas do capital realmente dominam, somado a dois fatos que foram amplamente divulgadas pela mídia (os tais hds do computador do Daniel Dantas, e o caso do suposto computador que pertencia ao Raul Reyes, responsável pelas negociações de paz na Colômbia que foi assassinado em um ataque ao Equador), aumentaram a minha apreensão a técnica em questão.
No primeiro caso, parece a justiça brasileira aguarda um representante da empresa que teria uma backdoor capaz de extrair os dados. No segundo caso, creio que trata-se de uma montagem, pois não há evidências de que o computador realmente estava lá (e como sobreviveu ao bombardeio...) e o próprio relatório forense da Interpol afirma que não há garantias de que esse computador não tenha sido modificado em seu translado (foi amplamente divulgado que as FARC usavam o PGP)...
Em relação ao caso do Daniel Dantas, é possível que os dados do HD apreendido com dados cifrados sejam recuperáveis caso o meliante estivesse usando um produto 'comercial', pois creio que tais produtos todos têm backdoors, donde a importância do código auditável e compilação no local de uso para as aplicações mais sensíveis.
Sobre o PGP, devido a natureza do negócio que agora o controla eu não apostaria na inexistencia de backdoor em instalações binárias. Sobre o GPG, se baixado de uma fonte e por canal seguros (Free Software Foundation), auditado e instalado em plataforma sadia, eu me inclinaria a acreditar na impossibilidade prática de sua quebra, ressalvadas as questões de praxe relativas às condições de contorno do seu uso..
RR: Somado a isso me recordo de uma notícia de que um pesquisador chinês havia avançado em provar que o problema dos números primos poderia ser um problema resolvível em tempo polinomial, e da recente quebra do hash que foi feita.
A quebra de vários algoritmos de hash que estavam, e em larga escala ainda estão, em uso (a saber, MD4, MD5 e SHA1) afeta esquemas de assinatura digital, mas não afetam diretamente os esquemas de cifragem para sigilo (afetam indiretamente, pela possibilidade da falsificação de certificados de chave pública). Para se livrar do risco de falsificação de assinatura via ataque à função de hash, deve-se, por enquanto, escolher um esquema que não usa esses algoritmos (um que use, por exemplo, o SHA256 ou algoritmos mais recentes, pós 2005).
O que uma pesquisadora chinesa descobriu foi a técnica de quebrar aqueles algorimos de hash; o pesquisador que teria provado que um certo problema dos números primos pode ser resolvido em tempo polinomial é indiano (ambos publicaram suas descobertas mais ou menos no mesmo tempo, em 2005, mas a chinesa publicou inicialmente em chines, pelo que seu trabalho só repercutiu mais recentemente, quando o publicou em ingles).
Em relação a "o problema dos números primos", existem na verdade dois problmas de numeros primos relacionados à criptografia de chaves públicas: o teste de primalidade, e a fatoração. O primeiro, consiste em testar se um numero dado é primo ou não, e o segundo, consiste em listar os fatores (divisores) primos de um número dado. O primeiro precisa ser resolvido para se gerar um par de chaves assimétricas (pública e privada), com resposta positiva para dois números aleatórios grandes. O segundo precisa ter solução inviável, para um dos componentes públicos (o módulo) de um par de chaves em uso.
Esses dois problemas têm, para o uso da criptografia assimétrica, natureza distinta. O primeiro tem resposta binária (sim/não), e o segundo tem resposta combinatória (no caso do módulo de um par de chaves do algoritmo RSA, são geralmente dois números primos); a solução do primeiro se destina a uma escolha aleatória, para formar um par de chaves, enquanto a solução do segundo se destina a uma descoberta determinística, para quebrar um par de chaves. Por causa desta natureza, o primeiro problema pode ser tratado como resolvível por algoritmo probabilistico, de um tipo chamado "monte carlo" (que seleciona números aleatórios sobre os quais se tem quase certeza de que sejam primos), enquanto o segundo problema, não pode ser assim tratado.
Algoritmos de complexidade polinomial para 'resolver' (probabilisticamente) o primeiro problema são conhecidos há décadas, e para resolver o segundo, até hoje nenhum algoritmo de complexidade polinomial é conhecido (seja determinístico ou probabilístico). É com base na existência de tais algoritmos para o primeiro problema, e na inexistência para o segundo problema, que a criptografia assimétrica vem sendo usada há 30 anos.
Até recentemente, para o primeiro problema só se conheciam algoritmos polinomiais do tipo monte carlo (probabilísticos). Há cerca de cinco anos atrás, um pesquisador indiano descobriu um algoritmo polinomial determinístico para o primeiro problema (teste de primalidade), conforme artigo publicado em 2005. O algoritmo nele descrito é conhecido por AKS, em homenagem e referência às iniciais dos autores deste artigo (ver, por exemplo, http://www.pedro.jmrezende.com.br/trabs/primal.htm).
Mas essa descoberta não afeta o uso da criptografia assimétrica, por dois motivos: O algoritmo determinístico descoberto pelo indiano é bem mais lento que os probabilísticos já conhecidos, e a certeza (da primalidade) que ele oferece (para a escolha de um par de chaves) nada agrega à segurança do algoritmo (antes do uso, um par de chaves é testado para se detectar se os supostos primos são falsos primos); o algoritmo determinístico para o primeiro problema não serve para resolver o segundo (pelo menos até agora ninguém soube dizer como
serviria).
email 2
RR: Acho que a dúvida que eu tinha deve ser a dúvida de muitos "paranóicos" como nós por aí... Acho importante inclusive a difusão dessas técnicas aos movimentos sociais, pois apesar do governo atual permitir um espaço para o avanço da organização dos movimentos populares, além de não ser um governo que confronte nossos irmãos latino-americanos em um caminho mais avançado, sabemos que certas estruturas agem de maneira autônoma, sempre sub-repticiamente para nossa desorganização. Me lembro de um texto do Phill Zimmerman (criador do PGP) onde ele argumentava que todas as mensagens deveriam ser criptografadas, pois só a informação de que há uma mensagem criptografada como algo não usual já significa uma possível análise do fluxo de informações pelo inimigo (o senhor esta de acordo?) Não encontrei a chave do senhor no site.Com todo o respeito e admiração pelo Phill Zimmerman, permito-me discordar desse argumento a ele atribuído. Se eu o entendi corretamente, a lógica do argumento seria a seguinte: quem vive de bisbilhotar, legalmente ou não, fluxos de dados na web é atiçado ao perceber que alguém está usando criptografia para sigilo, tornando esses usuários alvos preferenciais pelo que poderiam estar escondendo. Sendo assim, se todos a usassem, os bisbilhoteiros não teriam mais sua atenção atraída pelo simples fato de alguém estar usando criptografia para sigilo.
Lembro que o Zimmerman, apesar de distribuir abertamente o código fonte da primeira versão do PGP, e com direitos de uso deste código irrestritamente cedidos, negociou a versão posterior do programa inicialmente com uma empresa na qual ele tinha participação acionária, de nome Viacript, o que poderia justificar sua inclinação a favor de um argumento capaz de impulsionar o faturamento desta. Enquanto nós, que não temos participação em empresa distribuidora de produtos criptográficos, podemos examinar o argumento sob outros ângulos lógicos.
Concordo que o uso da criptografia para sigilo atiça a curiosidade de bisbilhoteiros de plantão. Também concordo que se todos a usassem, isso faria com que tal uso deixasse de ser motivo para chamar a atenção de bisbilhoteiros. Mas daí até a conclusão de que, por isso, todos deveriam usá-la, há um implícito encadeamento de premissas falseáveis. Bisbilhoteiros não deixariam de existir ou de agir por isso. Eles encontrariam outros motivos e formas de bisbilhotar. Eles estão na eterna corrida de gato-e-rato, atrás do que pode ter valor expresso em bits. Dentre os possíveis motivos para bisbilhotar, o mais forte continuaria sendo o de se ter o que esconder. E dentre as formas de bisbilhotar, a mais fácil (com transmissões cifradas) continuaria sendo a de invadir os computadores operados.
Além disso, enquanto alguns não usarem criptografia para sigilo em transmissões pessoais, em emails por exemplo, este uso continuará sendo um indício razoável do ter-o-que-esconder-de-alguém. Os bisbilhoteiros que agem como predadores intermediários, os que ocupam o nicho de mercado no crime organizado onde se joga a rede para ver o que cai, para oferecer o que se colhe a quem pagar mais, continuarão sendo atraídos por este indício. E se especializando cada vez mais nisso. Pessoalmente, enquanto me for possível prefiro não tratar ou transmitir digitalmente o que de minha parte merece sigilo. Por isso só uso chaves assimétricas em aula, para fins didáticos.
Coletivamente, considero também os que agem como predadores primários. Fornecedores de TI que, a pretexto de proteger seu negócio, bisbilhotam através de backdoors por eles instalados em seus produtos, respeitosamente apelidados DRM. Quanto mais usuários se valerem da criptografia para sigilo, mais esses fornecedores terão o mercado (negro) de tráfego de dados de clientes potencialmente valorizado. Sem falar na pressão para se associarem ao Estado, em troca de uma lavagem nesse negócio que respeitosamente o rebatiza de "combate ao cibercrime". Assim, mesmo -- ou principalmente -- como professor, prefiro não estimular o uso da criptografia além do necessário.
A paranóia é, para a segurança digital, como o sal é para o cozinheiro. Quando é pouca, quem precisa se proteger ou proteger seus clientes vira mané. Quando é muita, emperra em demasia a intermediação tecnológica e solapa a confiança de quem depende da sua proteção. O nível saudável de paranóia para a segurança digital se ajusta com uma combinação de conhecimento, experiência, intuição e tato para avaliar riscos e relações custo/benefício. O leigo, que costuma ter menos dos dois primeiros, tende por isso a avaliar a paranóia do especialista como exagerada. Seria para vender seu peixe? Pode ser, ou não. A dúvida faz parte.
Na esfera digital, a maior dificuldade para se obter segurança está na dificuldade de se distinguir o acidental do intencional. O leigo, ou o profissional no limite de sua competência, intui que a incompetência (alheia) é sempre causa mais plausível de obscuros incidentes do que alguma má intenção. A incompetência, ele sabe, é como o ar. Mas quando estiver propenso a entender, ele pode ser lembrado de que a má fé é como a água. A incompetência, como o ar, ocupa todo o espaço disponível, enquanto a má fé, como a água, segue sempre pelo caminho de menor resistência.