103
In crypto we trust Santiago Márquez Solís UPM - 2017 BITCOI N 1 Master en Sistemas Empotrados y Distribuidos

Bitcoin. In Crypto we Trust

Embed Size (px)

Citation preview

Page 1: Bitcoin. In Crypto we Trust

1

In crypto we trust

Santiago Márquez SolísUPM - 2017

BITCOIN

Master en Sistemas Empotrados y Distribuidos

Page 2: Bitcoin. In Crypto we Trust

2

[email protected]

@SMARQUEZSOLIS

WWW.SANTIAGOMARQUEZSOLIS.COMWWW.BITCOINFORDEVELOPERS.COM

Page 3: Bitcoin. In Crypto we Trust

3

Page 4: Bitcoin. In Crypto we Trust

4

ANTES DE EMPEZAR, TOCA HACER LA PREGUNTA…

Page 5: Bitcoin. In Crypto we Trust

5

DE BITCOIN SE DICEN MUCHAS COSAS…

Page 6: Bitcoin. In Crypto we Trust

6

La prensa publica algo casi todos los meses ….

DA QUÉ PENSAR ¿NO?

Page 7: Bitcoin. In Crypto we Trust

7

Page 8: Bitcoin. In Crypto we Trust

8

Page 9: Bitcoin. In Crypto we Trust

9

Sin contar lo que se dice “por ahí”

UMMM ¿QUIÉN OPINA SABE DE LO

QUE HABLA?

Page 10: Bitcoin. In Crypto we Trust

10

Bitcoin es una exhibición de fuerza tecnológica. El mayor invento después de Internet.

Bill Gates

¿Eso no es una estafa?

Comercial de un banco

No entiendo lo de los bitcoins, aunque tampoco entiendo a las mujeres y estoy casado.

Trader de Bitcoin

Bitcoin es malo.

Paul Krugman (profesor economía de Princeton)

Page 11: Bitcoin. In Crypto we Trust

11

El valor del Bitcoin es cercano a cero.

Xavier Sala-i-Martín (profesor economía de Harvard)

Bitcoin es un activo [digital] que se está monetizando.

Juan Ramón Rallo (Economista)

Bitcoin es un esquema Ponzi. El Dinero de la Deep Web.

Nouriel Roubini (presidente de RGE Monitor)

Bitcoin es un experimento. No pongáis todos vuestros ahorros ahí.

Jeff Garzik (core developer del protocolo)

Page 12: Bitcoin. In Crypto we Trust

12

INTENTEMOS ACLARAR LAS COSAS

Page 13: Bitcoin. In Crypto we Trust

13

DATOS IMPORTANTES PARA SITUARNOS

Page 14: Bitcoin. In Crypto we Trust

14

DOS “VISIONES”

BITCOIN

NUEVO MODELO ECONOMICO

BLOCKCHAIN

BLOCKCHAIN

DISTRIBUTED LAYER TECHNOLOGY o DLT

(Public / Private)

¿MARTILLO DE ORO?

"When the wise man points at the Bitcoin, the idiot looks at the Blockchain" – (Quasi-)Confucius.

Page 15: Bitcoin. In Crypto we Trust

15

Inversión Empresas Internet vs Inversión Empresas Bitcoin

Page 16: Bitcoin. In Crypto we Trust

16

Evolución del Precio de Bitcoin

1 BTC aprox unos 820 dólares (17/01/2017)

Capitalización Total Actual: 13.214.808.150 dólares (16 millones de BTCs) (más o menos) (17/01/2017)

Page 17: Bitcoin. In Crypto we Trust

17

¿Quién acepta Bitcoin?www.coinmap.org

Page 18: Bitcoin. In Crypto we Trust

18

EN ESPAÑA…

• Bitcoin está reconocido como medio de pago y es equiparable a otra divisa (consulta vinculante V1029-15 de Hacienda) no se cobra IVA

• Todas las empresas que cobran en Bitcoin están obligadas a tener un libro contable con las direcciones y transacciones que realizan

• Si eres minero tienes que registrarte como autónomo y pagar la cuota mensual (Consulta V3625-16)

Page 19: Bitcoin. In Crypto we Trust

19

¿BITCOIN ES DINERO?

Page 20: Bitcoin. In Crypto we Trust

20

¿QUÉ ES EL DINERO?• Activos que son valiosos por su escasez

• Sirven para intercambiarlos por bienes y servicios

• Los bienes escasos se empezaron a usar como dinero: Oro

• Se crea la Moneda Fiducidaria: Oro respalda un título de cambio

• Nadie viene a reclamar ese oro con su título, ¿Emitimos títulos sin respaldo a cambio de oro?

• 1971, Nixon dice que se acabó reclamar el oro y convierte la Moneda Fiducidaria en Moneda FIAT, basada en la deuda.

• Se obliga a la población a utilizar una moneda, con autoridad central.

El dinero pasa a ser IMAGINARIO, sin respaldo físico.

“Si el dinero es bueno y la gente lo acepta voluntariamente, ¿qué necesidad hay de leyes de curso forzoso? Si el dinero no es bueno, ¿cómo se puede en una democracia obligar al pueblo a utilizarlo?” Larry Parks

Page 21: Bitcoin. In Crypto we Trust

21

PRINCIPIOS DE LAS MONEDASORO EURO BITCOIN

ESCASEZ

PORTABILIDAD

FUNGIBILIDAD

VERIFICACION

DIVISIBILIDAD

PRIVACIDAD

ACEPTACION

Page 22: Bitcoin. In Crypto we Trust

22

PROBLEMAS ECONÓMICOS

• Al ser un sistema basado en la deuda, puede crecer indefinidamente.

• Empobrecimiento del Ahorro

• Un modelo de crecimiento ilimitado en un contexto de recursos limitados no es sostenible

