MDC-2

En criptografia, MDC-2 (acrònim anglès anglès de Codi de detecció de modificacions 2, de vegades anomenat Meyer-Schilling, estandarditzada a la ISO 10118-2) és una funció hash criptogràfica. MDC-2 és una funció hash basada en un xifrat de blocs amb una prova de seguretat en el model de xifrat ideal.[1] La longitud del hash de sortida depèn del xifratge de blocs subjacent utilitzat.

Per a un missatge determinat M {\displaystyle M} a hash i una funció de xifratge de xifratge de blocs determinada E {\displaystyle E} , l'algorisme MDC-2 procedeix de la següent manera. Deixar n {\displaystyle n} sigui la longitud del bloc, A 1 , B 1 {\displaystyle A_{1},B_{1}} dues constants diferents de mida n {\displaystyle n} . Si M = M 1 | | . . | | M m {\displaystyle M=M_{1}||..||M_{m}} on cadascun M i {\displaystyle M_{i}} té mida n {\displaystyle n} , després el hash V m | | W m {\displaystyle V_{m}||W_{m}} del missatge ve donat per: [2]

  • per i = 1 {\displaystyle i=1} a m {\displaystyle m} :
    • V i = M i E ( M i , A i ) {\displaystyle V_{i}=M_{i}\oplus E(M_{i},A_{i})}
    • W i = M i E ( M i , B i ) {\displaystyle W_{i}=M_{i}\oplus E(M_{i},B_{i})}
    • V i L | | V i R = V i {\displaystyle V_{i}^{L}||V_{i}^{R}=V_{i}}
    • W i L | | W i R = W i {\displaystyle W_{i}^{L}||W_{i}^{R}=W_{i}}
    • A i + 1 = V i L | | W i R {\displaystyle A_{i+1}=V_{i}^{L}||W_{i}^{R}}
    • B i + 1 = W i L | | V i R {\displaystyle B_{i+1}=W_{i}^{L}||V_{i}^{R}}
  • retorna A m + 1 | | B m + 1 {\displaystyle A_{m+1}||B_{m+1}}

Quan MDC-2 utilitza el xifratge de blocs DES, els hash MDC-2 de 128 bits (16 bytes) es representen normalment com a nombres hexadecimals de 32 dígits. A 1 {\displaystyle A_{1}} es tria com a cadena de 8 bytes 5252525252525252 i B 1 {\displaystyle B_{1}} s'escull com a cadena de 8 bytes 2525252525252525 (escrita com a dígits hexadecimals). A més, abans de cada iteració el primer byte A[0] de A {\displaystyle A} recalculat com a (A[0] i 0x9f) ^ 0x40 i el primer byte B[0] de B {\displaystyle B} es torna a calcular com a (B[0] i 0x9f) ^ 0x20.[3]

A continuació es mostra una entrada ASCII de 43 bytes (que s'emplena amb cinc zero bytes, de manera que la seva longitud és un múltiple de la mida del bloc DES de 8 bytes) i el hash MDC-2 corresponent:

MDC-2("La guineu marró ràpida salta per sobre del gos mandrós") = 000ed54e093d61679aefbeae05bfe33a

Fins i tot un petit canvi en el missatge (amb probabilitat) donarà lloc a un hash completament diferent, per exemple, canviar d a c:

MDC-2("La guineu marró ràpida salta per sobre del cog mandrós") = 775f59f8e51aec29c57ac6ab850d58e8

Referències

  1. (June 23, 2007) "[1]".  https://eprint.iacr.org/2006/294
  2. «Common Cryptographic Architecture (CCA): Modification Detection Code calculation» (en anglès). https://www.ibm.com.+[Consulta: 2 febrer 2023].
  3. «Modification Detection Code (MDC) Errors / FAQ / Knowledge Base - GPGTools Support» (en anglès). https://gpgtools.tenderapp.com.+[Consulta: 2 febrer 2023].