Phil Zimmermann sobre PGP C

 

Este capítulo contém informações introdutórias e originais sobre criptografia e PGP, como escrito por Phil Zimmermann.

 

Por quê escrevi PGP

"Tudo que você fizer será insignificante, mas o importante é que você faça." - Mahatma Gandhi.

É pessoal. É particular. E não interessa a ninguém além de você. Você pode estar planejando uma campanha política, discutindo seus impostos, ou tendo um romance secreto. Ou você pode estar se comunicando com um dissidente político em um país repressor. Seja o que for, você não quer que sua correspondência eletrônica particular (email) ou documentos confidenciais sejam lidos por qualquer um. Não há nada de errado em reivindicar sua privacidade. Privacidade é tão importante quanto a Constituição.

O direito à privacidade está divulgado implicitamente através da Lei de Direitos. Mas quando a constituição dos Estados Unidos estava sendo criada, os fundadores não viram a necessidade de explicitamente afirmar o direito à uma conversa privada. Isso seria tolice. Duzentos anos atrás, todas as conversas eram privadas. Se alguém mais estivesse ao alcance da voz, você poderia simplesmente ir para trás do pátio e ter sua conversa lá. Ninguém poderia ouvir sem seu conhecimento. O direito à conversa privada era um direito natural, não apenas em um sentido filosófico, mas um sentido de lei da física, dada a tecnologia da época.

Mas com a chegada da era da informação, começando com a invenção do telefone, tudo isto mudou. Agora a maioria de nossas conversas é conduzida eletronicamente. Isto permite que nossas conversas mais íntimas estejam expostas sem nosso conhecimento. Chamadas de telefones celulares podem ser monitorados por qualquer um com um rádio. Correspondência eletrônica, enviada através da Internet, não é mais segura que um chamada de telefone celular. Email está rapidamente substituindo a correspondência postal, tornando-se norma para todos, não a novidade que era no passado. E email pode ser pesquisado de forma rotineira e automática por palavras-chave interessantes, em uma larga escala, sem detecção. É como pescaria com rede.

Talvez você ache que seu email é suficientemente legítimo e que a criptografia seja injustificável. Se você realmente é um cidadão obediente à lei e que não tem nada a esconder, então, por que você não envia sempre o conteúdo de suas correspondências em cartões postais? Por que não se submete a teste de drogas quando pedido? Por que pedir um mandato judicial para que a polícia entre em sua casa? Você está tentando esconder algo? Se você esconde sua correspondência dentro de envelopes, isto significa que você deve ser um subversivo ou um traficante, ou talvez um louco paranóico? Algum cidadão obediente à lei têm necessidade de criptografar seu email?

E se todo mundo acreditasse que os cidadãos obedientes à lei deveriam usar cartões postais para suas correspondências? Se algum não-conformista tentasse assegurar sua privacidade usando um envelope para sua correspondência, isto despertaria suspeitas. Talvez as autoridades abririam sua correspondência para ver o que ele está escondendo. Felizmente, não vivemos neste tipo de mundo, porque todos protegem a maioria de suas correspondências com envelopes. Assim, ninguém desperta suspeitas quando garante sua privacidade com um envelope. Há segurança nos números. De forma análoga, seria bom se todos habitualmente usassem a criptografia em todos os seus emails, inocentes ou não, de modo que ninguém levantasse suspeitas quando assegurasse sua privacidade de email com codificação. Pense nisso como uma forma de solidariedade.

Até agora, se o governo quisesse violar a privacidade de cidadãos comuns, teria que gastar uma certa quantia de dinheiro e trabalho para interceptar, abrir e ler correspondências em papel. Ou teria que ouvir e possivelmente transcrever conversas por telefone, ao menos antes da tecnologia de reconhecimento automático de voz estar disponível. Este tipo de monitoração trabalhosa não é prático em larga escala. Isto era feito somente em casos importantes quando parecia valer a pena.

A Lei 266 do Senado, uma lei anti-crime de 1991, tinha uma medida não muito clara escondida nela. Se esta resolução não obrigatória tivesse se tornado uma lei de verdade, teria forçado que fabricantes de equipamentos de comunicação segura a inserir "armadilhas" especiais em seus produtos, de forma que o governo pudesse ler mensagens criptografadas de qualquer pessoa. Esta lei diz: "É decisão do Congresso que fornecedores de serviços de comunicação eletrônica e fabricantes de equipamentos de serviço de comunicação eletrônica assegurem que os sistemas de comunicações permitam que o governo obtenha o conteúdo integral de voz, dados, e outras comunicações quando apropriadamente autorizados por lei". Foi esta medida que me levou a publicar eletronicamente PGP de forma gratuita naquele ano, pouco tempo após a medida ser anulada após vigorosos protestos de civis liberais e grupos industriais.

Em 1994 a Lei de Telefonia Digital ordenava que as companhias telefônicas instalassem portas de escuta remota em seus aparelhos digitais nos escritórios centrais, criando uma nova infra-estrutura tecnológica para "apontar-e-clicar" escutas, de forma que agentes federais não precisam mais sair e colocar presilhas ("jacarés") às linhas telefônicas. Agora eles podem sentar em seus escritórios centrais e escutar suas chamadas telefônicas. Claro, a lei ainda requer uma ordem da Corte para uma escuta. Mas enquanto a infra-estrutura tecnológica pode persistir por gerações, leis e polícias podem mudar do dia para a noite. Uma vez que uma infra-estrutura de comunicações otimizada para vigilância se torna entrincheirada, uma guinada nas condições políticas levar ao abuso deste novo poder. Condições políticas podem mudar com a eleição de um novo governo, ou mesmo de forma mais abrupta como o bombardeamento de um prédio federal.

Um ano após a Lei de Telefonia Digital passar, o FBI revelou planos de exigir às companhias telefônicas que construíssem em sua infra-estrutura a capacidade para monitorar simultaneamente 1 por cento de todos os telefonemas feitos em todas as principais cidades norte-americanas. Isto representaria um aumento superior a mil vezes sobre níveis anteriores no número de telefones que poderiam ser monitorados. Em anos anteriores, havia apenas cerca de mil monitoramentos ordenados pelos tribunais nos Estados Unidos por ano, em níveis federal, estadual e local combinados. É duro ver como o governo pode empregar suficientes juízes até mesmo para assinar ordens de monitoramento suficientes para monitorar 1 por cento de todos nossos telefonemas, muito menos contratar agentes federais suficientes para sentarem e escutar todo aquele tráfego em tempo real. O único modo plausível de processar essa quantidade de tráfego é um enorme aplicativo Orwelliano de tecnologia de reconhecimento de voz automatizado para peneirar tudo isso, procurar palavras-chave interessantes ou procura pela voz de um locutor em particular. Se o governo não acha seu alvo na primeira amostra de 1 por cento, o monitoramento pode ser alterado para outro 1 por cento diferente até o alvo ser achado, ou até a linha telefônica de todo mundo for verificada por tráfego subversivo. O FBI diz que eles precisam desta capacidade para planejar para o futuro. Este plano causou tal revolta que foi derrotado no Congresso, pelo menos desta vez, em 1995. Mas o mero fato do FBI ter pedido tais grandes poderes revela o programa de trabalho deles. E a derrota deste plano não é tão tranqüilizante assim, quando você considera que a Lei de Telefonia Digital de 1994 também foi derrotada na primeira vez em que foi introduzida, em 1993.

Avanços na tecnologia não irão permitir a manutenção deste status quo, ao menos ao quanto diz respeito à privacidade. O status quo é instável. Se não fazemos nada, novas tecnologias darão ao governo novas capacidades de vigilância automática que Stalin jamais teria sonhado. A única forma de manter a linha na privacidade na era da informação é a criptografia forte.

Você não precisa duvidar do governo se quer usar criptografia. Seus negócios podem ser monitorados por rivais nos negócios, crime organizado, ou governos estrangeiros. Diversos governos estrangeiros, por exemplo, admitem usar seus sinais de inteligência contra companhias de outros países para dar à suas próprias corporações uma margem competitiva. Ironicamente, as restrições do governo dos Estados Unidos à criptografia tem enfraquecido as defesas das corporações americanas contra inteligências estrangeiras e o crime organizado.

O governo sabe que regra central a criptografia está destinada a ter nas poderosas relações com seu povo. Em abril de 1993, a administração Clinton revelou uma nova e grande iniciativa política de codificação, que estava em desenvolvimento na Agência de Segurança Nacional, (National Security Agency - NSA) desde o início da administração Bush. A peça central desta iniciativa é um dispositivo de criptografia planejado pelo governo, chamado de chip "Clipper", contendo um novo algoritmo de criptografia secreto da NSA. O Governo tentou incentivar a indústria privada a projetá-lo em todos os seus produtos de comunicação segura, como telefones seguros, fax seguros etc. AT&T colocou "Clipper" em seus produtos de voz seguros. A tramóia: na hora da fabricação, cada chip Clipper é carregado com sua única chave própria, a qual o Governo terá uma cópia, que é colocada em juízo. Nada com o que se preocupar, porque o governo promete que usará estas chaves para ler seu tráfico apenas "quando devidamente autorizado por lei". Claro, para tornar "Clipper" completamente efetivo, o próximo passo lógico seria considerar ilegal outras formas de criptografia.

