Ataques Eclipse en la red punto a punto de Bitcoin

Esto es parte de una semana (-ish) serie de blogs donde profundizo en una tecnología genial. Soy inversor en Dell Technologies Capital en Silicon Valley, y ocasionalmente recuerdo mi vida anterior en el mundo académico. Sígueme en Twitter y LinkedIn.

La publicación de esta semana es el resumen de la charla de Ethan Heilman en el seminario de seguridad del MIT en octubre de 2015.

Ethan Heilman de la Universidad de Boston dio una charla en el seminario de seguridad sobre su reciente artículo de Seguridad de Usenix. Este es un trabajo muy interesante que demuestra algunos ataques preocupantes en la red Bitcoin. Destacaré brevemente algunas ideas de su charla. Si quieres más detalles, te recomendaría su artículo.

La gente a menudo piensa que Bitcoin es seguro si al menos el 51 por ciento de la potencia minera es honesto, pero esta seguridad se basa en la suposición de que todas las partes ven bloques / transacciones válidos. Sin embargo, Bitcoin se basa en su propia red peer-to-peer para entregar su información. En consecuencia, si controla la red peer-to-peer, controla el flujo de información y, posteriormente, puede controlar la cadena de bloques. El documento ataca la red peer-to-peer de Bitcoin y utiliza información eclipsante para subvertir la seguridad de Bitcoin.

Para algunos antecedentes, un nodo Bitcoin tiene 117 conexiones TCP entrantes de forma predeterminada y tiene un máximo de 8 conexiones TCP salientes. Estas conexiones forman la red de chismes para propagar transacciones y bloques de Bitcoin. El ataque se dirige solo a los nodos de Bitcoin que aceptan conexiones entrantes porque no todos los nodos aceptan conexiones entrantes.

¿Qué es un ataque de eclipse de información? Un ataque de eclipse de información es un ataque que obtiene el control sobre el acceso de un nodo a la información en la red peer-to-peer. Con la manipulación adecuada de la red peer-to-peer, un adversario puede eclipsar un nodo para que solo se comunique con nodos maliciosos.

¿Qué puede hacer un atacante con un ataque de eclipse? Permite al atacante lanzar un ataque del 51 por ciento con un 40 por ciento de potencia minera. Suponga que la red contiene 3 nodos de minería grandes. Dos controlan el 30 por ciento de la potencia minera y uno controla el 40 por ciento. Si el ataque posee el 40 por ciento del nodo de potencia de minería, puede dividir a los otros 2 mineros para que no puedan construir a partir de los bloques de los demás y puedan superar a cada minero dividido. Como resultado, la cadena de bloques del atacante se convierte en la cadena de bloques de consenso. Otro ataque es el ataque de doble gasto de confirmación n. Este ataque es más complejo y se describe con más detalle en el documento.

¿Cómo eclipsa un atacante un nodo? Para hacer esto, un atacante puede manipular el nodo para que todas sus conexiones salientes sean a las IP del atacante. Esto se puede hacer de forma sencilla. Primero, llene las tablas de pares del nodo con las direcciones IP de los atacantes. Luego, el nodo se reinicia y pierde sus conexiones salientes actuales. Finalmente, el nodo realiza nuevas conexiones solo con las IP del atacante. La siguiente imagen representa una descripción más detallada sobre cómo llevar a cabo el ataque.

Una pregunta es ¿qué tan fáciles son los reinicios? El ataque requiere que los nodos de los usuarios se reinicien. Sin embargo, esto ocurre con bastante frecuencia debido a actualizaciones de software, paquetes de muerte / ataques DoS y fallas de energía / red. Como resultado, Bitcoin asume que el tiempo de actividad del nodo es del 100%, lo que parece poco razonable.

¿Cuántos nodos necesita un atacante? Con las simulaciones, Ethan usó una botnet de 4600 IP, 2 IP por grupo y 5 horas de tiempo para llenar artificialmente con éxito la tabla de IP probada de un nodo. Esto es relativamente pequeño dado que Walowadac Botnet tiene 160,000 IP y 25,000 grupos, lo que muestra que este ataque está en el ámbito de la posibilidad. Luego, realizó un experimento en vivo. Usó 400 IP = 400 grupos y 1 IP por grupo con 1 hora, y llenó el 57 por ciento de la tabla probada con IP de atacantes.

Proporciona algunas contramedidas contra este ataque. Para evitar que el atacante se asegure de que sus direcciones IP sean más recientes para que sea más probable que sean seleccionadas, Bitcoin debe seleccionar direcciones IP al azar sin sesgo hacia marcas de tiempo más recientes. El atacante aprovechó el sesgo de desalojo hacia IP más antiguas y aprovechó la aleatoriedad en el proceso de desalojo para mejorar las probabilidades de completar la tabla probada ejecutando el ataque varias veces. Para evitar esto, asignamos de forma determinista las direcciones IP a los depósitos y las posiciones en los depósitos, desalojando lo que sea que esté en esa posición.

Otro problema es que la tabla probada se llena muy lentamente y contiene principalmente IP muertas. Para evitar esto, Bitcoin debería hacer conexiones de prueba a las IP para llenar las tablas probadas más rápido. Finalmente, las buenas direcciones IP de la tabla probada son desalojadas. Para evitar esto, Bitcoin debería probar las direcciones IP en la tabla probada y no debería desalojarlas si todavía están en línea.

Algunas de estas contramedidas se han incluido y parcheado. Este trabajo demuestra que el modelo de seguridad de Bitcoin, como cualquier otro modelo de seguridad, tiene fallas y requiere más investigación.

Si tiene preguntas, comentarios, sugerencias de temas futuros o simplemente quiere saludarme, envíeme una nota a [email protected]