• Al menos no solo con los recursos del planeta Tierra

• Nanotecnología??

• Conquista Espacial??

Page 23: Bitcoin. In Crypto we Trust

23

¿QUÉ ES BITCOIN?

Page 24: Bitcoin. In Crypto we Trust

24

¿QUÉ ES BITCOIN? (1)

• Es una moneda electrónica.

• No tiene autoridad central (sistema descentralizado)

• Se transfiere de persona a persona de forma irreversible.

• Está limitada, no se pueden crear más de 21M de BTC.

• Se puede dividir en 100.000.000 millones de unidades (mBTC o uBTC)

• Cada subunidad recibe el nombre de Satoshi

• 1 BTC = 100.000.000 de Satoshis

Page 25: Bitcoin. In Crypto we Trust

25

¿QUÉ ES BITCOIN? (2)

• Bitcoin funciona como una red P2P (BitTorrent/eMule)

• Procesa Transacciones 24x7x365

• Cualquiera puede ser un nodo en la Red

• Una transacción es un pago entre dos entes (casi anónimo)

• Las transacciones se agrupan en Bloques

• Los Bloques forman una larga cadena o Blockchain

• Los bloques los crean los Mineros

Page 26: Bitcoin. In Crypto we Trust

26

¿QUÉ ES BITCOIN? (Y 3)• VENTAJAS:

• Hacer un pago con Bitcoin es como enviar un correo electrónico.

• Las comisiones son mínimas.

• La transferencia tarda 5-10 min vs p.ej. transferencia SEPA (sólo en la UE) es de 1-3 días laborables (escalabilidad)

• Es casi anónimo

• Reserva de Valor

• Bancarización Mundial

• Micropagos: donaciones, propinas

Page 27: Bitcoin. In Crypto we Trust

27

PROBLEMAS

Page 28: Bitcoin. In Crypto we Trust

28

PROBLEMAS QUE AFRONTA BITCOIN

• La moneda es un instrumento de control de los gobiernos. Impuestos. Control de capitales y aumento de patrimonio. Actividades ilegales.

• Desafía a gente muy poderosa. Cuánto más gente utiliza Bitcoin, menos vale el trabajo de un banquero.

• Actualmente es muy volátil.

• Cuesta de entender para el gran público.

• Cuesta creer que el Bitcoin sea moneda. Es moneda virtual.

• Eventualmente podría sufrir ataques (DoS), fallos por bugs de programación en el protocolo, etc.

• Problema de Escalabilidad

Page 29: Bitcoin. In Crypto we Trust

29

ESCALABILIDAD (1)• Probablemente es el problema más importante a futuro de Bitcoin

• Se debe al tamaño original de 1 Mb por bloque

• En 1 bloque caben aproximadamente entre 2048 a 6200 transacciones (la media es 0,5kb x transacción aprox.) y es capaz de procesar en torno a las 300.000 transacciones diarias (VISA procesa 150 millones al día)

• O lo que es lo mismo en el mejor de los casos 7 transacciones/sg

• Si la transacción no cabe en este bloque, tiene que esperar hasta que se resuelvan otro

• Puede estar:

• Indefinidamente esperando o

• Tener que aumentar la tarifa de transacción

Page 30: Bitcoin. In Crypto we Trust

30

ESCALABILIDAD (2)• La cadena de bloques se almacena completa en disco (90Gb)

• Para soportar 2000 tps (VISA) se necesitaría un bloque de 600 Mg

• No es un problema de proceso de CPU

• Es un problema de propagación por la red cada 10 minutos

• Es un problema de espacio

• Si toda la población del planeta usara Bitcoin 6.5 TB al día y 2.32 Petabytes al año

• ¿Soluciones?:

• ¿Aumentar el tamaño del bloque? (BIP102 / Jeff Garzik)

• ¿Aumentar la velocidad de minado? (Sergio Lerner)

ES UN PROBLEMA PARA HABLAR LARGO Y TENDIDO

Page 31: Bitcoin. In Crypto we Trust

31

ESCALABILIDAD (Y 3)• Soluciones

• Lightning Network (Lightning Labs)

• Bloques dinámicos

• Invertible Bloom Lookup Table (IBLTS) / Weak blocks

• Cadenas Laterales

• Testigos Segregados

• Alternativas:

• Bitcoin Core (0.13.2)

• Bitcoin XT (0.11.0F)

• Bitcoin Classic (1.2.0)

• Bitcoin Unlimited (0.12.1)

Page 32: Bitcoin. In Crypto we Trust

32

LA RED BITCOIN

Page 33: Bitcoin. In Crypto we Trust

33

LA RED BITCOIN (1)• La Red Bitcoin es un supercomputador que a finales de 2013 era 210 veces más

potente que los 500 mayores supercomputadores juntos (comparando FLOPS vs hashes/s). En abril de 2014, la potencia computacional de la red era de más de 50 petahashes/s o 50.000 billones de hashes/s.

Potencia computacional de la Red Bitcoin.

Page 34: Bitcoin. In Crypto we Trust

34

LA RED BITCOIN (2)

Más de 5000 nodos soportan la Red Bitcoin

Page 35: Bitcoin. In Crypto we Trust

35

LA RED BITCOIN (3)• Hay diferentes tipos de nodos:

• Broadcast Only Node

• Solo emiten transacciones (dispositivos móviles y carteras simples)

• Son los que menos capacidad de cómputo tienen

• Puerta de entrada a la Red Bitcoin de la mayor parte de los usuarios domésticos

• Relay Node

• Retransmiten y propagan transacciones

• Verifican el formato de la transacción

• firmas correctas y que el dinero que se está transfiriendo está en la cuenta de origen, validándolo contra la versión más actualizada de la cadena de bloques.

• deberemos abrir el puerto 8333

Page 36: Bitcoin. In Crypto we Trust

36

LA RED BITCOIN (4)• Hay diferentes tipos de nodos:

• Mining Node

• A parte de las funciones Relay Node realizan el proceso de mineria

• Actualmente equipos ASIC (Application Specific Integrated Ciurcuit)

• Funcionan agrupándose en pools de minería para aumentar su poder de computación

Page 37: Bitcoin. In Crypto we Trust

37

LA RED BITCOIN (5)

Circuitos ASIC (Application Specific Integrated Ciurcuit), diseñados específicamente para resolver los problemas criptográficos del protocolo Bitcoin. Y “minero” Terraminer.

Page 38: Bitcoin. In Crypto we Trust

38

LA RED BITCOIN (6)

• Bitcoin tiene tres redes de operación:

• Elegimos cambiando “bicoin.conf”

• MainNet

• La red principal

• Puerto 8333

• Puerto RPC 8332

• Cabecera de bloque 0xF9BEB4D9

• La dificultad se incrementa en función de la potencia de la red

Page 39: Bitcoin. In Crypto we Trust

39

LA RED BITCOIN (7)• Bitcoin tiene tres redes de operación:

• TestNet (testnet = 1)

• Se utiliza para testing de Bitcoin o pruebas de integración

• Ha habido tres generaciones (TestNet1, TestNet2, TestNet3)

• TestNet3 Es la versión actual (Bitcoin 0.7)

• 21 de Diciembre 2015 Testigos Segregados

• http://tpfaucet.appspot.com/

• Puerto 18333 / Puerto RPC 18332 / Las direcciones empiezan por m o 2

• Diferente Bloque Génesis

• Diferente cabecera de bloque 0x0B110907 (0xF9BEB4D9)

• La dificultad funciona de un modo diferente

• Por defecto es 1 (cada 20 minutos si no se encuentra un bloque)

Page 40: Bitcoin. In Crypto we Trust

40

LA RED BITCOIN (Y 8)• Bitcoin tiene tres redes de operación:

• RegNet(-regtest)

• Se utiliza para desarrollo (Bitcoin 0.9 en 2014)

• No necesita interactuar con otros pares

• No es necesario una gran potencia para usarla

• Tenemos control total para generar monedas en segundos

• Tiene su propio bloque genesis

• A partir del bloque 101 quedan confirmadas

• Solo los primeros 150 bloques pagan 50 BTCs

Page 41: Bitcoin. In Crypto we Trust

41

SATOSHI NAKAMOTO

Page 42: Bitcoin. In Crypto we Trust

42

¿QUIÉN HA CREADO BITCOIN? (1)• El artículo original y el software se creó bajo el pseudónimo

de un tal Satoshi Nakamoto en 2008• Bitcoin. A Peer-to-Peer Electronic Cash System

Page 43: Bitcoin. In Crypto we Trust

43

¿QUIÉN HA CREADO BITCOIN? (1)• El artículo original y el software se creó bajo el pseudónimo

de un tal Satoshi Nakamoto en 2008• Bitcoin. A Peer-to-Peer Electronic Cash System• La Red Bitcoin se puso en marcha el día 3 de Enero de

2009, creando los primeros Bitcoin

• La tecnología que hay detrás de Bitcoin, la Blockchain o Cadena de Bloques, utiliza conceptos criptográficos y matemáticos que tienen más de 30 años.

Page 44: Bitcoin. In Crypto we Trust

44

¿QUIÉN HA CREADO BITCOIN? (1)• El artículo original y el software se creó bajo el pseudónimo

de un tal Satoshi Nakamoto en 2008• Bitcoin. A Peer-to-Peer Electronic Cash System• La Red Bitcoin se puso en marcha el día 3 de Enero de

2009, creando los primeros Bitcoin

• La tecnología que hay detrás de Bitcoin, la Blockchain o Cadena de Bloques, utiliza conceptos criptográficos y matemáticos que tienen más de 30 años.

• Motivación:• The Times, 03 / Ene / 2009 Al borde del segundo plan de rescate para los

bancos

Page 45: Bitcoin. In Crypto we Trust

45

¿QUIÉN HA CREADO BITCOIN? (2)• ¿Quién es Satoshi Nakamoto? (1)

• Nadie lo sabe exactamente

• El último mensaje de Satoshi Nakamoto se publicó a finales de 2010 (www.bitcoin.org) y cedió el liderazgo a Gavin Andresen

• Según la revista Newsweek es un ingeniero japonés llamado Satoshi Dorian Nakamoto

¡QUE NO SOY YO! ¡DEJARME

EN PAZ!

Page 46: Bitcoin. In Crypto we Trust

46

¿QUIÉN HA CREADO BITCOIN? (3)• ¿Quién es Satoshi Nakamoto? (3)

• Según Wired el caradura de Craig Wright

• Según los lingüistas el criptógrafo Nick Szabo

• La realidad es que: solo Satoshi Nakamoto puede descubrir a Satoshi Nakamoto

POR SUPUESTO

QUE SOY YO!

Page 47: Bitcoin. In Crypto we Trust

47

¿QUIÉN HA CREADO BITCOIN? (Y 4)• ¿Quién es Satoshi Nakamoto? (y 4)

-----BEGIN PGP PUBLIC KEY BLOCK-----

