He estado construyendo sistemas durante 25 años, y me encanta construir cosas que están diseñadas intencionalmente y operativamente ágiles, llevando solo tanto vector como gana su peso.
En ese enfoque, minimizar lo que almaceno de los datos de un usuario siempre tuvo sentido para mí, por razones que van más allá de la obvia. La soberanía de sus datos importa. Bajo todo eso está algo más simple: las cosas pertenecen donde pertenecen. La mayor parte de lo que construyo es procesamiento, y una arquitectura de procesamiento no tiene negocio de operar como algo más. Mantener un registro que nunca necesitó es un vector que no gana nada. Tratar eso como una optimización, en lugar de un ejercicio de cumplimiento, es lo que mantiene el diseño honesto — y un sistema construido de esa manera tiende a quedar en buena posición con la regulación por sí solo, porque queda muy poco de ella para regular.
Así que cuando la anuncio de Mary Camacho cruzó mi feed en X, leí su arquitectura como leo la mía. Ella había publicado el núcleo de ella en el registro público bajo una licencia Creative Commons, al nivel de detalle que un ingeniero necesitaría para reconstruirla, y fue directa sobre el arte previo en el que se basa.
Trabajando a través de la secuencia, coloqué una entidad adversarial dentro del servidor y seguí lo que podía alcanzar. Podía superar al trabajador.
Casi todo el trabajo que siguió ocurrió como una conversación de voz — sobre 30 notas de voz, pensando en voz alta y probando la preocupación desde diferentes ángulos hasta que se mantuvo o se desmoronó.

Lo que noté: el dispositivo cifra al que escriba el registro de reclamo primero

La divulgación especifica el orden de operaciones directamente. El trabajador reclama el trabajo y publica su clave, y solo entonces el dispositivo cifra:
  1. Trabajador → coordinación: poll y reclama el trabajo (write-once, first-wins), publicando la clave pública del trabajador.
  2. Dispositivo ← coordinación: poll, recuperar la clave pública del trabajador, derivar el secreto compartido, cifrar la carga útil.
— §2.1, Flujo de datos (por trabajo)
El lado del dispositivo de ese acuerdo se especifica con igual precisión:
El dispositivo, al conocer la clave pública del trabajador, realiza su propio intercambio X25519 y una encapsulación ML-KEM contra la clave del trabajador, produciendo su propia contribución pública (clave pública X25519 ‖ texto cifrado ML-KEM) y el secreto compartido.
— §4.2, Vinculación al ciclo de vida del trabajador
Al conocer. A través de 19 páginas no hay firma sobre la clave pública efímera del trabajador, ningún certificado, ninguna atestación que el dispositivo evalúe, y ningún secreto precompartido. La ausencia es deliberada y se presenta como una fortaleza: el modelo restringe la descifrado sin ningún documento de atestación, cita TPM, o artefacto de arranque medido, y no mantiene ningún secreto pre-provisionado del trabajador.
Así que el dispositivo cifra su carga útil a cualquier clave pública que esté en el registro de reclamo, sin medios de distinguir la clave de un trabajador legítimo de la de cualquier otro. Cualquier parte que pueda escribir un reclamo primero se convierte en la parte a la que el dispositivo cifra, y la carga útil confiada se descifra en sus manos.
Diagram source
flowchart TB
    subgraph BEFORE["Antes: como publicado"]
        direction LR
        A2{"¿Quién reclama primero?"} -->|Trabajador real| A3["Llave genuina"]
        A2 -->|Cualquier otro escritor| A4["Llave atacante"]
        A3 --> A5["El dispositivo la cifra"]
        A4 --> A5
        A5 --> A6["El titular de la llave puede leer"]
    end
    subgraph AFTER["Después: llave firmada"]
        direction LR
        B2{"¿Firma válida?"} -->|Sí| B3["Llave de trabajador verificada"]
        B2 -->|No| B4["Rechazar, reintentar"]
        B3 --> B5["Solo el trabajador verdadero lee"]
    end
    A6 ~~~ B2
