Blockchain es una string continua de bloques, que contiene algunos datos, y todos y cada uno de los bloques de la string están protegidos y vinculados mediante criptografía. Además, puede agregar tantos como Bloques en la string, y el proceso de agregar estos Bloques a una string existente se conoce como Minería. Blockchain se basa en redes distribuidas de igual a igual, lo que significa que no existe una autoridad central, y todos y cada uno de los Nodes tienen su importancia en la red.
Ahora analicemos la estructura interna de un Bloque. Los principales parámetros de un Bloque son:
- Timestamp : Contiene la hora exacta en que se agregó el Bloque a la string.
- Datos: pueden ser cualquier cosa menos transacciones, bonos, tratados, etc. La capacidad de bloque de datos también está limitada según la red. (Bitcoin permite un tamaño de bloque de 1 megabyte en su red).
- HASH: Es un grupo de caracteres Hexadecimales (del 0 al 9, A-F) que se genera al aplicar el algoritmo Hashing sobre un grupo de datos. Además, los hashes son irreversibles, es decir, no podemos recuperar los datos de un hash.
- Hash Anterior: Es el Hash del bloque anterior. También se puede decir que es una referencia al bloque anterior.
Hay más parámetros dentro de un bloque, pero los anteriores son los parámetros principales.
Historia
En 1991, Stuart Haber y W.Scott Stornetta publicaron un artículo de investigación sobre «Cómo aplicar un sello de tiempo a un documento digital» , por lo que la idea detrás de Blockchain surgió de ese artículo, y más tarde en 2008, un grupo de personas que se conoce con el nombre Satoshi Nakamoto acuñó el término Blockchain, y así nació Blockchain.
Nota: Hashing (algoritmo Hash seguro) se aplica en todo el bloque, es decir, no solo en los datos sino también en otros parámetros (hash anterior, marca de tiempo, nonce, etc.) del bloque.
Ahora, si ha oído hablar de una estructura de datos conocida como lista enlazada, entonces la lista enlazada es análoga a Blockchain, pero ambas son cosas diferentes, por lo que solo para comprender puede relacionar Blockchain con la lista enlazada.
¿Por qué necesitamos una string de bloques?
Para comprender la utilidad de esta tecnología, tomemos una situación en la que está realizando una transacción o enviando dinero a un amigo y no hay un tercero involucrado, como el banco, ¿no sería genial, solo el remitente? y el receptor están involucrados y nadie más. Esa es una de las razones principales por las que se fundó Blockchain. Ahora surge la pregunta si no hay un banco involucrado, entonces, ¿quién va a asegurar los detalles de mi transacción y los pagos? Ahí es donde Blockchain muestra su brillantez, es decir, su seguridad impenetrable. Entonces, averigüemos cómo.
Revisiones de seguridad
- Enlace criptográfico
- Tolerancia a fallas bizantinas
Enlace criptográfico
Un enlace criptográfico es básicamente un vínculo que se mantiene entre todos y cada uno de los bloques de toda la string. Entonces, ¿cómo se hace este enlace criptográfico entre los bloques? Supongamos que hay n bloques en una Blockchain. Entonces, cada bloque contiene algunos DATOS y una referencia al bloque anterior, y esa referencia se conoce como HASH del bloque anterior. Ahora, este valor HASH depende de los DATOS en los que estamos aplicando el Algoritmo Hashing (SHA-256). Entonces, si los DATOS dentro de un bloque en particular han alterado el HASH de los cambios del bloque (sin importar qué tan pequeño sea el cambio realizado en los DATOS). Ahora suponga que en el tercer bloque, los datos se cambian, por lo que el valor HASH de esos DATOS también cambia y el enlace criptográfico se rompe, porque el valor HASH almacenado en el Bloque 4 del Bloque 3 es diferente. Aquí hay una ilustración para entender esto mejor.
Ahora bien, si alguien pirateara la string y modificara los datos, tendría que manipular todos los bloques sucesivos y cambiar HASHES al mismo tiempo, lo que es prácticamente imposible a gran escala. Retomemos nuestro ejemplo anterior en el que un hacker necesita cambiar el DATA3 sin ser notado, para hacer eso necesita cambiar el HASH3 en el bloque 4 a HASH3#, tan pronto como cambia el HASH3 en el bloque 4 el HASH4 en el bloque 4 también cambia, por lo que nuevamente tiene que cambiar HASH4 en el bloque 5 a HASH4# y así sucesivamente hasta el último bloque de una string.
Incluso si alguien cambia con éxito todos los bloques de la string, hay otro muro que debe despejarse y es la tolerancia a fallas bizantinas.
Tolerancia a fallas bizantinas
Ahora bien, la tolerancia a fallas bizantinas es la técnica o condición de un sistema de red distribuida. En esta condición, cada Node en una red distribuida llega a un acuerdo común y ese acuerdo lo decide la mayoría de los Nodes. Entonces, ¿cómo es esto útil en Blockchain? Entonces, la cuestión es que cada Node en una red distribuida en particular tiene su propia copia de Blockchain, por lo que incluso si se piratea una string en particular, el sistema verifica la string (pirateada) con strings en el otro Node, por lo que si las strings no coinciden con la string en el Node pirateado, por lo que el sistema anula la string en el Node defectuoso a la string que tiene la mayoría del Node. En una red distribuida no existe una autoridad central, por lo que el sistema cree que lo que diga la mayoría de los Nodes es cierto. Para entender esto mejor, tomemos un ejemplo,
Ejemplo 1:
Sean X todas las strings en la red y sea Y la string modificada en un Node\Nodes.
- Inicialmente, string = X (Node 6).
- Después del ataque, string = Y (Node 6).
- Entonces todos los Nodes excepto el Node 6 tienen string = X.
- Y el Node 6 tiene, string = Y.
- Entonces hay 2 tipos de string en la red X, Y.
- Ahora, cuál es la correcta, por lo que el sistema decide qué tipo de string tiene la mayoría de los Nodes y se considerará verdadera.
tipos de string | Nº de Nodes |
---|---|
X | 999 |
Y | 1 |
- Entonces el sistema considera que el tipo de string X es verdadero.
- Ahora, la string = Y (Node 6) se descarta.
- string = X (Node 6) se considera.
Consideremos otro ejemplo complejo en el que varios piratas informáticos atacan diferentes Nodes y más de un Node.
Ejemplo#2
Ahora, hay 1000 Nodes en una red y 2 grandes organizaciones de piratería intentan atacar la red. Entonces, la organización A ataca los Nodes 2, 3, 4, 5, 6. La organización B ataca los Nodes 400, 401, 403 ……. hasta 499.
- Sean X todas las strings en la red, Y la string modificada por la Organización A y Z la string modificada por la Organización B.
- Todos los Nodes tienen, string = X (inicialmente)
- Después del ataque,
- string = X (Todos los Nodes que no están bajo ataque)
- string = Y (2,3,4,5,6 Organización A)
- string = Z (400, 401, 403 ……. hasta 499 Organización B)
- Entonces hay 3 tipos de string en la red X, Y, Z
- Ahora de nuevo cuál es la verdadera,
tipos de string | Nº de Nodes |
---|---|
X | 895 |
Y | 5(2,3,4,5,6) |
Z | 100( 400, 401, 403 ……. hasta 499) |
X, el tipo de string es la string que tienen la mayoría de los Nodes, por lo que el tipo de string X se copia en todos los Nodes que tienen el tipo Y y Z. De esta forma, nuestra Blockchain vuelve a recuperar su estado inicial.
Conclusión
Como se explicó anteriormente, esta tecnología Blockchain es de hecho impenetrable. Pero espera, nada es perfecto, incluso esta tecnología tiene sus propios defectos. Blockchain es impenetrable solo si el número de Nodes en una red es significativamente alto. Algunos ataques a los que son susceptibles las Redes más pequeñas son.
- Ataque 51%: En este tipo de Ataque, el Atacante tiene bajo su control casi el 51% de los Nodes de la red. En resumen, el atacante tiene la mayoría del poder de voto, por lo que puede tomar todas las decisiones sobre Blockchain. Pero todos sabemos que esto es prácticamente imposible en redes a gran escala.
- Ataque Eclipse: este ataque implica el aislamiento de un Node de toda la red de Blockchain, luego el atacante puede manipular el Node según su voluntad.
- Ataque DDoS (Denegación directa de servicio): este ataque tiene como objetivo retrasar los servicios ofrecidos por la red, simplemente inundando la red con información innecesaria para que la red se ocupe de procesar la información innecesaria, mientras que el procesamiento de la información genuina se retrasa.
- Sybil Attack: en este tipo de ataque, el atacante puede hacerse pasar por otra persona en la mayoría de los Nodes y puede explotar el mecanismo detrás de la tecnología.
Nota: Para detener el ataque DDoS, lo que podemos hacer es restringir la cantidad de transacciones procesadas por día por un Node. Gmail utiliza esto al limitar el número de correos electrónicos enviados y recibidos por una persona por día hasta 500. Después de 500 correos electrónicos, no permite que los usuarios envíen o reciban más correos electrónicos.
Sin embargo, esta tecnología es increíble y las criptomonedas como Bitcoin y Ethereum, que se basan en la tecnología Blockchain, nunca han sido pirateadas ni atacadas.
Publicación traducida automáticamente
Artículo escrito por agarwaltushar35 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA