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
