La millor xifra polialfabètica: la xifra de Vigenère

Al segle XVI el francès Blaise de Vigenère va millorar unes idees un segle anteriors de l'artista-matemàtic italià Leon Battista Alberti. Vigenère va publicar un llibre titulat Traité des chiffres où secrètes manières d'escrire on explicava una forma de xifratge polialfabètic:

Una mateixa lletra, al llarg del missatge, pot està representada per altres de forma canviant. Una A podrà ser algunes vegades una D o una H, però, atenció!, no sempre la D o la H representarà la A.

En el fons la xifra de Vigenère era una forma d'utilitzar la xifra del Cèsar amb uns quants alfabets a la vegada. Però el mètode era tan bo que el va poder publicar sense guardar-lo en secret perquè encara que al començament del missatge estigués escrit ben clarament "AQUEST MISSATGE ESTÀ XIFRAT AMB EL SISTEMA DE VIGENÈRE" sense la paraula clau era pràcticament impossible descodificar-lo.

Vegem com funciona.

  1. S'ha de decidir una paraula clau. Per exemple CALAIX. Aquesta paraula només l'han de conèixer la persona emissora i la receptora.
  2. A sota de cada lletra del missatge es va repetint la paraula clau.

  1. Tenim la Taula de Vigenère amb els 26 alfabets desplaçats. Només haurem de treballar amb les files que assenyalen les lletres de la nostra paraula clau: C, A, L, I i X

  1. Totes les lletres del missatge aparellades amb la lletra C de la paraula clau es codificaran amb la fila C, totes les lletres aparellades amb les A de la clau, es codifiquen amb l'alfabet de la fila A...

Si observem com ha quedat la xifra veurem algunes fites importants

Text clar Quedem avui a les cinc
Text xifrat SUPDMJ CVFI I IGS NIVZ
  • la lletra E del text clar queda codificada una vegada amb la P, una altra amb la M i una encara amb la G.
  • la lletra I del text codificat representa dues vegades la pròpia I, una la lletra A i una altra la lletra L

La xifra de Vigenère desafia completament l'anàlisi de freqüències i, durant molts anys va ser la millor xifra coneguda. Però tenia un punt feble. Quin?

Blaise de Vigenère Fes servir la màquina codificadora en xifra de Vigenère

 

I van arribar Kasiski i Babbabge
Durant gairebé tres segles ningú va saber com atacar la Xifra de Vigenère. Però a meitat del segle XIX dos criptoanalistes, de forma independent, van saber trobar per on vèncer-la. Un va ser un oficial prussià, F.W. Kasiski i l'altre un matemàtics anglès, Charles Babbage, un dels precursors dels ordinadors.

Els criptoanalistes són especialistes a trobar el més mínim punt feble d'un mètode de xifrat i saben separar perfectament les diferents parts del problema de la descodificació.

El que era fonamental d'esbrinar en la Xifra de Vigenère era la clau. Però la clau té dues característiques: la longitud de la paraula i les lletres concretes que la formen.

Charles Babbage

El primer objectiu de Kasiski i de Babbage va ser esbrinar la longitud de la clau. Però com? L'explicació és una mica complicada però és molt interessant intentar-la seguir.

  • 1a fase: Com saber la longitud de la clau
  • Si un missatge és prou llarg és possible que determinats grups de lletres, per exemple la paraula QUE, coincideixi alguna o algunes vegades, sobre el mateixos llocs de la paraula clau, per tant quedaran codificats també amb les mateixes lletres.
  • Podem buscar uns quants casos i anotar quina distància en lletres els separen.
  • Aquesta distància ha de ser, forçosament, un múltiple de la longitud de la clau.
  • Quantes més repeticions tinguem, ja sigui d'un mateix grup o de grups diferents, millor, perquè tindrem més informació
  •  La clau serà un divisor comú de totes aquestes distàncies.

Observem un exemple per desxifrar aquest text en el que hem marcat un parell de repeticions:

YHXEK IGLXZ GUYEM EWLQZ RUYXG IFNED TCPRK VIMEI YHAEJ XICED FYWWV YLLQR XXPBR MMWMM EXTVR ZYFVV WCUSR GIYWV KOPMO SWZQG XUCIC WMPYJ BUTWV RGPRP WXPGZ RWDIX SHDQV RXZRR VUFRR PUBYR PWZWR IFAEJ XICGF RNPWK EUQMI QUEMM EGPRK XIETV RMLRK IHWEZ QJZWJ MVTPZ XUEHL RWZQG XUEKV XUYVR TCOTV VIGIK EKFMH YYPPD ENPQR XCNIJ GIYGV RNCEZ EVLRJ HYWWT MHNWV KIYWC MWZQL RCNER PJLWK SLBYV EFCED ENSMY EPTEK VYDGV RNDUL ELLRK EHZYO ECDIC TUDXF VPLLR ZYCHR GWPTK ELBYV IFXEK IGLXZ GBLZZ EAFEE CUEMV WUTBZ GIXEH YYDXT ELCIX EYWWV YAFEE CUWIJ TUEPC ECNSD IHNER GUXME ELESK GIYXV RNAII SYWTR WNZVV WGLTV VXFXG IFBYV EWLFR ZUOIM IOCIT VCOER PGLXV QUEMT IMNSC XCAEI MZLVR IFQEM SLOIK SLYEI QYPPX SM

Si busquem totes les repeticions de grups de 2, 3, 4 o 5 lletres podem obtenir una taula llista de distàncies de repetició, totes múltiple de la llargada de la clau

Al text superior la clau és de 5 lletres

  • 2a fase: trobar la paraula clau

Sabem que la clau té cinc lletres i, per tant, que s'han fet servir, ordenadament cinc alfabets diferents. Cada cinc lletres estan ordenades amb el mateix:

  • Grup 1: lletres 1, 6, 11, 16, 21...
  • Grup 2: lletres 2, 7, 12, 17, 22...
  • Grup 3: lletres 3, 8, 13, 18, 23...
  • Grup 4: lletres 4, 9, 14, 24, 29...
  • Grup 5: lletres 5, 10, 15, 20, 25...

Al que haurem de fer ara és separar cada grup de lletres, fer a cada grup el seu anàlisi de freqüències i buscar a quina fila de la taula de Vigenère correspon.

Amb aquest enllaç obriràs una finestra en el que, en poc més de 5 minuts, podràs veure, amb animacions incloses, com s'aplica el mètode complet per trobar la clau (longitud i lletres) del missatge de l'exemple.

Atac de Kasiski

 

Tens una eina d'anàlisi informàtic de la Clau de Vigenère

Contraataquem a Kasiski

Kasiski i Babbage van evidenciar el punt feble de la Xifra de Vigenère: es pot descobrir la longitud de la clau. Com podem contraatacar?

  • La clau infinita

Si tenim una clau tan llarga com el propi text no ens la podran trobar. Però, com aconseguir una clau prou llarga? Un bon truc és fer servir la mateixa pàgina de la mateix edició d'un llibre. Per exemple, ens podem posar d'acord en utilitzar el llibre "L'art de la comunicació secreta" de David Juher en l'edició de Llibres de l'Índex de l'any 2004. Això només ho sabem les dues persones interessades. Al començament del missatge només caldria escriure un 77 per entendre que la clau és la pàgina 77 del llibre. Amb aquest truc la clau serà:

USHEUPREGUNTATMAICOMESPOSSIBLEQUEEXISTEIXINPROGRAMESINFORMATICS...

Encara que aquesta clau és molt llarga la millor seria una clau infinita. No la tenim, però ens hi acostem.

  • La clau a l'atzar

Els criptoanalistes tenen molta paciència i si pensem que la clau són paraules conegudes podem fer proves fins trobar el llibre-clau. A més la llengua repeteix paraules (que, de, en...) que, per força es repetiran a la clau. Seria molt millor una clau a l'atzar

AHNTOEPLLDMVPWSDKJGFUEWKDMDSKFLWOP...

Aquesta clau té alguns inconvenients:

  • és impossible de recordar i pesada d'utilitzar

  • no és completament a l'atzar; l'he feta picant amb els ulls tancats al teclat i com que faig, ara un dit d'una mà, ara un dit de l'altra, hi ha alternativament, més o menys, una lletra de cada meitat del teclat.

