44
No más Madoff: Satoshi al rescate Philippe Camacho [email protected] Bsides Chile 22 de octubre 2014 Santiago

No más Madoff: Satoshi al rescate

Embed Size (px)

DESCRIPTION

La industria de la auditoria esta en crisis. Madoff, Enron, Subprimes,...: no son pocos los escándalos financieros que han involucrado empresas auditoras prestigiosas. Afortunadamente desde el 2009 tenemos una alternativa. Bitcoin y la tecnología de la cadena de bloques han abierto la puerta para implementar sistemas financieros de un nuevo tipo. Se pueden auditar en tiempo real, sin intermediarios de confianza y su estado se verificar de forma publica. En esa charla presentaremos las técnicas actuales para lograr este objetivo y los desafíos pendientes, poniendo un énfasis especial sobre el balance entre privacidad y transparencia.

Citation preview

Page 1: No más Madoff: Satoshi al rescate

No más Madoff: Satoshi al rescate

Philippe Camacho

[email protected]

Bsides Chile 22 de octubre 2014 Santiago

Page 2: No más Madoff: Satoshi al rescate

El problema de la industria de la Auditoría

http://content.time.com/time/business/article/0,8599,1867092,00.html

Page 3: No más Madoff: Satoshi al rescate

Costo de la Auditoría

• Caro • Lento • Manual • Poco fiable • Seguridad

– Relativamente fácil cocinar la data – Dependencia del intermediario de confianza – Conflicto de intereses – Auditar a los auditores se ve poco practico

(loop infinito)

Page 4: No más Madoff: Satoshi al rescate

Bitcoin

• Sistema monetario descentralizado • 2009 • Autor desconocido (Satoshi Nakamoto) • Capitalización: 5 billiones de USD • 21000000 de BTC (no más) • Código abierto • Red P2P • Firmas digitales, funciones de hash • TODAS LAS TRANSACCIONES SON PÚBLICAS

– Se publican en la cadena de bloques

• Costo de la confianza se reduce drásticamente

Page 5: No más Madoff: Satoshi al rescate

Bloque

Minería

en 1 slide

Genesis (Coinbase)

Cadena de bloques

Page 6: No más Madoff: Satoshi al rescate

El primer bloque

https://en.bitcoin.it/wiki/Genesis_block

Genesis (Coinbase)

Page 7: No más Madoff: Satoshi al rescate

Bitcoin es más que dinero

• http://proofofexistence.com

• https://blocksign.com/

• Matrimonio en la cadena de bloques

http://bit.ly/1n8za7q

Page 8: No más Madoff: Satoshi al rescate

Nunca más (MtGOX)

http://www.technologyreview.com/view/526161/the-troubling-holes-in-mtgoxs-account-of-how-it-lost-600-million-in-bitcoins/

Mark Karpeles (ex GG de MtGOX)

Page 9: No más Madoff: Satoshi al rescate

• "I think that as a community we should start demanding these services continually prove that they are not fractional reserve. We cannot effectively eliminate the need for trust in these sorts of services, but we can certainly confine the exposure and eliminate a lot of this drama. With Bitcoin it's technically possible to prove an entity controls enough coin to cover its obligations— and even to do so in ways that don't leak other business information, and so we should. But this isn't something specific about MTGox, it's something we should demand from all services holding large amounts of third party Bitcoins. I wouldn't even suggest MTGox should do it first, rather— it sounds like a great move for their competition to differentiate themselves.“

Gregory Maxwell (Core Bitcoin developer)

http://www.reddit.com/r/Bitcoin/comments/1yj5b5/unverified_pastebin_gmaxwell_irc_log_mtgox_was/cfkze3p?context=1

Page 10: No más Madoff: Satoshi al rescate

Proving your Bitcoin Reserves

https://iwilcox.me.uk/2014/proving-bitcoin-reserves

Page 11: No más Madoff: Satoshi al rescate

Ya se esta usando

http://blog.coinfloor.co.uk/post/82980052547/coinfloors-first-provable-solvency-report

Page 12: No más Madoff: Satoshi al rescate

Auditoría 2.0

Genesis (Coinbase)

Lo que debo:

𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…

1 2

1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +

3

Lo que tengo: 𝒀

