/* === MOBILE OPTIMIZATION === */ /* ============================================ MOBILE OPTIMIZATION v1 Optimized for Android & iOS ============================================ */ /* === CORE VIEWPORT === */ html { font-size: 16px; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; overflow-x: hidden; } body { overflow-x: hidden; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* === PREVENT HORIZONTAL SCROLL === */ *, *::before, *::after { box-sizing: border-box; max-width: 100vw; } .gh-viewport { overflow-x: hidden; } /* === TOUCH TARGETS (WCAG 2.5.5) === */ a, button, input, select, textarea, label { min-height: 44px; min-width: 44px; } .gh-navigation-menu a, .gh-navigation-actions a, .gh-icon-button, button { padding: 10px 12px; min-height: 44px; min-width: 44px; display: flex; align-items: center; justify-content: center; } /* === NAVIGATION MOBILE === */ .gh-navigation-inner { padding: 0 1rem; flex-wrap: nowrap; gap: 0.5rem; } .gh-navigation-brand { flex-shrink: 0; min-width: unset; } .gh-navigation-logo { font-size: 1.25rem; } .gh-burger { display: flex !important; width: 44px; height: 44px; flex-shrink: 0; } .gh-burger svg { width: 24px; height: 24px; } /* === TYPOGRAPHY SCALE (MOBILE) === */ h1 { font-size: clamp(1.75rem, 6vw, 3rem) !important; } h2 { font-size: clamp(1.4rem, 5vw, 2.25rem) !important; } h3 { font-size: clamp(1.2rem, 4vw, 1.5rem) !important; } .article-title, .gh-article-title { font-size: clamp(1.5rem, 7vw, 2.5rem) !important; letter-spacing: -0.02em; } .gh-container-title h1 { font-size: clamp(1.75rem, 8vw, 3rem) !important; } /* === FEED / CARDS MOBILE === */ .gh-feed { grid-template-columns: 1fr !important; gap: 1.25rem !important; padding: 1rem 0 !important; } .gh-card { border-radius: 12px; flex-direction: column; } .gh-card-wrapper { padding: 1.25rem !important; } .gh-card-title { font-size: 1.125rem !important; line-height: 1.35; } .gh-card-excerpt { font-size: 0.875rem !important; -webkit-line-clamp: 2 !important; } .gh-card-meta { flex-wrap: wrap; gap: 0.5rem; } /* === SINGLE POST MOBILE === */ .gh-article-header { padding: 2.5rem 0 1.5rem !important; } .article { padding: 1.5rem 1rem 3rem !important; } .gh-article-excerpt { font-size: 1rem !important; } .gh-article-meta { flex-wrap: wrap; gap: 0.75rem; font-size: 0.8125rem; } .gh-content p { font-size: 1rem !important; line-height: 1.75 !important; } .gh-content h2 { font-size: 1.375rem !important; margin: 2rem 0 0.75rem !important; } .gh-content h3 { font-size: 1.125rem !important; margin: 1.5rem 0 0.5rem !important; } .gh-content blockquote { padding-left: 1rem !important; font-size: 1.0625rem !important; } .gh-content pre { padding: 1rem !important; font-size: 0.8125rem !important; border-radius: 8px !important; margin: 1.5rem -0.5rem !important; overflow-x: auto !important; -webkit-overflow-scrolling: touch; } .gh-content code { font-size: 0.8125rem !important; } .gh-content ul, .gh-content ol { padding-left: 1.25rem !important; } .gh-content li { font-size: 1rem !important; line-height: 1.65 !important; margin-bottom: 0.5rem !important; } /* === CONTAINERS === */ .gh-container { padding: 0 1rem !important; } .gh-outer { padding: 1.5rem 0 !important; } /* === FOOTER MOBILE === */ .gh-footer-inner { grid-template-columns: 1fr !important; gap: 1.5rem !important; padding: 0 1rem !important; } .gh-footer-menu { flex-wrap: wrap !important; gap: 1rem !important; } .gh-footer-bar { flex-direction: column !important; gap: 0.75rem !important; text-align: center !important; } /* === NEWSLETTER MOBILE === */ .newsletter-cta { padding: 1.5rem 1rem !important; border-radius: 12px !important; margin: 1.5rem 0 !important; } .newsletter-cta h3 { font-size: 1.375rem !important; } .newsletter-form { flex-direction: column !important; gap: 0.75rem !important; } .newsletter-form input, .newsletter-form button { width: 100% !important; font-size: 1rem !important; } /* === DARK MODE TOGGLE MOBILE === */ .dark-mode-toggle { bottom: 1.5rem !important; right: 1.5rem !important; width: 44px !important; height: 44px !important; } /* === IMAGES MOBILE === */ .gh-content img, .article img { max-width: 100vw !important; height: auto !important; border-radius: 8px !important; margin: 1.5rem -1rem !important; } /* === PREVENT OVERSCROLL === */ html, body { overscroll-behavior: none; } /* === CONTAINER TITLE MOBILE === */ .gh-container-title { padding: 2rem 0 1.5rem !important; } .gh-container-title h1 { font-size: 1.75rem !important; line-height: 1.2 !important; } /* === LISTS MOBILE === */ .gh-article .gh-canvas + .gh-content ul, .gh-article .gh-canvas + .gh-content ol, article.gh-article .gh-content ul, article.gh-article .gh-content ol { padding-left: 1.25rem !important; margin: 1rem 0 !important; } .gh-article .gh-canvas + .gh-content li, article.gh-article .gh-content li { font-size: 1rem !important; line-height: 1.65 !important; margin-bottom: 0.5rem !important; } .gh-article .gh-canvas + .gh-content > li, article.gh-article .gh-content > li { font-size: 1rem !important; padding-left: 1.25rem !important; } /* === ARTICLE TITLE (SINGLE) === */ .gh-article-title.is-title { font-size: clamp(1.5rem, 6vw, 2.25rem) !important; } /* Tablet */ @media (min-width: 600px) and (max-width: 900px) { .gh-feed { grid-template-columns: repeat(2, 1fr) !important; } } /* Small screens */ @media (max-width: 380px) { h1 { font-size: 1.5rem !important; } .gh-card-title { font-size: 1rem !important; } .gh-card-excerpt { font-size: 0.8125rem !important; } .gh-content p { font-size: 0.9375rem !important; } .newsletter-cta h3 { font-size: 1.25rem !important; } .dark-mode-toggle { width: 40px !important; height: 40px !important; } } /* === REDUCED MOTION === */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }

