#######################################################################
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