~~NOTOC~~ {{wvds:title>Architecture}} ===== System Architecture ===== ==== Two-Daemon Architecture ==== The WvdS Crypto Service consists of two independent daemons on L4Re: L4Re System +---------------------------------------------------------------------+ | | | +------------------+ +------------------+ +--------------+ | | | crypto_service | | est_service | | OEM Gateway | | | | | | | | | | | | * AES-256-GCM | | * EST Protocol | | * Your Code | | | | * ML-DSA Sign | | * Cert Request | | * Sensor Data| | | | * ML-KEM KeyGen | | * Cert Renewal | | * Business | | | +--------+---------+ +--------+---------+ +------+-------+ | | | | | | | +------------------------+----------------------+ | | Shared Memory IPC | | | +---------------------------------------------------------------------+ === crypto_service === | Function | Cryptographic operations | | Protocol | Request/Response via Shared Memory | | Library | OpenSSL 3.6 with FIPS Provider | The crypto_service performs all cryptographic operations: * AES-256-GCM Encrypt/Decrypt * ML-DSA Sign/Verify * ML-KEM KeyGen/Encaps/Decaps === est_service === | Function | Certificate management | | Protocol | EST (Enrollment over Secure Transport) | | RFC | RFC 7030 | The est_service handles: * Initial certificate request (Enrollment) * Certificate renewal (Re-Enrollment) * CA certificate retrieval ---- ==== Shared Memory Communication ==== Communication between OEM Gateway and Crypto Service uses Shared Memory: OEM Gateway crypto_service | | | 1. Request in Shared Memory | +------------------------------------->| | | | 2. Signal (IPC) | +------------------------------------->| | | | 3. Processing | | | | 4. Response in Shared Memory | |<-------------------------------------+ | | | 5. Signal (IPC) | |<-------------------------------------+ **Advantages:** * No kernel overhead for data transfer * Zero-copy for large payloads * Maximum performance **Limitations:** * Max Payload: 64 KB * Synchronous processing (one request at a time) ---- ==== Delivery Contents ==== wvds-crypto-svc-0.2.0-oem-delivery.tar.gz | +-- bin/ | +-- aarch64/ | +-- wvds_crypto_service # READY-TO-USE DAEMON (L4Re Task) | +-- lib/ | +-- aarch64/ # ARM64 Target (L4Re) | | +-- libl4re_crypto_service.so # Crypto Service Library | | +-- libcrypto.so.3 # OpenSSL 3.6 | | +-- libssl.so.3 # OpenSSL 3.6 | | +-- fips.so # FIPS Provider | | +-- fipsmodule.cnf # FIPS Configuration | +-- x86_64/ # x86_64 (for local testing) | +-- [same files] | +-- include/ | +-- wvds_crypto.h # C Header for helper functions | +-- certs/ # Test certificates | +-- root_ca.pem / .der | +-- service_cert.pem / .der | +-- client_cert.pem / .der | +-- scripts/ | +-- extract_certs.py # Certificate tool | +-- install.sh # Installation script +-- README_OEM.md # Quick Start +-- WvdS_KB_OEM.md # Knowledge Base ---- ==== Key Storage ==== The Crypto Service supports various key storage options: | Option | Security | Configuration | | File | Basic | Keys in filesystem (encrypted) | | TPM | High | Keys in Trusted Platform Module | | HSM | Maximum | Keys in Hardware Security Module | Configuration is done via ''config.json'' (see [[.:installation|Installation]]). ---- ==== Security Boundaries ==== +---------------------------------------------------------------+ | L4Re Microkernel | +---------------------------------------------------------------+ | | | | | | | +--+--+ +---+---+ +---+---+ +---+---+ | | | Sigma0 | | Moe | | Crypto | | OEM | | | | (Root) | | (Mem) | | Service| | Gateway| | | +--------+ +-------+ +--------+ +--------+ | | | | | | +--------------+ | | Shared Memory | | (only these two) | +---------------------------------------------------------------+ **Isolation:** * Each task has its own address space * Crypto Service can only be reached via defined IPC * Kernel enforces capability-based access control ---- [[.:start|< Back to Overview]]