MAC d'una clau (OMAC) és una família de codis d'autenticació de missatges construïts a partir d'un xifrat de blocs semblant a l'algorisme CBC-MAC. Es pot utilitzar per garantir l'autenticitat i, per tant, la integritat de les dades. Es defineixen dues versions:

L'OMAC original de febrer de 2003, que s'utilitza poques vegades. El nom preferit és ara "OMAC2". El refinament OMAC1, que es va convertir en una recomanació del NIST el maig de 2005 sota el nom de CMAC. OMAC és gratuït per a tots els usos: no està cobert per cap patent. 499x499px

Història El nucli de l'algoritme CMAC és una variació de CBC-MAC que Black i Rogaway van proposar i analitzar amb el nom de "XCBC" i presentada al NIST. L'algorisme XCBC aborda de manera eficient les deficiències de seguretat de CBC-MAC, però requereix tres claus.

Iwata i Kurosawa van proposar una millora de XCBC que requereix menys material clau (només una clau) i van anomenar l'algorisme resultant One-Key CBC-MAC (OMAC) als seus articles. Més tard van presentar l'OMAC1 (=CMAC), un perfeccionament de l'OMAC i una anàlisi de seguretat addicional.

Algorisme Per generar una etiqueta CMAC de ℓ-bit (t) d'un missatge (m) utilitzant un xifratge de bloc de bits b(E) i una clau secreta (k), primer genera dues subclaus de bits b (k1 i k2) utilitzant el següent algorisme (això és equivalent a la multiplicació per x i x2 en un camp finit GF(2b)). Sigui ≪ l'operador estàndard de desplaçament a l'esquerra i ⊕ l'exclusiu per bits o:

Calcula un valor temporal k 0 = E k (0). Si msb( k 0 ) = 0, aleshores k 1 = k 0 ≪ 1, sinó k 1 = ( k 0 ≪ 1) ⊕ C; on C és una certa constant que només depèn de b. (Concretament, C són els coeficients no líders del primer polinomi binari de grau b irreductible lexicogràficament amb el nombre mínim d'uns: 0x1B per a blocs de 64 bits, 0x87 per a blocs de 128 bits i 0x425 per a blocs de 256 bits.) Si msb(k1) = 0, aleshores k2 = k1 ≪ 1, sinó k2 = (k1 ≪ 1) ⊕ C. Retorna claus ( k 1, k 2 ) per al procés de generació MAC.

Com a petit exemple, suposem , i . Aleshores i .

Implementacions Implementació de Python: vegeu l'ús de la funció AES_CMAC() a " impacket/blob/master/tests/misc/test_crypto.py " i la seva definició a " impacket/blob/master/impacket/crypto.py " Implementació de Ruby

Referències

Categoria:Xifratges