domingo, 9 de diciembre de 2018

Los mineros de marchan de Bitcoin ¿Eso es bueno o malo?


Que las criptomonedas no están en su mejor momento es un titular que llena las webs de internet.

Todo el mundo especula si es el fin de Bitcoin, si su precio cae en picado y sin frenos hasta desaparecer en la memoria de los “Archives” de Internet. Para colmo se esta acabando el año por lo que decenas de “sabios” y “resabidos” se lanzan a dar sus visiones de lo que pasará durante 2019 con las criptomonedas como de Aramis Fuster se tratara (o al menos suelen acertar con igual proporción).

Estamos ante un momento de convulsión, eso es indiscutible y están sucediendo eventos que en pasadas crisis de Bitcoin no sucedieron, como es el apagón que están haciendo muchos mineros.
Como me gustó mucho eso de hacer vídeos a partir de la experiencia de mi primer MOOC sobre Blockchain (si, ya estoy trabajando en el segundo) he cambiado la filosofía de escribir posts por probar en el mundo de YouTube.

Os traigo la inauguración de mi canal de YouTube con un primer vídeo analizando la repercusión de que los mineros abandonen Bitcoin en un alarde de técnica en edición de vídeos (si, esto es un chiste os podéis reír y más que lo haréis cuando veáis esos efectos sonoros del vídeo).
Espero os guste tanto como lo que me divierto yo creándolo, disfrutadlo.


miércoles, 18 de abril de 2018

Curso de Introducción a Blockchain


Por razones que son dignas de un post aparte (atentos a mi LinkedIn porque seguro aparece ahí antes) he podido gozar de unos días de maravillosas vacaciones las cuales he aprovechado para poder hacer proyectos que me ilusionaban mucho.

Hoy os quiero presentar uno de ellos finalizado y aprobado, ya esta disponible mis primer curso de

Introducción a Blockchain



Curso que esta enfocado a todo tipo de públicos:
  • Empresas: Tanto para adoptar la tecnología en sus procesos como para poder desarrollar proyectos propios, es fundamental entender las partes que la conforman y como encajan entre ellas.
  • Inversores: Las criptomonedas son un activo de muy alto riesgo pero también de altas ganancias, es por ello que atrae a un gran numero de inversores por todo el mundo. Pero sin entender la tecnología que soporta dichas divisas, estos inversores irán ciegos. Pudiendo cometer grandes errores al apostar por nuevas monedas que tecnológicamente no aportan nada. Sin este curso no serán capaces de detectarlas.
  • Estudiantes e investigadores: Los desarrolladores de Smart Contract son los más buscados y mejor pagados del momento. No se puede investigar ni desarrollar sin comprender las bases.
Si entráis en el curso podéis ver el índice del mismo completo y un video de promoción explicando todo lo que se verá en el mismo.

Me ha costado mucho trabajo e ilusión hacerlo, espero que os guste.

lunes, 16 de abril de 2018

Cambridge Analytica, Big Data y las leyes que nos “protegen”


Si estás leyendo este blog, sin duda estarás enterad@ del mediático vodevil de Mark Zuckerberg en el  senado estadounidense con la filtración de datos a Cambridge Analytics. El mismo senado que se vio favorecido precisamente por esta compañía de cara a las elecciones de Trump. La cuestión que quiero plantear aquí es hasta dónde estamos protegidos legalmente de cara a estas filtraciones, pero antes ¿Quiénes son y de qué son capaces estos Cambridge Analytica?

Nos dice la Wikipedia que son una compañía que se dedica a explotar masivamente datos, a priori inofensivos, para obtener unas conclusiones de tipo electoral que, a priori de nuevo, no son tan inofensivas. Hoy (aunque cada vez más ayer) nos encontramos en la explosión del Big Data. Un mundo que rompe con el paradigma creado por el Business Intelligence como ciencia informativa que nos arroja luz sobre, no sólo lo que está pasando en el momento, sino sobre el por qué está pasando y hacia dónde evoluciona.

Resultado de imagen de Cambridge Analytica
Nadie había pensado al registrarse en Facebook que Cambrige Analytics, con entre 100 y 250 likes puede predecir la orientación sexual, el origen étnico, opiniones religiosas y políticas, el nivel de inteligencia y de felicidad, si consume drogas, o si los padres están separados. Con tan solo 150 likes, los algoritmos pueden predecir el resultado de un test de personalidad mejor que tu pareja. Y con 250 likes, mejor que tú mismo. Prácticamente casi todos los datos que la LOPD considera de nivel alto.