Encara que una màquina no pot fabricar atzar el pot simular força bé. A les màquines no es cansen amb les feines pesades. Perquè no deixem treballar a la màquina?

 

L'enigma d'ENIGMA
 
Entre la 1a i la 2a Guerra Mundial els alemanys van utilitzar una màquina diabòlica per encriptar missatges que s'acostava molt a la utilització del mètode de Vigenère amb una clau llarguíssima i feta a l'atzar. La van batejar amb el nom d'ENIGMA. Com era aquesta màquina? La part visible ens mostra un teclat i unes lletres que s'il·luminaven. Pitjant una tecla s'encenia la lletra codi (o bé la correcta quan desxifràvem).

 

Màquina Enigma

A la imatge tens un enllaç amb un emulador de la màquina ENIGMA.

El missatge

FFFFF FFFFF FFFFF FFFFF FFFFF

s'ha codificat com

OXZIZ ZSXBR XGREJ HQJJD UVTGI

Observem per sobre el seu funcionament.

  • la màquina tenia unes rodes modificadores o rotors que connectaven cada punt d'entrada amb un altre de sortida descol·locat respecte al primer. Cada vegada que es picava una lletra el modificador girava una posició. La imatge et presenta un esquema amb només sis lletres, però els rotors d'ENIGMA tenien 26.

  • es posaven tres modificadors seguits; quan el primer havia completat una volta feia girar una posició al següent. D'aquesta forma els modificadors no tornaven a estar en la mateixa posició fins a 26·26·26 moviments: 17576 girs. Pel mateix criteri hi ha 17576 posicions inicials possibles dels tres modificadors. Cada posició és una clau específica: F-G-P significaria posar el primer en F, el segon en G i el tercer en P.

  • els rotors, però, eren intercanviables; si en tenim tres hi ha sis disposicions possibles

1-2-3 1-3-2 2-1-3
2-3-1 3-1-2 3-2-1

Una clau afegida seria com disposar-los. Per exemple podríem dir (2-1-3; H-M-B) i indicaríem com posar els modificadors i com orientar-los. Ara hem multiplicat per 6 les possibilitats inicials (6·17576 = 105 456 possibilitats)

modificadors

  • a més la màquina tenia un clauer que permetia alterar el teclat de forma que la A es convertís en G (i la G en A) o la B en U (i la U en B). Es podien intercanviar sis parells de lletres el que dóna més de cent milions de formes diferents!

Caluer

  • si diem com col·locar els sis cables i la clau de posició-orientació dels modificadors ens en anem a més de deu mil bilions de possibilitats inicials. Recordem que a cada tecla que piquem la posició global dels modificadors canvia un pas.

  • al final del camí dels modificadors hi havia un reflector que feia a tornar passar el corrent en direcció contrària per encendre la bombeta.

A la imatge tens un enllaç que porta a un emulador d'Enigma amb els rotors visibles.

Així es pot veure com van girant a cada lletra que es tecleja.

  • la cosa no acabava aquí; l'exèrcit alemany disposava d'un llibre de claus per determinar la posició inicial del dia de clauers i rotors. Però al començament del missatge s'enviava un codi de tres lletres que indicava com reorientar els rotors per descodificar la resta del missatge. Aquest codi de tres lletres s'escrivia dues vegades per confirmar-ho. És a dir:
  • el descodificador posava tota la màquina en la posició del dia.
  • Descodificava les sis primeres lletres i li sortia una seqüència repetida, per exemple ZFDZFD.
  • Col·locava els rotors orientats en ZFD i descodificava la resta del missatge.

Recordem que les sis primeres lletres també s'enviaven codificades i l'aspecte de ZFDZFD podia ser CEOUNY.

 

Desenigmant l'ENIGMA

La victòria sobre la màquina ENIGMA té dos episodis principals: el primer a Polònia i el segon a Anglaterra
  • L'episodi de Polònia
El protagonista principal del primer atac amb èxit a ENIGMA va ser Marian Adam Rejewski. A Polònia estaven (amb encert) molt temorosos d'una possible invasió alemanya i tenien gran interés en trencar el codi d'ENIGMA.

