Zusammenfassung

  • RFC 3722 schreibt Unicode-Mappings, NFKC-Normalisierung und Prüfungen auf verbotene Zeichen vor, damit iSCSI-Implementierungen vorbereitete UTF-8-Bytes vergleichen können.
  • Das löst einen Zielkonflikt zwischen menschlicher Übertragung und einfacher Geräteimplementierung, nicht aber visuelle Täuschung: ähnlich aussehende Zeichen bleiben verschieden, und das Profil basiert auf Unicode 3.2.

In einer Speicherverwaltung können zwei Namen austauschbar aussehen und für das Ziel dennoch unterschiedliche Zeichenfolgen sein. Das wird relevant, wenn eine Administratorin einen Namen von einem Etikett oder aus einer Betriebsanweisung übernimmt und ein kompakter Initiator entscheiden muss, ob die empfangenen Bytes zum konfigurierten Ziel passen. RFC 3722 erschien im April 2004 und behandelt genau diese Grenze bei Namen des Internet Small Computer Systems Interface (iSCSI).

Zwei Bedürfnisse standen einander gegenüber. Menschen, die internationale Namen übertragen, profitieren von einer berechenbaren Behandlung von Großschreibung und Zeichenvarianten. Ein einfaches oder eingebettetes Gerät kann dagegen eine präzise Regel umsetzen: Zeichenfolge vorbereiten, in UTF-8 kodieren, Oktette vergleichen. Darf jede Implementierung selbst festlegen, was als gleich gilt, können scheinbar gleiche Eingaben verschiedene Protokollwerte ergeben. Eine weiche, sprachabhängige Suche würde das Protokoll wiederum schwieriger und weniger vorhersehbar machen.

RFC 3722 entschied sich für ein begrenztes Profil statt einer freien Textbereinigung. Es fixiert das Unicode-3.2-Repertoire, nutzt die Stringprep-Mappings aus den Tabellen B.1 und B.2 und wendet NFKC-Normalisierung an. Anschließend prüft es verbotene Ausgaben anhand von C.1.1 bis C.9 und kontrolliert bidirektionalen Text. Die feste Reihenfolge verhindert, dass eine Implementierung nach Eingang des Namens eigene, zweckmäßige Gleichheitsregeln erfindet.

Einige Unterschiede verschwinden, andere bleiben erhalten. Über eine Benutzeroberfläche eingegebene ASCII-Großbuchstaben MÜSSEN in Kleinbuchstaben umgewandelt werden. Erlaubt sind ASCII-Kleinbuchstaben, Ziffern, Bindestrich, Punkt und Doppelpunkt; Leerraum ist ausgeschlossen. Ein feines Beispiel ist U+3002, der ideografische Punkt: RFC 3722 verbietet ihn, obwohl manche Eingabesysteme für Domainnamen ihn wie den ASCII-Punkt U+002E behandeln. Das iSCSI-Profil übernimmt also nicht automatisch Ersetzungen anderer Anwendungen.

Das heißt nicht, dass damit „Unicode bereinigt“ wäre. Es entsteht eine bestimmte vorbereitete Darstellung gemäß einem ausdrücklich begrenzten Repertoire und Tabellenwerk. UTF-8 ist separat spezifiziert; auch iSCSI-Namensgrammatik und Regeln zur Namensautorität müssen unabhängig geprüft werden. RFC 3721 liefert den größeren Kontext zu Namen und Discovery, während RFC 3722 die Zeichenkettenverarbeitung festlegt. Eine erfolgreiche Vorbereitung belegt weder Zugriffsberechtigung noch aktuelle Kontrolle über den Namen oder die Erreichbarkeit eines Ziels unter einer bestimmten Adresse.

Die leicht übersehene Grenze: RFC 3722 führt visuell ähnliche Zeichen nicht zusammen. Ein lateinischer Buchstabe und sein griechisches oder kyrillisches Pendant werden nicht gleich, nur weil Leser sie verwechseln. Der Sicherheitsteil warnt, dass unterschiedliche Interpretationen dazu führen können, dass ein Initiator ein anderes als das beabsichtigte Ziel erreicht oder das legitime Ziel verfehlt. Das ist eine Analyse eines möglichen Fehlers, kein Beleg für einen tatsächlich beobachteten Angriff.

Das Profil kann definierte Varianten auf eine Darstellung abbilden, verbotene Ausgaben zurückweisen und Bedingungen für bidirektionalen Text durchsetzen. Es entscheidet aber nicht, wer eine Namensautorität kontrolliert, ob eine angezeigte Bezeichnung vertrauenswürdig ist oder ob ein täuschend ähnlicher String einen Menschen überzeugen darf. Dafür braucht es Kontrollen außerhalb der Zeichenkettenaufbereitung.

Nameprep aus RFC 3491 ist verwandt, weil es ebenfalls ein Stringprep-Profil ist, aber für internationalisierte Domainnamen. Es ist nicht das iSCSI-Profil. RFC 3454 liefert den Rahmen; RFC 3722 wählt Regeln für seinen eigenen Zweck. Die spätere Zusammenführung von iSCSI-Material in RFC 7143 macht die Unicode-3.2-Basis nicht zu einer aktuellen Empfehlung für alle neuen Identifikatorsysteme.

Historisch wurde Reproduzierbarkeit gegenüber Interpretationsfreiheit bevorzugt. Implementierende erhielten ein genaues Rezept, Betreiber konnten erklären, warum zwei Eingaben übereinstimmen oder eine verworfen wird. Doch ein reproduzierbarer Vergleich gilt nur für die tatsächlich eingegangene Zeichenfolge und verhindert keine visuelle Täuschung. Die Lehre lautet nicht, Unicode habe Speichernamen sicher gemacht. Ein Protokoll muss offenlegen, welche Unterschiede es beseitigt, welche es verbietet und welche es Menschen und den umgebenden Kontrollen überlässt.

Quellen