Rust e IA para la Defensa

Mar 28, 2026 15 min

La discusión sobre inteligencia artificial en el ámbito de la defensa suele quedar atrapada en dos narrativas extremas: la del arma autónoma que decide sola, o la del sistema mágico que todo lo resuelve. Ninguna es útil. Lo que sí es útil —y urgente— es pensar cómo construir capacidades propias de protección, vigilancia y resiliencia usando las herramientas que este siglo nos ofrece. Rust es una de ellas. Y en combinación con el ecosistema de IA que ha madurado en los últimos tres años, abre posibilidades concretas que antes requerían depender de proveedores externos o de lenguajes con décadas de deuda técnica acumulada.

Por qué Rust y no C++

La pregunta es legítima. Los sistemas embebidos militares han vivido en C y C++ durante cincuenta años. Funcionan. El problema es que el 70% de los CVEs críticos en software de sistemas son bugs de memoria: buffer overflows, use-after-free, null pointer dereferences. Heartbleed, Log4Shell, y decenas de vulnerabilidades en parsers de red tienen la misma raíz. Rust los elimina por diseño, en tiempo de compilación, sin costo en runtime.

Esto no es teoría. La NSA recomendó formalmente Rust sobre C/C++ en 2022. El Departamento de Defensa de EE.UU. lo usa en proyectos críticos. Y lo hace por la misma razón que debería importarle a cualquier fuerza armada que quiera construir sistemas certificables: el borrow checker no negocia.

Además, Rust corre en no_std. Eso significa que podés deployar inferencia de IA, parsers de protocolo o stacks TCP/IP completos en un microcontrolador STM32 o un nRF52840, sin sistema operativo, sin heap dinámico, con latencia determinística. Eso es exactamente lo que necesitás en un nodo de una red táctica mesh, en un sensor de frontera, o en un drone de patrulla ISR.

El ecosistema que ya existe

El stack Rust para IA en defensa no está en pañales. Está en producción:

  • candle (Hugging Face): inferencia de LLMs y modelos de visión 100% en Rust, sin dependencias Python. Corre LLaMA, Whisper y BERT en una Jetson Nano o una Raspberry Pi.
  • tract: motor ONNX con latencia determinística para ARM Cortex. Ideal para clasificación en tiempo real sobre sensores edge.
  • linfa: el scikit-learn de Rust. Clustering, SVM, PCA, regresión. Sin Python, sin overhead de interprete, deployable en sensores sin SO.
  • rustfft: FFT de punto flotante comparable en velocidad a FFTW, sin dependencias C. Conectado a una SDR, procesa muestras IQ y detecta jammers o emisores no autorizados en el espectro.
  • nom + pcap: parsers de protocolo seguros por construcción. El mismo patrón que hubiera prevenido Heartbleed, aplicado al análisis de tráfico táctico.
  • embassy + smoltcp: async embebido sin sistema operativo, con stack TCP/IP completo y certificable. El candidato natural para nodos de red mesh que tienen que reconectarse solos en menos de 200 ms tras una caída.
  • ring: primitivas criptográficas FIPS 140-2 en Rust puro. AES-256-GCM, ChaCha20, sin código C en la ruta crítica. Usado en producción por Cloudflare y Mozilla.

La combinación de estos crates cubre desde el hardware hasta la inferencia, pasando por la red y la criptografía. Todo sin salir del ecosistema Rust.

Aplicaciones concretas orientadas a la defensa

Vigilancia de frontera y ZEE con Edge AI

Un nodo de vigilancia en una zona remota no puede depender de conectividad permanente. Con candle o tract corriendo sobre una Jetson Nano, el sensor clasifica localmente lo que detecta —persona, vehículo, embarcación— y solo transmite la alerta, no el video crudo. La latencia baja de 500 ms (round-trip a la nube) a menos de 10 ms local. En blackout total de comunicaciones, sigue funcionando.

Ciberdefensa sin firmas con linfa

