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