# Kriptografia asimetriko

Kriptografia asimetrikoa deritzo bi gako desberdin behar dituen sistema kriptografikoari, bat ezkutua eta bestea publikoa. Nahiz eta bi gakoak desberdinak diren, matematikoki elkarlotuta daude. Gakoetako batek informazioa zifratzen du eta besteak, deszifratu. Gako bakar batek ezin ditu biak batera egin. Gako publikoa argitara eman daiteke inolako segurtasun arazorik sortu gabe. Bestalde, gako ezkutua ezin zaio mezuak irakurri ezin ditzakeen inori erakutsi.
Kriptografia asimetrikoak algoritmo asimetrikoak erabiltzen ditu. Algoritmo hauek erlazio matematikoetan oinarrituta daude. Nahiz eta erraza den konputazionalki gako publiko eta ezkutuak sortzea, gako ezkutuak erabiliz mezuak deszifratzea eta gako publikoak erabiliz mezuak zifratzea, oso zaila da, gako publiko batetik abiatuta, gako ezkutua zein den asmatzea. Hori dela eta, algoritmo simetrikoek ez bezala, ez dute hasieran inolako gako ezkutuen trukerik egin beharrik. Gainera, algoritmo hauen bitartez, kautotasuna bermatzen da, mezu bakoitzean, igorlearen gako ezkutuaren bidez, sinadura digitala sortuz. Sinadura hau, hartzaileak egiaztatuko du igorlearen gako publikoarekin. Orokorrean, mezuaren hash bat zifratzen da sinadura moduan.
Kriptografia asimetrikoa asko erabiltzen da. Interneteko zenbait estandarren oinarrian dago, hala nola, Transport Layer Security (TLS), PGP eta GPG. Hiru gako publiko sistema mota nagusi daude: gako publikoen hedapen sistemak, sinadura digitalen sistema eta gako publikoen kriptosistemak, azken honek gako publikoen banaketa eta sinadura digitalen zerbitzua eskaintzen ditu. Diffie-Hellman-en gako trukea da gako publikoak zabaltzeko gehien erabiltzen dena; sinadura digitalentzako, ordea, Digital Signature Algorithm. Zifratze sistema asimetriko batean, edonork zifra ditzake mezuak gako publikoa erabiliz, baina honen bikotea den gako ezkutuaren jabeak bakarrik deszifra dezake. Segurtasuna gako ezkutuaren sekretutasunaren araberakoa da, baina baita erabilitako algoritmoaren eta erabilitako gakoaren kalitatearen araberakoa ere.

## Funtzionamendua

Algoritmo hauetan, zifratzeko erabiltzen den gakoa ez da deszifratzeko erabiltzen den gakoaren berdina. Erabiltzaile bakoitzak bi gako kriptografiko dauzka, zeinetako bat publikoa den eta bestea, ezkutua. Gako publikoa zabaldu egin behar da baina, ezkutua erabiltzaileak bakarrik ezagutu dezake. Gakoak matematikoki erlazionatuta daude baina parametroak kontuz aukeratzen dira, gako publikotik ezkutua lortzea ezinezkoa izan dadin.
Alderatzearren, algoritmo simetrikoek gako ezkutu bakarra erabiltzen dute. Gako hau igorleak eta hartzaileak, biek, ezkutatu behar dute, bai zifratu eta bai deszifratzeko. Algoritmo simetriko bat erabiltzeko, igorleak eta hartzaileak aurretik segurtasunez elkar jakinarazi behar diote gakoa.
Gehienetan, algoritmo simetrikoak ez direnez asimetrikoak bezain zailak (konputazionalki), orokorrean gakoen trukerako algoritmo bat (asimetrikoa) erabiltzen da lehenik bien arteko komunikazioetan erabiliko den gako simetrikoa transmititzeko. PGP-k eta SSL/TLS-k sistema hau erabiltzen dute.

## Deskribapena

