Política de Chaves

Chaves OpenPGP

Ver também OpenPGP Best Practices.

Fluxo de Manutenção

  • Geração de par de chaves.

  • Impressão de fingerprints/cartões de visitas.

  • Uso regular da chave.

  • Rotação de subchaves.

  • Atualização de data de expiração.

  • Rotação de par de chaves.

  • Revogação de par de chaves antigo.

Bônus:

  • Uso de tokens criptográficos de hardware aberto.

  • Manutenção de um par de chaves de longo prazo offline usada apenas para certificação. Este par pode ser armazenado por exemplo num sistema cifrado dentro de um cartão microSD (por exemplo um Tails com volume persistente) ou num token. Sua função é assinar as chaves de uso corrente.

Renovação

Editando a chave:

gpg --edit-key <fingerprint>

Para a chave principal:

expire

Para cada chave:

key <n>
expire

Exportando a chave:

gpg --send-key <fingerprint>

Em seguida, escreva para cada lista cifrada:

  • Firma: enviar ao administrador/a.

  • Schleuder: x-add-key: para o email nome-da-lista-request@dominio conforme dovumentação:

      x-list-name: nome-da-lista@dominio
      x-add-key:
      <chave exportada com armadura ascii>
    

Em versões anteriores do schleuder, o procedimento precisa ser feito em duas etapas:

  1. Email para lista-request@example.org com o comando x-delete-key: <id-da-chave>.

  2. Email para lista-request@example.org com o comando x-add-key e a chave logo abaixo no corpo do email.

Se fizermos apenas x-add-key o schleuder acusa que a chave já existe.

O problema dessa abordagem é que ela precisa ser feita por um/a admin da lista que não seja a pessoa cuja chave está sendo atualizada, senão ela acaba saindo do loop logo no x-delete-key.

Talvez seja um bug?

Transições

Passos recomendados para chaves de uso difundido (isto é, que estejam disponíveis amplamente na rede):

  • Criar a nova chave com gpg --gen-key.

  • Criar subchave de autenticação: monkeysphere gen-subkey -l 4096 <fingerprint-novo>.

  • Configurar o período de expiração da subchave de autenticação gpg --edit-key <fingerprint-novo> e usar o comando expire após selecionar a subchave.

  • Assinar a nova chave usando a chave antiga: gpg --edit-key <fingerprint> sign.

  • Subir ambas as chaves para os servidores de chaves.

  • Atualizar e imprimir novos cartões de visita e/ou tirinhas com fingerprints.

  • Criar e publicar um atestado de transição: gpg -u <fingerprint-antigo> -u <fingerprint-novo> --armor --clearsign transition.txt.

  • Notificar círculos próximos de contato.

  • Adicionar cópia da nova chave nas listas schleuder usando X-ADD-KEY.

  • Atualizar configurações de instâncias do Keyringer.

  • Atualizar configuração de \~/.gnupg/gpg.conf.

  • Atualizar configurações do git global e por repositório (user.signingkey).

  • Caso o mutt seja utilizado, ajustar o parâmetro pgp_sign_as para a nova chave.

  • No caso de transições de UIDs, rodar sudo monkeysphere-authentication update-users nos servidores que usem monkeysphere para autenticação.

  • Desabilitar chave antiga usando gpg --edit-key <fingerprint> disable.

Referências:

Chaves OTR

Renovação

Num shell:

mv $HOME/.irssi/otr/otr.key $HOME/.irssi/otr/otr.key.old

No irssi, para cada uma das identidades que você utiliza:

/otr genkey nick@network

A lista de identidades pode ser obtida no arquivo $HOME/.irssi/otr/otr.fp.

Em seguida, informe pessoas sobre seu novo fingerprint OTR.

Chaves de lista schleuder

  1. Notificar listas sobre o rollover de chaves.

  2. Crie uma nova chave para a lista, assinada pela anterior e com a mesma senha da anterior.

  3. Importe o novo par de chaves no chaveiro do schleuder.

  4. Atualize o fingerprint no list.conf.

  5. Crie um gpg.conf para forçar o uso da nova chave, default-key <key-fingerprint>.

  6. Notificar listas sobre o rollover de chaves.

  7. Atualizar informações de contato sobre listas de interesse.

Após o procedimento, emails enviados tanto com a chave antiga (compatibilidade) quanto com a nova funcionarão, porém é encorajado que todo mundo passe a usar apenas a nova.

Chaves SSH

Vide Key rotation in OpenSSH 6.8+.