O governo inicialmente afirmou que o uso de "Clipper" seria voluntário, que ninguém seria forçado a usá-lo ao invés de outros tipos de criptografia. Mas a reação pública contra o chip "Clipper" tem sido forte, ainda mais forte que o governo antecipou. A indústria de computadores afirmou em uma só voz sua oposição contra o uso de "Clipper". O diretor do FBI Louis Freeh respondeu à uma pergunta em uma conferência da imprensa em 1994 dizendo que se "Clipper" falhasse em obter suporte do público, e os monitoramentos do FBI fossem terminados por criptografia não controlada pelo governo, seu escritório não teria escolha além de procurar auxílio legislativo. Mais tarde, na conseqüência da tragédia de Oklahoma City, o sr. Freeh testemunhou ao Comitê Judiciário do Senado que a disponibilidade pública de criptografia forte deveria ser reduzida pelo governo (embora ninguém houvesse sugerido que criptografia era usada pelos bombardeiros).

O Centro de Informações de Privacidade Eletrônica (Electronic Privacy Information Center - EPIC) obteve alguns documentos esclarecedores sob o Ato de Liberdade de Informação. Em um breve documento intitulado "Codificação: A Ameaça, Aplicações e Soluções Potenciais", e enviado ao Conselho de Segurança Nacional em fevereiro de 1993, o FBI, NSA, e o Departamento de Justiça (DOJ) concluíram que "soluções técnicas, como elas são, só funcionarão se elas estiverem incorporadas em todos os produtos de codificação. Para assegurar que isto aconteça, requer-se legislação que designe o uso de produtos de codificação aprovados pelo governo ou aderência à critérios de codificação governamental".

O governo tem um registro de passos que não inspira confiança em que eles nunca abusarão de nossas liberdades civis. O programa COINTELPRO do FBI tinha como alvo grupos que se opunham às políticas governamentais. Eles espiaram no movimento antibélico e o movimento de direitos civis. Eles grampearam o telefone de Martin Luther King Jr. Nixon teve sua lista de inimigos. E então houve a bagunça de Watergate. O congresso parece agora ter a intenção de votar leis que reduzem nossa liberdade civil na Internet. Em nenhum momento no século passado a desconfiança do público com o governo no espectro político tem sida tão amplamente distribuída, como é hoje.

Se nós quisermos resistir à esta obscura tendência do governo em proscrever a criptografia, uma medida que podemos aplicar é usar criptografia o máximo que pudermos agora enquanto ainda é legal. Quando o uso de criptografia forte se torna popular, é mais difícil para o governo criminalizá-la. Assim, o uso de PGP é bom para preservar a democracia.

Se privacidade for considerada ilegal, somente os criminosos terão privacidade. As agências de inteligência tem acesso a boa tecnologia criptográfica. Assim como os grandes traficantes de armas e drogas. Mas pessoas comuns e organizações políticas populares em sua maioria não tiveram acesso à tecnologia de criptografia por chave pública de "nível militar" disponível. Até agora.

PGP dá poderes às pessoas para colocar suas privacidades em suas próprias mãos. Existe uma crescente necessidade social por ela. Foi por isto que eu o criei.

 

Os algoritmos simétricos de PGP

PGP oferece uma seleção de diferentes algoritmos de chaves secretas para codificar a mensagem atual. Por algoritmo de chave secreta, queremos dizer uma cifragem de blocos convencional, ou simétricos, que usa a mesma chave para codificar e para decifrar. As três cifras de blocos simétricos oferecidos por PGP são CAST, Triple-DES, e IDEA. Eles não são algoritmos "caseiros". Todos eles foram desenvolvidos por times de criptógrafos de reconhecida reputação.

Para os criptograficamente curiosos, todas as três cifras operam em blocos de texto puro e texto cifrado de 64 bits. CAST e IDEA possuem chaves de 128 bits de tamanho, enquanto Triple-DES usa uma chave de 168 bits. Como o "Data Encryption Standard" (DES), qualquer uma dessas cifras pode ser usada em modos de Realimentação de Cifras ("cipher feedback", ou CFB) e Ligações de Blocos de Cifras ("cipher block chaining", ou CBC). PGP as usa em modo CFB de 64 bits.

Eu incluí o algoritmo de codificação CAST em PGP porque ele mostra promessas como uma boa cifra de blocos com sua chave de 128 bits de tamanho, é rápido, e é gratuito. Seu nome é derivado das iniciais de seus projetistas, Carlisle Adams e Stafford Tavares da Northern Telecom (Nortel). Nortel pediu uma patente para CAST, mas eles se comprometeram a tornar CAST disponível a qualquer um sem pagamento de "royalties". CAST parece ser excepcionalmente bem projetado, por pessoas com boa reputação no campo. O projeto é baseado em uma aproximação bastante formal, com um número de assertivas formalmente prováveis, que dão boas razões para acreditar que ele provavelmente requer exaustão de chaves para quebrar sua chave de 128 bits. CAST não possui chaves fracas ou semifracas. Há fortes argumentos que CAST é imune tanto à criptoanálise linear e diferencial, as duas formas mais poderosas de criptoanálise na literatura publicada, onde ambas foram efetivas em quebrar o "Data Encryption Standard" (DES). CAST é muito novo para ter desenvolvido um longo registro de seus passos, mas seu projeto formal e a boa reputação de seus projetistas irão sem dúvida atrair as atenções e tentativas de ataques criptoanalíticos do resto da comunidade acadêmica de criptografia. Eu estou tendo a mesmo grau de confiança com CAST que tive anos atrás com IDEA, a cifra que selecionei para uso nas primeiras versões de PGP. Naquela época, IDEA também era muito novo para ter um registro de passos, mas têm suportado bem.

A cifra de blocos IDEA ("International Data Encryption Algorithm", ou Algoritmo Internacional de Codificação de Dados) baseia-se no conceito de projeto de "misturar operações de grupos algébricos diferentes". Isto foi desenvolvido na ETH em Zurique por James L. Massey e Xuejia Lai, e publicado em 1990. Documentos publicados anteriormente sobre o algoritmo o chamavam de IPES ("Improved Proposed Encryption Standard", ou Padrão Melhorado de Codificação Proposto), mas eles mudaram o nome depois para IDEA. Até agora, IDEA têm resistido bem melhor a ataques, que outras cifras como FEAL, REDOC-II, LOKI, Snefru e Khafre. E IDEA é mais resistente que DES em ataques de criptoanálise diferencial de grande sucesso de Biham e Shamir, como também à ataques de criptoanálise linear. Como esta cifra continua atraindo esforços de ataque dos mais formidáveis cantos do mundo criptoanalítico, a confiança em IDEA está crescendo com a passagem do tempo. Tristemente, o obstáculo maior para a aceitação de IDEA como um padrão foi o fato que Ascom Systec mantém a patente de seu projeto, e ao contrário de DES e CAST, IDEA não foi disponibilizado a todo o mundo em bases gratuitas.

Para finalizar, PGP inclui três chaves Triple-DES em seu repertório de cifras de bloco disponíveis. O DES foi desenvolvido pela IBM em meados dos anos setenta. Apesar de ter um bom projeto, sua chave de 56 bits de tamanho é muito pequena para os padrões de hoje. Triple-DES é muito forte, e tem sido bem estudado por muitos anos, assim poderia ser uma aposta mais segura que as cifras mais novas como CAST e IDEA. Triple-DES é o DES aplicado três vezes para o mesmo bloco de dados, usando três chaves diferentes, exceto que a segunda operação de DES é feita de trás para frente, em modo de decifragem. Apesar de Triple-DES ser muito mais lento que CAST ou IDEA, velocidade normalmente não é crítico para aplicativos de email. Embora Triple-DES use uma chave de 168 bits de tamanho, parece ter uma força efetiva de chave de pelo menos 112 bits contra um atacante, com uma capacidade impossivelmente imensa de armazenamento de dados para usar no ataque. De acordo com um documento apresentado por Michael Weiner na Crypto96, qualquer quantia remotamente plausível de armazenamento de dados disponível ao atacante permitiria um ataque que requereria tanto trabalho quanto a quebra de uma chave de 129 bits. Triple-DES não está amarrado por qualquer patente.

Chaves públicas PGP que foram geradas por PGP Versão 5.0 ou superiores possuem informações embutidas nelas que dizem ao emitente quais blocos de cifragem são entendidas pelo software do destinatário, de forma que o software do emitente saiba quais cifras podem ser usadas para codificação. Chaves públicas Diffie-Hellman/DSS aceitam CAST, IDEA, ou Triple-DES como cifra de bloco, com CAST sendo a seleção padrão. No presente, por motivos de compatibilidade, chaves RSA não possuem este recurso. Apenas a cifra IDEA é usada por PGP para enviar mensagens para chaves RSA, porque versões mais antigas de PGP apenas suportavam RSA e IDEA.

Sobre as rotinas de compressão de dados de PGP

