Der WvdS Crypto Service ist eine fertige Black-Box. Sie muessen nichts kompilieren oder konfigurieren. Folgen Sie einfach diesen drei Schritten.
Fuegen Sie den Crypto Service zu Ihrer modules.list hinzu:
-- modules.list module wvds_crypto_service module libcrypto.so.3 module libssl.so.3
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 Daemoncrypto_ep = crypto_ds - Client-Seite fuer Ihr GatewayInkludieren 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!
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"
}
}
| Type | Beschreibung |
file | Keys im Dateisystem (Default) |
tpm | Keys im TPM 2.0 |
hsm | Keys im externen HSM |
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...
| 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 fuer weitere Fehler.