# Xifra dels quatre quadrats

La xifra dels quatre quadrats és un criptosistema que s'inclou dins de la criptografia simètrica que va ser inventat pel criptògraf francès Félix-Marie Delastelle (1840-1902). Concretament es tracta d'un criptosistema de substitució poligràfica en el qual la funció de xifrat actua sobre grups de dos lletres (dígrafs) proporcionant-ne el seu valor xifrat, també un dígraf.

## La clau

La clau que s'utilitza en la xifra dels quatre quadrats està formada per dues matrius 5x5. Cada una d'aquestes matrius té una lletra de l'abecedari en cada casella, sense que se'n repeteixi cap. Atès que les matrius tenen 25 caselles i hi ha alfabets que tenen més de 25 lletres, hi ha caselles que poden incloure més d'una lletra. Per exemple, en l'alfabet anglès de 26 lletres, s'acostuma a identificar les lletres I/J en la mateixa casella. Un exemple d'una d'aquestes matrius de la clau que inclogui l'alfabet anglès podria ser la següent:
| Q | P | G | C | I/J |
| W | H | M | T | O |
| Z | A | U | L | E |
| F | V | B | R | X |
| Y | N | D | K | S |
Atès que la posició de les lletres en les matrius determinen la clau del sistema, la xifra dels quatre quadrats pot tenir un total de (25!)² ≈ 2,4 · 10$^{50}$ claus diferents.

## L'algorisme de xifrat

Per tal de xifrar un missatge amb la xifra dels quatre quadrats, en primer lloc es prenen les dues matrius que formen la clau de xifrat, que anomenarem K$_1$ i K₂, i es complementen amb dues matrius idèntiques més, també 5x5, que contenen l'abecedari en l'ordre alfabètic i que indicarem com A. D'aquesta manera tindrem una única matriu, T, de 10x10 que és la que s'utilitzarà en els processos de xifrat i desxifrat. En aquesta matriu 10x10 la submatriu superior esquerra i la submatriu inferior dreta contindran la matriu A amb l'abecedari ordenat alfabèticament mentre que les altres submatrius contindran les dues matrius de la clau. Per tant, la matriu T quedarà formada com:
| A | K$_1$ |
| K₂ | A |
En notació matricial podem representar la matriu T = (t$_{ij}$) on i = 1, ..., 10 i j = 1,...,10 i cada entrada de la matriu t$_{ij}$ és una lletra de l'alfabet.
Per xifrar un missatge el dividirem en dígrafs, conjunts de dues lletres, i xifrarem cada dígraf per separat de la següent manera. Suposant m1m2 el nostre dígraf a xifrar:
* Prenem m$_1$ i busquem quina posició ocupa en la submatriu superior esquerra, és a dir per a quin valor m$_1$ = t$_{kl}$ per a 1≤ k ≤ 5 i per a 1 ≤ l ≤ 5.
* Prenem m₂ i busquem quina posició ocupa en la submatriu inferior dreta, és a dir per a quin valor m₂ = t$_{mn}$ per a 6 ≤ m ≤ 10 i per a 6 ≤ n ≤ 10.
* El valor xifrat corresponent al dígraf m$_1$ m₂ serà el dígraf t$_{kn}$ t$_{ml}$

## L'algorisme de desxifrat

Per tal de desxifrar un dígraf c$_1$ c₂ l'algorisme de desxifrat també utilitza la matiu T = (t$_{ij}$) formada de la mateixa manera que s'ha indicat en l'algorisme de xifrat. En el cas del desxifrat els passos que seguirem seran els següents:
* Prenem c$_1$ i busquem quina posició ocupa en la submatriu superior dreta, és a dir per a quin valor c$_1$ = t$_{kl}$ per a 1 ≤ k ≤ 5 i per a 6 ≤ l ≤ 10.
* Prenem c₂ i busquem quina posició ocupa en la submatriu inferior esquerra, és a dir per a quin valor c₂ = t$_{mn}$ per a 6 ≤ m ≤ 10 i per a 1 ≤ n ≤ 5.
* El valor en clar corresponent al dígraf c$_1$ c₂ serà el dígraf t$_{kn}$ t$_{ml}$

## Exemple

A continuació es detalla amb un exemple tant el procés de xifrat com el de desxifrat.

### Generació de la clau

A l'hora de generar les matrius de la clau de la xifra dels quatre quadrats es pot fer servir una tècnica que no genera una matriu completament aleatòria (com la mostrada anteriorment) però que simplifica el procés de la transmissió de claus entre l'emissor i el receptor. Aquesta tècnica consisteix a crear la matriu de la clau a partir d'una paraula, de manera que les lletres d'aquesta paraula són les que definiran l'ordre de l'alfabet en la matriu. Així, es procedirà a omplir la matriu amb les lletres de la paraula (sense repetir-ne cap) i un cop utilitzades totes les lletres caldrà acabar d'omplir la matriu amb la resta de l'abecedari. Un exemple de la matriu que generaria la paraula CRIPTOGRAFIA seria la següent:
| C | R | I/J | P | T |
| O | G | A | F | B |
| D | E | H | K | L |
| M | N | Q | S | U |
| V | W | X | Y | Z |
Utilitzant aquesta tècnica, es poden intercanviar les claus de la xifra dels quatre quadrats únicament indicant dues paraules.

