~~NOTOC~~ {{wvds:title>Installation}} ===== Installation: 3-Schritte OEM-Integration ===== Der WvdS Crypto Service ist eine **fertige Black-Box**. Sie muessen nichts kompilieren oder konfigurieren. Folgen Sie einfach diesen drei Schritten. ---- ==== Schritt 1: Daemon ins L4Re Image einbinden ==== Fuegen Sie den Crypto Service zu Ihrer ''modules.list'' hinzu: -- modules.list module wvds_crypto_service module libcrypto.so.3 module libssl.so.3 ---- ==== Schritt 2: Daemon starten (Ned-Script) ==== Starten Sie den Daemon in Ihrem Ned-Script: local L4 = require("L4") -- Shared Memory fuer Kommunikation erstellen local crypto_ds = L4.Env.ram:create(64 * 1024, L4.Dataspace.ALL):m("rw") -- Crypto Daemon starten local crypto_daemon = L4.default_loader:start( { caps = { crypto_ep = crypto_ds:svr() } }, "rom/wvds_crypto_service" ) -- Ihr Gateway bekommt die Client-Seite local gateway = L4.default_loader:start( { caps = { crypto_ep = crypto_ds } }, "rom/iss_gateway" ) **Erklaerung:** * ''crypto_ds'' - Shared Memory Dataspace (64 KB) * ''crypto_ep = crypto_ds:svr()'' - Server-Seite fuer Daemon * ''crypto_ep = crypto_ds'' - Client-Seite fuer Ihr Gateway ---- ==== Schritt 3: Aus Ihrem Code kommunizieren ==== Inkludieren Sie den Header und verwenden Sie die Helper-Funktionen: #include "wvds_crypto.h" void encrypt_sensor_data(const uint8_t* data, size_t len) { uint8_t request[1024]; size_t request_len = sizeof(request); // Request bauen int rc = wvds_build_aes_encrypt_request( request, &request_len, 1, // Key-ID "sensor", 6, // AAD data, len // Plaintext ); if (rc == 0) { // Request in Shared Memory kopieren memcpy(shared_memory, request, request_len); // Daemon signalisieren signal_crypto_daemon(); // Auf Antwort warten wait_for_response(); // Response parsen uint8_t nonce[12], tag[16], ciphertext[1024]; size_t ct_len; wvds_parse_aes_encrypt_response( shared_memory, response_len, nonce, tag, ciphertext, &ct_len ); } } **Das ist alles!** ---- ==== Optionale Konfiguration ==== Falls Sie die Default-Einstellungen aendern moechten, koennen Sie eine ''config.json'' bereitstellen: { "version": "0.2.0", "key_storage": { "type": "file", "path": "/data/keys", "encryption": "aes-256-gcm" }, "rate_limit": { "max_requests_per_second": 1000, "burst": 100 }, "logging": { "level": "info", "destination": "syslog" } } === Key Storage Optionen === | Type | Beschreibung | | ''file'' | Keys im Dateisystem (Default) | | ''tpm'' | Keys im TPM 2.0 | | ''hsm'' | Keys im externen HSM | ---- ==== Verifizierung ==== Pruefen Sie, ob der Daemon korrekt laeuft: # L4Re Console l4> ps ... wvds_crypto_service ... # Test-Request senden l4> crypto_test encrypt "Hello World" OK: Ciphertext = 0x... ---- ==== Troubleshooting ==== | Problem | Loesung | | Daemon startet nicht | ''libcrypto.so.3'' in modules.list? | | Shared Memory Fehler | Dataspace gross genug (min 64 KB)? | | Capability Error | ''crypto_ep'' korrekt gemappt? | | FIPS Fehler | ''fipsmodule.cnf'' vorhanden? | Siehe auch [[.:sicherheit#troubleshooting|Sicherheit > Troubleshooting]] fuer weitere Fehler. ---- [[.:start|< Zurueck zur Uebersicht]] | [[.:integration|Weiter: Code-Beispiele >]]