GPG (GNU Privacy Guard) é um sistema de criptografia assimétrica usado para assinar e verificar a autoria de commits e tags no Git.
No GitHub, GPG garante que:
“Este commit foi realmente criado por quem diz ter criado.”
- Assinar commits e tags
- Provar autenticidade e integridade
- Evitar spoofing de identidade
- Tornar histórico criptograficamente confiável
- Ativar o selo Verified no GitHub
[ Commit ]
│
├── conteúdo
├── metadata
└── assinatura GPG ← chave privada
- 🔑 Chave privada → assina localmente
- 🔓 Chave pública → publicada no GitHub
- GitHub verifica, mas não assina
| Aspecto | GPG | SSH |
|---|---|---|
| Finalidade | Assinar commits/tags | Autenticar acesso |
| Prova identidade | ✅ | ❌ |
| Segurança do histórico | ✅ | ❌ |
| Canal de transporte | ❌ | ✅ |
| GitHub “Verified” | ✅ | ❌ |
👉 SSH autentica ações 👉 GPG autentica autoria
sudo apt install gnupgbrew install gnupg- Instalar Gpg4win
- Inclui Kleopatra + gpg-agent
gpg --full-generate-keyEscolhas recomendadas:
- Tipo:
(1) RSA and RSA - Tamanho:
4096 - Validade:
0(ou 1–2 anos) - Nome: teu nome real
- Email: o mesmo do GitHub
- Passphrase: obrigatória
gpg --list-secret-keys --keyid-format=longExemplo:
sec rsa4096/ABCDEF1234567890
👉 Key ID: ABCDEF1234567890
gpg --armor --export ABCDEF1234567890Copia todo o bloco:
-----BEGIN PGP PUBLIC KEY BLOCK-----
...
-----END PGP PUBLIC KEY BLOCK-----
- Acesse 👉 https://github.com/settings/gpg/new
- Cole a chave pública
- Confirme
git config --global user.signingkey ABCDEF1234567890git config --global commit.gpgSign truegit config --global tag.gpgSign truegit commit -S -m "feat: implement login"Ou automaticamente (se global ativo).
git log --show-signatureNo GitHub:
- Commit aparece como Verified ✅
export GPG_TTY=$(tty)Adicionar ao .bashrc / .zshrc
- Gpg4win já inclui agente gráfico
- Email do commit ≠ email da chave
- Chave não cadastrada no GitHub
- Commit antigo (não retroativo)
gpgconf --kill gpg-agentGitHub permite assinatura via SSH, mas:
| Critério | GPG | SSH |
|---|---|---|
| Portabilidade | Alta | Média |
| Ecossistema | Universal | GitHub-only |
| Padrão clássico | ✅ | ❌ |
| Transparência | Melhor | Boa |
👉 GPG ainda é o padrão de ouro
- ✔️ Uma chave por identidade
- ✔️ Backup seguro da chave privada
- ✔️ Rotacionar chaves periodicamente
- ❌ Nunca perder a chave privada
- ❌ Nunca publicar a privada
- GPG garante autoria real
- Commits assinados elevam o nível profissional
- GitHub mostra confiança pública
- SSH ≠ GPG (ambos são complementares)
- Histórico confiável é engenharia, não estética