[ Literatura ] [ Go ] [ Cibercultura ] [ Informàtica i ciència ] [ Col·labora ] [ Sobre Hak Nam ] [ Contacte ]

Versió 1.2, 26/05/99
Dissenyat per Bruce
Schneier
Aparegut en el Criptonomicón
de Neal Stephenson
vectors de prova
- Perl - Ada -
C (#1) -
C (#2) -
C++ -
Delphi
- Forth
(#1) - Forth (#2) - Java - Javascript - K - Palm OS - Pascal - Perl
CGI - Python
(#1) - Python
(#2) - TCL
Nota: tan sols la implementació Perl ha
estat provada per Coutnerpane.
Aquesta pàgina és una traducció de l'original en anglès de Bruce Schneier, que ha estat traduïda a l'alemany per Nils Plaumann, al francès per Fernandes Gilbert i al castellà per Jesús Cea Avión. La present traducció al català és de l'Arnau Fuentes.
A la novel·la de Neal Stephenson, Cryptonomicon, el personatge Enoch Root descriu un criptosistema amb el nom en codi "Pontifex" a un altre personatge anomenat Randy Waterhouse, i després revela que els passos de l'algoritme s'intenten dur a terme fent servir una baralla de cartes de joc. Aquests dos personatges continuen intercanviant múltiples missatges encriptats amb aquest sistema. El sistema es diu "Solitari" (a la novel.la, "Pontifex" es un nom en codi que pretén dissimular el fet que utilitza una baralla de cartes) i jo l'he dissenyat per a permetre als agents de camp comunicar-se d'una manera segura sense haver de dependre de l'electrònica o haver de dur eines incriminatòries. Un agent pot ser a una situació on no té accés a un ordinador, o pot ser demandat si té eines per a comunicacions secretes. Però una baralla de cartes...quin mal pot fer?
Solitari aconsegueix la seva seguretat de l'aleatorietat inherent en una baralla de cartes ben barrejada. Mitjançant la manipulació de la baralla, el comunicant pot crear una cadena de lletres aleatòria que llavors combina amb el missatge. Per suposat que Solitari pot ser simulat en un ordinador, pero s'ha dissenyat per a ser implementat a mà.
Solitari pot semblar de baixa tecnologia, pero la seva seguretat intenta ser d'alta tecnologia. Vaig dissenyar Solitari per a ser segur fins i tot contra els millors adversaris militars amb ordinadors potents i els criptoanalistes més intel·ligents. És clar, no hi ha garanties que algú no trobi un atac enginyós contra Solitari (mireu aquest espai per a actualitzacions), pero l'algoritme és certament millor que qualsevol xifrat en llapis i paper que hagi vist.
No és ràpid, però. Pot portar tot un vespre encriptar o desencriptar un missatge raonablement llarg. Al llibre d'en David Kahn Kahn on Codes descriu un xifrat real en llapís i paper usat per un espia soviètic. Tant l'algoritme soviètic com Solitari tarden més o menys el mateix temps en encriptar un missatge: gairebé tot el vespre.
Solitari és un xifrat stream en mode output-feedback. Alguns cops s'anomena generador de claus (KG en argot militar dels EUA). La idea bàsica és que Solitari genera una cadena de números, sovint anomenada keystream, entre 1 i 26. Per encriptar, genera una cadena igual de llarga que el text pla original. Llavors se sumen, mòdul 26, lletra a lletra al text original per a crear el text xifrat. Per a desencriptar, genera la mateixa cadena i resta, mòdul 26, del text xifrat per a recuperar el text original. (No us preocupeu, explicaré què vol dir mòdul 26 en un minut.
Per exemple, per a encriptar utilitzant Solitari el primer missatge mencionat a la novel·la de Stephenson, "DO NOT USE PC":
DONOT USEPC
KDWUP ONOWT
4 15 14 15 20 21 19 5 16
3
11 4 23 21 16 15 14 15 23
20
15 19 11 10 10 10 7 20 13
23
OSKJJ JGTMW
Si sou realment bons fent aixo, podeu aprendre a sumar mentalment les lletres, i simplement sumar les lletres dels passos 1 i 2. Només és qüestió de pràctica. És fàcil recordar que A+A=B; recordar que T+Q=K és més difícil.
La idea bàsica és que el receptor genera la mateixa cadena, i llavors resta la cadena de lletres de les lletres del text xifrat.
OSKJJ JGTMW
KDWUP ONOWT
15 19 11 10 10 10 7 20 13
23
11 4 23 21 16 15 14 15 23
20
4 15 14 15 20 21 19 5 16
3
DONOT USEPC
Com pots veure, la desencriptació és igual que l'encriptació, excepte que restes el text xifrat menys la cadena.
Això és el cor de Solitari. Les descripcions anteriors d'encriptació i desencriptació funcionen per a qualsevol xifrat stream en mode output-feedback. És com funciona RC4. És com funciona el mode OFB per a DES. Aquesta secció és específica per a Solitari, i explica com Solitari genera les cadenes de lletres.
Solitari genera les seves cadenes usant una baralla de cartes. Podeu imaginar-vos una baralla de 54 cartes (recordeu els dos jokers) com una permutació de 54 elements. Hi ha 54!, o uns 2.31 x 1071, diferents ordres possibles de la baralla. Encara millor, hi ha 52 cartes a la baralla (sense els comodins), i 26 lletres a l'alfabet (a l'anglès). Aquest tipus de coincidència és massa bona com per deixar-la passar.
Per a poder utilitzar-la amb Solitari, la baralla ha de ser de 52 cartes i 2 jokers. Els jokers han de ser diferents d'alguna manera. (Això és bastant comú. La baralla que estic mirant ara mateix té estrelles als jokers: una té una estrella petita i l'altre en té una de grossa.) Anomeneu a un joker A i a l'altre B. Generalment, hi ha algun element gràfic que és igual però de diferent mida. Agafeu com a joker "B" aquell que sigui més gran. Podeu escriu-re unes lletres "A" i "B" ben grans, pero recordeu que haureu d'explicar-ho a la policia secreta si us agafen.
Per inicialitzar la baralla, agafeu-la cara amunt. Ara ordeneu les cartes en la configuració original que és la clau. (Parlaré de la clau més endavant, però és diferent a la cadena.) Ara ja esteu llestos per a fer una cadena de lletres.
Aquí es veu com generar un sol caràcter. Això és Solitari:
És important fer aquests dos passos en ordre. És temptador tornar-se mandrós i moure els jokers tant bon punt es troben. És correcte, excepte si es troben molt a prop entre ells.
Llavors, si la baralla apareixia així abans del primer pas:
A 7 2 B 9 4 1
després del segon pas hauria de quedar aixi:
7 A 2 9 4 B 1
I si la baralla estava aixi abans del pas 1:
3 A B 8 9 6
després del pas 2 hauria de veure's d'aquesta manera:
3 A 8 B 9 6
Si us queda algun dubte, recordeu moure primer el joker A abans del joker B. I sigueu curosos quan els dos jokers es trobin cap al final de la baralla. Si el joker es l'última carta, penseu com si fos la primera quan comenceu a comptar.
2 4 6 B 5 8 7 1 A 3 9
llavors despres del triple tall hauria de quedar aixi:
3 9 B 5 8 7 1 A 2 4 6
"Primer" i "segon" jokers es refereixen a qualsevol joker que sigui més proper i més llunyà del principi de la baralla. Ignoreu les designacions "A" i "B" per a aquest pas.
Recordeu que els jokers i les cartes entre ells no es mouen; són les altres cartes les que es mouen al voltant seu. És fàcil de fer. Si no hi haguessin cartes en alguna de les tres seccions (tant si els jokers fossin adjacents, o un és al capdamunt i l'altre a baix de tot), tracteu la secció com a buida i moveu-la igualment. Si la baralla estava aixi:
B 5 8 7 1 A 3 9
llavors després del tall triple quedaria aixi:
3 9 B 5 8 7 1 A
Una baralla que es veiés d'aquesta manera:
B 5 8 7 1 A
quedaria sense canvis després d'aquest pas.
7 ... cartes .. 4 5
... cartes ... 8 9
i la novena carta era el 4, el tall resultaria en:
5 ... cartes ... 8 7
... cartes ... 4 9
La raó perquè l'última carta es deixa al seu lloc és per a poder tornar enrera. Això és important per a l'analisi matematic de la seguretat.
Una baralla amb un joker com a última carta quedaria sense canvis en aquest pas.
Assegureu-vos de no invertir l'ordre quan compteu. La manera correcta de comptar és passant les cartes, d'una a una, d'una mà a l'altra. No feu piles a la taula.
Així és com es fa servir Solitari per encriptar un sol caràcter. Podeu fer-lo servir per a crear tantes cadenes com necessiteu; nomes heu de seguir els passos 1 a 6 per cada caràcter. (No barrejeu la baralla.) I recordeu, en necessiteu un per caràcter.
Sé que hi ha diferencies entre baralles, depenent del país. En general, no importa la forma en què les ordeneu, o com convertiu les cartes a números. El que realment importa és que tant l'emissor com el receptor es posin d'acord amb les regles. Si no ho feu, no podreu comunicar-vos.
Abans que comenceu a crear cartes de sortida, heu d'introduïr una clau a la baralla. Això és probablement el mes important de tota l'operació, i en la que es basa tota la seguretat del sistema. Solitari és tan segur com ho sigui la seva clau. Això vol dir que la forma més fàcil de trencar Solitari és esbrinar quina clau fan servir els comunicants. Si no teniu una bona clau, tota la resta no te cap importància. Aquí teniu algunes suggerències per intercanviar la clau.
Advertència: la policia secreta podria trobar la vostra columna de Bridge i copiar l'ordre. Podeu provar de seguir alguna mena de convenció per decidir quina columna de Bridge feu servir; per exemple, "fes servir la columna del diari de la teva ciutat natal corresponent al dia en que es va xifrar el missatge", o quelcom semblant. O useu una llista de paraules clau al lloc web del New York Times, i feu servir la columna de Bridge del dia de l'article que aparegui quan feu la cerca amb aquestes paraules. Si les paraules son interceptades, semblaran una mena de contrasenya. I escolliu la vostra pròpia convenció per a convertir les columnes de Bridge en ordres de baralles; recordeu que la policia secreta també llegeix els llibres den Neal Stephenson.
Repetiu els cinc passos de l'algoritme de Solitari per cada caràcter de la clau. Això vol dir, el segon com que realitzem Solitari agafeu el segon caràcter de la clau, el tercer cop agafeu el tercer caràcter, etc.
Pas opcional: (Aquest NO s'utilitza en els exemples següents.) Feu servir els dos últims caràcters per a decidir les posicions dels jokers. Si l'ultima lletra es una G (un 7), poseu el joker A després de la setena carta. Si la lletra es una T (un 20), poseu el joker B després de la vintena carta.
Recordeu, no obstant, que nomes hi ha una aleatorietat d'1.4 bits per caràcter en Angles estàndard.[En català es semblant N.del T.]Necessitaríeu una paraula de pas de 64 caràcters per a que sigui segura.; Recomano 80 caràcters com a mínim, per si de cas. Ho sento; no es pot aconseguir una bona seguretat amb una clau mes curta.
Aquí teniu alguns exemples per a practicar les vostres habilitats amb Solitari:
Exemple 1: Comenceu amb una baralla sense clau: de l'As de trèvols al Rei(K) de trèvols, de l'As de diamants al Rei de diamants, de l'As de cors al Rei de cors, de l'As de piques al Rei de piques, joker A i joker B. (Podeu veure-ho com 1...52, A, B.)
Aquí teniu com generar les dues primeres cartes de sortida. La baralla inicial es:
1 2 3 4 ... 52 A B
Després del primer pas (movent el joker A):
1 2 3 4 ... 52 B A
Després del segon pas (movent el joker B):
1 B 2 3 4 ... 52 A
Després del tercer pas (el tall triple):
B 2 3 4 ... 52 A 1
Després del quart pas:
2 3 4 ... 52 A B 1
L'ultima carta és un 1, que vol dir moure una carta. Recordeu que l'1 es queda on és, llavors la carta a moure (el B) es mou al final de la baralla just per sobre de l'1.
El cinquè pas no canvia la baralla, però produeix una carta de sortida. La carta de dalt de tot es un 2, compteu dues cartes fins al 4. La primera sortida de Solitari és un 4. (Per suposat, no s'ha de treure aquesta carta de la baralla. Deixeu-la on es; nomes cal apuntar-la a algun lloc.)
Per a obtindre el segon numero, feu tots cinc passos un altre cop.
Pas 1:
2 3 4 ... 49 50 51 52 B A 1
Pas 2:
2 3 4 ... 49 50 51 52 A 1 B
Pas 3:
A 1 B 2 3 4 ... 49 50 51 52
Pas 4:
51 A 1 B 2 3 4 ... 49 50 52
L'ultima carta es un 52, compteu 52 cartes fins al 51. Talleu per aquesta carta i moveu-la al principi de la baralla. Recordeu que el 52 es queda on es.
El pas 5 produeix la carta de sortida. La primera carta és un 51. Compteu 51 cartes fins arribar al 49, que és el segon numero. (No traieu el 49 de la baralla.)
Els deu primers números son:
4 49 10 (53) 24 8 51 44 6 4 33
El 53 ens el saltem. Nomes l'he posat com a demostració.
Si el text pla és
AAAAA AAAAA
llavors el text xifrat serà:
EXKYI ZSGEH
Exemple 2: Utilitzant el mètode numero 3 per introduir la clau i la clau secreta "FOO" (recordeu que el pas opcional no es fa servir en aquests exemples) els primers quinze números serien:
8 19 7 25 20 (53) 9 8 22 32 43 5 26 17 (53) 38
48
Si el text pla fos tot 'A', el text xifrat seria:
ITHZU JIWGR FARMW
Exemple 3: Utilitzant el mètode 3 per introduir la clau i la clau secreta "CRYPTONOMICON", el missatge "SOLITAIRE" s'encripta com:
KIRAK SFJAN
Recordeu que es fan servir 'X' per a omplir l'ultim grup de cinc caràcters.
Es dona per suposat que hauríeu de fer servir una clau mes llarga. Aquests exemples nomes son per a proves. Hi ha mes exemples al lloc web, i podeu fer servir el fitxer-seqüencia en PERL per a crear el vostre. [L'autor es refereix al lloc web original]
Solitari esta dissenyat per a ser segur fins i tot si l'enemic sap com funciona l'algoritme. Assumeixo que "Cryptonomicon" serà un èxit de vendes, i que sen podran trobar copies a qualsevol lloc. Assumeixo que la NSA i tothom estudiara l'algoritme i que el buscaran. Assumeixo que l'únic secret es la clau.
Per això és tant important mantenir la clau en secret. Si teniu una baralla de cartes en un lloc segur, hauríeu d'assumir que l'enemic pot pensar que esteu utilitzant Solitari. Si teniu una columna de Bridge a una caixa de seguretat, hauríeu d'esperar que s'aixequessin algunes celles. Si és sabut que algun grup fa servir l'algoritme, també és d'esperar que la policia mantingui una base de dades de columnes de Bridge per a fer-les servir com atac. Solitari és un sistema fort encara que l'enemic sàpiga que l'esteu utilitzant, i una simple baralla de cartes és molt menys incriminatòria que qualsevol programari d'encriptació que funcioni al vostre portàtil.
No és tan difícil escriure en papers de fumar com es podria arribar a pensar. Un llapis Nº.2 amb la punta fina per suau funciona be. Un llapis del numero 3 funciona millor, però és una mica estrany portar-lo. Els bolígrafs tenen uns quants problemes. Primer de tot la punta dura del bolígraf podria deixar impressions a la superfície de sota el paper. I tot allò que porti tinta té la possibilitat de filtrar-se a la superfície de sota.
Els bons papers de fumar estan fets per a cremar neta i completament. Els papers 'Club' cremaven millor a l'aire lliure. Es a dir, encesos i deixats anar des de l'alçada del pit. Aquests papers també tenen l'avantatge de tenir molt poc volum i que es poden menjar fàcilment si es dona el cas.
Poden ser extremadament prims. Aquests papers de 3 polzades [7.5 cms N.del T] es poden doblegar sis cops en un quadrat d'un centímetre de costat i un mil·límetre de gruix. Un paper pot contenir fàcilment 80 caràcters en 8 files de dos blocs de cinc lletres cadascun. Sembla que un escriptor amb cura podria arribar fins als 120 caràcters.
N'hi ha molt per a reproduir-lo aquí; Visiteu http://counterpane.com o escriviu a: Counterpane Systems, 1711 North Ave #16, Oak Park, IL 60302
Recomano el meu propi llibre, 'Criptografia Aplicada' (John Wiley & Sons, 1996), com una bona manera de començar. Després podeu llegir 'The Codebreakers', de David Kahn (Scribner, 1996). Després d'això, hi han bastants llibres sobre criptografia amb ordinadors, i alguns altres sobre criptografia manual. És un camp divertit; bona sort.
[ Literatura ] [ Go ] [ Cibercultura ] [ Informàtica i ciència ] [ Col·labora ] [ Sobre Hak Nam ] [ Contacte ]
Hak
Nam: Literatura, Go i Cibercultura en català.
Web realitzat amb software lliure
en XHTML 1.0
Estricte amb
CSS.