Como usar o PGP

O QUE É? PARA QUE SERVE? POR QUE USAR? COMO INSTALAR?
AS EXPLICAÇÕES ESTÃO TODAS AQUI.

Phil's Pretty Good Software
Apresenta
---------
PGP(tm)
---------
Pretty Good (tm) Privacy
Criptografia de Chave Pública para as Massas
---------------------------------
Guia do Usuário do PGP(tm)
Volume I: Tópicos Essenciais
---------------------------------
de Philip Zimmermann
revisado em 22 de maio de 1994
Versão 2.6 do PGP - 22 de maio de 1994
Software de
Philip Zimmermann e outros.
#######################################################################
Tradução de ROBERTA PAIVA BORTOLOTTI <roberta@nimitz.ibilce.unesp.br>
Revisão de Adriano Mauro Cansian <adriano@nimitz.ibilce.unesp.br>
UNESP - Universidade Estadual Paulista / Campus de S.J. do Rio Preto
R. Cristóvão Colombo, 2265
15055-000 São José do Rio Preto - SP - BRAZIL
Tel. +55 172 24-4966 FAX: +55 172 24-8692
#######################################################################
Sinopse: O PGP (tm) utiliza criptografia de chave pública para proteger arquivos de dados e correio eletrônico. Para comunicar-se com segurança com pessoas que você nem conhece, sem a necessidade de canais seguros para a troca previa de chaves. O PGP possui bons recursos é rábido, com sofisticado controle de chaves, assinaturas digitais, compressão de dados e bom projeto ergonômico.
Direitos autorais 1990-1994 de software e documentação de Philip Zimmermann. Todos os direitos reservados. Para mais informações sobre licença de uso do PGP, distribuição, direitos autorais, patentes, marcas registradas, limitações de obrigações e controles de exportação, veja a seção de "Assuntos Legais" no "Guia do Usuário de PGP, Volume II: Tópicos Especiais". Distribuído pelo Instituto Tecnológico de Massachusetts (MIT - Massachusetts Institute of Technology).
"Tudo que você fizer será insignificante, mas o importante é que você faça." - Mahatma Gandhi.
Índice ------
Breve Resumo Porque você precisa do PGP?
Como Funciona
Instalando o PGP
Como usar o PGP
Para ver um resumo sobre sua utilização
Criptografando uma Mensagem
Criptografando uma Mensagem para Múltiplos Destinatários
Assinando uma Mensagem
Assinando e depois Criptografando
Usando somente Criptografia Convencional
Descriptografando e Verificando Assinaturas
Administrando Chaves
Gerando uma Chave RSA
Adicionando uma chave ao seu anel de chaves
Removendo uma chave ou um userID (identificação do usuário) do seu
anel de chaves
Extraindo (Copiando) uma chave do seu anel de chaves
Vendo o conteúdo do seu anel de chaves
Como proteger chaves públicas de falsificações
Como o PGP mantêm a trilha das chaves que são válidas?
Como proteger chaves secretas contra exposição
Cancelando uma chave pública
E se você perder sua chave secreta?
Tópicos Avançados
Enviando um texto-código via correio eletrônico: Formato Base-64
Variável de ambiente para o nome do path (trajeto)
Ajustando Parâmetros de Configuração: CONFIG.TXT
Vulnerabilidades
Cuidado com óleo de cobra
Breve Referência do PGP
Assuntos Legais
Agradecimentos
Sobre o Autor
BREVE RESUMO
############
Pretty Good (tm) Privacy - PGP (Privacidade Muito Boa), do software Pretty Good de Phil, é uma aplicação de software criptográfico de alta segurança para MSDOS, UNIX, VAX/VMS e outros computadores. O PGP permite que as pessoas troquem arquivos ou mensagens com privacidade, com autenticação e com conveniência. Com privacidade porque somente as pessoas indicadas a receberem uma mensagem podem lê-la. Com autenticação porque as mensagens que parecem vir de uma determinada pessoa somente podem ter originado dela mesma. Com conveniência porque a privacidade e a autenticação são fornecidas sem qualquer dificuldade pela administração de chaves associada ao software criptográfico convencional. Não é necessário nenhum canal seguro para a troca de chaves entre os usuários, o que torna o PGP mais fácil de ser usado. Isto acontece porque o PGP é baseado em uma nova tecnologia poderosa chamada criptografia de "chave pública".
O PGP combina a conveniência do criptosistema de chave pública Rivest-Shamir-Adleman (RSA) com a velocidade da criptografia convencional, opera sobre coletânea de assinaturas digitais em mensagens, compressão de dados antes de se criptograr, bom projeto ergonômico e sofisticada administração de chaves. O PGP desempenha as funções de chave-publica mais rápido do que a maioria das implementações de software. PGP é criptografia de chave pública para as massas.
O PGP não tem capacidade de comunicação de modem embutido. Para isso, você tem que usar um produto de software separado.
Este documento, "Volume I: Tópicos Essenciais" que explica somente os conceitos essenciais para usar o PGP, deveria ser lido por todos os seus usuários. O "Volume II: Tópicos Especiais" cobre os aspectos avançados do PGP e outros tópicos especiais, pode ser lido pelos seus usuários mais sérios. Nenhum dos volumes explica detalhes da tecnologia básica dos algoritmos criptográficos e das estrutura dos dados.
PORQUE VOCÊ PRECISA DO PGP?
###########################
O motivo é pessoal. É particular. E não interessa a ninguém, somente a você.
Você pode estar planejando uma campanha politica, discutindo seu imposto ou tendo um romance proibido. Ou ainda pode estar fazendo algo que ache não ser ilegal, mas é. Seja o que for, você não quer que sua correspondência eletrônica particular (E-mail) ou que documentos confidenciais sejam lidos por qualquer um. Não há' nada de errado em reivindicar sua privacidade. A Privacidade é tão importante quanto a Constituição.
Talvez você ache que seu E-mail é suficientemente reconhecido e que a criptografia seja injustificável. Se você realmente é um cidadão obediente a lei e que não tem nada a esconder, então, por que você não manda sempre o conteúdo de suas correspondências em cartões postais? Por que não se submete a teste de drogas em investigações? Por que pede um mandato judicial para que a polícia entre em sua casa? Está tentando esconder algo? Se esconde sua correspondência dentro de envelopes, você deve ser um revolucionário ou um traficante. Ou talvez, um louco paranóico. Por um acaso, algum cidadão obediente a lei precisa criptografar sua correspondência eletrônica?
E se todo mundo acreditasse que os cidadãos obedientes a lei deveriam usar cartões postais para correspondência? E quando alguma alma corajosa tentasse assegurar sua privacidade usando um envelope para sua correspondência, isto despertaria suspeitas. Talvez as autoridades queiram abri-lo para ver o que esta 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 simples envelope. Há segurança nos números. Analogicamente, seria bom se todos habitualmente usassem a criptografia em todas as suas correspondências eletrônicas, inocentes ou não, de modo que ninguém despertasse suspeitas quando assegurar, através da criptografia, sua privacidade no correio eletrônico. Pense nisso como uma forma de solidariedade.
Atualmente, se o Governo quiser violar a privacidade de cidadãos comuns, tem que gastar uma certa quantia de dinheiro e tempo para interceptar, abrir e ler o conteúdo de correspondências, para ouvir e possivelmente transcrever conversas por telefone. Este tipo de monitoria de tempo-intensivo não é prático por vários motivos. Isto é feito somente em casos importantes quando parece valer a pena.
Cada vez mais nossas comunicações particulares estão sendo monitoradas por canais eletrônicos. A correspondência eletrônica está substituindo gradualmente o correio convencional. Mensagens de correio eletrônico são facilmente interceptadas e examinadas buscando-se palavras-chaves de interesse. Isto pode ser feito sem dificuldades, freqüentemente, automaticamente e indetectavelmente em grande escala. Cabogramas internacionais já são examinados deste modo pela NSA.
Estamos nos movendo em direção a um futuro onde uma nação será entrecruzada com redes de dados de fibras ópticas de alta capacidade, interligadas juntamente com todos os computadores pessoais crescentes em toda parte. O correio eletrônico será padrão para todos e não a novidade que é hoje. O governo protegerá nosso E-mail com protocolos de criptografia projetados por ele mesmo. Provavelmente, muitas pessoas consentirão com isso. Mas talvez algumas pessoas preferirão suas próprias medidas de proteção.
A lei 266 do Senado, lei anti-crime de 1991 que abrangia vários assuntos, tinha escondida em suas linhas uma medida duvidosa. Se esta resolução ilicitante tivesse se tornado lei de verdade, teria forçado fabricantes de equipamentos de comunicação de segurança a inserir "alçapões" especiais em seus produtos, de modo que o governo pudesse ler mensagens criptografadas de qualquer pessoa. Esta lei diz: "É o senso 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 do texto plano de voz, dados e outras comunicações quando adequadamente autorizados por lei." Esta medida foi anulada depois de rigoroso protesto dos liberais civis e grupos industriais.
Em 1992, a proposta de escuta da Telefonia Digital do FBI foi apresentada ao Congresso. Esta exigia que todos os fabricantes de equipamentos de comunicação incluíssem portas especiais de escuta remota que possibilitasse ao FBI, em seus escritórios, escutar remotamente todas as formas de comunicação eletrônica. O fato desta proposta nunca ter atraído nenhum patrocinador no Congresso em 1992, devido a oposição civil, não impediu que ela fosse reintroduzida em 1994.
O mais alarmante de tudo é a audaciosa iniciativa da nova politica de criptografia da Casa Branca, em desenvolvimento na NSA desde o início da administração Bush e descoberta em 16 de abril de 1993. O centro desta iniciativa é um dispositivo de criptografia planejado pelo governo, chamado de chip "Clipper", contendo um novo algoritmo de criptografia secreto da NSA. O Governo está incentivando a indústria privada a projetar este dispositivo em todos os seus produtos de comunicação de segurança como telefones de segurança, FAX de segurança, etc. A AT&T está agora colocando o "Clipper" em seus produtos de som (voz) de segurança. A pegada é o seguinte: na hora de fabricar, cada chip Clipper será carregado com sua única chave própria, a qual o Governo terá uma cópia, colocada em título. Nada que se preocupar, porque o Governo promete que usará estas chaves para ler seu tráfico somente quando autorizado devidamente por lei. Claro que para torná-lo completamente efetivo o próximo passo mais lógico seria considerar ilegal outras formas de criptografia.
Se a 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 contrabandistas de armas e drogas, as empresas de defesa, companhias petroleiras e outras grandes corporações. Mas, pessoas comuns e organizações politicas populares muitas vezes não tem acesso a tecnologia criptográfica disponível de chave pública de "nível militar". Até' então.
O PGP dá poderes as pessoas para que tenham em suas próprias mãos as suas privacidades. Existe uma crescente necessidade social do PGP. Foi por isto que o escrevi.
COMO FUNCIONA
#############
Seria bom se você tivesse algum contato com o conceito geral de criptografia e particularmente, com criptografia de chave pública. Entretanto, aqui estão algumas observações introdutórias sobre criptografia de chave pública.
Primeiramente, algumas terminologias elementares. Suponhamos que eu queira lhe mandar uma mensagem, mas eu não quero que ninguém além de você leia. Posso "criptografar", ou "codificar" a mensagem, isto é, misturá-la de uma maneira completamente confusa, apresentando-a ilegível para qualquer um, menos para você que é o destinatário desejado da mensagem. Forneço uma "chave" criptográfica para criptografar a mensagem e você terá que usar a mesma chave para decodificá-la ou "descriptografá-la". De qualquer forma é assim que funciona em criptosistemas convencionais de "chave-simples".
Em criptosistemas convencionais, tais como o modelo do Padrão Criptográfico de Dados Federal dos Estados Unidos (DES - Data Encryption Standard), uma chave simples é usada tanto para criptografar quanto para descriptografar. Isto significa que, inicialmente, uma chave deve ser transmitida por canais seguros, de modo que ambas as partes a conheçam antes que as mensagens criptografadas possam ser enviadas por canais não-seguros. Tudo isto pode ser inconveniente. Se você tem um canal seguro para trocar chaves, então por que precisa tanto da criptografia?
Em criptosistemas de chave pública, todos tem duas chaves afins complementares: uma chave divulgada publicamente e uma outra secreta. Cada chave abre o código que a outra chave produz. Conhecendo a chave pública, não é passível deduzir a chave secreta correspondente. A chave pública pode ser divulgada e disseminada amplamente através de uma rede de comunicação. Este protocolo fornece privacidade sem a necessidade do mesmo tipo de canais seguros que um criptosistema convencional exige.
Qualquer um pode usar uma chave pública do destinatário para criptografar uma mensagem, somente ele poderá' descriptografá-la utilizando sua chave secreta correspondente. Ninguém além do destinatário pode descriptografá-la, porque ninguém mais tem acesso a sua chave secreta. Nem mesmo a pessoa que criptografou a mensagem pode descriptografá-la.
A autenticação da mensagem também é fornecida. A própria chave secreta do remetente pode ser usada para criptografar uma mensagem, assim como "assiná-la". Gera-se uma assinatura digital de uma mensagem que o destinatário (ou qualquer pessoa) pode verificar usando a chave pública do remetente para descriptografá-la. Isto prova que o remetente é o verdadeiro emissor da mensagem e que esta não foi subseqüentemente alterada por ninguém, pois somente o remetente possui a chave secreta que gera aquela assinatura. A falsificação de uma mensagem assinada é impossível e o remetente mais tarde não pode dizer que sua assinatura não é verdadeira.
Estes dois processos podem ser combinados para fornecer tanto privacidade quanto para autenticar, primeiramente, assinando uma mensagem com sua própria chave secreta e depois criptografando a mensagem assinada com a chave pública do destinatário. O destinatário reverte estes passos, primeiro, descriptografando a mensagem com sua própria chave secreta e então, verificando a assinatura anexa automaticamente pelo software do destinatário.
Por ser o algoritmo de criptografia de chave pública muito mais lento que a criptografia convencional de chave-simples, a criptografia é melhor executada usando um algoritmo convencional de criptografia de chave pública de alta qualidade para codificar a mensagem. A mensagem original não codificada é chamada "texto plano" (plain text). Num processo invisível ao usuário, uma chave aleatória temporária, criada apenas para esta única "seção", é usada para codificar convencionalmente o arquivo de texto plano. Assim, a chave pública do destinatário é usada para codificar esta chave convencional aleatória temporária. Esta chave da "seção" convencional da chave pública codificada é enviada junto com o texto codificado (chamado "texto código") para o destinatário. O destinatário usa sua própria chave secreta para recuperar esta chave da sessão temporária e depois, a utiliza para rodar o algoritmo rápido de chave simples convencional para descodificar a mensagem toda do texto codificado.
As chaves públicas são guardadas em "certificados de chaves" individuais que incluem o user ID (isto é, o nome da pessoa) do proprietário da chave, o fuso horário de quando o par de chaves foi gerado e os dados atuais da chave. Os certificados da chave pública contem os dados da chave pública, enquanto que os certificados da chave secreta contem os dados da chave secreta. Cada chave secreta também é criptografada com sua própria senha, em caso de ser roubada. Um arquivo de chaves ou "anel de chaves" contem um ou mais desses certificados de chaves. Anéis de chaves públicas contem certificados de chaves públicas e anéis de chaves secretas contem certificados de chaves secretas.
As chaves também são internamente relacionadas por uma "Chave de ID" ("Chave de Identificação"), que é uma "abreviação" da chave pública (os primeiros 64 bits significativos da grande chave pública). Quando esta chave de ID é exibida, são mostrados, por um curto período de tempo, apenas os 32 bits mais baixos. Enquanto que muitas chaves podem dividir o mesmo user ID, por razões práticas duas chaves não dividem a mesma chave de ID.
O PGP utiliza os "conteúdos das mensagens" (message digests) para formar as assinaturas. Conteúdo da mensagem é uma função hash que mistura criptograficamente 128 bits de uma forma única. É algo análogo a uma "checksum" ou código de verificação de erro CRC (Cyclic Reduncancy Check), na qual "representa" compactamente a mensagem e é usada para detectar mudanças nesta. Ao contrário de um CRC, entretanto, é computacionalmente impossível para um atacante planejar uma mensagem substituta que produza um conteúdo de mensagem idêntico. Este conteúdo é criptografado pela chave secreta para formar uma assinatura.
Documentos são assinados prefixando-os com certificados de assinatura, os quais contem: a chave de ID da chave que foi usada para assiná-la, um conteúdo de mensagem assinada pela chave secreta do documento e o fuso horário de quando a assinatura foi produzida. A chave de ID é usada pelo destinatário para verificar a chave pública do remetente que checa a assinatura. O software do destinatário automaticamente verifica a chave pública do remetente e o user ID no anel da chave pública do destinatário.
Arquivos criptografados são prefixados pela chave de ID da chave pública usada para criptografá-los. O destinatário utiliza este prefixo de mensagem da chave de ID para verificar a chave secreta necessária para descriptografar a mensagem. O software do destinatário automaticamente verifica a chave de descriptografia secreta necessária no anel de chave secreta do destinatário.
Estes dois tipos de anéis de chaves constituem o método principal de armazenamento e administração das chaves pública e secreta. Melhor do que manter chaves individuais em arquivos separados de chaves, estas são agrupadas em anéis de chave para facilitar a verificação automática das chaves, seja pela chave de ID, seja pelo user ID. Cada usuário possui seu próprio par de anéis de chaves. Uma chave pública individual é temporariamente mantida em um arquivo separado até' que você a envie a algum amigo, que irá então adicioná-la a seu anel de chaves.
INSTALANDO O PGP
################
A versão 2.6 do PGP para MSDOS vem em um arquivo compactado chamado PGP26.ZIP (cada versão nova terá um nome na forma "PGPxy.ZIP", isto é, a versão numero xy do PGP). Este arquivo pode ser descompactado com o utilitário de descompressão shareware PKUNZIP, ou o utilitário do UNIX "unzip". O pacote da versão do PGP contem um arquivo de README.DOC que sempre deve ser lido antes de instalar o PGP. Este arquivo de README.DOC contem novidades de correções recentes nesta versão, bem como, informações sobre o que tem em todos os outros arquivos encontrados na versão.
Se você já tiver uma versão mais antiga do PGP, deve renomeá-la ou apagá-la para evitar conflitos de nomes com o novo PGP.
Para instalar o PGP no seu sistema MSDOS, terá apenas que copiar o arquivo do PGPxx.ZIP do arquivo compactado para o diretório apropriado no seu disco rígido (como C:\PGP) e descompactá-lo com o PKUNZIP. Para obter melhores resultados, terá também que modificar seu arquivo de AUTOEXEC.BAT, como descrito mais adiante neste manual; poderá' fazer isto mais tarde depois de brincar um pouco com o PGP e ler um pouco mais este manual. Se você nunca rodou o PGP antes, o primeiro passo depois da instalação (e leitura deste manual) é rodar o comando de geração da chave do PGP "pgp -kg".
A instalação em Unix e VAX/VMS é praticamente igual a instalação em MSDOS, mas talvez terá que compilar primeiro o código fonte. Um makefile (arquivo que quando processado faz os ajustes necessários no ambiente e gera um arquivo executável) do Unix obtido através da versão original para este propósito.
Para maiores detalhes na instalação, veja, em manual a parte, o Guia de Instalação do PGP no arquivo SETUP.DOC incluído nesta versão. Este descreve detalhadamente como instalar o diretório do PGP e seu arquivo AUTOEXEC.BAT e como utilizar o PKUNZIP para instalá-lo.
COMO USAR O PGP
###############
Vendo um Resumo de Uso
~~~~~~~~~~~~~~~~~~~~~~
Para ver um breve resumo do uso dos comandos para o PGP, digite apenas:
pgp -h
Criptografando uma Mensagem
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Para criptografar um arquivo de texto plano com a chave pública do destinatário,
digite:
pgp -e arquivo_texto userID_do_destinatário
Este comando produz um arquivo de texto código chamado arquivo_texto.pgp
(textfile.pgp). Um exemplo específico é:
pgp -e carta.txt Alice
ou
pgp -e carta.txt "Alice S"
No primeiro exemplo o PGP vai até' seu arquivo de anel de chave pública "pubring.pgp" e procura algum certificado de chave pública que contenha a seqüência "Alice" em qualquer lugar no campo do userID. No segundo exemplo ele encontra qualquer userID que contenha "Alice S". Não se deve usar espaços na seqüência na linha de comando, a menos que coloque entre aspas. A procura não diferencia letras maiúsculas de minúsculas. Se ele encontrar uma chave pública que encaixe, a utiliza para criptografar o arquivo de texto plano "carta.txt", produzindo um arquivo de texto código chamado "carta.pgp".
O PGP tenta compactar o texto plano antes de criptografá-lo, aumentando assim muito mais a resistência a criptoanalises. Desta maneira o arquivo de texto código provavelmente será menor do que o arquivo de texto plano.
Se quiser enviar esta mensagem criptografada através de canais de correio eletrônico, transforme-a em formato de impressão ASCII "Base-64", adicionando a opção -a, como será descrito mais adiante.
Criptografando uma Mensagem para Destinatários Múltiplos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Se quiser enviar a mesma mensagem para mais de uma pessoa, pode especificar a criptografia para vários destinatários, onde qualquer um deles pode descriptografar o mesmo arquivo texto código. Para especificar os vários destinatários, apenas acrescente mais userIDs na linha de comando, desta maneira: pgp -e carta.txt Alice Bob Carol
Isto cria um arquivo de texto código chamado carta.pgp que pode ser descriptografada por Alice ou Bob ou Carol. Pode-se especificar quantos destinatários desejar.
Assinando uma Mensagem
~~~~~~~~~~~~~~~~~~~~~~
Para assinar um arquivo de texto plano com sua chave secreta, digite:
pgp -s arquivo_texto [-u seu_userID]
Observe que os [colchetes] indicam um campo opcional, assim, na verdade, não são digitados.
Este comando produz um arquivo assinado chamado arquivo_texto.pgp. Um exemplo específico é:
pgp -s carta.txt -u Bob
O PGP procura no arquivo de anel de chave secreta "secring.pgp" algum certificado de chave secreta que contenha a seqüência "Bob" em qualquer lugar no campo do userID. Seu nome é Bob, não é? A procura não diferencia letras maiúsculas de minúsculas. Se ele encontrar uma chave secreta que se encaixe, a utiliza para assinar o arquivo de texto plano "carta.txt", produzindo um arquivo assinado chamado "carta.pgp".
Se você não colocar o userID, a primeira chave do seu anel de chave secreta é usada como padrão para sua assinatura.
O PGP tenta compactar a mensagem depois de assiná-la. Por isso, o arquivo assinado provavelmente sera menor que o arquivo original, o que é muito útil em aplicações de arquivamento. Entretanto, ele devolve, mesmo se a mensagem original estiver em texto ASCII comum, um arquivo ilegível aos olhos humanos. Seria bom se ele pudesse fazer um arquivo assinado que fosse, ainda, diretamente legível para o ser humano. Isto Seria muito útil quando se quisesse enviar uma mensagem assinada via correio eletrônico.
Para assinar mensagens de correio eletrônico, onde, possivelmente, você quer que o resultado seja humanamente legível, com certeza é mais conveniente usar uma característica de CLEARSIG, explicada mais adiante. Esta permite que a assinatura seja aplicada em forma de impressão no final do texto e que também inabilite a compressão do texto. Isto quer dizer que o texto ainda está humanamente legível pelo destinatário, mesmo se este não usar o PGP para verificar a assinatura. Tudo isto é explicado em detalhes na seção entitulada "CLEARSIG - Permite que Mensagens Assinadas sejam Encapsuladas como Texto Limpo", no volume de Tópicos Especiais. Se você não quiser ler aquela seção do manual, pode ver como se parece uma mensagem de correio eletrônico assinada desta forma, com este exemplo:
pgp -sta mensagem.txt
O PGP cria uma mensagem assinada no arquivo "mensagem.asc", condensada do texto original, ainda humanamente legível, anexada a um certificado de assinatura ASCII imprimível, pronta para ser enviada por um sistema de correio eletrônico. Este exemplo supõe que você esteja usando os ajustes normais que possibilitem o sinalizador de CLEARSIG no arquivo de configuração.
Assinando e depois Criptografando ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Para assinar um arquivo de texto plano com sua chave secreta e depois criptografá-lo com a chave pública do destinatário:
pgp -es arquivo_texto userID_do_destinatário [-u seu_userID]
Observe que os [colchetes] indicam um campo opcional, assim, na verdade, não é preciso digitá-los.
Este exemplo produz um arquivo aninhado de texto código chamado arquivo_texto.pgp. Sua chave secreta para criar a assinatura é automaticamente procurada no seu anel de chave secreta através de seu userID. A chave de criptografia pública do destinatário é automaticamente procurada no seu anel de chave pública através do userID. Se você não colocar o userID do destinatário na linha de comando, lhe será perguntado.
Se não colocar o seu próprio userID, a primeira chave no seu anel de chave secreta é usada como padrão para sua assinatura.
Observe que o PGP tenta compactar o texto plano antes de criptografá-lo.
Se você quiser enviar esta mensagem criptografada via correio eletrônico, transforme-a em formato "Base-64" ASCII, adicionando a opção -a, como descrito mais adiante.
Podem ser especificados múltiplos destinatários, adicionando mais userIDs a linha de comando.
Usando Somente Criptografia Convencional
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Algumas vezes, você precisa criptografar somente um arquivo da maneira antiquada, ou seja, com a criptografia convencional de chave simples. Esta escolha é muito útil quando se quer proteger arquivos compactados que serão armazenados mas não enviados. Desde que a mesma pessoa que criptografou o arquivo também a descriptografe, a criptografia de chave pública realmente não é necessária.
Para criptografar o arquivo de texto plano utilizando apenas a criptografia convencional, digite:
pgp -c arquivo_texto
Este exemplo criptografa o arquivo de texto plano chamado arquivo_texto, produzindo um arquivo de texto código chamado arquivo_texto.pgp, sem usar a criptografia de chave pública, anéis de chave, userIDs ou qualquer uma dessas coisas. É pedido sua frase-senha para utilizá-la como uma chave convencional que codificará' o arquivo. Esta frase-senha não precisa ser (e, de fato, não deve ser) a mesma frase-senha que você utiliza para proteger sua própria chave secreta. Observe que o PGP tenta compactar o texto plano antes de criptografá-lo.
O PGP não criptografara o mesmo texto plano do mesmo modo duas vezes, mesmo se você usar a mesma frase-senha em ambas as vezes.
Descriptografando e Verificando Assinaturas
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Para descriptografar um arquivo criptografado ou verificar a integridade da assinatura de um arquivo assinado:
pgp arquivo_de_texto_código [-o arquivo_de_texto_plano]
Observe que os [colchetes] indicam um campo opcional, assim, na verdade, não precisam ser digitados.
Supõe-se que o nome do arquivo de texto código tenha uma extensão padrão do ".pgp". O nome opcional do arquivo de saída do texto plano específica onde colocar a saída do texto plano processado. Se não for especificado nenhum nome, é usado o nome do arquivo de texto código sem extensão. Se uma assinatura estiver aninhada dentro de um arquivo criptografado, este é descriptografado automaticamente e a integridade da assinatura é verificada. O userID completo do assinante é mostrado.
Observe que o "desempacotamento" do arquivo de texto código é completamente automático, sem considerar se ele está so' assinado, so' criptografado ou os dois. O PGP usa o prefixo da chave de ID (chave de identificação) no arquivo de texto código para encontrar automaticamente, no seu anel de chave secreta, a chave de descriptografia secreta apropriada. Se existir uma assinatura aninhada, ele, então, usa o prefixo de chave de ID nesta assinatura para encontrar automaticamente, no seu anel de chave pública, a chave pública apropriada e para depois verificá-la. Se todas as chaves corretas já foram apresentadas nos seus anéis de chave, não é preciso a intervenção do usuário, mas, se necessário, será pedido a sua senha para sua chave secreta. Se o arquivo de texto código foi convencionalmente criptografado sem a criptografia de chave pública, o PGP reconhece este processo e pede a sua frase-senha para, convencionalmente, descriptografá-lo.
Administrando Chaves
~~~~~~~~~~~~~~~~~~~~
Desde a época de Júlio César, a pior parte da criptografia foi a administração de chaves. Uma das principais características que distinguem o PGP é sua sofisticada administração de chaves.
Geração de Chaves de RSA
^^^^^^^^^^^^^^^^^^^^^^^^
Para gerar seu próprio e único par de chaves pública/secreta de um tamanho
especificado, digite:
pgp -kg
O PGP mostra uma lista de tamanhos de chaves recomendados (baixo grau comercial, alto grau comercial ou grau "militar") e pede pelo tamanho de chave que deseja, acima de milhares de bits. Quanto maior a chave, maior a segurança, mas perde em velocidade.
Também pede por um userID que, na verdade, é o seu nome. É uma boa idéia usar o seu nome completo como userID, porque assim, há' pouco risco de outras pessoas usarem a chave pública errada para criptografar mensagens para você. No userID são permitidos espaços e pontuações. Seria bom se você colocasse seu endereço eletrônico entre < > depois de seu nome, deste modo:
Robert M. Smith <rms@xyzcorp.com>
Se você não tiver um endereço eletrônico, use seu numero telefônico ou qualquer outra informação que é so' sua, pois ajudaria a garantir que seu userID é único.
O PGP também pede uma "frase senha" para proteger sua chave secreta se por acaso cair em mãos erradas. Ninguém pode usar seu arquivo de chave secreta sem esta frase senha. Esta frase é como uma senha, com exceção que ela pode ser uma expressão completa ou uma frase com muitas palavras, espaços, pontuação ou qualquer coisa mais que queira colocar. Não a perca pois não existe meio de recuperá-la. Esta frase senha será necessária mais tarde, toda vez que usar sua chave secreta. Ela diferencia letras maiúsculas de minúsculas e não deve ser muito curta ou fácil de se adivinhar. Nunca é mostrada na tela. Não a deixe escrita em qualquer lugar, onde alguém mais pode vê-la e não a guarde em seu computador. Se não quiser uma frase senha (tolo você, não!), pressione apenas return (ou enter) quando for pedida.
O par de chaves pública/secreta é derivado de uma grande quantidade de números verdadeiramente aleatórios que, na verdade, são originados principalmente da medida dos intervalos entre seus toques no teclado. O software pedirá para você entrar com um texto aleatório para ajudá-lo a acumular alguns bits aleatórios para as chaves. Quando pedido, deverá digitar algumas teclas com intervalos de tempos razoavelmente aleatórios entre si e isto não quebraria a formação dos caracteres reais que você digita ao acaso. Um pouco da aleatoriedade é derivada da imprecisão do conteúdo do que você digita. Assim, não digite apenas seqüências repetidas de caracteres.
Observe que a geração de chave RSA é um processo longo. Pode levar alguns segundos para uma chave pequena num processador rápido ou muitos minutos para uma chave grande num antigo IBM PC/XT. O PGP indicará visualmente o processo durante a geração da chave.
O par de chaves gerado sera colocado nos anéis de chaves pública e secreta. Poderá mais tarde usar a opção de comando -kx para extrair (copiar) sua nova chave pública do seu anel de chave pública e colocá-la num arquivo separado adequado para a sua distribuição a seus amigos. O arquivo de chave pública pode ser enviado para seus amigos para a inclusão em seus anéis de chave pública. Naturalmente, matenha com você seu arquivo de chave secreta e inclua-o no seu anel de chave secreta. Cada chave secreta num anel de chave é protegida individualmente com sua própria frase senha.
Nunca de sua chave secreta a alguém. Pela mesma razão, não gere pares de chave para seus amigos. Cada um deve gerar seu próprio par de chaves. Tenha sempre o controle físico da sua chave secreta e não se arrisque em expô-la, armazenando-a em seu próprio computador pessoal.
Se o PGP acusar que não consegue achar o Guia do Usuário do PGP em seu computador e se recusar a gerar um par de chaves sem ele, leia a explicação do parâmetro NOMANUAL na seção "Ajustando Parâmetros de Configuração" no volume de Tópicos Especiais.
Acrescentando uma Chave a seu Anel de Chave
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Algumas vezes, você vai querer acrescentar a seu anel de chave uma chave que lhe foi dada por alguém na forma de um arquivo chave.
Para acrescentar os conteúdos do arquivo de chave secreta ou pública a seu anel de chave secreta ou pública (observe que os [colchetes] indicam um campo opcional):
pgp -ka arquivo_de_chave [anel_de_chave]
O padrão de extensão do arquivo de chave é ".pgp". O padrão do nome opcional do arquivo do anel de chave é "pubring.pgp" ou "secring.pgp", dependendo se o arquivo de chave contem uma chave pública ou secreta. Você pode especificar um nome diferente de arquivo de anel de chave, com a extenso padrão de ".pgp".
Se a chave já existir em seu anel de chave, o PGP não a acrescentará novamente. Todas as chaves no arquivo de chave são acrescentadas ao anel de chave, menos as duplicadas.
Mais para frente no manual, explicaremos o conceito de certificar chaves com assinaturas. Se a chave que foi adicionada tiver assinaturas anexas para certificá-la, estas são adicionadas juntamente com a chave. Se a chave já existir no seu anel de chave, o PGP apenas funde as novas assinaturas certificadas, que você não possui, 'aquela chave.
O PGP foi originalmente projetado para manusear anéis de chave pessoais pequenos. Se você realmente quiser manusear anéis de chave grandes, veja a seção "Manuseando Anéis de Chave Pública Grandes" no volume de Tópicos Especiais.
Removendo uma Chave ou um UserID do seu Anel de Chave Pública
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Para remover uma chave ou um userID do seu anel de chave pública:
pgp -kr userID [anel_de_chave]
O PGP procura por um userID específico no seu anel de chave e se encontra uma combinação, o remove. Lembre-se que qualquer fragmento do userID sera suficiente para uma combinação. O nome opcional do arquivo do anel de chave é considerado como sendo, literalmente, "pubring.pgp". Pode ser omitido ou você pode especificar o "secring.pgp" se quiser remover uma chave secreta. Pode também especificar um nome diferente do arquivo de anel de chave. A extensão padrão do anel de chave é ".pgp".
Se existir mais de um userID para esta chave, será perguntado se você quer remover apenas o userID que especificou, enquanto que o PGP deixa a chave e seus outros userIDs intactos.
Extraindo (Copiando) uma Chave do seu Anel de Chave
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Para extrair (copiar) uma chave do seu anel de chave pública ou secreta:
pgp -kx userID arquivo_de_chave [anel_de_chave]
O PGP cópia sem destruir a chave especificada pelo userID do seu anel de chave pública ou secreta para o arquivo de chave especificado. Isto é, particularmente, útil se quiser dar uma cópia da sua chave pública para alguém.
Se a chave tiver algumas assinaturas certificadas anexadas ao seu anel de chave, estas são copiadas juntamente com a chave.
Se quiser a chave extraída apresentada em caracteres ASCII, apropriados para propósitos de correio eletrônico, use as opções -kxa.
Vendo os Conteúdos de seu Anel de Chave Pública
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Para ver o conteúdo de seu anel de chave pública:
pgp -kv[v] [userID] [anel_de_chave]
O PGP lista todas as chaves do anel de chave que combine com a subseqüência especificada do userID. Se você omitir o userID, ele lista todas as chaves do anel de chave. O nome opcional do arquivo de anel de chave é considerado como sendo "pubring.pgp". Pode ser omitido ou, se quiser listar as chaves secretas, pode especificar como "secring.pgp". Você também pode, se quiser, especificar um nome diferente do arquivo de anel de chave. A extensão padrão de anel de chave é ".pgp".
Mais adiante no manual, explicaremos o conceito de certificar chaves com assinaturas. Para ver todas as assinaturas certificadas anexas a cada chave, use a opção -kvv:
pgp -kvv [userID] [anel_de_chave]
Se você quiser especificar um arquivo de anel de chave em particular, mas deseja ver todas as suas chaves, tente esta escolha alternativa:
pgp arquivo_de_chave
Se a opção de comando não for especificada, o PGP lista todas as chaves do arquivo_de_chave.pgp e também tenta acrescentá-las a seu anel de chave, se não estiverem nele.
Como Proteger as Chaves Públicas de Falsificações
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Num criptosistema de chave pública, você não precisara proteger as chaves públicas da exposição. Na verdade, seria melhor se elas fossem disseminadas. Mas, é importante proteger as chaves públicas de falsificações, para ter certeza que uma determinada chave realmente pertença a quem ela aparenta pertencer. Talvez isto seja a vulnerabilidade mais importante de um criptosistema de chave pública. Vamos considerar uma grande desgraça e então como evitá-la com segurança usando o PGP.
Suponhamos que queira enviar uma mensagem particular para Alice. Você transfere o certificado de chave pública dela de um BBS (Bulletin Board System), criptografa uma carta com esta chave pública e a envia para ela através do serviço de correio eletrônico da BBS.
Infelizmente, sem que você e Alice saibam, um outro usuário chamado Charlie infiltrou na BBS e gerou uma chave pública para ele com o userID de Alice anexo. Ele secretamente substitui sua chave falsa pela verdadeira chave pública de Alice. Você inconscientemente usa, em vez da chave pública dela, esta chave falsa que pertence a Charlie. Tudo parece normal porque esta chave falsa tem o userID de Alice. Agora Charlie pode decodificar a mensagem enviada para ela porque tem a combinação da chave secreta. Ele pode até' mesmo criptografar novamente a mensagem decodificada, usando a verdadeira chave pública de Alice e mandar para ela de uma forma que ninguém suspeitaria da maldade. Além disso, pode produzir assinaturas bem parecidas com a dela, usando sua chave secreta, pois todos utilizarão a chave pública falsa para verificar as assinaturas de Alice.
O único jeito de evitar esta desgraça é prevenir todo mundo das falsificações de chaves públicas. Se você recebeu a chave pública de Alice diretamente dela, não há' problema. Mas, é complicado se ela estiver a milhares de quilômetros de distância, ou simplesmente, inacessível.
Talvez você consiga a chave pública de Alice de um amigo muito confiável, David, e ele sabe que possui uma boa cópia da chave pública dela. David poderia assinar a chave pública de Alice, garantindo a integridade da chave. Ele criaria esta assinatura com sua própria chave secreta.
Isto poderia criar um certificado de chave pública assinado, indicando que a chave de Alice não é falsificada. Para isso, você deve ter uma boa cópia da chave pública de David para verificar a assinatura. Talvez ele também poderia fornecer a Alice uma cópia assinada de sua chave pública. David esta assim servindo de "apresentador" entre você e Alice.
Este certificado assinado de chave pública de Alice pode ser transferida por David ou Alice para a BBS, de onde você poderá copiá-la mais tarde. Poderia então, verificar a assinatura através da chave pública de David e assim assegurar que é realmente a chave pública de Alice. Nenhum impostor pode enganá-lo sem demonstrar sua própria chave falsa como sendo a de Alice porque ninguém mais pode forjar assinaturas feitas por David.
Uma pessoa totalmente confiável poderia até' especializar-se em dar este serviço de "apresentação" de usuários, fornecendo assinaturas com os seus certificados de chave pública. Esta pessoa confiável, pode ser considerada como um "servidor de chaves" ou como uma "Autoridade de Garantia". Alguns certificados de chave pública carregando a assinatura do servidor de chaves podem ser considerados como realmente pertencentes a quem aparentam pertencer. Todos os usuários que queiram participar precisariam de uma boa cópia somente da chave pública do servidor de chaves, de uma forma que sejam verificadas as assinaturas do servidor.
Um servidor de chaves confiável e centralizado ou uma Autoridade de Garantida é apropriado especialmente para grandes corporações centralmente controladas por varias pessoas ou para instituições governamentais. Alguns meios institucionais usam hierarquias de Autoridades de Garantia.
Para conseguir ambientes "estilo guerrilha" populares mais descentralizados que permitam todos os usuários atuarem como apresentadores confiáveis para seus amigos, provavelmente, trabalhariam melhor que um servidor de chaves centralizado. O PGP tende a enfatizar esta escolha orgânica não-instituicional descentralizada. Pois, reflete melhor o jeito que os humanos interagem em um nível social pessoal e permite que as pessoas escolham melhor quem podem confiar na administração de chaves.
Todo esse trabalho para proteger as chaves públicas de falsificações é simplesmente o problema mais difícil nas aplicações práticas de chave pública. É o calcanhar de Aquiles da criptografia de chave pública e a maioria da complexidade do software é dedicada `a solução deste problema.
Você deve usar uma chave pública somente depois de ter certeza que é uma chave boa, que não foi falsificada e que realmente pertence a pessoa que afirma pertencer. Somente se tem certeza disso se você conseguiu este certificado de chave pública diretamente de seu proprietário, ou se esta carrega a assinatura de uma outra pessoa que você confia e de quem já tem uma chave pública boa. O userID também deve ter o nome completo do proprietário, não apenas o primeiro nome.
Não importa quanto tentado você fique, com certeza ficará', nunca, NUNCA utilize e confie numa chave pública que transferiu de uma BBS, a menos que esteja assinada por alguém que você confie. Aquela chave pública não certificada poderá ter sido falsificada por qualquer pessoa, talvez até' pelo administrador da BBS.
Se lhe pedirem para assinar o certificado de chave pública de alguém, certifique-se que realmente pertence a pessoa mencionada no userID daquele certificado. Isto porque sua assinatura neste certificado de chave pública é uma promessa feita por você que esta chave realmente pertence aquela pessoa. Outras pessoas que confiam em você aceitarão a chave pública dela porque carrega sua assinatura. Não é aconselhável confiar no que dizem, não assine a chave pública a menos que tenha conhecimento em primeira mão que esta realmente pertence a pessoa. Preferivelmente, você deve assiná-la somente se conseguir diretamente dela.
Para assinar uma chave pública, tem que ter mais certeza da propriedade da chave do que simplesmente a vontade de utilizá-la para criptografar uma mensagem. Para ficar totalmente convencido da validade de uma chave, deve bastar a certificação das assinaturas de apresentadores confiáveis. Mas, para assinar por si so' uma chave deve ter um conhecimento próprio e de primeira mão de quem a possui. Talvez possa telefonar para o proprietário da chave e ler o arquivo chave para ele e confirmar se você realmente tem a chave correta, além de certificar que está falando com a pessoa certa. Para mais detalhes, veja a seção chamada "Verificando uma Chave Pública pelo Telefone" no volume de Tópicos Especiais.
Tenha em mente que sua assinatura num certificado de chave pública não garante a integridade da pessoa, mas sim da chave pública. Você não está arriscando sua credibilidade quando assina a chave pública de um sociopata, se tiver completamente certo que a chave realmente pertence a ele. Outras pessoas aceitariam a chave como pertencendo a ele, simplesmente porque você a assinou (considerando que eles confiam em você), mas não confiariam no proprietário da chave. Confiar em uma chave não é a mesma coisa que confiar no proprietário da chave.
A confiança não é necessariamente transferível. Tenho um amigo que sei que não mente, é uma pessoa ingênua que acredita que o Presidente não mente. Isto não significa que eu acredito que o Presidente não mente. É somente senso comum. Se confio na assinatura de Alice em uma chave e Alice confia na assinatura de Charlie em uma chave, isto não implica que tenho que confiar na assinatura dele.
Na esperança que a maioria das pessoas confiam em pelo menos um dos apresentadores que garantem a validade da sua chave pública, é uma ótima idéia manter sua chave pública a mão, com uma lista de assinaturas certificadas originárias de vários "apresentadores". Você pode colocar em varias BBSs sua chave junto com sua coleção de assinaturas certificantes. Se assinar a chave pública de alguém, envie-a para a BBS juntamente com sua assinatura, de forma que estas possam ser acrescentadas a coleção de credenciais públicas da BBS de tal modo que possam ser publicamente acessadas por outros usuários.
O PGP mantêm a trilha das chaves que estão no seu anel de chave pública e devidamente certificadas com as assinaturas dos apresentadores que você confia. Tudo que você tem a fazer é dizer ao PGP quais são as pessoas que considera confiáveis como apresentadores, você mesmo certifica suas chaves com sua própria chave confiável definitiva. O PGP pode retirá-la de lá, validando automaticamente qualquer outra chave que tenha sido assinada por seus apresentadores indicados. E claro, você mesmo pode assinar diretamente mais chaves. Falaremos sobre isto mais adiante.
Certifique-se que ninguém mais pode falsificar o seu próprio anel de chave pública. Para verificar um certificado novo de chave pública assinado, você deve definitivamente depender da integridade das chaves públicas confiáveis que já estejam no seu próprio anel de chave pública. Tenha sempre o controle físico do seu anel de chave pública, de preferência no seu próprio computador pessoal, pois é melhor do que mantê-la em um sistema multi-usuário; faça a mesma coisa com sua chave secreta. Tudo isto para proteger sua chave pública de falsificações, e não da exposição. Mantenha uma cópia reserva confiável de seu anel de chave pública e de seu anel de chave secreta no modo protegido contra gravação.
A partir do momento que sua própria chave pública confiável é usada como uma autoridade final para direta ou indiretamente certificar todas as outras chaves no seu anel de chaves, ela se torna a chave mais importante na proteção contra falsificações. Para detectar alguma falsificação da sua própria chave pública confiável definitiva, o PGP pode ser configurado para comparar automaticamente sua chave pública com uma cópia reserva no modo protegido contra gravação. Para maiores detalhes, veja a descrição do comando de verificação de anel de chaves "-kc" no volume de Tópicos Especiais.
O PGP geralmente pressupõe que você tenha a segurança física do seu sistema e de seus anéis de chaves, bem como uma cópia do próprio PGP. Se um intruso conseguir falsificar utilizando seu disco, então teoricamente conseguira falsificar utilizando o próprio PGP, causando dúvidas quanto a proteção e talvez o PGP terá que detectar falsificações com chaves.
Um outro jeito complicado de proteger todo seu anel de chaves de falsificações é assiná-lo com sua própria chave secreta. Poderá fazer isto produzindo um certificado de assinatura separado do anel de chave pública, assinando-o com as opções "-sb" (veja a sessão chamada "Separando Assinaturas de Mensagens" no Guia do usuário do PGP, volume de Tópicos Especiais). Infelizmente, você ainda terá que manter uma cópia confiável separada de sua própria chave pública, com a finalidade de verificar a assinatura que você mesmo fez. Não deve confiar na sua própria chave pública que está armazenada em seu anel de chave pública quando verificar a assinatura que fez em todo o anel pois, esta faz parte do que você está tentando verificar.
Como que o PGP Mantem a Trilha das Chaves que são Válidas?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Antes de ler esta sessão, tenha certeza de ter lido a sessão acima em "Como Proteger Chaves Públicas de Falsificações".
O PGP mantêm a trilha das chaves no seu anel de chave pública, que estão devidamente certificadas com as assinaturas dos apresentadores que confia. Tudo que tem a fazer é dizer ao PGP quais são as pessoas que confia como apresentadores e então você mesmo certifica suas chaves com sua própria chave confiável definitiva. O PGP pode tirá-la de la, validando automaticamente outras chaves que tenham sido assinadas pelos apresentadores que foram indicados. E claro, você mesmo pode assinar diretamente mais chaves.
Existe dois critérios de separação total que o PGP usa para julgar uma utilidade da chave pública, não as confunda: 1) A chave realmente pertence a quem aparenta pertencer? Em outras palavras, ela foi certificada por uma assinatura confiável? 2) Ela pertence a alguém que você pode confiar na certificação de outras chaves? O PGP pode avaliar a resposta da primeira pergunta. Para responder a segunda, você, o usuário, deve dizer explicitamente ao PGP. Quando você fornece a resposta da pergunta dois, o PGP pode então validar a resposta da pergunta um em relação as outras chaves assinadas pelo apresentador que você indicou como sendo confiável.
As chaves que foram certificadas por um apresentador confiável são consideradas válidas pelo PGP. As chaves que pertencem aos apresentadores confiáveis devem estar certificadas por você ou por outros apresentadores confiáveis.
O PGP também admite a possibilidade de você ter varias dúvidas sobre as pessoas que agem como apresentadores. Sua confiança em um proprietário de chave, que age como um apresentador, não apenas reflete sua estima sobre a integridade pessoal, mas também reflete como os considera competentes no entendimento de administração de chaves e no uso do bom senso em assiná-las. Você pode designar uma pessoa ao PGP como sendo: desconhecida, inconfiável, parcialmente confiável ou inteiramente confiável para certificar outras chaves públicas.Esta informação sobre confiança é armazenada no seu anel de chave com as devidas chaves, mas quando você diz ao PGP para copiar uma chave de seu anel de chave, ele não copiará junto com a chave a informação sobre confiança, porque suas opiniões particulares sobre confiança são consideradas como confidenciais.
Quando o PGP está avaliando a validade de uma chave pública, ele examina o nível de confiança de todas as assinaturas de certificação anexas. Computa uma contagem pesada de validade, duas assinaturas parcialmente confiáveis são consideradas tão válidas quanto uma assinatura completamente confiável. A desconfiança do PGP é ajuntável, por exemplo, você pode programá-lo para exigir duas assinaturas completamente confiáveis ou três assinaturas parcialmente confiáveis para julgar uma chave como sendo valida.
Sua chave própria é "axiomaticamente" valida para o PGP, sem a necessidade da assinatura do apresentador para provar sua validade. O PGP sabe quais chaves públicas são suas, procurando as chaves secretas correspondentes no anel de chave secreta. Ele também pressupõe que você definitivamente confia em você mesmo para certificar outras chaves.
Com o passar do tempo, você acumulará' chaves de outras pessoas as quais, talvez, queira considerar como apresentadores confiáveis. E todos gradualmente acumularão e distribuirão com suas chaves uma coleção de assinaturas certificadas recebidas de outras pessoas, com a esperança que alguém quando as receberem confiarão pelo menos em uma ou duas das assinaturas. Isto causará uma situação crítica de uma teia descentralizada falha e tolerante de confiança para todas as chaves públicas.
Esta única escolha de popularização contrasta-se exatamente com os esquemas padrões de administração da chave pública do governo, tais como Correio com Segurança Intensiva da Internet (PEM - Internet Privacy Enhanced Mail), os quais são baseados num controle centralizado e em uma confiança centralizada obrigatória. Os esquemas padrões confiam em uma hierarquia de Autoridades que certificam e ditam quem você deve confiar. O método probabilístico descentralizado do PGP para determinar a legitimidade da chave pública é a peça central de sua arquitetura de administração de chaves. O PGP deixa você escolher sozinho quem confiar, colocando-o no topo da sua própria pirâmide de certificação particular. O PGP é para as pessoas que preferem carregar seus próprios paraquedas.
Como Proteger Chaves Secretas da Exposição
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Proteja cuidadosamente sua própria chave secreta ou sua frase-senha. Com muito, muito cuidado. Se sua chave secreta já está comprometida então, será melhor retirá-la rapidamente de todas as partes interessadas (boa sorte!) antes que alguém mais a use para produzir assinaturas com seu nome. Por exemplo, podem usá-la para assinar certificados falsos de chave pública, isto criaria problemas para muitas pessoas, especialmente se sua assinatura for bastante confiável. E claro, o comprometimento de sua própria chave secreta expor todas as mensagens que foram enviadas para você.
Para proteger sua chave secreta, pode começar pelo de sempre, tendo o seu controle físico. Mantendo-a em seu computador pessoal em casa está ótimo, ou ainda, em seu notebook que pode carregar com você. Se precisar usar um computador do escritório, onde não tem o controle físico pleno, utilize um disquete transferível protegido contra gravação e não o esqueça quando sair do escritório. Não é uma boa idéia deixar sua chave secreta residir em um computador multi-usuário, tal como um sistema Unix remoto ligado a uma linha telefônica. Alguém pode bisbilhotar a sua linha de modem e capturar sua frase-senha, e a partir dai obter sua chave secreta verdadeira de um sistema remoto. Deve apenas usar sua chave secreta em uma máquina que tenha completo controle físico.
Não armazene sua frase-senha em qualquer lugar no computador que tem seu arquivo de chave secreta. Armazenar a chave secreta e a frase-senha no mesmo computador é tão perigoso quanto deixar a sua senha bancária junto com seu cartão magnético na mesma maleta. Você não quer que alguém ponha as mãos em seu disco que contem a frase-senha e o arquivo de chave secreta. Seria mais seguro se memorizasse sua frase-senha e não a armazenasse em outro lugar que não fosse seu cérebro. Se achar que deve escrever sua frase-senha, mantenha-a bem protegida, talvez até' mais bem protegida que o arquivo de chave secreta.
Tenha cópias reserva de seu anel de chave secreta. Lembre-se, você so' tem uma cópia única de sua chave secreta, se perder, todas as cópias de sua chave pública que espalhou por todo o mundo, se tornarão inúteis.
A escolha descentralizada não institucional que o PGP usa para administrar chaves públicas tem seus benefícios mas, infelizmente, significa também que não podemos confiar em uma simples lista centralizada de cuja chaves foram comprometidas. Torna-se um pouco difícil conter o dano do comprometimento da chave secreta. So' tem que espalhar a palavra e esperar que alguém ouça.
Se a pior coisa acontecer, sua chave secreta e sua frase-senha estão comprometidas (com um pouco de sorte descobrirá de algum modo), terá que emitir um certificado de "comprometimento de chave". Este tipo de certificado é usado para alertar outras pessoas para que parem de usar sua chave pública. Pode-se usar o PGP para criar tal certificado, usando o comando "-kd". Então, deverá de qualquer forma, enviar este certificado de comprometimento para todos no planeta ou pelo menos para todos os seus amigos e para os amigos de seus amigos. O próprio software do PGP deles instalará' este certificado de comprometimento de chave em seus anéis de chave pública e os prevenirá' automaticamente do uso acidental de sua chave pública novamente. Pode, então, gerar um novo par de chaves secreta/publica e divulgar a nova chave pública. É passível também enviar um pacote contendo tanto sua nova chave pública quanto o certificado de comprometimento de chave para sua chave velha.
Cancelando uma Chave Pública
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Suponhamos que sua chave secreta e sua frase-senha, de alguma forma, estão comprometidas. Você tem que retirá-la no mundo inteiro, de modo que todos parem de usar sua chave pública. Para fazer isto, terá que emitir um certificado de "comprometimento de chave" ou de "revogação de chave" para cancelar sua chave pública.
Para gerar um certificado que cancela sua própria chave, use o comando -kd:
pgp -kd seu_userID
Este certificado carrega sua assinatura, feita com a mesma chave que está cancelando. Deve espalhar este certificado de cancelamento de chave o mais rápido passível. As outras pessoas que o receberem podem acrescentar a seus anéis de chaves públicas e, então, seus softwares do PGP automaticamente os previnirão do uso acidental de sua chave pública antiga novamente. A partir dai, pode-se gerar um par novo de chaves secreta/publica e divulgar a nova chave pública.
Se quiser pode cancelar sua chave por alguma outra razão que não o comprometimento de uma chave secreta. Se for este o caso, utilize ainda o mesmo mecanismo para cancelá-la.
E se Você Perder sua Chave Secreta?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Normalmente, se você quer cancelar sua própria chave secreta, pode usar o comando "-kd" para emitir um certificado de cancelamento, assinado com sua própria chave secreta (veja "Cancelando uma Chave Pública").
Mas, o que você pode fazer se perder sua chave secreta ou se ela for destruída? Você mesmo não pode cancelá-la, porque precisa usar sua própria chave secreta para fazer isto e, no caso, você não a possui mais. Uma versão futura do PGP oferecerá' um meio mais seguro de cancelamento de chaves nestas circunstâncias, permitindo que apresentadores confiáveis certifiquem que uma chave pública foi cancelada. Mas, por enquanto, terá que retirar a palavra através de qualquer meio informal que possua, pedindo aos usuários que invalidem sua chave pública em seus próprios anéis de chave pública individuais.
Outros usuários podem invalidar sua chave pública em seus próprios anéis de chave, usando o comando "-kd". Se um userID é especificado como não correspondendo a uma chave secreta no anel de chave secreta, o comando -kd procurará por este userID no anel de chave pública e marcará esta chave como inválida. Uma chave inválida não pode ser extraída do anel de chave com o comando -kx. Pode ainda ser usada para verificar assinaturas, mas é mostrado uma advertência. E se o usuário tentar acrescentar a sua anel de chaves a mesma chave novamente, não conseguirá porque a chave inválida já está no anel de chave. Estas características combinadas ajudarão a reduzir a difusão de uma chave inválida.
Se a chave pública especificada já está inválida, o comando -kd perguntará se você quer revalidá-la.
TÓPICOS AVANÇADOS
#################
A maioria dos "Tópicos Avançados" são incluídos no Guia do Usuário do PGP, Volume II: "Tópicos Especiais". Mas aqui estão alguns tópicos que devem ser mencionados neste volume.
Enviando o Texto Código Através de Canais de Correio Eletrônico:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Formato Base-64
~~~~~~~~~~~~~~~~
Muitos sistemas de correio eletrônico so' permitem mensagens feitas em textos ASCII e não em dados binários de 8 bits que é a forma que o texto cifrado normalmente é produzido. Para contornar este problema, o PGP fornece o formato ASCII de Base-64 nas mensagens de texto código; este é parecido ao formato do Correio de Privacidade Intensa da Internet (PEM Internet Privacy-Enhanced Mail), bem como ao formato MIME da Internet. Este formato especial representa dados binários usando somente caracteres ASCII, tornando-se útil na transmissão de dados binários criptografados através de canais de 7 bits ou no envio de dados binários criptografados como texto de correio eletrônico normal. Este formato atua como uma forma de "blindagem de transporte", protegendo contra qualquer tipo de corrupção quando viaja pelos portões do intersistema na Internet. O PGP também anexa um CRC para detectar erros de transmissão.
Para produzir um arquivo de texto código no formato ASCII de Base-64, apenas acrescente a opção "a" quando criptografar ou assinar uma mensagem, tal como:
pgp -esa mensagem.txt userID_do_destinatário
Este exemplo produz um arquivo de texto código chamado "mensagem.asc" que contem dados em um formato ASCII de Base-64 tipo PEM. Este arquivo pode ser facilmente transferido para um editor de texto através de canais de 7 bits para a transmissão em correio eletrônico normal na Internet ou qualquer outra rede de correio eletrônico.
Para descriptografar a mensagem de Base-64 transportada com este tipo de proteção, utilize o mesmo processo que descriptografa uma mensagem normal. Por exemplo:
pgp mensagem
O PGP automaticamente procura pelo arquivo ASCII "mensagem.asc" antes de procurar pelo arquivo binário "mensagem.pgp". Ele reconhece que o arquivo está no formato de Base-64 e o reverte em binário antes de processar como normalmente faz, assim, produz como um produto acessório um arquivo de texto código ".pgp" na forma binária. O arquivo final de saída está na forma normal de texto plano, assim como era o arquivo original "mensagem.txt".
A maioria dos serviços de correio eletrônico da Internet proíbe o envio de mensagens que ultrapassam 50 Kbytes. Mensagens mais longas devem ser quebradas em pedaços menores para que possam ser enviadas separadamente. Se sua mensagem criptografada é muito grande e você solicitou o formato de Base-64, o PGP automaticamente quebra em partes, em tamanhos certos para o envio via correio eletrônico. As partes são colocadas em arquivos nomeados com extensões ".as1", ".as2", ".as3", etc. O destinatário deve, antes de descriptografá-la, concatenar esses arquivos separados em suas ordens corretas juntando-os em um arquivo grande. Enquanto descriptografa, o PGP ignora qualquer texto extra nos cabeçalhos da correspondência que não estão anexos nos blocos da mensagem de Base-64.
Se quiser enviar uma chave pública para alguém no formato de Base-64, apenas acrescente a opção -a enquanto extrai a chave de seu anel de chave.
Se você esquecer de usar a opção -a quando produzir um arquivo de texto código ou extrair uma chave, ainda pode converter diretamente o arquivo binário para o formato de Base-64 simplesmente usando a opção -a sozinha, sem especificar a criptografia. O PGP o converte em um arquivo ".asc".
Se assinar um arquivo de texto plano sem criptografá-lo, o PGP normalmente o compactará depois de assiná-lo, tornando-o ilegível para o ser humano comum. Este é um modo mais adequado de armazenar arquivos assinados em aplicações de arquivamento. Mas se você quiser enviar a mensagem assinada pelo correio eletrônico e a mensagem original de texto plano está na forma texto (não binária), existe uma maneira de enviá-la através de um canal de correio eletrônico de tal modo que o texto plano não é compactado e a blindagem ASCII é aplicada somente para o certificado de assinatura binária, mas não para a mensagem de texto plano. Isto faz com que o destinatário consiga ler com seus olhos a mensagem assinada, sem precisar da ajuda do PGP. Claro, o PGP ainda é necessário para verificar se a assinatura é verdadeira. Para maiores informações sobre esta característica, veja a explicação do parâmetro CLEARSIG na seção "Ajustando os Parâmetros de Configuração: CONFIG.TXT" no volume de Tópicos Especiais.
Variável de Ambiente para o Caminho de Busca (Path)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
O PGP usa muitos arquivos especiais para seus propósitos, tais como seus arquivos de anel de chave padrão "pubring.pgp" e "secring.pgp", o arquivo original do numero aleatório "randseed.bin", o arquivo de configuração do PGP "config.txt" e o arquivo de tradução de séries de uma língua estrangeira "language.txt". Estes arquivos especiais podem ser mantidos em qualquer diretório, ajustando a variável de ambiente "PGPPATH" para o nome do caminho desejado. Por exemplo, no MSDOS, o comando shell (concha):
SET PGPPATH=C:\PGP
faz com que o PGP considere seu nome de arquivo do anel de chave pública como "C:\PGP\pubring.pgp". Supondo, claro, que este diretório exista. Use o seu editor de texto favorito para modificar seu arquivo AUTOEXEC.BAT do MSDOS e ajustar automaticamente esta variável assim que seu sistema seja inicializado. Se o PGPPATH permanecer indefinido, considera-se que estes arquivos especiais estão no diretório corrente.
Ajustando os Parâmetros de Configuração: CONFIG.TXT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
O PGP tem paramétrico ajustáveis pelo usuário e que podem ser definidos em um arquivo texto de configuração especial chamado "config.txt", o diretório apontado pela variável de ambiente do shell PGPPATH. Tendo um arquivo de configuração, este possibilita que o usuário defina vários flags e paramétrico para o PGP sem a obrigação de ter sempre que defini-los na linha de comando do PGP.
Com estes paramétrico de configuração, por exemplo, pode-se controlar onde o PGP armazena seus arquivos de rascunhos temporários, selecionar qual língua estrangeira o PGP usará para mostrar suas mensagens de diagnósticos e seus prompts de usuário, ou pode ainda ajustar o nível de desconfiança determinando uma validade da chave baseada no numero de assinaturas certificadas que ele tem.
Para mais detalhes no ajuste desses paramétrico de configuração, veja a seção apropriada do Guia do Usuário do PGP, volume de Tópicos Especiais.
Vulnerabilidades
~~~~~~~~~~~~~~~~
Nenhum sistema de segurança de dados é impenetrável. O PGP pode ser circundado de vários modos. Você deve tomar cuidado com as vulnerabilidades potenciais, tais como a inclusão do comprometimento de sua frase-senha ou da chave secreta, com a falsificação da chave pública, com arquivos que apagou mas ainda estão em algum lugar no disco, com vírus e cavalos de Tróia, na quebra de sua segurança física, com emissões eletromagnéticas, com exposição em sistemas de multi-usuário, com a análise de tráfico e talvez até' com a criptoanálise direta.
Para uma discussão mais detalhada sobre estes assuntos, veja a seção de "Vulnerabilidades" no Guia do Usuário do PGP, volume de Tópicos Especiais.
CUIDADO COM O VENENO DE COBRA
#############################
Quando se examina um pacote de software criptográfico, sempre fica a dúvida: por que você deveria confiar neste produto? Mesmo se você mesmo examinar o código de origem, ninguém tem experiência criptográfica para julgar a segurança. Até' mesmo se você for um criptografador experiente, falhas imperceptíveis nos algoritmos ainda poderiam enganá-lo.
Quando estava na faculdade no início dos anos 70, planejei o que acreditava ser um brilhante esquema de criptografia. Uma simples corrente de números pseudoaleatórios foi acrescentada a corrente de texto plano para criar um texto código. Isto aparentemente impediria qualquer análise de freqüência do texto código e seria impenetrável até' para as melhores agências de inteligência do Governo. Me senti tão satisfeito com minha façanha, tão seguro.
Anos mais tarde, descobri este mesmo esquema em vários textos de criptografia introdutória e trabalhos educacionais. Que legal! Outros criptografadores pensaram o mesmo esquema. Infelizmente, o esquema foi considerado como sendo uma simples atribuição de lição de casa sobre como usar técnicas criptoanalíticas elementares para casualmente serem quebradas. Tão pouco para meu esquema brilhante.
Desta humilde experiência aprendi como é fácil cair num senso falso de segurança quando se planeja um algoritmo de criptografia. A maioria das pessoas não percebem como é complicado planejar um algoritmo de criptografia que consiga resistir a um ataque prolongado e forte de um oponente experiente. Muitos engenheiros de software desenvolvem igualmente esquemas simples de criptografia (muitas vezes até' esquemas iguais de criptografia) e alguns desses esquemas foram incorporados a pacotes comerciais de software de criptografia e vendidos por muito dinheiro para milhares de usuários inocentes.
Isto é como vender cinto de segurança para automóveis, parecem bons mas abrem com uma batida mínima. Dependendo do cinto de segurança, pode ser pior usar do que não usar. Ninguém suspeita que são ruins até' acontecer uma batida. Dependendo da fraqueza do software criptográfico, este pode colocar em risco informações confidenciais. O que, por outro lado, poderia até' não acontecer se você não tivesse um software criptográfico. Talvez até' você nunca descobriria que seus dados foram comprometidos.
Algumas vezes, os pacotes comerciais utilizam o Padrão Federal de Criptografia de Dados (DES - Federal Data Encryption Standard), que é um bom algoritmo convencional recomendado pelo governo para uso comercial (mas não para informações confidenciais, é aparentemente suficiente - hummm). Existe vários "modos de operação" que o DES pode utilizar, alguns deles melhores do que outros. O governo recomenda especificamente não usar o modo mais simples e mais fraco nas mensagens, o modo de Livro Código Eletrônico (ECB Eletronic Codebook). Mas recomendam os modos mais fortes e mais complexos, tais como Regenerações de Código (CFB - Cipher Feedback) ou Corrente de Blocos de Código (CBC - Cipher Block Chaining).
Infelizmente, na maioria dos pacotes comerciais de criptografia observei o uso do modo ECB. Quando falei com os autores de algumas dessas implantações, disseram que nunca ouviram falar dos modos CBC ou CFB e não sabiam nada sobre as fraquezas do modo ECB. É alarmante o fato que eles nunca aprenderam criptografia suficiente para conhecer estes conceitos elementares. Estes mesmos pacotes de software muitas vezes incluem um segundo algoritmo de criptografia mais rápido que pode ser usado no lugar do DES mais lento. O autor do pacote, muitas vezes, acha que seu algoritmo proprietário mais rápido é tão seguro quanto o DES, mas depois de questioná-lo usualmente 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 propriedade de criptografia funciona, mas me assegurou que é um esquema brilhante e que eu deveria acreditar. Tenho certeza 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 não originam de companhias que se especializam na tecnologia criptográfica.
Existe uma companhia chamada AcessData (87 East 600 South, Orem, Utah 84058, telefone 1-800-658-5199) que vende um pacote por $ 185 que quebra os esquemas embutidos de criptografia usados pela WordPerfect, Lotus 1-2-3, MS Excel, Symphony, Quattro Pro, Paradox e MS Word 2.0. Ele simplesmente não adivinha senhas, faz verdadeiras criptoanalises. Algumas pessoas o compram quando esquecem as senhas de seus próprios arquivos. Agências de coação da lei também compram, assim, podem ler os arquivos que conseguirem captar. Conversei com o autor Eric Tompson e ele disse que seu programa leva so' um segundo de abertura para quebrá-los, mas que atrasa alguns pontos para aumentar o tempo de modo que não pareça tão fácil para o cliente. Também me disse que a característica criptográfica da senha dos arquivos PKZIP pode muitas vezes ser quebrada facilmente e que seus clientes da coação da lei já recebem este serviço regularmente de um outro vendedor.
De certa forma, criptografia é como a farmacêutica. Sua integridade pode ser totalmente crucial. Penicilina ruim parece com a penicilina boa. Você pode dizer se seu software de planilha está errado, mas como dizer se seu pacote de criptografia é fraco ou não? O texto código produzido por um algoritmo fraco de criptografia parece tão bom quanto o texto código produzido por um algoritmo forte de criptografia. Há muito veneno de cobra lá. Muitas curas excelentes. Diferente 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 de literatura acadêmica sobre criptografia. Mas acham que podem escrever bons softwares criptográficos. E por que não? Além do mais, parece intuitivamente fácil escrever um. Seus softwares parecem funcionar bem.
Qualquer um que ache que eles planejaram um esquema de criptografia inquebrável ou é inacreditavelmente um gênio raro ou um ingênuo inexperiente.
Lembro de uma conversa com Brian Snow, um criptografador veterano influente na NSA. Disse que nunca confiaria num algoritmo de criptografia planejado por alguém que não tenha tido base nenhuma, primeiramente, gastando muito tempo quebrando códigos. Isto fez muito sentido. Observei que praticamente ninguém no mundo comercial da criptografia se qualificava sob este critério. "Sim", ele disse com um sorriso confiante, "E o nosso software torna nosso trabalho na NSA mais fácil". Um pensamento arrogante. Eu também não o qualificaria como ótimo.
O governo também vendeu veneno de cobra. Depois da Segunda Guerra Mundial, os Estados Unidos venderam máquinas alemães Enigma de codificação para governos do terceiro mundo. Mas, não disseram que os Aliados, durante a guerra, quebraram o código da Enigma, um fato que permaneceu confidencial por muitos anos. Mesmo hoje muitos sistemas UNIX em todo o mundo usam o código Enigma para criptografia de arquivos, em parte porque o governo criou obstáculos legais contra o uso de algoritmos melhores. Tentou-se até' proibir a publicação inicial do algoritmo de RSA em 1977, esmagou-se principalmente todos os esforços comerciais para desenvolver telefones efetivamente seguros destinado ao público em geral.
O principal trabalho da Agência de Segurança Nacional do governo americano é agrupar inteligências, principalmente grampeando totalmente as comunicações particulares das pessoas (veja o livro de James Bamford, "The Puzzle Palace" - "O Palácio Confuso"). A NSA acumulou considerável habilidade e recursos na quebra de códigos. Quando as pessoas não tem uma criptografia muito boa para se protegerem, isto torna o trabalho da NSA bem mais fácil. A NSA também tem a responsabilidade de aprovar e recomendar algoritmos de criptografia. Alguns críticos afirmam que na verdade é tudo um jogo de interesses, como colocar a raposa para tomar conta do galinheiro. A NSA jogou no mercado um algoritmo de criptografia convencional que planejou e nunca revelou a ninguém como funciona porque é considerada como confidencial. No entanto, ela quer que as outras pessoas confiem neste algoritmo e o usem. Mas qualquer criptografador pode lhe dizer que um algoritmo de criptografia bem planejado não precisa ser confidencial para permanecer seguro. Somente as chaves devem ser protegidas. Como que alguém realmente sabe se o algoritmo confidencial da RSA é seguro? Não é tão difícil para a NSA planejar um algoritmo de criptografia onde so' ela pode quebrá-lo, se ninguém mais revisá-lo. Estão vendendo veneno de cobra deliberadamente?
Não estou tão certo da segurança do PGP como certa vez estava com meu software brilhante de criptografia na faculdade. Se estivesse, seria um mau sinal. Mas, estou absolutamente certo que o PGP não contem nenhuma fraqueza evidente. Os cripto-algoritmos foram desenvolvidos por pessoas altamente especializadas da academia criptográfica civil e foram individualmente submetidos a uma revisão extensiva semelhante. O Código original está disponível para facilitar uma revisão semelhante do PGP e para ajudar a afastar os medos de alguns usuários. É consideravelmente bem pesquisado e levou anos para ser feito. Eu não trabalho para a NSA. Espero que seja preciso colocar muita fé para confiar na segurança do PGP.
BREVE REFERÊNCIA DO PGP
#######################
Aqui está um breve resumo dos comandos do PGP.
Para criptografar um arquivo de texto plano com a chave pública do
destinatário:
pgp -e arquivo_texto userID_do_destinatário
Para assinar um arquivo de texto plano com sua chave secreta:
pgp -s arquivo_texto [-u seu_userID]
Para assinar um arquivo de texto plano ASCII com sua chave secreta, produzindo uma mensagem de texto plano assinada (não-criptografada) adequada para ser enviada via correio eletrônico:
pgp -sta arquivo_texto [-u seu_userID]
Para assinar um arquivo de texto plano com sua chave secreta e depois criptografá-lo com a chave pública do destinatário:
pgp -es arquivo_texto userId_do_destinatário [-u seu_userID]
Para criptografar um arquivo de texto plano somente com a criptografia convencional, digite:
pgp -c arquivo_texto
Para descriptografar um arquivo criptografado ou para verificar a integridade da assinatura de um arquivo assinado:
pgp arquivo_de_texto_código [-o arquivo_de_texto_plano]
Para criptografar uma mensagem para vários destinatários múltiplos:
pgp -e arquivo_texto userID1 userID2 userID3
--- Comandos de administração de chaves:
Para gerar seu próprio par único de chave pública/secreta:
pgp -kg
Para acrescentar um conteúdo do arquivo de chave secreta ou pública para seu anel de chave pública e secreta:
pgp -ka arquivo_de_chave [anel_de_chave]
Para extrair (copiar) uma chave do seu anel de chave pública ou secreta:
pgp -kx userID arquivo_de_chave [anel de chave]
ou:
pgp -kxa userID arquivo_de_chave [anel de chave]
Para ver os conteúdos do seu anel de chave pública:
pgp -kv[v] [userID] [anel_de_chave]
Para ver a "digital" de uma chave pública, a fim de verificá-la pelo telefone com seu dono:
pgp -kvc [userID] [anel_de_chave]
Para ver os conteúdos e verificar as assinaturas certificadas de seu anel de chave pública:
pgp -kc [userID] [anel_de_chave]
Para editar o userID ou a frase senha para sua chave secreta:
pgp -ke userID [anel_de_chave]
Para editar os paramétrico confiáveis para uma chave pública:
pgp -ke userID [anel_de_chave]
Para remover uma chave ou apenas um userID de seu anel de chave pública:
pgp -kr userID [anel_de_chave]
Para assinar e certificar a chave pública de alguém no seu anel de chave pública:
pgp -ks userID_do_destinatário [-u seu_userID] [anel_de_chave]
Para remover assinaturas selecionadas de um userID em um anel de chave:
pgp -krs userID [anel_de_chave]
Para remover definitivamente sua própria chave, divulgando um certificado de comprometimento de chave:
pgp -kd seu_userID
Para invalidar ou reabilitar uma chave pública em seu próprio anel de chave pública: pgp -kd userID
--- Comandos Esotéricos:
Para descriptografar uma mensagem e deixar intacta sua assinatura:
pgp -d arquivo_de_texto_código
Para criar um certificado de assinatura que está separado do documento:
pgp -sb arquivo_texto [-u seu_userID]
Para separar um certificado de assinatura de uma mensagem assinada:
pgp -b arquivo_de_texto_código
--- Opções de comandos que podem ser usados em combinação com outras opções de comandos (algumas vezes até' formam palavras interessantes!):
Para produzir um arquivo de texto código no formato ASCII Base-64, apenas acrescente a opção -a quanto criptografar ou assinar uma mensagem ou extrair uma chave:
pgp -sea arquivo_texto userId_do_destinatário
ou:
pgp -kxa userID arquivo_de_chave [anel_de_chave]
Para apagar o arquivo de texto plano depois de produzir o arquivo de texto código, apenas acrescente a opção -w (wipe - destruir) quando criptografar ou assinar uma mensagem:
pgp -sew mensagem.txt userID_do_destinatário
Para especificar que um arquivo de texto plano contem texto ASCII, não binário, e que deveria ser convertido de acordo com os padrões locais de tela do destinatário, acrescente a opção -t (texto) junto as outras opções:
pgp -seat mensagem.txt userID_do_destinatário
Para ver a saída do texto plano criptografado na sua tela (como o comando "more" do estilo UNIX), sem escrevê-lo em um arquivo, use a opção -m (mais) quanto descriptografa:
pgp -m arquivo_de_texto_código
Para especificar que o texto plano descriptografado do destinatário será mostrado SOMENTE na tela dele e não poderá' ser salvo em disco, acrescente a opção -m:
pgp -steam mensagem.txt userID_do_destinatário
Para recuperar o nome original do arquivo de texto planto enquanto descriptografa, acrescente a opção -p:
pgp -p arquivo_de_texto_código
Para usar um filtro do estilo UNIX, lendo da entrada padrão e escrevendo para a saída padrão, acrescente a opção -f:
pgp -feast userID_do_destinatário <arquivo_entrada > arquivo_saída
ASSUNTOS LEGAIS
###############
Para informações detalhadas sobre licenciamento, distribuição, direitos autorais, patentes, marcas registradas, limitações de responsabilidade e controles de exportação do PGP, veja a seção de "Assuntos Legais" no "Manual do Usuário do PGP, Volume II: Tópicos Especiais".
O PGP utiliza um algoritmo de chave pública sustentado pela patente americana #4.405.829. Os direitos exclusivos de licenciamento desta patente são mantidos por uma companhia da Califórnia chamada Associados da Chave Pública (Public Key Partners), se você utilizar o PGP nos Estados Unidos sem uma licença, estará infringindo a patente. Estes assuntos estão mais detalhados no Volume II do manual e na licença da RSAREF que vem com a versão freeware (de domínio público) do PGP. A PKP permitiu que outros praticassem a patente, incluindo a companhia conhecida como ViaCrypt, em Fenix, Arizona. A ViaCrypt vende uma versão totalmente licenciada do PGP. Pode-se entrar em contato com ela através do telefone 602-944-0773.
O PGP é um freeware de guerrilha. Eu não me importo se você distribui-lo abertamente, apenas não me peça para enviar uma cópia. Em vez disso, você mesmo pode procurá-lo em muitos sistemas de BBS e em alguns sítios de FTP da Internet. Mas, antes de distribuir o PGP, é essencial que você entenda os controles americanos de exportação sobre um software de criptografia.
AGRADECIMENTOS
##############
Temíveis obstáculos e poderosas forças se juntaram para impedir o PGP. Pessoas dedicadas estão ajudando a superar estes obstáculos. O PGP conseguiu uma péssima fama como "software clandestino", para colocar o PGP como sendo "legal" através de um freeware totalmente licenciado exigiu muita paciência e persistência. Gostaria de agradecer especialmente Hal Abelson, Jeff Schiller, Brian LaMacchia e Derek Atkins do Instituto Tecnológico de Massachusetts (MIT) por seus determinados esforços. Gostaria de agradecer também Jim Bruce e David Litster da administração do MIT e Bob Prior e Terry Ehling da Imprensa do MIT. Gostaria de agradecer toda minha equipe de defesa legal, cujo trabalho não acabou ainda. Antes de encontrar muitos bons exemplos de advogados na minha equipe de defesa legal, onde muitos trabalham de graça, costumava contar muitas piadas de advogados.
O desenvolvimento do PGP se transformou em um considerável fenômeno social, onde um único recurso político inspirou esforços coletivos de um numero sempre crescente de programadores voluntários. Lembra daquela estória infantil chamada "Sopa de Pedra"?
Gostaria de agradecer as seguintes pessoas pelas suas contribuições na criação do Pretty Good Privacy, PGP. Apesar de ser eu o autor da versão 1.0 do PGP, a maior parte de suas versões posteriores foram implementadas pelo escorço colaborativo internacional, envolvendo um grande numero de contribuidores sob minha orientação.
Branko Lankester, Hal Finney e Peter Gutmann, todos contribuíram com muito tempo para acrescentar características ao PGP 2.0 e portá-lo para variantes de UNIX.
Hugh Kennedy portou-o para VAX/VMS, Lutz Frank para o Atari ST e Cor Bosman e Colin Plumb para Commodore Amiga.
A tradução do PGP em línguas estrangeiras foi feita por Jean-loup Gailly na França, Armando Ramos na Espanha, Felipe Rodriguez Svensson e Branko Lankester nos Países Baixos, Miguel Angel Gallardo na Espanha, Hugh Kennedy e Lutz Frank na Alemanha, David Vincenzetti na Itália, Harry Bush e Maris Gabalins na Latvia, Zygimantas Cepaitis na Lituânia, Peter Suchkow e Andrew Chernov na Rússia e Alexander Smishlajev em Esperantujo. Peter Gutmann ofereceu-se para traduzi-lo para o inglês neozeolandes mas decidimos finalmente que o PGP poderia ficar em inglês americano mesmo.
Jean-loup Gailly, Mark Adler e Richard B. Wales publicaram o código de compressão ZIP e permitiram que ele fosse incluído ao PGP. As rotinas MD5 foram desenvolvidas e colocada em domínio público por Ron Rivest. O código IDEA (tm) foi desenvolvido por Xuejia Lai e James L. Massey no ETH em Zurique e é usado no PGP com a permissão da Ascom-Tech Ag.
Charlie Merritt originalmente me ensinou como fazer uma aritmética de multiprecisão descente para criptografia de chave pública. Jimmy Upton contribuiu com um algoritmo múltiplo/modulo mais rápido. Thad Smith implementou com um algoritmo modmult bem mais rápido. Zhahai Stewart contribuiu muito com idéias úteis sobre os formatos do arquivo do PGP e outras coisas, inclusive a inclusão de mais um userID para uma chave. Ouvi a idéia de apresentadores da Whit Diffie. Kelly Goen fez a maior parte do trabalho para a publicação eletrônica inicial do PGP 1.0.
Várias contribuições de escorço de codificação também vieram de Colin Plumb, Derek Atkins e Castor Fu. Outras contribuições do escorço, de codificação ou outros, vieram de Hugh Miller, Eric Hughes, Tim May, stephan Neuhaus e muitos outros que me lembro agora. Zbigniew Fiedorwicz fez uma porta Macintosh.
Desde a versão 2.0 do PGP, muitos outros programadores enviaram patches, ajustes de bugs e ajustes de portação para outros computadores. Há ainda muitos para agradecer aqui individualmente.
Assim como na estória da "Sopa de Pedra", está se tornando cada vez mais difícil ver através da sopa grossa a pedra no fundo do pote que eu derrubei no início de tudo isso.
SOBRE O AUTOR
#############
Phillip Zimmermann é um consultor e engenheiro de software com 19 anos de experiência, especializado em sistema embutidos de tempo real, criptografia, autenticação e comunicação de dados. Sua experiência inclui planejamento e implantação de sistemas de autenticação para redes de informação financeira, segurança de dados em redes, protocolos de administração de chaves, sistemas multitarefa de tempo real, sistemas operacionais e redes de locais.
Pode-se encomendar com Zimmermann versões de criptografia, produtos de autenticação e implementações de chave pública, tais como a NIST DSS, assim como serviços de desenvolvimento de produtos feitos por encomenda. O endereço de sua firma de consultoria é:
Boulder Software Engineering
3021 Eleventh Street
Boulder, Colorado 80304 USA
Telefone: 303-541-0140 (das 10 as 19 horas, Hora da Montanha)
Fax: conseguir por telefone