PGP normalmente comprime (compacta) o texto puro antes de codificá-lo, porque é tarde demais comprimir o texto puro após ele ser codificado; dados codificados não são comprimíveis. Compressão de dados poupa tempo de transmissões via modem e espaço em disco e, mais importante, aumenta a força da segurança criptográfica. A maioria das técnicas criptoanalíticas exploram redundâncias encontradas no texto puro para quebrar a cifra. Compressão de dados reduz esta redundância no texto puro, portanto melhorando bastante a resistência à criptoanálise. Leva tempo extra comprimir o texto puro, mas de um ponto de vista de segurança vale a pena.

Arquivos que são muito pequenos para comprimir, ou que não comprimem bem, não são comprimidos por PGP. Além disso, o programa reconhece arquivos produzidos pelos programas de compressão mais populares, como PKZIP, e não tenta comprimir um arquivo que já foi comprimido.

Para os tecnicamente curiosos, o programa usa as rotinas de compressão freeware ZIP escritas por Jean-Loup Gailly, Mark Adler, e Richard B. Wales. Este software ZIP usa algoritmos de compressão que são funcionalmente equivalentes àqueles usados pela PKWare em PKZIP 2.x. Este software de compressão ZIP foi escolhido para PGP principalmente porque tem uma taxa de compressão realmente boa e porque é rápido.

Sobre os números aleatórios usados como chaves de sessão

PGP usa um criptograficamente forte gerador de números pseudo-aleatórios para criar chaves de sessão temporárias. Se este arquivo de inicialização de números aleatórios não existir, ele é automaticamente criado e iniciado com números realmente aleatórios derivados de seus eventos aleatórios, obtidos pelo programa PGP através do tempo de seu pressionar de teclas e movimentos do mouse.

Este gerador reinicializa o arquivo de inicialização a cada vez que é usado, misturando novo material parcialmente derivado da hora do dia e outras fontes verdadeiramente aleatórias. Ele usa algoritmos convencionais de codificação como motor para o gerador de números aleatórios. O arquivo de inicialização contém tanto material de inicialização aleatória quanto material de chaves aleatórias, usadas para tensionar o motor de codificação condicional para o gerador aleatório.

Este arquivo de inicialização aleatória deve ser protegido de descobertas, para reduzir o risco de um atacante derivar suas próximas ou anteriores chaves de sessão. O atacante teria um tempo muito duro para obter qualquer coisa útil através da captura deste arquivo de inicialização aleatória, porque o arquivo é criptograficamente limpo antes e depois de cada uso. De qualquer forma, parece ser prudente tentar mantê-lo longe de mãos erradas. Se possível, faça o arquivo legível apenas por você. Se não for possível, não deixe outras pessoas indiscriminadamente copiar discos de seu computador.

Sobre o sumário da mensagem

O sumário da mensagem (no original, "message digest") é um "destilado" compacto (de 160 ou 128 bits) do "checksum" (um método de detecção de erros) de sua mensagem ou arquivo. Você pode pensar nele como a "impressão digital" da mensagem ou arquivo. O sumário da mensagem "representa" sua mensagem, de forma que se a mensagem fosse alterada de qualquer forma, um diferente sumário da mensagem seria computado dela. Isto torna possível detectar quaisquer alterações feitas em uma mensagem por um falsificador. Um sumário da mensagem é computado usando uma função hash de caminho único criptograficamente forte na mensagem. Deve ser computacionalmente impraticável para um atacante planejar uma mensagem substitua que produziria um sumário da mensagem idêntico. Neste respeito, um sumário da mensagem é muito melhor que um "checksum", porque é fácil projetar uma mensagem diferente que produziria o mesmo "checksum". Mas, como um "checksum", você não pode derivar a mensagem original de seu sumário da mensagem.

O algoritmo de sumário da mensagem agora usado em PGP (versões 5.0 e posteriores) é chamado SHA, abreviação de "Secure Hash Algorithm" (ou Algoritmo de Hash Seguro), projetado pela NSA para o "National Institute of Standards and Technology" (NIST). SHA é um algoritmo de hash de 160 bits. Algumas pessoas podem olhar qualquer coisa da NSA com suspeita, porque a NSA tem a função de interceptar comunicações e quebrar códigos. Mas tenha em mente que a NSA não tem interesse em forjar assinaturas, e o governo seria beneficiado com um bom padrão de assinaturas digitais infalsificáveis que iria impediria qualquer um de rejeitar suas assinaturas. Isto possui benefícios distintos para fazer cumprir a lei e reunir inteligência. Também, SHA tem sido publicado na literatura aberta e tem sido extensivamente e atentamente revisto pela maioria dos melhores criptógrafos no mundo, que se especializaram em funções hash, e a opinião unânime é que SHA é extremamente bem projetado. Ele possui algumas inovações de projeto que vencem todas as fraquezas observadas em algoritmos de sumários da mensagem anteriormente publicados por criptógrafos acadêmicos. Todas as novas versões de PGP usam SHA como algoritmo de "sumário da mensagem" para criar assinaturas com as novas chaves DSS que seguem o Padrão de Assinatura Digital do NIST. Por razões de compatibilidade, novas versões de PGP ainda usam MD5 para assinaturas RSA, porque versões antigas de PGP usavam MD5 para assinaturas RSA.

O algoritmo de sumário da mensagem usado por versões antigas de PGP é o Algoritmo de Sumário da Mensagem MD5, colocado em domínio público pela RSA Data Security, Inc. MD5 é um algoritmo hash de 128 bits. Em 1996, MD5 foi quebrado por um criptógrafo alemão, Hans Dobbertin. Apesar de MD5 não ter sido completamente quebrado na época, foi descoberto que ele possui fraquezas tão sérias que ninguém deveria continuar usando-o para gerar assinaturas. Maiores trabalhos nesta área poderão quebrá-lo completamente, permitindo que assinaturas sejam falsificadas. Se você não quer um dia descobrir sua assinatura digital PGP em uma confissão falsificada, aconselha-se que você migre para as novas chaves DSS de PGP como método preferido para criar assinaturas digitais, porque DSS usa SHA como seu algoritmo hash seguro.

Como proteger suas chaves públicas de falsificações

Num sistema de criptografia por chave pública, você não precisa proteger as chaves públicas da exposição. Na verdade, é melhor se elas forem largamente disseminadas. Mas é importante proteger as chaves públicas de falsificações, para ter a certeza de que uma determinada chave realmente pertence a quem ela aparenta pertencer. Talvez seja esta a vulnerabilidade mais importante de um sistema de criptografia por chave pública. Vamos primeiro considerar um desastre potencial, então ver como evitá-lo com segurança utilizando PGP.

Suponhamos que você quer enviar uma mensagem privada para a Alice. Você faz o "download" do certificado da chave pública de Alice de uma BBS ("Bulletin Board System"). Você codifica sua carta para Alice com esta chave pública, e a envia para ela através do serviço de email da BBS.

Infelizmente, sem que você e Alice saibam, um outro utilizador chamado Charlie infiltrou-se na BBS e gerou uma chave pública para ele com o ID de usuário de Alice anexado. Ele secretamente substitui sua chave falsa pela chave pública verdadeira de Alice. Você inadvertidamente usa esta chave falsa de Charlie ao invés da chave pública de Alice. Tudo parece normal porque a chave falsa tem o ID de usuário de Alice. Agora Charlie pode decifrar a mensagem enviada para ela porque tem a chave privada correspondente. Ele pode até mesmo re-codificar novamente a mensagem decifrada com a chave pública verdadeira de Alice e enviar a mensagem para ela, de modo que ninguém suspeite algo errado. Além disso, ele pode mesmo forjar assinaturas aparentemente boas de Alice com esta chave privada, porque todo mundo estará usando a chave pública falsa para verificar as assinaturas de Alice.

O único jeito de evitar este desastre é prevenir qualquer um de falsificações de chaves públicas. Se você recebeu a chave pública de Alice diretamente dela, não há problema. Mas isto pode ser difícil se ela estiver a milhares de quilômetros de distância, ou estiver atualmente inacessível.

Talvez você pudesse obter a chave pública de Alice de um amigo confiado por ambos, David, que sabe que possui uma cópia boa da chave pública de Alice. David poderia assinar a chave pública de Alice, garantindo a integridade da chave pública. David criaria esta assinatura com sua própria chave privada.

Isto criaria um certificado assinado de chave pública, indicando que a chave de Alice não foi falsificada. Isto requer que você tenha uma cópia boa da chave pública de David para verificar a assinatura dele. Talvez David também pudesse fornecer a Alice uma cópia assinada de sua chave pública. David estaria assim servindo como um "Apresentador" entre você e Alice.

Este certificado assinado de chave pública para Alice poderia ser transferido por David ou Alice para a BBS, e você poderia fazer o "download" dele mais tarde. Você poderia então verificar a assinatura através da chave pública de David, e assim se certificar de que esta é realmente a chave pública de Alice. Nenhum impostor pode tentar enganá-lo mostrando sua própria chave falsa como sendo a de Alice, porque ninguém mais pode forjar assinaturas feitas por David.