Otra de las consecuencias del Big Data que han aprendido a la fuerza los científicos de datos es que no se puede esperar de antemano un resultado de los análisis, incluso cuando estamos analizando cuestiones tan peregrinas como las causas de éxito o fracaso de una campaña de marketing marketing.

Me viene a la cabeza un excompañero de clase que trabaja en una entidad que gestiona muchísimos fondos de inversión y descubrió que, por casualidad o no, que uno de los factores de éxito de los fondos era que su nombre empezase por la letra B. Obviamente no era el único factor, pero eso no lo hace menos sorprendente e inesperado. 

¿Y dónde entra aquí el impacto a la legislación?

Por todo aquel que esté cerca del mundo de la seguridad de la información es bien sabido que los organismos legisladores van siempre varios pasos por detrás de lo que la tecnología nos ofrece. Nada nuevo. Tanto nuestra ya saliente LOPD como la inminente GDPR que entra en vigor en mayo orbitan sobre el principio de consentimiento en la recolección de los datos, y aquí la clave es la palabra recolección porque, como he dicho, no sabemos qué se va a obtener de ellos a posteriori.

Está claro que es insuficiente, porque en ningún momento nadie nos contó que con unas centenas de clicks nos iban a conocer mejor que nosotros mismos. La legislación debería enfocarse en recopilar consentimiento en la recolección y en el uso que se va a hacer de los mismos, matizando la finalidad de los análisis que se van a hacer sobre ellos. Esto no es fácil en absoluto, pero es que yo no quiero que sea fácil que Facebook, Cambridge Analytics o cualquiera desentrañe mi personalidad.

Concluyendo, ¿por dónde debería orientarse la legislación?
  • El momento en el que obtener consentimiento no debe ser el momento de la recolección de los datos (al menos no solamente), sino el momento de la utilización de los datos.
  • Los deberes de información (en sus numerosos aspectos introducidos por GDPR) y la necesidad de recabar el consentimiento debe referirse, no solo al hecho de que se recaben datos primarios, sino también a la información que se puede extraer de un análisis de éstos.
  • El consentimiento debería dejar de ser un cheque en blanco, ya que no sabemos el valor de la información que vamos a obtener. Debería ser gradual y limitado en el tiempo. Con límites dependiendo de los fines.
  • El derecho al olvido debe ser absoluto. Incluso el propio Zuckerberg reconoció no ser capaz de eliminar la información que Facebook tiene de él mismo ¿Cómo íbamos a hacerlo los demás, simples plebeyos?
  • Por último algo en lo que pecamos todos nosotros y no sólo el mundo de las leyes; debemos rebajar el nivel de sofisticación y tecnicismo del lenguaje para que cualquiera entienda qué se va a hacer con sus datos y en qué momento. Quizá así alguien se lea alguna vez los términos y condiciones de los servicios.
Con esto no se arregla todo. No vamos a poder evitar los escalofríos del gélido aliento del fantasma del Gran Hermano, pero es un primer paso. Queda muchísimo por hacer.

Artículo firmado por:
Koldo Urcullu (kourcul@protonmail.com)

Fuentes:
  1. Elena GIL, "Big Data, privacidad y protección de datos" AEPD, BOE, 2015
  2. Lutz FINGER. «Recommendation Engines: The Reason Why We Love Big data». Forbes Tech (2 de septiembre de 2014).
  3. Cynthia DWORK. «Differential Privacy». Microsoft Research
  4. Kenneth Neil CUKIER y Viktor MAYER-SCHÖENBERGER. «The Rise of Big data. How It’s Changing the Way We Think About the World». Foreign Affairs Vol. 92, n.o 13 (2013).


miércoles, 21 de febrero de 2018

Hacking de semillas en la criptomoneda IOTA - Parte 1



Resultado de imagen de iota securityAdentrándome más en las diferente criptomonedas el otro día estuve estudiando sobre la generación de sus semillas y sus direcciones público/privada. Toda esta curiosidad viene movida por la noticia de que han robado recientemente 4 millones de IOTA para empezar esta noticia me parece algo confusa ya que según la escala de cambio de IOTA:



1.000.000 de IOTA = 1 MIOTA que es la moneda con la que se especula en las casas de cambio es decir, si robaron 4 millones de IOTA ¿Se podría decir que robaron 4MIOTA, que al cambio ( Y siendo generosa redondeando al alza ya que los 2 euros hace tiempo que la criptomoneda no los ve) robaron unos 8 euros? No, seguramente no pero dejemos sarcasmos aparte (fueron 4 millones de dólares robados) y entendamos porqué pasó esto.

