Capítulo 17 — Conceptos de criptografía
Mapa de la lección
Lección 17 publicada. Mapa, ejemplo, EX049.
flowchart TD
N0["Resultados de aprendizaje"]
N1["17.1 Primitivas básicas"]
N2["17.2 Proteger los artefactos de IA"]
N3["17.3 Lo que la criptografía no puede hacer"]
N4["17.4 Claves"]
N5["17.6b Verificar firmas en la práctica"]
N6["Síntesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX049"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje"]
N1["17.1 Primitivas básicas"]
N2["17.2 Proteger los artefactos de IA"]
N3["17.3 Lo que la criptografía no puede hacer"]
N4["17.4 Claves"]
N5["17.6b Verificar firmas en la práctica"]
N6["Síntesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX049"]
[Resultados de aprendizaje]
|
v
[17.1 Primitivas básicas]
|
v
[17.2 Proteger los artefactos de IA]
|
v
[17.3 Lo que la criptografía no puede hacer]
|
v
[17.4 Claves]
|
v
[17.6b Verificar firmas en la práctica]
|
v
[Síntesis]
|
v
[Ejemplo resuelto] --> [Ejercicio EX049]
Resultados de aprendizaje
Usted podrá (1) explicar el hashing, el cifrado simétrico y de clave pública y las firmas digitales; (2) aplicarlos para proteger artefactos y datos de IA; (3) explicar lo que la criptografía no puede hacer por la seguridad de la IA; y (4) verificar la integridad de los modelos con manifiestos firmados.
17.1 Primitivas básicas
Las funciones hash (como SHA-256) transforman los datos en un resumen corto; cambiar un bit cambia el resumen. El cifrado simétrico (como AES) protege los datos con una clave compartida. La criptografía de clave pública permite a cualquiera cifrar para quien posee una clave, o verificar sus firmas. Las firmas digitales prueban quién creó unos datos y que no han cambiado. En los sistemas de LCH, los hashes comprueban los archivos de modelo, el cifrado simétrico protege los registros de conversación almacenados, la criptografía de clave pública protege la conexión TLS con el proveedor del modelo y las firmas prueban que las versiones de DocSort proceden del proveedor. Cada primitiva responde a una pregunta distinta, y usar la equivocada deja una laguna: un hash por sí solo muestra que un archivo no ha cambiado, pero no quién lo produjo.
17.2 Proteger los artefactos de IA
Cifre en reposo los datos de entrenamiento y los pesos del modelo; use TLS en tránsito. Publique los resúmenes SHA-256 de los archivos de modelo en un manifiesto y firme el manifiesto, para que los destinatarios puedan verificar tanto la integridad como el origen antes de cargarlos. Esto aborda los riesgos de la cadena de suministro (OWASP LLM03), como los modelos manipulados o con puertas traseras (Gu et al., arXiv:1708.06733).
"""Lab H: integrity of model artefacts with SHA-256 manifests (stdlib only).
Creates synthetic 'artefact' bytes, records a manifest, then detects a
one-byte tampering and a swapped file. No real models are involved."""
import hashlib, json
files = {"model.bin": bytes(range(256)) * 40, "tokenizer.json": b'{"vocab": ["a", "b"]}',
"config.yaml": b"layers: 4\nheads: 8\n"}
manifest = {n: hashlib.sha256(b).hexdigest() for n, b in files.items()}
print(json.dumps({k: v[:16] for k, v in manifest.items()}, indent=1))
received = dict(files)
tampered = bytearray(received["model.bin"]); tampered[5000] ^= 1
received["model.bin"] = bytes(tampered)
received["config.yaml"] = b"layers: 4\nheads: 8\ntrust_remote_code: true\n"
for n, b in sorted(received.items()):
ok = hashlib.sha256(b).hexdigest() == manifest[n]
print(f"{n:15s} {'OK' if ok else 'MISMATCH'}")
Salida esperada:
{
"model.bin": "e96760a87768717b",
"tokenizer.json": "f63d2ddabc61f2d9",
"config.yaml": "e5bbb570ca0fcb87"
}
config.yaml MISMATCH
model.bin MISMATCH
tokenizer.json OK
El Laboratorio H comprueba la integridad pero no el origen, porque un atacante que pueda cambiar los archivos también podría cambiar un manifiesto sin firmar. La firma cierra esa laguna, ya que la clave no está en el servidor.
17.3 Lo que la criptografía no puede hacer
El cifrado no impide que una consulta autorizada extraiga información de un modelo, no evita la inyección de instrucciones y no limpia un conjunto de datos envenenado: solo prueba que los datos envenenados son los datos que usted firmó. La criptografía protege datos y artefactos; el comportamiento necesita otros controles. En Ask Lumen, cada mensaje viaja cifrado y cada archivo de modelo se verifica, y aun así un paciente puede escribir una inyección y un documento de un asociado puede llevar texto hostil. Esos riesgos necesitan el punto de políticas, el etiquetado y la supervisión. La nota de arquitectura de Rina enumera qué amenazas aborda cada capa, para que nadie suponga que el cifrado cubre más de lo que cubre.
17.4 Claves
La seguridad depende de las claves: guárdelas en servicios de gestión de claves, restrinja el acceso, rótelas y nunca las ponga en instrucciones ni en repositorios de código. La clave de API del proveedor del modelo de LCH es un ejemplo claro: cualquiera que la tenga puede ejecutar consultas que se facturan a LCH y quizá leer registros. LCH la guarda en el servicio de gestión de claves de la nube, solo da acceso al servidor de aplicaciones, la rota cada trimestre y analiza los repositorios en busca de commits accidentales. Una clave filtrada se revoca primero, después se investiga y se revisan los registros.
17.5 Ejemplo resuelto (caso sintético de LCH)
El proveedor de DocSort de LCH empezó a firmar sus versiones. Rina configuró el script de despliegue para que obtuviera la clave pública del proveedor del propio almacén de confianza de LCH (no del servidor de versiones), verificara la firma del manifiesto y después verificara el resumen de cada archivo. Una versión de prueba con un archivo modificado fue rechazada. Obtener la clave del propio almacén de LCH importa porque, de lo contrario, un atacante que controlara el servidor de versiones podría suministrar a la vez un archivo malicioso y una clave que coincidiera. La versión de prueba rechazada confirma que la comprobación funciona de principio a fin.
17.6 Errores y límites
- Obtener resúmenes y claves del mismo lugar que los archivos.
- Suponer que el cifrado impide la filtración del modelo.
- Claves en el código fuente.
Obtener resúmenes y claves del mismo lugar que los archivos significa que un solo compromiso anula la comprobación, por eso LCH guarda la clave de DocSort en su propio almacén. El cifrado no impide que un modelo revele datos de entrenamiento a través de sus respuestas. Las claves en el código fuente acaban en repositorios y copias de seguridad que mucha gente puede leer, así que se buscan y se rotan cuando se encuentran.
17.6b Verificar firmas en la práctica
Firmar el archivo de modelo de DocSort solo ayuda si el cargador comprueba la firma cada vez y se niega a arrancar si falla. LCH lo probó cargando una copia con un byte cambiado: el servicio se negó, registró el evento y siguió ejecutando la versión verificada anterior. Mantener en funcionamiento la versión verificada anterior evitó una interrupción mientras se investigaba el problema, lo que hizo seguro el rechazo. Después, el proveedor volvió a emitir una versión firmada correctamente. El personal no notó ningún cambio en DocSort mientras la versión antigua seguía clasificando documentos.
Ejercicios
- EX049 — Primitivas. Relacione: integridad de un archivo; origen de un manifiesto; confidencialidad de datos almacenados. Rúbrica: 3 = hash, firma, cifrado; 2 = dos; 1 = una; 0 = nada.
- EX050 — Origen de la clave. ¿Por qué obtener la clave pública del proveedor del propio almacén de LCH? Rúbrica: 3 = un atacante que controle el servidor de versiones podría sustituir a la vez los archivos y la clave; 2 = parcial; 1 = vago; 0 = incorrecto.
- EX051 — Límites. Nombre dos riesgos de la IA que la criptografía no aborda. Rúbrica: 3 = inyección de instrucciones, extracción mediante consultas, envenenamiento de datos firmados, evasión; 2 = uno; 1 = vago; 0 = incorrecto.
Síntesis
La criptografía hace verificables y confidenciales los artefactos y los datos de IA, pero no puede hacer que un modelo se comporte; es una capa entre muchas.
Siga estudiando — capítulo 17 de 40
← Capítulo 16 (borrador) · Índice de capítulos del curso · Capítulo 18 (borrador) →