0Pricing
Cryptology Academy · Aula

Construção do HMAC e prova de segurança

Acompanhe a construção ipad/opad e suas propriedades de segurança.

Construção do HMAC e prova de segurança é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.

Boas-vindas

HMAC é a construção padrão de MAC com chave. Seu projeto com duas aplicações da função de resumo impede ataques de extensão de comprimento e tem uma prova formal de segurança que reduz a segurança do HMAC à da função de resumo subjacente.

Construção do HMAC

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Em que: - K' = K preenchida com zeros até o tamanho do bloco B (ou H(K) se |K|>B) - ipad = 0x36 repetido B vezes - opad = 0x5C repetido B vezes

Por que ipad e opad?

ipad (0x36) e opad (0x5C) são constantes diferentes que garantem K' ⊕ ipad ≠ K' ⊕ opad. Na prática, elas criam duas chaves pseudorrandômicas diferentes a partir de K, usadas para o resumo interno e externo.

HMAC passo a passo

Para K=secret, M=message, H=SHA256: 1. K' = K padded to 64 bytes 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC em Python

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

Por que a extensão de comprimento falha no HMAC

Dado HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) O invasor conhece SHA256(inner_key || M) = inner_hash. Mas não pode estendê-lo — o resumo externo recebe (outer_key || inner_hash) como entrada, e não apenas inner_hash. Ele não conhece outer_key.

Prova de segurança do HMAC (Bellare)

Bellare (1996) provou: se a função de resumo H for uma função pseudorrandômica, então HMAC também será uma função pseudorrandômica. Na prática: HMAC-SHA256 é tão seguro quanto SHA-256 para suas propriedades de segurança pretendidas.

Tamanho da chave para HMAC

A chave HMAC deve ter: - Pelo menos L bytes (o comprimento da saída do resumo) - Recomendação: exatamente L bytes de dados aleatórios - Se key > block_size: a chave recebe um resumo previamente calculado até block_size - Use os.urandom(32) para chaves HMAC-SHA256

Truncamento do HMAC

A saída do HMAC pode ser truncada para metade do comprimento da saída sem perda significativa de segurança. TOTP/HOTP truncam para 4 bytes. Os MACs do TLS são truncados. Nunca trunque para menos de 80 bits (10 bytes).

HMAC em diferentes contextos

HMAC-SHA256 é usado em: - TOTP: códigos de autenticação (truncados para 6 dígitos) - TLS 1.2: MACs de sessão (desnecessários no TLS 1.3 com AEAD) - JWTs: assinatura HS256 (simétrica) - Assinatura de solicitações de API: webhooks do GitHub, AWS SigV4

HKDF: derivação de chaves baseada em HMAC

HKDF(IKM, salt, info, L) usa HMAC duas vezes: 1. Extração: PRK = HMAC-SHA256(salt, IKM) 2. Expansão: OKM = HMAC-SHA256(PRK, info || counter) Usado no esquema de derivação de chaves do TLS 1.3, no Signal e no WireGuard para derivação de chaves.

Verificação rápida

Qual é a finalidade de opad (0x5C repetido) no HMAC?

Recapitulação

A construção e a prova do HMAC foram compreendidas. Em seguida, aplicaremos HMAC à assinatura de solicitações de API e veremos como impedir ataques de repetição.

Perguntas Frequentes

A aula “Construção do HMAC e prova de segurança” é grátis?

Sim — o texto completo de “Construção do HMAC e prova de segurança” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.

O que vou aprender em “Construção do HMAC e prova de segurança”?

Acompanhe a construção ipad/opad e suas propriedades de segurança. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cryptology Academy?

Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Construção do HMAC e prova de segurança”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cryptology Academy?

Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Conceitos de MAC e ataques de extensão de comprimento
  2. Construção do HMAC e prova de segurança
  3. HMAC em APIs: assinatura de solicitações
  4. CMAC e Poly1305: MACs baseados em cifras de bloco
← Voltar para Cryptology Academy