Blockchain, criptomonedas y excavación Forcepoint

Esta publicación es una versión actualizada y ampliada de nuestro ejemplo de criptomonedas de 2017.

Blockchain

¿Qué es Blockchain y cómo se ve?

El propósito de una cadena de bloques es crear un registro; es decir, un registro de transacciones históricas (ya sean transacciones financieras, comunicaciones, etc.).

En general, la cadena de bloques tiene un nombre apropiado: es una cadena de bloques de datos que en su nivel más básico (al menos en la mayoría de las implementaciones actuales) se puede conceptualizar como algo como el cuadro a continuación, que se basa en la cadena de bloques tal como está. .conocido. de bitcoin.

Cada bloque de datos en esta implementación contiene cuatro piezas de información:

Sellar por tiempo – La hora en que se creó el bloque.

Raíz de la transacción – Los detalles de las transacciones contenidas en este bloque, es decir. esta sección del libro. La cantidad de datos almacenados en esta sección puede variar considerablemente: en bitcoins las transacciones valdrán aproximadamente diez minutos. Otras conversiones utilizan ventanas más cortas.

Hash anterior – El hash del último bloque de la cadena: así es como se conecta la cadena. Cuando se procesa un bloque, su hash se convierte en el hash anterior del siguiente bloque de la cadena, lo que permite vincular y rastrear registros históricos.

una vez – Término criptográfico que se refiere a cualquier valor utilizado solo una vez en una transacción. El propósito de esto se discutirá con más detalle más adelante.

El hash del bloque, que se convierte en el valor hash anterior en el siguiente bloque, es el valor hash de todos los datos almacenados en estas cuatro partes en conjunto.

¿Está protegido contra la manipulación de blockchain?

Quizás la verdad sobre la seguridad es que nada está intrínsecamente protegido contra la falsificación: debe diseñarse para dificultar la falsificación y luego protegerse de tantos controles de falsificación como sea posible. Por lo tanto, no debería sorprendernos que las cadenas de bloques por sí solas no sean inmunes a la falsificación sin algunos controles adicionales.

El primero de estos controles es la distribución y la descentralización: al garantizar que todas las partes interesadas tengan acceso al registro y a todas las transacciones nuevas que se supone deben agregarse, la falsificación debe volverse mucho más obvia. Si todas las partes involucradas tienen acceso a la misma información, la experiencia de un poco menos que la mayoría de las partes interesadas que informan una transacción incorrecta será notada por todas las otras partes que procesan los datos de manera justa.

Sin distribución y descentralización, y por lo tanto, acceso equitativo a los datos para todas las partes interesadas, la cadena de bloques no es más evidencia de falsificación que cualquier otro mecanismo de almacenamiento. Una cadena de bloques que pertenece y es procesada exclusivamente por una persona, independientemente de cuántos nodos operen y cuántas personas puedan leer los datos almacenados en la cadena de bloques, puede falsificarse debido al hecho de que una persona controla todo el procesamiento.

En este punto, necesitamos un método mediante el cual las partes interesadas puedan comunicarse entre sí y verificar la validez de un nuevo bloque enviado a la cadena. Aquí es donde las conversiones divergen. Históricamente, hay tres enfoques comunes:

Prueba de trabajo – Hacer que el cálculo de un hash de bloque válido sea difícil de hacer, pero fácil de verificar en otros países. La primera persona en calcular un hash válido lo envía a la red y es confirmado por otros países antes de agregarlo a su cadena.
Usos conocidos: Bitcoin (criptomoneda); Monero (criptomoneda)

Prueba de compromiso – Los creadores de bloques se determinan de forma pseudoaleatoria en función de su «apuesta» en la cadena de bloques. Esto lo utilizan principalmente las criptomonedas, ya que la apuesta se calcula fácilmente en función de la cantidad de moneda que posee cada miembro.
Usos bien conocidos: DASH (criptomoneda); Ethereum (criptomoneda, PoS / PoW híbrido)

Resiliencia bizantina práctica – Algo así como un bocado, PBFT es un método basado en consenso para «tolerar» errores de datos y recuperación automática. Los detalles del sistema están más allá del alcance de este artículo.
Usos conocidos: Hyperledger Fabric

Como nota al margen: todo lo anterior son soluciones al riesgo de lo que se conoce como la brecha bizantina, es decir. error en el que existe información potencialmente imperfecta o incompleta que puede dar lugar a diferentes representaciones del error para las diferentes partes involucradas (considere que cada país no sabe si hay participantes malintencionados y cuántos y que algunos de ellos mientras están «involucrados» en que incluso si se trata de un esquema de falsificación de datos, solo puede ser malicioso «aprobar» datos incorrectos, no generadores de dichos datos).

¿Es hora de hablar de excavar?

Si y no.

Sí, porque ya lo tenemos: la extracción es prueba de trabajo.

No, porque la minería es de hecho un artefacto de las criptomonedas que utiliza la solución de tolerancia a fallas de Proof of Work y generalmente no es deseable para la mayoría de las otras aplicaciones de blockchain.

¿Cómo demuestras tu trabajo?

Las funciones de prueba de trabajo se basan en establecer un «objetivo de dificultad» para el hash: usted establece un objetivo numérico que el hash debe alcanzar. Dado que los hashes siempre serán los mismos para el mismo conjunto de datos, necesitamos cambiar algún valor que componga los datos que tienen hash para tratar de manipular el valor hash; aquí usamos nonce.

Eche un vistazo a la tabla a continuación, que se tomó del ejemplo en la wiki en.bitcoin.it:

Simplifiquemos todos los datos almacenados en los elementos Previous Hash, Timestamp y Transaction Root hasta el texto «¡Hola, mundo!», Que se muestra en rojo en los lados izquierdo y derecho del gráfico.

También establezcamos un objetivo de dificultad arbitrario, que establece que el hash debe comenzar con cuatro ceros.

Para lograr esto, comenzamos a vincular cualquier parte de los datos (nonce, que se muestra en azul) a los datos que queremos guardar, y luego aplicamos hash a toda la cadena. Si esto no cumple con nuestro objetivo de dificultad, agregamos un nonce diferente a los datos originales que queríamos registrar y volvemos a intentarlo.

En este caso, para poder escribir «¡Hola, mundo!» Para cumplir con nuestro objetivo de dificultad «cuatro ceros», tendremos que repetir 4250 veces. En el mundo real, esto se enviará a la red, que luego puede confirmar nuestros esfuerzos muy rápidamente al verificar solo el valor que enviamos y comparar el hash con el objetivo de dificultad; recuerde que todas las personas que verifiquen deben tener una copia del Los mismos datos que se muestran en rojo arriba, por lo que si hicimos trampa y usamos datos falsificados para generar nuestro hash, serán diferentes para nosotros.

Esto puede sonar mucho como la «fuerza bruta» de algo, y eso es porque es verdad. Sin embargo, debido a que es rápido verificar que el trabajo se ha realizado legalmente, esto significa que la red puede verificar y rechazar fácilmente los resultados con los que no está de acuerdo.

CRIPTOMONEDAS

En primer lugar, intente pensar en las criptomonedas como aplicaciones que utilizan el almacenamiento blockchain. De manera similar, tenga en cuenta que las criptomonedas podrían basarse en cualquiera de los enfoques anteriores para la tolerancia a errores: Prueba de trabajo, Prueba de apuesta o PBFT, aunque en realidad todas las conversiones principales se basan en PoW o PoS. En el momento de redactar este artículo. .

Ahora podemos hablar de cavar

Como se discutió anteriormente, la capacidad de buscar ciertas monedas es el resultado de su uso de tolerancia a fallas como prueba de desempeño. Como incentivo para realizar los cálculos intensivos requeridos por el enfoque de PoW, la primera persona que genere con éxito un hash válido primero, que luego es aceptado por la red, también es recompensada con las tarifas de transacción incluidas en este bloque (generalmente partes de un ‘ moneda ‘) incluida en una transacción después de un cierto número de decimales) y / o una nueva moneda en la moneda.

No es sorprendente que esto haya llevado a una prisa por excavar en busca de estas monedas y, como ocurre con cualquier cosa donde hay dinero, a una prisa por desarrollar formas mejores y más rápidas de excavar. En el caso de bitcoin, esto llevó al desarrollo de circuitos integrados de aplicaciones específicas (ASIC) para excavación, lo que resultó en una tasa de hash de más de 30.000.000 terahash por segundo en abril de 2018. Eso es 30 quintillones de hashes por segundo en toda la red.

Para compensar, la red bitcoin ajusta el nivel de dificultad para «obtener» un nuevo bloque cada diez minutos. Tenga en cuenta que las diferentes monedas basadas en PoW a menudo tienen diferentes tiempos objetivo para los bloques.

Esta tremenda tasa de hash rápidamente hizo que el uso de cualquier cosa que no fuera hardware especializado fuera extremadamente ineficiente (hasta el punto en que probablemente perdería energía). La siguiente tabla se compiló nuevamente a partir de los datos de en.bitcoin.it/wiki y las especificaciones del fabricante:

Hardware Jauli / gigahash
2017 Antminer T9 ASIC 0,126
GPU AMD 7870 XT de 2013 326,8
2011 Intel Core i5 ~ 20 000

Nota: La AMD 7870XT 2013 es la GPU más rápida y más reciente para la que todos han enviado un índice de referencia de hash de bitcoin.

Como resultado de esta carrera armamentista, las ventas se están desmoronando nuevamente. Esta vez con algunas criptomonedas que se ramifican para usar un tipo diferente de algoritmo para probar el trabajo. En general, se pueden clasificar como:

Algoritmos limitados por el procesador – Estos son algoritmos como SHA256 (como lo usa bitcoin), que requieren muy poca memoria por instancia (<512 bytes) y, por lo tanto, se ejecutan fácilmente mediante ASIC de fabricación económica.
Usos bien conocidos: Bitcoin (SHA256)

Algoritmos con memoria limitada – Algoritmos que requieren significativamente más memoria de instancia y, por lo tanto, aumentan significativamente el costo y el esfuerzo involucrados en el desarrollo de un ASIC.
Usos bien conocidos: Litecoin (Scrypt); Dinero (CryptoNight)

Mineros maliciosos

En esta etapa, debemos introducir el tema de los buscadores malintencionados: la perspectiva de una recompensa económica fácil a menudo va de la mano con la actividad malintencionada.

En este blog ya hemos hablado sobre excavación maliciosa, en particular el crecimiento del software de excavación maliciosa de Monero en 2017. El algoritmo de memoria limitada CryptoNight utilizado por Monero fue desarrollado específicamente para ser más eficiente en computadoras de hardware domésticas que el ASIC. De hecho, la especificación de diseño (llamada CryptoNote) dice lo siguiente:

[CryptoNote] está diseñado para hacer que la excavación de CPU y GPU sea aproximadamente igualmente eficiente y limitar la salida ASIC.

Como tal, naturalmente atrae a los participantes malintencionados que desean implementar mineros en computadoras domésticas, ya sea a través de malware tradicional que se ejecuta de forma natural en una computadora o, más tarde, a través de mineros de navegador que se ejecutan cuando el usuario visita la página web con el minero incorporado. . Nuestra próxima publicación de blog analizará este último con más detalle.