Come verificare DNSKEY utilizzando il DS corrispondente

3

Un DNSKEY su un server dei nomi può essere verificato usando DS memorizzato sul suo server dei nomi dei genitori. In base a RFC4034: il record DS fa riferimento a un DNSKEY RR includendo un digest di tale DNSKEY RR.

Il digest viene calcolato concatenando la forma canonica del nome del proprietario completo di DNSKEY RR con DNSDEY RDATA e quindi applicando l'algoritmo digest.

 digest = digest_algorithm( DNSKEY owner name | DNSKEY RDATA);

  "|" denotes concatenation

 DNSKEY RDATA = Flags | Protocol | Algorithm | Public Key.

Il seguente esempio mostra un DNSKEY RR e il suo corrispondente DS RR.

   dskey.example.com. 86400 IN DNSKEY 256 3 5 ( AQOeiiR0GOMYkDshWoSKz9Xz
                                         fwJr1AYtsmx3TGkJaNXVbfi/
                                         2pHm822aJ5iI9BMzNXxeYCmZ
                                         DRD99WYwYqUSdjMmmAphXdvx
                                         egXd/M5+X7OrzKBaMbCVdFLU
                                         Uh6DhweJBjEVv5f2wwjM9Xzc
                                         nOf+EPbtG9DMBmADjFDc2w/r
                                         ljwvFw==
                                         ) ;  key id = 60485
   dskey.example.com. 86400 IN DS 60485 5 1 ( 2BB183AF5F22588179A53B0A
                                          98631FAD1A292118 )

Qualcuno può spiegarmi come dovrebbe generare DS basato su DNSKEY? La mia domanda specifica è come dovrei concatenare e generare "DNSKEY RDATA"? Grazie in anticipo.

    
posta Rad 20.02.2013 - 03:20
fonte

1 risposta

2

In base alle informazioni contenute in questa pagina :

Effectively, the digest is calculated over the following fields, concatenated:

DNSKEY owner name: se. (0x 02736500) Flags: 257 (0x0101) Protocol: 3 (0x03) Algorithm: 5 (0x05) Public Key: Aw……

The first four fields, in hex are as follows: 02736500 0101 03 05,

La mia domanda era come si può calcolare il valore per DNSKEY Domain Name (in questo caso se.). Il concetto che non conoscevo era il "wire format". Fortunatamente Roy Arends di Nominet, Regno Unito, mi ha spiegato chiaramente di cosa si tratta:

A domain name, in "wireformat" is a set of labels, where each label is preceded by a length value and ends with the empty label (value 0x00)

For "se." the wire format is: 02 (length of "se") then 73 65 (hexadecimal representation of the ascii values for "s" and "e", followed by the empty label (value 00): 0x 02 73 65 00

For root (".") the value is just 00 so that would be 0x00

For "dnssec-tools.org": "dnssec-tools" is 12 characters long, so the length value is: 0c then the ascii representation of dnssec-tools in hex: 64 6e 73 73 65 63 2d 74 6f 6f 6c 73 "org" is 3 characters long, so the length value is: 03 then the ascii representation of org in hex: 6f 72 67 followed by the empty label: 00

all in all: "dnssec-tools.org." is 0x0c646e737365632d746f6f6c73036f726700

Grazie, Roy.

    
risposta data 21.03.2013 - 14:43
fonte

Leggi altre domande sui tag