Bi erabilera nagusi dauzka kriptografia asimetrikoak:
* Kriptografia asimetrikoa: mezua hartzailearen gako publikoarekin zifratzen da. Mezua ezingo du hartzailea ez den inork deszifratu, honek bakarrik izango baitu zifratzerakoan erabili den gako publikoari dagokion gako ezkutua. Konfidentzialtasuna lortzeko erabiltzen da.
* Sinadura digitalak: mezua igorlearen gako ezkutuarekin sinatzen da. Horrela, igorlearen gako publikoa daukan edonork egiazta dezake sinadura. Egiaztapen honen bidez, igorleak gako ezkutua ezagutzen duela ziurtatzen da eta hortaz, gako publikoarekin lotuta dagoen erabiltzailea dela. Gainera, mezua ez duela inork aldatu edo manipulatu jakin dezakegu segurtasunez.
Zifratze asimetrikoaren analogia bat ateetako zulodun postontzia da. Postontziaren zuloa denentzako ikusgarri eta eskuragarri dago. Bere kokalekua (helbidea) gako publikoa litzateke. Helbidea dakien edonor joan daiteke atera eta idatzizko mezua zulotik sartu. Hala ere, giltza duenak bakarrik ireki dezake postontzia eta mezua irakurri.
Sinadura digitalentzako analogia gutun bat seilu pertsonalarekin markatzearena da. Mezua edonork ireki dezake, baina seilu bakarra egoteak igorlea identifikatzen du.
Kriptografia asimetrikoaren arazo nagusia gako publikoa benetakoa izatearen froga da, hots, gakoa zuzena izatea eta adierazten den erabiltzaileari lotuta egotea, baita inork ez duela aldatu edo ordezkatu ere. Honentzako public-key infraestructure (PKI), hots, gako publikoentzako azpiegitura erabiltzen da, non 3. partaide batek gako parearen jabetza egiaztatzen duen. PGP-k sistema hau erabiltzen du, konfiantzazko weba izeneko eskema baten barnean.

## Segurtasuna

Zifratze eskema batzuen segurtasuna erabilitako buruketa matematikoaren zailtasunaren araberakoa da, bi zenbaki lehen handiren faktorizazioa edo logaritmo zailak kalkulatzea, hala nola. Segurtasuna esaerak, kasu honetan, zentzu matematikoa dauka. Zifratze asimetrikoaren erabilera nagusia konfidentzialtasunaren lorpena da; igorleak mezua zifratzen du hartzailearen gako publikoarekin eta mezu hau hartzailearen gako ezkutuarekin bakarrik deszifra daiteke. Hortaz, mezua komunikazioko bi muturren artekoa bakarrik izatea bermatzen da.
Bestalde, sinadura digitalak daude. Hau, kautotasuna eta osotasuna bermatzeko erabili ohi da. Mezu bat bidali nahi duen erabiltzaileak, mezu honentzako sinadura bat sortzen du eta gero, mezua eta sinadura bidaltzen dizkio hartzaileari. Eskema honen ezaugarria hurrengoa da: sinadura sortzeko nahitaez gako ezkutua ezagutu behar da. Honela, sinaduraren egiazkotasuna ziurtatzeko nahikoa da igorlearen gako publikoa ezagutzea.
Bai kautotasuna eta bai konfidentzialtasuna lortu ahal izateko, igorleak lehenengo mezua sina dezake bere gako ezkutua erabiliz eta gero biak zifratu (mezua eta sinadura) hartzailearen gako publikoarekin.
Ezaugarri hauek beste hainbat protokolo eta aplikazio kriptografiko sortzeko erabili daitezke.

## Kontsiderazio praktikoak
### Posta bidezko analogia