𝒙𝒋

Page 13: No más Madoff: Satoshi al rescate

Auditoría 2.0

Genesis (Coinbase)

Lo que debo:

𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…

1 2

1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +

3

Lo que tengo: 𝒀

𝒙𝒋

Page 14: No más Madoff: Satoshi al rescate

Canal de difusión Seguro (Bulletin Board)

• Propiedades – Todo el mundo ve exactamente

lo mismo – No se pueden borrar o adulterar

mensajes – El orden / la fecha de los

mensajes no se puede cambiar

• Ejemplos – Diario (manual, centralizado) – Twitter (centralizado) – Cadena de bloques

(descentralizado)

• Aplicaciones – Votación electrónica – Auditoria

Page 15: No más Madoff: Satoshi al rescate

¿Porque es importante el canal de difusión seguro?

Lo que debo:

𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…

Lo que debo:

𝒙𝟒, 𝒙𝟓, 𝒙𝟔,… Se puede hacer declaraciones parciales

𝒙𝟐 𝒙𝟔

Page 16: No más Madoff: Satoshi al rescate

Auditoría 2.0

Genesis (Coinbase)

Lo que debo:

𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…

1 2

1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +

3

Lo que tengo: 𝒀

𝒙𝒋

Page 17: No más Madoff: Satoshi al rescate

Demostrar lo que tienes

Tengo 10 BTC Demuéstramelo

Mi dirección BTC es 1K89dnJfjdghgSJHg Clave publica asociada: 32sfd73sjhf798273

Firma este mensaje (aleatorio) con tu clave privada kljdkusyu878s7BF7iedy7f67dvf7sd6vu

Mensaje firmado

1. Verificar firma 2. Verificar que dirección BTC corresponde a clave publica 3. Chequear en la cadena de bloque el saldo en la dirección BTC

1

2

3 4

Page 18: No más Madoff: Satoshi al rescate

Auditoría 2.0

Genesis (Coinbase)

Lo que debo:

𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…

1 2

1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +

3

Lo que tengo: 𝒀

𝒙𝒋

Page 19: No más Madoff: Satoshi al rescate

Demostrar lo que debes (solución trivial)

Usuario Monto

Juan Perez 20 BTC

Pedro Gonzales 1.5 BTC

Susana Fuentes 6 BTC

…. …

…. …

Eficiencia Privacidad usuario

Page 20: No más Madoff: Satoshi al rescate

Funciones de Hash Resistente a Colisiones

V

Si 𝑋 ≠ 𝑋′ y 𝐻 𝑋 = 𝐻 𝑋’

entonces el adversario encontró una colisión.

openssl.tar.gz

Archivo’

𝑋 =

𝑋′ =

Page 21: No más Madoff: Satoshi al rescate

Árboles de Merkle [M87]

Z1=H(Y1||Y2)

Y1=H(x4||x1)

x4 x1 x5 x6 x2 x8 x7 x3

Y2=H(x5||x6) Y3=H(x2||x8) Y4=H(x7||x3)

Z2=H(Y3||Y4)

P=H(Z1||Z2)

Raíz:

representa el

conjunto

X = *𝑥1, … , 𝑥8+

Page 22: No más Madoff: Satoshi al rescate

Árboles de Merkle [M87]

Z1=H(Y1||Y2)

Y1=H(x4||x1)

x4 x1 x5 x6 x2 x8 x7 x3

Y2=H(x5||x6) Y3=H(x2||x8) Y4=H(x7||x3)

Z2=H(Y3||Y4)

P=H(Z1||Z2)

Raíz:

representa el

conjunto

X = *𝑥1, … , 𝑥8+

Certificado 𝑥6 ∈ 𝑋

Page 23: No más Madoff: Satoshi al rescate

Demostrar lo que debes (Árbol de Todd-Maxwell)

Balance de un usuario

Raíz del árbol: Lo único que se publica en el canal de difusión

seguro

Page 24: No más Madoff: Satoshi al rescate

Privacidad v/s Transparencia

• “This is asking a lot of an exchange, and I don't think information is worth the price you're paying in security and privacy. Your interests would be better served by a private auditor's report.”

Jesse Powell (Gerente General de Kraken)