Version: GnuPG v1.4.7 (MingW32)mQGiBEkJ+qcRBADKDTcZlYDRtP1Q7/ShuzBJzUh9hoVVowogf2W07U6G9BqKW24rpiOxYmErjMFfvNtozNk+33cd/sq3gi05O1IMmZzg2rbF4ne5t3iplXnNuzNh+j+6VxxA16GPhBRprvnng8r9GYALLUpo9Xk17KE429YYKFgVvtTPtEGUlpO1EwCg7FmWdBbRp4mn5GfxQNT1hzp9WgkD/3pZ0cB5m4enzfylOHXmRfJKBMF02ZDnsY1GqeHv/LjkhCusTp2qz4thLycYOFKGmAddpVnMsE/TYZLgpsxjrJsrEPNSdoXk3IgEStowmXjTfr9xNOrB20Qk0ZOO1mipOWMgse4PmIu02X24OapWtyhdHsX3oBLcwDdke8aEgAh8A/sHlK7fL1Bi8rFzx6hb+2yIlD/fazMBVZUe0r2uo7ldqEz5+GeEiBFignd5HHhqjJw8rUJkfeZBoTKYlDKo7XDrTRxfyzNuZZPxBLTj+keY8WgYhQ5MWsSC2MX7FZHaJddYa0pzUmFZmQh0ydulVUQnLKzRSunsjGOnmxiWBZwb6bQjU2F0b3NoaSBOYWthbW90byA8c2F0b3NoaW5AZ214LmNvbT6IYAQTEQIAIAUCSQn6pwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEBjAnoZeyUihXGMAnjiWJ0fvmSgSM3o6Tu3qRME9GN7QAKCGrFw9SUD0e9/YDcqhX1aPMrYue7kCDQRJCfqnEAgA9OTCjLa6Sj7tdZcQxNufsDSCSB+yznIGzFGXXpJk7GgKmX3H9Zl4E6zJTQGXL2GAV4klkSfNtvgsSGJKqCnebuZVwutyq1vXRNVFPQFvLVVo2jJCBHWjb03fmXmavIUtRCHoc8xgVJMQLrwvS943GgsqSbdoKZWdTnfnEq+UaGo+Qfv66NpT3Yl0CXUiNBITZOJcJdjHDTBOXRqomX2WSguv+btYdhQGGQiaEx73XMftXNCxbOpqwsODQns7xTcl2ENru9BNIQMEI7L9FYBQUiKHm1k6RrBy1as8XElS2jEos7GAmlfF1wShFUX+NF1VOPdbN3ZdFoWqsUjKk+QbrwADBQgA9DiD4+uuRhwk2B1TmtrXnwwhcdkE7ZbLHjxBfCsLPAZiPh8cICfV3S418i4H1YCz2ItcnC8KAPoS6mipyS28AU1B7zJYPODBn8E7aPSPzHJfudMKMqiCHljVJrE23xsKTC0sIhhSKcr2G+6ARoG5lwuoqJqEyDrblVQQFpVxBNPHSTquO5PoLXQc7PKgC5SyQuZbEALEkItl2SL2yBRRGOlVJLnvZ6eaovkAlgsbGdlieOr0UwWuJCwzZuBDruMYAfyQBvYfXZun3Zm84rW7Jclp18mXITwGCVHg/P5n7QMbBfZQA25ymkuj636Nqh+c4zRnSINfyrDcID7AcqEb6IhJBBgRAgAJBQJJCfqnAhsMAAoJEBjAnoZeyUihPrcAniVWl5M44RuGctJe+IMNX4eVkC08AJ9v7cXsp5uDdQNo8q38RHwN4Gk8w== =3FTe

-----END PGP PUBLIC KEY BLOCK-----

Page 48: Bitcoin. In Crypto we Trust

48

QUIERO CONSEGUIR BITCOIN

Page 49: Bitcoin. In Crypto we Trust

49

COMO CONSIGO BITCOIN

• Me hago minero

• Los cambio por otra divisa Euros/Dólar/Yen…

• Brokers (Coinbase / Bitstamp / Kraken )

• Cajeros

• Me pagan por mi trabajo con él

• Coinality.com / Cryptogrind.com / Bitcoin-Vacancy.com• Consigo fracciones en Pay per View

• Faucets (Btcclicks / Bitsforclicks )

Page 50: Bitcoin. In Crypto we Trust

50

Cajero Lamassu. Pagando en fiat y escanenado un código QR se obtienen BTC.

Cajero RoboCoin. Primer cajero bidireccional del mundo

Page 51: Bitcoin. In Crypto we Trust

51

VEAMOS BITCOIN “POR DENTRO”

Page 52: Bitcoin. In Crypto we Trust

52

¿QUÉ NECESITO COMO USUARIO?

• Para usar Bitcoin solo necesito:

• Saber cómo funciona una billetera o monedero digital.

• Que es una dirección Bitcoin• Como asegurar nuestro dinero (probablemente el

paso más importante para evitar que nuestro dinero pueda verse comprometido)

• Y saber cómo enviar y recibir pagos.

Page 53: Bitcoin. In Crypto we Trust

53

BILLETERAS

Page 54: Bitcoin. In Crypto we Trust

54

DEMO BITCOIN CORE

Page 55: Bitcoin. In Crypto we Trust

55

SIGAMOS VIENDO BITCOIN “POR DENTRO”

Page 56: Bitcoin. In Crypto we Trust

56

¿QUÉ NECESITO PARA ENTENDERLO?

• Recordar:

• La teoría que hay detrás tiene más de 30 años

• Entender lo que hay por detrás necesitamos:

• Saber que son las funciones Hash

• Como funciona la criptografía de clave pública (firmas digitales)

• Para qué sirven las Curvas Elípticas

• Números aleatorios y nonces

• Transacciones

• Minería (Cadena de Bloques y Prueba de Trabajo)

Page 57: Bitcoin. In Crypto we Trust

57

FUNCIONES HASH (1)

• Algoritmo que toma como entrada unos datos de longitud cualquiera (el mensaje) y devuelve una cadena de bits de longitud fija (el hash).

• El propósito de un hash no es ocultar información sino garantizar la integridad

• Características

