NSEC Resource Record
# NSEC Resource Record

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:

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

## 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).