Las criptomonedas se basan en un par de claves pública y privada. Tu eres el dueño y señor de la privada. Nunca has de compartirla, y cuanto más rara y aleatoria sea, mejor.

A partir de esa clave privada se genera una pública, que es la que expones al mundo para poder hacer tu recepción y envío de la criptomoneda. Así trabaja Bitcoin y la mayoría de las criptomonedas pero IOTA… IOTA es diferente.

Para empezar la semilla consta de 81trytes, no os volváis locos eso lo único que significa es que la semilla privada en IOTA tiene que tener 81 caracteres y para ello los únicos caracteres que admite son:



Si, la semilla de IOTA está formada por el alfabeto en mayúsculas y los 9. Si hay algún matemático en la sala que nos calcule la barbaridad de semillas que se pueden producir con esa combinación de caracteres.

Entonces ¿porque robaron esos tokens? Sencillamente porque la gente usaba páginas web para que les generara dicha semilla de forma aleatoria. Alguna de esas webs tenía ganas de hacerse rica y almacenó las semillas que generaba, pasado un tiempo decidió entrar con cada una de esas semillas y transferirse lo que hubiera dentro de ellas.

Fue a partir de esa noticia cuando se levantaron varias voces sobre si es seguro o no que lo único que necesitas para acceder a tu cartera sea conocer la semilla (o en el mundo Bitcoin la clave privada) y ya que no me ha tocado la lotería estas navidades y además quería probar la API de IOTA para Python he escrito un programa para ver si alguien desafía a la estadística y logra encontrar una semilla de IOTA de forma aleatoria.

Os presento Lottery.
Vamos a ver rápidamente qué hace este programilla.

Tiene solo dos funciones, la primera se llama crea_seed y es donde, tal y como os he explicado, coge el conjunto de valores que aceptan las semillas de IOTA y genera aleatoriamente cadenas de 81 caracteres de longitud.

La segunda función le he puesto un bucle infinito (ahora es cuando los puritanos del código me llamarán de todo xD) el cual llama a generar la semilla y después usamos la función del API de IOTA api.get_account_data() para que se descargue toda la información de esa cuenta.

Aquí recordar que son semillas privadas por lo que accedes a toda la información. Muestra por pantalla todas las que ha desestimado como buenas ó tienen saldo 0.

Pero si eres la persona con más suerte del mundo y logras encontrar una semilla (que ya es complicadísimo) pero encima con balance superior a 0, te manda un correo para que sepas que te ha tocado la lotería.

Es una completa tontería de programa pero vale para dos cosas:
  • Deja de manifiesto lo seguro que es el sistema de semilla cuando realmente la guardas bien. Infinitamente más seguro que un login/password centralizados en un servidor.
  • Un pequeño ejemplo de cómo usar la API de Python para IOTA
Hasta aquí hemos entendido cómo funciona el sistema de semilla en IOTA, pero como os dije al principio es muy diferente al resto de criptomonedas.

En el próximo post vamos a ver cómo funcionan las direcciones en IOTA y otro pequeño programa para encontrar semillas de forma un poco más sencilla y dirigida. ¿Seguiremos creyendo que IOTA es seguro?

viernes, 9 de febrero de 2018

Ataques contra Blockchain: El 51%



La semana pasada facilité tres documentos con los que se puede entender muy bien qué es blockchain y como funciona. Esta semana quería hacer un compendio de ataques famosos, con los que nos aterran en todos los blogs por donde pasamos, sobre blockchain pero según he comenzado a escribir la cosa se ha alargado muchísimo así que he decidido romperlo en varios posts diferentes.

Me ha parecido que el del 51% debía ser el primero ya que no hay documento en la red donde no lo mencionen pero.. ¿realmente es algo a temer? O más bien es algo que se pone en todas partes porque es “fácil de entender”.

El ataque se resume en que si alguien tiene el 51% de los recursos, puede llegar a manipular los datos que se introducen en el bloque e introducir transferencias falsas produciendo de ese modo, robos. Afecta tanto en monedas basadas en Prueba de Trabajo (PoW) como en Prueba de Participación (PoS).

Vamos a entender esto con más detalle según cada una de las posibles pruebas.

Prueba de Trabajo (PoW)

