Atac d'aniversari

De Viquipèdia
Dreceres ràpides: navegació, cerca

Un atac d'aniversari (o, anglès, birthday attack ) és un tipus d'atac criptogràfic que es basa en la matemàtica darrere de la paradoxa de l'aniversari, fent ús d'una situació de compromís espai-temps informàtica. Concretament, si una funció matemàtica produeix  H resultats diferents igualment probables i  H és prou gran, llavors, després d'avaluar la funció sobre  1/2 \sqrt H arguments diferents, s'espera trobar un parell d'arguments  x_1 i  x_2 diferents de manera que  f (x_1) = f (x_2) , fet conegut com una col·lisió.

La matemàtica[modifica | modifica el codi]

Per demostrar el resultat anterior, vam començar amb el desenvolupament en sèries de Taylor de la probabilitat que dues persones compleixin els anys en el mateix dia. En aquest cas, substituïm el nombre de dies en un any amb el nombre de resultats únics,  H :

 P (n) = 1 - \bar p (n) \approx 1 - i^{- (n (n-1))/2 \cdot H}\approx 1-e^{-n^2/{2 \cdot H}},

on  n és el nombre d'intents per a una col·lisió. Invertint aquesta expressió,

 N (p) \approx \sqrt{2 \cdot H \cdot \ln \left ({1 \over 1-p}\right )},

i assignant una probabilitat de col·lisió de 0.5 (condició que sigui tant possible com impossible), arribem a

 N (0,5) = 1.1774 \sqrt H .

Com a exemple, si s'usa un hash de 64 bits, hi haurà aproximadament 1/8 × 10 19 resultats diferents. Si totes són igualment probables (el millor dels casos), llavors prendria només uns 5/1 × 10 9 intents aproximadament generar una col lisió utilitzant força bruta. Altres exemples són com es mostra a continució:

Bits Sortides
possibles
Possibilitat desitjada de col·lisions aleatòries
10 -12 10 -9 10 -6 0,1% 1% 25% 50% 75%
64 1/8 × 10 19 6/1 × 10 3 1/9 × 10 5 6/1 × 10 6 1/9 × 10 8 6/1 × 10 8 3/3 × 10 9 5/1 × 10 9 7/2 × 10 9
128 3/4 × 10 38 2/6 × 10 13 8/2 × 10 14 2/6 × 10 16 8/3 × 10 17 2/6 × 10 18 1/4 × 10 19 2/2 × 10 19 3/1 × 10 19
256 1/2 × 10 77 4/8 × 10 32 1.5 × 10 34 4/8 × 10 35 1.5 × 10 37 4/8 × 10 37 2/6 × 10 38 4.0 × 10 38 5/7 × 10 38
384 3/9 × 10 115 8/9 × 10 51 2/8 × 10 53 8/9 × 10 54 2/8 × 10 56 8/9 × 10 56 4/8 × 10 57 7/4 × 10 57 1.0 × 10 58
512 1/3 × 10 154 1/6 × 10 71 5/2 × 10 72 1/6 × 10 74 5/2 × 10 75 1/6 × 10 76 8/8 × 10 76 1/4 × 10 77 1/9 × 10 77
Aquesta taula mostra el nombre de hashes que són necessaris per assolir la probabilitat d'èxit donada, assumint que tots els hashes són igualment probables

És fàcil veure que si els resultats de la funció no estan distribuïdes uniformement (és a dir, si no són igualment probables), llavors les col·lisions poden ser trobades molt més ràpidament. La noció de 'balanç' d'una funció de hash quantifica la resistència de la funció a atacs d'aniversari i permet que es consideri la vulnerabilitat de funcions de hash populars, com ara MD5 i SHA (Bellariva i Kohn, 2004).

Les signatures digitals poden ser susceptibles d'un atac d'aniversari. Un missatge  m típicament es firma computant primer  f (m) , on  f és una funció de hash criptogràfica i després es fa servir alguna clau secreta per signar  f (m) . Suposem que Alice vol enganyar Bob perquè signi un contracte fraudulent. Alice prepara un contracte bo  m i un dolent  m '. Així, ella busca un nombre de posicions on  m pugui ser modificat sense canviar el significat, com per exemple inserint comes, línies en blanc, canviant l'espaiat entre oracions, usant sinònims, etc. Combinant aquests canvis, Alice podria crear un nombre immens de variacions de  m , totes elles contractes bons. De manera similar, podria crear un nombre immens de contractes fraudulents  m '. Llavors, ella aplica una funció de hash a totes aquestes variacions fins que trobi una versió del contracte bo i una altra del dolent que tinguin el mateix valor hash,  f (m) = f (m ' ) . Després, li presenta la versió bona a Bob perquè la ferma. Quan Bob la signatura, Alice pren la signatura i es l'adjunta al contracte frudulento. Les signatura digital "prova" llavors que Bob va signar el contracte fraudulent. (Nota: aquest esquema difereix lleugerament del problema original de l'aniversari, ja que Alice no guanya res per trobar dos contractes bons o dos contractes fraudulents que produeixen el mateix hash, però, en aquest esquema les probabilitats són sorprenentment altes.)

Per impedir aquest atac, la longitud dels resultats de la funció hash han de ser prou grans de manera que l'atac d'aniversari es torni computacionalment impossible, per exemple, unes dues vegades més gran del que es requeriria per prevenir un atac de força bruta. També s'ha recomanat que Bob realitzi canvis menors en qualsevol document que li sigui presentat per a ser signat. Tanmateix, això no resulve el problema, perquè ara Alice sospita que Bob voleu utilitzar un atac d'aniversari.

L'atac d'aniversari pot ser usat per accelerar el còmput de logaritmes discrets. Suposem que  x i  i són elements d'un grup i que  i és una potència de  x . Volem trobar l'exponent de  x que dóna  i . Un atac d'aniversari computa  x^r per a diversos enters  r elegits aleatòriament i computa  ix^{-s} per a diversos enters  s elegits aleatòriament. Passat un temps, es trobarà un parell  x^r = ix^{-s}, el que significa que  i = x^{r+s}.

Si el grup té  n elements, el mètode més simple de provar tots els exponents presa al voltant  n/2 intents de mitjana. L'atac d'aniversari és considerablement més ràpid i implica menys de  2 \sqrt n intents de mitjana.

Hi ha tècniques basades en repetició iterativa que poden reduir considerablement els requeriments d'emmagatzematge dels atacs d'aniversari.

Exemple[modifica | modifica el codi]

El següent és un exemple de com crear variacions d'una carta sense alterar el contingut.

{Benvolgut|Estimat}client,

{Ens posem en contacte amb vostè|Le estem escrivint}
per{anunciar|informar}sobre la{xerrada|conferència}
que{realitzarà|durà a terme}el dia 1 de gener de 2007,
a les 12 hores a{nostre auditorium|les nostres premisses},
{Que brindarà|a càrrec de 'un{reconegut|prestigiós}
{Autor|escriptor}d'{diversos|nombrosos}{llibres|documents}
sobre ciència i tecnologia.

{La xerrada|La trobada}{consistirà en|comprendrà}els
següents{tòpics|continguts}:{Internet,|El web 2.0,}
{E-learning i VoIP|VoIP i E-learning '.

{Aquesta|Aquesta}invitació és{només|únicament 'per
nostres{més exclusius clients|clients més exclusius}i
és per{això|això}, que{esperem|desitgem}comptar amb
la seva presència.

Sense{més|altre particular},{li saludem|ens acomiadem d'
Vostè}{atentament|cordialment}.

Seleccionant entre una de les dues opcions que es presenten, es pot crear 2 24 missatges diferents. Normalment els processadors de text poden configurar per a generar documents d'aquesta manera.

Vegeu també[modifica | modifica el codi]

Referències[modifica | modifica el codi]

  • Mihir Bellariva, Tadayoshi Kohn: Hash Function Balanç and Its Impact on Birthday Attacks. EUROCRYPT 2004: pp401-418

Enllaços externs[modifica | modifica el codi]