Mit NSEC Resource Records werden bei DNSSEC signierten Zonen alle Labels (Namen) in alphabetischer (kanonischer) Reihenfolge verkettet. Der Typ NSEC löste 2004 den nahezu identischen Typ NXT ab.
Hintergrund
Mit dem Signieren von DNS-Einträgen kann verifiziert werden, dass diese Einträge nicht verfälscht wurden und von den korrekten autoritativen Zonen stammen. Was nicht möglich ist, ist das Nicht-Vorhandensein von DNS-Einträgen zu beweisen. Fragt etwa ein Client den Namen test.example.com an, so kann ein Angreifer die entsprechenden Daten aus dem Antwortpakets des Servers entfernen, ohne dass das dem Client ersichtlich wird.
Um derartige Denial of Service Attacken zu verhindern, werden alle Namen einer Zone über NSEC Records alphabetisch geordnet ringförmig verkettet, wobei der letzte Eintrag auf den ersten zeigt. Beispiel:
name1 NSEC name2 name2 NSEC name5 name5 NSEC name1
Jeder NSEC Record wird per RRSIG Resource Record unterschrieben, so dass er nicht verfälscht werden kann. In seinen Antwortpaketen liefert ein DNS-Server jeweils den zugehörigen NSEC-Eintrag mit. Bei einer Anfrage zum nicht existierenden Namen name3 wird „name2 NSEC name5“ mitgeliefert. Der Client kann damit sicher sein, dass der name3 tatsächlich nicht existiert und nicht etwa auf dem Transportweg entfernt wurde.
Der NSEC-Record besitzt noch eine zweite Funktion: Er listet alle Typen gleichen Namens auf (siehe Beispiel).
Aufbau
Ein NSEC-RR besteht aus den folgenden Feldern:
- Label
- Name des Besitzers des Schlüssels
- Typ
- NSEC (47)
- Next Domain Name
- der alphabetisch folgende Name
- Liste der Typen
Beispiel
name2 NSEC ; Typ name5 ; alphabetischer Nachfolger NS DS RRSIG NSEC ; Liste der Typen des Labels name2
Sicherheit des Verfahrens
Ein wichtiger Nachteil dieses Verfahrens ist, dass ein Angreifer die NSEC-Kette sukzessive durchlaufen und so alle Einträge einer Zone ermitteln kann. Dieser Vorgang wird als Zone Walking (auch DNSSEC Walking) bezeichnet. Ein vergleichbares Lesen einer kompletten Zone ist bei herkömmlichen DNS und abgesicherten Zonentransfer nicht möglich.
Maßnahmen zur Verhinderung des Zone Walkings wurden diskutiert (z. B. RFC 4470). Gelöst wurde das Problem durch einen neuen Resource Record NSEC3, bei dem die beteiligten Namen nicht mehr in Klartext, sondern als Hash dargestellt werden (RFC 5155).