http://www.reddit.com/r/Bitcoin/comments/1yk4nv/please_ask_your_favorite_exchange_to_prove_that/cflqtn0

Page 25: No más Madoff: Satoshi al rescate

Auditoría 2.0

Genesis (Coinbase)

Lo que debo:

𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…

1 2

1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +

3

Lo que tengo: 𝒀

¿Cómo preservar la privacidad del usuario y del negocio (*)?

(*) http://www.slideshare.net/philippecamacho/protocols-for-provable-solvency-38501620

𝒙𝒋

Page 26: No más Madoff: Satoshi al rescate

Cajas de compromiso (Commitments)

¿Cómo sortear el auto de forma

“segura” solamente hablando por

teléfono?

Alicia (0) Roberto (1) Quien gana

0 0 0 (Alicia)

0 1 1 (Roberto)

1 0 1 (Roberto)

1 1 0 (Alicia)

Page 27: No más Madoff: Satoshi al rescate

Cajas de compromiso (Commitments)

secreto

Commitment

secreto = +

Voy a tratar de abrir la caja a

otro valor

Voy a tratar de saber lo que hay

a dentro de la caja antes de tener la clave

1

2

3

secreto

secreto

El secreto es revelado.

Se verifica si el secreto no cambio.

Page 28: No más Madoff: Satoshi al rescate

Cajas de compromiso (Ejemplo)

• 𝑪𝒐𝒎𝒎 𝒔, 𝒓 : 𝑆𝐻𝐴256(𝑠 || 𝑟) = 𝐶𝑠,𝑟

• 𝑽𝒆𝒓𝒊𝒇𝒚(𝑪𝒔,𝒓, 𝒔, 𝒓): 𝑆𝐻𝐴256(𝑠 || 𝑟) == 𝐶𝑠,𝑟

𝑠

𝑠 𝑠

𝑠

Page 29: No más Madoff: Satoshi al rescate

Cajas de compromiso (Ejemplo)

• ¿Porque la caja no revela ninguna información? – 𝑆𝐻𝐴256 es unidireccional

• 𝑦 = 𝑆𝐻𝐴256(𝑥)

• Dada 𝑦 no se puede “saber nada” respecto a 𝑥

• ¿Porque es imposible cambiar de opinión al abrir la caja? – Supongamos que se puede

• 𝑆𝐻𝐴256(𝑠||𝑟) == 𝑆𝐻𝐴256(𝑠’||𝑟’)

• ¡Esto es una colisión!

𝑥 𝑦

𝑠||𝑟

𝑠′||𝑟′ 𝑦

Page 30: No más Madoff: Satoshi al rescate

Pruebas de nula divulgación (Zero-Knowledge Proofs)

• Demostrar algo sobre el secreto sin abrir la caja

– Ej: mostrar que la caja contiene un 0 o 1

0 𝜋 ,

Quiero engañar a Alicia y convencerla de que la caja tiene un valor binario

cuando en verdad contiene 15

Quiero saber exactamente lo que esta a dentro de la caja más alla de que es un

valor binario

= Sí / No + 0 𝜋

1

2

Page 31: No más Madoff: Satoshi al rescate

Pruebas de nula divulgación (Zero-Knowledge Proofs)

• Con distintas cajas

– Ej: mostrar que dos cajas contienen el mismo valor

37 𝜋 ,

Quiero engañar a Alicia y convencerla de que las dos cajas contienen el

mismo valor aunque no es así. Quiero saber lo que esta en las cajas.

= Sí / No + 𝜋

1

2

37 ,

37 37 +

Page 32: No más Madoff: Satoshi al rescate

Logaritmo Discreto

𝐴 = 𝑔𝑟

http://en.wikipedia.org/wiki/Elliptic_curve

Difícil conseguir solamente

conociendo A.

𝑟 es el logaritmo discreto

Page 33: No más Madoff: Satoshi al rescate

Cajas de compromiso de Pedersen

• 𝑺𝒆𝒕𝒖𝒑(): 𝑔, ℎ al azar tal que 𝛼: ℎ = 𝑔𝛼 no es conocido

• 𝑪𝒐𝒎𝒎 𝒔, 𝒓 : 𝑔𝑠ℎ𝑟 = 𝐶𝑠,𝑟