Uma pessoa amplamente confiada poderia até especializar-se em fazer este serviço de "apresentar" usuários para outros, provendo assinaturas para seus certificados de chave pública. Esta pessoa confiada poderia ser considerada como uma "Autoridade de Certificação". Quaisquer certificados de chave pública que tivessem a assinatura da Autoridade de Certificação poderiam ser considerados como realmente pertencentes às pessoas a quem aparentam pertencer. Todos os utilizadores que quisessem participar precisariam de uma cópia boa conhecida apenas da chave pública da Autoridade de Certificação, de uma forma que as assinaturas da Autoridade de Certificação pudessem ser verificadas. Em alguns casos, a Autoridade de Certificação também poderia atuar como um servidor de chaves, permitindo usuários em uma rede procurar por chaves públicas pedindo-as ao servidor de chaves, mas não há razão para um servidor de chaves também precisar de certificar chaves.

Uma Autoridade de Certificação confiada e centralizada é especialmente apropriada para grandes corporações impessoais centralmente controladas ou para instituições governamentais. Alguns ambientes institucionais usam hierarquias de Autoridades de Certificação.

Para ambientes mais decentralizados, permitir que todos os usuários atuem como apresentadores confiáveis para seus amigos provavelmente funcionaria melhor que uma autoridade de certificação centralizada.

Um dos recursos atrativos de PGP é que ele opera igualmente bem em um ambiente centralizado com uma Autoridade de Certificação ou em um ambiente mais decentralizado onde os indivíduos trocam chaves pessoais.

Todo esse negócio de proteger chaves públicas de falsificações é o problema único mais difícil em aplicativos práticos de chave pública. É o "calcanhar de Aquiles" da criptografia por chave pública, e um bocado da complexidade do software diz respeito à solução deste problema.

Você deve usar uma chave pública somente depois de ter certeza de que se trata de uma chave boa que não foi falsificada, e que ela realmente pertence à pessoa a quem pretende estar associada. Você pode estar certo disto se você obter este certificado de chave pública diretamente de seu proprietário, ou se ela leva a assinatura de uma outra pessoa que você confia, e de quem você já possui uma chave pública boa. Também, o ID de usuário deveria ter o nome completo do proprietário da chave, não apenas seu primeiro nome.

Não importa o quão tentado você fique, você nunca deve deixar a prudência de lado e confiar em uma chave pública que transferiu de uma BBS, a menos que ela esteja assinada por alguém que você confie. Aquela chave pública não certificada poderia ter sido falsificada por qualquer um, talvez até pelo administrador de sistema da BBS.

Se lhe pedirem para assinar o certificado de chave pública de alguém, certifique-se de que ele realmente pertence à pessoa mencionada no ID de usuário daquele certificado. Isto porque sua assinatura neste certificado de chave pública é uma promessa feita por você que esta chave realmente pertence àquela pessoa. Outras pessoas que confiem em você aceitarão a chave pública da pessoa porque ela leva sua assinatura. Não é aconselhável confiar no que outros dizem — não assine a chave pública a menos que tenha conhecimento de primeira mão que esta chave realmente pertence à pessoa. Preferivelmente, você deve assiná-la somente se conseguir diretamente dela.

De forma a assinar uma chave pública, você deve ter muito mais certeza da propriedade da chave do que se meramente a quiser usar para codificar uma mensagem. Para estar convencido da validade de uma chave o suficiente para usá-la, assinaturas de certificação de apresentadores confiáveis devem bastar. Mas, para assinar por si só uma chave, você deve ter um conhecimento próprio de primeira mão sobre quem a possui. Talvez você possa ligar para o proprietário da chave e ler a impressão digital da chave para ele, para confirmar que a chave que você tem é realmente dele — e certificar-se de que está realmente falando com a pessoa certa.

Tenha em mente que sua assinatura num certificado de chave pública não garante a integridade daquela pessoa, mas apenas garante a integridade (a propriedade) da chave pública desta pessoa. Você não está arriscando sua credibilidade quando assina a chave pública de um sociopata, se estiver completamente certo que a chave realmente pertence a ele. Outras pessoas aceitariam a chave como pertencendo a ele porque você a assinou (assumindo que eles confiam em você), mas eles não confiariam no proprietário da chave. Confiar em uma chave não é a mesma coisa que confiar no proprietário da chave.

Seria uma boa idéia manter sua própria chave pública em mãos com uma coleção de assinaturas de certificação anexas, de uma série de "apresentadores", na esperança que a maioria das pessoas confiem em pelo menos um dos apresentadores que garantem a validade da sua chave pública. Você poderia colocar sua chave com a coleção anexada de assinaturas de certificação em várias BBSs. Se você assinar a chave pública de alguém, envie-a de volta à pessoa com sua assinatura, de forma que ele possa acrescentar sua assinatura à sua própria coleção de credenciais para sua chave pública.

Certifique-se de que ninguém possa falsificar o seu próprio chaveiro público. A verificação de um certificado de chave pública recém assinado deve definitivamente depender da integridade das chaves públicas confiáveis que já estão em seu próprio chaveiro público. Mantenha controle físico sobre seu chaveiro público, preferencialmente em seu próprio computador pessoal ao invés de em um sistema remoto de compartilhamento de tempo, como você faria com sua chave privada. Isto é para protegê-lo de falsificações, não de exposição. Mantenha uma cópia backup confiável de seu chaveiro público e de sua chave privada em uma mídia protegida contra gravação.

Já que sua própria chave pública confiável é usada como autoridade final para direta ou indiretamente certificar todas as outras chaves no seu chaveiro, ela é a chave mais importante a ser protegida contra falsificações. Você pode querer manter uma cópia backup dela em um disquete protegido contra gravação.

PGP geralmente assume que você mantém segurança física sobre seu sistema e seus chaveiros, como também à sua própria cópia de PGP. Se um intruso conseguir falsificar seu disco, então em teoria ele poderá falsificar o próprio programa, tornando inúteis as proteções que o programa pode ter para detectar falsificações com chaves.

Uma forma um tanto complicada de proteger todo seu chaveiro de falsificações é assinando-o todo com sua própria chave privada. Você poderia fazer isso fazendo um "certificado de assinatura separada" do seu chaveiro público.

Como PGP mantém registro de quais chaves são válidas?

Antes de ler esta seção, você deveria ler a seção anterior, "Como proteger chaves públicas de falsificações".

PGP mantém registro de quais chaves no seu chaveiro público estão apropriadamente certificadas com assinaturas de apresentadores que você confia. Tudo o que você tem a fazer é dizer a PGP quais pessoas você confia como apresentadores, e certificar você mesmo as chaves destes com sua chave privada. A partir daí PGP automaticamente validará quaisquer outras chaves que tenham sido assinadas pelos apresentadores que você designou. E é claro que você pode diretamente assinar mais chaves você mesmo.

Há dois critérios completamente diferentes que PGP usa para julgar a utilidade de um chave pública — não as confunda:

  1. A chave realmente pertence a quem ela aparenta pertencer? Em outras palavras, ela foi certificada por um assinatura confiável?

  2. A chave pertence a alguém em quem você pode confiar para certificar outras chaves?

PGP pode calcular a resposta para a primeira questão. Para responder à segunda questão, você deve dizer explicitamente a PGP. Quando você fornece a resposta à questão 2, PGP então calcula a resposta para a questão 1 para outras chaves assinadas pelo apresentador que você designou como sendo confiável.

Chaves que foram certificadas por um apresentador confiável são consideradas válidas por PGP. As chaves que pertençam a apresentadores confiáveis devem ser elas próprias serem certificadas ou por você ou por outros apresentadores confiáveis.

PGP também permite a possibilidade de você ter vários níveis de confiança para as pessoas que atuam como apresentadores. Sua confiança para um proprietário de uma chave atuar como um apresentador não simplesmente reflete sua estima em sua integridade pessoal — ela também deve refletir quão competente você pensa que eles são em entender o gerenciamento de chaves e usar um bom julgamento quando assinam chaves. Você pode designar uma pessoa como não confiável, marginalmente confiável, ou totalmente confiável para certificar outras chaves públicas. Esta informação sobre confiança é armazenada em seu chaveiro com as chaves destes, mas quando você diz a PGP para copiar uma chave que não está em seu chaveiro, PGP não copia a informação sobre confiança juntamente com a chave, porque suas opiniões pessoais sobre confiança são consideradas confidenciais.

Quando PGP está calculando a validade de uma chave pública, ele examina o nível de confiança de todas as assinaturas de certificação anexadas a ela. Ele computa uma nota média de validade — por exemplo, duas assinaturas marginalmente confiáveis são consideradas tão dignas de crédito quanto uma assinatura de confiança completa. O ceticismo do programa é ajustável — por exemplo, você pode regular PGP para requerer duas assinaturas de total confiança ou três de confiança marginal para julgar uma chave como válida.

Sua própria chave é "axiomaticamente" válida para PGP, não necessitando de nenhuma assinatura de apresentadores para provar sua validade. PGP sabe quais são suas chaves públicas, procurando pelas chaves privadas correspondentes no chaveiro privado. PGP também assume que você confia completamente em você mesmo para certificar outras chaves.

À medida que o tempo passa, você acumulará chaves de outras pessoas que talvez possa querer designar como apresentadores confiáveis. Todos os outros escolherão seus próprios apresentadores confiáveis. E todo mundo irá gradualmente acumular e distribuir com suas chaves uma coleção de assinaturas de certificação de outras pessoas, com a esperança de que alguém que a receba irá confiar em pelo menos uma ou duas das assinaturas. Isto causará a emergência de uma rede de confiança descentralizada e tolerante a erros para todas as chaves públicas.

Esta atitude popular única contrasta fortemente com os esquemas padrão de gestão de chaves desenvolvido pelo governo e outras instituições monolíticas, como o Internet Privacy Enhanced Mail (PEM), que são baseados num controle centralizado e num sistema de confiança centralizado mandatório. Os esquemas padrões baseiam-se numa hierarquia de Autoridades de Certificação que ditam em quem você deve confiar. O método descentralizado probabilístico do programa para determinar a legitimidade de chaves públicas é o ponto chave da sua arquitetura da gerenciamento de chaves. PGP permite que você apenas decida em quem confiar, colocando você no topo de sua própria pirâmide de certificação privada. PGP é para as pessoas que preferem elas mesmas embalarem seus próprios pára-quedas.

Note que enquanto essa atitude descentralizada e popular é enfatizada aqui, isto não significa que PGP não funcione igualmente bem em esquemas de gerenciamento de chaves públicas mais hierárquicos e centralizados. Usuários de grandes corporações, por exemplo, vão provavelmente querer uma figura ou pessoa central que assine todas as chaves de seus funcionários. PGP manipula este cenário centralizado como um caso especialmente degenerado do modelo de confiança mais generalizado de PGP.

Como proteger suas chaves privadas de serem descobertas

Proteja sua própria chave pública e sua frase-senha com muito cuidado. Se a sua chave privada for comprometida, é melhor que você avise o mais rápido possível todas as partes interessadas antes que alguém a use para fazer assinaturas em seu nome. Por exemplo, alguém poderia utilizá-la para assinar certificados de chave pública falsos, o que poderia criar problemas para muitas pessoas, especialmente se a sua assinatura é largamente confiada. E é claro, o comprometimento de sua própria chave pública poderia revelar todas as mensagens que lhe foram enviadas.

Para proteger a sua chave secreta, você pode começar por manter sempre um controle físico sobre ela. Guardá-la em seu computador pessoal em casa está OK, ou mantê-la em seu computador "notebook" que transporta consigo. Se você precisar usar um computador num escritório no qual você não tem sempre um controle físico, guarde suas chaves públicas e privadas em um disquete removível protegido contra gravação, e não o deixe para trás quando deixar o escritório. Não seria boa idéia deixar sua chave privada residir em um computador remoto com compartilhamento de tempo, como um sistema remoto UNIX por discagem. Alguém poderia espionar sua linha do modem e capturar sua frase-senha, e então obter sua chave privada a partir do sistema remoto. Você deve usar sua chave privada apenas em uma máquina que está sob seu controle físico.

Não armazene sua frase-senha em qualquer lugar no computador que tem o arquivo de sua chave privada. Armazenar tanto a chave privada e a frase-senha no mesmo computador é tão perigoso quanto guardar seu código pessoal na mesma carteira onde está seu cartão de crédito. Você não irá querer que alguém ponha suas mãos no seu disco que contém tanto a sua frase-senha e o arquivo da chave privada. Seria mais seguro se você simplesmente memorizasse sua frase-senha e a guardasse somente no seu cérebro. Se você acha que deve escrever sua frase-senha , guarde-a bem protegida, talvez ainda mais bem protegida que o arquivo com sua chave privada.

Guarde cópias backup de sua chave privada — lembre-se, você possui a única cópia de sua chave privada, e perdê-la tornará inutilizável todas as cópias de sua chave pública que você espalhou pelo mundo.

A maneira descentralizada e não-institucional que PGP suporta para gerenciamento de chaves públicas tem seus benefícios, mas infelizmente isso também quer dizer que você não pode contar com uma única lista centralizada de quais chaves foram comprometidas. Isto torna um pouco mais difícil conter os danos do comprometimento de uma chave privada. Você simplesmente deve espalhar a notícia e esperar que todos a ouçam.

Se o pior caso acontecer — sua chave privada e sua frase-senha estarem comprometidas (esperando que você descobriu isso de alguma forma) — você precisará emitir um certificado de "revogação de chave". Este tipo de certificado é utilizado para avisar às outras pessoas que parem de utilizar sua chave pública. Você pode usar PGP para criar tal certificado, usando o comando "Revoke" (Revogar) do menu de PGPkeys ou pedindo seu "Revogador Designado" para fazê-lo por você. Então você deve enviar este certificado para um servidor de certificados, de forma que outros possam achá-lo. O próprio PGP destas pessoas instala este certificado de chave revogada em seus chaveiros públicos, e automaticamente evita que eles acidentalmente utilizem sua chave pública novamente. Você pode então gerar um novo par de chaves privada/pública e publicar sua nova chave pública. Você poderia enviar um "pacote" contendo tanto sua nova chave pública quanto seu certificado de revogação de chave para sua chave antiga.

E se você perder sua chave privada?

Normalmente, se você quisesse revogar sua própria chave privada, você poderia usar o comando "Revoke" (Revogar) no menu de PGPkeys para emitir um certificado de revogação, assinado com sua própria chave privada.

Mas o que aconteceria se você perdesse sua chave privada, ou sua chave privada fosse destruída? Você não pode revogá-la você mesmo, porque você deve usar sua própria chave privada para revogá-la, e você não a tem mais. Se você não possui um revogador designado para sua chave, alguém especificado em PGP que pode revogar sua chave sob seu nome, você deverá pedir a cada pessoa que assinou sua chave para retirar sua certificação. Então qualquer um que tente usar sua chave baseado na confiança de um de seus apresentadores saberá que não deve confiar em sua chave pública.

Para maiores informações sobre revogadores designados, veja a seção "Para apontar um revogador designado" no Capítulo 6.

 

Cuidado com veneno de cobra

Quando se examina um pacote de software criptográfico, fica sempre a dúvida, por que você deveria confiar neste produto? Mesmo que você examinasse o código fonte você mesmo, nem todo mundo tem experiência criptográfica para julgar a segurança. Mesmo se você for um criptógrafo experiente, falhas imperceptíveis nos algoritmos ainda poderiam enganá-lo.

Quando eu estava na faculdade no início dos anos 70, eu planejei o que acreditava ser um brilhante esquema de codificação. Uma simples cadeia de números pseudo-aleatórios era acrescentada à uma cadeia de texto puro para criar um texto cifrado. Isto aparentemente impediria qualquer análise de freqüência do texto cifrado, e seria inquebrável até mesmo para as melhores agências de inteligência do governo. Me senti muito satisfeito com minha façanha.

Anos mais tarde, descobri este mesmo esquema em diversos textos introdutórios de criptografia e trabalhos educacionais. Que legal. Outros criptógrafos pensaram no mesmo esquema. Infelizmente, o esquema era apresentado como uma simples atribuição de dever de casa sobre como usar técnicas criptoanalíticas elementares para trivialmente quebrá-la. Tão pouco para meu esquema brilhante.

Desta humilde experiência aprendi como é fácil cair num falso senso de segurança quando se planeja um algoritmo de codificação. A maioria das pessoas não percebem como é terrivelmente complicado planejar um algoritmo de codificação que consiga resistir a um ataque prolongado e determinado de um oponente com recursos. Muitos engenheiros de software conceituados desenvolvem esquemas igualmente simples de codificação (muitas vezes até os mesmos esquemas de codificação) e alguns destes foram incorporados a pacotes comerciais de software de codificação e vendidos por um bom dinheiro para milhares de usuários inocentes.

Isto é como vender cinto de segurança para automóveis que parecem bons e ajeitam-se bem, mas abrem com um estalo no mais lento teste de colisão. Depender dele pode ser pior que não usar nenhum cinto. Ninguém suspeita que são ruins até acontecer uma batida real. E depender de softwares de criptografia fraca pode fazer você colocar em risco informações confidenciais sem saber, o que por outro lado poderia até não acontecer se você não tivesse um software criptográfico. Talvez você nunca nem descobriria que seus dados foram comprometidos.

Algumas vezes pacotes comerciais utilizam o "Federal Data Encryption Standard" (DES, ou Padrão Federal de Criptografia de Dados), que é um bom algoritmo convencional recomendado pelo governo para uso comercial (mas não para informações confidenciais, por estranho que pareça — Hmmm). Existe vários "modos de operação" que DES pode utilizar, alguns deles melhores do que outros. O governo especificamente recomenda não usar o modo mais fraco e simples nas mensagens, o modo "Eletronic Codebook" (ECB). Mas recomendam os modos mais fortes e mais complexos, tais como "Cipher Feedback" (CFB) e "Cipher Block Chaining" (CBC).