Los sistemas IDS basados en firmas tienen un problema estructural: no detectan lo que no conocen. Un IDS construido con linfa aprende la línea base de tráfico normal de una red táctica y alerta ante desviaciones estadísticas, sin necesidad de actualizar una base de firmas que en una red aislada jamás se actualiza. El cluster minoritario en un KMeans sobre features de tráfico es, casi siempre, el tráfico anómalo.

Detección de jamming con rustfft

Una SDR procesando muestras IQ con rustfft puede detectar un pico de potencia 6 dB sobre el promedio espectral en menos de un ciclo de procesamiento. Eso es suficiente para identificar un jammer adaptativo o un drone clasificado por su firma de radiofrecuencia antes de que entre en el área de responsabilidad. Todo en un procesador ARM de bajo consumo, sin FFTW, sin Python, sin NumPy.

Comms tácticas cifradas con ring + tokio

Un enlace entre nodos tácticos que no quiere usar TLS completo (demasiado overhead para un radio con ancho de banda limitado) puede usar AES-256-GCM directamente sobre el stream. ring garantiza que el nonce nunca se repite, que la clave nunca toca código C, y que el tag de autenticación viaja junto al ciphertext. tokio maneja la concurrencia async sin data races —el compilador lo garantiza.

RAG y MCP: la capa de inteligencia sobre los datos propios

Aquí es donde la conversación se pone interesante para quien viene del mundo de los sistemas distribuidos.

RAG (Retrieval-Augmented Generation) resuelve el problema de fondo de los LLMs en defensa: no podés mandar doctrina clasificada a una API externa. Con fastembed-rs generás embeddings localmente (BGE-Small corre sin internet), los indexás en una instancia de Qdrant corriendo en localhost —Qdrant está escrito en Rust— y el LLM local consulta el índice antes de responder. El resultado es un asistente que cita los reglamentos, las órdenes de operaciones y los manuales técnicos propios, sin que ningún byte salga del perímetro.

MCP (Model Context Protocol) va un paso más allá: define un protocolo estándar para que el LLM invoque herramientas externas. rmcp, el SDK oficial en Rust, permite construir un servidor MCP que expone funciones Rust compiladas como tools del LLM: estado de sectores tácticos, estado de sensores de frontera, consulta a una base de datos de inteligencia local. La comunicación es por stdio, lo que significa que el modelo y los datos permanecen completamente aislados de la red. Agregar una nueva capacidad al LLM es tan simple como escribir una nueva función Rust.

La arquitectura completa —LLM local + RAG en Rust + servidor MCP en Rust— es un stack de inteligencia artificial para defensa que puede correr air-gapped, en hardware propio, con código auditable.

El problema de fondo: doctrina y soberanía

Toda esta discusión técnica tiene una dimensión que la excede. Cualquier gobierno que adopte sistemas de IA para defensa sin desarrollar capacidades propias de comprensión, auditoría y adaptación de esos sistemas, lo que adoptó en realidad es la doctrina del proveedor. Con sus supuestos, sus sesgos de entrenamiento, sus backdoors potenciales, y su dependencia de la cadena de suministro de silicio concentrada en tres o cuatro actores globales.

Rust no resuelve ese problema solo. Pero es parte de la respuesta. Un ecosistema de IA construido en Rust es auditable, compilable desde fuentes, ejecutable sin dependencias de runtime externas, y certificable bajo estándares como DO-178C. Eso es exactamente la base técnica que necesita una capacidad de defensa soberana.

El factor humano sigue siendo insustituible. La IA amplifica capacidades, no reemplaza el juicio del operador ni la responsabilidad del comandante. Pero ese juicio necesita herramientas confiables. Y la confianza, en software crítico, empieza en el compilador.


Las bibliotecas mencionadas en este artículo son proyectos open source activos: candle, tract, linfa, rustfft, embassy, smoltcp, nom, ring, fastembed-rs, rmcp.

~Antonio Pardo