• Eficiencia en la computación. Rapidez de cálculo

• Resistencia a preimagen. Debe ser computacionalmente muy difícil generar el mensaje a partir del cual se ha derivado el resumen.

• Resistencia a colisión. Debe ser computacionalmente muy difícil generar dos mensajes diferentes y que el hash de ellos sea el mismo.

Page 58: Bitcoin. In Crypto we Trust

58

FUNCIONES HASH (2)

• Bitcoin usa: SHA-256 y RIPEMD-160

• Bitcoin los usa para:

• Generar las direcciones Bitcoin

• En el proceso de minería (prueba de trabajo)

• Identificador de transacciones

• Por regla general Bitcoin siempre aplica dos veces el algoritmo de hash:

SHA-256 ( SHA-256 ( “perro” ) )

2efe5fccbc3639fe5fd4582926c84d2e456a58033096cc1d554701d3474f95e9

Page 59: Bitcoin. In Crypto we Trust

59

FUNCIONES HASH (3)

Las colisiones existen siempre, no importa la función Hash…

Si probamos 2130 entradas aleatorias, existe una probabilidad del 99,8% de que dos colisionaran

“Solo” es una cuestión de tiempo

Page 60: Bitcoin. In Crypto we Trust

60

FUNCIONES HASH (4)

“Solo” es una cuestión de tiempoSe ha comprobado que encontrar una colisión de SHA-256

Se necesitan una complejidad temporal de 2253.5

Con los ordenadores actuales se tardaría varios miles de años en encontrar la colisión

Page 61: Bitcoin. In Crypto we Trust

61

FUNCIONES HASH (5)• SHA-256 (Secure Hash Algorithm)

• Pertenece a la familia SHA-2

• Diseñado por la NSA

• Pero validado por el NIST (National Institute of Standards and Technology)

• Acepta entradas de 264

• Genera una salida es de 256 bits

• Para jugar:

• http://passwordsgenerator.net/sha256-hash-generator/

Page 62: Bitcoin. In Crypto we Trust

62

