PGP
PGP (Pretty Good Privacy)
Uma estrutura de criptografia e assinatura que usa criptografia de chave pública para permitir que indivíduos enviem e-mails criptografados, assinem documentos e verifiquem identidades sem depender de uma autoridade central.
Detalhe técnico
PGP usa criptografia híbrida: os dados são criptografados com uma chave de sessão simétrica (AES), e a chave de sessão é criptografada com a chave pública RSA/ECDH do destinatário. Assinaturas digitais aplicam RSA/ECDSA ao hash da mensagem. O padrão OpenPGP (RFC 4880, com RFC 9580 como rascunho) define formatos de pacotes para chaves, assinaturas, dados criptografados e compressão. A rede de confiança substitui CAs centralizadas: os usuários assinam as chaves uns dos outros para estabelecer confiança. GnuPG (GPG) é a implementação de código aberto mais difundida.
Exemplo
```javascript
// AES-256-GCM encryption (Web Crypto API)
const key = await crypto.subtle.generateKey(
{ name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv },
key,
new TextEncoder().encode('secret message')
);
```