Control significativo de los datos en sistemas distribuidos.
Oak es una plataforma de software para construir sistemas distribuidos que proporcionan, de forma transparente, afirmaciones verificables externamente (o falsables) sobre el comportamiento de los sistemas.
Oak proporciona bloques de construcción que se utilizan para construir Aplicaciones Enclave, es decir, aplicaciones que están aisladas del host en el que se ejecutan y que son atestiguables de forma remota.
En este documento nos centramos en sistemas distribuidos compuestos por "nodos" heterogéneos; un nodo puede ser una Aplicación Enclave ejecutándose en un servidor (por ejemplo, un centro de datos privado, un proveedor de nube pública, etc.), una aplicación normal ejecutándose en un dispositivo cliente (por ejemplo, un teléfono, un portátil), un servicio HTTP o gRPC normal, un sistema de almacenamiento, etc. Cuando dos nodos se comunican entre sí, cualquiera de ellos o ambos pueden ser Aplicaciones Enclave. Para cada interacción entre dos nodos, nos referimos a ellos como "iniciador" y "respondedor". Evitamos los términos "cliente" y "servidor" para esos roles, porque en algunos casos el nodo "iniciador" puede estar ejecutándose en realidad en un "servidor": todas las combinaciones son posibles.
Una Aplicación Enclave en un sistema distribuido Oak puede atestiguarse remotamente ante otros nodos: esto consiste en proporcionar evidencia de su propia identidad de software y hardware, vinculada a claves criptográficas locales (almacenadas en hardware a prueba de manipulación, lo que garantiza que las claves no puedan ser exfiltradas ni copiadas), firmada en última instancia por una o más raíces de confianza de software o hardware disponibles en el host de ese nodo. La identidad de software de una Aplicación Enclave consiste en mediciones (es decir, digests / hashes) de los binarios ejecutables que contribuyen a ella, así como datos adicionales (por ejemplo, configuración).
Oak se centra en Entornos de Ejecución Confiables (TEEs) basados en VM (por ejemplo, AMD SEV-SNP, Intel TDX) como raíz de confianza de hardware para las Aplicaciones Enclave. Esto permite que una Aplicación Enclave proporcione un informe de atestación remota firmado por claves vinculadas al hardware en el TEE, a las que el proveedor de servicios no puede acceder. Estas claves tienen su raíz en última instancia en el fabricante del TEE (por ejemplo, AMD, Intel); esto reduce (idealmente, elimina) la necesidad de confiar en el proveedor de servicios de ese nodo para validar su evidencia, distribuyendo la confianza entre múltiples actores que no coluden.
Al iniciarse, cada Aplicación Enclave genera un par de claves local y vincula la clave pública a su propia evidencia. Cuando un nodo pretende comunicarse con una Aplicación Enclave (ya sea como iniciador o como respondedor), se establece un canal cifrado de extremo a extremo entre los dos nodos. Como parte del establecimiento del canal, cada nodo también proporciona su propia evidencia (si la tiene) al otro nodo, y puede usar la evidencia proporcionada por el otro nodo para establecer su confiabilidad, antes de decidir si intercambiar datos con él.
Este canal cifrado y atestiguado proporciona:
Con el fin de minimizar la superficie de ataque y la Base de Cómputo Confiable (TCB) de una Aplicación Enclave, Oak fomenta una arquitectura dividida:
Aplicación Enclave: un binario construido (de forma reproducible) a partir de código abierto, que se ejecuta dentro del TEE. La Aplicación Enclave tiene acceso a las claves de descifrado vinculadas a la evidencia de atestación; descifra las solicitudes entrantes de otros nodos, las procesa, cifra las respuestas y las envía de vuelta a través del canal de comunicación. Este es el binario que está asociado con afirmaciones verificables externamente. Ningún otro binario tiene acceso a las solicitudes entrantes en texto plano.
Aplicación Host: un binario que se ejecuta en el entorno del servidor host (no confiable) y que actúa como front-end de la Aplicación Enclave; expone un endpoint gRPC accesible externamente por otros nodos. Este binario solo maneja datos cifrados; su función principal es crear y mantener una instancia de la Aplicación Enclave en el TEE, y reenviar datos cifrados hacia y desde la Aplicación Enclave. También puede contener lógica propietaria necesaria para interactuar con el plano de control u otros sistemas internos necesarios para ejecutarse en la infraestructura del proveedor de servicios.
Esta arquitectura significa que el proveedor de servicios no podría sustituir el binario de la Aplicación Enclave por otro diferente (potencialmente malicioso) sin ser detectado. Si el proveedor de servicios introdujera una puerta trasera en la Aplicación Enclave, tendría que firmar el binario y publicarlo en un registro verificable mediante el proceso de Transparent Release, lo que haría que la puerta trasera fuera irreversiblemente visible para observadores externos.
Un uso canónico de Oak es construir aplicaciones de computación sellada que preservan la privacidad.
En una aplicación de computación sellada, un nodo (normalmente un dispositivo cliente) envía datos a una aplicación enclave (normalmente un servidor), que procesa los datos sin que el proveedor de servicios que aloja la aplicación enclave pueda ver las entradas, salidas o efectos secundarios de la computación.
A continuación se muestra un diagrama arquitectónico simplificado.
Oak admite dos variantes de Sistemas Operativos dentro del TEE, sobre los cuales se pueden desplegar las Aplicaciones Enclave: