domingo, 21 de septiembre de 2014

Fortaleza Digital - Dan Brown - Criptografía - NSA.


Bueno en esta ocasión he venido a compartir un libro el cual he podido leer y en pocas palabras, me fascino. Tiene una temática muy entretenida y les parecerá mucho mas a las personas dedicadas al mundo de la informática y con algún gusto en particular con el mundo de la criptografía.


El autor de esa obra es Dan Brown (Hampshire, Estados Unidos, 22 de junio de 1964) es un escritor estadounidense conocido por la novela Ángeles y demonios (2000), El código Da Vinci (2003) y otros títulos.


Portada del libro oficial.


Recomendaciones 

Yo soy un entusiaste lector de libros de Física (Mecánica Cuántica - Lev Davídovich Landau), Matemática (Funciones Complejas - Complejos Celulares) e Informática (Criptografía Cuántica).

Desde el inicio en que comencé a leer el libro e imaginarme los diversos escenarios, supe que algo hacía falta. Para añadir un poco de suspenso a la lectura le añadí un fondo de música, el cual a mi gusto fue la correcta. En el siguiente enlace de descarga añado tanto el libro (Pdf) como también el fondo musical que me ayudo a tener una mejor visualización imaginativa de los muchos escenarios.

Pido disculpa por el archivo, ya que el fondo musical ocupa el 99% de todo el archivo. Si gustan utilizar el fondo musical, recomiendo utilizar el modo repetir pista de su reproductor, con el fin de evitar molestias.


Descargar  :   http://www.mediafire.com/download/g2hzhzss3v2arqd/Fortaleza+Digital+-+Espa%C3%B1ol.rar


Bueno espero que el libro sea de su agrado y espero que el fondo musical también. Me despido y será hasta la próxima. Nos vemos.






lunes, 15 de septiembre de 2014

El mundo del Bitcoin - Maleabilidad de Transacciones.


En este nuevo post voy a explicar a detalle de que trata esta moneda virtual que relativamente va dejando de ser nueva y poco a poco se dispone de subir de nivel en el mercado financiero.

Posterior a la explicación de dicha moneda voy a realizar una explicación sobre la vulnerabilidad que llevo a muchos monederos de dicha monedad ha cerrar por el ataque informático que sufrieron, el mas conocido entre todos el ataque al mercado negro Silk Road.

Bitcoin es una criptodivisa, llamada así porque se trata de un medio digital de intercambio basado en principios de criptografía. Básicamente, Bitcoins son monedas digitales que se transfieren de persona a persona sin necesidad de la interferencia de un banco o un sistema centralizado. El dinero puede cambiar de manos, sin importar el lugar de residencia o distancia entre los participantes, gracias al uso de Internet - See more at: http://www.qore.com/articulos/13675/Que-es-Bitcoin-y-como-funciona#sthash.fA5ocLjF.dpuf
Bitcoin es una criptodivisa, llamada así porque se trata de un medio digital de intercambio basado en principios de criptografía. Básicamente, Bitcoins son monedas digitales que se transfieren de persona a persona sin necesidad de la interferencia de un banco o un sistema centralizado. El dinero puede cambiar de manos, sin importar el lugar de residencia o distancia entre los participantes, gracias al uso de Internet - See more at: http://www.qore.com/articulos/13675/Que-es-Bitcoin-y-como-funciona#sthash.fA5ocLjF.dpuf
Bitcoin es una criptodivisa, llamada así porque se trata de un medio digital de intercambio basado en principios de criptografía. Básicamente, Bitcoins son monedas digitales que se transfieren de persona a persona sin necesidad de la interferencia de un banco o un sistema centralizado. El dinero puede cambiar de manos, sin importar el lugar de residencia o distancia entre los participantes, gracias al uso de Internet - See more at: http://www.qore.com/articulos/13675/Que-es-Bitcoin-y-como-funciona#sthash.fA5ocLjF.dpuf

El Bitcoin es una criptodivisa decentralizada, conlleva este nombre se trata de un medio digital de intercambio basado en principios de criptografía. Los Bitcoins no son mas que monedas digitales que se transfieren de persona a persona sin necesidad de la interferencia de un banco o un sistema centralizado. Este sistema digital fue concebido por Satoshi Nakamoto, del cúal se sabe muy poco si es una persona o un equipo, su participación en el proyecto  Bitcoin es desde el 2007, la cual fue reduciéndose y acabo finalizando en el 2010.



Ejemplo : 

Si nosotros deseamos hacer una transferencia de dinero con base en la moneda Bitcoin, estas transferencias por muy grandes que sean las sumas de dinero se podría ejecutar de manera prácticamente instantánea (dependiendo del sistema de red actual), esto es gracias a que el sistema tiene sus propios recursos y su propia retroalimentación. Ahora si hacemos los mismo en los métodos convencionales vamos a requerir primero de mas tiempo en poder hacer dicha transferencia, esto es porque primero tendría que validarse y ademas vamos a tener que brindar una bonificación por el uso del sistema que nos ha hecho posible esta transferencia.



Control y Generar Bitcoin.


El control de la moneda yace en la comunidad entera, y para que haya un cambio en su funcionamiento o sus regulaciones, la mayoría de sus usuarios debe llegar a un consenso, pues su forma de operar es muy similar a aquella de una red P2P, pero éste es un tema que explicaremos más adelante. Lo importante aquí es entender que ningún pequeño grupo, gobierno o individuo puede interferir con la producción de dinero, ya sea acelerando o desacelerando su crecimiento. Claro que esto tiene sus desventajas, debido a que al carecer de respaldo por parte de una institución financiera, no hay manera de reclamar por errores de depósito o algún tipo de fraude, ya que las transacciones son finales, y una vez hecha la transferencia no hay nada que se pueda hacer. Asimismo, si un usuario pierde el password de su cuenta, o su disco duro muere y éste no tenía respaldadas sus Bitcoins en un servicio especializado, deberá despedirse de su dinero por siempre. - See more at: http://www.qore.com/articulos/13675/Que-es-Bitcoin-y-como-funciona#sthash.mdrRcwc9.dpuf
Como había mencionado anteriormente, el dominio del bitcoin se encuentra entre sus propios usuarios, y por lo tanto para que halla algún cambio o regulación, esto se tiene que llevar acabo de una votación unánime entre toda la comunidad. Lo importante aquí es entender que ningún pequeño grupo, gobierno o individuo puede interferir con la producción de dinero, ya sea acelerando o desacelerando su crecimiento.

Como todo sistema, este también posee ciertas desventajas, esto se da debido a que a que no disponen de algún tipo de respaldo por parte de una institución financiera, no existe una recepción de reclamos de ninguna clase, ya que no existe un ente principal de bitcoin. Con esto se entiende que una vez hecha la transacción es imposible poder presentar algún tipo de reclamo de la misma.




Cabe señalas que el usuario tiene que tener copias sobre sus llaves de sus cuentas de bitcoins, esto es debido a que si por algún motivo se llegara a perder o extraer dicho password, es imposible de recuperar, y por lo tanto perder todos sus bitcoins almacenados en su cartera.


Minería de Bitcoins.


La minería del bitcoin tiene sus origene desde el nacimiento de dicha moneda y como cualquier otra moneda comercial tiene características a favor y otras en contra. A continuación vamos a señalar algunos conceptos que son necesarios entender para poder ingresar de forma mas comprensible al mundo de la minería del bitcoin.


Hash

Un hash es la salida de una función hash, dichas funciones se caracterizan porque a partir de una entrada producen siempre la misma salida, pero el proceso no se puede invertir. Para poder identificar cual ha sido la entrada de un hash, se suele utilizar bibliotecas de palabras, que posteriormente ingresen a la función, con el fin de poder tener todos los hash. Finalmente se comparara los hash de la biblioteca con el hash que poseemos con el fin de encontrar una compatibilidad exacta de los caracteres.



Cadena de Bloques - Bloques

La cadena de bloques sirve para confirmar las transacciones que han tenido lugar con el resto de la red. Los nodos Bitcoin utilizan la cadena de bloques para distinguir las transacciones Bitcoin legítimos frente a los intentos de volver a gastar monedas que ya se han gastado en otro lugar.

Las transacciones de Bitcoins se aglomeran en los llamados Bloques. Cada bloque contiene el hash del bloque previo (de manera que nadie pueda quitar o modificar bloques sin que esto sea detectado por la red),

Es importante tener presente que cuando más bloques tengas por delante del bloque que se encuentra tu transacción más fiable es la legitimidad de bloque.



La explicación del este puede tornarse un poco compleja, pero es importante saber como funciona en su totalidad por si alguien desea involucrarse en este proyecto que hasta el momento ha tenido mucho exito.

Hasta el momento sabemos que esta moneda nace mediante la "minería". La minería del Bitcoin se lleva a cabo por medio de un complejo algoritmo, diseñado por Satoshi Nakamoto, a través del cual se generan bloques de una cadena. Su objetivo es verificar la legitimidad de las últimas transacciones efectuadas en la red Bitcoin. Los mineros en este caso serían los usuarios que emplean la capacidad de procesamiento de sus PCs para "generar" Bitcoins.



Los mineros comprueban las transacciones efectuadas en la red Bitcoin y las agrupan en bloques en el denominado blockchain. Es un proceso que se repite cada 10 minutos. Cada bloque procesado genera en la actualidad una recompensa de 25 Bitcoins.

Todos los movimientos de Bitcoins que se producen en todo el globo durante diez minutos quedan registrados en un mismo fichero, que se denomina bloque, en este fichero se anotan por líneas las trasferencias de Bitcoins de la forma habitual: cuenta de origen, cuenta de destino e importe y para dar una mayor seguridad cada línea está firmada por el emisor de la transacción.


Nota : Hoy en día para poder entrar en competencia con otros mineros de bitcoin, es necesario tener dispositivos especificos para estas tareas, esto nos llevaría a invertir una cantidad de dinero cuyo reembolso estaría en un estado de incertidumbre. Tambien hay que tener presente que por mas que tengas una muy buena Pc de escritorio, esta y a no es competencia para las que se encuentran minando en la Red P2P.


Minar en Grupo - Mining Pool.



Si usted tiene vocación para minar Bitcoin y no dispone del equipo neceario y claro esta debido a la alta dificultad, hoy en día es necesario un gran poder de hasheo para tener una chance razonable de encontrar un bloque (y hacerse con los ฿50 correspondientes). Es por ello que los mineros comenzaron a agruparse y a combinar su poder de cómputo para aumentar la probabilidad de ser beneficiados. Cada vez que un grupo de mineros encuentra un bloque, la recompensa (los ฿50) se reparte entre sus miembros de manera proporcional al poder de hasheo aportado por cada uno de ellos.

Ventajas de la Minería en Grupo (Pool Mining)


  • La Minería en Grupo genera un ingreso más estable.
  • La Minería en Grupo puede generar 1-2% más rentabilidad (previo a comisiones, si el pool las tuviese) debido al long polling ( capacidad que tienen los servidores de cada pool de avisar a sus mineros cuando un bloque fue encontrado).



Evolucion con respecto a la minería de Bitcoin.





El bitcoin desde su origen hasta hoy en día ha tenido un crecimiento ascendente, claro esta con algunas caidas inesperadas y alarmantes en su momento. Pero esto sería hablando de un panorama global. En esta sección vamos a ver como ha ido evolucionado la minería de bitcoin.



CPU

Cuando comenzo toda esta nueva aventura del Bitcoin, una persona ordinaria podría ser un minero con solo descargar el software y instalarlo en su Pc de escritorio, ya sea esta una Core i5 o i7 y claro esta con una buena capacidad de memoria y claro una relativa capacidad de GPU.


GPU

Como sabes el minar bitcoin requiere de una gran capacidad de trabajo en calculos sumamente complicados es aqui donde entra a tallar el GPU, ya que es un coprocesador dedicado al procesamiento de gráficos u operaciones de coma flotante. Se intenta aprovechar la gran potencia de cálculo de las GPU para aplicaciones no relacionadas con los gráficos, en lo que desde recientemente se viene a llamar GPGPU, o GPU en términos generales.



ASIC

Un Circuito Integrado para Aplicaciones Específicas - ASIC, es un circuito integrado hecho a la medida para un uso en particular, en vez de ser concebido para propósitos de uso general. Se usan para una función específica. Con respecto a los BTC los ASIC que trabajan bajo esta plataforma  están específicamente diseñados para efectuar los complicados cálculos SHA256 a una velocidad que deja totalmente obsoleta.




