Esquizofrenia arquitectónica Facebook Libra

Después de dos años, regresé al blog para una publicación que difiere de las habituales y aburridas conferencias sobre Haskell y las matemáticas. He estado trabajando en fintech en la UE durante los últimos años y parece un buen momento para escribir sobre un tema que ha recibido poca atención por parte de los medios tecnológicos.

Facebook lanzó recientemente lo que llama una “nueva plataforma de servicios financieros” llamada Libra. Se posiciona como un sistema de liquidación digital basado en una canasta de monedas internacionales que se administran en una “cadena de bloques” y se almacenan en un fondo de dinero administrado desde Suiza. Los objetivos del proyecto son ambiciosos y conllevan consecuencias geopolíticas a gran escala.

В Financial Times и New York Times Muchos artículos sensatos sobre los supuestos monetarios y económicos erróneos detrás del sistema financiero propuesto. Pero no hay suficientes especialistas capaces de realizar análisis desde un punto de vista técnico. No mucha gente trabaja en infraestructura financiera y habla públicamente sobre su trabajo, por lo que este proyecto no recibe mucha cobertura en los medios tecnológicos, aunque sus entrañas están abiertas al mundo. Me refiero a código abierto en repositorios. Libra и Organización Calibra.

Lo que está abierto al mundo es un artefacto arquitectónicamente esquizofrénico que pretende ser una plataforma segura para la infraestructura de pagos global.

Si nos sumergimos en el código base, la implementación real del sistema difiere completamente del objetivo declarado, y de la manera más extraña. Estoy seguro de que este proyecto tiene una historia corporativa interesante. Así que es lógico suponer que fue diseñado con cierta diligencia, pero en realidad veo un conjunto realmente extraño de decisiones arquitectónicas que rompen todo el sistema y ponen en riesgo a los usuarios.

No pretendo tener una opinión objetiva sobre Facebook como empresa. Pocas personas en la industria de TI la miran con simpatía. Pero una comparación de sus declaraciones y el código publicado muestra claramente que el propósito declarado es fundamentalmente engañoso. En definitiva, este proyecto no empodera a nadie. Seguirá enteramente bajo el control de una empresa cuyo negocio publicitario está tan sumido en escándalos y corrupción que no tiene más remedio que intentar diversificar sus pagos y su calificación crediticia para sobrevivir. El objetivo claro a largo plazo es actuar como intermediario de datos en el acceso de los consumidores al crédito basándose en sus datos personales de las redes sociales. Esta es una historia absolutamente horrible y oscura que no recibe la atención que merece.

La única gracia salvadora de esta historia es que el artefacto que crearon es tan hilarantemente inadecuado para la tarea en cuestión que sólo puede verse como un acto de arrogancia. Hay varios errores arquitectónicos importantes en este proyecto:

Resolver el problema de los generales bizantinos en una red de control de acceso es un diseño inconsistente

El problema de los generales bizantinos es un área bastante limitada de investigación de sistemas distribuidos. Describe la capacidad de un sistema de red para resistir fallas aleatorias de componentes mientras se toman acciones correctivas críticas para el funcionamiento del sistema. Una red resistente debe resistir varios tipos de ataques, incluidos reinicios, interrupciones, cargas maliciosas y votaciones maliciosas en elecciones de liderazgo. Esta es la decisión principal para la arquitectura Libra y aquí no tiene ningún sentido.

La sobrecarga de complejidad temporal de esta estructura adicional depende del algoritmo. Hay mucha literatura sobre variantes de los protocolos Paxos y Raft que resuelven el problema de los generales bizantinos, pero todas estas estructuras introducen una sobrecarga adicional para la comunicación a través de Esquizofrenia arquitectónica Facebook Libra para mantener el quórum. Para Libra, eligieron un algoritmo con el mayor coste de comunicación posible Esquizofrenia arquitectónica Facebook Libra en caso de fracaso del liderazgo. Y existe una sobrecarga adicional por la posible reelección de líderes en múltiples tipos de eventos de falla de la red.

