Ključi in njihova hramba
Storitev ustvari in hrani ključe, s katerimi računa. Klicatelj prejme identifikator in pri parih ključev še javni ključ. Ta stran opisuje, koliko časa ključ živi, kako je zaščiten in kaj to pomeni za obratovanje.
Izrazi
- Identifikator ključa (
key_id): nepredznačeno 32-bitno število, s katerim zahteva navede ključ v storitvi. Vrednost0ni veljaven identifikator. - Hramba ključev: tabela v delovnem pomnilniku storitve, ki identifikatorje preslika v ključe.
- Enkratna vrednost (nonce): 12-bajtna vrednost pri AES-GCM, ki se sme uporabiti le enkrat. Dvakratna uporaba iste vrednosti z istim ključem razkrije overitveni ključ in razliko obeh čistopisov.
Življenjski cikel ključa
- Ustvarjanje. Ustvarjanje ključa vzame ključno gradivo iz generatorja naključnih števil OpenSSL in ga shrani v hrambo. Katere vrste ključev lahko ustvari posamezna izvedba, opisuje Primerjava izvedb.
- Dodelitev identifikatorja. Storitev identifikator izbere naključno, ne zaporedno. Kdor identifikatorja ne pozna, ga zato ne more uganiti s štetjem.
- Uporaba. Podpisovanje, dekapsulacija in operacije AES navedejo identifikator. Zasebni ključ pri tem storitve ne zapusti.
- Branje javnega ključa. Za ključe ML-DSA in ML-KEM storitev vrne javni ključ. Ista zahteva za ključ AES spodleti.
- Konec. Storitev posameznih ključev ne zna izbrisati. Vsi ključi prenehajo s procesom. Ob sprostitvi storitev ključno gradivo prepiše z ničlami.
Omejitve hrambe
l4re | win |
|
|---|---|---|
| Največje število ključev | 1024 | max_keys iz konfiguracije, privzeto 1024 |
| Trajna hramba | ne | ne |
| Uvoz lastnih ključev | ni mogoč | ni mogoč |
| Ravnanje pri polni hrambi | ustvarjanje spodleti | ustvarjanje spodleti |
Ker storitev ničesar trajno ne shrani, so po ponovnem zagonu vsi identifikatorji neveljavni. Aplikacija, ki želi podpise ohraniti preverljive tudi po ponovnem zagonu, mora javni ključ shraniti sama in po zagonu dati ustvariti nove ključe.
Zaščita pred ponovljeno enkratno vrednostjo
Za vsak ključ AES si storitev zapomni zadnjih 1024 enkratnih vrednosti, s katerimi je šifrirala, in šifriranje s katero od njih zavrne. Tako ujame programske napake, na primer enkratno vrednost, zapisano v kodi. Popolna zaščita to ni:
- Enkratne vrednosti, starejše od zadnjih 1024, storitev ne prepozna več.
- V izvedbi L4Re enkratno vrednost zagotovi klicatelj in je odgovoren za njeno enkratnost; običajna načina sta števec ali 12 bajtov iz preverjenega generatorja naključnih števil.
- Izvedba Windows vsako enkratno vrednost ustvari sama iz 12 naključnih bajtov. Po NIST SP 800-38D naj ključ z naključnimi enkratnimi vrednostmi šifrira največ 2³² sporočil.
Kaj to pomeni za uporabo
- Kratkoživi ključi so primerni. Sejni ključi, ključi za posamezno izmenjavo in ključi za predstavitve so tisto, čemur je ta hramba namenjena.
- Dolgoživi podpisni ključi niso primerni. Ključ overitelja ali ključ, katerega podpisi morajo veljati leta, sodi v strojni varnostni modul. Za overitelje ETSI EN 319 411-1 zahteva ovrednoteno varno kriptografsko napravo; programski proces tega ne izpolnjuje.
- Meja zaščite je proces. Kdor lahko bere pomnilnik procesa storitve, prebere tudi ključe. V L4Re opravila loči mikrojedro; v sistemu Windows jih ščiti le uporabniški račun, pod katerim storitev teče.
Česa ta stran ne obravnava
- Posameznih zahtev za ustvarjanje ključev in branje javnih ključev; glejte Binarni protokol izvedbe L4Re in Protokol JSON izvedbe Windows.
Viri
sl/wiki/pqcrypt/svc/concepts/keys-and-key-storage.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille