dit/UPM - Universidad Politécnica de Madrid

Transcripción

dit/UPM - Universidad Politécnica de Madrid
dit-upm
Criptografía
bitcoins & blockchain
José A. Mañas < http://www.dit.upm.es/~pepe/>
Dep. de Ingeniería de Sistemas Telemáticos
E.T.S. Ingenieros de Telecomunicación
Universidad Politécnica de Madrid
7 de octubre de 2016
dit
índice
1. bitcoins
2. blockchain
bitcoin & blockchain
2
billetes
dit
 ¿qué es un billete?
 una cantidad
 firmada por el emisor
 ¿de quién es el billete?
 del que lo tenga en la mano
 si pierdes el billete
es del que lo encuentra
bitcoin & blockchain
3
bitcoin
dit
 ¿qué es una moneda digital?
 un valor
 a nombre de un beneficiario (address)
 firmada por el anterior propietario
valor
hash(Kp)
signed by previous
 ¿de quién es la moneda?
 del que tenga una clave privada Ks
cuya clave pública Kp
sea tal que address = hash(kp)
 o sea, una prueba de posesión
 si pierdes la moneda, no es de nadie
 si alguien adivina tu clave privada, la moneda es suya
bitcoin & blockchain
4
dit
bitcoin & blockchain
un monedero ligero
5
¿a quién?
dit
 P2PKH – pay to public key hash (= address)
 al que demuestre conocer el secreto de una clave pública cuyo hash
es ese
 P2PK – pay to public key
 al que demuestre conocer el secreto cuya clave pública es esa
 P2SH – pay to script hash
bitcoin & blockchain
6
criptografía
dit
 curvas elípticas de potencia 128 bits
 secp256k1
 y2 = x3 + 7 over Zp
 p = 2256 – 232 -29 – 28 - 27 – 26 – 24 -1
 G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB
2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC
0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8
http://www.secg.org/sec2-v2.pdf
bitcoin & blockchain
7
addresses
dit
 A = ripemd160(sha256(secret))
(160 bits)
 base58check encoding
 e.g. 174sG4urSK4zoqFw6T8AQwMuhLj6u2wL9W
bitcoin & blockchain
8
transacción
dit
 billetes
 cambia de mano
 bitcoin
 firmo que lo traspaso
bitcoin & blockchain
9
una transacción
dit
 3D9FUuy… tenía 3.16344237 BTC
 que reparte
 0.00126049 BTC a 13JPtvg…
el pago
 3.16218188 BTC a 3D9FUuy…
el cambio
bitcoin & blockchain
10
dit
bitcoin & blockchain
una transacción
11
dit
una transacción
1. 3D9FUuy… manda 3.16404237 BTC (~ 1,708.58€)
2. 13JPtvg… recibe 0.00126049 BTC (~ 0.68€)
3. bitcoin se queda una comisión de 0.0006 BTC (~ 0.32€)
4. 3D9FUuy…recibe como cambio 3.16218188 BTC (~ 1,707.58€)
bitcoin & blockchain
12
dit
bitcoin en papel
 puedes recibir en papel una moneda que, para incorporar a tu
cuenta, hay que firmar
 el papel trae la clave de firma
para que te la transfieras a ti mismo
bitcoin & blockchain
13
dit
otra transacción
 para proteger el anonimato,
la vuelta puede ir a otra dirección controlada por el mismo usuario
 es habitual que un usuario tenga muchas claves
incluso que se vayan generando sobre la marcha
bitcoin & blockchain
14
dit
bitcoin & blockchain
monedero con varias claves
15
una transacción
dit
 varias entradas
 usamos varios billetes para pagar
 varias salidas
 a varios destinatarios
 una salida suele ser otra clave mía
bitcoin & blockchain
16
dit
bitcoin & blockchain
un pago
17
dit
creación de dinero
 sale de la nada
bitcoin & blockchain
18
dit
bitcoin & blockchain
generate a request
19
dit
índice
1. bitcoins
2. blockchain
bitcoin & blockchain
20
balance (ledger)
dit
 ¿cómo sabemos cuánto dinero tiene cada dirección en cada
momento?
 para que nadie pague con dinero que no tiene
 para que nadie pague 2 veces con el mismo billete
(double spanding)
 la solución tradicional es un balance universal
 así funcionan todos los bancos con un super-host
 y el banco intermedia todas las transacciones
 el banco tiene todos los movimientos (y tiene la última palabra)
 yo tengo MI COPIA en excel
bitcoin & blockchain
21
dit
distributed ledger
 todo el mundo sabe lo de todo el mundo