Els criptoanalistes polonesos disposaven d'una rèplica de la màquina ENIGMA. Per tant el problema real era buscar una manera de descobrir com col·locar els rotors i els clauers.

Rejewski va pensar en dividir el problema en dues parts:

  • descobrir l'ordre i la posició dels rotors
  • descobrir els intercanvis de lletres provocats pels clauers
Marian Rejewski

Marian A. Rejewski

Encara que hi havia més possibilitats de combinacions dels clauers va pensar que era un problema més fàcil de solucionar. Només es canviaven sis parells de lletres i la resta quedaven igual. No havia de ser especialment difícil descobrir els intercanvis. Per exemple, si veiem la la paraula TARPENAR no costa gaire descobrir que la R i la T estan canviades i la paraula correcta és RATPENAT.

Per tant Rejewski va abordar el problema més complexe dels rotors. Però... on estava el defecte dels sistema de l'exèrcit alemany? En la clau repetida! Quan al començament del missatge hi trobem CEOUNY sabem que són dos blocs que representen les mateixes lletres (CEO = UNY). Això ens permet saber que en tres voltes de rotor el que es codificava amb C ara ho fa amb U, el que ho feia amb E ara ho farà amb N i que la O es tornava Y.

A partir d'aquí, fent cadenes de lletres amb tots els missatges d'un dia, fent llistats exhaustius durant tot un any i fabricant unes màquines que simplifiquessin els càlculs (anomenades bombes) amb pocs missatges era relativament fàcil esbrinar les posicions dels tres rotors i descodificar la resta de missatges del dia.

Però quan el criptògrafs alemanys van afegir dos rotors més a ENIGMA (disposaven de 5 i col·locaven tres a la màquina) tot el treball s'havia de tornar a començar. Però la feina, a més, amb els mitjans dels polonesos era inabastable. Amb la incorporació de dues rodes més les 17576 posicions inicials dels rotors s'havien convertit en gairebé 12 milions (265) i les claves totals eren ara pròximes als 160 trilions.

  • L'episodi d'Anglaterra

Polònia va posar a l'abast del servei d'Inteligència anglès les descobertes fetes i el disseny de les bombes que ajudaven a col·locar els rotors. El govern britànic va crear un gran centre de criptoanàlisi a Bletchley Park, prop de Londres, amb centenars de persones treballant en secret.

A Anglaterra els criptoanalistes van millorar les bombes poloneses i van trobar altres dreceres per desencriptar les claus inicials. Per exemple van observar que poques vegades la clau es formava per tecles pròximes. Continuava havent un problema important: i si l'exèrcit alemany descobria que el punt feble d'ENIGMA era la repetició de la clau, com s'ho farien?

Aquí és on entra, entre d'altres, el gran matemàtic anglès Alan Turing.

Turing havia fet grans aportacions al desenvolupament d'importants aspectes de la lògica matemàtica. A més havia assentat les primeres bases de com hauria de funcionar el que ara anomenem ordinador.

Alan Turing
Bomba
Les bombes angleses eren, en poc temps, totalment diferents de les poloneses. Amb vàlvules de buit, més potents... i en gran part era gràcies a les idees de Turing.

Però la idea genial de Turing va ser una altra. Va observar que els primers missatges de cada dia donaven informacions meteorològiques. Per tant hi hauria tot un conjunt de paraules (temps, vent, temperatura...) que es normalment hi apareixerien. A aquestes paraules especials els criptoanalistes les anomenen puntals. També sabien que, per la forma d'estar construïda, la màquina ENIGMA era incapaç de codificar una lletra amb ella mateixa (D no es codifica mai amb D).

Observem, de forma simplificada, com s'aplicava la tècnica dels puntals:

  1. Es buscava un lloc on el puntal (per exemple TEMPERATURA) no coincidís amb cap lletra igual. Si es pensava que la paraula apareixia al començament del text la recerca es començava per aquí.

  1. A partir del joc d'equivalències obtingut es posaven a treballar a les bombes per poder esbrinar la col·locació dels modificadors.

Amb tècniques com aquestes es van poder descodificar els missatges de les tropes alemanyes i saber per anticipat algunes de les accions militars previstes prenen mesures que, ben segur, van ajudar a accelerar el final de la guerra.