DAT
Un DAT è una stringa ASCII delimitata da punti (.). Ogni campo compare una sola volta nell’ordine stabilito e la firma verifica che i campi precedenti siano rimasti identici ai byte trasmessi.
expire.cid.plain.secure.signatureCampi
| Campo | Rappresentazione | Significato |
|---|---|---|
expire | Decimale di un intero senza segno | Data Unix di scadenza del DAT |
cid | Esadecimale minuscolo di un intero senza segno | ID del certificato usato per la verifica |
plain | Base64Url senza padding | Byte non cifrati |
secure | Base64Url senza padding | Byte protetti dall’algoritmo crittografico del certificato |
signature | Base64Url senza padding | Firma dei byte ASCII originali di expire.cid.plain.secure |
plain è incluso nella firma e quindi non può essere alterato, ma chiunque può decodificarlo. Segreti, dati personali e valori usati direttamente per l’autorizzazione devono essere inseriti in secure. Un campo secure vuoto è valido.
Rappresentazione canonica
- L’intero DAT deve essere ASCII.
- I numeri sono scritti senza segno, spazi, prefissi o zeri iniziali superflui. Solo il valore zero è scritto
0. - Base64Url usa l’alfabeto sicuro per URL e non ammette padding
=né spazi. - Le rappresentazioni Base64Url non canoniche degli stessi byte vengono rifiutate.
- Se il numero o l’ordine dei campi è diverso, la stringa non è un DAT.
Queste regole impediscono che implementazioni diverse accettino stringhe differenti come lo stesso DAT.
Emissione
- Selezionare un certificato attualmente utilizzabile per l’emissione.
- Sommare il TTL del certificato all’ora corrente per ottenere
expire. - Codificare
plainin Base64Url. - Cifrare
securecon l’algoritmo crittografico del certificato. - Firmare i byte ASCII ottenuti collegando con punti i campi precedenti.
L’emissione è consentita solo nell’intervallo inclusivo start <= now <= start + duration del certificato.
Verifica
- Analizzare il DAT secondo le regole canoniche.
- Verificare che
expire > now. Seexpire == now, il DAT è scaduto. - Trovare il certificato associato a
cide verificare che sia ancora valido per la verifica. - Verificare la firma sui byte originali
expire.cid.plain.secure. - Autenticare e decifrare
secure, quindi restituirlo insieme aplain.
Le API di analisi che non verificano la firma servono solo per osservazione o diagnostica. I loro risultati non devono essere usati per autenticare o autorizzare.
Responsabilità esterne alla specifica
DAT non definisce l’archivio utenti, il metodo di accesso, il modello di autorizzazione, l’header di trasporto del token né una lista di revoca. È l’applicazione a decidere per quali richieste accettare un payload verificato.