Um protocolo de autenticação é uma sequência definida de mensagens criptográficas que verifica a identidade de uma entidade antes de conceder acesso.
Fluxo Genérico do Protocolo
- Iniciação: Cliente solicita acesso a recurso protegido.
- Apresentação de Credenciais: Cliente envida declaração de identidade (usuário, certificado, token).
- Desafio (opcional): Servidor envia nonce, quebra-cabeça criptográfico ou solicita fator adicional.
- Resposta: Cliente comprova prova (hash de senha, assinatura, OTP, correspondência biométrica).
- Verificação: Servidor valida prova contra referência armazenada (senha hash, chave pública, segredo TOTP).
- Estabelecimento de Sessão: Em caso de sucesso, servidor emite token de sessão (JWT, cookie, asserção SAML, token de acesso OAuth).
- Validação de Sessão: Requisições subsequentes apresentam token; servidor verifica assinatura, expiração, revogação.
- Término: Logout, timeout ou revogação invalida token.
Propriedades de Segurança
- Resistência a replay: Nonces, timestamps, códigos de uso único.
- Proteção MITM: TLS mútuo, channel binding, desafios assinados.
- Proteção de credenciais: Hashes lentos com salt (Argon2, bcrypt), provas de conhecimento zero.
- Sigilo perfeito (forward secrecy): Chaves efêmeras (em TLS, protocolo Signal).
Principais Famílias de Protocolos
- Senha / Conhecimento: HTTP Basic, Digest, Formulários + hash com salt.
- Biometria / Inerência: FIDO2/WebAuthn, Apple Face ID, Windows Hello.
- Dois Fatores (2FA/MFA): TOTP (RFC 6238), Push (Duo, Auth0), SMS/Email OTP (mais fraco), Chaves de hardware (YubiKey).
- Federado / Delegado: OAuth 2.0 / OpenID Connect (Google, Microsoft, Okta), SAML 2.0 (SSO empresarial).
- Baseado em Ticket: Kerberos (domínios Windows), SPNEGO.
- Baseado em Certificado: mTLS, chaves SSH, Smart Cards (PIV/CAC).
Escolhendo um Protocolo
Compatibilize com modelo de ameaça, atrito do usuário e infraestrutura. Melhor prática moderna: WebAuthn + OIDC para autenticação resistente a phishing e sem senha.