Para un sistema que opera dentro de un consorcio de corporaciones multinacionales altamente reguladas, donde todos los usuarios tienen un código firmado por Facebook y el acceso a la red está controlado por Facebook, simplemente no tiene sentido considerar participantes maliciosos en el nivel de consenso. No está claro por qué este sistema resolvería siquiera el problema de los generales bizantinos, en lugar de simplemente mantener un registro de auditoría consistente para verificar el cumplimiento. La posibilidad de que un nodo Libra administrado por Mastercard o Andressen Horrowitz comience repentinamente a ejecutar código malicioso es un escenario extraño para planificar y se aborda mejor simplemente garantizando la integridad del protocolo y medios no técnicos (es decir, legales).

El testimonio ante el Congreso presentó el producto como un competidor de los nuevos protocolos de pago internacionales como WeChat, Alipay y M-Pesa. Sin embargo, ninguno de estos sistemas está diseñado para ejecutarse en grupos de validadores para resolver el problema de los generales bizantinos. Están diseñados simplemente en un bus tradicional de gran ancho de banda que realiza el cableado de acuerdo con un conjunto fijo de reglas. Este es un enfoque natural para diseñar un sistema de pago. Bien diseñado el sistema de pagos simplemente no encontrará el problema del doble gasto y las bifurcaciones.

La sobrecarga del algoritmo de consenso no resuelve ningún problema y solo limita el rendimiento del sistema sin otro motivo que el culto a la carga de la cadena de bloques pública, que no está diseñada para este caso de uso.

Libra no tiene privacidad en las transacciones

Según la documentación, el sistema está diseñado teniendo en cuenta seudónimo, es decir, las direcciones utilizadas en el protocolo se obtienen de claves públicas en curvas elípticas y no contienen metadatos sobre cuentas. Sin embargo, en ninguna parte de la descripción de la estructura de gobierno de la organización o en el protocolo mismo se indica cómo se ocultarán a los validadores los datos económicos involucrados en las transacciones. El sistema está diseñado para replicar transacciones a gran escala para una variedad de partes externas que, según las leyes de secreto bancario existentes en Europa y Estados Unidos, no deberían estar al tanto de los detalles económicos.

Las políticas de datos entre países son difíciles de coordinar, especialmente dadas las leyes y regulaciones dispares en diferentes jurisdicciones con diferentes puntos de vista culturales sobre la protección de datos y la privacidad. El protocolo en sí está por defecto completamente abierto a los miembros del consorcio, lo que supone una clara deficiencia técnica que no cumple con los requisitos para los que fue diseñado.

Libra HotStuff BFT no puede alcanzar el rendimiento requerido para un sistema de pago

En el Reino Unido, los sistemas de compensación como BAC son capaces de gestionar alrededor de 580 millones de transacciones al mes. Al mismo tiempo, sistemas altamente optimizados como Visa pueden procesar 000 de transacciones por día. El rendimiento varía según el tamaño de la transacción, el enrutamiento de la red, la carga del sistema y Controles ALD (antilavado de dinero, esquemas de blanqueo de dinero).

Libra está tratando de resolver problemas que en realidad no son problemas para las transferencias nacionales, a medida que los estados nacionales han modernizado su infraestructura de compensación durante la última década. Para los consumidores minoristas de la Unión Europea, mover dinero no supone ningún problema. En la infraestructura tradicional, esto se puede hacer con un teléfono inteligente estándar en segundos. Para grandes transferencias corporativas, existen varios mecanismos y reglas asociados con el movimiento de grandes cantidades de dinero.

No existe ninguna razón técnica por la que los pagos transfronterizos no puedan procesarse instantáneamente, aparte de las diferencias en las reglas y requisitos entre las jurisdicciones pertinentes. Si las medidas preventivas necesarias (debida diligencia del cliente, controles de sanciones, etc.) se realizan varias veces en diferentes etapas de la cadena de transacción, esto puede resultar en un retraso en la transacción. Sin embargo, este retraso es puramente una función de la legislación regulatoria y el cumplimiento, no de la tecnología.

