Blockchain Parte 6 – Seguridad

Seguridad

Los sistemas centralizados invierten cantidades ingentes en protegerse frente a los ataques externos o ataques  a los end-point, ataques de denegación de servicio, o de acceso a los datos.

Ataques externos

La desventaja de los sistemas centralizados es que los atacantes tienen muy claro donde enfocar su esfuerzo y se convierte en una batalla de recursos, si los recursos del atacante son suficientes el end-point podrá hacer muy poco.

En el caso de las redes descentralizadas, no se sabe realmente a primera instancia el número de nodos que hay que atacar para dejar esta red fuera de servicio, este número varía tanto su posición como su cantidad continuamente.

Integridad de la información

La propiedad de inmutabilidad nos permite ahorrar costes en sistemas de integración, este es otro cambio disruptivo, las organizaciones centralizadas invierten esfuerzos en seguridad perimetral, en securizar los datos y finalmente por crear un canal seguro donde compartir los datos con otro sistema.

Todo este esfuerzo es comprometido por el nivel de seguridad del nuevo sistema, por lo que una vez completada la integración, podremos decir que el nivel de seguridad que protegen estos datos será el menor de todos los sistemas que lo persisten.

Ataque del 51%

El único objetivo realista de este ataque sería destruir la red.

Aunque es posible pensar que se podría intentar un fraude de tipo lucrativo como un doble gasto, también es muy fácil detectarlo, dado que la bitácora de transacciones es pública.

Como consecuencia de este supuesto el ataque con ánimo de lucro los usuarios de la red perderían la confianza en el sistema de forma inmediata y todo lo conseguido se podría convertir un bien estéril.

Para evitar sufrir este tipo de ataques, Bitcoin implementó proof-of-work  o prueba de trabajo.

El algoritmo PoW trata de completar un acertijo matemático de alta complejidad, compitiendo de esta forma por ser el primer nodo de la red en solucionarlo, esto requiere invertir un coste computacional y de electricidad importantes, el nodo que lo consiga será recompensado con bitcoins.

Cuantos más nodos hay en la red y mejor es el hardware, la inversión que se tiene que hacer para competir es más alta, por lo que invertir grandes cantidades de dinero con el único objetivo de destruir la red puede resultar un pensamiento absurdo o al menos no lógico.

Seguridad en sistemas financieros

— “Si los bancos pierden confianza en Swift, o tendrán que vivir con la incomodidad o reducir su participación en los pagos transfronterizos», dice Erin McCune, un estratega de pagos del grupo de consultoría Glenbrook Partners.

Estas declaraciones son consecuencia de uno de los robos más grandes de los últimos años perpetrado por uno o varios hackers al Banco de Bangladesh,

En realidad aunque hackearon el Banco se aprovecharon de un sistema centralizado llamado Swift, este sistema da soporte a más de 11000 bancos y otras corporaciones financieras, lo único que hace es generar una bitácora de saldos entre todos ellos, genera más de 27 millones de estos movimientos al día.

Cuando envío una transferencia internacional, confío en mi banco, en el banco estatal que lo regula, en Swift, y en algún intermediario más. Todos ellos vulnerables ante los hackers, es todo un acto de fé.

Cuando uso una criptomoneda simplemente confío en la criptografía.

Monedero desconectado/frío

El monedero desconectado o frío es un monedero que se ha creado offline, la clave privada de este monedero normalmente es guardada en papel o un componente informático como un usb que no conectaremos a la red hasta el momento de mover el saldo a otro monedero.

En Bitcoin, cuando se genera un nuevo monedero se crea una semilla con criptografía eliptica, el número de combinaciones es comparable al número de átomos en el universo.

Mientras este monedero siga frío la seguridad de que no será hackeado será la misma de que todo el sistema sea hackeado, podriamos decir que es una seguridad completa.

Ya que si el sistema es hackeado, bien por computación cuantica, bien por ataque 51% el valor almacenado en ese monedero tendería a 0, ya que el valor del sistema también lo haría.

Ir a  Blockchain Parte 5 – Consenso

 

Publicado en blockchain, Criptomoneda, ethereum, Sin categoría, smart contracts | Deja un comentario

Blockchain Parte 5 – Consenso

Consenso

En la tecnología blockchain se usa el consenso como sistema de gobernanza, cada proyecto blockchain utiliza sus propias reglas de consenso, en el caso de Bitcoin se usa el algoritmo Proof  of Work – prueba de trabajo, pero ya existen varios algoritmos que exponen distintas estrategias para conseguir el consenso en el sistema de forma segura.

