Cómo verificar DNSKEY usando su DS correspondiente

3

Un DNSKEY en un servidor de nombres se puede verificar al usar DS almacenado en su servidor de nombres parental. Según RFC4034: el registro DS se refiere a un RR DNSKEY al incluir un resumen de ese RR DNSKEY.

El resumen se calcula concatenando la forma canónica del nombre de propietario completo del DNSKEY RR con el DNSKEY RDATA, y luego aplicando el algoritmo de resumen.

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

  "|" denotes concatenation

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

El siguiente ejemplo muestra un DNSKEY RR y su correspondiente 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 )

¿Puede alguien explicarme cómo debería generar DS basado en DNSKEY? ¿Mi pregunta específica es cómo debo concatenar y generar "DNSKEY RDATA"? Gracias de antemano.

    
pregunta Rad 20.02.2013 - 03:20
fuente

1 respuesta

2

De acuerdo con la información en esta página :

  

Efectivamente, el resumen se calcula sobre los siguientes campos,   concatenado:

     

Nombre del propietario de DNSKEY: se. (0x 02736500)   Banderas: 257 (0x0101)   Protocolo: 3   (0x03) Algoritmo: 5 (0x05) Clave pública: Aw ……

     

Los primeros cuatro campos, en hexadecimal, son los siguientes: 02736500 0101 03 05,

Mi pregunta era cómo se puede calcular el valor del Nombre de dominio DNSKEY (en este caso, sí). El concepto que no conocía era "formato de cable". Afortunadamente, Roy Arends de Nominet, Reino Unido, me explicó claramente qué es:

  

Un nombre de dominio, en "wireformat" es un conjunto de etiquetas, donde cada etiqueta está precedida por un valor de longitud y termina con la etiqueta vacía (valor 0x00)

     

Para "se". el formato del cable es: 02 (longitud de "se"), luego 73 65 (representación hexadecimal de los valores de ascii para "s" y "e", seguido de la etiqueta vacía (valor 00): 0x 02 73 65 00

     

Para la raíz (".") el valor es solo 00, por lo que sería 0x00

     

Para "dnssec-tools.org": "dnssec-tools" tiene una longitud de 12 caracteres, por lo que el valor de longitud es: 0c, entonces la representación ascii de dnssec-tools en hexadecimal: 64 6e 73 73 65 63 2d 74 6f 6f 6c 73 "org" tiene una longitud de 3 caracteres, por lo que el valor de longitud es: 03 y luego la representación ascii de org en hexadecimal: 6f 72 67 seguido de la etiqueta vacía: 00

     

todo en todos: "dnssec-tools.org". es   0x0c646e737365632d746f6f6c73036f726700

Gracias, Roy Roy.

    
respondido por el Rad 21.03.2013 - 14:43
fuente

Lea otras preguntas en las etiquetas