3. Resource record RRSIG
Il resource record (RR) RRSIG contiene la firma crittografica di un insieme di resource record (RRset). Il RRSIG RR deve essere utilizzato congiuntamente al DNSKEY RR che firma l'RRset. Il RRSIG RR NON DEVE essere concatenato (chain) a un tipo di RR diverso dal tipo di RRset che esso stesso firma.
Il formato del RDATA del resource record RRSIG è il seguente:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type Covered | Algorithm | Labels |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Original TTL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Signature Expiration |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Signature Inception |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key Tag | /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Signer's Name /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
/ Signature /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Il RDATA del resource record RRSIG è rappresentato e codificato nel modo seguente:
- il tipo coperto (TYPE COVERED) è un codice di tipo a 16 bit, disposto in ordine di byte di rete, che identifica il tipo dell'RRset coperto da questa firma;
- l'algoritmo (ALGORITHM) è un intero senza segno a 8 bit che identifica l'algoritmo a chiave pubblica utilizzato per questa firma;
- il numero di label (LABELS) è un intero senza segno a 8 bit pari al numero di label nel nome del proprietario del RRSIG RR, escluso l'eventuale label iniziale * (asterisco) utilizzato per i record wildcard;
- il TTL originale (ORIGINAL TTL) è un intero senza segno a 32 bit, disposto in ordine di byte di rete, che indica il TTL dei record nell'RRset firmato;
- la scadenza della firma (SIGNATURE EXPIRATION) è un intero senza segno a 32 bit, disposto in ordine di byte di rete, che indica la data e l'ora (in secondi dal 1° gennaio 1970 00:00 UTC) a partire dalla quale la firma non è più valida;
- l'inizio della firma (SIGNATURE INCEPTION) è un intero senza segno a 32 bit, disposto in ordine di byte di rete, che indica la data e l'ora (in secondi dal 1° gennaio 1970 00:00 UTC) a partire dalla quale la firma diventa valida;
- il key tag (KEY TAG) è un intero senza segno a 16 bit, disposto in ordine di byte di rete, che identifica il DNSKEY RR utilizzato per verificare questa firma;
- il nome del firmatario (SIGNER'S NAME) è il nome DNS della zona che ha firmato questo RRset, rappresentato come nome di dominio canonico (wire format);
- la firma (SIGNATURE) è una stringa di ottetti di lunghezza variabile contenente la firma crittografica dell'RRset.
3.1. Campo type covered del RDATA RRSIG
Il campo TYPE COVERED identifica il tipo di resource record dell'RRset coperto da questo RRSIG. Questo campo NON DEVE essere 0 (tale valore è riservato e non identifica alcun tipo di RR esistente).
3.2. Campo algorithm del RDATA RRSIG
Il campo ALGORITHM identifica l'algoritmo a chiave pubblica utilizzato per questa firma. Il valore di questo campo DEVE essere identico al campo ALGORITHM del DNSKEY RR utilizzato per verificare questa firma.
3.3. Campo labels del RDATA RRSIG
Il campo LABELS è un intero senza segno a 8 bit pari al numero di label nel nome del proprietario del RRSIG, escluso l'eventuale label iniziale * (asterisco) utilizzato per i record wildcard. Il campo LABELS DEVE essere impostato, per un nome non wildcard, sul numero di label del nome del proprietario, o su tale numero meno uno per un nome wildcard. Il campo LABELS NON DEVE essere 0.
Il validatore DEVE verificare che il campo LABELS sia coerente con il numero di label del nome del proprietario del RRSIG (tenendo conto del caso wildcard), altrimenti DEVE rifiutare la firma.
3.4. Campo original TTL del RDATA RRSIG
Il campo ORIGINAL TTL è il TTL dei RR nell'RRset firmato al momento della creazione della firma. Il validatore DEVE verificare, prima della verifica, che il TTL di ciascun record di questo RRset corrisponda a tale valore (può gestirlo come descritto in [RFC4035]); in caso contrario la verifica della firma DEVE fallire.
3.5. Campi signature expiration e signature inception del RDATA RRSIG
I campi SIGNATURE EXPIRATION e SIGNATURE INCEPTION sono espressi in secondi dal 1° gennaio 1970 00:00 UTC. Il validatore DEVE accettare la firma solo se l'ora corrente ricade nell'intervallo [SIGNATURE INCEPTION, SIGNATURE EXPIRATION].
Se SIGNATURE INCEPTION è maggiore di SIGNATURE EXPIRATION, la firma NON DEVE essere accettata.
3.6. Campo key tag del RDATA RRSIG
Il campo KEY TAG contiene il key tag del resource record DNSKEY utilizzato per verificare questa firma. Esso è utilizzato per selezionare in modo efficiente il DNSKEY RR corretto nel DNSKEY RRset.
3.7. Campo signer's name del RDATA RRSIG
Il campo SIGNER'S NAME contiene il nome della zona che ha firmato questo RRset. DEVE essere il nome della zona che contiene il DNSKEY utilizzato per la verifica (o un suo antenato, secondo le regole della catena di fiducia di [RFC4035]).
3.8. Campo signature del RDATA RRSIG
Il campo SIGNATURE contiene la firma in forma binaria, calcolata sulla forma canonica dell'RRset utilizzando la chiave privata associata al DNSKEY RR, secondo la procedura di calcolo della firma prescritta in [RFC4035].
3.9. Formato di presentazione RRSIG
Il formato di presentazione (presentation format) del RRSIG RR è il seguente:
- il tipo coperto è rappresentato in forma testuale (ad esempio A, NS, SOA) oppure, per i tipi sconosciuti, nella notazione RFC 3597;
- l'algoritmo è rappresentato da un intero senza segno in decimale;
- il numero di label è rappresentato da un intero senza segno in decimale;
- il TTL originale è rappresentato da un intero senza segno in decimale;
- la scadenza e l'inizio della firma sono rappresentati nel formato AAAAMMGGHHMMSS (UTC);
- il key tag è rappresentato da un intero senza segno in decimale;
- il nome del firmatario è rappresentato in forma testuale di nome di dominio canonico;
- la firma è rappresentata da una stringa di ottetti codificata in Base64 [RFC3548], senza spazi.
3.10. Considerazioni particolari per il RRSIG RR
Un record RRSIG firma un solo RRset; per ciascun RRset e ciascun algoritmo DOVREBBE esistere un record RRSIG corrispondente. Il record RRSIG NON DEVE essere incluso nell'RRset che firma. Il validatore DEVE verificare il RRSIG utilizzando la chiave il cui bit ZONE è coerente con il DNSKEY firmatario.
Navigazione tra sezioni:
- Precedente: 2. Resource record DNSKEY
- Successivo: 4. Resource record DS