El algoritmo alternativo más usado es PoS, Proof of Stake, despues hay varias modificaciones de este e incluso híbridos. Estamos en una fase muy temprana para sacar conclusiones de todas estas alternativas, en este artículo voy a explicar Proof of Work.

Proof of Work

Bitcoin usa HasCash – SHA 256 como algoritmo para su prueba de trabajo, los nodos mineros deben completar este algoritmo más rápido que cualquier otro nodo para obtener el privilegio de escribir el bloque en la cadena.

La dificultad para resolver este algoritmo es de aproximadamente 10 minutos, su complejidad es variable, es decir, el algoritmo de Bitcoin saca una media cada semana del tiempo empleado y decide si aumentar o disminuir su complejidad.

HashCash trata de una búsqueda secuencial sobre un hash de una cadena que conocemos, lo que buscamos es un hash que empiece por ‘000’, que sea el resultado de nuestra cadena original añadiéndole un número entero a la derecha en cada intento, es te número es llamado «nonce».

De esta forma no es predecible saber que computadora de la red será capaz de resolver antes este acertijo, es muy fácil de verificar pero costoso de procesar.

El nuevo bloque será configura la cabecera con los siguientes datos:

  • Hash de la cabecera del bloque anterior
  • Hash del nodo raiz del Merkle Root – Merkle Root Hash
  • Sello de tiempo en modo Unix
  • Nonce empleado para calcular el HashCash
  • nBits para ajustar la dificultad
  • Version del bloque

Block Chain Overview

Bytes Nombre Tipo de datos Descripción
4
versión
int32_t
El número de versión del bloque indica qué conjunto de reglas de validación de bloqueseguir. Vea la lista de versiones de bloques acontinuación.
32
hash de encabezado de bloque anterior
char [32]
Un hash SHA256 (SHA256 ()) en orden de bytes interno del encabezado del bloque anterior . Esto garantiza que no se puede cambiar ningún bloque anterior sin cambiar también el encabezado de este bloque .
32
merkle roothash
char [32]
Un hash SHA256 (SHA256 ()) en orden de bytes interno . La raíz de merkle se deriva de los valores hash de todas las transacciones incluidas en este bloque , lo que garantiza que ninguna de esas transacciones se pueda modificar sin modificar el encabezado . Vea lasección de árboles merkle a continuación.
4
hora
uint32_t
El tiempo de bloqueo es un tiempo de época Unix cuando el minero comenzó a mezclar elencabezado (según el minero ). Debe ser estrictamente mayor que el tiempo medio de los 11 bloques anteriores . Los nodoscompletos no aceptarán bloques conencabezados más de dos horas en el futuro de acuerdo con su reloj.
4
nBits
uint32_t
Una versión codificada del umbral objetivo delhash del encabezado de este bloque debe ser menor o igual a. Vea el formato nBits que se describe a continuación.
4
nonce
uint32_t
Un número arbitrario, se cambia para modificar el hash del encabezado a fin de producir un hash menor o igual al umbral objetivo .

Incentivos

Los nodos mineros de la red que desempeñan este trabajo reciben dos tipos de incentivos, por un lado una retribución estándar prefijada por la red que se incluyen como primera transferencia de todas las que van a escribir en el bloque.

Por otra parte, reciben comisiones, estas comisiones van en función de la oferta y la demanda del uso de la red, la comisión es pro-activa, un nodo que incluye una transferencia por primera vez en la red decide cuanta comisión está dispuesto a pagar, los nodos minero ordenan la prioridad de sus transacciones en función de la «propina».

Proof of Stake

La prueba de participación no requiere coste computacional para participar en la red, simplemente los nodos tienen que ser candidatos, deben tener unos fondos, en función de estos fondos su candidatura constará con más probabilidades o menos.

Si uno o varios nodos con la mayor participación de la red realizan un movimiento deshonesto ponen en riesgo sus propios fondos, puede ser detectado y penalizado y lo que es peor, la red puede perder la confianza, esto supone una perdida de valor de todo lo que había conseguido ganar con su supuesto fraude.

Estos nodos liberan su poder computacional de la prueba de trabajo, de esta forma pueden invertir esta capacidad en otras funcionalidades como contratos inteligentes con los que contamos descentralizar el resto de modelos de negocio más allá del sistema financiero.

Ir a  Blockchain Parte 4 – Descentralización

Ir a  Blockchain Parte 6 – Seguridad

Publicado en BitCoin, blockchain, Criptomoneda, ethereum, smart contracts | Deja un comentario