La mayoría de las criptomonedas usan este tipo de pruebas para poder incluir dentro de su Blockchain un nuevo bloque, por lo que lo que le interesaría a un atacante dominar en su 51% es la cantidad de hardware haciendo físicamente minería. Es decir, necesita que el 51% de las máquinas que están haciendo minería en el mundo estén bajo su control. En esta web se puede ver, en tiempo real, que compañías, hubs o pools de minería controlan que %. Como podéis observar la que más (actualmente) es BTC.com con la friolera de un 24,3%. Esa ya es una cantidad brutal pero para que llegara al 51% tendría que crecer exponencialmente, ya que el resto de pools también lo hacen.
La probabilidad de que esto pase es casi imposible. A esta dificultad hay que añadir que, para que un bloque sea aceptado en la blockchain al menos 6 mineros han de aceptarlo por lo que añadid la dificultad que los 6 sean de ese 51%, con que uno solo dijera que ese bloque no le cuadra ya no valdría de nada.

En mi opinión personal es tan complicado que ambas condiciones se cumplan que el día que lo haga será porque ya nadie nos importará, Bitcoin estará muriendo quedando apenas mineros que los sustenten y por eso podrán manipularlo.


Prueba de Participación (PoS)

Esta prueba será implementada a finales de este año en Ethereum, van con retraso pero es uno de los objetivos de la criptomoneda para diferenciarse. Lo que dice es que, para evitar gastar tantos recursos naturales (buscando por fuerza bruta nonces) la red se sustenta en un parámetro de confianza que es la cantidad de dicha criptomoneda que tienes. Es decir, que si tienes en tu Wallet muchas monedas de Ethereum eres más confiable ya que serás el primer interesado en que dicha moneda funcione correctamente por lo que tus validaciones de bloques son mejor aceptadas que los que tienen menos monedas que tu. Siguiendo esa premisa el ataque del 51% sigue siendo posible ya que si dispones del 51% de las monedas que existan en esa divisa puede que seas el que valide muchas transferencias consecutivas y, por ello, incluso llegar a manipular transferencias.
Bien, para ver si este ataque tiene base como para preocuparnos pensemos en las dos criptomonedas por excelencia, primero en Bitcoin. Tiene 21.000.000 de monedas generadas por lo que alguien que quiera hacer este ataque tendría que comprar, al menos 10.710.000 bitcoins. Ahora que las criptomonedas están desplomándose vamos a poner un valor de media de 4000 euros el bitcoin (y tirando a la baja) eso querría decir que un atacante necesitaría invertir 42.840.000.000 de euros para poder hacerse con esa cantidad ¿Os parece viable? Pues ahora imaginaros con Ethereum me direis “vale mucho menos en el mercado” pero Ethereum no tiene límite de monedas, por lo que…. ¿cuando alguien sería el dueño del 51% de la divisa?

Lo dicho, el día que se logre hacer un ataque del 51% es porque esa moneda ya no le importará a nadie. Puede que valga menos de 0,000001 la unidad y alguien con mucho humor y esperanza compre las suficientes como para hacer ese ataque soñado. Hoy en día dadas las dos tipologías de pruebas creo que no es viable, por lo que podemos dormir tranquilos.

miércoles, 31 de enero de 2018

Recursos para entender Blockchain



Hace tiempo que vengo dándole vueltas sobre como escribir un artículo (o serie de artículos) sobre Blockchain desde 0, coincidió que una compañera me pidió dar una charla sobre esto mismo y lo hice encantada, creía que me valdría para poder enfocar también estos artículos pero no, sigo sin verlo claro.

Me he dado cuenta de que hay muy buena información en la red donde poder entender esto fácilmente.

Estoy preparando un MOOC sobre Blockchain para desarrolladores, contado y visto con calma, siempre se ve mejor. Pero mientras tanto, quiero compartir con vosotros tres documentos que son más que suficientes para entender Blockchain tal y como Bitcoin lo pensó.

Es muy interesante remarcar que cada criptomoneda ha incluido cambios en este modelo inicial por eso, cuando estéis decididos por una, revisad bien su Whitepaper porque el Blockchain de Bitcoin se parece al de Ethereum pero ya incluye muchos cambios, y si te vas a IOTA no se parece en nada. Por lo que es importante que partas de esa base, estos documentos son excelentes para entender las bases sobre las que nació Blockchain pero luego ha evolucionado y cambiado mucho, según la criptomoneda que te interese.

