Leo Wandersleb trabaja con carteras de criptomonedas desde hace varios años, como desarrollador conoce los puntos débiles que toda aplicación puede llegar a tener, y más si requiere interactuar con otras aplicaciones on line. Las carteras de criptomonedas cumplen todos esos rerquisitos, con el añadido de administrar criptoactivos, lo que las hace particularmente atractivas a ladrones y hackers.
Leo nos hizo un recorrido por las vulnerabilidades más obvias en la seguridad de las wallets en general, y de algunas (muy conocidas) en específico. Su cruzada para que la compilación del código de cualquier llavero pueda ser verificada por terceros y asegurada contra ataques y errores necesita la participación de todos los usuarios y para ello es necesario sensibilizar.
Para tener más episodios o acceso temprano, antes de la publicación regular, suscríbete en Apple Podcast, Anchor, Breaker, Google Podcasts, Overcast, Pocket Casts, RadioPublic, Spotify, Stitcher, ivoox o RSS.
Contenido
- ¿Qué hace segura una wallet?
- El papel de GitHub en la seguridad.
- Las ventajas de Android en seguridad.
- Un tour por el home de Wallet Scrutiny.
- Sobre el manejo de las 12 palabras.
- Billeteras que no son de BTC.
- Apps que no son billeteras.
- Trezor y Ledger y sus prioridades en seguridad.
- Los modelos de negocio de las wallets.
- La metodología de Wallet Scrutiny.
- Un llamado a la acción: escríbanle a los desarrolladores y pidan que el código pueda ser verificado.
Notas del episodio
- El Twitter de Leo.
- El ataque 5DW.
- Sobre las muchas noticias sobre las vulnerabilidades de las carteras.
- GitHub, la página que almacena los repositorios que permiten verificar la seguridad de las carteras.
- La web de Wallet Scrutiny.
- Donde dejar donaciones.
- El Twitter de Wallet Scrutiny.
- El Twitter de Samourai.
- El Twitter de José.
- El Twitter de Elena.
Un adelanto de lo que encontrarás en este episodio:
Elena: Leo ¿qué hace una cartera segura?
Leo: Bueno, si quiere ser su propio banco, que es uno de los logros en Bitcoin, uno tiene que mantener seguras sus claves privadas. Y para eso es super importante que no se difundan esas claves a ningún servidor, a ninguna otra app dentro de una computadora, por ejemplo que ocurra un swap, y para poder asegurar eso hay un montón de cosas que ver. Una aplicación normalmente tiene cientos de miles de líneas de códigos que están programados por muchos desarrolladores, y todos ellos podrían tratar de hacer que la aplicación sea insegura, hacer que la aplicación difunda las claves a un servidor de un hacker, etc. Entonces, para la seguridad, hay como una superficie de ataque enorme que hay que asegurar, y para tenerlo seguro, hay que verificar todos esos posibles vectores de ataque.
Elena: Bueno, se me acaba de disparar toda la paranoia del mundo. ¿Cómo así? Yo no sé absolutamente nada de programación, yo confío en las carteras no custodial que el mercado me dice o que los amigos, o los panas que si saben de código me dicen “mira, esta si funciona, esta está bien” y agarro mis llaves privadas y las guardo en un papel y no se las enseño ni a mis hijos. Hasta ahí llega mi seguridad. Pero, si me pides que revise el código, ahí me perdiste. ¿qué hago?
Leo: Ya. Claramente nadie puede revisar todo el código de una billetera. Entonces, si yo debiera revisar todo el código de una billetera, ni la billetera que me está pagando desde hace cuatro años para hacer justo eso la conozco por completo. Entonces, yo soy parte del equipo de Mycelium desde hace cuatro años, y desde hace tres años y algo soy el encargado de publicar las nuevas versiones. Entonces, yo apruebo el código fuente, yo apruebo el compilar y me sale una aplicación que puedo subir al playstore y allí se publica. Y como yo soy el que compila la aplicación, gane la responsabilidad de revisar qué es lo que estoy compilando, entonces yo reviso todos los cambios que entran a las nuevas versiones.
Esos cambios son miles de líneas de código, y como no soy un robot no puedo estar 100% seguro de que ninguno de mis compañeros esté haciendo algo malvado. Tal vez alguno de ellos hace un cambio que después robe la plata de todos los usuarios de la billetera. Lo que quiero explicar es cómo sería imposible para una sola persona revisar todo el código fuente de una billetera, pero yo creo que sí podría ser posible para un experto de seguridad en criptografía pueda revisar el aspecto de criptografía de una billetera, un experto de seguridad de redes puede investigar este aspecto de ella, y de esta manera se pueden tener muchos expertos que trabajen juntos para analizar muchas billeteras. Eso es lo que puede hacer segura a una billetera. Y para eso la billetera debe ser transparente con lo que hace.
Elena: Eso quiere decir que los códigos tienen que ser visibles, tiene que ser de código abierto.
Leo: Aja. Código abierto es un término que muchos consideran suficiente, pero otro problema es que si el proveedor de la billetera comparte su código abierto, y si yo compilo este código, entonces yo obtengo una aplicación que se ve igual que la aplicación del proveedor, pero que no es exactamente la misma aplicación. Tal vez la versión que compila esa persona va a mandar todas las claves de todos los usuarios al servidor cuando pase el primero de mayo. Y mi versión no lo hace. Y como la mayoría de las personas no compila su propia versión de la aplicación, tal vez por compilarlo yo estoy en el lado seguro, pero el que use la versión del playstore no está seguro porque está usando la modificación del código abierto.
Elena: ¿Entonces cómo hace una persona así como yo, no tecnológica, para estar mínimamente segura? ¿Qué hago?
Leo: Una persona que no sabe revisar el código, que eso es el 99.9% de las personas
Elena: Si, gracias. Manejar código es un superpoder. Yo lo digo y lo vuelvo a decir. Eso para mí es un superpoder.
Leo: Es algo que nadie puede hacer con 100% de precisión en seguridad, y siempre es una colaboración entre muchos. Entonces, decir que cada uno revisa su propio código es completamente estúpido, el pensar que eso podría funcionar. Pero lo que sí puede funcionar es que uno verifique que el código fuente tiene que ver con la aplicación que está en la playstore. Entonces, si yo pudiera descompilar la aplicación que está en la playstore, y me saliera el mismo código fuente, tal como está en el repositorio público que está en GitHub, yo podría saber que esa aplicación en Google Play de verdad está hecha a base del código fuente que está público. Pero eso no se puede. La cosa que sí se puede hacer es reproducir la compilación.
Entonces, si yo tomo el código fuente en otro computador del proveedor, y en este otro computador yo le doy a compilar y me sale una aplicación que es igual, bit por bit, que lo que puedo bajar de Google Play, entonces yo puedo saber que lo que está en Google Play está a base del código fuente que está público en GitHub. Y si yo puedo entonces establecer este vínculo, esto tiene un valor para todos los usuarios de esta versión de Google Play, que un investigador de seguridad analiza el código fuente que se encuentra en GitHub.
Elena: Ok. Entonces tenemos un paso importante. Si compilo el código que está en la aplicación de la tienda
José: Playstore, por ejemplo
Elena: Exacto. Tiene que ser igual a la que está en GitHub. Eso, entonces, ya podríamos decir que es un paso de seguridad. ¿Qué otra cosa?
Leo: Ese es el único paso en el que se enfoca Wallet Scrutiny. Porque hay muchas billeteras que son de código abierto, pero ellos no saben cómo reproducir la compilación de su propia aplicación.
Para tener más episodios o acceso temprano, antes de la publicación regular, suscríbete en Apple Podcast, Anchor, Breaker, Google Podcasts, Overcast, Pocket Casts, RadioPublic, Spotify, Stitcher, ivoox o RSS.