Sistema asimetrikoaren abantailak ulertzeko imajinatu bi pertsona, Ainhoa eta Beñat, posta publikotik mezu sekretuak bidaltzen. Adibide honetan, Ainhoak mezu sekretu bat bidali nahi dio Beñati eta Beñatek ere mezu sekretu baten bidez erantzutea espero du.
Sistema simetriko batekin, Ainhoak mezua kaxa batean sartzen du eta gero, berak giltza daukan giltzarrapo batekin itxiko du. Jarraian, kaxa Beñati bidaliko dio posta erabiliz. Beñatek kaxa jasotzen duenean, Ainhoaren giltzaren kopia zehatza erabiliz (aurretik nolabait lortua, aurrez aurre adibidez) irekiko du kutxa. Mezua irakurri eta giltzarrapo berdina erabili dezake Beñatek Ainhoaren mezuari erantzuteko.
Sistema asimetriko batean, Ainhoak eta Beñatek giltzarrapo desberdinak dauzkate. Lehenengo, Ainhoak Beñati eskatzen dio bere giltzarrapoa irekita bidal diezaion posta bidez, giltza berak gordez. Ainhoak jasotzen duenean, bere mezua daraman kaxa ixteko erabiliko du eta Beñati bidaliko dio. Honi iristen zaionean, berak gordeta daukan giltzarekin irekiko du kutxa eta Ainhoaren mezua irakurriko du. Erantzuteko, modu berean, Beñatek Ainhoaren giltzarrapoa irekita lortu beharko du bere mezua daraman kutxa itxi eta bidaltzeko.
Asimetrikoaren abantaila nagusi moduan aipa dezakegu Beñat eta Ainhoak ez diotela inoiz elkarri giltzen kopiarik bidali behar. Honela, hirugarren partaide batek (adibidez, postari iruzurgile bat) giltza postan dela ez kopiatzea ekidin dezakegu, Ainhoa eta Beñaten arteko mezu sekretuak etorkizunean irakur ez ditzan. Asimetrikoaren kasuan, Ainhoak eta Beñatek ez dute konfiantzarik jarri beharrik posta zerbitzuan. Gainera, bietako batek, adibidez, Beñatek, giltza beste norbaiti emango balio, Ainhoak Beñati bidalitako mezuak arriskuan egongo lirateke, baina ez beste edonori bidalitakoak.

### Momentuko algoritmoak: lotutako bi gako

Hala ere, algoritmo asimetriko guztiek ez dute honela funtzionatzen. Gehienetan, Ainhoa eta Beñatek bina gako dauzkate, bat zifratzeko eta bestea dezifratzeko. Eskema asimetriko seguru batean, ezinezkoa izan behar luke gako ezkutua lortzea gako publikotik abiatuta. Goiko adibidean, Beñatek giltzarrapo bat (gako publiko bat) nola egin publika lezake. Edonola ere, giltzarrapoaren funtzionamendutik abiatuta ezinezkoa da giltzarrapo jakin bat irekiko duen giltza (gako ezkutua) nola egin deduzitzea. Beñati mezu bat bidali nahi dion edonork bere giltzarrapoa (gako publikoa) erabili behar du mezua ixteko (zifratzeko), ondoren, Beñatek bere giltza (gako ezkutua) erabiliko du mezua daraman kutxa irekitzeko (deszifratzeko).

### Ahuleziak

Noski posible da norbaitek Beñaten edo Ainhoaren giltzarrapoa lortzea. Gako publikodun eskema guztiak daude gakoak lortzeko atakeen arriskuan. Atake hauek ez dute ezertarako balio arrakasta izateko beharrezko konputazio kopurua lortzea ezinezkoa bada. Zenbait kasutan, horretarako nahikoa da gako luzeagoak erabiltzea.
Esan bezala, praktikan nahikoa da gakoaren tamaina kodea hausten duten atakeak ekiditeko behar bezain handia izatea, hau da, gakoa lortzen saiatzeak denbora gehiegi edo kostu altuegia suposatzea. Adibidez, zifratze eskema bat apurtzeko behar den bataz besteko denbora mila urte bada eta behar diren datuak aste gutxi batzuetan baliogabetuko badira, orduan hartu daitekeen arrisku bat da.
Gako pareei egindako atakeen aurreko erresistentziez gain, ziurtagirien hierarkiaren segurtasuna ere kontuan hartu behar da. Autoritate ziurtatzaile batzuek identitate bat bere gakoarekin lotzeko ziurtagiri digital bat sortzen dute. Gako publikoaren ziurtagiriak urte batzuetan zehar baliagarriak dira, beraz, gako ezkutuak segurtasunez gorde behar dira denbora tarte horretan.
Ahulezia larriagoak bilatuak izan dira sistema asimetrikoetan, hirugarren partaide bat komunikazioan sartzea eta gako publiko desberdinak zabaltzea. Zifratutako mezuak deszifratu eta berriro zifratu behar ditu atakatzaileak behar diren gako publikoekin, inor ohartu ez dadin. Atake honek ezinezkoa dirudi baina praktikan ez da hain zaila segurtasun baxuko media erabiltzen bada.
Esaterako, Ainhoaren edo Beñaten ISP-ko iruzurgile batentzako nahiko erraza izan daiteke. Aurreko adibidean, Ainhoak bueltako paketean datorren giltzarrapoa benetan Beñatena dela ziurtatzeko moduren bat izan beharko luke bere giltzarrapoa kendu eta mezua erantzun baino lehen. Bestela, Ainhoari iritsi zaion giltzarrapoa beste norbaitek jarri izatea posible da.
Atake hauek ekiditeko ziurtagiri baimenak erabiltzen dira, erabiltzaile baten identitatea eta gakoa egiaztatzen dituen hirugarren partaidea. Autoritate honek ziurtagiri digital aldaezin bat sortzen du erabiltzailearentzat. Hauek sinatutako informazio bloke bat dira: gako publikoa zeini dagokion adierazten dute, pertsona, konpainia edo beste entitate bat. Hala ere, baditu bere ahuleziak. Gainera, gako publikoen zuzentasuna ziurtatu behar da ziurtagiri bat egin baino lehen. Babestutako komunikazioak hasi baino lehen ere begiratu behar dira erabiltzaile bakoitzaren ziurtagiriak.
Nahiz eta arazo teoriko eta potentzialak izan, asko erabiltzen da, esaterako, SSL-n eta bere ondorengo TLS-n.

