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.
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
No más Madoff: Satoshi al rescate
1. No más Madoff: Satoshi al rescate
Philippe Camacho
philippe.camacho@synaptic.cl
Bsides Chile
22 de octubre 2014
Santiago
2. El problema de la industria de la Auditoría
http://content.time.com/time/business/article/0,8599,1867092,00.html
3. 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)
4. 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
6. El primer bloque
https://en.bitcoin.it/wiki/Genesis_block Genesis (Coinbase)
7. Bitcoin es más que dinero
•http://proofofexistence.com
•https://blocksign.com/
•Matrimonio en la cadena de bloques
http://bit.ly/1n8za7q
8. 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)
9. •"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
10. Proving your Bitcoin Reserves
https://iwilcox.me.uk/2014/proving-bitcoin-reserves
11. Ya se esta usando
http://blog.coinfloor.co.uk/post/82980052547/coinfloors-first-provable-solvency-report
12. Auditoría 2.0
Genesis
(Coinbase)
Lo que debo:
풙ퟏ, 풙ퟐ, 풙ퟑ,…
1
2
1. Verificar 푥푖 = 푌
2. Verificar que 풙풋 ∈ 푋 = *푥1, 푥2, 푥3, … +
3
Lo que tengo:
풀
풙풋
13. Auditoría 2.0
Genesis
(Coinbase)
Lo que debo:
풙ퟏ, 풙ퟐ, 풙ퟑ,…
1
2
1. Verificar 푥푖 = 푌
2. Verificar que 풙풋 ∈ 푋 = *푥1, 푥2, 푥3, … +
3
Lo que tengo:
풀
풙풋
14. 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
15. ¿Porque es importante el canal de difusión seguro?
Lo que debo:
풙ퟏ, 풙ퟐ, 풙ퟑ,…
Lo que debo:
풙ퟒ, 풙ퟓ, 풙ퟔ Se puede hacer ,…
declaraciones parciales
풙ퟐ 풙ퟔ
16. Auditoría 2.0
Genesis
(Coinbase)
Lo que debo:
풙ퟏ, 풙ퟐ, 풙ퟑ,…
1
2
1. Verificar 푥푖 = 푌
2. Verificar que 풙풋 ∈ 푋 = *푥1, 푥2, 푥3, … +
3
Lo que tengo:
풀
풙풋
17. 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
18. Auditoría 2.0
Genesis
(Coinbase)
Lo que debo:
풙ퟏ, 풙ퟐ, 풙ퟑ,…
1
2
1. Verificar 푥푖 = 푌
2. Verificar que 풙풋 ∈ 푋 = *푥1, 푥2, 푥3, … +
3
Lo que tengo:
풀
풙풋
19. 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
20. Funciones de Hash Resistente a Colisiones
V
Si 푋≠푋′ y 퐻푋= 퐻푋’ entonces el adversario encontró una colisión.
openssl.tar.gz
Archivo’
푋=
푋′=
21. Á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+
22. Á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∈ 푋
23. 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
24. 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
25. 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
풙풋
26. 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)
27. 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.
29. 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!
푥
푦
푠||푟
푠′||푟′
푦
30. 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
0 + = Sí / No
휋
1
2
31. 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
32. Logaritmo Discreto
퐴 = 푔푟
http://en.wikipedia.org/wiki/Elliptic_curve Difícil conseguir solamente conociendo A. 푟 es el logaritmo discreto
33. Cajas de compromiso de Pedersen
•푺풆풕풖풑(): 푔,ℎ al azar tal que 훼:ℎ=푔훼 no es conocido
•푪풐풎풎풔,풓: 푔푠ℎ푟 = 퐶푠,푟
•푽풆풓풊풇풚푪풔,풓,풔,풓:푔푠ℎ푟 = 퐶푠,푟
34. 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
35. 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? 풙 푔풙ℎ푟1 / 푔ퟎℎ푟1−푟2
= 푔풙ℎ푟2
Si 풙 esta en las dos cajas entonces podrás mostrar que conoces 풓ퟏ−풓ퟐ
36. 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)
37. Todd-Maxwell con Privacidad
Se reemplaza los balances por cajas de compromiso.
Los nodos intermedios se pueden calcular usando el homomorfismo.
38. 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
39. 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
40. 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
41. 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
•…
42. Auditoria 2.0 (el sueño)
•Automatizada
•Descentralizada
•Los fraudes se detectan y se castigan inmediatamente sin pasar por ningún intermediario
43. 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!