La criptografia (del grec "kryptos" - amagat, secret - i "graphin" - escriptura. Per tant seria "escriptura oculta") és l'estudi de formes de convertir informació des de la seva forma original cap a un codi incomprensible, de forma que sigui incomprensible pels que no coneguin aquesta tècnica.
Quan parlem d'aquesta àrea de coneixement com a ciència, hauríem de parlar de criptologia que engloba la criptografia i el criptoanàlisis (estudia els mètodes utilitzats per trencar texts xifrats amb l'objectiu de recuperar la informació original en absència de claus).
La criptografia moderna utilitza les disciplines de les matemàtiques, informàtica i telemàtica.
En la terminologia de criptografia, trobem els següents aspectes:
La història de la criptografia es molt antiga. Ja les primeres civilitzacions l'utilitzaven per xifrar els missatges durant les campanyes militars, així si interceptaven el missatger, eren incapaços de descobrir el missatge. Un dels mes coneguts és el mètode Cèsar, anomenat així perquè se li atribueix a Juli Cèsar, que utilitzava durant les seves campanyes.
Era un sistema simple però efectiu, simplement desplaça tres lletres de l'abecedari per fer la substitució de les originals (imatge al peu del document).
Exemple: En GNU/Linux podem utilitzar la comanda tr per realitzar xifratge de substitució com el Cèsar:
Creem un fitxer (Document.txt) amb un text després executem
cat Document.txt | tr [a-z] [d-zabc] | tr [A-Z] [D-ZABC] > document_cesar.txt
Veurem que ens ha creat el document_cesar.txt on apareix la informació del fitxer Document.txt xifrada segons el sistema Cèsar.
Existeixen dos grans grups d'algorismes de xifrat:
Segons el principi de Kerckhoffs, la fortalesa d'un sistema o algorisme de xifrat ha de recaure en la clau i no en l'algorisme. Ja que els principis de funcionament d'aquest són coneguts normalment, però en el cas de no conèixer la clau no podrem desxifrar el missatge:
Màxima de Shannon: l'adversari coneix el sistema.
La criptografia simètrica és un mètode criptogràfic en el qual s'utilitza una mateixa clau per xifrar i desxifrar missatges. Les dues parts que es comuniquen han de posar-se d'acord en la clau que utilitzaran.
Un bon sistema de xifrat posa tota la seguretat en la clau no en l'algorisme. És per això que la clau ha de ser molt complicada d'esbrinar. Per aconseguir-ho, hem de tenir en compte la longitud i el conjunt de caràcters que s'utilitzi. Actualment els ordinadors són molt potents i poden desxifrar una clau amb molta velocitat, per això la mida de la clau és molt important.
Alguns dels algorismes de xifrat simètric són:
Els principals problemes d'aquest sistema de xifrat no és la seva seguretat, sinó:
Per tan per solucionar aquests problemes utilitzarem la criptografia asimètrica i la híbrida.
Exemple de criptografia simètrica amb la comanda GPG:
Crear un fitxer encriptat a partir d'un document:
$ gpg -c document
Ens generarà un arxiu document.gpg en format binari
Si volem generar un arxiu en encriptat en ASCII utilitzarem el modificador -a:
$ gpg -ca document
Ens generarà un arxiu document.asc
Per desencriptar l'arxiu:
$ gpg -d document.gpg
o
$ gpg -d document.asc
En aquest cas s'utilitza un parell de claus, una per xifrar i una per desxifrar:
Aquest dues són claus complementaries, el que xifra una ho desxifra l'altre i al revés. s'obtenen mitjançant algorismes i operacions matemàtiques complexes, és gairebé impossible conèixer una clau sense l'altre.
Les dues branques principals de criptografia clau pública són:
Aquest sistemes de xifrat de clau pública, es basen en funcions resum o funcions hash (els algorismes més comuns utilitzats com a funcions hash són MD5 i SHA) d'un únic sentit que aprofiten propietats particulars, per exemple dels nombres primers. Una funció d'un sol sentit és aquella en la qual la seva computació és fàcil, mentre que la seva inversió resulta extremadament difícil.
En GNU/Linux, podem utilitzar l'aplicació md5sum per calcular-nos el valor resum (o Hash) d'un arxiu (En Windows podem utilitzar l'aplicació md5sum.exe).
$ md5sum document.txt
Ens mostrarà fc851301032be1df24da571c053c0fc9 document.txt
Ara per poder validar la integritat del fitxer per assegurar-nos que no ha esta modificat guardarem el resultat en un arxiu nomhash.md5. Després validarem que l'arxiu no ha estat modificat i per últim el modificarem i tornarem a fer la comprovació del md5:
$ md5sum document.txt > nomhash.md5
$ md5sum -c nomhash.md5
document.txt: CORRECTE
$ echo "modificacio del fitxer" >> document.txt
$ md5sum -c nomhash.md5
document.txt: INCORRECTE
md5sum: avís: 1 de 1 suma calculada NO coincideix
En un atac de força bruta sobre un xifrat de clau pública amb una clau de mida de 512 bits, l'atacant ha de factoritzar un nombre compost codificat amb 512 bits. Mentre que 128 bits és suficient per xifrats simètrics, donada la tecnologia de factorització d'avui en dia, es recomana utilitzar claus públiques de 1024 bits per la majoria de casos.
La major avantatge de la criptografia asimètrica es que es pot xifrar amb una clau i desxifrar amb l'altre, però aquest sistema té desavantatges:
La criptografia asimètrica està implementada en algorismes com Diffie-Helman, RSA, DSA, ElGamal
Eines de software com PGP o en comunicacions TCP/IP, protocols com SSH o la capa de seguretat TLS/SSL, utilitzen un xifrat híbrid format per la criptografia asimètrica per intercanviar claus simètriques i la criptografia simètrica per a la transmissió de la informació.
Exemple de generació de parell de claus amb la comanda gpg en GNU/Linux:
Creació de claus
$ gpg --gen-key
Llistar claus públiques
$ gpg --list-keys
o
$ gpg -k
Llistar claus privades
$ gpg --list-secret-keys
Ara cal fer pública la clau:
$ gpg --keyserver pgp.mit.edu --send-keys ClauID
ClauID és l'identificador de la clau que acabem de crear
pgp.mit.edu és una web on es publiquen claus públiques.
Per buscar claus públiques:
$ gpg --keyserver NomDelServidor --search-keys ClauID
Per baixar-nos una clau pública:
$ gpg --keyserver NomDelServidor --recv-keys ClauID
Per copiar la nostra clau pública, executarem:
$ gpg --armor --output FitxerDeClau --export ClauID
Per fer una una còpia de seguretat de la nostra clau privada:
$ gpg --armor --output FitxerDeClau --export-secret-key ClauID
Per revocar la nostra clau pública:
$ gpg -o revocacio.asc --gen-revoke ClauID
Per importar una clau:
$ gpg --import FitxerdeClaus
La informació de GPG és guarda a la carpeta:
/home/[nom usuari]/.gnupg
La clau privada és guarda a:
~/.gnupg/secring.gpg
i la pública a:
~/.gnupg/pubring.gpg
La signatura digital és un mecanisme de xifrat per autentificar informació digital. El mecanisme utilitzat és la criptografia de clau pública. Per això aquest tipus de signatura també rep el nom de signatura digital de clau pública.
S'utilitza també el terme signatura electrònica com a sinònim de signatura digital, tot i que la signatura electrònica inclouria també altres mecanismes per identificar l'autor d'un missatge electrònic que no són purament criptogràfics.
Hi ha tres motius per utilitzar signatures digitals en les comunicacions:
La signatura digital és un xifrat del missatge que està firmant però utilitzant la clau privada en lloc de la pública.
Exemple de signatura digital amb gpg en GNU/Linux (parell de claus creada abans):
Signem el document però no el xifrem
$ gpg --clearsign [document]
Signem el document i el xifrem en un arxiu binari:
$ gpg -s [document]
Signem i xifrem, però el missatge i signatura van en fitxers separats:
$ gpg -b [document]
Per verificar la validesa de la signatura digital:
$ gpg --verify [document]
Un Certificat Digital és un document digital mitjançant el qual un tercer confiable (una autoritat de certificació) garanteix la vinculació entre la identitat d'un subjecte o entitat i la seva clau pública.
Si voleu utilitzar el vostre certificat digital i que sigui vàlid, cal que primer aneu a una autoritat certificadora. Us haureu d’identificar correctament i, tot seguit, ells certificaran que sou qui dieu ser i us donaran el certificat digital corresponent. Aleshores, quan envieu missatges que vulgueu que us identifiquin davant altres persones, només caldrà que hi afegiu una còpia pública del vostre certificat digital. D’aquesta manera, la persona que rebi el missatge sabrà de segur que l’emissor del missatge és qui diu ser, garanteix altres persones, entitats, o administracions públiques quina és la vostra identitat.
El format més comunament emprat és l'estàndard X.509 i la seva distribució és possible realitzar-la:
Un certificat emès per una entitat de certificació autoritzada, a més d'estar signat digitalment per aquesta, ha de contenir almenys el següent:
Entre les aplicacions dels certificats digitals i el DNIe trobem, realitzar compres i comunicacions segures, com tràmits amb la banca online, amb l'administració pública (hisenda, seguretat social, etc) a través d'Internet, etc.
DNIe
El desenvolupament de la Societat de la Informació i la difusió dels efectes positius que d'ella es deriven exigeixen la generalització de la confiança dels ciutadans en les comunicacions telemàtiques.
Com a resposta a aquesta necessitat, i en el marc de les directives de la Unió Europea, l'Estat espanyol ha aprovat un conjunt de mesures legislatives, com la Llei de Signatura Electrònica i el RD sobre el Document Nacional d'Identitat electrònic, per a la creació d'instruments capaços d'acreditar la identitat dels intervinents en les comunicacions electròniques i assegurar la procedència i la integritat dels missatges intercanviats.
El naixement del Document Nacional d'Identitat electrònic (DNIe) respon, per tant, a la necessitat d'atorgar identitat personal als ciutadans per al seu ús en la nova Societat de la Informació, a més de servir d'impulsor de la mateixa. Així, el DNIe és l'adaptació del tradicional document d'identitat a la nova realitat d'una societat interconnectada per xarxes de comunicacions.
D'aquesta manera, cada ciutadà podrà fer realitzar múltiples gestions de forma segura a través de mitjans telemàtics i assegurant la identitat dels participants en la comunicació.
És semblant al DNI clàssic amb la novetat que incorpora un xip capaç de guardar de manera segura:
Per utilitzar el DNIe es necessari tenir: