Estamos acostumbradísimos a que los sistemas de seguridad cibernéticos estén basados en la identidad y esto antes o después DEBE cambiar.
Fíjate en el absurdo al que estamos llegando. Cualquiera que aprenda un mínimo sobre ciberseguridad sabe que las leyes de protección de datos son la típica ley que es muy difícil de hacer cumplir. En ciberseguridad siempre existen trade-offs entre esta y la usabilidad, y las empresas rara vez optan por lo primero porque significa perder eficiencia. Así que optan por lo segundo, pero esto implica perder seguridad.
Es decir, por una parte las leyes te obligan a identificar clientes para sus operaciones mientras que por otra te obligan a custodiar correctamente esa información. La identidad es un sistema enormemente inseguro que pone en clarísimo riesgo a las personas porque tus datos terminan en manos de gente mala tanto si se los das a una empresa con ventas de €100k como si se la das a empresas con ventas de miles de millones o incluso a empresas que se les supone expertas en ciberseguridad. En otras palabras, la regulación Estatal y su obligatoriedad de usar identidades reales, con domicilios etc... son el mayor responsable de los fallos de seguridad cibernéticos que vivimos constantemente.
El modelo de ciberseguridad en la mayor parte de las empresas es muy frágil al estar basado en la identidad, pero también al seguir basándose en contratar empresas con grandes presupuestos y con marca, con la premisa convencional de que "cuanto más, mejor".
En el ciberespacio, la escala no tiene valor alguno sin embargo y resulta que si eres una empresa pequeña, puedes tener incluso menos posibilidades de ser hackeada que el pentágono.
Me explico: Cuántos recursos crees que se necesitan para hackear una empresa pequeña y cuántos más recursos crees que se necesitan para hackear el Pentágono? Y ahora piensa en los réditos de lo primero frente a los réditos de lo segundo.
Modelo convencional de ataque: en los ejércitos, existían las economías de escala, porque cuanto más grande un ejército, mayores posibilidades de éxito (los países hegemónicos han sido tradicionalmente los que más población tenían) (URSS, USA o China en el S. XX)
En la guerra cibernética la realidad es la contraria: un sistema de información es más robusto, cuánto mayores sean los costes del ataque y cuanto más eliminemos los "single points of failure" o "puntos únicos de fallo"
La identidad, es un punto único de fallo porque conocer un dato, te permite conocerlo todo de tu cliente y básicamente "le has vendido".
Los ataques de phishing constantes a los que estamos sometidos, son consecuencia de que empresas como Bancos, Eléctricas, o incluso de ciberseguridad, con cientos de miles de clientes, son vulnerables a todo tipo de ataques y nos dejan vendidos a los demás.
El modelo de seguridad de las empresas debe cambiar por completo y mientras esto no ocurra, la seguridad de sus clientes está comprometida. Mientras la identidad siga siendo obligatoria, estamos todos en claro riesgo.
Cómo soluciona esto Bitcoin
Bitcoin está diseñado por gente que tiene la seguridad como su prioridad. Es un modelo rompedor por muchos motivos:
1. No existe la identidad
Si quieres tener una cuenta en Bitcoin, basta con generar un número aleatorio. Ahora bien, si quieres seguridad de la de verdad, no basta con tirar un dado una vez. Necesitas generar la máxima entropía posible, y los sistemas de seguridad aceptables, te permiten generarla tu (para no depender de un algoritmo de generación aleatoria como el que suele estar disponible en las librerías de los diferentes lenguajes de programación). Date cuenta de que existen alrededor de 2^256 combinaciones posibles (2 elevado a 256), esto es parecido a 10 elevado a 78, es decir, un 1 con 78 ceros o parecido para que te hagas una idea de la extraordinaria magnitud, al número de átomos que se estima que tiene el Universo conocido.
Por eso cuando alguien dice aquello de: ¿pero quién respalda a Bitcoin? manifiesta un par de cosas:
- No entiende que si algo respalda tu sistema financiero, significa que tienes que confiar en ese alguien y que por lo tanto tu sistema financiero se vuelve extraordinariamente frágil
- Que si me tengo que fiar de alguien, prefiero tener que fiarme de las matemáticas que del cumplimiento de obligaciones de terceros, que habitualmente no sufren las consecuencias de sus errores/negligencias (políticos, banqueros, ¿te resulta familiar?). De las matemáticas no me tengo que fiar, y ¡¡tienden a no equivocarse!!
2. No existen puntos únicos de fallo
Imagínate que construyeses una fortaleza como Fort Knox con 40.000 tanques, soldados, armas por todas partes, para custodiar 1 trillón de dólares en oro.
El coste del ataque sería estratosférico si pretendieses comprar una fuerza militar equivalente. Pero qué ocurre si sabes la identidad de las personas que tienen capacidad para emitir órdenes y las extorsionas?
El coste de tu ataque en este último caso sería muchísimo más bajo y sin embargo, "la recompensa" seguiría siendo la misma.
La mayor parte del los ataques cibernéticos a las grandes empresas entran por el email de empleados de arriba y de abajo, tanto da. Una vez dentro de la red, el hacker es soberano para hacer lo que le plazca y es irrelevante las medidas de seguridad que hayan contratado. Por eso se hace tanto énfasis en la formación de los empleados en materia de seguridad.
Por eso digo que en Bitcoin, es bastante absurdo poseer muchos bitcoins. En primer lugar porque aunque solo compres un poco, es una apuesta extraordinariamente asimétrica. En segundo lugar, si tienes muchos bitcoins, puedes ser un foco de atracción para gente con malas intenciones y aunque adoptases buenas medidas de seguridad, podría valerles la pena. Por ejemplo, si tienes 1 o 2 bitcoins, y los tienes bloqueados 5 años, un atacante tendría que estar muy desesperado para ir a por tus bitcoins. Pero si tuvieses 100 o 1000, y el precio de Bitcoin subiese significativamente, entonces quizás si que podría valerle la pena!
Así que lo lógico en Bitcoin, es poseer solo un poco (reducir el potencial premio para un atacante), y aumentar notablemente el coste a base de usar las mejores medidas de seguridad posibles, idealmente multifirmas y time locks. De esta forma, para un atacante, el posible "premio" es reducido mientras que el coste es estratosférico pues no pueden batir a la criptografía!!
Por otra parte, imagínate que alguien quiera atacar la propia infraestructura de Bitcoin. Tendría que ser capaz de cerrar decenas de miles de ordenadores en todo el mundo, muchos de ellos anónimos, vía Tor, en países diferentes, algunos con infraestructuras satélite redundantes, otros con sistemas de radio capaces de enviar datos. En fin, el coste de acabar con la red es astronómico.
Pero lo interesante es que la seguridad depende mayoritariamente de personas que poseen los propios bitcoins, así que no tienen que cumplir una obligación para hacerlo, lo hacen motu propio.
Veamos la red de minería
Este mapa muestra el 37% de la red de minería (que ha compartido los datos) recientemente. El 63% de esta sigue en paradero desconocido. ¿Cómo se para una actividad de la que se desconoce el 63% donde se lleva a cabo?
Si ahora USA, China y la UE se pusiesen de acuerdo para crear docenas de plantas gigantescas para minar bitcoins y hacer un ataque del 51%, en primer lugar tendrían que hacerlo sin llamar mucho la atención y tardarían muchísimo en fabricar todo y tener la capacidad suficiente (hablamos de bastantes GW de capacidad). Pero imaginemos que lo pueden hacer: Si minasen y generasen una cadena de bloques diferente, los usuarios podríamos invalidar los bloques procedentes de esa cadena y vender los bitcoins falsos de esa segunda cadena, con lo cual el esfuerzo habría sido completamente inútil. ¿Qué Estado se va a gastar decenas de miles de millones de dólares para tirarlo por la borda de la manera más estúpida?
Fíjate la importancia de eliminar puntos únicos de fallo que Bitcoin es la única criptomoneda en la que no existe fundador conocido. Si lo hubiese, y la gente respetase su figura como tal, podría tener influencia como ocurre en otras criptomonedas en la dirección del código a implementar. Esto es impensable en Bitcoin y por eso su fundador desapareció del mapa y nunca sabremos a ciencia cierta quién o quiénes son Satoshi Nakamoto.
Perdonadme que repita, pero en lo que al dinero se refiere, ni los smart contracts, ni la privacidad, ni la rapidez de las transacciones son relevantes en absoluto. Lo único que hace atractivo a un dinero es que sea un fiable registro de transacciones que nos permita la reciprocidad, aunque esta sea aplazada. Eso es lo que queremos los humanos, asegurarnos de que cuando estamos entregando valor, se lo estamos dando a alguien que lo merece. Y para eso lo esencial es que ese registro sea inmutable, y el único que puede decir de forma creíble que lo es, se llama Bitcoin.
Por eso a las otras criptomonedas, los que entienden esto, les llaman shitcoins. No valen literalmente para nada más que para hacer ricos a unos pocos a costa del dinero de incautos. (aunque también reconozco que tienen cierto valor como campo de pruebas de lo que se puede o no hacer).
3- La criptografía
Ahora mismo, para hacer una transacción, dado que no vale con ir con tu DNI a alguna autoridad para hacerla, lo que se hace es utilizar criptografía de clave pública, que consiste en que tu tienes una clave privada para firmar una transacción haciéndola así válida, y otra para compartirla, en caso de que alguien te quiera enviar bitcoin.
La criptografía que se emplea en estos momentos es la de la curva elíptica sobre campos finitos primos.
La curva que ves aquí está basada sobre números reales; sin embargo cuando hacemos esto sobre campos finitos primos la "curva" tiene más este aspecto:
Lo importante de esta curva (por llamarle de algún modo) es la propiedad que dice que la suma de dos puntos en esta curva, siempre da como resultado otro punto en la misma curva.
Por lo tanto, si A está en la curva y B también, significa que A + B también están en la curva.
Pero por el mismo motivo, si A está en la curva, 2A también, al igual que 54000A y al igual que 10 elevado a 78 x A
Esta es la esencia de la criptografía de clave pública en la curva elíptica: el hecho de que un número en la curva multiplicado por un número secreto muy grande, da como resultado otro número en la curva.
Ese número secreto es tu clave privada, y cuánto más aleatorio sea, más seguro será.
La curva exacta que se utiliza en Bitcoin se llama secp256k1 y se define como y2 = x3 + 7
Si quieres saber más sobre todo esto y sobre como escribir el código en python, te recomiendo el libro de Jimmy Song Programming Bitcoin, que es de donde he sacado estas imágenes.
Pero esta es la base del protocolo ahora mismo; ya se está trabajando en otros desarrollos que irán haciendo pequeñas modificaciones al protocolo para mejorar su seguridad o privacidad entre otros. Me temo que son temas demasiado avanzados para mí en estos momentos y también hay otros que aunque quizás entiendo mejor, soy incapaz de explicarlos.
Bitcoin es una bestia y es importante entender que una vez te metes en esto, ¡¡es como si no hubiese fin en el aprendizaje!! De hecho, me atrevo a decir que dudo que haya alguien que comprenda en profundidad todas las facetas de Bitcoin. Todos los que aprendemos un poco, llegamos a la conclusión siempre de que es una cura de humildad en toda regla y de que nadie entiende todo Bitcoin del todo.
Como decían en Matrix, si quieres saber hasta donde llega "la madriguera del conejo", ¡suscríbete a mi blog!