FUNCIONES HASH (Y 6)• RIPEMD-160 (RACE Integrity Primitives Evaluation Message Digest

• Creado en 1996 por una comunidad académica abierta:

• Hans Dobbertin, Antoon Bosselaers y Bart Preneel

• Genera una salida de 160 bits (tiene versiones 128, 256 y 320)

• Bitcoin lo utiliza cuando necesita crear salidas más cortas de 256 bits

• No hay una razón aparente por el cual se eligió la combinación SHA-256 + RIPEDM-160

• Se suele aceptar que fue porque es la combinación que genera los hashes más cortos que se pueden considerar seguros

Page 63: Bitcoin. In Crypto we Trust

63

CRIPTOGRAFÍA DE CLAVE PUBLICA (1)

• Criptografía Asimétrica / Criptografía de Dos Claves

• Se basa en el uso de dos claves para el envío de un mensaje:

• Ambas claves pertenecen a la misma persona

• Una clave es pública (todo el mundo la conoce)

• Otra clave es privada (solo la conoce el emisor del mensaje)

• Son complementarias

• Una de sus aplicaciones es la Firma Digital

• Bitcoin usa las firmas digitales para verificar quien está autorizado a transferir las monedas

Tres tipos de problemas matemático en el que basan su seguridad:

• El Problema de Factorización Entera: RSA y Rabin Williams (RW)

• El Problema del Logaritmo Discreto: Diffie Hellman (DH) y el sistema DSA

• El Problema del Logaritmo Discreto Elíptico: DSAE, NRE, MQV y por supuesto las curvas elípticas (CEE).

Lectura recomendada: http://www.uv.es/~ivorra/Libros/Elipticas.pdf

Page 64: Bitcoin. In Crypto we Trust

64

CRIPTOGRAFÍA DE CLAVE PUBLICA (2)

1. Ana redacta un mensaje2. Ana cifra el mensaje con la clave pública de David3. Ana envía el mensaje cifrado a David a través de Internet4. David recibe el mensaje cifrado y lo descifra con su clave privada5. David ya puede leer el mensaje original que le mandó Ana

Page 65: Bitcoin. In Crypto we Trust

65

CRIPTOGRAFÍA DE CLAVE PUBLICA (3)

1. David redacta un mensaje2. David firma digitalmente el mensaje con su clave privada3. David envía el mensaje firmado digitalmente a Ana a través de Internet4. Ana recibe el mensaje firmado digitalmente y comprueba su autenticidad usando la clave pública de David5. Ana ya puede leer el mensaje con total seguridad de que ha sido David el remitente

IntegridadSe puede detectar si el mensaje original fue modificado.

No repudioEl autor del mensaje no puede decir que no lo hizo.

AutenticidadEl emisor del mensaje queda acreditado, y su “firma electrónica” tendrá la misma validez que una firma autógrafa.

ConfidencialidadLa información contenida en el mensaje puede ser cifrada o codificada, para que sólo el receptor pueda descifrarla.

Page 66: Bitcoin. In Crypto we Trust

66

CRIPTOGRAFÍA DE CLAVE PUBLICA (Y 4)• El tamaño de las claves importa:

• A mayor tamaño de clave más resistente es a un criptoanálisis

• Más difícil es aleatoriamente generar dos claves iguales

• Bitcoin:

• Utiliza tamaños de clave de 256 bits

• Para generarlas utiliza Curvas Elípticas

Page 67: Bitcoin. In Crypto we Trust

67

CURVAS ELÍPTICAS (1)• Propuestas por Neal Koblitz y Victor Miller en 1985

• Se basan en las matemáticas de las curvas elípticas

• Es un sistema muy seguro de generación de claves:

• Pero es más eficiente, rápida y escalable

• Genera claves más pequeñas con el mismo nivel de seguridad

• Se utiliza por Bitcoin para obtener las claves públicas (las direcciones Bitcoin) y firmar/verificar las transacciones

RSA CURVAS ELIPTICAS

TAMAÑO CLAVE 2048 256

120 120 120

Page 68: Bitcoin. In Crypto we Trust

68

CURVAS ELÍPTICAS (Y 2)• Supongamos el siguiente escenario:

• Otros sistemas suelen usar números primos muy grandes y realizar operaciones con ellos

• Las curvas elípticas en vez de números primos usan coordenadas en una curva elíptica, que en general se corresponden con esta ecuación:

y2 = x3 + ax + b

CLAVE PRIVADA 456 645 835 2345

ALGORITMO 4*5*6 6*4*5 8*3*5 2*3*4*5

CLAVE PUBLICA 120 120 120 120

Irreversibilidad

¿A quien pertenece 120?

Según los valores de a y b la forma de la curva es diferente

Bitcoin usa los valores a = 0 y b = 7

Page 69: Bitcoin. In Crypto we Trust

69

BITCOIN ADDRESSES (1)• Sirve para reclamar la posesión del dinero, el dinero se asocia a ella.

• Tienen una longitud de 34 caracteres y diferencias mayúsculas de minúsculas

• Comienzan por 1 o por 3 (multifirma)

• Está compuesta por un par de claves: Criptografía de clave pública.

• Se pueden generar por cualquier persona y sin conexión

• Esto es debido a que no hay constancia de su existencia hasta que recibe un pago

• Se basa en la criptografía de Curva Elíptica que acabamos de ver

• Llamamos Monedero a un fichero donde almacenamos varias direcciones.

• Pueden ser impresas en papel con códigos QR.

• El proceso de generación lleva 10 pasos

• Ejemplo: bitaddress.org

Se permite del 1 al 9, de la A a la Z y de la a a la z, y se omiten los caracteres siguientes: 0 (cero), O (o

mayúscula), I (i mayúscula) y l (L minúscula)

Page 70: Bitcoin. In Crypto we Trust

70

BITCOIN ADDRESSES (2)• Paso 1: Tener una clave privada del tipo ECDSA de 65 bytes (de estos 32 bytes se

corresponden a la coordenada X y otros 32 bytes corresponden a la coordenada Y)

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

• Paso 2: Generar la clave pública a partir de la anterior, obtendríamos una ristra de datos como los siguientes (Satoshi podría haber decidido usarla como la dirección Bitcoin, sin embargo por motivos obvios no lo hizo):

0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6

Page 71: Bitcoin. In Crypto we Trust

71

BITCOIN ADDRESSES (3)• Paso 3: Hacer un hash con SHA-256 sobre la clave pública anterior:

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

• Paso 4: Aplicamos un hash con RIPEMD-160 sobre el resultado anterior:

010966776006953D5567439E5E39F86A0D273BEE

• Paso 5: Añadir un byte adicional al hash de antes para obtener una versión RIPEMD-160 extendida. Este byte es el denominado byte de versión, y permite distinguir una dirección Bitcoin del de otras criptomonedas. Si estamos usando la red principal de Bitcoin será un 0x00 (formato hexadecimal):

00010966776006953D5567439E5E39F86A0D273BEE

Page 72: Bitcoin. In Crypto we Trust

72

BITCOIN ADDRESSES (4)• Paso 6: Toca hacer otro hash 256 sobre el RIPEMD-160 extendido:

445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094

• Paso 7: Y otro hash adicional SHA-256 sobre el anterior que nos va a servir para crear los dígitos de control de la dirección:

D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30

• Paso 8: Seleccionar los primeros 4 bytes del último hash, este será el identificativo checksum de la dirección pública:

D61967F6 (igual es más fácil ver los 4 bytes de esta forma D6-19-67-F6)

Page 73: Bitcoin. In Crypto we Trust

73

BITCOIN ADDRESSES (5)• Paso 9: Añadir los 4 bytes del checksum del punto anterior al hash

extendido RIPEMD-160 del punto 4, obteniendo una dirección Bitcoin de 25 bytes binaria:

00010966776006953D5567439E5E39F86A0D273BEED61967F6

• Paso 10: Convertir el resultado de la cadena anterior a una cadena con Base58 utilizando el codificado Base58Check (crea los 34 caracteres)

16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

Page 74: Bitcoin. In Crypto we Trust

74

BITCOIN ADDRESSES (6)• Todo esto afecta a los tipos de Billetera. Dos clases:

• No deterministas

• Cada clave privada se asocia a una clave publica

• Si pierdo la clave privada no puede restaurar la dirección

• Deterministas

• para generar las direcciones públicas la curvas elípticas tienen como entrada una semilla que usan en sus cálculos

• Si conozco la semilla puedo restaurar mi billetera si la pierdo

• Hay dos tipos:

• Billetera Determinista de Tipo 1

• Billetera Determinista Jerárquica de Tipo 2

Page 75: Bitcoin. In Crypto we Trust

75

BITCOIN ADDRESSES (Y 7)• Billetera Determinista de Tipo 1

• Es el modelo más simple

• Para generar la clave privada se parte de ejecutar la función SHA256 (cadena conocida + n), donde n es un código ASCII que comienza en 1 y se va incrementando según se van necesitando nuevas claves.

• Billetera Determinista Jerárquica de Tipo 2

• Se describe en la BIP 0032 (Gregory Maxwell)

• La semilla es un valor aleatorio de 128 bits (o 12 palabras comunes en inglés para ayudarle a recordar.

• La semilla es usada después de realizar 100.000 pasadas sobre SHA256 a fin de mejorar la fortaleza y reducir los ataques contra palabras usadas por el usuario que puedan resultar fáciles de atacar.

Page 76: Bitcoin. In Crypto we Trust

76

DIRECCIONES DE VANIDAD• Es un caso particular de las direcciones Bitcoin

• Aumentan el riesgo de ser identificado

• Son direcciones que intentan que la secuencia de caracteres que forma la dirección tenga un formato más amigable y amable, como una forma de personalizarla

1LibroBitcoi8ALj6mfBsbifRoD4miY36v

1SantiagoFVj8ALj6mfBsbifRoD4miY36v

• Una vez generadas se pueden importar dentro de las billeteras

importprivkey

Page 77: Bitcoin. In Crypto we Trust

77

NÚMEROS ALEATORIOS Y NONCES

• nonces son números aleatorios “especiales” que, en principio, sólo se utilizan una vez (number used only once)

• Bitcoin los utiliza para la generación de los bloques en la prueba de trabajo

• Las curvas elípticas también los usan en sus operaciones internas

Page 78: Bitcoin. In Crypto we Trust

78

TRANSACCIONES (1)• Son registros firmados digitalmente que cambian el propietario de fondos

asignándolos a otra dirección

• Se componen de:

• entradas: registros que referencian los fondos (direcciones) de transacciones previas

• salidas: registros que determinan el nuevo propietario de los fondos transferidos (direccion)

• Las salidas actúan como entradas de otras transacciones

• Siempre se utiliza todo el dinero que hay en la entrada aunque la cantidad a pagar sea menor

• La diferencia se asocia a una salida en una dirección de vuelta (el equivalente a que nos den el cambio)

Page 79: Bitcoin. In Crypto we Trust

79

TRANSACCIONES (2)• Cada entrada (input) de una transacción es firmada digitalmente por el pagador,

lo que desbloquea los fondos contenidos en la dirección asociada a la clave privada utilizada para firmar

• Si la firma no es válida la transacción se invalida y se desecha

• Esto lo hace el primer nodo que la recibe

• Si Bitcoin(entrada) > Bitcoin (salida)

• se considera tasa de transacción

• quien incluya esa transacción en la cadena de bloques puede disponer de esa cantidad

• Transacciones con tasas mayores son procesadas más rápido

• Hay transacciones especiales que suponen la creación de nuevo Bitcoin que son generadas a través de la minería por lo que no tienen entradas

Page 80: Bitcoin. In Crypto we Trust

80

TRANSACCIONES (3)• Tipos de transacciones (1):

Normales

Page 81: Bitcoin. In Crypto we Trust

81

TRANSACCIONES (4)• Tipos de transacciones (2):

Transacciones de agregación de fondos

Page 82: Bitcoin. In Crypto we Trust

82

TRANSACCIONES (5)• Tipos de transacciones (y 3):

Transacciones de distribución de fondos

Page 83: Bitcoin. In Crypto we Trust

83

TRANSACCIONES (6)• 1 . El usuario firma la transacción y la envía a un minero.

Page 84: Bitcoin. In Crypto we Trust

84

TRANSACCIONES (7)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

Page 85: Bitcoin. In Crypto we Trust

85

TRANSACCIONES (8)• 1 . El usuario firma la transacción (se valida por un nodo) y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

Page 86: Bitcoin. In Crypto we Trust

86

TRANSACCIONES (9)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

• Pero… ¿Y si alguien controla el 51% de la red?

Page 87: Bitcoin. In Crypto we Trust

87

TRANSACCIONES (10)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

• Pero… ¿Y si alguien controla el 51% de la red?

• Existe algo llamado “Cadena de Bloques”. Funciona como un libro de cuentas de todas las transacciones hechas hasta ahora en BitCoin.

Page 88: Bitcoin. In Crypto we Trust

88

TRANSACCIONES (Y 11)• 1 . El usuario firma la transacción y la envía a un minero.

• 2 . La transacción es cacheada por todos los mineros en activo.

• 3 . Cuando el 51% de los mineros ha recibido la transacción, se suele confiar en que se llevará a cabo (la cadena mas larga prevalece).

• Pero… ¿Y si alguien controla el 51% de la red?

• Existe algo llamado “Cadena de Bloques”. Funciona como un libro de cuentas de todas las transacciones hechas hasta ahora en BitCoin.

• Cuando un minero descubre un nuevo bloque (similar a una nueva página de este libro de cuentas), graba en él las nuevas transacciones.

Sólo entonces podemos garantizar la transacción.

Page 89: Bitcoin. In Crypto we Trust

89

PERO NO TODO ES TAN FACIL

Page 90: Bitcoin. In Crypto we Trust

90

BTSL – BITCOIN TRANSACTION SCRYPT (1)

• El movimiento del dinero no es tan simple como cambiar un dato en una base de datos distribuida

• El movimiento de dinero se hace previa a la ejecución de un script que determina las reglas que debe seguir ese movimiento de dinero

• Ese script está programado en BTSL o Bitcoin Transaction Scrypt Language

• Opera con una estructura tipo LIFO

• Las operaciones se ejecutan de izquierda a derecha

• No es Turing Completo (no tiene bucles)

Page 91: Bitcoin. In Crypto we Trust

P3 P1

m=“P3 envia 3 monedas a P1”s=Sig(sk3,m)

If Ver(pk3,m,s) = OKandP3 tiene un balance de 3thenreturn accept

BTSL – BITCOIN TRANSACTION SCRYPT (2)

Page 92: Bitcoin. In Crypto we Trust

92

BTSL – BITCOIN TRANSACTION SCRYPT (Y 3)

Page 93: Bitcoin. In Crypto we Trust

93

CADENA DE BLOQUES (1)• Es un libro de cuentas con todos los movimientos de BTC.

• Su elemento constituyente es el Bloque

• Crear el siguiente bloque de la cadena requiere mucho tiempo y computación, los mineros trabajan buscando el siguiente bloque.

• Los mineros almacenan temporalmente las transacciones y las distribuyen entre ellos, cuando uno encuentra un nuevo bloque válido graba las transacciones en el nuevo bloque y quedan validadas.

• Puede haber varias cadenas, pero los mineros escuchan la mas larga y descartan las más cortas.

• Generar una cadena más larga que la que ya existe sería improbable en tiempo y esfuerzo (ataque del 51%)

Page 94: Bitcoin. In Crypto we Trust

94

CADENA DE BLOQUES (2)

• Un bloque es un registro que contiene transacciones que se encontraban pendientes

• Se generan aproximadamente cada 10 minutos

• En función del poder computacional se ajusta la dificultad de la red para que tienda a 10 minutos

• Al resolver un bloque el minero recibe la recompensa (12,5 BTCs). Esta recompensas recibe el nombre de coinbase

• Cada 4 años (210.000 bloques) se produce un halving que reduce la recompensa a la mitad (la recompensa tiende a 0 asintóticamente - año 2140)

• A medida que se añaden bloques, las transacciones son más seguras (esto se denomina confirmación)

Page 95: Bitcoin. In Crypto we Trust

95

CADENA DE BLOQUES (3)• Un bloque es una estructura de datos como la siguiente:

Page 96: Bitcoin. In Crypto we Trust

96

CADENA DE BLOQUES (4)• Cada minero compite con el resto para resolver un problema

criptográfico y añadir su bloque a la cadena de bloques.

• Es un problema tipo de prueba y error (fuerza bruta) que recibe el nombre de Prueba de Trabajo

• Consiste en calcular el valor de un Hash con un número de 0’s por delante usando los datos del bloque anterior

• Recalcula el valor del Nonce (usando los datos de la cabecera)

• La dificultad del problema se mide en hashes/s (número de combinaciones/s), y se regula automáticamente cada 2016 bloques (aprox. 2 semanas) con la potencia computacional de la red.

• Esto se hace para evitar un hackeo del double spending.

• Un atacante entraría en una carrera con el resto de nodos para romper la integridad de la cadena de bloques.

BLOQUE GENESIS

El 3 de enero de 2009, a las 18:15:05 horas, la Red Bitcoin se pone en marcha con el primer bloque: El Bloque Genesis (Altura 0)

Todos los nodos tienen su propia copia codificada que no puede ser alterada

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

Page 97: Bitcoin. In Crypto we Trust

97

CADENA DE BLOQUES (5)• Bloques Caducados y Bloques Huérfanos

• Todos los mineros compiten contra todos

• ¿Pueden dos mineros resolver el mismo bloque a la vez?

• Puede suceder

• Pero solo uno cobrará la recompensa

• ¿Quién la cobrará?

• Gana el que anexe su bloque a la cadena más larga

• EL bloque perdedor estará caducado

• Un bloque que no tiene padre se llama bloque huérfano

• Orphan block pool

Page 98: Bitcoin. In Crypto we Trust

98

CADENA DE BLOQUES (6)

Minero A Minero B

Bloque B1

Bloque B2

B1 y B2 son válidosB1 y B2 generados simultáneamenteB1 y B2 se propagan por la Red

Dos opciones

...

... Bloque B1

Bloque B3

Longitud: N+2

Bloque B2

Longitud: N+1B2 es válido pero no pertenece a la cadena más larga. Se desecha. Caducado

Page 99: Bitcoin. In Crypto we Trust

99

OTROS USOS PARA BITCOIN

Page 100: Bitcoin. In Crypto we Trust

100

OTROS USOS DE BITCOIN

• Al igual que con la aparición de Internet aparecieron conceptos nuevos como:

• web

• correo electrónico

• comercio online

• mensajería instantánea

• redes sociales

• Cloud Computing

• Etc…

• Estamos en una situación muy similar…

Page 101: Bitcoin. In Crypto we Trust

101

OTROS USOS DE BITCOIN• Coloured coins: registro de la propiedad en la red bitcoin. Consiste en asociar a una

unidad de cuenta en la red (1 Satoshi) no al valor monetario de esa unidad de cuenta, sino a un activo o a información. Permitiría comerciar con cualquier tipo de activo (acciones, inmuebles, oro, etc.) o gestionar información sensible (votos, etc). Por ejemplo, si dos empresas A y B firman un contrato legal donde se comprometen a confíar en esa red automatizada, podría llegar a tener validez jurídica.

• Smart contracts: es un contrato programable. Se programa un contrato con unas reglas, se sube el contrato a la red, y la transacción queda pendiente hasta que se verifiquen las reglas del contrato. Automatizaría muchos procesos en finanzas (derivados) y economía (contratos legales, crowdfunding, etc.).

• Smart property: la propiedad reconoce al dueño al estar en un registro de la propiedad en Internet (coloured coins). Mediante identificación biométrica, se podrían usar con smart contracts. Ejemplo: Yo te presto 3.5 BTC, y tú pones como aval tu coche. Si no me devuelves el dinero, el coche ya no te reconoce como dueño.

Page 102: Bitcoin. In Crypto we Trust

102

OTROS USOS DE BITCOIN• Internet de las cosas: sensores que ofrezcan datos a cambio de fracciones de

bitcoin o dispositivos con monederos integrados.

Ejemplo: frigorífico inteligente que nos permita hacer la compra a través de Internet con Bitcoin.

Ejemplo: una estación meteorológica, mantenida por un particular, que se autosostenga ofreciendo sus datos a cambio de fracciones de Bitcoin.

Page 103: Bitcoin. In Crypto we Trust

103

¿PREGUNTAS?

“BitCoin is the largest socio-economic experiment the world has never seen”

(Charlie Shrem, BitCoin Foundation)