Upload
philippe-camacho-phd
View
195
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Charla sobre (In)Seguridad de Bitcoin dada en la conferencia 8.8, Santiago de Chile, Octubre 2014
Citation preview
Bitcoin y (In)seguridad: 5 paradojas Philippe Camacho
@philippecamacho
¿Quién soy?
Philippe Camacho • Francés, 10 años en Chile
• Desarrollador, Consultor
• Doctorado en Criptografía en la Universidad de Chile
• Co-fundador de comprabitcoin.com (2013-2014)
• Unos de los primeros sitios de compra-venta de bitcoins en América Latina
• Mucha prensa (estuvimos en Tele 13 ) • 3 millones de USD de venta
• Desarrollador I+D en Synaptic.cl (septiembre 2014)
Premio
¡Hay 40 mBTC ≈ $7000 escondidos en esta presentación!
De 1 USD a 1000 USD en 3 años (Por qué Bitcoin importa)
I tried hacking Bitcoin and I failed.
http://www.businessinsider.com/dan-kaminsky-highlights-flaws-bitcoin-2013-4
???
Paradojas
• #1 El verdadero costo del dinero
• #2 Anonimato v/s trazabilidad
• #3 Poder computacional: una arma de doble filo
• #4 Centralización v/s Descentralización
• #5 “In Bitcoin we Trust”
Bloque
Minería
en 1 slide
Genesis (Coinbase)
Cadena de bloques
Paradojas
• #1 El verdadero costo del dinero
• #2 Anonimato v/s trazabilidad
• #3 Poder computacional: una arma de doble filo
• #4 Centralización v/s Descentralización
• #5 “In Bitcoin we Trust”
¿Cuanto cuesta mandar 195.500.000 USD de un país a otro con Bitcoin?
0.0001 BTC = 0.04 USD
Firmas digitales
Clave privada Clave pública ≈ Dirección de Bart
Firmar Mensaje
Firma
Equivale a la habilidad de
“dibujar la firma”
Firma
Firmas digitales
Aceptar / Rechazar
Verificar
¿Que significa “Soy dueño de 30 BTC”?
Tu conoces la clave privada asociada a una clave pública (≈dirección bitcoin) cuyo balance es 30 BTC.
Tu eres el único a conocer esa clave privada.
1
2
Entonces…
2 cosas feas te pueden pasar
Pierdes la clave privada
Alguien te roba la clave privada y transfiere todos tus bitcoins a otra dirección
1
2
¿Que harías con 500000 BTC?
• 500000 BTC = 195.500.000 USD
¿El problema: donde guardarlos?
?
? ? ?
¿El problema: donde guardarlos?
¿Y eso?
O perdón, esto: (Cold Storage)
Cold Storage
• Internet es inseguro => hay que almacenar las claves privadas offline
• Costo real
– Seguridad física
– Proceso MUY MUY complejo
Proceso básico
1. Preparar un computador que no tenga acceso a internet 2. Instalar un sistema operativo sin virus 3. Instalar el código que permite generar claves privadas/publicas 4. Generar las claves privadas y las direcciones bitcoin asociadas 5. Almacenar las claves en lugar seguro (colchon) 6. Copiar manualmente la dirección bitcoin en un computador online 7. Enviar dinero a la dirección elegida (chao jefe) 8. Recolectar la información de las transacciones asociada a la dirección 9. Mover manualmente esa información en el computador offline 10. Firmar (usando la clave privada) la transacción nueva 11. Mover manualmente la transacción firmada en un computador online 12. Publicar en la red bitcoin la transacción
Algunos problemas
• ¿Donde se almacenan las claves privadas? • ¿Quien sabe donde están (físicamente) las claves privadas? • ¿Quién cuida la seguridad del lugar físico / como? • En caso de encriptar las claves privadas, quien recuerda la
password • ¿Quien prepara el computador offline? • ¿De donde se saca el sistema operativo? • ¿Hay que partir del principio cada vez que se quiere enviar
dinero (reinstalar todo)? • ¿En caso que por alguna razón el computador offline este
infectado por un virus será un problema? – Sí.
Malas noticias En la práctica se usan claves USB para mover
manualmente la información desde entre el computador online y el computador offline.
https://www.schneier.com/blog/archives/2014/07/the_fundamental.html
Pregunta filosófica
¿Entonces que se puede hacer?
Idea Internet
Hardware especializado para validar transacciones. Puede ser considerado como seguro
Transacción Firmada
Transacción Firmada
(Monto, Dirección BTC destinación)
Las cosas no son tan simples…
• ECDSA – Setup():
• 𝐺 grupo de tamaño 𝑛, 𝑔 ∈ 𝐺 • 𝑆𝐾 = 𝑑 ∈ [1, 𝑛] (aleatorio) • 𝑃𝐾 = 𝑔𝑑 • Return (𝑃𝐾, 𝑆𝐾)
– Sign(m,SK): • 𝑒 = 𝐻𝑎𝑠ℎ(𝑚)
• 𝑧 = 𝑒[1, 𝐿𝑛] • 𝑘 ∈ [1, 𝑛] (aleatorio)
• (𝑥1, 𝑦1) = 𝑔𝑘
• 𝑟 = 𝑥1 𝑚𝑜𝑑 𝑛
• 𝑠 = 𝑘−1 𝑧 + 𝑟 𝑆𝐾 𝑚𝑜𝑑 𝑛 • Return (𝑟, 𝑠)
Ataque sobre la “idea brillante”ea
Internet
Hardware especializado para validar transacciones. Puede ser considerado como seguro
Transacción Firmada
Transacción Firmada
(Monto, Dirección BTC destinación)
El adversario usa
dos veces el mismo 𝑘
Ataque sobre la “idea brillante”
• El adversario usa dos veces el mismo 𝑘 Tenemos:
𝑠1 = 𝑘−1 𝑧1 + 𝑟 𝑆𝐾 𝑚𝑜𝑑 𝑛 𝑠2 = 𝑘−1 𝑧2 + 𝑟 𝑆𝐾 𝑚𝑜𝑑 𝑛
Entonces podemos deducir
s1 /𝑠2 = 𝑘−1 𝑧1 + 𝑟 𝑆𝐾
𝑘−1 𝑧2 + 𝑟 𝑆𝐾
𝑺𝑲 = 𝑠2𝑧1 − 𝑠1𝑧2
𝑟 𝑠1 − 𝑠2
Clave secreta
Todos los valores son conocidos
Se nos olvido decirle a Philippe que había que
hablar de temas prácticos también…
En la práctica
En la práctica
http://bitcoinmagazine.com/6251/critical-vulnerability-found-in-android-wallets/
NOTA: El ataque funciona
SIN TENER que acceder al dispositivo de la victima.
¡Toda la información necesaria esta en la cadena de bloques!
En la práctica FIX
http://bit.ly/1sVT994
#¡NoLoHagan!#
https://brainwallet.github.io
¡El dinero esta en tu mente!
#¡NoLoHagan!#
Leyes y reglas en un mundo que cambia
¿Será prohibido acordarse de una password cuando uno se sube a un avión?
Paradojas
• #1 El verdadero costo del dinero
• #2 Anonimato v/s trazabilidad
• #3 Poder computacional: una arma de doble filo
• #4 Centralización v/s Descentralización
• #5 “In Bitcoin we Trust”
En el mundo Bitcoin mi identidad es distinta
El identificador del usuario se reemplaza por una secuencia de simbolos
aleatorios
Dirección Bitcoin: 31uEbMgunupShBVTewXjtqbBv5MndwfXhb
Y eso es bueno
Y eso es malo (o al menos complejo) también
Bitcoin no es totalmente anónimo
ANONIMATO = SEUDONIMATO + NO VINCULACIÓN
Para proveer “más” anonimato
Mixer
Para proveer “más” anonimato
• Coinjoin (https://bitcointalk.org/index.php?topic=279249.0)
– Aprovecha la forma en que se implementan las transacciones en Bitcoin
– Usa multi-firmas
– Evita el riesgo de que el mixer se robe los bitcoins
Para proveer aún más anonimato
¡56 paginas!
Requiere cambiar
Bitcoin
Paradojas
• #1 El verdadero costo del dinero
• #2 Anonimato v/s trazabilidad
• #3 Poder computacional: una arma de doble filo
• #4 Centralización v/s Descentralización
• #5 “In Bitcoin we Trust”
Bloque
Minería
en 1 slide
Genesis (Coinbase)
Cadena de bloques
Cadena de bloques
H H H
Tx1; Tx2; Tx3…
Tx34; Tx35; Tx36…
Tx54; Tx55; Tx56…
Bloque de transacciones
…
Genesis (Coinbase)
¿Pero quien calcula el siguiente bloque?
Demostración de Esfuerzo (Proof of Work)
00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111
10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111
H 1001101|| x 000||10
Encuentra el valor x tal que la salida empieza
con 3 zeros.
La única forma (*) de calcular este valor tal que la salida
empiece por 𝒏 zeros es intentar al alrededor de 𝟐𝒏 veces.
(*) Si lo logras de otra manera puedes (1) volverte rico, (2) famoso (Premio Turing), o (3) ambas cosas...
La intuición
• El primer nodo que logra a resolver el puzzle computacional gana el bloque
• La red extiende la cadena a partir de este nuevo bloque
• La red siempre elige extender la cadena más larga
¡Diablos! Necesito controlar
51% del poder computacional de la red (*)
(*) No es tan así… => Majority is not Enough: Bitcoin Mining is Vulnerable http://arxiv.org/abs/1311.0243
Poder computacional como arma
¿Qué pasa con Ecuador?
¿Cuanto poder computacional se
necesita para proteger la moneda digital de un país?
Poder computacional == $$$
http://www.wired.com/2014/08/isp-bitcoin-theft/
Paradojas
• #1 El verdadero costo del dinero
• #2 Anonimato v/s trazabilidad
• #3 Poder computacional: una arma de doble filo
• #4 Centralización v/s Descentralización
• #5 “In Bitcoin we Trust”
Minería tiende a centralizarse
Protocolo descentralizado pero servicios centralizados
5 Super heroes para proteger una economía de 5 billones de dólares
• Wladimir J. van der Laan
• Gavin Andresen
• Jeff Garzik
• Gregory Maxwell
• Pieter Wuille
A veces la centralización es buena…
https://bitcoin.org/en/alert/2013-03-11-chain-fork
Paradojas
• #1 El verdadero costo del dinero
• #2 Anonimato v/s trazabilidad
• #3 Poder computacional: una arma de doble filo
• #4 Centralización v/s Descentralización
• #5 “In Bitcoin we Trust”
Cambio de paradigma
Bancos Confianza en instituciones
Bitcoin Confianza en código
abierto + leyes matemáticas
V/S
= +
¿Pero quién invento Bitcoin?
No se sabe quien es...
http://www.newsweek.com/2014/03/14/face-behind-bitcoin-247957.html
¡Satoshi tendría 10% de los bitcoins!
Nota a los organizadores:
¡Inviten a Sergio el próximo año!
ECDSA y la Teoría de la Conspiración
• [In answer to: "Is the NSA aware of any weaknesses in the DES or the DSS? The RSA?"] We are unaware of any weaknesses in the DES or the DSS when properly implemented and used for the purposes for which they both are designed. —National Security Agency, June 1992
http://en.wikipedia.org/wiki/Data_Encryption_Standard#NSA.27s_involvement_in_the_design
ECDSA y la Teoría de la Conspiración
ECDSA y la Teoría de la Conspiración
https://www.nsa.gov/ia/programs/suiteb_cryptography/
Demostraciones de Seguridad
• Idea – Si supuesto es valido entonces sistema es seguro
– Bueno:
• Permite definir: “que es seguro” • Permite enfocarse en los supuestos
– No da ninguna garantía absoluta pero no tenerla es
mucho peor
Teorema: Logaritmo Discreto Difícil ⇒ Algoritmo de firma de ElGamal es seguro
Demostraciones de Seguridad
• Problema
– No hay demostración de seguridad para ECDSA
– No hay demostración de seguridad para Bitcoin • Malleability Attack
http://www.righto.com/2014/02/the-bitcoin-malleability-attack-hour-by.html
• Majority is not Enough: Bitcoin Mining is Vulnerable http://arxiv.org/abs/1311.0243
• ???
Necesitamos otras herramientas (internet?)
Generalización de Bitcoin
Lenguaje Turing Completo
(contratos inteligentes)
Tendremos malware en la cadena de
bloque Que pasa frente a un
ataque global / local?
Ethereum.org
Hal Finney (1956-2014)
¡Gracias!