DS Resource Record
DS-RR (Delegation Signer Resource Record) dienen der Verkettung von DNSSEC-signierten Zonen. Dadurch können mehrere DNS-Zonen zu einer Chain of Trust zusammengefasst und über einen einzigen Öffentlichen Schlüssel validiert werden.
Hintergrund
Public-Key-Systeme gelten heute als leistungsfähige und vielfältig einsetzbare Verschlüsselungsverfahren. Der Besitzer eines Schlüssels unterzeichnet beispielsweise eine Nachricht mit dem nur ihm selbst bekannten Privaten Schlüssel. Ein Empfänger kann diese Unterschrift unter Zuhilfenahme des korrespondierenden Öffentlichen Schlüssel verifizieren und damit sicherstellen, dass die Nachricht tatsächlich vom Absender stammt und dass sie unverfälscht ist.
Ein Grundproblem von Public-Key-Systemen ist die Verteilung der Öffentlichen Schlüssel: Wie macht ein User seinen Public Key der Welt bekannt? Das eigentliche Problem beim Einsatz von DNSSEC besteht darin, dass die Anzahl der Zonen (und damit die Anzahl der Schlüssel) beliebig groß werden kann. Außerdem müssen derartige Schlüssel regelmäßig erneuert werden.
Die Grundidee ist, alle beteiligten Zonen zu verketten und nur noch die oberste als Secure Entry Point zu verwenden. Nur für diese eine Zone ist die Propagierung des öffentlichen Keys erforderlich.
Aufbau
Ein DS-Record tritt immer gemeinsam mit einem NS Resource Record auf. Beide verweisen auf eine Subzone. Im DS-Record liegt der Hash des Secure Entry Points der Subzone. Jeder DS-Eintrag wird mit dem Zonenschlüssel der Zone, in der er sich befindet, digital unterschrieben. Damit kann der Öffentliche Schlüssel dieser Subzone validiert werden. Eine Subzone kann ihrerseits DS-Records enthalten, die auf weitere Subzonen verweisen. Dadurch entsteht ausgehend von der obersten Zone eine Kette, die sogenannte Chain of Trust.
Ein DS-RR besteht aus den folgenden Feldern:
- Label
- Name der zu verkettenden Subzone
- Typ
- DS (Typcode 43)
- ID
- Identifikationsnummer (key tag)
- Verschlüsselungsverfahren
- 3=DSA/SHA1, 5=RSA/SHA1, 6=DSA-NSEC3-SHA1, 7=RSASHA1-NSEC3-SHA1, 8=RSA/SHA-256, 10=RSA/SHA-512, 12=GOST R 35.10-2001, 13=ECDSA-P256/SHA256, 14=ECDSA-P384/SHA384, 15=ED25519, 16=ED448[1]
- Das genannte Verfahren wird nicht verwendet, um den Hash kryptographisch abzusichern, sondern nennt das verwendete Signierverfahren des referenzierten Schlüssels.
- Die Verfahren 1, 2 und 4 sind nicht für Zonensignaturen freigegeben. Alle weiteren Verfahren sind entweder nicht definiert oder nicht freigegeben.
- Hash-Typ
- 1=SHA-1, 2=SHA-256, 3=GOST R 34.11-94, 4=SHA-384
- Hash
Der Hash-Typ 1 (SHA-1) ist aus Rückwärtskompatibilitätsgründen noch erlaubt, wird aber nicht empfohlen.
Berechnung des DS
Der DS-Record kann aus dem DNSKEY berechnet werden, aber nicht umgekehrt. Hierfür wird mit der Hash über die folgenden Werte des DNSKEYs berechnet.
Beispiel:
SHA_256(DNSKEY owner name | Flags | Protocol | Algorithm | Public Key)
Das Zeichen | steht für die Aneinanderreihung der Werte. Der öffentliche Schlüssel darf keine Leerzeichen enthalten und muss aus dem Base64 Format dekodiert werden.
Beispiel
In diesem Beispiel wird aus der Zone example.org heraus per Delegation auf die Subzone filiale1.example.org verwiesen. Der im DS-record aufgeführte Hash-Wert entspricht dem Schlüsselunterzeichnungs-Schlüssel der Subzone filiale1.example.org.
filiale1.example.org. NS nsf filiale1.example.org. DS ; Typ 52037 ; Identifikationsnummer 1 ; Verschlüsselungsverfahren 1 ; Hash-Typ 378929E92D7DA04267EE87E802D75C5CA1B5D280
Schwachstelle
Um in eine Chain of Trust aufgenommen zu werden, muss der öffentliche Schlüssel einer Zone der übergeordneten Zone übermittelt werden. Das kann schwierig sein, wenn diese von einer Instanz außerhalb des eigenen Einflussbereichs verwaltet wird und bietet daher Angriffspunkte.