Com protegeix la criptografia la cadena de blocs?
Aquest article és un fragment del llibre The Layman’s Guide to Bitcoin de Logan Brutsche i es torna a publicar aquí amb el permís de l’autor.
La criptografia és la ciència d’aplicar funcions matemàtiques a les dades per garantir-ne la seguretat.
Molta ficció popular implica que es pot piratejar qualsevol sistema, sempre que es tingui un pirata informàtic prou bo. Aquest “hacking de Hollywood” no és com funciona el món real: un hacker ha de trobar una vulnerabilitat en un sistema per explotar, com ara una sala de servidor desbloquejada, una contrasenya fàcil d’endevinar, un port de xarxa sense protecció o una “porta posterior”. instal·lat com a treball intern per obtenir accés no autoritzat més endavant.
Tot i que és cert, mai no podem garantir que un sistema determinat no tingui vulnerabilitats (al cap i a la fi, els sistemes els fabriquen humans imperfectes), el sentiment que “qualsevol cosa es pot piratejar” és falsa. Des de principis dels anys 90, hem tingut accés a tècniques criptogràfiques que simplement són immunes al pirateig. És l’aplicació d’aquestes tècniques que de vegades poden deixar lloc a l’explotació.
La criptografia no es pot piratejar per generar una signatura criptogràfica falsificada (definida en breu), de la mateixa manera que les matemàtiques no es poden piratejar per fer 2 + 2 = 5, tot i que tant la criptografia com les matemàtiques es poden utilitzar incorrectament. Si un sistema que utilitza criptografia falla, és perquè un dissenyador va aplicar una criptografia incorrecta. No és perquè la criptografia no funcionés o perquè algú “va piratejar” la criptografia, de la mateixa manera que no és culpa de les matemàtiques si el vostre banc gestiona malament el vostre compte o el correu electrònic quan la vostra mare descarrega un fitxer adjunt desconegut i obté un virus informàtic. . Aquesta és una distinció important, perquè Bitcoin és molt directament una aplicació de criptografia establerta.
La criptografia no és una tecnologia nova i no provada. Totes les tècniques criptogràfiques utilitzades per Bitcoin s’utilitzen des dels inicis d’Internet i són essencials per a molts protocols d’Internet comuns que s’utilitzen cada dia.. La ciència de la criptografia és considerada fiable i essencial pels informàtics de la mateixa manera que la ciència dels coets és considerada fiable i essencial per la NASA.
Keypairs: la pedra angular de la criptografia
Els parells de claus són la pedra angular de la criptografia utilitzada a les cadenes de blocs. Un parell de claus té dues parts: una clau privada i una clau pública. Aquestes claus no són res més que nombres molt grans amb una relació matemàtica específica, que s’utilitzen en lloc de contrasenyes i noms d’usuari.
Manejaríeu una clau pública com el vostre nom o nom d’usuari: en la majoria dels casos la compartiu amb qualsevol persona que ho demani i els que la tinguin poden utilitzar-la per fer referència o contactar-vos. Està lligat a la vostra reputació (o, en el cas de Bitcoin, al vostre historial de transaccions), de manera que és possible que tingueu diverses claus públiques (i, per tant, diversos parells de claus) que feu servir per a propòsits diferents. Es pot utilitzar una clau pública per fer referència o visualitzar un compte, però no pot autoritzar per si mateixa cap acció sobre aquest compte.
La clau privada s’ha de tractar com una contrasenya: no s’ha de compartir amb ningú i s’utilitza per autenticar determinades accions, com ara l’enviament de BTC..
Però hi ha una diferència important entre una clau privada i una contrasenya. Per utilitzar una contrasenya, l’heu d’enviar a una persona o servidor perquè es pugui comparar amb els seus registres. Heu de confiar que la contrasenya es gestionarà de manera responsable després d’enviar-la. En canvi, es pot utilitzar una clau privada per autenticar-se sense enviar-la a cap lloc. L’únic lloc on s’ha emmagatzemat o utilitzat directament és al dispositiu local.
Això és important, perquè si podeu autenticar-vos sense enviar el vostre secret a cap lloc, podeu mantenir un control complet de la seva seguretat, ja que no sou vulnerable a les deficiències de seguretat d’altres sistemes. Aquesta és una part essencial del que fa que Bitcoin no es pugui entroncar. No hi ha contrasenyes ni claus privades emmagatzemades al propi Bitcoin perquè un atacant pugui comprometre’s i, tot i així, els usuaris poden autenticar les transaccions.
Però, com podeu fer servir una clau privada per autenticar una transacció, si mai no envieu la clau privada a cap lloc? La resposta té a veure amb la relació matemàtica entre les claus privada i pública: signatures criptogràfiques.
Signatures criptogràfiques
Hi ha diverses tècniques diferents per generar i validar signatures criptogràfiques, i els teoremes matemàtics que els permeten treballar estan molt més enllà de l’abast d’aquest article. Per a aquells que no estiguin familiaritzats amb la criptografia, el procés descrit aquí pot semblar inicialment absolutament impossible. Recordo clarament que vaig tenir aquesta impressió quan vaig començar la meva investigació sobre Bitcoin fa quatre anys.
De moment, simplement tornaré a notar que aquestes tecnologies s’utilitzen en molts protocols d’Internet habituals i són una part consolidada de la ciència de la informació.
Imagineu-vos dues persones, Alice i Bob, que ja han canviat les claus públiques en persona. L’Alice vol enviar un missatge a Bob, però Bob és una persona molt sospitosa i no confiarà que el missatge provingués realment d’Alice tret que pugui demostrar-ho matemàticament, sense cap mena de dubte. Per facilitar aquesta prova, accepten utilitzar una signatura criptogràfica.
Per generar la signatura, Alice utilitza l’algoritme de generació de signatures del seu ordinador, que pren com a entrada la seva clau privada i el seu missatge complet i genera una signatura criptogràfica. Després, envia a Bob aquest missatge / signatura combinat, però, fonamentalment, no envia la seva clau privada.
Quan Bob rep el missatge i la signatura, té un algoritme de validació de signatures complementari per emprar. Aquest algorisme pren com a entrada el missatge i la signatura, i determina el fitxer públic clau del parell de claus que Alice va utilitzar per generar la signatura. Quan Bob veu com el seu algoritme genera la clau pública d’Alicia, ha demostrat matemàticament que la signatura s’ha d’haver generat amb el parell de claus d’Alicia, tot i que no ho sap i no pot calcular la meitat privada del parell de claus d’Alícia..
Dit d’una manera més succinta, aquest procés de signatura criptogràfica permet a Bob verificar que el missatge no ha estat creat o modificat per tercers i ha d’haver estat generat amb la clau privada d’Alice, sense haver de (ni poder) conèixer-ne la clau privada. Tot el que necessita és la combinació de missatges / signatures i la seva clau pública.
Intuïtivament, això sembla impossible i us podeu sentir com si haguéssiu entès malament alguna cosa. Si les claus públiques i privades d’Alice estan tan relacionades i Alice va utilitzar la seva clau privada per generar la signatura que rep Bob, com pot obtenir la seva clau pública però no la pot trobar? La resposta a això requereix una comprensió molt més profunda de les matemàtiques que la majoria de la gent, i queda molt fora de l’abast d’aquest llibre.
Tot i això, aquesta tècnica es confia i s’utilitza cada dia i es considera sòlida com a roca dins de la comunitat de criptografia. Quan visiteu un lloc web i la seva adreça comença per https, la “s” indica que el lloc s’ha validat amb una signatura criptogràfica. L’ordinador va utilitzar un algorisme de validació de signatures, tal com va fer Bob en l’exemple anterior, per verificar que el lloc web realment provenia del parell de claus adequat. Es compta amb aquesta signatura criptogràfica per garantir que qualsevol altra interacció entre vostè i el lloc web sigui xifrada i autèntica. Si falla aquesta prova, els navegadors moderns us avisaran i marcaran el lloc web com a perillós.
Nombres prou grans
Abans, vaig esmentar breument que les claus privades i públiques funcionen com a noms d’usuari i contrasenya, però en realitat no són res més que nombres extremadament grans amb una relació matemàtica especial. Tenint en compte això, sovint em fan les següents preguntes:
“Algú no pot tenir un ordinador per endevinar o comptar un munt de números i provar-los com a claus privades? ¿No acabarien trobant-se amb una clau privada d’algun parell de claus específic i, per tant, aconseguirien controlar aquesta identitat? ” De fet, en el cas de Bitcoin, això permetria a un atacant robar els diners que tenia algun parell de claus.
És una bona pregunta i, no obstant això, no passa. Com s’ha dit abans, hi ha diverses adreces de Bitcoin amb milions de dòlars de BTC que no s’han mogut en anys, tot i que tot el que caldria per robar-la és la clau privada adequada, el gran nombre adequat. Si poguéssiu endevinar la clau privada d’aquestes adreces, els diners els envieu a qualsevol lloc. A diferència de la contrasenya, podeu comprovar les claus privades localment a la vostra pròpia màquina i no hi ha cap servidor que limiti les vegades o la rapidesa amb què les proveu..
Llavors, per què ningú no ha robat aquests fons encara? La resposta rau en la mida gairebé absurda dels números utilitzats com a claus privades. Ells són prou enorme.
Comencem amb un experiment de pensament senzill. Imagineu-vos que la vostra clau privada era prou gran perquè, si tots els ordinadors del món funcionessin junts, trigarien 24 hores a endevinar-la. Si afegiu només un dígit més a la vostra clau privada, hi hauria deu vegades més permutacions per passar els equips, de manera que trigarien deu dies en lloc d’un. Sis dígits més el portarien a 27.000 anys.
En cada cas, la generació de la clau privada (que només requereix la possibilitat de crear nombres aleatoris) continua sent trivial. Utilitzar la clau privada per generar signatures, així com comprovar aquestes signatures amb la clau pública, també continua sent senzill computacionalment. Però el treball necessari per endevinar la clau privada creix exponencialment amb cada dígit addicional. Per fer que les claus privades siguin “immunes” a l’endevinalla de força bruta, només hem d’afegir prou dígits, només les hem de fer prou grans.
Llavors, com d’enorme és prou enorme? Les claus privades que s’utilitzen a Bitcoin són enters de 256 bits, que equival a un nombre de setanta-sis dígits. La potència de la mida d’aquest nombre és increïble. La següent il·lustració deriva en gran mesura del llibre de Bruce Schneier Criptografia aplicada, i és una demostració convincent d’un nombre prou enorme.
En primer lloc, reconeixeu que una conseqüència específica de la segona llei de la termodinàmica és que hi ha una energia mínima necessària per canviar un sol bit binari d’informació (canviar un 1 a un 0 o viceversa). Això significa que qualsevol procés de càlcul requereix una energia mínima per realitzar, independentment del maquinari utilitzat.
Ara suposem que heu pogut aprofitar tota la producció d’energia del sol només per alimentar un ordinador especialment dissenyat, el treball del qual és comptar o endevinar claus privades, amb l’esperança de trobar la clau privada d’un parell de claus (que podria controlar BTC).
Utilitzant una mica de matemàtiques i termodinàmica, trobareu que un ordinador perfectament eficient pot comptar fins a 2178 valors donada la totalitat de la producció anual d’energia del sol. Si dividim aquest valor en el nombre de possibles claus privades, 2256, trobem que aquest hipotètic ordinador només seria capaç d’endevinar o comptar fins al 0,0000000000000000000003% del nombre total de claus privades possibles, donada la totalitat de la producció anual d’energia del sol..
A més, això només compta i no inclou la tasca molt més complexa de comprovar realment cada clau privada per veure si correspon a la clau pública adequada. Per tant, amb un 0,000000000000000000000000% de probabilitats que aquest equip passés per la clau privada adequada al final d’un any, ni tan sols se n’adonaria.
Aquests números no tenen res a veure amb la tecnologia dels dispositius; són els màxims possibles segons les lleis de la termodinàmica que s’han establert des dels anys trenta. I impliquen fermament que els atacs de força bruta contra les claus de 256 bits (que utilitza Bitcoin) seran inviables fins que els ordinadors es construeixin a partir d’alguna cosa diferent de la matèria i ocupin alguna cosa que no sigui l’espai.
Aquest és el poder d’un nombre prou enorme. No importa el bon que sigui un hacker. Si no pot aprofitar la potència de tres-cents sextilions de sols durant un any o un sol durant tres-cents sextilions d’anys, el seu ordinador no pot ni comptar mitjançant totes les claus privades, i molt menys provar-les o utilitzar-les d’una altra manera.
Per obtenir una visió més profunda de Bitcoin i la criptografia, recolliu el llibre de Logan Brutsche, The Layman’s Guide to Bitcoin.