From f21b46e224106dfac21b1181fc3f33a94c383008 Mon Sep 17 00:00:00 2001 From: k3dz0r Date: Tue, 20 Jan 2026 08:44:35 -0300 Subject: [PATCH] Update fundamentals/certification-system --- docs/cli/Guides/tgwui.md | 6 +- docs/fundamentals/certification.md | 60 ++++++++++++++---- .../certification-system-architecture.png | Bin 21355 -> 32041 bytes src/theme/Layout/index.js | 12 ++++ 4 files changed, 64 insertions(+), 14 deletions(-) diff --git a/docs/cli/Guides/tgwui.md b/docs/cli/Guides/tgwui.md index e12f58ef..87602534 100644 --- a/docs/cli/Guides/tgwui.md +++ b/docs/cli/Guides/tgwui.md @@ -231,4 +231,8 @@ The most important statuses (see the [full list](/fundamentals/orders#compute-or - **Processing**: The compute is executing the order inside a TEE. Your model is either already available or will be available soon. - **In Queue**: The order is waiting for the compute to become available. This status appears only if the compute is overloaded with orders. If this status persists for a few minutes, place a new main order the same tunnel order and engine configuration but another compute offer. - **Done**: The order is completed successfully and the model's UI is no longer available. -- **Error**: The order completed with an error. [Download the order results](/cli/commands/orders/download-result) to get more information about the error. \ No newline at end of file +- **Error**: The order completed with an error. [Download the order results](/cli/commands/orders/download-result) to get more information about the error. + +## Support + +If you have any issues or questions, contact Super Protocol on [Discord](https://discord.gg/superprotocol) or via the [contact form](https://superprotocol.zendesk.com/hc/en-us/requests/new). \ No newline at end of file diff --git a/docs/fundamentals/certification.md b/docs/fundamentals/certification.md index a943c6b5..0dfd2161 100644 --- a/docs/fundamentals/certification.md +++ b/docs/fundamentals/certification.md @@ -5,37 +5,67 @@ slug: "/certification" sidebar_position: 6 --- -Super Protocol uses a certification system for signing data, verifying signatures, and ensuring applications operate within a trusted confidential computing environment. Verified data is published on the blockchain on behalf of confidential containers, allowing anyone to validate application integrity and ensure confidentiality. End users only interact with issued certificates and verify signatures, while the complexities of Remote Attestation are seamlessly managed in the background. +The Super Protocol Certification System is a hierarchical infrastructure for managing trust in confidential computing environments. The main purpose of the system is to create a valid chain of X.509 certificates for any applications running in Trusted Execution Environments (TEEs). The Certification System itself also operates within TEEs, ensuring the entire chain is rooted in hardware-based trust. -All the system components are open-source, ensuring transparency and verifiability. +The Certification System performs remote attestation under the hood, but exposes a familiar X.509-style certificate chain on the surface. This allows any verifier (a user, an auditor, or an automated service) to validate that: + +- The execution took place within a TEE. +- The certificate chain leading to the workload is valid and trusted. + +The Certification System can function as an independent, standalone service. In this capacity, it could serve external companies and users who need to establish certificate chains for their own confidential computing applications. + +Note that the system is not responsible for validating what an application does internally. Its primary role is to issue certificates to trusted confidential environments, forming a cryptographically verifiable trust chain. + +All system components are planned to be open-sourced, improving transparency and verifiability. ## Architecture -The backbone of the system is a hierarchical structure of Certification Authorities operating inside Trusted Execution Environments (TEE)—Intel SGX enclaves. +The Certification System is organized as a hierarchy of Certification Authorities (CAs) that establishes trust for TEEs through a standard certificate chain. Every CA operates within a TEE—Intel SGX enclave.

-The Root Certification Authority (*Root CA*) is located at the highest hierarchical level. At the start, Root CA generates a self-signed certificate, embedding the SGX attestation quote. +The chain consists of three levels: + +- Root CA is the top-level certificate authority that establishes the trust anchor for the entire system. At the start, it generates a self-signed certificate, embedding the SGX attestation quote. +- SubRoot CAs are intermediate certificate authorities. They submit their quotes and public keys to the Root CA and request certificates. The Root CA verifies these incoming requests and then issues and signs certificates for the SubRoot CAs. Once a SubRoot CA is certified by the Root CA, it can certify any TEE-backed environment that proves it is actually confidential. +- End certificates are issued to specific workloads, entire Confidential Virtual Machines (CVMs) running in TEEs, and in some other cases. These certificates are not CAs and cannot be used to sign or issue other certificates. + +Each level in the hierarchy receives its certificate from the level above, creating a chain of trust that ultimately traces back to the Root CA. + +## Trusted Loader -SubRoot Certification Authorities (*SubRoot CAs*) are located at the next hierarchical level. These submit their quotes and public keys to the Root CA and request certificates. The Root CA verifies these incoming requests and then issues and signs certificates for the SubRoot CAs. +Trusted Loader is a special service that prepares and launches the workload associated with an order inside a CVM running in a TEE. It runs in a privileged position within the execution environment, allowing it to access the underlying attestation capabilities of the platform. Workloads themselves do not have such access. -The SubRoot CAs, in turn, issue and sign certificates for orders by request. +Trusted Loader also: + +- Collects hashes of the workload and its components. +- Verifies workload integrity before execution starts. +- Requests end certificates. + +All end certificates are requested and received by Trusted Loader. Other components do not interact directly with Certificate Authorities. Trusted Loader may request certificates in several cases: + +- At startup. The certificate confirms that the confidential environment is correctly configured and that the attestation challenge (TDX, SEV-SNP, etc.) matches expectations. +- When generating session keys. The certificate is included in the session key structures used during execution. +- When forming a TEE Confirmation Block (TCB). The certificate is embedded into TCB, which also includes system information and measurements. +- When deploying an order. An order-specific certificate is issued and delivered, along with cryptographic keys, to the order's execution environment. ## Order certificates -The issuing of order certificates involves Trusted Loader—a software mechanism developed by Super Protocol to load and run applications within a TEE. Trusted Loader operates inside the Confidential VM that executes the order. This Confidential VM may be deployed within a CPU-based or CPU/GPU-augmented TEE using technologies such as Intel TDX, AMD SEV-SNP, NVIDIA Confidential Computing, or others, making the system TEE-agnostic. +Trusted Loader requests a dedicated order-specific certificate when an order is prepared for execution. This certificate includes order-specific data, such as the hash of workload information. -To receive an order certificate, the Trusted Loader sends a request to a SubRoot CA providing the quote and a public key. The SubRoot CA verifies the quote, issues the order certificate, and signs it with the provided public key. +Trusted Loader places the order certificate as a file into the order's execution environment. There, it can be used by the order itself to prove that it was launched within a confidential environment. + +Note that the Certification System does not determine whether a CVM is correct or compromised. If a CVM runs in a confidential environment, it can obtain certificates. However, differences in hashes are visible in the certificate chain and can be detected by any verifying party. ### Order validation -Orders in Super Protocol are created with necessary input data. This execution environment is referred to as *Workload Info*. +Orders in Super Protocol are created with a workload description known as *Workload Info*. -The Workload Info includes an array called `runtimeInfo[]` with metadata about solutions and datasets used in the order. Each such order component has an entry in this array, which includes: +Workload Info includes an array called `runtimeInfo`. It contains information about solutions and data associated with the order. Each such order component has an entry in this array, which includes: -- Type +- Type (solution or data) - Hash - Size - Signature key hash (optional) @@ -43,9 +73,13 @@ The Workload Info includes an array called `runtimeInfo[]` with metadata about < The hash of the Workload Info is included in the order certificate. -Trusted Loader generates and publishes a report in the blockchain, allowing anyone to validate the order. This order report includes: +Before order execution begins, Trusted Loader checks the integrity of the full workload composition (solutions, data, and configuration). The order proceeds only if this verification succeeds. + +Trusted Loader also generates and publishes a report to the blockchain, allowing any verifier to validate the order. The report includes: - The public components of all the certificates in the chain - Workload Info: - Order creation date - - The `runtimeInfo[]` array \ No newline at end of file + - The `runtimeInfo` array + +The immutable nature of blockchain prevents any further alterations to the report once it is published. The report enables verifiers to confirm what exactly was launched and that the certificate corresponds to that specific workload. \ No newline at end of file diff --git a/docs/fundamentals/images/certification-system-architecture.png b/docs/fundamentals/images/certification-system-architecture.png index 4e4ffd05e8c23033e6afe295ca45eb89e086da79..32eead65e8ccb9caaf859d1bdda830911c72f48a 100644 GIT binary patch literal 32041 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 Da>mi+ literal 21355 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

;3YYtIyUi>@wL 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 diff --git a/src/theme/Layout/index.js b/src/theme/Layout/index.js index eeac7d18..980964c8 100644 --- a/src/theme/Layout/index.js +++ b/src/theme/Layout/index.js @@ -87,9 +87,21 @@ export default function Layout(props) { ᐧ A tunnel client hosts a web server; it remains hidden behind the tunnel server and protected from external threats. + + TEE Confirmation Block (TCB) contains a unique device ID, equipment benchmark results,
various hashes, device signature, and a certificate chain for signature verification.

+ + Trusted Loader generates and publishes TCB on the blockchain every 24 hours. +
+ + // Stabs and abbreviations + Confidential Virtual Machine + + + Trusted Loader + ); } \ No newline at end of file