Durante casi 15 años, todas las comunicaciones entre nodos en la red de Bitcoin se transmitieron de manera completamente visible, sin ninguna forma de cifrado. Sin embargo, esto cambió en 2024 con la adopción del BIP 324, que introdujo el protocolo de transporte “v2” para la comunicación entre nodos. Este nuevo protocolo incorpora cifrado oportunista, lo que hace que el tráfico sea ilegible para adversarios pasivos que puedan monitorear los mensajes entre nodos. Desde su implementación en Bitcoin Core 26.0 y su habilitación por defecto en la versión 27.0, este protocolo se utiliza ahora para la mayoría del tráfico P2P global de Bitcoin.
Volviendo a lo básico, la función principal de un nodo de Bitcoin es intercambiar piezas de información que son, en su esencia, públicas: bloques en la cadena de bloques, transacciones en la mempool y direcciones IP de otros nodos de Bitcoin. Dado que esta información no es secreta, no resulta obvio de inmediato por qué cifrarla podría ser beneficioso. Sin embargo, al observar con más detenimiento, se puede notar que hay una gran cantidad de metadatos asociados con el tráfico de Bitcoin que vale la pena proteger. Si un adversario de gran escala puede ver qué transacción se retransmite en qué momento y desde qué dirección IP, puede inferir qué nodo fue el probable originador – y, por ende, creador – de una transacción. Además, observar las conexiones entre nodos puede revelar a qué ciertos nodos pertenecen, permitiendo apuntar a nodos de empresas específicas o mineros para ataques. Para algunos usuarios que operan nodos en regímenes opresivos, podría ser indeseable revelar que están ejecutando un nodo de Bitcoin.
En el protocolo P2P diseñado por Satoshi, los nodos se conectan entre sí y a través de esas conexiones envían mensajes como inv (“tengo nuevos bloques/transacciones para ti”), getdata (“dame ese bloque/transacción”), addr (“aquí hay una dirección IP de otro nodo”), entre otros. La cantidad de mensajes y características que soportan ha cambiado significativamente a lo largo del tiempo, incluyendo soporte para los primeros clientes SPV con el BIP 37, retransmisión de bloques compactos con el BIP 152, soporte para direcciones Tor v3 con el BIP 155, y muchos más. Sin embargo, la forma en que esos mensajes se codifican en bytes transmitidos por la red – lo que llamamos el protocolo de transporte – prácticamente no había cambiado desde 2009, salvo por la introducción de sumas de verificación en mayo de 2010. El BIP 324 fue el primer cambio de esta naturaleza desde entonces.
A pesar de su naturaleza bastante fundamental, cabe destacar que este cambio es completamente opcional. No se trata de un cambio de consenso y no requería ningún mecanismo de coordinación o activación. Se utiliza simplemente entre nodos individuales que lo soportan, pero cuando un nodo que apoya el BIP 324 se comunica con otro que no, recurren a hablar el viejo protocolo de transporte (“v1”). Así fue como, sin mucha fanfarria, poco más de dos años después del lanzamiento del software cliente que permite su uso por defecto, la mayoría de las comunicaciones entre nodos de Bitcoin empezaron a utilizar el cifrado del protocolo de transporte v2.
La idea de cifrar el tráfico de Bitcoin no es nueva. En 2016, el desarrollador de Bitcoin Core, Jonas Schnelli, propuso el BIP 151, que permitía mejorar las conexiones para pasarlas a un modo cifrado. Sin embargo, dicha propuesta no avanzó, y dado que ese enfoque no podía ocultar el apretón de manos inicial entre dos nodos a ojos curiosos, se propuso el BIP 324 en 2019 para renovar completamente el protocolo de transporte. Este enfoque más moderno introdujo una nueva clase de conexiones que son cifradas desde el principio. El progreso se aceleró cuando Dhruv Mehta se hizo cargo en 2021, y junto a Tim Ruffing y yo, se convirtió en una propuesta completa que incluía algunas nuevas características como un flujo de bytes pseudorrandom, adaptaciones para el modelado del tráfico y extensiones opcionales. Anunciamos esto en la lista de correo bitcoin-dev en 2022, y después de recibir varios comentarios, se implementó durante 2022 y 2023. La funcionalidad completa se fusionó en Bitcoin Core en 2023, y luego de más pruebas, se habilitó por defecto para todas las conexiones (con nodos que lo soportan) en 2024.
La característica de flujo de bytes completamente pseudorrandom que ofrece el nuevo protocolo significa que no exhibe patrones reconocibles en los bytes transmitidos. Por ejemplo, TLS, que se utiliza para la comunicación con sitios web seguros (“https://” URLs), cifra los contenidos de los sitios, pero no la existencia de que se está utilizando TLS, ni (hasta 2020 con el Encrypted Client Hello, “ECH”) qué nombre de host se solicitó. El transporte v1 utilizado antes del BIP 324 enviaba un patrón de 16 bytes fijos en cada conexión, lo que facilitaba a los cortafuegos censor que bloqueaban cualquier conexión con ese patrón. En cambio, el transporte v2 carece de dicho patrón; cada byte es aleatorio desde la perspectiva de un tercero y por lo tanto completamente impredecible. Cualquier entidad que intente bloquear el tráfico de Bitcoin utilizando este protocolo tendría que bloquear cualquier cosa que parezca aleatoria, lo que podría ser políticamente más complicado que simplemente bloquear tráfico similar a Bitcoin de manera más específica. La parte más difícil de hacer que todo el protocolo sea pseudorrandom fue el hecho de que durante el apretón de manos – antes de que se establezca el cifrado – los nodos necesitan intercambiar claves públicas, y las claves públicas no son simplemente bytes aleatorios. Gracias a una técnica criptográfica relativamente moderna llamada Elligator (2013), y específicamente a una variante llamada ElligatorSwift (2022), que permite codificar claves públicas de curvas elípticas en bytes de apariencia aleatoria, se pudo evitar incluso este patrón.
Es importante señalar que debido a la naturaleza pública de la red Bitcoin, existen limitaciones significativas en las protecciones de privacidad que una capa de transporte cifrada entre nodos puede ofrecer. Los nodos de Bitcoin no confían en sus pares, por lo que realmente no les importa con quién están hablando. No tienen claves públicas conocidas, y por ello el cifrado ofrecido por el transporte v2 es oportunista y no autenticado; ambos lados simplemente generan una nueva clave temporal para cada conexión. Esto significa que es posible que adversarios activos (por ejemplo, tu ISP) realicen un ataque de hombre en el medio: hablan en v2 con ambos lados de la conexión, pero descifran y vuelven a cifrar toda la comunicación que fluye entre ellos, lo que aún permite la vigilancia y, posiblemente, la manipulación o censura. Sin embargo, el enfoque está en que esto resulta significativamente más costoso de hacer a gran escala, en comparación con la simple inspección de mensajes individuales no cifrados como es posible en el transporte v1. Y, por supuesto, dado que la mayoría de las conexiones de Bitcoin se realiza arbitrariamente a nodos no confiables, un adversario que quiera espiar a gran escala siempre tiene la opción de crear una gran cantidad de nodos por su cuenta y hacer que una gran parte de la red se conecte a ellos. Al igual que en los ataques de hombre en el medio, esto es más costoso de hacer a gran escala que simplemente inspeccionar paquetes v1.
Por lo tanto, el BIP 324 se debe ver no tanto como una mejora en la privacidad en sí misma, sino como parte de un esfuerzo más amplio para aumentar los costos de la vigilancia a gran escala de la red Bitcoin, sin depender de redes alternativas como Tor o I2P, que tienen sus propios inconvenientes, como mayor latencia y riesgo de denegación de servicio que no serían aceptables para todos los nodos de la red. Además, el BIP 324 ofrece una serie de características que aún no se han implementado, como el modelado del tráfico para evitar revelar información sobre las transacciones que se están retransmitiendo únicamente a través de la observación de los tamaños de los paquetes cifrados. Con suerte, estas características se aprovecharán aún más en los próximos años.
Este artículo es la Carta del Editor presentada en la última edición impresa de Bitcoin Magazine, The Core Issue. Lo compartimos aquí como un vistazo anticipado a las ideas exploradas en todo el número.
Fuente: bitcoinmagazine.com