Certificati

Un certificato DAT rappresenta in un’unica stringa gli intervalli temporali, gli algoritmi e le chiavi necessari per emettere e verificare i token.

cid
uint64
.
start
uint64
.
duration
uint64
.
ttl
uint64
.
sig-alg
name
.
crypto-alg
name
.
sig-key
Base64Url
.
crypto-key
Base64Url
Anche il certificato usa campi ASCII delimitati da punti in un ordine fisso.
text
cid.start.duration.ttl.sig-alg.crypto-alg.sig-key.crypto-key

Intervalli temporali

  • Il certificato può emettere DAT da start a start + duration, estremi inclusi.
  • Un DAT emesso resta valido per ttl a partire dall’istante di emissione.
  • Il certificato è necessario per la verifica fino a start + duration + ttl ed è ancora verificabile esattamente in quell’istante.

Eliminare un certificato appena termina il periodo di emissione renderebbe impossibile verificare i DAT già emessi. Il gestore e il CMS distinguono quindi tra idoneità all’emissione e idoneità alla verifica.

ID del certificato e rotazione delle chiavi

cid è il contratto pubblico che identifica chiavi e intervalli temporali. Non si sostituiscono le chiavi associate a un cid esistente. Per ruotare le chiavi si crea un nuovo certificato con un nuovo cid. I servizi sincronizzano in anticipo il nuovo certificato e rimuovono quello precedente solo dopo la scadenza di tutti i DAT emessi con esso.

Algoritmi di firma

NomeUsoCertificato di sola verifica
HMAC-SHA256-MFSHMAC SHA-256Non supportato
HMAC-SHA384-MFSHMAC SHA-384Non supportato
HMAC-SHA512-MFSHMAC SHA-512Non supportato
ECDSA-P256ECDSA P-256Supportato
ECDSA-P384ECDSA P-384Supportato
ECDSA-P521ECDSA P-521Supportato

HMAC usa la stessa chiave per firmare e verificare, quindi fornire la chiave a un servizio di verifica gli consente anche di emettere token. Se l’autorità di emissione deve restare separata, usare ECDSA e certificati di sola verifica.

Algoritmi crittografici

NomeChiave
IV-AES128-GCMAES-128
IV-AES256-GCMAES-256

I nomi degli algoritmi fanno parte del contratto wire e non devono essere sostituiti con alias usati da JWT.

Certificati completi e di sola verifica

Un certificato ECDSA completo contiene la chiave privata necessaria per firmare. Un certificato di sola verifica conserva solo la chiave pubblica ECDSA, ma mantiene la chiave AES necessaria a decifrare secure. Un servizio di sola verifica può quindi controllare e decifrare un DAT, ma non può emetterne uno nuovo.