Para los consumidores, no hay ninguna razón por la que una transacción en el Reino Unido no se liquide en cuestión de segundos. De hecho, las transacciones minoristas en la UE se están desacelerando verificación KYC (Conozca a su cliente) y restricciones AML impuestas por gobiernos y reguladores, que se aplican igualmente a los pagos de Libra. Incluso si Facebook superara las barreras a las transferencias transfronterizas y a las transferencias privadas de datos, el modelo propuesto está a cientos de años-persona de alcanzar el rendimiento de transacciones globales y probablemente necesitaría ser rediseñado desde cero.

El idioma de Libra Move es incorrecto

El documento técnico hace afirmaciones audaces sobre un lenguaje nuevo y no probado llamado Move. Estas afirmaciones son bastante dudosas desde el punto de vista de la teoría del lenguaje de programación (PLT).

Move es un nuevo lenguaje de programación para implementar lógica de transacciones personalizada y contratos inteligentes en la cadena de bloques Libra. Dado que Libra pretende servir algún día a miles de millones de personas, Move está diseñado teniendo la seguridad como máxima prioridad.

Una característica clave de Move es la capacidad de definir tipos de recursos arbitrarios con una semántica inspirada en la lógica lineal.

En las cadenas de bloques públicas, los contratos inteligentes se enfrentan a la lógica de las redes públicas con cuentas de depósito en garantía, lavado de dinero, emisión de tokens OTC y juegos de azar. Todo esto se hace en un lenguaje increíblemente mal diseñado llamado Solidity, que desde un punto de vista académico hace que el autor de PHP parezca un genio. Curiosamente, el nuevo lenguaje de Facebook parece no tener nada que ver con estas tecnologías, ya que en realidad es un lenguaje de programación destinado a oscuros propósitos empresariales.

En los libros de contabilidad distribuidos privados, los contratos inteligentes son uno de esos términos que los consultores utilizan sin mucha consideración por una definición o propósito claros. Los consultores de software empresarial suelen ganar dinero gracias a la ambigüedad, y los contratos inteligentes son la apoteosis del oscurantismo corporativo porque pueden definirse literalmente como cualquier cosa.

Después de hacer afirmaciones sobre su seguridad, debemos observar la semántica del lenguaje. La corrección en la teoría del lenguaje de programación generalmente consta de dos pruebas diferentes: "progreso" y "preservación", que determinan la coherencia de todo el espacio de reglas de evaluación del lenguaje. Más específicamente, en teoría de tipos, una función es "lineal" si usa su argumento exactamente una vez, y "afín" si lo usa como máximo una vez. El sistema de tipos lineales proporciona una garantía estática de que una función lineal declarada es verdaderamente lineal al asignar tipos a todas las subexpresiones de funciones y realizar un seguimiento de dónde se realizan las llamadas. Esta es una propiedad sutil que hay que demostrar y no es fácil de implementar para un programa completo. La tipificación lineal sigue siendo un campo de estudio muy académico, influenciado por la implementación de la unicidad de tipos en Clean y la propiedad de tipos en Rust. Hay algunas propuestas preliminares para agregar tipos lineales al compilador Glasgow Haskell.

La afirmación de Move sobre el uso de tipos lineales parece una inmersión injustificada en el compilador, ya que no no existe tal lógica de verificación de tipos. Hasta donde se puede ver, el documento técnico cita literatura canónica de Girard y Peirce, y no hay nada similar en la implementación real.

Además, la semántica formal del lenguaje supuestamente seguro no aparece en ninguna parte de la implementación o del documento. El lenguaje es lo suficientemente pequeño como para encontrar una prueba completa de semántica correcta en Coq o Isabelle. En realidad, es muy posible implementar un compilador de conversión completa de un extremo a otro con transferencia de prueba a código de bytes con herramientas modernas inventadas en la última década. Sabemos cómo hacerlo, empezando por obras de George Necula y Peter Lee allá por 1996.

