Introducció a la Criptografia
La criptografia estudia i dissenya sistemes criptogràfics i protocols de seguretat per al tractament de la informació. Els serveis que aquesta ofereix es poden dividir en quatre punts fonamentals:
·
Confidencialitat, la informació només està disponible per aquells usuaris que estan autoritzats.
·
Integritat, la informació no pot ser falsejada, ni de forma intencionada ni de forma accidental. Qualsevol canvi pot ser detectat.
·
Autenticitat, l'autencitat de l'origen i el destí estan assegurats. És a dir, es pot validar que la informació prové d'un determinat usuari i no ha estat suplantat per cap altre.
·
No repudi, un cop un usuari ha enviat un informació no es pot al·legar que no ha estat enviada.
Molt lligat al concepte de criptografia, hi ha el concepte de criptoanàlisi, que consisteix en l'anàlisi de sistemes i protocols criptogràfics amb l'objectiu d'avaluar la seva seguretat. L'objectiu del qual consisteix en la realització de transformacions criptogràfiques, de xifrat o desxifrat, sense conèixer les claus del sistema, és a dir trencar-lo. El conjunt de criptografia i criptoanàlisi formen la criptologia.
La criptografia clàssica, que va aparèixer abans que apareguessin els ordenadors, fa servir transformacions bàsiques, com ara substitucions monoalfabètiques, és a dir la mateixa permutació per cada lletra, o substitucions polialfabètiques, on les diferents lletres tenen diferents permutacions, o transposicions de caràcters. El problema que presenta aquest tipus de criptografia és que no és computacionalment segura ,és a dir amb pocs recursos es poden trencar els sistemes.
La criptografia moderna, que va aparèixer posteriorment a la criptografia clàssica, i que es basa en problemes que són computacionalment molt costosos, és a dir, que sense cap ajuda no es poden resoldre amb un temps raonable, però que a través de certa informació es poden resoldre fàcilment. La idea és partir d'un problema que sigui difícil de resoldre en cas general, es busca un cas particular fàcil de resoldre, i es modifica el cas particular per a que sembli el cas general. Per exemple: la factorizació d'enters, el problema de la motxilla etc.
Dins de la criptografia moderna trobem els següents tipus:
·
Criptografia simètrica o de clau privada, on hi ha una única clau secreta que comparteixen l'emissor i el receptor. La seguretat del sistema rau en mantenir en secret aquesta clau.
·
Criptografia asimètrica o de clau pública. Cada usuari te un parell de claus, una privada i una altra pública. La seguretat del sistema rau en la dificultat computacional d'obtenir la clau privada a partir de la pública.
Criposistemes de clau simètrica
Aquest tipus de criptografia, on només hi ha una sola clau, que es compartida pels dos extrems de la comunicació, està formada per dos tipus de xifrats:
·
El xifrat de flux, on la transformació del xifrat varia símbol a símbol, com per exemple RC4,
·
El xifrat de blocs on el missatge a xifrar es divideix en blocs d'igual longitud als que s'aplica una mateixa transformació de xifrat, com per exemple el DES i l'AES.
En el sistema que es mostrarà més endavant s'ha emprat el tercer dels tres darrers algorismes esmentats, l'AES. Aquest algorisme és un algorisme simètric de bloc, i pot treballar amb claus simètriques de 128, 192 o 256 bits.
Criposistemes de clau asimètrica
Els criptosistemes de clau pública, a part de permetre l'establiment d'una comunicació de forma xifrada sense un intercanvi previ de claus, fan possible la firma de documents i la seva corresponent validació.
Aquests sistemes estan formats per una conjunt de dues claus, una pública, que és emprada per a xifrar i/o verificar firmes, i una clau privada, que és emprada per a desxifrar i/o firmar. És important tenir present que la clau privada és computacionalment impossible d'obtenir a partir de la clau pública. És pel fet que aquests algorismes estiguin basats en l'existència de dues claus que s'anomenin algorismes de clau asimètrica.
Aquests sistemes estan basats en l'ús de funcions unidireccionals amb una porta oculta. Aquesta funció ha de complir que:
1.
Existeix un algorisme polinòmic per a calcular
.
2.
No existeix algorismes polinòmics per a calcular
3.
Existeix una informació, anomenada porta oculta (trap-door), que permet dissenyar un algorisme polinòmic per a calcular
.
Els dos sistemes criptogràfics de clau pública més emprats són el DSA i l'RSA. A continuació s'explica el segon d'aquest dos, força més emprat que el primer.
RSA
Els missatges i criptogrames usats en aquest criptosistema són elements que es consideraran del conjunt
, sent
, on p i q són nombres primers de certa longitud.
La clau pública d'aquest sistema està formada per la parella d'elements
, on e és un enter arbitrari tal que
. On
, que és el nombre d'elements menors que n que són coprimers amb n, per ser
i ser p i q primers, equival a
.
La clau privada està formada per la terna d'elements
, on d és l'invers de e mòdul
.
El procés de xifrat, inclòs dins C, consisteix en aplicar la següent funció sobre un missatge m:
El procés de desxifrat d'un conjunt de bytes inclosos dins C es realitza aplicant la següent funció:
El procés de firma d'un document m es realitza aplicant la següent funció:
El procés de validació d'una firma f d'un document m es realitza aplicant la següent funció:
Xifrat i firma de documents
Els algorismes de criptografia asimètrica són extremadament costos, per tant quan es vol xifrar o firmar una quantitat gran d'informació no es realitzen les funcions esmentades sobre tot el document. Cal tenir present que els algorismes simètrics són substancialment més eficients que els anteriors, per tant en la majoria dels casos el que es fa és aprofitar les ventatges de cada un dels dos criptosistemes .
Xifrat de documents
En la pràctica els criptosistemes asimètrics no s'usen per a xifrar missatges, sinó que s'usen per a xifrar claus temporals que són usades per els criptosistemes simètrics amb els que es xifra el missatge, ja que aquest darrers, tal i com ja s'ha dit, són molt més eficients.
Imatge
1
: Procés de xifrat amb clau de sessió.
Tal i com es pot observar en la figura anterior, el procés de xifrat consisteix en generar un clau simètrica, xifrar el document amb la clau simètrica, xifrar la clau simètrica amb la clau asimètrica pública del destinatari del document i enviar-li tant el document xifrat i la clau simètrica xifrada. Per tant, quan el destinatari rebi els documents, primer haurà d'aconseguir la seva clau de sessió a través de la seva clau privada i a continuació desxifrar el document a través de la clau de sessió obtinguda.
Firma de documents
Igual que en el procediment de xifrat, quan es signa un document, el que s'acostuma a signar no és tot el document, sinó una seqüència de caràcters, anomenada hash del document. Aquest consisteix en aplicar una funció sobre un document que proporciona un resum d'aquest mateix. Per a què una funció de hash sigui bona, ha de complir que:
·
Donat un text, és computacionalment fàcil/ràpid calcular-ne el hash. Donat un hash és computacionalment impossible reconstruir el text. És a dir ha de ser una funció unidireccional.
·
S'acostuma a demanar que el hash aplicats sobre diferents fitxers tinguin tots una longitud fixada.
·
El hash ha de ser una funció complexa de tots els bits del missatge.
·
A de ser feble a col·lisions, és a dir, donat un missatge m és computacionalment impossible trobat un missatge
tal que
i
.
·
A de ser fortament lliure de col·lisions, és a dir és computacionalment impossible donat un missatge m trobat un
tal que
i
.
Hi ha molts tipus algorismes de hash diferents, els més coneguts són el MD5, MD2, SHA-1, RIPERMD etc.
A la pràctica, quan es vol firmar un document, el que es fa és calcular el hash del document, firmar el resultat i enviar aquesta firma. Per tant, el destinatari calcularà el hash del document rebut amb el mateix algorisme que ha usat el que l'ha enviat, i comprovarà si la firma valida el hash obtingut.
Imatge
2
: Procés de firma i validació d'una firma