Namestitev: 3-Koračna OEM Integracija

WvdS Crypto Service je končna črna škatla. Ničesar vam ni treba kompilirati ali konfigurirati. Preprosto sledite tem trem korakom.


Korak 1: Vključitev Daemona v L4Re Image

Dodajte Crypto Service v vašo modules.list:

-- modules.list
module wvds_crypto_service
module libcrypto.so.3
module libssl.so.3

Korak 2: Zagon Daemona (Ned-Script)

Zaženite daemon v vašem Ned-scriptu:

local L4 = require("L4")
 
-- Ustvari skupni pomnilnik za komunikacijo
local crypto_ds = L4.Env.ram:create(64 * 1024, L4.Dataspace.ALL):m("rw")
 
-- Zaženi Crypto Daemon
local crypto_daemon = L4.default_loader:start(
    { caps = { crypto_ep = crypto_ds:svr() } },
    "rom/wvds_crypto_service"
)
 
-- Vaš Gateway dobi odjemalčevo stran
local gateway = L4.default_loader:start(
    { caps = { crypto_ep = crypto_ds } },
    "rom/iss_gateway"
)

Razlaga:

  • crypto_ds - Skupni pomnilnik Dataspace (64 KB)
  • crypto_ep = crypto_ds:svr() - Strežniška stran za daemon
  • crypto_ep = crypto_ds - Odjemalčeva stran za vaš Gateway

Korak 3: Komunikacija iz Vaše Kode

Vključite header in uporabite pomožne funkcije:

#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);
 
    // Zgradi zahtevo
    int rc = wvds_build_aes_encrypt_request(
        request, &request_len,
        1,                      // Key-ID
        "sensor", 6,            // AAD
        data, len               // Čistopis
    );
 
    if (rc == 0) {
        // Kopiraj zahtevo v skupni pomnilnik
        memcpy(shared_memory, request, request_len);
 
        // Signaliziraj daemon
        signal_crypto_daemon();
 
        // Počakaj na odgovor
        wait_for_response();
 
        // Razčleni odgovor
        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
        );
    }
}

To je vse!


Opcijska Konfiguracija

Če želite spremeniti privzete nastavitve, lahko zagotovite config.json:

{
    "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"
    }
}

Možnosti Shranjevanja Ključev

Tip Opis
file Ključi v datotečnem sistemu (privzeto)
tpm Ključi v TPM 2.0
hsm Ključi v zunanjem HSM

Preverjanje

Preverite, ali daemon pravilno teče:

# L4Re Console
l4> ps
... wvds_crypto_service ...
 
# Pošlji testno zahtevo
l4> crypto_test encrypt "Hello World"
OK: Ciphertext = 0x...

Odpravljanje Težav

Problem Rešitev
Daemon se ne zažene libcrypto.so.3 v modules.list?
Napaka skupnega pomnilnika Dataspace dovolj velik (min 64 KB)?
Napaka zmožnosti crypto_ep pravilno mapiran?
FIPS napaka fipsmodule.cnf prisoten?

Glejte tudi Varnost > Odpravljanje težav za dodatne napake.


< Nazaj na pregled | Naprej: Primeri kode >

Zuletzt geändert: dne 29.01.2026 ob 21:49