La gravedad proviene de lo que el modelo lleva. Esta arquitectura existe para contener exactamente los datos que la gente está menos dispuesta a que lean, y tiene éxito en la mitad más difícil de ese problema: un trabajo completado no puede ser descifrado por nadie, incluido el operador. La brecha se sitúa en el único paso donde el dispositivo tiene que establecer con quién está hablando.

La criptografía es sólida y la introducción es no autenticada

El atacante no rompe nada. X25519 y ML-KEM-768 funcionan exactamente como se especifica. El atacante suministra una clave y se convierte en una parte legítima del acuerdo.
Esto es un acuerdo de clave no autenticado, y su modo de falla es el resultado más antiguo en el campo. Diffie-Hellman plano no autentica a nadie y cae a una parte que sustituye su propia clave pública. Los mecanismos de encapsulación de clave heredan la propiedad, por lo que RFC 9180 coloca la autenticidad de la clave pública del destinatario fuera de su propio alcance y asume que la aplicación circundante la establece mediante certificados, un directorio de claves o verificación fuera de banda. Este modelo es esa aplicación circundante, y el canal que usa para distribuir la clave del destinatario es el componente que su propio modelo de confianza etiqueta como no confiable.
La divulgación anticipa un ataque vecino y lo cierra:
El reclamo es write-once/first-wins, por lo que un trabajador posterior no puede secuestrar el intercambio de claves de un trabajo.
— §6, Implementación de referencia
Ese razonamiento es sólido y el mecanismo hace lo que dice. Cubre uno de dos casos simétricos.
AmenazaGestionado por la reclamación de escritura única
Un segundo trabajador sobrescribe una reclamación existenteSí — la escritura es rechazada
Una parte no autorizada escribe la reclamación primeroNo — la primera escritura gana
First-wins es una carrera. La regla garantiza que el ganador mantiene el trabajo y no dice nada sobre quién es el ganador.
Una afirmación adicional vale la pena citar, porque el hallazgo la contradice:
No intermediario (puerta de enlace, coordinación, almacenamiento, monitor) jamás posee suficiente material clave para derivar cualquiera de los secretos. Un atacante que compromete la coordinación o el almacenamiento obtiene solo blobs opacos y claves públicas.
— §4.3, claves independientes por dirección
La primera oración es precisa. La segunda describe a un atacante que lee. Un atacante que escribe coloca una clave pública elegida en el registro de reclamación antes de que el dispositivo consulte, y derivar el secreto legítimo se vuelve innecesario para una parte que puede organizarse para ser la contraparte. Quien gobierna el contenido de ese registro gobierna quién puede leer la carga útil, lo que hace que la capa de coordinación sea un componente confiable para la confidencialidad — la única cosa que §3 dice que ningún componente además del dispositivo y el trabajador debería jamás ser.
Un límite honesto sobre la reclamación: esto no significa que cualquiera en Internet abierto pueda leer estos datos hoy. En una implementación real la capacidad de escribir reclamaciones se encuentra detrás de la red en la nube y credenciales, y la divulgación describe una puerta de enlace autenticadora en la ruta del dispositivo. El problema preciso es que la confidencialidad ahora descansa en ese perímetro, mientras que la promesa central de la arquitectura es que se mantiene sin confiar en los componentes entre el dispositivo y el trabajador.

Dos propiedades de diseño comparten la consecuencia

Los resultados regresan al dispositivo bajo un segundo acuerdo que el mismo adversario mediatiza, por lo que un trabajo interceptado se completa y parece ordinario desde el lado del usuario.
La ausencia deliberada de un trabajo duradero y un libro mayor de resultados — la misma ausencia que crea no custodia y reduce la superficie regulatoria — elimina la mayor parte de lo que un investigador usaría más tarde para reconstruir qué trabajos fueron afectados. Los registros de coordinación expiran en el orden de una hora. La propiedad que protege los datos en el caso ordinario adelgaza el registro forense en el caso adversarial.

La brecha es la sombra proyectada por la mejor decisión del modelo