### Kostu konputazionala

Gako publikoa erabiltzen duten algoritmo gehienak algoritmo simetrikoekin konparatzen dira, izan ere, antzeko segurtasuna lortzeko, konputazionalki askoz garestiagoak dira asimetrikoak. Diferentzia hau gako luzeagoak erabiltzeak sortzen du. Gehienak kriptosistema hibridoetan erabiltzen dira efizientzia arrazoiengatik. Kriptosistema hauetan, saio-gako askoz txikiago bat sortzen du partaide batek eta gero, besteari bidaltzen dio haren gako publikoarekin zifratuta. Ondoren, erabiltzaileak bere gako pribatuarekin deszifratzen du saio-gakoa. Behin bi aldeek gako simetrikoa lortu dutenean, zifratzeko eta deszifratzeko erabiliko dute.

### Identitateak eta gako publikoak lotzen

Gako publiko baten eta bere erabiltzailearen artean egindako lotura zuzena izan behar du. Aplikazio kriptografiko gehienetan bezala, lotura hau ezarri eta egiaztatzeko erabilitako protokoloak oso garrantzitsuak dira. Lotura hauek ezartzeko, normalean, gako publikoko azpiegitura bat inplementatzen duten protokoloak erabiltzen dira. Modu honetan, konfiantzazko 3. partaide batek elkarketa horren baliozkotasuna egiazta dezake. Edozein izanda ere protokoloak ematen duen segurtasun kriptografikoa, gakoaren eta jabearen arteko lotura benetakoa den konfiantzazko 3. partaide horrek erabakitzen du. Horregatik, gako publikoko azpiegitura baten formaltasunak erabaki hori hartzeko jarraibideak esplizituki erakutsi behar ditu.

### Errealitateko ekitaldiekin erlazioa

Gako publikoa erabiltzaile askok jakingo dute; praktikan, ez da jakiten zenbatek. Hortaz, gakoa ezabatu edo aldatu behar denean, denbora asko behar da erabiltzaile guztiek honen berri izateko. Hori dela eta, denbora errealean lan egin behar duten sistemek (adibidez, segurtasun sistema nazionalek) ez lukete zifratze asimetrikoa erabili behar beharrezko neurriak hartu gabe. Lau arazo daude:

#### Gakoa ezabatzeko pribilegioa

Posible da sisteman gakoren batzuk edo denak intentzio txarrez edo errorez ezabatzea. Gako publikoak bakoitzak ezaba baditzake, posible da sistema bertan behera geldiaraztea. Hau gertatzeko aukerak gutxitzearren, esaterako, ziurtagirien bidez, compound principal deiturikoak sortzen dira. Hau da, adibidez, “Ainhoa eta Beñatek ezabatzeko baimena daukate” (“Alice and Bob have Revoke Authority”) jar genezake. Kasu honetan, Ainhoa eta Beñatek (biak batera) ezaba dezakete gakoa; ez Ainhoak eta ez Beñatek ezingo du gakoa banaka ezabatu. Hala ere, gakoa ezabatzeko Ainhoa eta Beñat, biak, egon behar dute eskuragarri eta honek konfiantza arazo bat sortzen du. Zehazki esanda, segurtasunaren ikuspuntutik, sistema honek badauka arazo bat. Ainhoaren edo Beñaten (edo bien) aurkako Denial of Service atake arrakastatsu batek ezabatzea blokeatuko du.

