3. The NSEC3 Resource Record (Il resource record NSEC3)
3. The NSEC3 Resource Record (Il resource record NSEC3)
Il Resource Record (RR) NSEC3 fornisce la negazione dell'esistenza autenticata per i Resource Record Sets DNS.
L'RR NSEC3 elenca i tipi di RR presenti al nome del titolare originale dell'RR NSEC3. Include il nome del titolare sottoposto a hash successivo nell'ordine di hash della zona. L'insieme completo di RR NSEC3 in una zona indica quali RRSet esistono per il nome del titolare originale dell'RR e forma una catena di nomi del titolare sottoposti a hash nella zona. Queste informazioni servono a fornire la negazione dell'esistenza autenticata per i dati DNS. Per proteggere dall'enumerazione della zona, i nomi del titolare usati nell'RR NSEC3 sono hash crittografici del nome del titolare originale, prefissati come singola etichetta al nome della zona. L'RR NSEC3 indica quale funzione di hash è usata per costruire l'hash, quale salt è usato e quante iterazioni della funzione di hash sono eseguite sul nome del titolare originale. La tecnica di hashing è descritta per intero nella sezione 5.
I nomi del titolare sottoposti a hash delle deleghe non firmate possono essere esclusi dalla catena. Un RR NSEC3 la cui estensione copre l'hash del nome del titolare o del nome "next closer" di una delega non firmata è detto RR NSEC3 Opt-Out ed è indicato dalla presenza di un flag.
Il nome del titolare per l'RR NSEC3 è la codifica base32 del nome del titolare sottoposto a hash, prefissato come singola etichetta al nome della zona.
Il valore di tipo per l'RR NSEC3 è 50.
Il formato RDATA dell'RR NSEC3 è indipendente dalla classe ed è descritto sotto.
La classe DEVE essere la stessa della classe del nome del titolare originale.
L'RR NSEC3 DOVREBBE avere lo stesso valore TTL del campo minimum TTL del SOA. Ciò è nello spirito della cache negativa [RFC2308].
3.1. RDATA Fields (Campi RDATA)
3.1.1. Hash Algorithm (Algoritmo di hash)
Il campo Hash Algorithm identifica l'algoritmo di hash crittografico usato per costruire il valore di hash.
I valori per questo campo sono definiti nel registro degli algoritmi di hash NSEC3 definito nella sezione 11.
3.1.2. Flags (Flag)
Il campo Flags contiene 8 flag di un bit ciascuno che possono indicare elaborazioni diverse. Tutti i flag non definiti DEVONO essere zero. L'unico flag definito dalla presente specifica è il flag Opt-Out.
3.1.2.1. Opt-Out Flag
Se il flag Opt-Out è impostato, il record NSEC3 copre zero o più deleghe non firmate.
Se il flag Opt-Out è azzerato, il record NSEC3 copre zero deleghe non firmate.
Il flag Opt-Out indica se questo RR NSEC3 può coprire deleghe non firmate. È il bit meno significativo nel campo Flags. Si veda la sezione 6 per i dettagli sull'uso di questo flag.
3.1.3. Iterations (Iterazioni)
Il campo Iterations definisce il numero di volte aggiuntive in cui è stata eseguita la funzione di hash. Più iterazioni comportano maggiore resistenza del valore di hash agli attacchi a dizionario, ma a un costo computazionale più elevato sia per il server sia per il resolver. Si veda la sezione 5 per i dettagli sull'uso di questo campo e la sezione 10.3 per i limiti sul valore.
3.1.4. Salt Length (Lunghezza del salt)
Il campo Salt Length definisce la lunghezza del campo Salt in ottetti, con valori da 0 a 255.
3.1.5. Salt (Salt)
Il campo Salt è accodato al nome del titolare originale prima dell'hash per difendersi dagli attacchi a dizionario precalcolati. Si veda la sezione 5 per i dettagli su come il salt è usato.
3.1.6. Hash Length (Lunghezza dell'hash)
Il campo Hash Length definisce la lunghezza del campo Next Hashed Owner Name, con valori da 1 a 255 ottetti.
3.1.7. Next Hashed Owner Name (Nome del titolare sottoposto a hash successivo)
Il campo Next Hashed Owner Name contiene il nome del titolare sottoposto a hash successivo nell'ordine di hash. Questo valore è in formato binario. Dato l'insieme ordinato di tutti i nomi del titolare sottoposti a hash, il campo Next Hashed Owner Name contiene l'hash di un nome del titolare che segue immediatamente il nome del titolare dell'RR NSEC3 dato. Il valore del campo Next Hashed Owner Name nell'ultimo RR NSEC3 della zona è uguale al nome del titolare sottoposto a hash del primo RR NSEC3 della zona nell'ordine di hash. Si noti che, a differenza del nome del titolare dell'RR NSEC3, il valore di questo campo non contiene il nome della zona accodato.
3.1.8. Type Bit Maps (Mappe di bit dei tipi)
Il campo Type Bit Maps identifica i tipi di RRSet che esistono al nome del titolare originale dell'RR NSEC3.
3.2. NSEC3 RDATA Wire Format (Formato on-the-wire RDATA NSEC3)
Il RDATA dell'RR NSEC3 è come segue:
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hash Alg. | Flags | Iterations |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Salt Length | Salt /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Hash Length | Next Hashed Owner Name /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Type Bit Maps /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Hash Algorithm è un singolo ottetto.
Il campo Flags è un singolo ottetto; il flag Opt-Out è il bit meno significativo, come segue:
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| |O|
+-+-+-+-+-+-+-+-+
Iterations è rappresentato come intero senza segno a 16 bit, con il bit più significativo per primo.
Salt Length è rappresentato come ottetto senza segno. Salt Length rappresenta la lunghezza del campo Salt in ottetti. Se il valore è zero, il campo Salt successivo è omesso.
Salt, se presente, è codificato come sequenza di ottetti binari. La lunghezza di questo campo è determinata dal campo Salt Length precedente.
Hash Length è rappresentato come ottetto senza segno. Hash Length rappresenta la lunghezza del campo Next Hashed Owner Name in ottetti.
Il nome del titolare sottoposto a hash successivo non è codificato in base32, a differenza del nome del titolare dell'RR NSEC3. È il valore di hash binario non modificato. Non include il nome della zona contenitore. La lunghezza di questo campo è determinata dal campo Hash Length precedente.
3.2.1. Type Bit Maps Encoding (Codifica delle mappe di bit dei tipi)
La codifica del campo Type Bit Maps è la stessa usata dal RR NSEC, descritta in [RFC4034]. Qui è spiegata e chiarita per chiarezza.
Lo spazio dei tipi di RR è suddiviso in 256 blocchi finestra, ciascuno rappresentante gli 8 bit di ordine basso dello spazio dei tipi di RR a 16 bit. Ogni blocco che ha almeno un tipo di RR attivo è codificato usando un numero di finestra di un ottetto (da 0 a 255), una lunghezza di bitmap di un ottetto (da 1 a 32) che indica il numero di ottetti usati per la bitmap del blocco finestra, e fino a 32 ottetti (256 bit) di bitmap.
I blocchi sono presenti nel RDATA dell'RR NSEC3 in ordine numerico crescente.
Type Bit Maps Field = ( Window Block # | Bitmap Length | Bitmap )+
dove "|" indica concatenazione.
Ogni bitmap codifica gli 8 bit di ordine basso dei tipi di RR all'interno del blocco finestra, in ordine di bit di rete. Il primo bit è il bit 0. Per il blocco finestra 0, il bit 1 corrisponde al tipo di RR 1 (A), il bit 2 al tipo di RR 2 (NS), e così via. Per il blocco finestra 1, il bit 1 corrisponde al tipo di RR 257, il bit 2 al tipo di RR 258. Se un bit è impostato a 1, indica che un RRSet di quel tipo è presente per il nome del titolare originale dell'RR NSEC3. Se un bit è impostato a 0, indica che nessun RRSet di quel tipo è presente per il nome del titolare originale dell'RR NSEC3.
Poiché il bit 0 nel blocco finestra 0 si riferisce al tipo di RR 0 inesistente, DEVE essere impostato a 0. Dopo la verifica, il validatore DEVE ignorare il valore del bit 0 nel blocco finestra 0.
I bit che rappresentano Meta-TYPE o QTYPE come specificato nella sezione 3.1 di [RFC2929] o nell'intervallo riservato solo all'assegnazione a QTYPE e Meta-TYPE DEVONO essere impostati a 0, poiché non compaiono nei dati di zona. Se incontrati, DEVONO essere ignorati in lettura.
I blocchi senza tipi presenti NON DEVONO essere inclusi. Gli ottetti zero finali nella bitmap DEVONO essere omessi. La lunghezza della bitmap di ciascun blocco è determinata dal codice di tipo con il valore numerico più grande, all'interno di quel blocco, tra l'insieme di tipi di RR presenti al nome del titolare originale dell'RR NSEC3. Gli ottetti finali non specificati DEVONO essere interpretati come ottetti zero.
3.3. Presentation Format (Formato di presentazione)
Il formato di presentazione della porzione RDATA è il seguente:
-
Il campo Hash Algorithm è rappresentato come intero decimale senza segno. Il valore ha un massimo di 255.
-
Il campo Flags è rappresentato come intero decimale senza segno. Il valore ha un massimo di 255.
-
Il campo Iterations è rappresentato come intero decimale senza segno. Il valore è tra 0 e 65535, inclusi.
-
Il campo Salt Length non è rappresentato.
-
Il campo Salt è rappresentato come sequenza di cifre esadecimali senza distinzione tra maiuscole e minuscole. Non sono ammessi spazi bianchi nella sequenza. Il campo Salt è rappresentato come "-" (senza virgolette) quando il campo Salt Length ha valore 0.
-
Il campo Hash Length non è rappresentato.
-
Il campo Next Hashed Owner Name è rappresentato come sequenza non riempita di cifre base32 senza distinzione tra maiuscole e minuscole, senza spazi bianchi.
-
Il campo Type Bit Maps è rappresentato come sequenza di mnemonici di tipo di RR. Quando il mnemonico non è noto, DEVE essere usata la rappresentazione TYPE descritta nella sezione 5 di [RFC3597].