bitcoin & blockchain
22
dit
registro compartido
https://www.youtube.com/watch?v=l9jOJk30eQs
bitcoin & blockchain
23
distributed ledger
dit
 eliminamos el registro central
 nadie es más que nadie
 peer-to-peer sin autoridad central
 ¿cómo se consigue que todos tengamos el mismo registro?
 ¿cómo se gestionan los retardos de transmisión?
 ¿cómo se detecta si alguien miente?
 la solución se llama blockchain (cadena de bloques)
 y la garantía no es absoluta: simplemente es muy difícil que un engaño
perdure en el tiempo
 se descubre en unos 10 minutos
 podemos fiarnos (es estable) en unos 60 minutos
bitcoin & blockchain
24
bloques encadenados
dit
 cada bloque contiene unas cuantas transacciones
 cada bloque tiene el hash del anterior (SHA-256)
 hay 1 bloque base: The Genesis Block (hardcoded)
 1 transacción (3.1.2009)
 https://en.bitcoin.it/wiki/Genesis_block
bitcoin & blockchain
25
bloques
dit
 los bloques los genera cualquiera (les llaman mineros)
 cogiendo suficientes transacciones para quedarse con una buena
comisión
 siendo subvencionado con unas cuantas bitcoins
(incluyen una transacción sin origen destinada a ellos mismos)
 y hace un broadcast para que se añada al bloque anterior
 puede haber varios mineros que encuentren bloques a la vez
(concurrency race) y …
bitcoin & blockchain
26
dit
merkle tree
 algoritmo eficiente O(log n) para crear un hash de muchas
entradas
 n = sha256(sha256(n1, n2))
bitcoin & blockchain
27
dit
SPV
 Simple Payment Verification
 para que los monederos sean ligeros, solamente almacenan las
transacciones de su dueño
 y pueden verificarlas contra un servidor que SÍ tiene toda la
cadena, revisando solo los headers de los bloques
bitcoin & blockchain
28
consenso
dit
 proof of work
 un bloque es válido si su hash es mayor que un cierto umbral
 hay que probar bloques hasta que sale uno que cumple
 es muy sencillo de verificar
 el umbral se ajusta cada X para que el tiempo que se tarda en
generar un bloque válido sea de unos 10 minutos
 puede haber 1 colisión, 2, 3, 4, … pero según avanza la
bifurcación, es menos y menos probable que ocurra y al cabo de
6 bloques se considera que la cadena que lo consigue es
ganadora
 ganadora quiere decir que nos fiamos de la más larga
 ojo: nadie tira nada, pero es casi imposible que aparezca en el futuro
una cadena mejor
bitcoin & blockchain
29
proof of work
dit
 averiguar X tal que
 bloque(X, lista de transacciones, hash_anterior) > N
 N se calcula cada 2016 bloques (~14 días)
bitcoin & blockchain
30
dit
bitcoin & blockchain
una transacción confirmada
31
dit
51% attack
 si alguien controla la mayoría de la capacidad de generar bloques
(> 50%) puede generar bloques a su antojo y manejar el registro
general sin consenso
 https://learncryptography.com/cryptocurrency/51-attack
bitcoin & blockchain
32
dit
índice
1. bitcoins
2. blockchain
bitcoin & blockchain
33
utilidad
dit
 bitcoin es una moneda sin autoridad central lo que provoca
fuertes emociones a favor y en contra
 todos los bancos lo están mirando por lo que les afecta
 blockchain es una tecnología que permite tener un registro
distribuido probablemente seguro
 esto elimina los problemas de las soluciones centralizadas
 es aplicable a muchos escenarios en donde se distribuye la tarea de
“registrador”
 una solución perfecta y cara  una solución probable y barata
 requiere conectividad
Partition tolerance is
the ability of a distributed system to continue operating correctly
even in the presence of a network partition.
bitcoin & blockchain
34
computación distribuida
dit
 los generales bizantinos
un experimento mental creado para plantear de una forma
metafórica el problema de tener un conjunto de sistemas
informáticos con un objetivo común que tienen que encontrar
un plan de acción común a partir de una estructura jerárquica
donde uno de los sistemas tiene mayor prioridad proporciona
una orden a partir de la cual el resto de sistemas tiene que
operar (fijar su decisión).
Además es posible que alguno de ellos no sea fiable
y provea información falsa de forma intencionada.
 https://es.wikipedia.org/wiki/Problema_de_los_generales_bizantinos
bitcoin & blockchain
35

Documentos relacionados