Infelizmente, a maioria dos pacotes comerciais de codificação que observei usam o modo ECB. Quando conversei com os autores de algumas dessas implementações, eles disseram que nunca tinham ouvido falar dos modos CBC ou CFB, e não sabiam de nada sobre as fraquezas do modo ECB. O fato de que eles não sequer aprenderam criptografia o suficiente para conhecer estes conceitos elementares não é tranqüilizador. E eles às vezes gerenciam suas chaves DES de forma inapropriada ou insegura. Também, estes mesmos pacotes de software muitas vezes incluem um segundo algoritmo de criptografia, mais rápido, para ser usado no lugar do lento DES. O autor do pacote geralmente acha que seu algoritmo proprietário mais rápido é tão seguro quanto DES, mas depois de questioná-lo geralmente descubro que é apenas uma variação do meu próprio esquema brilhante da época da faculdade. Ou talvez ele até não revelaria como seu esquema de criptografia proprietário funciona, mas me asseguram que é um esquema brilhante e que eu deveria acreditar nele. Eu tenho certeza de que ele acredita que seu algoritmo é brilhante, mas como posso saber disto sem vê-lo?

Honestamente, devo destacar que na maioria dos casos estes produtos terrivelmente fracos não vêm de companhias que se especializam na tecnologia criptográfica.

Mesmo os pacotes de software realmente bons, que utilizam DES nos modos corretos de operação, ainda possuem problemas. DES padrão usa uma chave de 56 bits, que é muito pequena para os padrões de hoje, e já podem ser facilmente quebradas através de procuras exaustivas de chaves em máquinas especiais de alta velocidade. O DES chegou ao fim de sua vida útil, como também qualquer pacote de software que se baseie nele.

