Curso Ethereum
Introducción
andres.junge@consensys.net
Criptografía básica
Introducción al blockchain
Manejo de llaves
Transacciones
Herramientas públicas de monitoreo
Criptografía básica
Encriptación simétrica
Encriptación ásimetrica
Alice encripta con la llave X un mensaje para Bob
Bob desencripta el mensaje con la misma llave X
Encriptación simétrica
Encriptación simétrica
¿Como obtiene Bob la llave X?
La misma llave X encripta y desencripta
Encriptación asimétrica
Bob genera un par de llaves Xa y Xb
Alice encripta un mensaje para Bob con la llave Xa de Bob
Bob desencripta el mensaje con la llave Xb
Encriptación asimétrica
Mientras Bob mantenga Xb privada, Xa puede ser pública
¿Como sabe Alice que la llave Xa es de Bob?
El ataque de Charlie
Bob genera Xa y Xb
Charlie genera Ya yYb
Alice le pide a Bob su llave
Charlie le envía la llave Ya a Alice
Alice encripta el mensaje con la llave Ya
Charlie lo desencripta con la llave Yb
Charlie lo reencripta con la llave Xa
Bob desencripta el mensaje con la llave Xb
Charlie le pide a Bob su llave
Charlie es...
el hombre del medio
(man in the middle attack)
Certificados Digitales
Public Key Infrastructure (PKI)
Firma digital
Funciones de Hash
Funciones de Hash
Independiente de x
f(x) es del mismo largo
a partir de f(x) no se puede obtener x
una pequeña variacion en x , da un resultado diferente de f(x)
Firma digital
Alice genera un par de llaves Za y Zb
Alice genera el hash de m = f(m)
Alice encripta el hash f(m) con su llave privada Za = Hf
Alice envia [ m, Hf ] a Bob
Bob genera el hash de m = f(m)
Bob desencripta Hf con la llave Zb
Bob compara su f(m) con Hf desencriptado
Certificados Digitales
¿Como sabe Alice que la llave Xa es de Bob?
¡Porque viene firmada por Dave!
Yo Dave, digo que Xa es la llave de Bob. Firma Dave.
Una llave publica + el sujeto poseedor de la llave privada, todo firmado por un tercero
Public Key Infrastructre
Criptografía Asimétrica
Autoridad certificadora emite certificados
¿Quien certifica la llave de la Autoridad Certificadora?
Revocación de Certificados
Políticas de Certificación
Criptografía básica
¿Tipos de Criptografía?
Simétrica y Asimétrica
¿Problema de la criptografía simétrica?
Traspaso de llave
¿Problema de la criptografía asimétrica?
Charlie malo
(Man in the middle attack)
¿Firma digital?
Hash encriptado con llave privada
¿Certificado digital?
Llave + Sujeto, firmado por tercero
¿Preguntas?
Introducción al Blockchain
Base de datos distribuida
... pero con procedimientos almacenados
Libro contable distribuido (DLT)
Solución al problema de los generales bizantinos
¡ La solución al sistema opresor !
¿Blockchain?
Wei Dai , Nick Szabo, Hal Finney
3 Enero 2009: Genesis block
Cadena de bloques
Proof of Work
mas de 12.000 nodos
Blockchain
Transacción: [de, para, que] firmado
Bloques con conjunto de transacciones
Transacciones firmadas digitalmente
Bloques enlazados entre si (orden)
Solo se pueden agregar bloques
Blockchain
Protocolo
Saldo: recorrer la cadena
[de,para]: Llaves públicas
Bitcoin: [que] valor transferido
Nodos transfieren bloques y transacciones pendientes
Todos los nodos tienen toda la base de datos
Blockchain
Saldo A: x BTC
Tx 2: [de A, para C, x BTC]
Tx 1: [de A, para B, x BTC]
¿Quien es dueño de los x BTC? ¿B o C?
¡Tiremos los dados!
Problema de doble gasto
Quien escribe primero en el bloque
Sha256(Bloque candidato + nonce) < dificultad
Dificultad acordada
Propagación de bloques
Problema de doble gasto
Cadena mas larga es la válida
¿Quien quiere armar bloques?
Comisión (fee) por Tx
Inyección de circulante
Incentivos
Reducción a la mitad cada 4 años
Nonce aleatorio. Calcula sha256. Verifica
Precio de cripto-activo minado
CPU, GPU, ASIC
Minería
Eficiencia eléctrica
Ataque 50%+1
Calculo de dificultad
Algoritmo de minado
Tiempo entre bloques
Alternativas
Política de Incentivos
Otras partes del protocolo
Litecoin
mas de 800
Ethereum
Alternativas
Zcash
Multi proposito: Smart Contracts
30 Julio 2015: Genesis Block
Tiempo entre bloques: 15 seg
Ethereum
Vitalik Buterin
Fundación Ethereum
Blockchain
¿Primer blockchain?
Bitcoin
¿Direcciones?
Llaves públicas
¿Que resuelve el Proof of Work?
Doble gasto
¿Incentivo para el minero?
Comisiones Tx + Circulante Fresco
¿Mejor alternativa?
¡ Ethereum !
¿Preguntas?
Manejo de Llaves
Seguridad del Blockchain: Llaves privadas
Separación de funcionalidades
Nodo full
Wallet (billetera)
Comunicación internodos
Nodos mineros
Interacción externa por medio de JSON-RPC
sendTransaction vs. sendRawTransaction
Nodos
Generación de llaves
Monitoreo de Blockchain
Firma de Transacciones
Wallets
Elliptic Curve Digital Signature Algorithm
bae391e32054eba6d0dc94ecd574f5b435de4261bd86a6b3082403f3e5ede23d
256 bits ECDSA vs 2048 bits RSA
Llave pública 44 digitos en Base58
Llaves
0x565f669336378f032a4403cFe80767aa024B26e0
Privacidad
Seed & Mnemonic
Hierarchical Deterministic Key Generation
Llaves
level volume trip idle tonight have traffic fame sphere marine later witness
Nodo
Mobile App
Browser Offline
Browser + Server storage
Wallets
Hardware Wallet
Paper Wallet / Brain Wallet
Cold storage
HSM
Air Gap
Multisignature
Seguridad
Key rotation
Key ceremony
My Crypto (My Ether Wallet)
MetaMask
uPort
Gnosis MultiSig
Llaves
¿Punto de seguridad?
Llave privada
¿Algoritmo?
ECDSA
¿Porqué HD Wallets?
Privacidad
¿A quien hay que pedir permiso para crear una cuenta?
¡Nadie!
¿Preguntas?
Transacciones
dirección que firma la transacción
de (from):
para (to):
dirección del destinatario
que (data):
datos de la transacción
valor (value):
valor de la transacción
firma de la transacción
nonce:
correlativo del originador
Costo de la operación
Gas
Costo por ciclo de cómputo
Costo por almacenamiento
Límite de Gas
Precio del Gas
dirección que firma la transacción
de (from):
para (to):
dirección del destinatario
que (data):
datos de la transacción
valor (value):
valor de la transacción
firma de la transacción
gasLimit:
limite de gas
gasPrice:
precio del Gas
nonce:
correlativo del originador
Post Minado
Tx Hash
Gas Used
Block
Confirmaciones
Tx Status
Eventos
Transacciones
¿Que evita el Replay?
Nonce
¿Que evita el DOS?
GasLimit
¿Como se calcula la comisión para el minero?
GasUsed * GasPrice
¿Cuando una transacción es final?
Nunca
¿Preguntas?
Herramientas públicas de monitoreo
Blockchain es público
Nodo propio
Explorador de bloques
Análisis de red
Análisis de parametros
Nodo propio
getBalance(addr, block)
getCode(addr, block)
getTransactionCount(addr, block)
getTransactionByHash(txHash)
gasPrice()
getBlockByNumber()
Explorador de bloques
etherscan.io
etherchain.org
ethplorer.io
Alethio (althe.io)
Infura
Análisis de Red
ethstats.net
Alethio (althe.io)
Análisis de Gas
ethgasstation.info
Alethio (althe.io)
¿Preguntas?
¡Hasta mañana!
andres.junge@consensys.net
Curso Ethereum (1/5): Introducción
By Andres Junge
Curso Ethereum (1/5): Introducción
Curso Ethereum. Parte 1 de 5. Introducción
- 437