TEE attestation library for AMD SEV-SNP and Intel TDX platforms
Project description
FHEnom TEE Attestation Library
A Python library for generating and verifying TEE (Trusted Execution Environment) attestation reports across different hardware platforms.
Features
- Multi-Platform Support: Intel TDX and AMD SEV-SNP
- Unified API: Single interface for all TEE platforms
- Cryptographic Verification: Full certificate chain validation
- Production Ready: Used in FHEnom AI confidential computing platform
Supported Platforms
- Intel TDX (Trust Domain Extensions)
- AMD SEV-SNP (Secure Encrypted Virtualization - Secure Nested Paging)
Basic Installation (Python API only)
pip install dk-tee-attestation
Quick Start
Generate an Attestation Report (Inside TEE)
from dk_tee_attestation import AttestationEngineFactory, TeeNotDetectedError
# Auto-detect the TEE platform (recommended)
try:
engine = AttestationEngineFactory.get()
except TeeNotDetectedError:
raise RuntimeError("No supported TEE platform detected on this machine.")
# Generate report with nonce (must be 64 bytes)
nonce = b"your_nonce_here" + b"\x00" * (64 - len(b"your_nonce_here"))
report_bytes = engine.get_report(nonce)
# Save for verification
with open("attestation_report.bin", "wb") as f:
f.write(report_bytes)
To explicitly select a platform instead of auto-detecting:
from dk_tee_attestation import AttestationEngineFactory, AttestationEngineType
engine = AttestationEngineFactory.get(AttestationEngineType.INTEL_TDX)
# or
engine = AttestationEngineFactory.get(AttestationEngineType.AMD_SEV_SNP)
Verify an Attestation Report (Verifier Side)
from dk_tee_attestation import AttestationEngineFactory, AttestationEngineType
# Create engine for the platform that generated the report
engine = AttestationEngineFactory.get(AttestationEngineType.INTEL_TDX)
# Load report
with open("attestation_report.bin", "rb") as f:
report_bytes = f.read()
# Verify (raises exception on failure)
nonce = b"your_nonce_here" + b"\x00" * (64 - len(b"your_nonce_here"))
try:
engine.verify_report(report_bytes, nonce)
print("Attestation verified successfully!")
except Exception as e:
print(f"Verification failed: {e}")
API Reference
AttestationEngine
Base interface for TEE attestation engines.
get_report(report_data: bytes) -> bytes
Generate a TEE attestation report.
Parameters
report_data(bytes): Nonce / challenge. Must be exactly 64 bytes.
Returns
bytes: Raw attestation report.
Raises
AttestationError: If report generation fails.TeeNotDetectedError: IfAttestationEngineFactory.get()is called with no argument and no supported TEE platform is found.
verify_report(report_bytes: bytes, expected_report_data: bytes) -> None
Verify a TEE attestation report.
Parameters
report_bytes(bytes): Raw attestation report to verify.expected_report_data(bytes): Expected nonce. Must be exactly 64 bytes.
Returns
None: Verification succeeded.
Raises
AttestationError: If verification fails.
Verification Process
Intel TDX Verification Steps
- Parse Quote: Extract structured data from TDX Quote v4 bytes
- Validate Nonce: Ensure report_data matches expected value
- Verify PCK Chain: Validate the embedded PCK certificate chain up to Intel Root CA
- Fetch TCB Info: Retrieve and verify TCB Info from Intel PCS
- Check TCB Status: Ensure platform TCB is not revoked or out of date
- Fetch QE Identity: Retrieve and verify QE Identity from Intel PCS
- Verify QE Report: Validate PCK signature over the Quoting Enclave report
- Verify Quote Signature: Validate attestation key signature over the TD Report Body
AMD SEV-SNP Verification Steps
- Parse Report: Extract structured data from raw bytes
- Validate Nonce: Ensure nonce matches expected value
- Fetch Certificates: Retrieve ARK, ASK, and VCEK from AMD KDS
- Verify Chain: Validate certificate chain signatures
- Check Metadata: Ensure TCB and hardware ID match
- Verify Signature: Validate report signature with VCEK
Platform-Specific Notes
Intel TDX
- Requires access to
/dev/tdx_guestdevice andlibtdx_attest.sofor quote generation - Fetches TCB Info and QE Identity from Intel Provisioning Certification Service (PCS)
- Verification is pure Python and works on any machine with network access
AMD SEV-SNP
- Requires access to
/dev/sev-guestdevice for report generation - Fetches certificates from AMD Key Distribution Service (KDS)
- Supports Milan, Genoa, and Turin processor families
Integration with FHEnom AI
This library is integrated into the FHEnom AI SDK:
# Install FHEnom AI with attestation support
pip install fhenomai
# Use via FHEnom AI client
from fhenomai import FHEnomClient
client = FHEnomClient.from_config()
result = client.admin.verify_attestation(report_bytes, nonce_hex)
Requirements
- Python >= 3.8
- cryptography >= 46.0.0
- requests >= 2.32.0
Use Cases
- Remote Attestation: Prove code runs in genuine TEE
- Zero-Trust Security: Establish trust before sensitive operations
- Compliance: Demonstrate hardware-backed security
- Confidential Computing: Verify encrypted model execution
License
TBD
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dk_tee_attestation-0.5.0.tar.gz
(28.8 kB
view details)
File details
Details for the file dk_tee_attestation-0.5.0.tar.gz.
File metadata
- Download URL: dk_tee_attestation-0.5.0.tar.gz
- Upload date:
- Size: 28.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99478913c5e4d81171586cf534dc5a92db37cab8548be3dd3edefcad14824124
|
|
| MD5 |
f300aac326b3aa85f169bdb8f031e93f
|
|
| BLAKE2b-256 |
abf163a457bf80650a0f8dd375f54187cb21184d07bc7cfa61990a0ec066c8b9
|