En primer lugar os dejo con dos documentos, uno en inglés y otro en castellano, enfocados por completo a Blockchain según Bitcoin, así también se puede entender el concepto de minería y los problemas que ésta traerá.

http://www.the-blockchain.com/docs/Princeton%20Bitcoin%20and%20Cryptocurrency%20Technologies%20Course.pdf

https://repositorio.comillas.edu/xmlui/bitstream/handle/11531/70/TFG000011.pdf?sequence=1

En segundo lugar os dejo el documento que publicó el NIST, un borrador sobre Blockchain, explicando todos estos conceptos básicos pero además ya habla de las diferencias con Ethereum, en mi humilde opinión, la criptomoneda que más ha aportado después de Bitcoin desde una perspectiva de innovación tecnológica.

https://csrc.nist.gov/CSRC/media/Publications/nistir/8202/draft/documents/nistir8202-draft.pdf

Con estos tres documentos son más que suficientes para adentrarte a entender que es Blockchain y porqué todo el mundo habla de ello.

martes, 16 de enero de 2018

Empezando con el desarrollo de DApps en Ethereum



Como ya he comentado varias veces estoy haciendo un doctorado, no se me ocurrió otra cosa
que meterme en IoT + Blockchain y, como buena curiosa que soy, nada mejor para entender las
cosas que meterte en faena y poner a crear tus propias DAaps.

Primero ¿Que es una DApp?
DApp es el acrónimo para de Decentralized Application, no son ni más ni menos que
aplicaciones basadas en la tecnología Blockchain (para los que no entiendan bien
Blockchain, me apunto para la semana que viene un compendio de recursos para ellos).

Las características que toda DApp comparte son:
  • Open Source: Los cambios son consensuados. 
  • Descentralizada: Los datos son guardados en Blockchain (que es descentralizado por definición). 
  • Probada: Bitcoin usa PoW, Ethereum también aunque esta programado para finales de este año hacer un hibrido de PoW y PoS. Han de ser probadas. 
  • Incentivada: Cuando se validen ls transferencias, se han de incentivar. Aquí no estoy muy de acuerdo con que esto se aun punto general ya que si piensas en criptomonedas como IOTA (que tendrá pronto Smart Contracts) todas sus transacciones y validaciones son gratuitas. Pero por el momento dejemoslo como característica general. 

Resultado de imagen de blockchain


Ethereum diferencia entre tres tipos de aplicaciones:
  • Financieras: Manejan “cripto-dinero” de forma directa. 
  • Semi-financieras: Donde hay dinero en juego pero no es la finalidad principal. 
  • No financieras: Donde el dinero no es lo que importa aquí pone como ejemplo los sistemas de votación o gobierno descentralizado. Siempre que un minero procesa un Smart Contrat se mueve dinero (por el gas consumido para procesarlo) así que, no os engañeis, siempre hace falta tener ether de por medio. 
Bien, ya sabemos lo que queremos hacer: una DApp. Ahora, la pregunta que he visto por tantos rincones de la red ¿Por donde empiezo?
Una DApp no es diferente a cualquier otra aplicación, consta de dos partes:
  • Front: Lo bonito. Lo que ve el usuario. Aquí los lenguajes de desarrollo son libres, el front lo puedes hacer en lo que más te guste. Lo más habitual son front de tipo web (eso también influye en que MetaMask solo tiene soporte web hoy en día, pero lo explicaremos luego) pero aquí puedes sentirte libre de usar el lenguaje que quieras. 
  • Back: La conexión con Blockchain. Esta es la parte donde vais a poder ver la diferencia entre una APP y una DApp. Hasta ahora teníais un back con una BBDD (relacional o no, no vamos a entrar en eso) puede que para vuestra DApp siga haciendo falta una, pero el núcleo de vuestra información estará en la Blockchain. El factor único y diferencial es ese. Para esto necesitamos un lenguaje para poder interactuar con esa Blockchain. El lenguaje más utilizado para ello es Solidity. 
Con Solidity vamos a poder:
  • Interactual con la Blockchain 
  • Crear Smart Contracts 
  • Crear nuestra ICO (que no es más que otro Smart Contract) 

Con esos tres puntos ya lo tienes todo. Entendiendo que es una DApp, que partes la forman, que lenguajes necesitas y que puedes hacer con Solidity. Ya te puedes adentrar a estudiar sobre el mismo y ver ejemplos.
Mis recomendaciones.

MOOCs:
Ethereum Developer MasterClass: https://www.udemy.com/ethereum-masterclass/learn/v4/overview