Hoy en día existen muchas variaciones de estos Hardware diseñados especialmente para poder minar bitcoins. Una de las empresas que ha apostado por implementarlos ha sido Butterfly Labs.



Butterfly Labs : http://www.butterflylabs.com/



Podemos observar las distintas tecnologías que nos ofrece Butterfy Labs asi como tambien las distintas categorías de hasheo.

Clasificación por resolución de hasheo.
  • 1 kH / s es de 1.000 (mil) hashes por segundo
  • 1 MH / s es de 1.000.000 (un millón) hashes por segundo.
  • 1 GH / s es mil millones (mil millones) hashes por segundo.
  • 1 TH / s es 1.000.000.000.000 (un billón) hashes por segundo.

Maleabilidad de Transacciones.


Bueno en esta sección en donde vamos a tratar de explicar la vulnerabilidad o Bug que se hallo en el propio protocolo sobre el que se sostiene Bitcoin. Esta grave vulnerabilidad afecto de manera desastroza y llevando a la quiebra a un gran Tienda de Intercambio de Bitcoin - MT.GOX, la cual en el año en que se perpetro el ataque (2013) ,esta se encontraba manejando el 70% de todas las transacciones de Bitcoin.


Para entender la vulnerabilidad presente es necesario conocer el funcionamiento interno de las transacciones así del mismo modo los elementos que participan en ella.



Transacción de Bitcoin - Estado Estandar.


En una transacción de Bitcoin existen 2 partes fundamentales Input y Outputs (El ejemplo eha sido extraído del sitio oficial de Bitcoin).



  • Una serie de inputs, que definen de donde viene el dinero el cual se va a transferir. Hay que tener presente que estas entradas son las salidas de otras transacciones realizadas anteriormente.Es comúnmente considerada una referencia a una salida de otra transacción existente. Cada transacción puede tener múltiples entradas, sumándose los valores de cada salida. El valor total de las entradas es la suma máxima disponible para las salidas

  • El script consta de dos componentes: Una firma y una clave pública. La clave pública pertenece al propietario de la transacción de origen. El otro componente es una firma digital ECDSA (algoritmo basado en curvas elípticas) aplicada a un hash de una versión simplificada de la transacción. Esa firma digital basada en criptografía asimétrica de curvas elípticas, junto a la clave pública, permite verificar que la transacción ha sido generada por el auténtico propietario de la dirección en cuestión (en definitiva, cualquiera que tenga la clave privada con la que se generaron la clave pública y la dirección Bitcoin).

  • Una serie de outputs, las cuales definen a donde van a ir los bitcoins que se van a transferir. Es un listado de direcciones bitcoin a las cuales se va a transferir el dinero.Esta serie de outputs contienen las instrucciones para enviar la suma de bitcoins. En el ejemplo Value es el número de satoshis (1 BTC = 100 000 000 satoshis) que la salida pone a disposición del destinatario. ScriptPubKey es la segunda mitad de script mencionado anteriormente. Hay que tener presente que  la diferencia que pueda haber entre la suma de bitcoins de las entradas y las salidas se considerará una comisión de transacción y se asignará a la dirección en la que se genere el bloque que registra la transacción. 

Nota : Para verificar que las entradas tienen autorización para disponer de los valores de las salidas a las que se hace referencia. El valor scriptSig de la entrada y la referencia scriptPubKey de la salida se evalúan (en ese orden), de modo que scriptPubKey utiliza los valores que deja scriptSig en la pila. La entrada se autoriza si scriptPubKey retorna un valor true.



A continuación vamos a referirnos a los datos con los cuales los usuarios interactúan comúnmente en una transacción.


1.- Información que identifica al Remitente (Dirección de la cartera del Remitente).
2.- Firma del Remitente para verificar su autenticidad. (Clave Privada del Remitente).
3.- Importe de la transferencia. (Cantidad de Bitcoins que se dispone a transferir).
4.- Información que identifica al Destinatario (Dirección de la cartera del Destinatario).
5.- Firma del Remitente para verificar su autenticidad. (Clave Pública del Destinatario).


