0Pricing
Cryptology Academy · Lezione

Costruzione e dimostrazione di sicurezza di HMAC

Segua la costruzione con ipad e opad e ne analizzi le proprietà di sicurezza.

Costruzione e dimostrazione di sicurezza di HMAC è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Benvenuto

HMAC è la costruzione standard di un MAC con chiave. La sua struttura a doppio hash previene gli attacchi di estensione della lunghezza e dispone di una dimostrazione formale di sicurezza che riconduce la sicurezza di HMAC a quella della funzione hash sottostante.

Costruzione di HMAC

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) Dove: - K' = K con riempimento a zero fino alla dimensione del blocco B (oppure H(K) se |K|>B) - ipad = 0x36 ripetuto B volte - opad = 0x5C ripetuto B volte

Perché ipad e opad?

ipad (0x36) e opad (0x5C) sono costanti diverse che garantiscono K' ⊕ ipad ≠ K' ⊕ opad. Creano di fatto due chiavi pseudocasuali diverse a partire da K, utilizzate per l'hashing interno e quello esterno.

HMAC passo dopo passo

Per K=secret, M=message, H=SHA256: 1. K' = K con padding fino a 64 byte 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 in 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)

Perché l'estensione della lunghezza non funziona con HMAC

Dato HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) L'attaccante conosce SHA256(inner_key || M) = inner_hash. Tuttavia, non può estenderlo: l'hash esterno utilizza (outer_key || inner_hash) come input, non soltanto inner_hash. outer_key non è noto.

Dimostrazione della sicurezza di HMAC (Bellare)

Bellare (1996) ha dimostrato che, se la funzione hash H è una funzione pseudocasuale (PRF), allora anche HMAC è una PRF. In pratica: HMAC-SHA256 è sicuro quanto SHA-256 per le proprietà di sicurezza per cui è progettato.

Lunghezza della chiave per HMAC

La chiave HMAC deve avere: - Almeno L byte (la lunghezza dell'output dell'hash) - Lunghezza consigliata: esattamente L byte di dati casuali - Se key > block_size: la chiave viene sottoposta a hashing fino a block_size - Utilizzi os.urandom(32) per le chiavi HMAC-SHA256

Troncamento di HMAC

L'output di HMAC può essere troncato fino alla metà della sua lunghezza senza una perdita significativa di sicurezza. TOTP/HOTP lo troncano a 4 byte. Anche i MAC di TLS vengono troncati. Non tronchi mai sotto gli 80 bit (10 byte).

HMAC in contesti diversi

HMAC-SHA256 viene utilizzato per: - TOTP: codici di autenticazione (troncati a 6 cifre) - TLS 1.2: MAC di sessione (non necessari in TLS 1.3 con AEAD) - JWT: firma HS256 (simmetrica) - Firma delle richieste API: webhook di GitHub, AWS SigV4

HKDF: derivazione delle chiavi basata su HMAC

HKDF(IKM, salt, info, L) utilizza HMAC due volte: 1. Estrazione: PRK = HMAC-SHA256(salt, IKM) 2. Espansione: OKM = HMAC-SHA256(PRK, info || counter) Viene utilizzato nella pianificazione delle chiavi di TLS 1.3, in Signal e in WireGuard per la derivazione delle chiavi.

Verifica rapida

Qual è lo scopo di opad (0x5C ripetuto) in HMAC?

Riepilogo

La costruzione e la dimostrazione di HMAC sono state comprese. Ora applicheremo HMAC alla firma delle richieste API e vedremo come prevenire gli attacchi di replay.

Domande Frequenti

La lezione «Costruzione e dimostrazione di sicurezza di HMAC» è gratuita?

Sì — il testo completo di «Costruzione e dimostrazione di sicurezza di HMAC» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Costruzione e dimostrazione di sicurezza di HMAC»?

Segua la costruzione con ipad e opad e ne analizzi le proprietà di sicurezza. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Costruzione e dimostrazione di sicurezza di HMAC»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Concetti sui MAC e attacchi di estensione della lunghezza
  2. Costruzione e dimostrazione di sicurezza di HMAC
  3. HMAC nelle API: firma delle richieste
  4. CMAC e Poly1305: MAC basati su cifrari a blocchi
← Torna a Cryptology Academy