Attestation Hardware: la criptografia que decide quien puede usar un agente de IA

Attestation hardware es el mecanismo que permite verificar que un sistema esta en un estado de confianza. Tambien es la herramienta que Google y Apple usan para decidir que agentes de IA pueden operar en sus dispositivos. Te contamos como funciona y por que importa para seguridad.

La attestation hardware suena a tecnologia oscura de altos ejecutivos. Pero es el mecanismo que decide si tu movil puede usarse como DNI digital en la UE, y el mismo principio que define quien puede desplegar un agente de IA en un dispositivo de confianza. Si no entiendes como funciona, estas delegando decisiones de seguridad sin saberlo.

El debate se ha intensificado esta semana tras una publicacion de GrapheneOS que describe exactamente como la arquitectura de la billetera de identidad digital de la UE depende de attestation hardware. La lectura tecnica es fascinante; la lectura politica es inquietante.

Que es la Attestation Hardware

En terminos simples, attestation hardware es un mecanismo criptografico por el cual un chip seguro en tu dispositivo (TPM o TEE) certifica que software esta corriendo en ese momento. El flujo basico:

Un componente hardware dedicado mide el firmware y software arrancado.Ese hash se almacena en registros de plataforma del TPM.Un "quote" criptografico se genera, firmado con una clave privada que nunca sale del chip.Un verificador externo puede comprobar que el dispositivo esta en un estado conocido y de confianza.

El estandar mas usado es el TPM 2.0 (ISO/IEC 11889) y las implementaciones de TEE como ARM TrustZone o Intel TXT. Son tecnologias diseñadas para escenarios de empresa: arranque seguro de sistemas operativos, proteccion de claves de cifrado, identidad de red.

El problema con la EU Digital Identity Wallet

La normativa eIDAS 2.0 obliga a que la billetera digital de identidad de la UE use attestation hardware para garantizar que el documento no es una falsificacion. Parece razonable hasta que miras la letra pequeña:

El estandar elegido requiere certificacion por parte de Google o Apple para Android e iOS.La enorme mayoria de moviles en circulacion usan esos dos sistemas operativos.Eso significa que Google y Apple controlan de facto que dispositivos pueden servir como documentos de identidad digital.

Y aqui esta la parte que rara vez se dice en voz alta: Google y Apple pueden desactivar remotamente la funcionalidad de sus dispositivos. Un dia, con un flip de un interruptor, el presidente de Estados Unidos puede cerrar la EU Digital Identity Wallet. No es ciencia ficcion. Es el diseño del sistema.

Por que importa para agentes de IA

Cada vez mas, los agentes de IA operan en contextos sensibles: acceden a cuentas bancarias, modifican archivos del sistema, interactuan con APIs que manejan datos personales. La pregunta natural es: como se que el modelo de IA que responde en mi telefono es el genuino, y no una version alterada?

Attestation hardware ofrece una respuesta: el modelo puede presentar un informe de attestation generado por el TEE del dispositivo. Un servicio externo puede verificar que el modelo esta corriendo en un entorno intacto, sin modificaciones. Esto transforma la attestation hardware en un prerrequisito para agentes de IA de alta confianza.

El problema es el mismo que en eIDAS: si la attestation la provee el fabricante del dispositivo, el fabricante del dispositivo decide que modelos pueden operar. Y si ese fabricante es Google, Apple, Microsoft o cualquier otra Big Tech, la "descentralizacion" de la IA se convierte en una illusion regulada por el proveedor de turno.

Como funciona en la practica (con codigo)

Vamos directo al codigo. Con la biblioteca tpm2-tools y Python puedes solicitar un quote de attestation desde un dispositivo con TPM 2.0:

import subprocess def get_tpm_quote(nonce_hex): result = subprocess.run([ 'tpm2_quote', '--auth', 'ahek', '--quote', '/tmp/quote.bin', '--signature', '/tmp/sig.bin', '--pcr', 'sha256:0,1,2,3,4,5,6,7,8,9', '--qualify', nonce_hex, '--alg', 'RSA' ], capture_output=True, text=True) if result.returncode != 0: raise RuntimeError(f"TPM quote failed: {result.stderr}") return {'quote': '/tmp/quote.bin', 'signature': '/tmp/sig.bin'}

Este quote puede enviarse a un servicio verificador que comprueba la firma con la clave publica del TPM y valida que los PCRs contienen los valores esperados para un sistema en estado de confianza.

En el contexto de un agente de IA, el flujo seria:

El agente solicita al TEE del dispositivo un quote attestation.El agente incluye ese quote en su peticion al servicio remoto.El servicio verifica que el agente corre en un entorno intacto antes de entregar datos sensibles.Si la verificacion falla, se deniega el acceso o se exige autenticacion adicional.

El conflicto de interes estructural

Attestation hardware funciona bien cuando hay separacion entre tres roles: el fabricante del hardware, el operador del servicio de attestation, y el verificador externo. En la practica actual, una unica entidad acumula los tres roles. Google fabrica Android, define las specs del TEE, y provee la infraestructura de verificacion.

Esto no es necesariamente malice (aunque algunos argumentan que se acerca). Es el resultado natural de un mercado donde los incentivos economicos empujan hacia la integracion vertical. Y es exactamente el mismo problema que surge cuando piensas en desplegar agentes de IA sobre attestation hardware controlada por Big Tech.

El debate sobre attestation hardware en la UE es en el fondo un debate sobre si queremos que la seguridad de la infraestructura critica dependa de decisiones corporativas unilaterales. Con agentes de IA cada vez mas integrados en esa infraestructura, la pregunta se vuelve mas urgente, no menos.

Que hacer con esta informacion

Si estas evaluando agentes de IA para contextos sensibles —banca, salud, infraestructura—, añade attestation hardware a tu lista de criterios de seguridad. Pregunta:

El proveedor del agente ofrece attestation verificable?Puedes auditar tu mismo la cadena de confianza, o dependes del fabricante?Que pasa si el fabricante del dispositivo cambia su politica?

Attestation hardware no es inherentemente malo. Es una herramienta criptografica potente. Pero como cualquier herramienta de seguridad, puede convertirse en vector de lock-in si se diseña sin separacion de poderes. El estandar eIDAS 2.0 no lo hizo bien. La pregunta es si los marcos emergentes para IA van a aprender de ese error.