Es de suma importancia tener presente que la suma de los outputs tiene que coincidir con la de los inputs, dejándose la cantidad restante necesaria para que coincida como comisión para los que minen la transacción. Una vez se ajustan esos parámetros, la transferencia se firma con la clave privada del que hace la transferencia, de esta manera se puede asegurar que es lícita.


La información que se ha presentado se combina con otra información previamente informada y se les hace un hash, para generar un ID de transacción única que se utiliza para realizar un seguimiento de la transacción en la cadena de bloques. Hay que considerar que cuando se introduce la misma información en un algoritmo de hash siempre recibirá la misma salida exacta (ID de transacción)pero cuando haya alguna variación de la información de entrada incluso ligeramente generará una nueva ID de transacción.




Por último tendríamos que recolectar toda la información generada y mandarlos al resto de participantes de la red bitcoin para que certifiquen que la transacción es válida y se añada al siguiente bloque. Este proceso es lo que se conoce vulgarmente como minado.

Observaciones :

  1.     En la transacción hay datos que no están firmados por el usuario que realiza la operación.
  2.     Para que la transacción sea considerada como válida, la red bitcoin P2P tiene que minarla.
Esos dos detalles son elementales para poder explotar la vulnerabilidad Maleabilidad de Transacciones.


Ataque basado en Transaccion de maleabilidades.




Transacción Estandar


Vamos a imaginar que un Alice(Remitente) le va enviar una cantidad de BTC a Bob..



Para esto, Alice va a tener que enviar los Bitcoins a la dirección de la cartera de Bob.



Como se menciono anteriormente Alice debe esperar a que la transacción sera confirmada por los mineros.



Alice tiene que esperar que la Transacción sea verificada por los mineros. El protocolo de Bitcoin esta hecho para que cada block tome aproximadamente 10 minutos para minar. Normalmente se considera segura una transacción verificada por al menos 6 bloques.



Hasta este punto la transacción se ha realizado con éxito, eso quiere decir que Alice pudo enviar a Bob los Bitcoin que ella registro para iniciar esta transacción.


Transacción Mutada.


En este caso una vez mas Alice va a enviar una cantidad X de Bitcoin a Bob, con la diferencia que Bob va utilizar la vulnerabilidad de transacción de maleabilidad para estafar a Alice.


#######################################
Transacción 16 : Alice envía a Bob X bitcoins.
#######################################



Como siguiente paso Bob va a enviar a la red una transacción con los mismos datos fundamentales pero con un identificador distinto.



#######################################
Transacción 51 : Alice envía a Bob X bitcoins.
#######################################

Como mencionamos anteriormente en las observaciones, el identificar de las transacciones 16 y 51 no se encuentran protegidos por el hash.

Bob que es una minero de Bitcoin, consigue que la transacción 51 llegue antes a cierto bloque que la transacción 16. Como consecuencia a esta acción, la red Bitcoin tomaría la transacción 51 como verdadera, por lo tanto cuando la transacción 16 ingrese a la red, esta sería rechazada porque los Bitcoin ya no le pertenecen a Alice.


Finalmente la Transacción 51 se procesará correctamente y es válida porque sus datos fundamentales los son. Por lo tanto se demuestra que el identificador no es relevante.


Consecuencias del Ataque.


Si el ataque llevado acabo por Bob tuvo éxito, por consiguiente Alicia se va a percatar que la transacción 16 tuvo problemas y fue rechazada. Por lo tanto Alicia va a tener que volver a enviar unos nuevos Bitcoins a Bob.

#######################################
Transacción 67 : Alice envía a Bob X bitcoins.
#######################################

Podemos observar que Alicia ha iniciado otra transacción con los mismos parámetros pero con otros Bitcoins.


Ataque a las Carteras Online.



El problema que tuvieron estas carteras no era un problema intrínseco en el protocolo bitcoin, si no en la implementación que tenían esos mercados del mismo.

Cada vez que un usuario solicita la retirada de bitcoins de su cuenta, el mercado genera una transacción bitcoin normal y corriente. Una vez creada esa transacción, los mercados con la implementación errónea del protocolo guardaban el hash de esa transacción. Con ese hash, simplemente esperaban escuchando en el blockchain a que fuese incorporado en el mismo, dando por finalizada la retirada de bitcoins en el momento en el que eso sucediese.