Existe uma companhia chamada AcessData (http://www.accessdata.com) que vende um pacote de preço muito baixo que quebra os esquemas internos de criptografia usados pelo WordPerfect, Lotus 1-2-3, MS Excel, Symphony, Quattro Pro, Paradox, MS Word e PKZIP. Ele não faz simples adivinhações de senhas — faz verdadeiras criptoanálises. Algumas pessoas o compram quando se esquecem de suas senhas para seus próprios arquivos. Agências para cumprimento da lei também o compram, assim podem ler os arquivos que conseguirem capturar. Conversei com Eric Thompson, o autor, e ele disse que seu programa leva apenas uma fração de segundo para quebrá-las, mas ele inseriu alguns "loops" de espera para torná-lo mais lento de modo que não pareça tão fácil para o cliente.

Na arena da telefonia segura, suas chances parecem desanimadoras. O concorrente líder é o STU-III (de "Secure Telephone Unit", ou Unidade de Telefone Seguro), feito pela Motorola e AT&T por US$2,000 a US$3,000, e usado pelo governo para aplicações confidenciais. Ele possui criptografia forte, mas requer algum tipo de licença especial do governo para comprar a versão forte. Uma versão comercial do STU-III está disponível, mas enfraquecida para conveniência da NSA, e uma versão para exportação está disponível mas ainda mais severamente enfraquecida. Então houve o AT&T Surity 3600, de US$1,200, que usa o famoso chip "Clipper" do governo para codificação, com as chaves em juízo para o governo para conveniência dos monitores de chamadas. Então, é claro, houve os misturadores de vozes analógicos (não digitais), que você pode comprar em catálogos de "futuros espiões", que são brinquedos realmente inúteis ao tanto quanto a criptografia está envolvida, mas são vendidas como produtos "seguros" de comunicação para consumidores que não conhecem nada melhor.

De certa forma, criptografia é como farmacêutica. Sua integridade pode ser absolutamente crucial. Penicilina ruim se parece como penicilina boa. Você pode dizer se seu software de planilha estiver errado, mas como dizer se seu pacote de criptografia é fraco? O texto cifrado produzido por um algoritmo fraco de criptografia parece tão bom quanto o texto cifrado produzido por um forte algoritmo de criptografia. Há um bocado de veneno de cobra lá fora. Um bocado de curandeiros. Diferentemente dos vendedores ambulantes de remédios do passado, estes implementadores de software geralmente nem sabem que suas coisas são veneno de cobra. Podem ser bons engenheiros de software, mas geralmente nunca leram nada da literatura acadêmica sobre criptografia. Mas acham que podem escrever bons softwares criptográficos. E por que não? No fim das contas, parece intuitivamente fácil escrever um. E seus softwares parecem funcionar bem.

Qualquer um que pensa que planejou um esquema de codificação inquebrável ou é um gênio inacreditavelmente raro ou é ingênuo e inexperiente. Infelizmente, eu às vezes tenho que lidar com "aprendizes de criptógrafos" que gostariam de fazer "melhorias" em PGP adicionando algoritmos de codificação que eles próprios projetaram.

Lembro-me de uma conversa com Brian Snow, um criptógrafo veterano com influência na NSA. Ele disse que nunca confiaria num algoritmo de codificação planejado por alguém que não tivesse "ganhado seus ossos" primeiramente gastando muito tempo quebrando códigos. Isto fez muito sentido. Observei que praticamente ninguém no mundo comercial de criptografia se qualificava sob este critério. "Sim", ele disse com um sorriso confiante, "e isto torna nosso trabalho na NSA bem mais fácil". Um pensamento desanimador. Eu também não me qualificaria.

O governo também vendeu veneno de cobra. Depois da Segunda Guerra Mundial, os Estados Unidos venderam máquinas alemães de codificação "Enigma" para governos do terceiro mundo. Mas não disseram que os aliados quebraram o código Enigma durante a guerra, um fato que permaneceu confidencial por muitos anos. Mesmo hoje muitos sistemas UNIX em todo o mundo usam a cifra Enigma para codificação de arquivos, em parte porque o governo criou obstáculos legais contra o uso de algoritmos melhores. Eles até tentaram proibir a publicação inicial do algoritmo RSA em 1977. E eles por muitos anos esmagaram essencialmente todos os esforços comerciais para desenvolver telefones efetivamente seguros para o público em geral.

O principal trabalho da agência de segurança nacional ("National Security Agency", NSA) do governo americano é agrupar inteligência, principalmente grampeando as comunicações particulares das pessoas (veja o livro de James Bamford, "The Puzzle Palace"). A NSA acumulou considerável habilidade e recursos na quebra de códigos. Quando as pessoas não possuem uma boa criptografia para se protegerem, isto torna o trabalho da NSA bem mais fácil. NSA também tem a responsabilidade de aprovar e recomendar algoritmos de codificação. Alguns críticos afirmam que isto é um conflito de interesses, como colocar a raposa para tomar conta do galinheiro. Nos anos 80, NSA colocou no mercado um algoritmo de criptografia convencional que planejou (o COMSEC Endorsement Program) e nunca revelam a ninguém como funciona porque é considerado confidencial. Ela queria que outros confiassem nele e o usassem. Mas qualquer criptógrafo pode lhe dizer que um algoritmo de criptografia bem planejado não precisa ser confidencial para permanecer seguro. Somente as chaves precisariam de proteção. Como alguém poderia realmente saber se o algoritmo confidencial da RSA é seguro? Não é tão difícil para a NSA projetar um algoritmo de criptografia que somente eles poderiam quebrar, se ninguém mais pode revisar o algoritmo.

Há três fatores principais que têm minado a qualidade do software comercial de criptografia nos Estados Unidos.

O efeito colateral de tudo isso é que antes de PGP ser publicado, não havia praticamente nenhum software de codificação de alta segurança para propósitos gerais disponível nos Estados Unidos.

Não estou tão certo da segurança do PGP como certa vez estive com meu brilhante software de criptografia da faculdade. Se estivesse, seria um mau sinal. Mas eu não acho que PGP contenha alguma fraqueza evidente (apesar de estar bem certo de que ele contém bugs). Eu selecionei os melhores algoritmos da literatura publicada da academia criptográfica civil. Na maior parte, estes algoritmos foram individualmente submetidos à extensas revisões. Conheço muitos dos melhores criptógrafos do mundo, e tenho discutido com alguns deles vários dos protocolos e algoritmos de criptografia usados em PGP. Ele está bem pesquisado, e levou anos para ser feito. E eu não trabalho para a NSA. Mas você não precisa acreditar na minha palavra sobre a integridade criptográfica de PGP, porque o código fonte está disponível para facilitar revisões.

Mais um ponto sobre meu compromisso com a qualidade criptográfica em PGP: desde que comecei a desenvolver e lancei PGP gratuitamente em 1991, eu fiquei três anos sob investigação criminal pelas Alfândegas dos EUA devido à difusão de PGP pelo mundo, com risco de acusação criminal e anos de prisão. Por falar nisso, você não viu o governo se preocupar com outros softwares criptográficos — é PGP que eles atacam. O que isto diz a você sobre a força de PGP? Eu ganhei minha reputação de integridade com a integridade criptográfica de meus produtos. Eu não vou trair meu compromisso com nosso direito de privacidade, pelo qual eu arrisquei minha liberdade. Eu não vou permitir que um produto que leve meu nome possua quaisquer "backdoors" secretos.

 

Vulnerabilidades

"Se todos os computadores pessoais no mundo — 260 milhões — fossem colocados para trabalhar em uma única mensagem codificada por PGP, ainda levaria um tempo estimado de 12 milhões de vezes a idade do universo, em média, para quebrar uma única mensagem."
— William Crowell, Diretor Adjunto, Agência de Segurança Nacional ("National Security Agency", NSA), 20 de março de 1997.

Nenhum sistema de segurança é impenetrável. PGP pode ser enganado de várias formas diferentes. Em qualquer sistema de segurança, você precisa se perguntar se a informação que tenta proteger é mais valiosa para o atacante que o custo do ataque. Isto deveria levá-lo a se proteger de ataques de baixo custo, sem se preocupar com ataques mais caros.

Um pouco da discussão que segue pode parecer um tanto ou quanto paranóica, mas tal atitude é apropriada para uma discussão razoável sobre quesitos de vulnerabilidade.

Comprometimento da frase-senha e chave privada

Provavelmente a forma mais simples de ataque é feita se você deixar a frase-senha para sua chave privada escrita em algum lugar. Se alguém a achar e também conseguir seu arquivo de chave privada, ele pode ler suas mensagens e fazer assinaturas em seu nome.

Aqui estão algumas recomendações para proteger sua frase-senha:

  1. Não use frases-senhas óbvias que possam ser facilmente descobertas, como os nomes de seus filhos ou esposa(o).

  2. Use espaços e uma combinação de números e letras em sua frase-senha. Se você fizer de sua frase-senha uma única palavra, ela poderá ser descoberta fazendo um computador tentar todas as palavras do dicionário até encontrar sua senha. É por isso que uma frase-senha é melhor do que uma senha simples. Um atacante mais sofisticado poderia fazer seu computador pesquisar um livro com frases famosas para tentar achar sua frase-senha.

  3. Seja criativo. Use uma frase-senha fácil de lembrar e difícil de se descobrir; você poderia facilmente construir uma usando alguns dizeres criativos sem sentido ou citações literárias obscuras.

Falsificação da chave pública

Uma maior vulnerabilidade existe se chaves públicas são falsificadas. Esta deve ser a vulnerabilidade mais crucialmente importante em um criptosistema de chave pública, em parte porque a maioria dos novatos não a percebem imediatamente.

Para sumariar: quando você usar a chave pública de alguém, esteja certo de que não foi falsificada. Uma nova chave pública de alguém deve ser confiada apenas se você a obtiver diretamente de seu proprietário, ou se ela foi assinada por alguém em quem você confia. Certifique-se de que ninguém irá falsificar sua própria chave pública. Mantenha controle físico de seus chaveiro público e sua chave privada, preferivelmente em seu computador pessoal ao invés de um sistema remoto de compartilhamento de tempo. Tenha sempre uma cópia backup de ambos os chaveiros.

Arquivos não apagados completamente do disco

Outro problema potencial é causado pelo modo que a maioria dos sistemas operacionais apaga arquivos. Quando você codifica um arquivo e apaga o texto puro original, na verdade o sistema operacional não apaga fisicamente os dados. Ele simplesmente marca aqueles blocos de disco como apagados, permitindo que o espaço seja reutilizado posteriormente. É como jogar documentos sensíveis em papel para uma lixeira reciclável ao invés de um destruidor de papéis. Os blocos do disco ainda contém o texto original sensível que você queria destruir, e serão provavelmente sobrescritos por novos dados em algum ponto no futuro. Se o atacante ler estes blocos de disco apagados logo que eles forem desalojados, ele poderia recuperar seu texto original.

De fato isto poderia até acontecer acidentalmente, se algo der errado com o disco e alguns arquivos foram acidentalmente apagados ou corrompidos. Um programa de recuperação de discos podem ser utilizado para recuperar os arquivos danificados, mas isto geralmente significa que alguns arquivos apagados sejam ressuscitados juntos com tudo mais. Seus arquivos confidenciais que você pensou terem sumidos para sempre poderiam então reaparecer e serem inspecionado por qualquer um que estiver tentando recuperar seu disco danificado. Mesmo enquanto você está criando a mensagem original com um processador ou editor de textos, o editor pode estar criando várias cópias temporárias do seu texto no disco, simplesmente por causa de seus trabalhos internos. Estas cópias temporárias de seu texto são apagadas pelo processador de textos quando ele tiver terminado, mas estes fragmentos sensíveis ainda estarão em seu disco em algum lugar.

A única forma de se prevenir que o texto puro de reaparecer é de alguma forma fazer com que os arquivos de texto puro apagados sejam sobrescritos. A não ser que você tenha certeza de que todos os blocos apagados do disco serão brevemente reutilizados, você deve tomar providências para sobrescrever o arquivo, e também quaisquer fragmentos dele no disco deixado por seu processador de textos. Você pode cuidar de quaisquer fragmentos do texto deixado no disco usando os recursos de Eliminação Segura ("Secure Wipe") e Eliminação de Espaço Livre ("Freespace Wipe") de PGP.

Viroses e Cavalos de Tróia

Outro ataque poderia envolver um vírus ou "verme" hostil para computadores especialmente criado que poderia infectar PGP ou seu sistema operacional. Este vírus hipotético poderia ser projetado para capturar sua frase-senha ou chave privada ou decifrar mensagens e para invisivelmente escrever as informações capturadas em um arquivo ou enviá-los através de uma rede para o dono do vírus. Ou ele poderia alterar o comportamento de PGP de forma que as assinaturas não sejam checadas corretamente, por exemplo. Este ataque é mais barato que ataques criptoanalíticos.

A defesa para este tipo de ataque cai na categoria de defesa contra infecções de viroses em geral. Há alguns produtos antivírus moderadamente capazes comercialmente disponíveis, e há procedimentos higiênicos a serem seguidos que podem grandemente reduzir as chances de uma infecção viral. Um tratamento completo de contramedidas anti-vírus e anti-vermes está além do escopo deste documento. PGP não tem defesas contra vírus, e assume que seu próprio computador pessoal é um ambiente confiável de execução. Se tal tipo de vírus ou verme realmente aparecer, espera-se que todos logo tomemos conhecimento.

Um ataque similar envolve alguém criando uma inteligente imitação de PGP que comporta-se como PGP na maioria dos aspectos, mas não funcionando da forma esperada. Por exemplo, ele poderia ser deliberadamente avariado para não verificar assinaturas corretamente, permitindo que certificados de chaves falsas fossem aceitas. Esta versão cavalo de tróia de PGP não é difícil de ser criada por um atacante, porque o código fonte de PGP está amplamente disponível, portanto qualquer um poderia modificar o código fonte e produzir uma imitação lobotomizada zumbi de PGP que pareceria real mas faz os desejos de seu mestre diabólico. Esta versão cavalo de tróia de PGP poderia então ser amplamente distribuída, dizendo-se ser de uma fonte legítima. Que traiçoeiro.

Você deve fazer um esforço para obter sua cópia de PGP diretamente da Network Associates, Inc.

Há outras formas de checar PGP por falsificações, usando assinaturas digitais. Você poderia usar outra versão confiável de PGP para checar a assinatura de uma versão suspeita de PGP. Mas isto não ajudaria se seu sistema operacional estiver infectado, já que não detectaria se sua cópia original de pgp.exe foi maliciosamente alterada de tal forma a comprometer sua própria habilidade de checar assinaturas. Este teste também assume que você possui uma boa cópia confiável da chave pública que você usa para checar a assinatura no executável de PGP.

Arquivos de troca ou memória virtual

PGP foi originalmente desenvolvido para MS-DOS, um sistema operacional primitivo para os padrões de hoje. Mas quando foi portado para outros sistemas operacionais mais complexos, como Microsoft Windows e Macintosh OS, uma nova vulnerabilidade emergiu. Esta vulnerabilidade provêm do fato de que este sistemas operacionais modernos usam uma técnica chamada memória virtual.

Memória virtual permite que você execute programas enormes em seu computador que são maiores que o espaço disponível nos chips de memória de semicondutores em seu computador. Isto é útil porque software tem se tornado mais e mais "gordo" desde que interfaces gráficas com o usuário tornaram-se norma e usuários começaram a executar diversos programas grandes ao mesmo tempo. O sistema operacional usa o disco rígido para armazenar porções de seu software que não estão sendo usadas em determinado momento. Isto significa que o sistema operacional pode, sem seu conhecimento, escrever no disco algumas coisas que você pensou que eram mantidas apenas na memória principal — coisas como chaves, frases-senhas, e textos decifrados. PGP não mantém este tipo de dados sensíveis em algum lugar na memória além do necessário, mas há alguma chance de que o sistema operacional poderia escrevê-los em disco de qualquer forma.

Os dados são escritos em uma área de "notas" no disco, conhecido como um arquivo de troca. Dados são lidos de volta a partir do arquivo de troca quando necessário, de forma que apenas parte de seu programa ou dados estarão na memória física por vez. Toda esta atividade é invisível para o usuário, que simplesmente vê o disco trepidando. Microsoft Windows faz trocas de pedaços de memória, chamadas "páginas", usando um algoritmo de troca de páginas do tipo Último Recentemente Usado, ou "Least Recently Used" (LRU). Isto significa que páginas que não foram acessadas pelos períodos de tempo mais longos são as primeiras a serem colocadas no disco. Este caminho sugere que na maioria dos casos o risco é bem baixo que dados sensíveis serão colocados no disco, já que PGP não os deixa na memória por muito tempo. Mas não damos nenhuma garantia.

Este arquivo de troca pode ser acessado por qualquer um que tiver acesso físico à seu computador. Se você estiver preocupado com este problema, você talvez possa resolvê-lo obtendo algum software especial que sobrescreva seu arquivo de troca. Outra cura possível é desligar o recurso de memória virtual de seu sistema operacional. Microsoft Windows permite isto, e também Mac OS. Desligar a memória virtual pode significar que você precisará ter mais chips físicos de memória RAM instalados de forma a fazer com que tudo caiba na RAM.

Falha de segurança física

Uma falha de segurança física poderia permitir a alguém fisicamente obter seus arquivos de texto ou mensagens impressas. Um oponente determinado poderia obter isto através de roubo, vasculhando lixo, procura e captura sem motivo, ou suborno, chantagem ou infiltração entre seu quadro de funcionários. Alguns desses ataques podem ser especialmente praticáveis contra organizações políticas populares que dependem de um quadro de funcionários largamente formado por voluntários.

Não se iluda em uma falsa sensação de segurança só porque você tem uma ferramenta de criptografia. Técnicas criptográficas protegem dados apenas quando elas estão codificadas — violações diretas de segurança física ainda podem comprometer dados em textos ou informações escritas ou faladas.

Este tipo de ataque é mais barato que ataques criptoanalíticos em PGP.

Ataques "Tempest"

Outro tipo de ataque que tem sido utilizada por oponentes bem equipados envolvem a detecção remota dos sinais eletromagnéticos vindos de seu computador. Este ataque caro e um tanto trabalhoso é provavelmente ainda mais barato que ataques criptoanalíticos diretos. Um caminhão ou van apropriadamente suprido das máquinas necessárias pode estacionar próximo ao seu escritório e remotamente capturar todos os seus toques no teclado e mensagens mostradas na tela de vídeo de seu computador. Isto iria comprometer todas as suas senhas, mensagens etc. Este ataque poderia ser evitado através de blindagens apropriadas em todos os seus equipamentos para computador e cabos de rede, de forma a não emitir estes sinais. Esta tecnologia de blindagem, conhecida como "Tempest", é usado por algumas agências governamentais e fornecedores de defesas. Há fabricantes de hardware que fornecem blindagens Tempest comercialmente.

Algumas novas versões de PGP (após a versão 6.0) podem exibir textos decifrados usando uma fonte especialmente projetada que pode possuir níveis reduzidos de emissão de freqüências de rádio a partir da tela de vídeo de seu computador. Isto pode tornar mais difícil que sinais sejam remotamente detectados. Esta fonte especial está disponível em algumas versões de PGP que suportam o recurso Visualizador Seguro ("Secure Viewer").

Protegendo-se contra marcas de hora falsas

Uma vulnerabilidade um tanto obscura de PGP envolve usuários desonestos criarem marcas de horas ("timestamps") falsas em seus certificados e assinaturas de chaves públicas. Você pode saltar esta seção se é um usuário casual e não quer se aprofundar em obscuros protocolos de chaves públicas.

Não há nada que impeça um usuário desonesto de alterar a configuração de data e hora do relógio de seu próprio sistema, e gerar seus próprios certificados de chave pública e assinaturas que parecem ter sido criadas em uma hora diferente. Ele pode fazer parecer que ele assinou algo mais cedo ou tarde do que realmente fez, ou que seu par de chaves público/privado foi criado mais cedo ou mais tarde. Isto pode dar algum benefício legal ou financeiro a ele, por exemplo criando algum tipo de evasiva que poderia permitir que ele rejeitasse uma assinatura.

Creio que este problema de marcas de hora falsificadas em assinaturas digitais não é pior do que já é em assinaturas feitas à mão. Qualquer um pode escrever qualquer data perto de sua assinatura escrita em um contrato, mas ninguém parece estar alarmado sobre este acontecimento. Em alguns casos, uma data "incorreta" em uma assinatura feita à mão pode não estar associada com fraudes reais. A marca de hora também pode ser quando o assinante afirma que ele assinou um documento, ou talvez quando ele deseja que sua assinatura entre em efeito.

Em situações onde é crítico confiar em uma assinatura com a data atual correta, as pessoas podem simplesmente usar tabeliãs para testemunhar e datar uma assinatura feita à mão. O análogo a isto em assinaturas digitais é obter uma terceira pessoa confiável para assinar um certificado de assinatura, aplicando uma marca de hora confiável. Nenhum protocolo exótico ou muito formal é necessário para isso. Assinaturas testemunhadas têm sido por muito tempo reconhecidas como uma forma legítima de determinar quando um documento foi assinado.

Uma Autoridade de Certificação digna de confiança ou tabelião poderia criar assinaturas autenticadas com uma marca de hora digna de confiança. Isto não necessariamente iria requerer uma autoridade centralizada. Talvez qualquer apresentador confiável ou parte desinteressada poderia exercer esta função, da mesma forma que tabeliãs públicos reais fazem hoje. Quando um tabelião assina a assinatura de outras pessoas, ele cria um certificado de assinatura de um certificado de assinatura. Isto serviria como um testemunho para a assinatura da mesma forma que tabeliãs reais hoje testemunham assinaturas feitas à mão. O tabelião poderia inserir o certificado de assinatura separado (sem todo o documento que foi assinado) em um registro especial controlado pelo tabelião. Qualquer um poderia ler este registro. A assinatura do tabelião teria uma marca de hora confiável, que poderia ter maior credibilidade ou significado legal maior que a marca de hora na assinatura original.

Há um bom tratamento sobre este tópico no artigo de Denning feito em 1983 para a "IEEE Computer". Futuras melhorias em PGP poderiam ter recursos para facilmente gerenciar assinaturas reconhecidas de assinaturas, com marcas de hora confiáveis.

Exposição em sistemas multiusuário

PGP foi originalmente projetado para um PC monousuário sob seu controle físico direto. Se você executa PGP em casa ou em seu próprio PC, seus arquivos codificados geralmente estão seguros, a não ser que alguém invada sua casa, roube seu PC e o convença a lhes dar sua frase-senha (ou sua frase-senha é simples o suficiente para ser descoberta).

PGP não foi projetado para proteger seus dados enquanto eles estão em formato de texto em um sistema comprometido. Nem pode prevenir que um invasor use medidas sofisticadas para ler sua chave privada enquanto ela está sendo usada. Você simplesmente deverá reconhecer estes riscos em sistemas multiusuários, e ajustar suas expectativas e comportamento de acordo. Talvez sua situação seja tal que você deve considerar executar PGP apenas em um sistema isolado e monousuário sob seu controle físico direto.

Análise de tráfico

Mesmo se um atacante não puder ler o conteúdo de suas mensagens codificadas, ele poderia deduzir ao menos algumas informações úteis observando de onde as mensagem vêm e para onde elas vão, o tamanho das mensagens, e a hora do dia que são enviadas. Isto é análogo ao atacante olhar para sua conta telefônica de longa distância para ver para quem você ligou e quando e por quanto tempo, mesmo que o conteúdo atual de suas conversas seja desconhecido para o atacante. Isto é chamado de análise de tráfico. PGP por si só não protege contra análise de tráfico. A solução deste tipo de problema requer protocolos de comunicação especializados, projetados para reduzir a exposição à análise de tráfico em seu ambiente de comunicação, possivelmente com alguma assistência criptográfica.

Criptoanálise

Um ataque criptoanalítico caro e formidável poderia possivelmente ser montado por alguém com vastos recursos de supercomputadores, como uma agência governamental de inteligência. Eles poderiam quebrar sua chave pública usando algum novo método secreto de quebra de defesas. Mas a academia civil tem intensivamente atacado a criptografia por chave pública sem sucesso desde 1978.

Talvez o governo possua algum método confidencial para quebrar os algoritmos de criptografia convencional utilizados em PGP. Isto é o pior pesadelo de qualquer criptógrafo. Não pode haver nenhuma garantia absoluta de segurança em implementações criptográficas práticas.

Entretanto, algum otimismo parece justificável. Os algoritmos de chave pública, algoritmos de sumário da mensagem, e cifras de bloco usados em PGP foram projetados por alguns dos melhores criptógrafos no mundo. Os algoritmos de PGP têm sido extensivamente analisados quanto à segurança e revisados por alguns dos melhores criptoanalistas no mundo.

Além disso, mesmo se as cifras de blocos usadas em PGP possuírem alguma pequena fraqueza desconhecida, PGP comprime o texto puro antes de codificá-lo, o que deve grandemente reduzir essas fraquezas. O gasto computacional para quebrá-lo seria provavelmente muito mais caro que o valor da mensagem.

Se sua situação justificar a preocupação com ataques muito formidáveis deste calibre, então talvez você deveria contactar uma consultoria de segurança de dados para algumas direções sob medida para segurança de dados específicas para suas necessidades em particular.

Em resumo, sem boa proteção criptográfica de sua comunicação de dados, pode ser praticamente sem esforço e talvez mesmo rotineiro para um oponente interceptar suas mensagens, especialmente aquelas enviadas através de um modem ou sistema de email. Se você usa PGP e segue precauções razoáveis, o atacante terá que gastar muito mais esforços e dinheiro para violar sua privacidade.

Se você se proteger contra os ataques mais simples, e se sente seguro de que sua privacidade não será violada por um atacante determinado e com muitos recursos, então você provavelmente estará seguro usando PGP. PGP lhe dá uma privacidade muito boa (no original, "PGP gives you Pretty Good Privacy").