MAC

Codi d'Autenticació de missatge
Message Authentication Code

Creative Commons License
“Curs d'Introducció a la criptografia” by Jordi Íñigo Griera is licensed under a
Creative Commons Attribution 4.0 International License.
Project hosted at github.com/jig/crypto

MAC: primera implementació

podem fer servir directament una funció de xifrat de bloc, d'aquesta manera:
$t = e(k, m)$

Layer 1 t m

Nota: no podem fer servir xifrat de flux (directament), ja que el càlcul de $k$ seria trivial; però sí que podem fer servir AES-128-ECB

MAC: primera implementació

$t = e(k, m)$

aquesta construcció té una limitació:
només podem autenticar missatges de la longitud de bloc

Alternatives: ECBC i HMAC

rawCBC-MAC

derivat del mode d'operació CBC (Cipher Block Chaining)


(basat en Wikipedia)

però en lloc de fer servir un $\text{IV}$, iniciarem la cadena amb $0$ (equivalent a $\text{IV}=0$)

rawCBC-MAC és insegur però...

ECBC-MAC

...rawCBC-MAC és insegur ja que un atacant pot combinar missatges bons per generar-ne de "bons"

per a evitar el problema podem canviar l'$\text{IV}=0$ per la longitud del missatge $\text{IV}=\ell$

ECBC-MAC

...o habitualment el que es fa és fer servir una segona clau per a tancar el càlcul i impedir el concatenat
(ECBC: Encrypted CBC)


(basat en Wikipedia)

ECBC-MAC: seguretat

ECBC-MAC és segur mentre sigui improbable trobar una col·lisió

la probabilitat de col·lisió és propera a $0.5$ per a un nombre de blocs d'aproximadament $\sqrt{|\text{bloc}|}$

e.g. en el cas de l'AES el bloc és de $128$ b, per tant, no podrem fer servir la mateixa clau:
$\text{ops} \ll \sqrt{2^{128}} = 2^{64}$

(valors acceptats per una clau AES-128/192/256:
$2^{48}$ missatges autenticats)

Altres MACs usats

Poly1305-AES: longitud $\|t\| = 128 \text{b}$

Poly1305-ChaCha20: longitud $\|t\| = 128 \text{b}$

HMAC (Hash MAC): longitud = longitud hash base

(Teoria de nombres) $\rightarrow$