Capítulo 19 — Identidade e criptografia
Mapa da aula
Aula 19 publicada. Mapa, exemplo, EX055.
flowchart TD
N0["19.1 Identidade dos dispositivos"]
N1["Laboratório — Autenticação de mensagens"]
N2["19.2 Ler a execução do HMAC"]
N3["19.3 Pessoas e revogação"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX055"]
Desenho lógico
flowchart LR
N0["19.1 Identidade dos dispositivos"]
N1["Laboratório — Autenticação de mensagens"]
N2["19.2 Ler a execução do HMAC"]
N3["19.3 Pessoas e revogação"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX055"]
[19.1 Identidade dos dispositivos]
|
v
[Laboratório — Autenticação de mensagens]
|
v
[19.2 Ler a execução do HMAC]
|
v
[19.3 Pessoas e revogação]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX055]
Objetivos de aprendizagem
Você vai (1) autenticar dispositivos e pessoas com chaves e certificados; (2) usar o HMAC para a autenticação de mensagens; (3) relacionar identidades a certificados e à revogação.
19.1 Identidade dos dispositivos
Cada medidor da Ridgeway precisa de uma identidade que outros possam verificar. Aiyana compara duas abordagens. A identidade simétrica usa uma chave secreta por medidor compartilhada com o serviço de chaves; é barata, mas o serviço precisa proteger todas as chaves. A identidade assimétrica dá a cada medidor um par de chaves e um certificado assinado pela autoridade de dispositivos da Ridgeway, seguindo o perfil X.509 da RFC 5280; os verificadores precisam apenas das chaves públicas. Ela recomenda chaves HMAC simétricas para as leituras, cujo volume é alto, e certificados para os concentradores, que se autenticam no gateway por TLS.
Laboratório — Autenticação de mensagens
"""Authenticate synthetic meter readings with HMAC-SHA256 (RFC 2104) and constant-time compare."""
import hmac, hashlib
KEY = bytes(range(32)) # demo key; real keys come from the utility's key service
def tag(msg): return hmac.new(KEY, msg, hashlib.sha256).hexdigest()
def main():
msg = b"meter=M-0417;litres=18342;ts=2026-04-01T06:00Z"
t = tag(msg)
print("tag", t[:24], "...")
print("genuine verifies:", hmac.compare_digest(t, tag(msg)))
forged = msg.replace(b"18342", b"08342")
print("edited reading verifies:", hmac.compare_digest(t, tag(forged)))
if __name__ == "__main__":
main()
Execute com python3 lab_hmac.py. Saída verificada:
tag bc7de0101afc1c79bfc23747 ...
genuine verifies: True
edited reading verifies: False
19.2 Ler a execução do HMAC
O laboratório gera a tag de uma leitura canônica com HMAC-SHA256 e a verifica. A leitura genuína é verificada, e a leitura editada, com um dígito alterado, falha, porque sem a chave ninguém consegue calcular uma tag válida para uma mensagem modificada. A verificação usa hmac.compare_digest para evitar vazamentos de tempo. A chave de demonstração é uma sequência fixa de bytes apenas para que a saída seja reproduzível; as chaves reais vêm do serviço de chaves. Aiyana enfatiza que o HMAC dá integridade e autenticação da origem entre as partes que compartilham a chave, mas não irretratabilidade (não repúdio), porque qualquer das partes poderia ter produzido a tag.
19.3 Pessoas e revogação
As pessoas da Ridgeway se autenticam com chaves de segurança de hardware e certificados de vida curta para o acesso administrativo. Quando alguém sai, seu acesso precisa terminar rapidamente. Aiyana documenta a revogação para cada tipo de identidade: as chaves dos medidores são desativadas no serviço de chaves; os certificados dos concentradores são acrescentados a uma lista de revogação ou simplesmente deixados expirar, já que têm vida curta; os certificados da equipe são revogados e seus tokens desativados. Ela anota que vidas curtas reduzem a dependência da verificação de revogação, que os clientes fazem de forma desigual. Os passos de revogação são ensaiados duas vezes por ano, para que a equipe os conheça sob pressão.
Exemplo resolvido
Aiyana escolhe chaves HMAC por medidor para as leituras e certificados para os concentradores e a equipe, demonstra a verificação de tags e documenta a revogação por tipo de identidade.
Caso sintético. As identidades e a chave de demonstração são inventadas; a RFC 5280 e a RFC 2104 são reais.
Erros e limites
O HMAC não consegue provar a um terceiro qual lado criou uma mensagem. Certificados de vida longa tornam a revogação essencial e difícil.
Exercícios
-
EX055 — Simétrico ou assimétrico. Por que usar chaves HMAC para as leituras, mas certificados para os concentradores? Rubrica: 3 = leituras em grande volume combinam com tags simétricas baratas; os concentradores usam TLS com verificação pública;; 2 = motivos parciais;; 1 = aleatório;; 0 = nenhuma.
-
EX056 — Leitura editada. O que o laboratório imprimiu para a leitura editada, e por quê? Rubrica: 3 = False, já que uma tag válida não pode ser calculada sem a chave;; 2 = False;; 1 = True;; 0 = nenhuma.
-
EX057 — Irretratabilidade. Por que o HMAC não oferece irretratabilidade? Rubrica: 3 = as duas partes compartilham a chave, então qualquer uma poderia ter feito a tag;; 2 = chave compartilhada;; 1 = ele oferece;; 0 = nenhuma.
Síntese
A identidade combina chaves, certificados e revogação; o HMAC autentica mensagens de alto volume entre detentores de chaves, enquanto os certificados escalam a verificação.
Continue estudando — aula 19 (capítulo 19 de 50)
← Capítulo 18 · Índice das aulas · Capítulo 20 →
Continue para a próxima aula já escrita.