live

Cheetah: Optimizing and Accelerating Homomorphic Encryption for Private Inference

La inferencia privada de modelos de aprendizaje automático representa una paradoja fundamental en la arquitectura de sistemas modernos: necesitamos procesar datos en la nube para escalabilidad, pero l

Cheetah: Acelerando la Inferencia Privada con Cifrado Homomórfico

El problema que resuelve

La inferencia privada de modelos de aprendizaje automático representa una paradoja fundamental en la arquitectura de sistemas modernos: necesitamos procesar datos en la nube para escalabilidad, pero la nube es intrínsecamente no confiable. Cheetah aborda el cuello de botella crítico que ha impedido la adopción práctica del cifrado homomórfico (HE) para inferencia de redes neuronales: la sobrecarga computacional de 1000x-10000x respecto a la inferencia en texto plano.

El problema se descompone en tres dimensiones:

  1. Latencia operativa: Los esquemas HE tradicionales (BFV, CKKS) introducen operaciones aritméticas sobre ciphertexts que requieren multiplicaciones modulares costosas, con complejidad O(n²) o peor para operaciones tensoriales.

  2. Overhead de memoria: Los ciphertexts expanden los datos en órdenes de magnitud (un vector de 1000 floats se convierte en ~256KB de ciphertext), saturando VRAM y bandwidth.

  3. Bootstrapping prohibitivo: La operación de "refrescado" de ciphertexts (reducción de error acumulativo) era computacionalmente inviable para pipelines de inferencia en tiempo real.

Cheetah propone una arquitectura que reduce la sobrecarga de inferencia HE en 10-100x, haciendo viable la inferencia privada para modelos de tamaño moderado en entornos de producción.

Arquitectura y mecanismo (con detalle técnico)

Esquema base: CKKS con optimizaciones

Cheetah utiliza el esquema CKKS (Cheon-Kim-Kim-Song), elegido por su soporte nativo de aritmética aproximada con floats —crítico para activaciones neuronales— frente a BFV que opera con enteros exactos.

Pipeline de inferencia Cheetah:

[Cliente]  [Cifrado CKKS]  [Ciphertext]  [Servidor HE]  [Inferencia]  [Decifrado]  [Resultado]
                                                                      
     └────────────────────────────────────────────────────────────┘
                    (modelo en texto plano, datos cifrados)

Optimización 1: Inversa Modular Acelerada

El cuello de botella en CKKS es la inversa modular requerida para la multiplicación de ciphertexts. Cheetah introduce:

  • Precomputación de inversos: Tablas de lookup para valores comunes en activaciones (ReLU, Sigmoid)
  • Algoritmo de Newton-Raphson modular: Convergencia cuadrática O(log n) vs O(n) de inversión estándar
  • Reducción de grado de polinomio: Limitar el anillo R_q = Z_q[x]/(x^n + 1) dinámicamente por capa

Optimización 2: Bootstrapping Híbrido

El bootstrapping tradicional requiere ~1000ms por capa. Cheetah implementa:

// Pseudocódigo del mecanismo de bootstrapping
fn hybrid_bootstrap(ciphertext: &Ciphertext) -> Ciphertext {
    let error_budget = ciphertext.error_estimate();

    if error_budget > THRESHOLD {
        // Bootstrapping completo (raro, ~1000ms)
        full_bootstrap(ciphertext)
    } else if error_budget > THRESHOLD * 0.5 {
        // Key switching parcial (común, ~10ms)
        partial_key_switch(ciphertext)
    } else {
        // Sin operación (optimización)
        ciphertext.clone()
    }
}

Optimización 3: Tensor Layout Especializado

Cheetah reorganiza los tensores para maximizar vectorization homomórfica:

  • Batch-first packing: Múltiples muestras en un ciphertext (batch dimension mapeado a slots del polinomio)
  • Channel packing: Canales de convolución mapeados a slots para operaciones paralelas
  • Padding inteligente: Alinear a potencias de 2 para FFT optimizado

Optimización 4: Routing de Operaciones

No todas las operaciones requieren HE:

Operación En HE En texto plano
Convolution
Activation (ReLU) ✓ (computar en dominio cifrado con lookup)
BatchNorm
Pooling

Qué lo hace genuinamente nuevo

Innovación 1: 100x Speedup en Multiplicación

Mientras SEAL (Microsoft) y OpenFHE reportan 10-50ms por multiplicación de ciphertext, Cheetah logra 0.1-0.5ms mediante:

  • Cache de inversos modulares con LRU eviction
  • SIMD intrinsics para operaciones de polinomio
  • Reducción de precisión dinámica (cuando el modelo lo permite)

Innovación 2: Bootstrapping Selectivo

A diferencia de enfoques anteriores que bootstrapean cada capa, Cheetah introduce error-aware scheduling:

Capa 1: Error 0.001 → Sin bootstrap
Capa 2: Error 0.01 → Sin bootstrap  
Capa 3: Error 0.05 → Key switch parcial
Capa 4: Error 0.15 → Bootstrap completo (necesario)

Innovación 3: Integración con Frameworks ML

Cheetah provee wrappers para PyTorch/TensorFlow que interceptan el forward pass:

# Ejemplo de integración
import cheetah

@cheetah.encrypt_input
@cheetah.decrypt_output
def model_inference(x, model):
    return model(x)  # Operaciones automáticamente mapeadas a HE

Innovación 4: Verificación de Precisión

Cheetah incluye calibración automática que compara resultados HE vs texto plano, ajustando parámetros de precisión (q, n, delta) para mantener error < 1% en accuracy.

Cómo integrarlo en Zeropithos o Dibro

Componente: Pipeline RAG con Seguridad End-to-End

Arquitectura propuesta:

```
┌─────────────────────────────────────────────────────────────┐
│ Zeropithos Stack │
├─────────────────────────────────────────────────────────────┤
│ [Cliente] ───────────────────────────────────────────────►│
│ │ │
│ ├─► [Cheetah Encryptor] ─► Ciphertexts ───────────►│
│ │ │
│ ├─► [RAG Pipeline] ──────────────────────────────►│
│ │ │ │
│ │ ├─► [Fuseki SPARQL] (queries cifradas) │
│ │ ├─► [Vector Store] (embeddings cifradas) │
│ │ └─► [llama-server] (inferencia HE) │
│ │ │
│ └─► [BDI Loop] (razonamiento con context HE) │
│ │
│ ◄────────

aqui cualquier cosa mientras cuadramos el logo