### Xifrat

Per xifrar el missatge BON DIA utilitzant per a la generació de les matrius de la clau les paraules CRIPTOGRAFIA i SEGURETAT, el procés serà el següent:
Prenent aquesta informació, construïm la matriu T de la següent manera:
| A | B | C | D | E | C | R | I/J | P | T |
| F | G | H | I/J | K | O | G | A | F | B |
| L | M | N | O | P | D | E | H | K | L |
| Q | R | S | T | U | M | N | Q | S | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
| S | E | G | U | R | A | B | C | D | E |
| T | A | B | C | D | F | G | H | I/J | K |
| F | H | I/J | K | L | L | M | N | O | P |
| M | N | O | P | Q | Q | R | S | T | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
Per xifrat el primer dígraf BO busquem on es troben les lletres B i O en la submatriu superior esquerra i submatriu inferior dreta respectivament, tal com es mostra en la següent matriu:
| A | B | C | D | E | C | R | I/J | P | T |
| F | G | H | I/J | K | O | G | A | F | B |
| L | M | N | O | P | D | E | H | K | L |
| Q | R | S | T | U | M | N | Q | S | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
| S | E | G | U | R | A | B | C | D | E |
| T | A | B | C | D | F | G | H | I/J | K |
| F | H | I/J | K | L | L | M | N | O | P |
| M | N | O | P | Q | Q | R | S | T | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
A continuació busquem els valors en què es transformaran aquestes dues lletres. Les expressions matemàtiques indicades en la descripció dels algorismes de xifrat i desxifrat tenen una representació gràfica molt simple. Només ens caldrà prendre les dues lletres en la matriu com els vèrtexs d'un rectangle. Els seus corresponents valors xifrats seran les lletres dels vèrtexs oposats. D'aquesta manera, podem veure que les lletres B i O formen el rectangle BPHO en la matriu T:
| A | B | C | D | E | C | R | I/J | P | T |
| F | G | H | I/J | K | O | G | A | F | B |
| L | M | N | O | P | D | E | H | K | L |
| Q | R | S | T | U | M | N | Q | S | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
| S | E | G | U | R | A | B | C | D | E |
| T | A | B | C | D | F | G | H | I/J | K |
| F | H | I/J | K | L | L | M | N | O | P |
| M | N | O | P | Q | Q | R | S | T | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
Per tant, la lletra B quedarà xifrada com una P i la lletra O com una H i, per tant, el dígraf BO es xifrarà com PH.
De la mateixa manera podem xifrar la resta de dígrafs del nostre missatge i n'obtindrem el text xifrat:
BO ND IA
PH KG OU

### Desxifrat

El procés de desxifrat utilitza també la matriu T i el funcionament és simètric al procés de xifrat. Per exemple, si volem desxifrar el text CGICME el separarem en dígrafs i per al primer dígraf CG buscarem el rectangle corresponent en la matriu T.
| A | B | C | D | E | C | R | I/J | P | T |
| F | G | H | I/J | K | O | G | A | F | B |
| L | M | N | O | P | D | E | H | K | L |
| Q | R | S | T | U | M | N | Q | S | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
| S | E | G | U | R | A | B | C | D | E |
| T | A | B | C | D | F | G | H | I/J | K |
| F | H | I/J | K | L | L | M | N | O | P |
| M | N | O | P | Q | Q | R | S | T | U |
| V | W | X | Y | Z | V | W | X | Y | Z |
De nou, substituirem els vèrtexs del rectangle que formen les lletres pels vèrtex oposats de cada lletra, de manera que obtindre CA per al primer dígraf.
Si desxifrem la resta del missatge ens apareix:
CG IC ME
CA DI RA

## Variants per a xifrar altres valors

Una possible variant de la xifra dels quatre quadrats per a poder xifrar números és ampliant les matrius que s'utilitzen a matrius de 6x6. D'aquesta manera, podem disposar en cada una de les matrius les 26 lletres de l'abecedari més els 10 dígits (del 0 al 9) i això ens permetrà xifrar un text que contingui lletres i números. A més, d'aquesta manera el nombre de claus possibles augmenta substancialment, ja que en aquest cas tindrem (36!)² ≈ 1,38⋅ 10$^{83}$ possibles claus.

## Bibliografia

* Wrixon Fred B. Langages secrets. Codes, chiffres et autres cryptosystèmes. Könemann: 2000 (pp. 231–232)