El problema radica cuando un usuario consigue duplicar esa transacción hecha por el mercado, y la integra en el blockchain antes de que la original lo consiga, será la suya la que sea considerada válida, y la del mercado la considerada como duplicada, y por lo tanto descartada.




La transacción se habrá hecho correctamente ya que está incluida en el blockchain (a través de la duplicada), pero el mercado, que solo estaba escuchando en el blockchain por el hash de la transacción original verá como su transacción no es incorporada nunca en el blockchain, por lo reintentará una nueva transacción con los mismos datos pero con otros Bitcoins.

Si el usuario repitiese este proceso continuamente, el mercado estaría realizando transacciones constantemente sobre la misma petición de retirada del usuario, siendo este motivo por el que los mercados tuvieron que cerrar su retirada de bitcoins.


Los almacenamiento de Bitcoins en una ubicación central es un defecto fundamental de los intercambios y mercados negros basados Bitcoin. Esto se debe a que los saldos de las cuentas individuales son financiados desde la caché central de Bitcoin, esto permite que los atacantes puedan drenar todo el saldo combinado de un objetivo vulnerable.






Como ejemplo a dicho ataque se podría mencionar el ataque perpetrado contre el mercado Silk Road, en la cual los hackers puedieron robar alrededor de 36 millones de dolares en Bitcoins.

Otro ejemplo también podría ser el ataque que se ejecuto contra MTGox, el principal sitio de intercambio de Bitcoins, en la cuál se estima que se perdió alrededor de 744.000 Bitcoins, los cuáles equivalen a 350 millones  de dólares.

Para terminar este post tengo que agradecer a los investigadores de seguridad Daniel Chechik y Ben Hayak que otorgaron una gran conferencia sobre el tema abordado en este post en la Conferencia BlaCk HaT USA 2014.

Por último comparto los script diseñados por los Expertos los cuales fueron útiles para la demostración de la vulnerabilidad ya previamente explicada.



BlaCk HaT USA 2014 : http://blackhat.com/docs/us-14/materials/us-14-Chechik-Malleability-Tool-Tool.zip











El control de la moneda yace en la comunidad entera, y para que haya un cambio en su funcionamiento o sus regulaciones, la mayoría de sus usuarios debe llegar a un consenso, pues su forma de operar es muy similar a aquella de una red P2P, pero éste es un tema que explicaremos más adelante. Lo importante aquí es entender que ningún pequeño grupo, gobierno o individuo puede interferir con la producción de dinero, ya sea acelerando o desacelerando su crecimiento. Claro que esto tiene sus desventajas, debido a que al carecer de respaldo por parte de una institución financiera, no hay manera de reclamar por errores de depósito o algún tipo de fraude, ya que las transacciones son finales, y una vez hecha la transferencia no hay nada que se pueda hacer. Asimismo, si un usuario pierde el password de su cuenta, o su disco duro muere y éste no tenía respaldadas sus Bitcoins en un servicio especializado, deberá despedirse de su dinero por siempre. - See more at: http://www.qore.com/articulos/13675/Que-es-Bitcoin-y-como-funciona#sthash.mdrRcwc9.dpuf, y para que haya un cambio en su funcionamiento o sus regulaciones, la mayoría de sus usuarios debe llegar a un consenso, pues su forma de operar es muy similar a aquella de una red P2P, pero éste es un tema que explicaremos más adelante. Lo importante aquí es entender que ningún pequeño grupo, gobierno o individuo puede interferir con la producción de dinero, ya sea acelerando o desacelerando su crecimiento. Claro que esto tiene sus desventajas, debido a que al carecer de respaldo por parte de una institución financiera, no hay manera de reclamar por errores de depósito o algún tipo de fraude, ya que las transacciones son finales, y una vez hecha la transferencia no hay nada que se pueda hacer. Asimismo, si un usuario pierde el password de su cuenta, o su disco duro muere y éste no tenía respaldadas sus Bitcoins en un servicio especializado, deberá despedirse de su dinero por siempre.