[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Assinando chaves digitais



On Tue, 22 May 2001, Eduardo Marcel Macan wrote:
> 	 Me manda como se você estivesse ensinando a um leigo o que
> é preciso levar para se trocar chaves digitais, você mandou em
> uma mail pra d-u-p mas eu perdi :(

Ok. Estou enviando em Cc: para a d-u-p já que alguém de lá pode achar útil.
Comentários e correções ao texto são bem-vindos.

Dica para quem estiver indo no encontro de developers em Porto Alegre, e
quiser trocar assinatura de chaves: leiam a parte "3", e prestem atenção na
parte do "muito queimado". Eu, particularmente, levo o assunto muito a
sério.

====8<==========================8<====================================

Trocando assinaturas de chaves digitais
Copyright © 2001 Henrique de Moraes Holschuh <hmh@debian.org>

Direitos de republicação cedidos ao domínio público, contanto que o texto
seja reproduzido em sua íntegra, sem modificações de quaisquer espécie, e
incluindo o título e nome do autor.


1. Assinaturas digitais
2. Chaves digitais e a teia de confiança
3. Trocando assinaturas de chaves digitais com um grupo de pessoas


1. Assinaturas digitais

Uma assinatura digital é um número de tamanho razoável (costuma ter de 128 a
160 bits) que representa um bloco bem maior de informação, como uma email.

Pense numa assinatura como se ela fosse uma verão super-comprimida de um
texto.  Se você muda alguma coisa (por menor que seja) no texto que uma
assinatura "assina", essa assinatura se torna inválida: ela não mais
representa aquele texto.

Existe uma relação direta entre uma assinatura e informação que ela assina.
Se uma das duas for modificada, elas passam a não mais "combinar" uma com a
a outra. Um programa de computador pode detectar isso, e avisar que a
assinatura é "inválida".

Os algoritimos mais usados para criar e verificar assinaturas digitais são o
SHA-1, RIPEM160 e MD5.  O MD5 não é considerado tão bom quanto os outros
dois.

Assinaturas digitais também funcionam com arquivos "binários", ou seja:
imagens, som, planilhas de cálculo... e chaves digitais.


2. Chaves digitais e a teia de confiança

Chaves digitais são fáceis de falsificar, você só precisa criar uma chave
nova no nome de sicrano, por um endereço de email novinho em folha daqueles
que você consegue nesses webmail da vida, e pronto.  Agora é só espalhar
essa chave por aí que os bestas vão usá-la pensando que é de sicrano.

A menos que os "bestas" não sejam tão bestas assim, tenham lido o manual do
seu software de criptografia, e saibam usar assinaturas e a teia de
confiança para verificar se a tal chave é de sicrano mesmo.

Programas de criptografia (os bons, tipo PGP e GNUpg) usam um sistema de
assinaturas nas chaves digitais para detectar e impedir esse tipo de
problema:  Ao usuário é dado o poder de "assinar" uma chave digital, dizendo
"sim, eu tenho certeza que essa chave é de fulano, e que o email de fulano é
esse que está na chave".

Note bem as palavras "certeza", e "email".  Ao assinar uma chave digital,
você está empenhando sua palavra de honra que o _nome_ do dono de verdade
daquela chave é o nome _que está na chave_, e que o endereço de email
daquela chave é da pessoa (o "nome") que também está na chave.

Se todo mundo fizer isso direitinho (ou seja, não sair assinando a chave de
qualquer um, só porque a outra pessoa pediu por email, ou numa sala de
chat), cria-se a chamada teia de confiança.

Numa teia de confiança, você confia na palavra de honra dos outros para
tentar verificar se uma chave digital é legítima, ou se é uma "pega-bobo".

Suponha que Marcelo tenha assinado a chave de Cláudia, e que Roberto, que
conhece Marcelo pessoalmente e assinou a chave de Marcelo, queira falar com
Cláudia.  

Roberto sabe que Marcelo leu o manual do programa de criptografia, e que ele
não é irresponsável.  Assim, ele pode confiar na palavra de honra de Marcelo
que aquela chave digital da Cláudia é da Cláudia mesmo, e usar a chave pra
combinar um encontro com Cláudia.

Por outro lado, Roberto não conhece Cláudia (ainda), e não sabe que tipo de
pessoa ela é. Assim, rapaz prevenido, ele não confia que Cláudia seja uma
pessoa responsável que verifica direitinho antes de assinar chaves.

Note que Roberto só confiou na assinatura de Marcelo porque, como ele já
tinha assinado a chave de Marcelo, ele sabe que foi Marcelo mesmo quem
assinou a chave de Cláudia.  

Enrolado? Sim, é um pouco complicado, mas desenhe num papel as flechinhas de
quem confia em quem, que você entende rapidinho como funciona.

O uso da assinatura feita por alguém cuja chave você assinou, para validar
a chave digital de um terceiro, é um exemplo de uma pequena teia de
confiança.


3. Trocando assinaturas de chaves digitais com um grupo de pessoas

Lembre-se: ao assinar uma chave digital, você está empenhando sua palavra de
honra que toda a informação que você assinou naquela chave é verdadeira até
onde você pode verificar, _e_ que você tentou verificar direitinho.

Pense nisso como um juramento: "Eu juro, em nome da minha reputação
profissional e pessoal, que o nome e endereços de email nessa chave são
realmente verdadeiros até onde posso verificar, e que fiz uma tentativa real
e razoável de verificar essa informação."

Sim, é sério desse jeito mesmo. Você pode ficar muito "queimado" em certos
círculos se você assinar uma chave falsa, pensando que é verdadeira:  a sua
assinatura mal-verificada pode vir a prejudicar outros que confiaram em
você.

Bom, já que o assunto é sério, como juntar um grupo de pessoas numa sala, e
trocar assinaturas de chaves entre si?  Particularmente se são pessoas que
você nunca viu antes? Siga o protocolo abaixo, passo a passo, e sem pular ou
violar nenhum dos passos.


  1 -  Reuna todos em uma sala, ou outro local não tumultuado, pressa e
       bagunça são inimigas da segurança.
  
  2 -  Cada um dos presentes deve, então, ir de um em um e:
  
       2.1 -  Apresentar-se, mostrando _calmamente_ documentação original
	      (nada de fotocópia) comprovando sua identidade.  RG, CPF,
	      passaporte, certidão de nascimento ou casamento, carteira de
	      motorista, cartão de crédito são todos bons exemplos. Só o RG
	      sozinho não é -- tem muito RG falsificado por aí -- mas o RG
	      junto com o cartão de banco já seria suficiente.  Se nenhum
	      documento tiver foto, também não é o bastante.
	      
	      * Se alguém pedir o documento na mão, para verificar
	      direitinho, não leve pro lado pessoal. Deixe a pessoa
	      verificar até estar satisfeita (mas não descuide do
	      documento). Isso só significa que ela leva muito a sério a
	      responsabilidade de assinar chaves.

       2.2 -  Entregar um papel com as informações da chave: Nome
              (QUE OBRIGATÓRIAMENTE PRECISA SER O MESMO NOME CONSTANTE NOS
	      DOCUMENTOS APRESENTADOS EM 2.1), email, número da chave
	      (keyID), e fingerprint da chave (assinatura digital da chave)

	      RECIPIENTE DO PAPEL: Se você achar que os documentos que te
	      apresentaram não são prova suficiente, talvez porque o nome
	      não bate com o da chave, ou porque uma foto nos documentos não
	      está parecida com quem mostrou os documentos, marque
	      discretamente no papel, porque você NÃO deve assinar essa
	      chave.   Se achar que o outro vai engrossar, não diga para ele
	      que não vai assinar a chave dele.

  3 -  Pronto. Podem ir embora, porque o resto dos passos deve ser feito com
       calma, em casa.  Lembre-se que você não vai estar efetuando nenhum
       julgamento moral a respeito de quem você assinar a chave. Você só irá
       afirmar que a chave de sicrano é realmente aquela, e mais nada.

  4 -  Para cada uma das chaves que você marcou no papel que "posso assinar":
  
       4.1 -  Peça para o seu programa de criptografia mostrar a chave e sua
              assinatura (fingerprint).
	      
	      SE: O nome no papel for exatamente igual ao nome na chave
	      (user ID/UID da chave). E: A assinatura no papel for
	      exatamente igual à assinatura na chave (fingerprint).  ENTÃO:
	      Vá para o passo 4.3.

       4.2 -  As informações não bateram, por isso você não deve assinar a
              chave.  Se quiser, envie um email avisando que não poderá
	      assinar a chave. Não aceite tentativas de retificação por
	      email ou telefone. Um outro encontro face-à-face, refazendo
	      todos os passos 2.1 e 2.2 é o único jeito de retificar
	      o problema.

       4.3 -  As informações bateram, o que garante que o *nome* está
              correto. Agora é preciso ter certeza do endereço de email.
	      Para isso, envie uma email *CIFRADA* pela chave que você está
	      testando, para o endereço de email constante na chave.  Nessa
	      email, coloque uma palavra secreta qualquer e peça para o
	      destinatário te responder dizendo qual a palavra secreta que
	      você escreveu. Use uma palavra diferente para cada chave que
	      estiver testando, e anote no papel daquela chave qual palavra
	      você usou.

       4.4 -  Se você receber a resposta contendo a palavra secreta correta,
              você pode assinar a chave. Caso contrário, não assine a chave -- 
	      o endereço de email pode ser falso.


Comandos do gpg (GNUpg) correspondentes a cada passo:
  2.2 -       gpg --fingerprint <seu nome ou 0xSuaKEYID>
              (retorna as informações que devem estar no papel a ser
	      entregue no passo 2.2)

  4.1 -       gpg --receive-key <0xKEYID>
              (procura a chave especificada nos keyservers)
	      gpg --sign-key <0xKEYID>
	      (assina uma chave)

	      Assume-se que você sabe cifrar e decifrar mensagens. Caso
	      não saiba, ainda não é hora de querer sair assinando chaves.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh

Attachment: pgpTI2i1VDVO9.pgp
Description: PGP signature


Reply to: