OpenCyber Academy
Ingeniería · Capítulo 2 · Español
Código del curso: OCA-135Capítulo 02: OCA-135-C002

Capítulo 2 — Matemáticas discretas

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.

Mapa de la lección

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

flowchart TD
  N0["Resultados de aprendizaje"]
  N1["2.1 Conjuntos, funciones y lógica"]
  N2["2.2 Relaciones y grafos"]
  N3["2.3 Conteo"]
  N4["2.4 Inducción e invariantes"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Ejemplo resuelto"]
  EX --> Q["Ejercicio EX004"]

Dibujo lógico

flowchart LR
  N0["Resultados de aprendizaje"]
  N1["2.1 Conjuntos, funciones y lógica"]
  N2["2.2 Relaciones y grafos"]
  N3["2.3 Conteo"]
  N4["2.4 Inducción e invariantes"]
  N5["Síntesis del capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX004"]
[Resultados de aprendizaje]
    |
    v
[2.1 Conjuntos, funciones y lógica]
    |
    v
[2.2 Relaciones y grafos]
    |
    v
[2.3 Conteo]
    |
    v
[2.4 Inducción e invariantes]
    |
    v
[Síntesis del capítulo]
    |
    v
[Ejemplo resuelto] --> [Ejercicio EX004]

Resultados de aprendizaje

Usted será capaz de (1) usar conjuntos, relaciones, funciones y lógica para describir con precisión el comportamiento de un sistema; (2) expresar políticas de acceso y de uso de herramientas como predicados; (3) contar posibilidades para estimar espacios de búsqueda; y (4) razonar sobre grafos de flujo de datos y de control en sistemas de IA.

2.1 Conjuntos, funciones y lógica

Un modelo es una función f: X → Y de un conjunto de entradas en un conjunto de salidas. Una política es un predicado P(usuario, acción, recurso) que es verdadero cuando la acción está permitida. Los conectivos lógicos (∧, ∨, ¬, →) y los cuantificadores (∀, ∃) permiten escribir propiedades de seguridad con exactitud: "∀ tool call c issued by Wrench, Authorised(requesting_user(c), c)". Escribir las propiedades así revela ambigüedades: ¿quién es el «usuario solicitante» cuando la llamada la desencadenó un texto de un boletín de un proveedor?

Sam lo resuelve definiendo al usuario solicitante como la persona cuya sesión inició la conversación.

2.2 Relaciones y grafos

Un grafo dirigido de componentes (cámara → preprocesamiento → modelo → cola de alertas → técnico) muestra por dónde fluyen los datos y dónde cambia la confianza. Los caminos desde una fuente no confiable hasta un sumidero privilegiado son las rutas que puede usar un atacante; en las aplicaciones con modelos de lenguaje, el camino «boletín del proveedor → prompt de Wrench → herramienta de órdenes de trabajo» es exactamente un camino de inyección indirecta de prompts (Greshake et al., arXiv:2302.12173). La alcanzabilidad en grafos se calcula mediante búsqueda en anchura o en profundidad.

Dibujar primero el grafo hace que la búsqueda sea mecánica: marque cada nodo cuyo contenido pueda influir un externo, marque cada nodo que pueda cambiar algo en el mundo y enumere los caminos entre ellos. Cada camino encontrado así necesita un control en algún punto de su recorrido, y el grafo muestra dónde.

2.3 Conteo

La combinatoria estima espacios de búsqueda. Si un atacante puede cambiar 3 cualesquiera de 100 características a uno de 4 valores, hay C(100,3) × 4³ = 161.700 × 64 ≈ 10,3 millones de variantes, algo que un ordenador puede recorrer sin problema. El conteo muestra por qué «nadie encontrará la entrada mala» no es una defensa. Diez millones de variantes pueden evaluarse en minutos en un ordenador corriente si cada consulta al modelo es rápida, de modo que un atacante no necesita ingenio, solo paciencia y acceso al modelo o a una copia parecida. El mismo conteo indica a los defensores dónde limitar las consultas: si cada variante tuviera que pasar por una interfaz con límite de mil solicitudes al día, la búsqueda exhaustiva llevaría décadas, y el atacante tendría que buscar con mucho más ingenio.

2.4 Inducción e invariantes

Un invariante es una propiedad que se cumple antes y después de cada paso. «La herramienta de órdenes de trabajo solo puede llamarse con el token de sesión de un técnico» es un invariante; demostrar que se cumple en todos los caminos del código (por inducción sobre los pasos) es más sólido que probar unos pocos casos. La inducción tiene dos partes. El caso base comprueba que no es posible ninguna llamada a herramientas antes de que exista una sesión. El paso muestra que, si todas las llamadas anteriores llevaban un token válido, el camino de código que emite la siguiente llamada también adjunta uno y, en caso contrario, la rechaza. Una prueba con unas pocas llamadas no puede mostrar que ningún camino se salta la comprobación; un argumento sobre todos los caminos sí puede, siempre que los caminos de código se enumeren por completo.

2.5 Ejemplo resuelto (caso sintético de NRS)

Sam dibuja el grafo de flujo de datos de Wrench con nodos para el chat del usuario, los manuales, las notas de los técnicos, los boletines de proveedores (externos), el modelo y dos herramientas (search, create_work_order). Existen dos caminos de lo no confiable a lo privilegiado: boletín → modelo → create_work_order y notas de los técnicos (editables por contratistas) → modelo → create_work_order. Sam escribe la propiedad «∀ llamadas a create_work_order, un técnico humano la confirmó» y marca ambos caminos para aplicarles controles.

El segundo camino es fácil de pasar por alto porque las notas de los técnicos parecen internas, pero los contratistas pueden editarlas, así que pertenecen a las entradas no confiables. La propiedad de confirmación coloca un único control en el sumidero, que cubre ambos caminos a la vez, en lugar de intentar filtrar cada fuente no confiable por separado.

2.6 Errores y límites

Las excepciones ocultas aparecen cuando una política escrita como «los técnicos pueden crear órdenes de trabajo» resulta significar «salvo los contratistas en turnos de fin de semana», algo que nadie dejó por escrito. Los caminos indirectos se pasan por alto cuando un grafo muestra solo las conexiones activas y omite los almacenes, como notas guardadas hoy y leídas por el modelo mañana. Subestiman los espacios de búsqueda quienes imaginan a una persona probando entradas a mano, en lugar de un programa probando millones.

Ejercicios — capítulo 2

Síntesis del capítulo

Las matemáticas discretas ofrecen un lenguaje preciso para políticas, flujos de datos y espacios de búsqueda: la base para enunciar y comprobar propiedades de seguridad de la IA en lugar de confiar en que se cumplan.

Siga estudiando — capítulo 02 de 50

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

Respuestas desarrolladas

EX004. ∀ c ∈ Calls(create_work_order): Depot(Asset(c)) = Depot(RequestingTechnician(c)).

EX005. Boletín del proveedor → modelo → create_work_order: tratar el texto del boletín solo como datos y exigir la confirmación del técnico. Notas editables por contratistas → modelo → create_work_order: restringir quién puede editar las notas, etiquetar su procedencia y exigir confirmación.

EX006. C(50,2) × 3² = 1.225 × 9 = 11.025 variantes.