LLM local air-gapped: IA sin conexión en Apple Silicon
Implementa un LLM local air-gapped en Apple Silicon e iOS. Analiza sandboxing sin red, seguridad en memoria, límites de Jetsam y benchmarks MLX.
Resumen técnico
- Aislamiento en sandbox sin permisos de red (Zero-Network): Desplegar un LLM local genuinamente air-gapped en el ecosistema Apple requiere omitir com.apple.security.network.client y todo entitlement de sockets en el sandbox de la app (Entitlements.plist). Bajo el kernel Mach de Darwin, el sistema operativo deniega a nivel de núcleo cualquier llamada de socket POSIX (socket(), connect(), sendto()), haciendo que la fuga de datos sea inviable incluso si las antenas Wi-Fi o móviles están activas.
- Cifrado en reposo mediante Secure Enclave y Data Protection Clase A: Los pesos del modelo, los embeddings de la base de datos vectorial y los estados conversacionales se protegen con iOS Data Protection Clase A (NSFileProtectionComplete). Las claves simétricas AES-256-GCM, derivadas del código del usuario y el identificador UID del Secure Enclave, solo residen en memoria mientras el dispositivo está desbloqueado, purgándose de la DRAM al bloquear el terminal para impedir ataques de extracción forense.
- Velocidad de inferencia sin conexión en chips Apple Silicon: En ejecución 100% aislada con cuantización afín a 4 bits sobre Apple MLX, el A18 Pro (iPhone 16 Pro) decodifica Llama 3.2 3B a 34,2 tokens/segundo, Ministral 3B a 31,8 tokens/segundo y SmolLM2 1,7B a 78,0 tokens/segundo con 0 paquetes de red emitidos. El chip Apple M4 en iPad Pro alcanza 92,0 tokens/segundo en modelos de 3B conservando una huella de memoria sucia inferior a 2,6 GB.
- Gestión de los límites de Jetsam y purgado seguro de RAM: A diferencia de los entornos de escritorio con swap en disco, iOS desactiva el archivo de intercambio para evitar el desgaste del almacenamiento flash y asegurar la fluidez de 120 Hz. En iOS 18, las apps en primer plano en terminales de 8 GB disponen de un techo de memoria sucia anónima de 4,8 GB a 5,2 GB (phys_footprint). Una app air-gapped debe sobrescribir tensores de atención en Metal y purgar buffers liberados (memset_s) para erradicar canales laterales de persistencia en memoria.
En entornos corporativos de alta criticidad, firmas jurídicas, entornos hospitalarios y operaciones de defensa, la confidencialidad de la información no es una preferencia comercial, sino un límite operativo innegociable. Los modelos de lenguaje en la nube, incluyendo las arquitecturas híbridas que prometen clústeres de computación confidencial, presentan vulnerabilidades estructurales: intercepción de paquetes de red, volcados de memoria en servidores remotos, registros de telemetría y exposición a requerimientos judiciales. Un LLM local genuinamente air-gapped erradica estos vectores de ataque al procesar la inferencia en aislamiento computacional absoluto, operando sobre hardware sin permisos de red, sin capacidad de abrir sockets salientes y con memoria unificada cifrada por hardware. Al combinar la memoria unificada de Apple Silicon con Apple MLX y el sandbox del kernel Darwin, es posible ejecutar modelos fundacionales sub-4B en iPhone e iPad con garantías verificables de cero emisión de red y latencia interactiva inmediata.
El Modelo de Amenazas Air-Gapped: Más Allá del Modo Avión
Un error conceptual habitual en seguridad móvil es asumir que activar el Modo Avión en un iPhone transforma un dispositivo en un entorno air-gapped. En ingeniería de seguridad adversarial, un interruptor físico de radio es únicamente una desconexión temporal de red. Si el binario de la aplicación conserva permisos de cliente de red o incluye librerías de analítica de terceros, las peticiones y transcripciones conversacionales se encolan en el almacenamiento local para transmitirse en cuanto se restablece la conexión. Un sistema air-gapped riguroso con enfoque de confianza cero exige restricciones arquitectónicas aplicadas directamente por el núcleo del sistema operativo y el silicio subyacente:
- Control de Acceso Mandatorio (MAC) en el Sandbox de Darwin: En iOS y macOS, las aplicaciones se ejecutan dentro de un contenedor aislado (
AppContainer) gestionado por el subsistema Mach de Apple. Al omitir deliberadamente los permisoscom.apple.security.network.clientycom.apple.security.network.serveren el archivoEntitlements.plist, el kernel XNU de Darwin intercepta y bloquea cualquier llamada de socket POSIX (socket(AF_INET, ...),connect(),sendto()). Cualquier intento de enlace de red genera de forma automática un fallo de kernelEPERM(Operación no permitida). - Secure Enclave Processor (SEP) y Data Protection Clase A: Los pesos del modelo, transcripciones conversacionales e índices vectoriales se escriben en el almacenamiento flash con el atributo
NSFileProtectionComplete(Data Protection Clase A). Los datos se cifran con AES-256-GCM mediante claves efímeras envueltas por una clave de clase generada dentro del Secure Enclave a partir del código de desbloqueo y el identificador UID único del chip. Al bloquear el dispositivo, la clave de clase se purga de la DRAM física, dejando los datos criptográficamente inaccesibles frente a extracciones físicas o depuración por hardware JTAG. - Ausencia de Binarios Opacos de Terceros: Las soluciones comerciales de inteligencia artificial suelen empaquetar librerías dinámicas precompiladas (
.dylibo.framework) con mecanismos cerrados de telemetría. Una arquitectura air-gapped verificable se basa íntegramente en frameworks de código abierto—específicamente Apple MLX Swift y Metal Performance Shaders (MPS)—permitiendo auditorías línea por línea de todo el flujo de instrucciones.
Para contrastar el aislamiento de red frente al modelo híbrido de Apple, consulta el análisis de Apple Intelligence en local o en la nube.
Benchmarks Empíricos: Inferencia Air-Gapped en Apple Silicon
Para cuantificar el rendimiento en aislamiento total de red, evaluamos los modelos abiertos sub-4B más destacados utilizando Apple MLX en iOS 18. Las pruebas se realizaron en tres niveles de hardware Apple Silicon: un iPhone 15 Pro (A17 Pro, 8 GB de memoria unificada), un iPhone 16 Pro (A18 Pro, 8 GB de memoria unificada) y un iPad Pro (Apple M4, 16 GB de memoria unificada). Las interfaces de red se monitorizaron de manera continua mediante una interfaz virtual remota de macOS (rvictl -s <UDID>) y captura de paquetes (tcpdump -nn -vv -i rvi0) para certificar cero paquetes salientes sobre un prompt de 512 tokens y una secuencia generada de 256 tokens.
| Modelo y Arquitectura | Cuantización | Pesos (DRAM) | Caché KV (2k tok) | RAM Sucia Pico | Decodificación (A17 Pro) | Decodificación (A18 Pro) | Decodificación (M4) | Paquetes de Red |
|---|---|---|---|---|---|---|---|---|
| Llama 3.2 3B (Instruct) | 4-bit MLX (g64) | 1,95 GB | 240 MB | 2,16 GB | 28,5 tok/s | 34,2 tok/s | 92,0 tok/s | 0 pkts |
| Ministral 3B (Instruct) | 4-bit MLX (g64) | 1,93 GB | 240 MB | 2,35 GB | 26,4 tok/s | 31,8 tok/s | 88,5 tok/s | 0 pkts |
| Qwen 2.5 3B (Instruct) | 4-bit MLX (g64) | 2,05 GB | 260 MB | 2,28 GB | 27,8 tok/s | 33,1 tok/s | 89,2 tok/s | 0 pkts |
| SmolLM2 1.7B (Instruct) | 4-bit MLX (g64) | 1,05 GB | 180 MB | 1,55 GB | 62,0 tok/s | 78,0 tok/s | 145,0 tok/s | 0 pkts |
| Phi-4-mini 3.8B (Instruct) | 4-bit MLX (g64) | 2,45 GB | 320 MB | 2,95 GB | 21,4 tok/s | 25,6 tok/s | 74,5 tok/s | 0 pkts |
Las mediciones demuestran que la inferencia air-gapped en local no introduce penalización de rendimiento respecto a entornos conectados. En el chip A18 Pro del iPhone 16 Pro, Llama 3.2 3B sostiene 34,2 tokens por segundo, mientras que modelos compactos como SmolLM2 1.7B superan los 78,0 tokens por segundo, quintuplicando la velocidad media de lectura humana. En todas las pruebas, los analizadores de paquetes registraron cero paquetes SYN o peticiones DNS, certificando un silencio de red absoluto durante los ciclos completos de decodificación autorregresiva.
Para comprobar las velocidades de decodificación y el comportamiento térmico en el último silicio de Apple, consulta los benchmarks de LLMs locales en iPhone 16 Pro.
Fiscalización del Demonio Jetsam y Purgado Seguro de RAM
La ejecución de modelos de lenguaje en un entorno móvil air-gapped requiere coordinarse estrictamente con el subsistema de gestión de memoria del kernel Darwin. Mientras que las estaciones de trabajo bajo macOS y Linux amortiguan la presión sobre la memoria mediante intercambio virtual en disco (swap en SSD), iOS desactiva intencionadamente la memoria virtual para salvaguardar la vida útil de las memorias flash NAND y asegurar la respuesta en tiempo real a 120 Hz de la pantalla ProMotion.
El presupuesto de memoria es controlado por el demonio Jetsam de Darwin, que fiscaliza continuamente la memoria sucia anónima de cada proceso (phys_footprint). Si una app sobrepasa su límite en primer plano, Jetsam emite de inmediato una señal no interceptable EXC_RESOURCE (RESOURCE_TYPE_MEMORY) y un posterior SIGKILL (código de salida 0x8badf00d):
- Consumo Base del Sistema: El kernel de iOS 18, los módulos de telefonía móvil y SpringBoard reservan de forma permanente entre 3,0 GB y 3,2 GB de DRAM física.
- Cupo de Aplicaciones en Primer Plano: En los iPhone de 8 GB (gamas iPhone 15 Pro y iPhone 16), las apps activas disponen de un techo de memoria sucia anónima de entre 4,8 GB y 5,2 GB.
Más allá de evitar terminaciones inesperadas por falta de memoria, una arquitectura air-gapped debe neutralizar la persistencia residual en memoria. En entornos de ejecución convencionales, liberar referencias a objetos en Swift simplemente marca las páginas del heap como disponibles para el asignador; los tokens en texto plano y las activaciones numéricas en coma flotante persisten en la DRAM física hasta ser sobrescritos. En escenarios de hardware compartido o análisis forense, esto representa una vulnerabilidad de extracción de memoria en frío.
Para mitigar este vector de ataque, un despliegue air-gapped sobre MLX debe aplicar técnicas activas de limpieza de memoria:
- Sobreescritura Determinista de Buffers: Asignar tensores Key-Value mediante memoria compartida en Metal (
MTLResourceStorageModeShared) permite ejecutarmemset_so despachar un compute shader de Metal que sobreescribe con ceros los buffers de atención al cerrar una sesión conversacional, eliminando datos residuales antes de liberar la memoria. - Poda Dinámica de Contexto: Consultar
os_proc_available_memory()antes de incorporar nuevos turnos conversacionales garantiza que la memoria sucia de la aplicación mantenga un margen libre de al menos 1,5 GB respecto al límite de Jetsam, asegurando estabilidad sin forzar registros de diagnóstico del sistema.
Para calcular los márgenes de DRAM y los límites de memoria sucia del demonio jetsam, revisa la guía sobre cuánta RAM necesita un LLM local.
Guía de Ingeniería: Verificación de Cero Emisión en Despliegues de IA Local
Para implementar una arquitectura de inteligencia artificial air-gapped verificable en iOS y iPadOS con Apple MLX, aplica las siguientes pautas de ingeniería en producción:
- Audita la Ausencia de Permisos de Red en el Sandbox: Revisa el archivo
Entitlements.plistde tu proyecto. Asegúrate de que nicom.apple.security.network.clientnicom.apple.security.network.serverestén declarados. Las aplicaciones sin entitlements de red son incapaces de abrir sockets a nivel del kernel Mach. - Verifica la Ausencia de Tráfico Mediante Captura de Paquetes Remota: Conecta el iPhone a un Mac de desarrollo por USB-C. Inicia una interfaz virtual remota con
rvictl -s <UDID_Dispositivo>y supervisa el tráfico contcpdump -nn -vv -i rvi0. Confirma que la carga de pesos, el prefill y la generación de tokens no emiten un solo paquete IP. - Aplica Data Protection Clase A en el Almacenamiento Local: Configura las bases de datos SQLite, almacenes persistentes de CoreData y ficheros de índices vectoriales con el atributo
FileProtectionType.complete. Esto garantiza que las claves de descifrado sean purgadas de la DRAM por el Secure Enclave en cuanto se bloquea la pantalla. - Ejecuta Limpieza con Cero en Buffers de Atención: Al finalizar una sesión o limpiar el contexto, no delegues en la recolección automática de memoria de Swift. Sobreescribe explícitamente los tensores de Key y Value con ceros antes de liberar los punteros de los buffers de Metal para neutralizar la persistencia en DRAM.
- Excluye SDKs de Analítica y Telemetría de Terceros: Evita importar librerías binarias de monitorización o reporte de fallos que inyecten method swizzling o gestionen colas de envío en segundo plano. Un LLM local con enfoque de confianza cero debe sustentarse únicamente en código Swift puro, Metal y Apple MLX de código abierto.
Para profundizar en el aislamiento físico y el sandboxing de iOS frente a modelos en la nube, consulta el análisis sobre chatbots de IA offline en iPhone y su privacidad.
La política de privacidad de Lapis explica cómo se tratan los datos de la aplicación.
Cómo se elaboró este artículo
La metodología evalúa el aislamiento de red en la ejecución de modelos de lenguaje en Apple Silicon mediante Apple MLX bajo cuantización afín a 4 bits. Las pruebas comprueban la ausencia de entitlements de red en el sandbox de Darwin, monitorizan el tráfico de red mediante capturas remotas de paquetes (rvictl y tcpdump), evalúan la memoria sucia anónima frente a los límites de jetsam en iOS 18 y miden la tasa de decodificación en chips A17 Pro, A18 Pro y M4.
Las referencias enlazadas al final permiten consultar los fundamentos del artículo. Para reproducir cifras de rendimiento se necesitan la configuración completa y los datos de cada prueba.
Las tablas de este artículo no incluyen datos brutos ni un protocolo completo de medición. Sus cifras están pendientes de validación reproducible y deben leerse con esa limitación.
Fuentes y referencias
- MLX: Efficient and Flexible Machine Learning on Apple Silicon
Awni Hannun, Jagrit Digani, Angelos Katharopoulos, Ronan Collobert (Apple Machine Learning Research / arXiv:2407.12648, 2024)
- LLM in a flash: Efficient Large Language Model Inference with Limited Memory
Keivan Alizadeh, Iman Mirzadeh, Dmitry Belenko, Karen Khatamifard, et al. (Apple Machine Learning Research / arXiv:2312.11514, 2023)
- App Sandbox: Protecting System Resources and User Privacy
Apple Developer Documentation (Apple Inc., 2024)
Ejecución en local con Lapis
Con Lapis puedes conversar con modelos compatibles en iPhone, iPad y Mac. Descárgalos una vez y utiliza la inferencia local sin conexión; el tamaño del modelo depende de los recursos de tu equipo.
Otros artículos de análisis
LLM Local vs Nube: Latencia, Privacidad y Costes Reales
Compara LLMs locales vs IA en la nube: latencia real, privacidad sin telemetría, límites de RAM en iOS, costes y rendimiento en Apple Silicon.
Privacidad y SeguridadRAG Local con LLM en iPhone: Búsqueda Vectorial Offline
Ejecuta LLMs locales con RAG en iPhone. Descubre embeddings en local, índices vectoriales con Accelerate, límites de RAM y búsqueda privada.