Desde la perspectiva de la teoría del lenguaje de programación, es imposible probar la afirmación de que Move es un lenguaje confiable y seguro, ya que estas afirmaciones equivalen a pura agitación y marketing en lugar de evidencia real. Esta es una situación alarmante para un proyecto lingüístico al que se le pide que procese miles de millones de dólares en transacciones.

La criptografía de Libra es defectuosa

Construir criptosistemas seguros es un problema de ingeniería muy difícil, y siempre es mejor abordar el trabajo con código peligroso con una buena dosis de saludable paranoia. Hay avances importantes en este ámbito, como el proyecto Microsoft Everest, que está construyendo una plataforma segura verificable. Pila TLS. Ya existen herramientas para crear primitivas verificables. Aunque esto es caro, claramente no está más allá de las capacidades económicas de Facebook. Sin embargo, el equipo decidió no participar en el proyecto, que se anunció como una base confiable para el sistema financiero global.

proyecto libra depende de varias bibliotecas bastante nuevas para crear criptosistemas experimentales que solo han aparecido en los últimos años. Es imposible decir si las dependencias de las siguientes herramientas son seguras o no, ya que ninguna de estas bibliotecas ha sido auditada y no tiene políticas de divulgación estándar. En particular, para algunas bibliotecas principales no hay certeza con respecto a la protección contra ataques de canal lateral y ataques de sincronización.

  1. ed25519-dalek
  2. curva25519-dalek

La biblioteca libra se vuelve aún más experimental y va más allá modelo estandar, aplicando técnicas muy nuevas como funciones aleatorias verificables (VRF), pares bilineales y firmas de umbral. Estos métodos y bibliotecas pueden ser razonables, pero combinarlos todos en un solo sistema genera serias preocupaciones sobre el área de superficie de ataque. La combinación de todas estas nuevas herramientas y técnicas aumenta enormemente la complejidad de demostrar la seguridad.

Se debe suponer que toda esta pila criptográfica es vulnerable a varios ataques hasta que se demuestre lo contrario. El famoso modelo de Facebook 'Move Fast and Break Things' no se puede aplicar a las herramientas criptográficas que procesan datos financieros de los clientes.

Libra no logra implementar mecanismos de protección al consumidor

Una característica distintiva del sistema de pago es la capacidad de revertir una transacción si el pago se cancela mediante una demanda o provoca una falla accidental o del sistema. El sistema Libra está diseñado para ser "completo" y no incluye un tipo de transacción para cancelación de pago. En el Reino Unido, todos los pagos entre £100 y £30,000 están sujetos a la Ley de Crédito al Consumo. Esto significa que el sistema de pago comparte la responsabilidad con el vendedor en caso de que haya un problema con el producto adquirido o si el destinatario del pago no presta el servicio. Se aplican normas similares en la UE, Asia y América del Norte.

El diseño actual de Libra no incluye un protocolo para cumplir con estas leyes y no tiene un plan claro para crear uno. Peor aún, desde una perspectiva arquitectónica, la finalidad de la estructura de datos autenticados del kernel, basada en el estado de la unidad Merkle, no permite ningún mecanismo para crear dicho protocolo sin rediseñar el kernel.

Después de realizar una revisión técnica de este proyecto, podemos concluir que simplemente no pasará la prueba en ninguna revista respetada de investigación de sistemas distribuidos o de ingeniería financiera. Para intentar cambiar la política monetaria global, es necesario realizar una enorme cantidad de trabajo técnico para crear una red confiable y un procesamiento seguro de los datos de los usuarios en los que el público y los reguladores puedan confiar.

No veo ninguna razón para creer que Facebook haya hecho el trabajo necesario en su diseño para superar estos problemas técnicos o que tenga alguna ventaja técnica sobre la infraestructura actual. Decir que una empresa necesita flexibilidad regulatoria para explorar innovaciones no es una excusa para no hacerlo primero.

Fuente: habr.com

Añadir un comentario