Gobernanza & Privacidad Diseñado considerando las necesidades de privacidad, gobernanza y cumplimiento de organizaciones chilenas. Evaluar mi exposición →
Gen.IA.L CAPA Icon
Gen.IA.L CAPA Gobernanza IA Empresarial
← Volver al blog

El Dolor de Borrar Datos en IA: Cómo Implementar el Derecho al Olvido con Blind Indexing (HMAC-SHA256)

Equipo Gen.IA.L CAPA • • Keyword: derecho al olvido blind indexing chile
#ley 21719 derecho al olvido #hmac sha256 proteccion datos #blind indexing rut chile #supresion datos inteligencia artificial

El Dilema del Derecho al Olvido en la Era de los LLMs

El Artículo 15 de la Ley 21.719 en Chile consagra formalmente el derecho de supresión, cancelación y oposición de los titulares de datos personales. Cuando un usuario exige a una empresa borrar sus antecedentes, surge un desafío arquitectónico crítico:

¿Cómo evitas que los datos de un titular revocado sean enviados a un LLM (OpenAI, Claude) o procesados por un agente de IA, sin mantener una lista negra con sus datos en texto claro?

Si guardas una tabla blacklist_usuarios con RUTs, nombres o correos en texto plano para verificar contra los prompts entrantes, estás violando el principio de minimización de datos y creando un vector de ataque masivo que puede desencadenar multas de hasta 20.000 UTM (~$1.350 Millones CLP).


La Respuesta Criptográfica: Blind Indexing

El Blind Indexing (Indexación Ciega) permite realizar búsquedas exactas e intercepciones sobre datos cifrados sin descifrarlos jamás ni almacenar el dato original.

La técnica se basa en una función hash con clave criptográfica: HMAC-SHA256:

Hash = HMAC-SHA256(Sal_Tenant, Identificador_Normalizado)

Donde:

  1. Sal_Tenant es una sal secreta criptográfica única generada para cada organización (blind_index_salt).
  2. Identificador_Normalizado es la representación canónica del dato (por ejemplo, removiendo puntos y guiones del RUT y llevando el dígito verificador a mayúsculas: 12345678K).
  3. El resultado es un hash determinista irreversible de 64 caracteres hexadecimales.

Cómo lo Resuelve Gen.IA.L CAPA en Tiempo Real

Gen.IA.L CAPA actúa como un middleware in-memory que intercepta el tráfico hacia el LLM en menos de 5 milisegundos:

[Prompt de Entrada]
        │
        ▼
[Microsoft Presidio NLP] ──► Detecta RUT, Email o Teléfono
        │
        ▼
[Normalización + HMAC] ──► Genera Blind Index efímero en Stack local
        │
        ▼
[B-Tree Lookup en BD] ──► Consulta tabla `erasure_registry` del Tenant
        │
   ¿Coincidencia?
    ├── SÍ ──► [ABORTAR INMEDIATAMENTE] Retorna ERASURE_ACTIVE (Zero LLM Call)
    └── NO ──► [CONTINUAR A OPA] Evaluar políticas de enmascaramiento

1. Invarianza de Formato y Normalización Estricta

Un error común en implementaciones artesanales es comparar strings crudos. Si el usuario revoca 15.987.654-K y un prompt envía 15987654-k, un hash ingenuo fallaría:

# app/core/blind_index.py
import hmac
import hashlib
import re

def normalize_and_hash(raw_value: str, identifier_type: str, tenant_salt: str) -> str:
    cleaned = raw_value.strip().upper()
    if identifier_type in {"PERSONAL_ID", "CL_RUT", "RUT"}:
        cleaned = re.sub(r"[\.\-\s]", "", cleaned)
    elif identifier_type in {"EMAIL", "EMAIL_ADDRESS"}:
        cleaned = cleaned.lower()
    elif identifier_type in {"PHONE", "PHONE_NUMBER"}:
        digits = re.sub(r"[^\d\+]", "", cleaned)
        cleaned = f"+56{digits}" if len(digits) == 9 and digits.startswith("9") else digits

    # Hashing irreversible HMAC-SHA256
    blind_hash = hmac.new(
        tenant_salt.encode("utf-8"),
        cleaned.encode("utf-8"),
        hashlib.sha256
    ).hexdigest()

    # Destrucción explícita de referencias al dato en claro
    del cleaned
    return blind_hash

Beneficios para el DPO y el Equipo de Ingeniería

  1. Cero PII en la Base de Datos: La tabla erasure_registry solo contiene hashes de 64 caracteres y metadatos de auditoría (número de ticket ARCO y fecha).
  2. Aislamiento Multi-Tenant (Zero-Knowledge): Dos empresas que tengan al mismo titular revocado tendrán hashes completamente distintos porque cada una cuenta con una sal privada independiente.
  3. Intercepción Previa a la Red: Si hay coincidencia, la petición se cancela antes de llamar a OPA y antes de abrir sockets hacia OpenAI o Anthropic, protegiendo tanto la privacidad como los tokens del cliente.
  4. Cumplimiento Certificable: Todo intento bloqueado genera un evento de auditoría en el Registro de Actividades de Tratamiento (RAT) sin exponer el nombre del titular.

¿Quieres comprobar si tu arquitectura actual expone datos revocados a APIs externas? Prueba el autodiagnóstico gratuito de Gen.IA.L CAPA o explora nuestra documentación del SDK para Python y Node.js.

¿Tu empresa procesa datos con Inteligencia Artificial?

Obtén tu informe oficial de exposición a multas de la Ley 21.719 en PDF de forma 100% gratuita.

Realizar Autodiagnóstico Gratis →