◇ OpenCyber Academy
Máster · Capítulo 2 · Español

Capítulo 2 — Seguridad de la IA y del aprendizaje automático: seminario avanzado

Aprendizaje gratuito y abierto para quienes desean proteger a las personas y la tecnología. No se necesita una cuenta para estudiar ni consultar las respuestas.

Capítulo 2 — Seguridad de la IA y del aprendizaje automático: seminario avanzado

Mapa de la lección

Lección 02 publicada. Mapa, ejemplo, EX008.

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["2.1 El formato del seminario"]
  N2["2.2 Evasión"]
  N3["2.3 Envenenamiento y puertas traseras"]
  N4["2.4 Ataques contra la privacidad"]
  N5["2.5 Extracción de modelos"]
  N6["2.6 Inyección de instrucciones y aplicaciones de LLM"]
  N7["2.8 Actividades de práctica"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX008"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["2.1 El formato del seminario"]
  N2["2.2 Evasión"]
  N3["2.3 Envenenamiento y puertas traseras"]
  N4["2.4 Ataques contra la privacidad"]
  N5["2.5 Extracción de modelos"]
  N6["2.6 Inyección de instrucciones y aplicaciones de LLM"]
  N7["2.8 Actividades de práctica"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX008"]
[Resultados de aprendizaje]
    |
    v
[2.1 El formato del seminario]
    |
    v
[2.2 Evasión]
    |
    v
[2.3 Envenenamiento y puertas traseras]
    |
    v
[2.4 Ataques contra la privacidad]
    |
    v
[2.5 Extracción de modelos]
    |
    v
[2.6 Inyección de instrucciones y aplicaciones de LLM]
    |
    v
[2.8 Actividades de práctica]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX008]

Resultados de aprendizaje

Usted será capaz de (1) explicar las principales clases de ataque (evasión, envenenamiento y puertas traseras, privacidad —inferencia de pertenencia y extracción de datos—, extracción de modelos e inyección de instrucciones) con sus modelos de amenaza; (2) explicar las defensas y sus límites conocidos; (3) leer y presentar críticamente un artículo en un seminario; (4) relacionar los resultados con NIST AI 100-2 E2025, OWASP LLM 2025 y MITRE ATLAS; y (5) identificar cómo aparece cada clase de ataque en un despliegue real como el de Harbourline.

2.1 El formato del seminario

Cada semana un estudiante presenta un artículo en quince minutos: afirmación, modelo de amenaza, método, resultados y tres preguntas críticas. El grupo discute si la evidencia respalda la afirmación. El objetivo no es admirar los artículos, sino entender exactamente lo que muestran. La presentación de Leo sobre Shokri et al. en el ejemplo resuelto de más abajo sigue este formato, y su tercera pregunta pasó a formar parte de su propio diseño. Prepare preguntas que un lector pueda responder a partir del artículo y anote las que el artículo no puede responder, porque ahí suelen estar las lagunas de investigación.

2.2 Evasión

Los ejemplos adversariales (Szegedy et al., arXiv:1312.6199) son entradas ligeramente modificadas para provocar errores. FGSM (Goodfellow et al., arXiv:1412.6572) da un paso en la dirección del signo del gradiente de la pérdida; PGD (Madry et al., arXiv:1706.06083) itera y proyecta de nuevo sobre el conjunto de perturbaciones permitidas; el entrenamiento adversarial usa esos ejemplos durante el entrenamiento. En texto, los cambios «pequeños» son más difíciles de definir: sustituir sinónimos o editar caracteres puede cambiar el sentido. En Harbourline, la evasión consistiría en redactar una nota de siniestro de modo que el clasificador la encamine mal. El laboratorio de juguete muestra cómo se desploma la exactitud a medida que crece el presupuesto.

"""Lab E: evasion of a toy linear classifier (synthetic data, stdlib only).
Trains logistic regression on two synthetic clusters, then applies a
fast-gradient-sign (FGSM-style) perturbation of size eps to every test point
and reports clean vs adversarial accuracy. Teaching model only."""
import math, random
rng = random.Random(7)
def point(label):
    cx = 1.0 if label else -1.0
    return [rng.gauss(cx, 0.7), rng.gauss(cx, 0.7)], label
train = [point(i % 2) for i in range(400)]
test = [point(i % 2) for i in range(200)]
w, b = [0.0, 0.0], 0.0
sig = lambda z: 1 / (1 + math.exp(-z))
for epoch in range(200):
    gw, gb = [0.0, 0.0], 0.0
    for x, y in train:
        p = sig(w[0]*x[0] + w[1]*x[1] + b)
        gw[0] += (p - y)*x[0]; gw[1] += (p - y)*x[1]; gb += p - y
    w = [w[i] - 0.1*gw[i]/len(train) for i in range(2)]; b -= 0.1*gb/len(train)
def acc(data, eps):
    ok = 0
    for x, y in data:
        # gradient of the loss w.r.t. x is (p - y) * w; FGSM steps along its sign
        p = sig(w[0]*x[0] + w[1]*x[1] + b)
        xa = [x[i] + eps*math.copysign(1, (p - y)*w[i]) for i in range(2)]
        ok += (sig(w[0]*xa[0] + w[1]*xa[1] + b) >= 0.5) == bool(y)
    return ok / len(data)
print(f"weights w=({w[0]:.3f}, {w[1]:.3f}) b={b:.3f}")
for eps in (0.0, 0.25, 0.5, 0.75, 1.0):
    print(f"eps={eps:.2f} accuracy={acc(test, eps):.3f}")

Salida esperada:

weights w=(1.795, 1.756) b=-0.080
eps=0.00 accuracy=0.985
eps=0.25 accuracy=0.950
eps=0.50 accuracy=0.840
eps=0.75 accuracy=0.660
eps=1.00 accuracy=0.505

2.3 Envenenamiento y puertas traseras

Los ataques de envenenamiento controlan parte de los datos de entrenamiento. El envenenamiento de disponibilidad degrada la exactitud de forma general; el envenenamiento dirigido y el de puerta trasera (Gu et al., arXiv:1708.06733) mantienen la exactitud con datos limpios mientras un disparador provoca el comportamiento elegido. En Harbourline, un tramitador de siniestros malintencionado que pueda insertar notas en el conjunto de entrenamiento podría enseñar al clasificador que una frase encamina los siniestros a la aprobación por vía rápida. Las defensas incluyen la procedencia de los datos, el filtrado de valores atípicos y la limitación de quién puede aportar datos de entrenamiento; ninguna es completa. Pregunte, para cualquier conjunto de datos, quién puede añadir registros y si eso queda registrado.

2.4 Ataques contra la privacidad

La inferencia de pertenencia (Shokri et al., arXiv:1610.05820) decide si un registro estuvo en el entrenamiento, usando diferencias en la confianza o en la pérdida del modelo. La extracción de datos de entrenamiento (Carlini et al., arXiv:2012.07805) recupera secuencias literales de los modelos generativos. La privacidad diferencial (Abadi et al., arXiv:1607.00133) acota cuánto puede influir un único registro en el modelo, lo que reduce ambos riesgos a costa de utilidad. Para una aseguradora, la propia pertenencia puede ser sensible («esta persona presentó un siniestro»). El trabajo de fin de máster de Leo estudia el primero de estos riesgos: si la deduplicación reduce la fuga de pertenencia. Según este razonamiento, un reclamante cuya nota aparece muchas veces está más expuesto.

2.5 Extracción de modelos

La extracción de modelos (Tramèr et al., arXiv:1609.02943) construye una copia de un modelo a partir de las salidas de su API. Las salidas ricas (vectores de probabilidad completos) la facilitan; redondear y devolver solo etiquetas la dificultan, pero no la hacen imposible. La extracción importa por la propiedad intelectual y porque una copia robada permite ataques de caja blanca. El laboratorio siguiente muestra el efecto de la precisión de la salida: con la puntuación de precisión completa la copia es exacta, con dos decimales es casi exacta y con redondeo a enteros la copia coincide en el 88 % de las etiquetas. En Harbourline, devolver solo la etiqueta de clasificación dificultaría la extracción, no la impediría.

"""Lab X: model extraction of a toy linear scoring API by querying it.
The 'API' returns a real-valued score; d+1 well-chosen queries recover the
weights exactly, and rounding the output limits fidelity. Synthetic model."""
import random
rng = random.Random(9)
d = 5
secret_w = [round(rng.uniform(-2, 2), 3) for _ in range(d)]; secret_b = 0.42
def api(x, decimals=None):
    s = sum(a*b for a, b in zip(secret_w, x)) + secret_b
    return round(s, decimals) if decimals is not None else s
for dec in (None, 2, 0):
    b = api([0]*d, dec)
    w = [api([1 if j == i else 0 for j in range(d)], dec) - b for i in range(d)]
    err = max(abs(a-c) for a, c in zip(w, secret_w))
    test = [[rng.uniform(-1, 1) for _ in range(d)] for _ in range(500)]
    agree = sum((sum(a*c for a, c in zip(w, x))+b > 0) == (api(x) > 0) for x in test)/500
    print(f"output_rounding={str(dec):4s} queries={d+1} max_weight_error={err:.3f} label_agreement={agree:.3f}")

Salida esperada:

output_rounding=None queries=6 max_weight_error=0.000 label_agreement=1.000
output_rounding=2    queries=6 max_weight_error=0.004 label_agreement=0.998
output_rounding=0    queries=6 max_weight_error=0.534 label_agreement=0.882

2.6 Inyección de instrucciones y aplicaciones de LLM

Cuando un LLM procesa texto no fiable, ese texto puede contener instrucciones (Greshake et al., arXiv:2302.12173). OWASP LLM 2025 sitúa la inyección de instrucciones en primer lugar y enumera riesgos relacionados como la divulgación de información sensible, la agencia excesiva y la filtración de la instrucción del sistema. El plan futuro de Harbourline, un asistente que lee los correos de siniestros y redacta respuestas, heredaría estos riesgos. Para un asistente así, el correo de un reclamante es texto no fiable que podría dirigir los borradores o filtrar datos de otros reclamantes. Ese plan queda fuera del trabajo de fin de máster de Leo, pero el seminario debería relacionarlo con las entradas de OWASP para que Harbourline vea qué riesgos añadiría.

2.7 Ejemplo resuelto (caso sintético de Harbourline)

Leo presentó a Shokri et al. Sus tres preguntas críticas: (1) el enfoque de modelos sombra supone que el atacante puede muestrear de una distribución de datos similar; ¿es eso realista para notas de seguros? (2) los resultados se informaron sobre todo como precisión/exactitud; ¿cuál es la TPR con una FPR baja? (3) ¿qué parte de la fuga se explica por el sobreajuste? El grupo concluyó que la pregunta (3) era directamente pertinente para su trabajo de fin de máster: si la deduplicación ayuda sobre todo porque reduce el sobreajuste, la «explicación» es la generalización y no la deduplicación en sí, una explicación alternativa para el capítulo 4.

2.8 Actividades de práctica

  1. Presente un artículo con el formato del seminario. 2. Para cada clase de ataque, escriba un modelo de amenaza de una línea para un sistema que conozca. 3. Relacione el asistente de correo previsto por Harbourline con tres entradas de OWASP LLM 2025. Para la presentación, prepare la afirmación, el modelo de amenaza, el método, los resultados y tres preguntas críticas, como hizo Leo. Para los modelos de amenaza, nombre el conocimiento, el acceso y el objetivo del atacante para cada clase. Para la correspondencia, considere la inyección de instrucciones, la divulgación de información sensible y la agencia excesiva, e indique para cada una qué podría hacer mal el asistente y qué control lo limitaría.

2.9 Errores y límites

Cuatro errores se repiten, y cada uno lleva a un resumen engañoso; revise sus notas del seminario en busca de los cuatro:

Ejercicios — capítulo 2

Síntesis del capítulo

El seminario aporta soltura en las clases de ataque y en la lectura crítica. Cada clase tiene un modelo de amenaza, un daño típico y defensas con límites conocidos, y las explicaciones alternativas que descubra en la discusión se convierten en preguntas de investigación.

Siga estudiando — capítulo 02 de 08

← Capítulo 01 (borrador) · Índice de capítulos del curso · Capítulo 03 (borrador) →

Respuestas desarrolladas

EX008. Evasión: un atacante con acceso de consulta (o de caja blanca) perturba las entradas de prueba para provocar una clasificación errónea. Puerta trasera: un atacante que controla parte de los datos de entrenamiento inserta ejemplos con disparador para provocar las salidas que elige. Inferencia de pertenencia: un atacante con acceso de consulta a las salidas decide si un registro estuvo en el entrenamiento.

EX009. FGSM da un único paso de tamaño eps en la dirección del signo del gradiente; PGD da muchos pasos más pequeños, proyectando de nuevo sobre el conjunto permitido cada vez, y es un ataque más fuerte.

EX010. Con salidas enteras, el error máximo de los pesos es 0.534 y la coincidencia de etiquetas 0.882 (frente a 0.000/1.000 con precisión completa). Las salidas gruesas reducen la fidelidad, pero siguen dejando una copia aproximada útil.

EX011. La pertenencia revela que una persona presentó un siniestro, lo que puede implicar problemas de salud, accidentes o pérdidas: algo sensible en sí mismo.

EX012. Alguien de dentro con acceso de escritura a las notas de entrenamiento podría insertar notas que contengan una frase poco común etiquetadas como "fast-track". Controles: acceso de escritura restringido y registrado, con procedencia de los datos de entrenamiento; auditorías previas al entrenamiento de correlaciones entre tokens poco comunes y etiquetas, y pruebas de disparadores después del entrenamiento.

EX013. LLM01 Prompt Injection (instrucciones en los correos); LLM02 Sensitive Information Disclosure (detalles de siniestros en las respuestas); LLM06 Excessive Agency (enviar respuestas sin revisión).

EX014. Por ejemplo: ¿qué conocimiento del adversario se supone, y se evalúa la defensa frente a un atacante que la conoce? ¿Se informan los resultados con tasas de falsos positivos bajas y con intervalos entre semillas? ¿Cuál es el coste en utilidad o en latencia en las mismas tareas?