The attribute plugin is not available, 2fa disabled

Varnostni Mehanizmi

WvdS Crypto Service implementira več zaščitnih mehanizmov, ki so samodejno aktivni. Ničesar vam ni treba konfigurirati.


Omejevanje Hitrosti

Ščiti pred napadi zavrnitve storitve (DoS) z obremenitvijo.

Parameter Vrednost
Maks. zahtev/sekundo 1000
Burst toleranca 100
Cooldown 100 ms

Obnašanje ob prekoračitvi:

Zahteva --> [Rate Limiter] --> Status: 0x07 (RATE_LIMITED)
                           --> Kriptografska operacija ni izvedena

Priporočilo za odjemalce:

  • Pri statusu 0x07: Počakajte in ponovite z backoff
  • Eksponentna čakalna doba: 100ms, 200ms, 400ms, …
int send_with_retry(const uint8_t* request, size_t len) {
    int retry = 0;
    int delay_ms = 100;
 
    while (retry < 5) {
        send_request(request, len);
        int status = get_response_status();
 
        if (status != 0x07) return status;  // Ni rate-limited
 
        usleep(delay_ms * 1000);
        delay_ms *= 2;  // Eksponentni backoff
        retry++;
    }
    return -1;  // Timeout
}

Sledenje Nonce

Ponovna uporaba Nonce = Katastrofa

Pri AES-GCM ponovna uporaba nonce vodi do popolnega kompromitiranja obeh čistopisov!

Crypto Service aktivno ščiti pred ponovno uporabo nonce:

Za Encrypt

  • Nonce generira storitev (CSPRNG)
  • Odjemalec ne more predložiti lastne nonce
  • Vsaka nonce se uporabi samo enkrat

Za Decrypt

  • Storitev shranjuje uporabljene nonce (Bloom Filter)
  • Pri ponovljeni nonce: Status 0x08 (NONCE_REUSE)
  • Velikost okna: 1 milijon nonce

Opomba: Sledenje nonce je na ključ-ID. Pri rotaciji ključa se sledilnik ponastavi.


Validacija Vhodov

Vsi vnosi se preverijo pred obdelavo:

Preverjanje Koda napake
Magic Byte != 0xC7 0x01 (INVALID_HEADER)
Neznan Request-Type 0x02 (INVALID_TYPE)
Dolžina vsebine napačna 0x03 (INVALID_PAYLOAD)
Key-ID ne obstaja 0x04 (KEY_NOT_FOUND)
Vsebina > 64 KB 0x09 (PAYLOAD_TOO_LARGE)

Brez izjem:

Storitev ne vrže izjem. Vse napake se sporočijo preko statusnih kod.


Maksimalna Velikost Vsebine

Omejitev 64 KB (65536 bajtov)

Razlogi:

  • Velikost skupnega pomnilnika omejena
  • Zaščita pred DoS (izčrpanje pomnilnika)
  • Predvidljiv čas izvajanja

Šifriranje velikih podatkov:

// Chunked Encryption za velike datoteke
#define CHUNK_SIZE (60 * 1024)  // 60 KB na kos
 
int encrypt_large_file(FILE* in, FILE* out) {
    uint8_t buffer[CHUNK_SIZE];
    size_t bytes_read;
    uint32_t chunk_id = 0;
 
    while ((bytes_read = fread(buffer, 1, CHUNK_SIZE, in)) > 0) {
        // AAD vsebuje Chunk-ID za zaščito vrstnega reda
        char aad[32];
        snprintf(aad, sizeof(aad), "chunk:%u", chunk_id++);
 
        uint8_t ct[CHUNK_SIZE + 28];
        size_t ct_len;
        uint8_t nonce[12], tag[16];
 
        encrypt_message(buffer, bytes_read, aad, strlen(aad),
                       ct, &ct_len, nonce, tag);
 
        fwrite(nonce, 1, 12, out);
        fwrite(tag, 1, 16, out);
        fwrite(ct, 1, ct_len, out);
    }
    return 0;
}

Brisanje ob Opustitvi

Vsi varnostno kritični podatki se po uporabi prepišejo:

  • Ključi (po kriptografski operaciji)
  • Čistopisi (po šifriranju)
  • Skupne skrivnosti (po izmenjavi ključev)

Implementacija:

// Prepreči optimizacijo prevajalnika
static void secure_zero(void* ptr, size_t len) {
    volatile uint8_t* p = (volatile uint8_t*)ptr;
    while (len--) *p++ = 0;
}

L4Re Izolacija

Crypto Service teče kot izoliran L4Re task:

+---------------------------------------------------------------+
|                    L4Re Microkernel                           |
+---------------------------------------------------------------+
|     |              |              |              |            |
|  +--+--+       +---+---+      +---+---+      +---+---+        |
|  | Sigma0 |    | Moe   |      | Crypto |     | OEM   |        |
|  | (Root) |    | (Mem) |      | Service|     | Gateway|       |
|  +--------+    +-------+      +--------+     +--------+        |
|                                   |              |             |
|                                   +--------------+             |
|                                   SAMO ta IPC                  |
+---------------------------------------------------------------+

Varnostne garancije:

  • Lasten naslovni prostor (brez neposrednega dostopa do pomnilnika)
  • Dovoljen samo ekspliciten IPC (na osnovi zmožnosti)
  • Brez dostopa do omrežja (air-gapped)

Odpravljanje Težav

Simptom Možen vzrok Rešitev
Status 0x04 trajno Key-Storage poškodovan Ponovno generirajte ključe
Status 0x07 pogosto Hitrost zahtev previsoka Batching, caching
Status 0x08 Rotacija ključa pozabljena Generirajte nov ključ
Počasna zmogljivost FIPS način + Debug Uporabite release build
Puščanje pomnilnika Odgovori niso obdelani Počistite skupni pomnilnik

< API Referenca | Naprej: Skladnost >

Zuletzt geändert: dne 29.01.2026 ob 21:48