#### Gako berri baten banaketa

Gako baten ziurtagiria ezabatu dela lehenbailehen zabaldu behar zaie potentzialki gakoa eduki dezaketenei. Bi modu daude informazio hau zabaltzeko sistema zabaldu batean (distributed system): informazioa erabiltzaileei helarazten zaie puntu zentral batetik edo erabiltzaileek hartzen dute puntu zentral batetik.
Lehenengoa da irtenbiderik errazena: mezu bat bidaltzen zaie partaide guztiei. Hala ere, ez dago modurik mezua partaide guztiek jasoko duten edo ez jakiteko. Gainera, partaideak asko badira eta sare-distantzia edo distantzia fisikoa handia bada, arrakasta osoa lortzeko aukerak urriak dira.
Bigarren kasuan, ziurtagiri guztiek balio dute behar diren gako guztiak baliozkoak diren edo ez begiratzeko.

#### Galdutako gako baten berreskurapena

Suposa dezagun gakoak ezabatzen dituen administratzaileak gako jakin bat ezabatzea erabaki duela. Gako ezkutua kaltetu duen zerbait gertatu dela jakin delako egin ohi da hau. Denbora zeharreko momentu hau T aldagaiaz izendatuko dugu.
Erabaki honek bi arazo dauzka. Alde batetik, gako publiko horrekin zifratutako (orain edo iraganean) mezuak ez dute zertan sekretuak izan. Honentzako irtenbide bat perfect forward secrecy daukaten protokoloak erabiltzea da. Beste alde batetik, gako pribatuarekin T denboraren ondoren egindako sinadurak ez dira fidagarriak izango. Hau ekiditeko, timestamps-ak erabiltzen dira.
Konfidentzialtasunaren eta kautotasunaren galera, erabiltzaile bakarrarentzat bakarrik ere, sistema osoko segurtasun falta da. Hortaz, berreskurapen estrategia bat ezartzea beharrezkoa da. Estrategia honek adieraziko du nork ezaba dezakeen gako publikodun ziurtagiri bat eta zein kondizio behar dituen hori egiteko. Gainera, ezabatu dela nola zabaldu ere erabaki behar da, baita zer egin T momentuaz aurretik sinatutako mezu guztiekin ere. Erabiltzaile horri, bidalitako (ez du garrantzirik noiz) mezuek ere arazo bat daukate, gako ezkutua behar baita deszifratzeko.

## Adibideak

Algoritmo asimetrikoak erabiltzen dituzten protokoloen adibideak:
* GPG, OpenPGP-ren inplementazio bat
* Internet Key Exchange
* PGP
* ZRTP, VoIP protokolo seguru bat
* Secure Socket Layer, orain Transport Layer Security (TLS) IETF-ren estandar moduan kodetua
* SILC
* SSH
* Bitcoin

## Erreferentziak

* (Ingelesez) Frederick J. Hirsch: http://httpd.apache.org/docs/2.2/ssl/ssl_intro.html#cryptographictech «SSL/TLS Strong Encryption: An Introduction»], in Apache HTTP Server. Lehen bi atalek gako publikoko kriptografiari buruzko oso sarrera ona dakarte.
* (Ingelesez) IEEE 1363: Standard Specifications for Public-Key Cryptography
* (Ingelesez) Christof Paar, Jan Pelzl: «Introduction to Public-Key Cryptography», Understanding Cryptography, A Textbook for Students and Practitioners laneko 6. kapitulua (webgune osagarriak kriptografiako online ikastaro bat dauka, gako publikoko kriptografiaren gaia lantzen duena), Springer, 2009.

## Ikus, gainera

* Kriptografia simetrikoa
* Kriptoanalisia
* Zifratze algoritmo
* Kriptograma
* Esteganografia
* PGP
* Password Crack
* SSL
* Secure Shell (SSH)

## Kanpo estekak

* (Ingelesez) Oral history interview with Martin Hellman,
* (Ingelesez) An account of how GCHQ kept their invention of PKE secret until 1997 (Content can be found at the Internet Archive.)
* (Gaztelaniaz) Kriptopolis Webgunea
* Datuak: Q201339
* Multimedia: Public-key cryptography / Q201339