Upload
philippe-camacho-phd
View
127
Download
2
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
No más Madoff: Satoshi al rescate
Philippe Camacho
Bsides Chile 22 de octubre 2014 Santiago
El problema de la industria de la Auditoría
http://content.time.com/time/business/article/0,8599,1867092,00.html
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)
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
Bloque
Minería
en 1 slide
Genesis (Coinbase)
Cadena de bloques
El primer bloque
https://en.bitcoin.it/wiki/Genesis_block
Genesis (Coinbase)
Bitcoin es más que dinero
• http://proofofexistence.com
• https://blocksign.com/
• Matrimonio en la cadena de bloques
http://bit.ly/1n8za7q
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)
• "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
Proving your Bitcoin Reserves
https://iwilcox.me.uk/2014/proving-bitcoin-reserves
Ya se esta usando
http://blog.coinfloor.co.uk/post/82980052547/coinfloors-first-provable-solvency-report
Auditoría 2.0
Genesis (Coinbase)
Lo que debo:
𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…
1 2
1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +
3
Lo que tengo: 𝒀
𝒙𝒋
Auditoría 2.0
Genesis (Coinbase)
Lo que debo:
𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…
1 2
1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +
3
Lo que tengo: 𝒀
𝒙𝒋
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
¿Porque es importante el canal de difusión seguro?
Lo que debo:
𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…
Lo que debo:
𝒙𝟒, 𝒙𝟓, 𝒙𝟔,… Se puede hacer declaraciones parciales
𝒙𝟐 𝒙𝟔
Auditoría 2.0
Genesis (Coinbase)
Lo que debo:
𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…
1 2
1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +
3
Lo que tengo: 𝒀
𝒙𝒋
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
Auditoría 2.0
Genesis (Coinbase)
Lo que debo:
𝒙𝟏, 𝒙𝟐, 𝒙𝟑,…
1 2
1. Verificar 𝑥𝑖 = 𝑌 2. Verificar que 𝒙𝒋 ∈ 𝑋 = *𝑥1, 𝑥2, 𝑥3, … +
3
Lo que tengo: 𝒀
𝒙𝒋
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
Funciones de Hash Resistente a Colisiones
V
Si 𝑋 ≠ 𝑋′ y 𝐻 𝑋 = 𝐻 𝑋’
entonces el adversario encontró una colisión.
openssl.tar.gz
Archivo’
𝑋 =
𝑋′ =
Á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+
Á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 ∈ 𝑋
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
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
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
𝒙𝒋
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)
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.
Cajas de compromiso (Ejemplo)
• 𝑪𝒐𝒎𝒎 𝒔, 𝒓 : 𝑆𝐻𝐴256(𝑠 || 𝑟) = 𝐶𝑠,𝑟
• 𝑽𝒆𝒓𝒊𝒇𝒚(𝑪𝒔,𝒓, 𝒔, 𝒓): 𝑆𝐻𝐴256(𝑠 || 𝑟) == 𝐶𝑠,𝑟
𝑠
𝑠 𝑠
𝑠
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!
𝑥 𝑦
𝑠||𝑟
𝑠′||𝑟′ 𝑦
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
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 +
Logaritmo Discreto
𝐴 = 𝑔𝑟
http://en.wikipedia.org/wiki/Elliptic_curve
Difícil conseguir solamente
conociendo A.
𝑟 es el logaritmo discreto
Cajas de compromiso de Pedersen
• 𝑺𝒆𝒕𝒖𝒑(): 𝑔, ℎ al azar tal que 𝛼: ℎ = 𝑔𝛼 no es conocido
• 𝑪𝒐𝒎𝒎 𝒔, 𝒓 : 𝑔𝑠ℎ𝑟 = 𝐶𝑠,𝑟
• 𝑽𝒆𝒓𝒊𝒇𝒚 𝑪𝒔,𝒓, 𝒔, 𝒓 : 𝑔𝑠ℎ𝑟 = 𝐶𝑠,𝑟
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
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
𝒓𝟏 − 𝒓𝟐
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)
Todd-Maxwell con Privacidad
Se reemplaza los balances por cajas de compromiso.
Los nodos intermedios se pueden calcular usando el
homomorfismo.
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
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
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
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
• …
Auditoria 2.0 (el sueño)
• Automatizada
• Descentralizada
• Los fraudes se detectan y se castigan inmediatamente sin pasar por ningún intermediario
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!
¡Gracias!
https://blockchain.info/tx/e606851c9d25146242a6b8b04f2725d46f12750f839bed00cf7471f6238a6b05?show_adv=true
http://proofofexistence.com/