Criptografia de clau pública
La criptografia asimètrica, coneguda també com a criptografia de clau pública, és una forma de criptografia en la qual la clau utilitzada per xifrar un missatge difereix de la clau utilitzada per desxifrar-lo. A la criptografia de clau pública, un usuari té un parell de claus una clau pública i una clau privada. La clau privada es manté secreta, mentre que la clau pública es pot dir a tothom. Els missatges nous s'han de xifrar amb la clau pública del receptor; i només es poden desxifrar amb la seva clau privada corresponent.[1] Les claus es relacionen matemàticament, però la clau privada a la pràctica no es pot obtenir a partir de la clau pública.
En canvi a la, criptografia clau secreta, coneguda també com a criptografia simètrica s'utilitza una clau secreta senzilla tant per al xifratge com per al desxifratge. Per utilitzar criptografia simètrica a les comunicacions, tant el remitent com el receptor abans haurien de saber la clau, o s'hauria d'enviar amb el missatge.
A la criptografia simètrica, hi ha la metàfora de la clau que permet accedir al missatge original: és com si l'emissor i el receptor tinguessin dues còpies de la mateixa clau. L'emissor per enviar un missatge el tanca amb clau a una capsa, i envia la capsa. Quan el receptor rep la capsa, la pot obrir amb la seva còpia de la clau.
A la criptografia asimètrica es conserva la paraula però la metàfora queda una mica canviada. És com si algú hagués inventat un sistema de panys, que fa que les claus que permeten tancar la capsa són diferents de les que permeten obrir-la. De fet la clau que permet tancar és més com tancar la porta amb la balda de cop. Qui vol rebre missatges primer ha de donar les claus que permeten tancar però no obrir (o capses que tanquen de cop). Llavors ja se li pot enviar un missatge. El missatge es fica a la capsa, i es tanca amb la clau que només permet tancar (o es tanca de cop). S'envia la capsa i només la podrà obrir qui n'ha enviat la clau de tancar. De fet si algú s'equivoca i tanca la capsa (amb la clau de tancar o de cop) ja no la pot obrir.
Les dues branques principals de criptografia de clau pública són:
- Xifratge amb clau pública - un missatge xifrat amb la clau pública d'un receptor no pot ser desxifrat per ningú tret del receptor, que té la clau privada corresponent. Això serveix per assegurar la confidencialitat.
- Signatura digital - un missatge signat (xifrat) amb la clau privada d'un remitent pot ser verificat (desxifrat) per qualsevol que sàpiga la clau pública del remitent. Demostrant així que el remitent és qui l'ha signat (xifrat) i que el missatge no s'ha manipulat (perquè la clau pública només pot servir per desxifrar el missatge si s'ha xifrat amb la clau privada, que no coneix ningú més, i si no ha estat alterat). Això serveix per assegurar l'autenticitat.
Una analogia per al xifratge de clau pública és: una bústia tancada amb una ranura per al correu. La ranura és accessible al públic. la seva localització (l'adreça de carrers) és la clau pública. Tothom que sàpiga l'adreça pot anar-hi, i deixar un missatge a través de la ranura. Però només qui tingui la clau pot obrir la bústia.
Una analogia per a signatures digitals és el precintament d'un sobre amb un segell de cera. El missatge el pot obrir tothom, però la presència del precintament autentifica el remitent.
Un problema central per a l'ús de criptografia de clau pública és que una clau pública sigui autèntica. És a dir, que pertanyi a la persona adequada, i no hagi estat manipulada ni substituïda per cap tercer maliciós. L'enfocament usual a aquest problema és fer servir una infraestructura de clau pública (PKI), en la qual una o més terceres parts, conegudes com a autoritats de certificació, certifiquen la propietat de parells de claus. Un altre enfocament, utilitzat per PGP, és la "web de confiança" mètode per assegurar autenticitat de parelles claus.
Per ara, les tècniques de clau pública s'han fet servir més que els sistemes purs de xifratge simètric. L'ús assenyat d'aquestes tècniques permet una varietat àmplia d'aplicacions sense patir cap penalització computacional prohibitiva. A la pràctica, la criptografia de clau pública es fa servir sovint en combinació amb mètodes de clau privada per raons de rendiment. Per al xifratge, el remitent xifra el missatge amb un algorisme de clau privada que utilitza una clau aleatòriament generada, i aquella clau aleatòria es xifra llavors amb la clau pública del receptor. Per a les signatures digitals, el remitent resumeix el missatge (fent servir una funció resum criptogràfica) i llavors signa el "valor resum" que en resulta. Abans de verificar la signatura, el receptor també calcula el resum del missatge, i compara aquest valor resum amb el valor resum signat per comprovar que el missatge no s'ha manipulat.
Història
[modifica]Durant la major part de la història de criptografia, una clau s'havia d'establir i mantenir absolutament secreta per endavant utilitzant un mètode segur però no criptogràfic; per exemple, una reunió de cara a cara o un missatger de confiança. Hi ha un cert nombre de dificultats pràctiques significatives en aquest enfocament a la distribució de claus. La criptografia de clau pública s'inventà per encarar aquests desavantatges - amb la criptografia de clau pública, els usuaris es poden comunicar de manera segura sobre un canal insegur sense haver d'estar d'acord amb una clau compartida per endavant.
El 1874, un llibre escrit per William Stanley Jevons[2] descrivia la relació entre les funcions de sentit únic i la criptografia i analitzava específicament el problema de Factorització (que és el que més tard es faria servir en el sistema RSA). El juliol de 1996, en Solomon W. Golomb feia els següents comentaris sobre el llibre de Jevons:
« |
Al seu llibre Els Principis de Ciència: Un Tractat sobre Mètode Lògic i Científic, escrit i publicat durant els anys 1890,[a] William S. Jevons observava que hi ha moltes situacions on l'operació 'directa' és relativament fàcil, però l'operació 'inversa' és significativament més difícil. Un exemple esmentat breument és que xifrar és fàcil mentre desxifrar no és. En la mateixa secció del Capítol 7: La introducció titulava 'Inducció una Operació Inversa', es dedica especial atenció al principi de què la multiplicació d'enters és fàcil, mentre que trobar els factors (primers) del producte és molt més difícil. Així, Jevons preveia un tret clau de l'Algorisme de RSA per a la criptografia de clau pública, encara que certament no va inventar el concepte de criptografia clau pública. |
» |
— Solomon W. Golomb |
La primera invenció[b] d'algorismes clau asimètrics la feien James H. Ellis, Clifford Cocks, i Malcolm Williamson a GCHQ al regne Unit durant els primers anys de la dècada de 1970; aquestes invencions foren el que més tard s'ha conegut com a intercanvi de claus de Diffie-Hellman, i un cas particular de RSA.[4] Els criptògrafs del GCHQ es referien a aquesta tècnica com " xifratge no secret". Aquestes invencions no es revelaven públicament a l'època, i el fet que s'havien desenvolupat es mantingué secret fins al 1997.
El 1976, Whitfield Diffie i Martin Hellman, publicaren un sistema de xifratge de clau asimètrica i (influïts pel treball de Ralph Merkle sobre la distribució pública de claus) revelen un mètode per acordar públicament claus.[5] Aquest mètode d'intercanvi exponencial de la clau, que més tard es coneixerà com el mètrode d'intercanvi de claus de Diffie-Hellman, va ser el primer mètode pràctic publicat per establir una clau secreta compartida sobre un canal de comunicacions desprotegit sense utilitzar un secret compartit previ.[6] La tècnica d'acordar públicament claus de Merkle es coneixeria com els Trencaclosques de Merkle, i es publicà el 1978.
El 1977 Rivest, Shamir i Adleman reinventaven una generalització del mètode de Cocks, tots ells estaven llavors al MIT. Els últims autors publicaren el seu treball el 1978, i l'algorisme esdevingué conegut com a RSA. El RSA fa servir la exponeciació mòdul un producte de ddon nombres primers grans per xifrar i per desxifrar, realitzant tant el xifratge de clau pública com la signatura digital de clau pública, i la seva seguretat està lligada a la dificultat que se suposa que té la factorització d'enters grans, un problema per al qual no hi ha cap tècnica general eficient (és a dir ràpida de forma pràctica) coneguda.
Des dels anys 1970, s'han desenvolupat un gran nombre i una gran i varietat de xifratges, signatures digitals, distribucions de claus, i altres tècniques en el camp de criptografia de clau pública. El criptosistema ElGamal (inventat per Taher ElGamal llavors a Netscape) confia en la dificultat (similar, i relacionada) del problema de logaritme discret, com també ho fa el DSA que hi està molt relacionat i que va ser desenvolupat per NSA i NIST.[7] La introducció de la criptografia de corba el·líptica per Neal Koblitz el mig el 1980 ha produït una família nova d'algorismes de clau pública anàlegs. Encara que matemàticament més complex, sembla que les corbes el·líptiques proporcionen un camí més eficient que el logaritme discret, especialment respecte a la mida de la clau.
Seguretat
[modifica]Per alguns esquemes de xifratge es pot demostrar que són segurs sobre la base de suposar la dificultat d'un determinat problema matemàtic com ara la descomposició en factors enters dels nombres que són producte de dos nombres primers molt grans o el càlcul del logaritme discret. Fixeu-vos que aquí la paraula "segur" té un significat matemàtic precís, i hi ha múltiples definicions (significatives) diferents de què vol dir que un esquema de xifratge sigui segur. La definició "correcta" depèn del context en què es desplegarà l'esquema.
A diferència del que passa amb el xifratge de Vernam, cap esquema de xifratge de clau pública no pot ser segur contra tafaners amb potència computacional il·limitada. Les proves de seguretat en aquest cas es mantenen respecte a adversaris computacionalment limitats, i donen garanties (relatives a una suposició matemàtica particular) del tipus: "l'esquema no pot ser trencat utilitzant un ordinador de sobretaula durant 1000 anys". L'aplicació més òbvia d'un sistema de xifratge de clau pública és la confidencialitat; un missatge que un remitent xifra utilitzant la clau pública del receptor només pot ser desxifrat amb la clau privada (associada a aquesta clau pública) del receptor.
Els algorismes de signatura digital de clau pública es poden utilitzar per a l'autenticació del remitent i justificant de recepció. Per exemple, un usuari pot xifrar un missatge amb la seva pròpia clau privada i enviar-lo. Si un altre usuari el pot desxifrar amb èxit utilitzant la clau pública corresponent, això proporciona la garantia que el primer usuari (i no un altre) l'ha enviat. A la pràctica, es calcula un resum criptogràfic del missatge, es xifra amb la clau privada i s'envia junt amb el missatge (xifrant-ho altre cop tot plegat amb la clau pública del receptor) això ocasiona una signatura criptogràfica del missatge. El receptor llavors, un cop desxifrat el missatge amb la seva clau privada, pot verificar la integritat de missatge i l'origen calculant el valor del resum del missatge rebut i comparant-lo amb la signatura descodificada (el valor resum original). Si el resum enviat i el calculat pel receptor no lliguen, llavors el missatge rebut no és idèntic al missatge que el remitent "signava", o la identitat del remitent és incorrecta.
Per aconseguir autenticació, justificant de recepció, i confidencialitat, el remitent xifra primer el missatge utilitzant la seva clau privada, llavors es realitza un segon xifratge utilitzant la clau pública del receptor.
Aquestes característiques són útils per a moltes altres aplicacions, de vegades sorprenents, com per exemple els diners digitals, generació de claus autenticades per clau, claus compartides per múltiples participants, etc.
Consideracions pràctiques
[modifica]Analogia postal
[modifica]Una analogia que es pot fer servir per entendre els avantatges d'un sistema asimètric és imaginar dues persones, l'Alice i el Bob, enviant un missatge secret pel correu públic. En aquest exemple, l'Alice vol enviar un missatge secret al Bob, i espera una resposta secreta del Bob.
Amb un sistema clau simètrica, l'Alice primer fica el missatge secret a una capsa, i la tanca amb un cadenat del qual en té una clau. Llavors envia la capsa al Bob pel correu ordinari. Quan el Bob la rep, fa servir una còpia idèntica de la clau de l'Alice (que ha obtingut prèviament, potser en una trobada cara a cara) per obrir la capsa. El Bob llavors pot fer servir el mateix cadenat per enviar la seva resposta secreta.
En un sistema de clau asimètrica, el Bob i l'Alice tenen cadenats que s'obren amb claus diferents. Primer, l'Alice demana al Bob que li envií el seu cadenat obert per correu ordinari, conservant ell la seva clau. Quan l'Alice el rep l'utilitza per tancar una capsa que conté el seu missatge, i envia la capsa tancada al Bob. El Bob llavors pot obrir la capsa amb la seva clau. Per respondre, el Bob anàlogament ha de tindre el cadenat obert d'l'Alice amb el qual tancar la capsa abans de tornar-li.
L'avantatge crític en un sistema de clau asimètrica és que el Bob i l'Alice mai no necessiten enviar cap còpia de les seves claus l'un a l'altre. Això evita que un tercer (potser, a l'exemple, un carter corrupte) copiï cap clau mentre és en trànsit. Coa que faria que aquest tercer pogués espiar tots els missatges futurs entre l'Alice i el Bob. Així amb una clau pública, l'Alice i el Bob no necessiten confiar en el servei postal. A més a més, si el Bob està distret, i permet que algú altre copiï la seva clau privada, els missatges de l'Alice al Bob estaran en perill, però els missatges de l'Alice a qualsevol altra gent seran secrets, perquè l'altra gent dona cadenats diferents a l'Alice.
En una altra classe de sistemes de clau asimètrica, el Bob i l'Alice que tenen cadenats separats.
Primer, l'Alice fica el missatge a una capsa, i tanca la capsa fent servir un cadenat del qual només ella en té la clau. Llavors envia la capsa al Bob per correu ordinari.
Quan el Bob rep la capsa, afegeix el seu propi cadenat a la capsa, i la torna a l'Alice.
Quan l'Alice rep la capsa amb els dos cadenats, treu el seu cadenat i a torna al Bob. Quan el Bob rep la capsa amb només el seu cadenat, el Bob pot obrir-la amb la seva clau.
Aquest protocol de tres passos es fa servir habitualment durant l'intercanvi de claus que després es faran servir amb un algorisme de xifratge simètric.
Algorismes actuals—dues claus connectades
[modifica]No tots els algorismes de clau asimètrica operen precisament d'aquesta manera. Els més comuns tenen la propietat de què l'Alice i el Bob cadascun té dues claus, un per a xifrar i una per a desxifrar. En un esquema de xifratge de clau asimètric segur, la clau privada no s'ha de poder deduir de la clau pública. Això es coneix com a xifratge de clau pública, perquè una clau de xifratge es pot publicar sense fer perilar la seguretat de missatges xifrats amb aquella clau.
A l'analogia de més amunt, el Bob podria publicar instruccions de com fer un pany ("clau pública"), si un cop fet el pany és impossible (per l'estat de la ciència) deduir d'aquestes instruccions com fer una clau que obri aquell pany ("clau privada"). Qui vulgui enviar missatges al Bob pot fer servir la clau pública per xifrar el missatge; el Bob fa servir la seva clau privada per desxifrar-lo.
La parella de claus també es pot fer servir de forma inversa: es pot xifrar missatges amb la clau privada, que només la clau pública pot desxifrar.[8] Això és útil per a aplicacions on, en comptes de confidencialitat, l'objectiu és integritat, autenticitat, i/o transparència, com a la signatura digital.
Febleses
[modifica]Naturalment, hi ha una possibilitat que algú podria "triar" el pany de el Bob o l'Alice. Entre algorismes de xifratge de clau simètrica, només el xifratge de Vernam es pot demostrar que és segur contra qualsevol adversari, no importa quanta potència de càlcul tingui disponible. Desafortunadament, no hi ha cap esquema de clau pública amb aquesta propietat, perquè tots els esquemes de clau pública són susceptibles d'atac per la força bruta. Aquests atacs són impracticables si la quantitat de càlcul necessari per tenir èxit (qualificat 'de factor de treball' per Claude Shannon) és fora de l'abast dels atacants potencials. El factor de treball es pot augmentar simplement escollint una clau més llarga. Uns altres atacs poden ser més eficaços que el de la força bruta, i se'n coneixen alguns per alguns algorismes de xifratge de clau pública. Tant pel RSA com pel ElGamal es coneixen atacs que són molt més ràpids que l'enfocament de la força bruta. Tals hipòtesis han canviat tant amb el cost decreixent de la potència informàtica, com per noves descobertes matemàtiques.
A la pràctica, aquestes inseguretats es poden evitar escollint mides clau prou grans perquè el millor atac conegut necessiti tant de temps que no li valgui la pena a cap adversari dedicar el temps i els diners a intentar trencar el codi. Per exemple, si l'estimació del temps per trencar un esquema de xifratge és de mil anys, i s'utilitza per xifrar la targeta de crèdit, segurament el sistema seria prou segur, perquè el temps necessari de desxifratge serà bastant més llarg que la vida útil de la informació, que caduca després d'uns quants anys. Típicament, la mida de clau necessitada és molt més llarga per a algorismes de clau pública que per a algorismes clau simètrica.
A més a més de la fortalesa algorísmica d'una parella de claus particular, s'ha de tenir en compte la seguretat de la jerarquia de certificació en desplegar sistemes clau pública. Aquesta jerarquia respon de les identitats assignades a claus privades específiques. Els certificats digitals de clau pública normalment són vàlids per uns quants anys alhora, així les claus privades associades s'han de conservar de manera segura a llarg termini. Quan una clau privada alta en la jerarquia es veu compromesa o és revelada accidentalment, tots els parells de claus per sota seu en la jerarquia s'han de suposar que estan compromesos i s'han de regenerar. De vegades, els sistemes de criptografia de clau transitòria es poden utilitzar per encarar aquests assumptes. En els sistemes de clau transitoria, les parelles de claus RSA s'assignen per intervals de tempes de curta durada, en comptes d'assignar-se a individus, servidors, o organitzacions. Les claus privades en l'esquema transitori són vàlides només per uns quants minuts abans que es destrueixin i es canviïn per claus privades noves. En sistemes de clau transitòria, no hi ha cap secret per protegir a llarg termini ni cap punt senzill de fallada de la jerarquia sencera de claus.
S'han trobat febleses essencials en uns quants algorismes antics que prometien ser de clau asimètrica. L'algorisme Merkle-Hellman va resultar insegur quan es varen descobrir nous atacs. Últimament, alguns atacs basats en mesures curoses de la quantitat exacta de temps que el maquinari tarda a xifrar el text clar s'han utilitzat per simplificar la recerca probabilística de claus de desxifratge (vegeu atac per canal auxiliar). Així, el mer ús d'algorismes de clau asimètrica no garanteix la seguretat; és una àrea de recerca activa descobrir i protegir-se contra atacs nous.
Una altra vulnerabilitat potencial en la seguretat en fer servir claus asimètriques és la possibilitat d'un atac de l'home mitjancer, en el qual la comunicació de claus públiques és interceptada per un tercer i es modifica per proporcionar claus públiques diferents en canvi. També s'han d'interceptar missatges xifrats i respostes, desxifrar-les i tornar-les a xifrar per part de l'atacant que utilitza les claus públiques correctes per a segments de comunicació diferents (és a dir el segment que va des de l'emissor fins al mitjancer i des del mitjancer fins al receptor) en tots els missatges per evitar cap sospita. Aquest atac pot semblar que sigui difícil d'implementar en la pràctica, però no és impossible en utilitzar mitjans de comunicació insegurs (xarxes p. ex. públiques com les comunicacions d'Internet o sense cables). Un membre corrupte del personal del ISP de l'Alice o de el Bob el podria trobar extraordinàriament senzill.
Un enfocament per evitar aquests atacs és l'ús d'una autoritat de certificació, un tercer de confiança que és responsable de verificar la identitat d'un usuari del sistema i publicar un certificat digital, que és un bloc signat de dades que manifesten que aquesta clau pública pertany a aquella persona, companyia o entitat. Aquest enfocament també té febleses. Per exemple, s'ha de confiar que l'autoritat de certificació hagi comprovat pròpiament la identitat del propietari de la clau i la correcció de la clau pública quan publica un certificat, i s'ha donat d'alta correctament als participants de la comunicació abans que es pugui utilitzar. Un atacant que podria subvertir l'autoritat de certificació que publiqués un certificat per a una clau pública falsa podria muntar un atac de l'home mitjancer tan fàcilment com si l'esquema de certificat no s'utilitzés pas. Malgrat els seus problemes, aquest enfocament es fa servir àmpliament; els exemples inclouen el SSL i el seu successor, TLS, que s'utilitzen habitualment per proporcionar seguretat en navegadors web, per exemple, per enviar de manera segura detalls de targeta de crèdit a una botiga en línia.
Cost computacional
[modifica]La majoria dels algorismes clau pública són relativament costosos computacionalment en comparació amb molts algorismes de clau simètrica d'aparent seguretat equivalent. Això té implicacions importants per al seu ús pràctic. La majoria es fan servir en criptosistemes híbrids per raons de rendiment. En aquests criptosistemes, un participant genera una clau secreta compartida ("clau de sessió"), i llavors aquesta clau de sessió molt més breu és xifrada amb la clau pública de cada receptor. Cada receptor fa servir la clau privada corresponent per desxifrar la clau de sessió. Una vegada que totes les parts han obtingut la clau de sessió poden utilitzar un algorisme simètric molt més ràpid per xifrar i desxifrar missatges.
Associació de claus públiques amb identitats
[modifica]El vincle entre una clau pública i el seu 'propietari' ha de ser correcte, si no l'algorisme pot funcionar perfectament i tot i així ser totalment insegur en la pràctica. Com gairebé tot en criptografia, els protocols utilitzats per establir i verificar aquest vincle tenen importància crítica. L'associació entre una clau pública i el seu propietari es fa habitualment amb protocols que implementen una infraestructura de clau pública; aquests deixen la responsabilitat de verificar formalment la validesa de l'associació a un tercer en el qual es confia, ja sigui en la forma d'una autoritat de certificació jeràrquica (p. ex. X.509), un model de confiança local (p. ex. SPKI), o un esquema de web de confiança (p. ex., la construïda originalment a PGP i GPG i que fins a cer punt encara és utilitzable). Més enllà de la garantia criptogràfica dels protocols mateixos, l'associació entre la clau pública i el seu propietari és en definitiva una qüestió de judici subjectiu per part del tercer de confiança, perquè la clau és una entitat matemàtica, metre que el propietari i la connexió entre el propietari i la clau no ho són. Per aquest motiu, el formalisme de la infraestructura de clau pública ha de subministrar una descripció explícita de la política que se segueix per fer aquest judici. Per exemple, el complex i mai completament implementat estàndard X.509 permet que una autoritat de certificació identifiqui la seva política per mitjà d'un identificador d'objecte que funciona com un índex en un catàleg de politiques registrades. Les polítiques poden existir per a diferents finalitats, des de l'anonimat fins al secret militar.
Relació amb els esdeveniments del món real
[modifica]Una clau pública serà coneguda per un conjunt gran i, en la pràctica, desconegut d'usuaris. Tots els esdeveniments que exigeixen revocació o substitució d'una clau pública poden tardar molt temps a tenir ple efecte amb tots els que s'han d'informar (és a dir tots els usuaris que posseeixen aquella clau). Per aquesta raó, els sistemes que han de reaccionar davant d'esdeveniments en temps real (p. ex. sistemes crítics de seguretat) no haurien d'utilitzar xifratge de clau pública si no és prenent gran cura. Hi ha quatre assumptes d'interès:
Privilegi de revocació clau
[modifica]La revocació maliciosa (o errònia) d'algunes, o totes, de les claus del sistema possiblement, o si són totes, certament, pot provocar una fallada total del sistema. Si les claus públiques es poden revocar de forma individual, aquesta possibilitat hi és. Ara bé, hi ha enfocaments de disseny que poden reduir les oportunitats pràctiques de què això passi. Per exemple, a través de certificats, es pot crear el que s'anomena un "component director"; un director d'aquest tipus podria ser "l'Alice i el Bob tenen Autoritat de Revocació". Ara, només l'Alice i el Bob (en concret) poden revocar una clau, i ni l'Alice ni el Bob poden revocar claus tots sols. Però, a partir d'aquest moment, per revocar una clau cal que tant l'Alice com el Bob estiguin disponibles, i això crea un problema de disponibilitat. En termes concrets, des del punt de vista de la seguretat, ara hi ha un punt de fallada singular en el sistema de revocació de claus públiques. Un atac amb èxit del tipus Denegació de Servei contra l'Alice o el Bob (o tots dos) bloquejarà qualsevol sol·licitud de revocació. De fet, qualsevol partició de l'autoritat entre l'Alice i el Bob tindrà aquest efecte, independentment de com es dugui a terme.
Com que el director que té autoritat per revocar claus es concentra un poder molt important, els mecanismes que es fan servir per controlar-lo han de trobar un equilibri entre involucrar tants participants com sigui possible (per guardar-se'n d'atacs maliciosos d'aquest tipus) i al mateix temps involucrar tan pocs participants com sigui possible (per garantir que una clau es pot revocar sense un retard perillós). Els certificats de clau pública que tenen una data de caducitat no són satisfactoris en el sentit que la data de caducitat pot no correspondre's amb la necessitat de revocació del món real, però pel cap baix, aquests certificats no necessiten ser resseguits al llarg de tot el sistema ni tampoc que tots els usuaris estiguin en contacte constant amb el sistema a tota hora.
Distribució d'una nova clau
[modifica]Un cop s'ha revocat una clau, o quan s'afegeix un nou usuari al sistema, s'ha de distribuir una nova clau d'alguna forma predeterminada.
Suposant que la clau de la Carol ha estat revocada (per exemple automàticament un cop ha depassat la data de caducitat, o abans, per un problema amb la clau privada de la Carol). Fins que no s'ha distribuït una nova clau, la Carol està de forma efectiva fora de contacte. Ningú podrà enviar-li missatges sense violar els protocols del sistema (per exemple, sense una clau pública vàlida ningú pot enviar-li un missatge xifrat), i pel mateix motiu els missatges que ella envia no poden ser signats. O, en altres paraules, la "part del sistema" controlada per la Carol essencialment no està disponible. En aquests tipus de sistemes els requeriments de seguretat tenen un nivell superior que els requeriments de disponibilitat.
Es pot deixar el poder de crear (i certificar) claus així com el del de revocar-les en mans de cada usuari, el PGP original així ho feia, però això obre problemes d'operació i enteniment de l'usuari. Per motius de seguretat, aquest enfocament té considerables dificultats; si més no alguns usuaris es despistaran, confondran o estaran inactius. Per una banda, un missatge revocant un certificat de clau pública s'hauria d'escampar tan ràpid com sigui possible, mentre que per altra banda, parts del sistema poden quedar inoperatives fins que es pugui instal·lar una nova clau. La finestra de temps es pot reduir a zero de manera òbvia lliurant sempre una nova clau juntament amb el certificat que revoca la vella, però això requereix la col·laboració entre les dues autoritats, la que revoca claus i la que genera les noves.
És més probable una fallada àmplia del sistema si el director que emet claus falla emetent claus inadequades. Aquest és un exemple d'exclusió mútua comú; un determinat disseny pot fer que la fiabilitat d'un sistema sigui alta, però només al preu de què la disponibilitat del sistema sigui baixa, i viceversa.
Difusió de la revocació
[modifica]La notificació del certificat de revocació d'una clau s'ha de difondre a tots aquells que potencialment podria tenir-lo tant ràpid com sigui possible.
Hi ha dos medis per difondre informació (per exemple en aquest cas la revocació d'una clau) en un sistema distribuït: o bé la informació s'envia cap als usuaris finals a partir d'un punt central (o d'uns punts centrals). El que es diu empènyer la informació. O bé s'obliga als usuaris a preguntar als punts centrals, cosa que es diu estirar la informació.
Enviar la informació és la solució més senzilla d'enviar un missatge a tots els participants. Però, no hi ha forma de saber que tots els participants de fet rebran el missatge, i si el nombre de participants és gran i algunes de les seves distàncies físiques o de xarxa també són grans, la probabilitat d'un èxit complet (allò que idealment es demana a un sistema de seguretat) serà més aviat baixa. En un determinat estat d'actualització, el sistema és espacialment vulnerable als atacs de denegació de servei, perquè la seguretat s'ha trencat i la finestra de vulnerabilitat continuarà existint durant tot el temps que passi mentre alguns usuaris no hagin aconseguit prendre la paraula. En altres paraules, enviar missatges de revocació de certificats no és ni fàcil d'assegurar ni gaire fiable.
L'alternativa a enviar informació a tothom és obligar que tothom pregunti. En l'extrem, tots els certificats contenen totes les claus que cal per verificar que la clau pública d'interès (és a dir, la que pertany a l'usuari al qual es vol enviar un missatge o del que es vol comprovar la signatura) encara és vàlida. En aquest cas, com a mínim es bloquejarà algun ús del sistema si l'usuari no pot accedir al servei de verificació (és a dir un dels sistemes que poden establir la validesa actual de la clau d'un altre usuari). Altre cop, aquesta mena de sistema es pot fer tan fiable com els vulgui, al preu de rebaixar la seguretat (com més servidors s'ha de comprovar per la possibilitat d'una revocació de la clau, més llarga serà la finestra de vulnerabilitat).
Un altre possibilitat és fer servir un servei de verificació d'alguna forma menys fiable però més segur, però incloure-hi una data de caducitat a cada una de les fonts de verificació. Quant ha de durar aquest període ha de ser una decisió que incorpori l'equilibri entre disponibilitat i seguretat que s'ha d'haver decidit per endavant, en el moment del disseny del sistema.
Recuperació després d'haver-se filtrat una clau
[modifica]Suposant que el director autoritzat a revocar una clau ha decidit que una clau determinada s'ha de revocar. En molts casos això passa després del fet, per exemple, de què esdevé conegut que en algun moment del passat ha passat quelcom que ha posat en perill la clau privada. Es denota per T el temps en el qual es decideix que això ha passat.
Això té dues implicacions. Els missatges xifrats amb la clau pública corresponent (ara o en el passat) ja no es pot suposar que siguin secrets. Segon, les signatures fetes amb la ja no fiable clau privada després del temps T, ja no es pot suposar que siguin autèntics sense informació addicional sobre qui, on, quan, etc., des del fet que han dut la signatura digital. Això no sempre estarà disponible, i per tant totes aquestes signatures digitals seran menys que creïbles.
La pèrdua del secret i/o autenticitat, fins i tot per un únic usuari, té implicacions d'abast de tot el sistema, i per tant s'ha d'establir una estratègia per la seva recuperació. Aquesta estratègia ha de determinar qui té autoritat i sota quines condicions per revocar un certificat de clau pública, com divulgar la revocació, però també, idealment, com tractar amb els missatges signats amb la clau des del temps T (que en rares ocasions es coneixerà amb precisió). Als missatges enviats a aquest usuari (que per ser desxifrats necessiten la corresponent clau privada, ara filtrada) s'han de considerar també filtrats, no importa quan varen ser enviats.
Aquest tipus de procediment de recuperació pot ser força complex, i mentre es du a terme el sistema possiblement serà vulnerable en enfront d'atacs de tipus denegació de servei entre altres coses.
Exemples
[modifica]Els exemples de tècniques de clau asimètrica ben considerades per a diversos propòsits inclouen:
- Diffie-Hellman protocol d'intercanvi de claus[9]
- DSS (Estàndard de signatura digital), que incorpora l'algorisme de signatura digital
- ElGamal
- Diverses tècniques de criptografia amb corbes el·líptiques
- Diverses tècniques, establiment de claus autentificat per Password
- criptosistema de Paillier
- RSA algorisme de xifratge (PKCS#1)[10]
- criptosistema de Cramer-Shoup
Exemples d'algorismes de clau asimètrica notables tot i que insegurs inclouen:
- Merkle-Hellman els algorismes de la 'motxilla'
Exemples de protocols que fan servir algorismes de clau asimètrica inclouen:
- GPG, una implementació de OpenPGP
- IKE
- PGP
- ZRTP, un protocol segur de veu sobre IP
- Secure Socket Layer, actualment implementat com un estàndard IETF TLS
- SILC
- ssh
Notes
[modifica]- ↑ La data de publicació (dècada dels 1890) del llibre de William S. Jevons en aquesta cita és incorrecta.
- ↑ La NSA també ha reivindicat haver inventat la criptografia de clau pública, en la dècada del 1960s; però, en l'actualitat (2004) hi ha poques proves que donin suport a aquesta reivindicació Vegeu aquí.
Referències
[modifica]- ↑ Rifà, Josep. Seguretat computacional. Servei de Publicacions de la Universitat Autònoma de Barcelona, 1995, p. 18. ISBN 8449004640.
- ↑ Jevons, William Stanley, The Principles of Science: A Treatise on Logic and Scientific Method, Macmillan & Co., London, 1874, 2nd ed. 1877, 3rd ed. 1879. Reprinted with a foreword by Ernst Nagel, Dover Publications, New York, NY, 1958.
- ↑ Solomon W. Golomb, On Factoring Jevons' Number, CRYPTOLOGIA 243 (July 1996).
- ↑ Cocks, Clifford. «A Note on Non-Secret Encryptation» (PDF). CESG Research Report, 1973. [Consulta: 17 gener 2023].
- ↑ Diffie, Whitfield «Multi-user cryptographic techniques». AFIPS Proceedings, 4, 5, 1976, pàg. 109-112.
- ↑ Kahn, David «Cryptology Goes Public». Foreign Affairs, 141, 1979, pàg. 153.
- ↑ S. Blake-Wilson, D. Brown, P. Lambert. «Use of Elliptic Curve Cryptography (ECC) Algorithms in Cryptographic Message Syntax (CMS)» (TXT), 2002. RFC 3278
- ↑ «Public Key Cryptography». Carnegie Mellon Software Engineering Institute. Arxivat de l'original el 15 maig 2008. [Consulta: 16 gener 2023].
- ↑ Diffie, Whitfield; Hellman, Martin «New Directions in Cryptography» (PDF). IEEE Transactions on Information Theory, IT-22, 1976, pàg. 644-654.
- ↑ Rivest, Ronald L.; Shamir, Adi; Adleman, Len «A Method for Obtaining Digital Signatures and Public-Key Cryptosystems» (PDF). Communications of the ACM, 21, 2, 1978, pàg. 120-126. Arxivat de l'original el 31 agost 2022 [Consulta: 8 setembre 2022]. Arxivat 17 de desembre 2008 a Wayback Machine.
Bibliografia
[modifica]- N. Ferguson; B. Schneier. Practical Cryptography. Wiley, 2003. ISBN 0-471-22357-3.
- J. Katz; Y. Lindell. Introduction to Modern Cryptography. CRC Press, 2007. ISBN 1-58488-551-3.
- A. J. Menezes; P. C. van Oorschot; S. A. Vanstone. Handbook of Applied Cryptography, 1997. ISBN 0-8493-8523-7.
- Anoop MS. Public key Cryptography - Applications Algorithms and Mathematical Explanations. Índia: Tata Elxsi, 2007.
- Attrapadung, Nuttapong; Herranz, Javier; Laguillaumie, Fabien; Libert, Benoît; de Panafieu, Elie; Ràfols, Carla (2012-03). "Attribute-based encryption schemes with constant-size ciphertexts". Theoretical Computer Science,422, pp.15–38. doi:10.1016/j.tcs.2011.12.004.
- Herranz, Javier; Laguillaumie, Fabien; Ràfols, Carla (2010), Nguyen, Phong Q.; Pointcheval, David (eds.), "Constant Size Ciphertexts in Threshold Attribute-Based Encryption", Public Key Cryptography – PKC 2010, Springer Berlin Heidelberg, 6056, pp. 19–34, doi:10.1007/978-3-642-13013-7_2, ISBN 978-3-642-13012-0, retrieved 2020-05-13
- Schneier, Bruce. Applied Cryptography. 2a edició. John Wiley & Sons, 1996. ISBN 0-471-11709-9.