• 𝑽𝒆𝒓𝒊𝒇𝒚 𝑪𝒔,𝒓, 𝒔, 𝒓 : 𝑔𝑠ℎ𝑟 = 𝐶𝑠,𝑟

Page 34: No más Madoff: Satoshi al rescate

Homomorfismo

• Poder “combinar” cajas sin abrirlas!

(𝑔𝑠1ℎ𝑟1) ∗ (𝑔𝑠2ℎ𝑟2) = (𝑔(𝑠1+𝑠2)ℎ(𝑟1+𝑟2))

15 20 = * 20 + 15=35

Operación algebraica entre cajas

(multiplicación dentro de un grupo)

Suma del contenido de las dos cajas

Page 35: No más Madoff: Satoshi al rescate

Mostrar que dos cajas contienen los mismos valores sin abrirlas

𝑔𝒙ℎ𝑟1

𝑔𝒙ℎ𝑟2

¿Cómo demostrar que el mismo x esta en las

dos cajas sin abrir?

¿Cómo demostrar que el mismo 𝒙 esta en las

dos cajas sin abrir?

𝑔𝒙ℎ𝑟1 / 𝑔𝟎ℎ𝑟1−𝑟2 =

𝑔𝒙ℎ𝑟2

Si 𝒙 esta en las dos cajas entonces podrás mostrar que conoces

𝒓𝟏 − 𝒓𝟐

Page 36: No más Madoff: Satoshi al rescate

Mostrar que dos cajas contienen los mismos valores sin abrirlas

• ¿Qué pasa si los valores son distintos? 𝑔𝑥ℎ𝑟1

𝑔𝑦ℎ𝑟2 = 𝑔𝑥−𝑦ℎ𝑟1−𝑟2 = ℎΔ

Entonces 𝑥 − 𝑦 + 𝛼 𝑟1 − 𝑟2 = 𝛼Δ

𝛼 =𝑥 − 𝑦

Δ + 𝑟2 − 𝑟1

Se encontró 𝛼 tal que ℎ = 𝑔𝛼

Esto es imposible (en caso que Dlog sea

un problema difícil)

Page 37: No más Madoff: Satoshi al rescate

Todd-Maxwell con Privacidad

Se reemplaza los balances por cajas de compromiso.

Los nodos intermedios se pueden calcular usando el

homomorfismo.

Page 38: No más Madoff: Satoshi al rescate

Todd-Maxwell con Privacidad

• Paso final: comparar las cajas usando pruebas de nula divulgación

A=1200 BTC B=1200 BTC

Lo que debes

Lo que tienes

Arból de Maxwell-

Todd

𝜋: A=B

Prueba de nula divulgación:

las dos cajas contienen los mismos valores

Page 39: No más Madoff: Satoshi al rescate

Observaciones

• No es tan claro como no revelar lo que se tiene – Información en cadena de bloque es publica

(se puede cruzar información)

– Habría que cambiar el protocolo bitcoin para que funcione de este lado también

• Igual simplifica mucho el proceso de auditoria

• Solamente se requiere una entidad de confianza que firme una caja de compromiso con el valor

Page 40: No más Madoff: Satoshi al rescate

En la práctica

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Monday February 24th, 2014 I was invited to the offices of Coinbase in San Francisco, as part of a voluntary cross-industry effort to provide independent review of the security of Coinbase customer funds. I am the Chief Security Officer at Blockchain, a bitcoin company that offers a web-wallet service that competes with some of Coinbase’s services. Prior to this day, I had not been to Coinbase’s offices, nor did I have any prior professional relationship with Coinbase. My visit was as an independent security expert with no financial control or interest in Coinbase. My goal during this visit was to validate the existence and security of customer funds. During my visit, I met with the CEO and other executives and was presented with information on the mechanisms Coinbase uses to secure customer funds from theft, including their cold storage system and operating process. I was shown an internal reporting tool used by Coinbase to verify total customer funds and the allocation of funds between the “hot wallet” and “cold storage” and funds in transit. Coinbase shared their process and technical details for cold storage, including their process to ensure funds cannot be retrieved from cold storage without the assembly of multiple keys controlled by different people. While Coinbase publicly states that up to 97% of customer funds are in cold storage, at the time of my visit, their internal reporting tool showed that the cold storage system contained 98.8% of customer funds. To confirm for myself that these funds were in the cold storage system, I looked up the balance each of the cold storage addresses against the public blockchain, using an external site. The balance recorded on the public blockchain ledger for each of the addresses matched the balance recorded in Coinbase’s accounting system. Although the accounting system and the blockchain balances appeared to match, I wanted to confirm that these addresses were actually controlled by Coinbase, thereby ensuring they controlled the funds. I randomly selected one of the cold storage addresses and requested that a transaction be signed to prove ownership of the address. This was not pre-arranged nor was there any warning that I would make such a request. Coinbase complied with my request and produced a transaction that proved they owned the cold storage address of my choosing. Based on what I observed during my visit and my experience in security, it appears that the Coinbase system contains the expected funds and their cold storage system and process appear to be operating according to security best practices. Andreas M. Antonopoulos -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (Darwin) Comment: GPGTools - http://gpgtools.org iQIcBAEBAgAGBQJTDXNBAAoJEKFoxa4oeN5PRrgP/RN780GCopbTlzIxSU9nBeg5 Qxl/vCKRq+2uHzhyzc+bdj+RlcyvkdKHSD3Ms2/44xMve9kwifj3fkP030DceZdQ IcrDBE5PRXkTILDnV8xwizXeT5a0ojHOKwsdK6IHl1my9yEOnCpQQZomy7joOAOa Sa9xbd9LgmW93izh7EWtfYbjXEvjkVp8C96xwklclAXHDkFQiu4tma5Jil9HJA2+ vAZ9IC4BWmglXDficCRrpV5tRSAU7OhEkk6SIJD6STXKy6LzmsvkpXdTze08761z noWdiGTWQlHZwAzHimrP90+PKMYTPCBklg/I4Tv2g3LD/3Al85ozgiz5neLHINmO zVPGEii31/QtbHSbd0lXBFuCrxzA6x5HCwSnGN9vp0QSSVYNmA8mJoFirCDV9oNA h89GF4sx2mSxxpcC4CA/4Q6QiV3I0MJhltUDKESXTyB71vT5gg/QydP8ZoifiGwE e/FW2GhXI+I/L+L1XnER9zITfZ0DDTRueLBmcfL+ySiFLyGxGZdrr7o3+UVUor0z MuPiOWnmXYsDUjkecwkYwsQoIWkzYs4OrTemBhLE7haXJQVFi+ATaODJQZoOpvdV 9aYM0PR9xGk+E2jD7vfhYw7RbjhwjSq5oiZxPG3jQvEJVb51aYw1tJFdFkqLj8ph HPuuCmxBvLKEMn5VY3YJ =63WZ -----END PGP SIGNATURE-----

http://antonopoulos.com/2014/02/25/coinbase-review/

Reemplazar este mensaje por una caja de

compromiso con la cantidad de bitcoins que

tiene la empresa auditada

Andreas M. Antonopoulos

Page 41: No más Madoff: Satoshi al rescate

Desafíos pendientes

• Eficiencia

• Estándares

• Demostrar lo que se tiene sin revelarlo o recurrir a un tercero de confianza

• Problema de “arrendar” direcciones bitcoin

• Incentivar usuarios a verificar su cuenta

• Otras reglas de negocio

• …

Page 42: No más Madoff: Satoshi al rescate

Auditoria 2.0 (el sueño)

• Automatizada

• Descentralizada

• Los fraudes se detectan y se castigan inmediatamente sin pasar por ningún intermediario

Page 43: No más Madoff: Satoshi al rescate

Bitcoin 2.0 (Ethereum.org)

Ethereum.org • Plataforma para crear aplicaciones distribuidas en la nube • “Smart contracts”

• Reciben dinero (ethers) y entradas • Mantienen estado • Envian salidas y dinero

• Ejemplos: • ¡Seguros, Fondos de pensión = un simple programa!

Page 44: No más Madoff: Satoshi al rescate

¡Gracias!

https://blockchain.info/tx/e606851c9d25146242a6b8b04f2725d46f12750f839bed00cf7471f6238a6b05?show_adv=true

http://proofofexistence.com/