La arquitectura separa los datos que un operador puede legítimamente poseer de los datos que nunca debe poseer. Los datos de contacto son quién es una persona y cómo alcanzarla. Los datos confidenciados son lo que revelan sobre sí mismos. Los sistemas convencionales archivan ambos en una sola base de datos, lo que es la acción que convierte una tabla de cuentas en un registro de la vida privada de alguien. La respuesta estructural es una sola línea: retener el contacto, no poder retener el confidenciado.
Eliminar el orquestador central sirve eso directamente. Un componente que asigna trabajos a trabajadores necesariamente aprende quién hace qué, y ese conocimiento es el activo preciso que el modelo se niega a poseer. Eliminarlo también eliminó el componente que normalmente respaldaría la identidad de un trabajador, y cada ruta restante para autenticar al trabajador fue rechazada de forma independiente, cada una por una razón defensible.
El resultado es un diseño que razona sobre custodia con rigor real y aplica el razonamiento de custodia en el único punto donde la forma del problema es autenticación. El modelo de confianza pregunta qué contiene cada componente contiene y responde correctamente. La pregunta necesaria allí es qué puede sustituir cada componente. Estos son dos problemas de confianza independientes, y resolver cualquiera nunca ha resuelto el otro.

Una firma sobre la clave pública efímera del trabajador la cierra

El trabajador genera su par de claves efímeras al arrancar exactamente como lo hace ahora. Antes de que esa clave se publique en una reclamación, es firmada por una clave de operador a largo plazo cuya mitad pública se entrega con la aplicación. El dispositivo verifica la firma antes de derivar cualquier cosa y rechaza una clave no firmada o inválida. La recuperación ya está especificada, ya que la reintención guiada por el cliente con un trabajo fresco y un acuerdo de clave fresco es la ruta de falla estándar del modelo.
La propiedad decisiva es que una clave de firma no descifra nada. La compromisión de la clave de firma del operador permite la suplantación de un trabajador en adelante y no otorga la capacidad de leer un solo trabajo completado, porque esas claves por trabajo fueron destruidas con sus trabajadores. No custodia, el cofre de claves vacío y la imposibilidad de descifrado retrospectivo sobreviven intactos. Eso es lo que hace que esto sea una finalización del diseño.
El firmante se mantiene alejado de convertirse en el orquestador que el diseño eliminó. Sólo necesita atestiguar que una clave pública efímera dada pertenece a un trabajador que el operador lanzó, y nunca necesita saber qué trabajo ese trabajador reclamará. El monitor existente es el hogar natural: ya provisiona y recoge trabajadores, no guarda datos de usuarios ni claves, y por diseño no enruta ni asigna trabajos.
La repetición merece una verificación, ya que un firmante sin conocimiento de trabajo no puede vincular una firma a un identificador de trabajo. Un atacante que copie una clave de trabajador firmada genuina en un registro de reclamación diferente aún carece de la clave privada correspondiente, por lo que la carga útil permanece ilegible. El resultado es un trabajo que nadie puede procesar — denegación de servicio, con confidencialidad intacta.
Quedan tres límites, y la divulgación nombra los tres: el texto plano existe en la memoria del trabajador mientras el trabajo se ejecuta, el tiempo del trabajo filtra metadatos, y la construcción de derivación de clave está marcada para mejora por el autor.

Asesoría

Este hallazgo existe porque la arquitectura se colocó en los commons. La publicación fue lo que hizo posible la evaluación independiente, y es por eso que la brecha surgió aquí en lugar de en un informe de incidente. Una versión propietaria de este sistema tendría el mismo problema sin que nadie esté en posición de decirlo.
Aprecio la contribución, y el modelo merece el escrutinio que invitó. La afirmación central es cierta, y es la forma que quiero que más sistemas adopten, porque una arquitectura que nunca retiene datos confidenciales lleva una fracción de la superficie regulatoria de una que sí lo hace.
La recomendación es estrecha: autenticar la clave pública efímera del trabajador antes de que el dispositivo la cifre. Una firma, verificada en el dispositivo, a un costo de nada que hace que el modelo valga la pena adoptar. Todo lo anterior surgió de una conversación de voz a texto a través de más de 30 notas, verificada contra la divulgación publicada en lugar de cualquier resumen de la misma. Si estos hallazgos se validan en su lado, son sencillos de actuar.