Punycode

Punycode

Punycode ist eine standardisierte Codierungsmethode , mit der Sie Unicode-Zeichen mithilfe des begrenzten Satzes von ASCII-Zeichen reproduzieren können, der aus den folgenden Elementen besteht:

  • Kleinbuchstaben: von? Bis? a? z?
  • Ziffern: 0 bis 9
  • Sonderzeichen: Bindestrich (-)

Die aufgelisteten Elemente gelten als Grundzeichen.

Die Methode wird hauptsächlich zur Verarbeitung von internationalisierten Domainnamen (IDN) mit Sonderzeichen verwendet, die nicht in ASCII enthalten sind.

Index
  1. Entwicklung von Codierungsmethoden
  2. Wie funktioniert die Punycode-Codierung?
  3. Kostenlose Punycode-Konverter
  4. Punycode in Domains mit Emojis
  5. Ist Punycode ein Sicherheitsrisiko?

Entwicklung von Codierungsmethoden

Im Jahr 2003 standardisierte die Internet Engineering Task Force (IETF) Punycode als Syntax für die Codierung internationalisierter Domänennamen in Anwendungen (IDNA) .

Die IETF definiert IDN als solche Domainnamen, die Sonderzeichen (wie den Umlaut, die Cedilla oder die Tilde) oder nicht originale Buchstaben des lateinischen Alphabets enthalten (ein klares Beispiel ist der Fall von ñ). Diese Nicht-ASCII-Zeichen verhindern, dass grundlegende Protokolle wie das Domain Name System (DNS) sie verarbeiten.

So wird beispielsweise seit Einführung der IDNs der Azulejos-Coruña- Domänenname in der .es -Domäne der obersten Ebene unterstützt . Innerhalb des Namensauflösungsrahmens konnte es jedoch nur verarbeitet werden, wenn die nicht grundlegende Zeichenkodierung durchgeführt wurde (im dargestellten Beispiel das? Ñ?). Viele Protokolle verwenden die in Englisch geschriebene Sprache und unterstützen daher nur den begrenzten Satz von ASCII-Zeichen.

Um die Kompatibilität von IDNs mit den älteren Internetstandards sicherzustellen, hat die IETF eine Codierung für internationalisierte Domainnamen mit den zuvor zulässigen Zeichen vorgeschrieben und gleichzeitig das entsprechende Verfahren mit Punycode standardisiert .

Hinweis

Für E-Mail-Adressen wird Punycode nur mit internationalisierten E-Mail-Domains verwendet. Adressen, die im lokalen Teil Nicht-ASCII-Zeichen enthalten, dh Zeichen vor @, werden mit UTF8 codiert.

Wie funktioniert die Punycode-Codierung?

Die IETF gibt im RFC 3492-Standard an, dass Punycode eine der möglichen Anwendungen eines allgemeinen Codierungsalgorithmus ist, der als Bootstring bekannt ist. Mit dem Bootstring-Algorithmus können Sie Zeichenfolgen mit einer begrenzten Auswahl an Elementen darstellen. Die Entwicklung des Kodierungsverfahrens basiert auf sechs Prinzipien:

  • Integrität : Mit Bootstring kann jede Ausgabezeichenfolge durch eine vereinfachte Zeichenfolge dargestellt werden.
  • Eindeutigkeit : Die Klassifizierung der Ausgabezeichenfolge und ihrer Bootstring-Codierung ist eindeutig. Jedem Punycode kann genau ein ASCII-Äquivalent zugewiesen werden und umgekehrt.
  • Reversibilität – Die Bootstring-Codierung kann rückgängig gemacht werden, ohne dass Informationen verloren gehen.
  • Effizienz : Die codierte Zeichenfolge überschreitet die Ausgabezeichenfolge nur minimal (manchmal nicht einmal).
  • Einfachheit : Bootstring verwendet einfache Codierungs- und Decodierungsalgorithmen.
  • Lesbarkeit : Es werden nur die Zeichen codiert, die nicht im Zielzeichenkörper dargestellt werden können. Der Rest der Charaktere bleibt gleich.

Bootstring spezifiziert Punycode gemäß den Anforderungen internationalisierter Domainnamen. Dies sollte das Rendern von Unicode-Zeichen mit den bisher zulässigen Grundzeichen ermöglichen.

Als nächstes zeigen wir diese Syntax anhand des folgenden Beispiels:

IDN : Fliesen-Coruña

Die Azulejos-coruña- IDN enthält den Buchstaben „Ñ“, der nicht in den zuvor für Domainnamen zulässigen Zeichen enthalten ist und daher zur Gewährleistung der Kompatibilität mit Punycode codiert werden muss.

Im ersten Schritt sieht der Codierungsprozess eine Normalisierung der Ausgabezeichenfolge vor (daher werden alle Großbuchstaben durch Kleinbuchstaben ersetzt).

Im zweiten Schritt werden alle Nicht-ASCII-Zeichen entfernt, indem sie in der Domäne durch ihre codierte Form ersetzt und durch einen Bindestrich getrennt werden.

Bei der Codierung von Internetadressen mit Punycode wird jeder resultierenden Zeichenfolge das Präfix ACE (kurz für ASCII Compatible Encoding) beigefügt :

ACE-Präfix : xn--

Das ACE-Präfix stellt sicher, dass Domain-Namen, die Bindestriche enthalten, nicht als internationale Domain-Namen falsch interpretiert werden.

Als Ergebnis für Azulejos-Coruña erhalten wir schließlich:

ACE : xn – Azulejos-Corua-2nb

Ansicht der Abschnitte, aus denen die ACE-Kette besteht
Die ACE-Zeichenfolge besteht aus dem ACE-Präfix und einer Punycode-Zeichenfolge.

Abweichungen von diesem Schema treten auf, wenn der Domänenname nur Nicht-ASCII-Zeichen enthält oder keine: Ein Domänenname, der nur Nicht-Basiszeichen enthält, zeigt nach dem Codierungsprozess das ACE-Präfix zusammen mit einer vollständig codierten Zeichenfolge an.

Also zum Beispiel zu einem Domainnamen wie ?????????? (im griechischen Beispiel) entspricht die folgende Kodierung:

IDN : ??????????

ACE : xn – hxajbheg2az3al

Wenn andererseits ein Domänenname nur aus ASCII-Zeichen besteht, wird er zusammen mit dem ACE-Präfix und einem Bindestrich am Ende angezeigt. In diesem Fall ist es nicht erforderlich, mit Punycode zu codieren.

Wenn der vollständig qualifizierte Domänenname oder der vollqualifizierte Domänenname ( FQDN ) berücksichtigt wird , wird jede seiner Kategorien (Domäne der obersten Ebene, Domäne der zweiten Ebene, Domäne der dritten Ebene usw.) separat codiert.

Eine Domain wie ??????. ?? (Bulgarisch zum Beispiel.bg ) könnte wie folgt codiert werden:

IDN: ??????. ??

ACE : xn – e1afmkfd.xn – 90ae

Die folgende Tabelle zeigt eine Übersicht über die verschiedenen Varianten der Punycode-Prozedur.

  IDN Punycode AS
ASCII- und Nicht-ASCII-Zeichen Fliesen-coruña.es Fliesen-corua-2nb.es xn--azulejos-corua-2nb.es
Nur Nicht-ASCII-Zeichen ??????????. GR hxajbheg2az3al.gr xn--hxajbheg2az3al.gr
Nur ASCII-Zeichen example.org example.org- Gilt nicht

Es ist wichtig zu beachten, dass der der Punycode-Methode zugrunde liegende Algorithmus garantiert, dass trotz der Konvertierung keine der Domänenkategorien 63 Zeichen überschreitet .

Beachten Sie beim Codieren, dass Unicode-Zeichen nicht einzeln in ASCII-Zeichen übersetzt werden. Stattdessen ermittelt der Algorithmus eine Zeichenfolge, die sich aus dem Abstand zwischen den entfernten Zeichen und ihrer entsprechenden Position in der Ausgabezeichenfolge ergibt .

Wenn wir zu unserem Beispiel zurückkehren, zeigt die Zeichenfolge 2nb an, dass corua durch das Unicode-Zeichen? Ñ? auf dem fünften Platz.

Hinweis

Der Algorithmus hinter Punycode ist in RFC 3492 ausführlich beschrieben. Das Dokument enthält auch eine Implementierung des Codierungsverfahrens in der Programmiersprache C.

Für die Codierung internationalisierter Domain-Namen verwenden Benutzer häufig kostenlose Punycode-Konverter.

Kostenlose Punycode-Konverter

Mehrere Websites bieten kostenlose Punycode-Konverter für die Übertragung von IDNs in ASCII-kompatible Darstellungen an.

Für Namespace mit Top-Level-Domain .es oder. mx kann beispielsweise als Domain Converter des Web Cyberneticos bezeichnet werden. Dieses Tool legt besonderen Wert auf die Fähigkeit, Nicht-ASCII-Zeichen zu codieren, die für die spanische Sprache charakteristisch sind, wie? Ñ?, Umlaute oder Akzente, aber auch ungewöhnliche Zeichen aus anderen Sprachen.

Screenshot des Cyberneticos Domain Converter
Neben einigen einfachen Anweisungen bietet die Cyberneticos-Website einen Punycode-Konverter, der die ACE-Codierung ermöglicht.

Ein weiterer bemerkenswerter Konverter ist der Punycode-Konverter von Mathias Bynens, der auf punycode.js basiert. Wie das oben erläuterte Tool kann dieser Konverter für die IDN-Codierung in Spanisch, aber auch in anderen Sprachen angewendet werden.

Punycode Konverter von Mathias Bynens basierend auf punycode.js
Mathias Bynens bietet mit Punycode Domain Name Converter ein Open Source Tool zur Konvertierung internationalisierter Domain Namen.

Punycode in Domains mit Emojis

Mit Punycode können nicht nur internationalisierte Domainnamen, sondern auch Domains mit Emojis codiert werden. Voraussetzung ist, dass die Domäne der obersten Ebene ihre Verwendung zulässt und dass das zu verwendende Emoticon im Unicode-Standard registriert ist.

Rat

Ab heute sind es die unten aufgeführten TLDs, die die Domainregistrierung mit Emojis ermöglichen : .ws, .tk, .to, .ml, .ga, .cf, .gq und .fm.

Aus technischer Sicht werden Emoji- Domänen als Punycode gerendert, obwohl sie dem Benutzer theoretisch als Kombination aus Text und Emoticons präsentiert werden.

Domain mit Emoji: i? .Ws /

ACE: xn--i-7iq.ws/

Heutzutage implementiert praktisch kein Standardbrowser dieses Domänenmodell. Wenn Sie eine Domain mit Emoji in Firefox, Chrome, Safari, Edge oder Opera eingeben , wird in der Adressleiste nur die ACE-Zeichenfolge angezeigt.

Ist Punycode ein Sicherheitsrisiko?

Punycode stellt ein Sicherheitsrisiko dar, wenn es um homografische Angriffe geht , eine Art von Phishing, bei dem Kriminelle das Auftreten verschiedener Charaktere nachahmen, um ahnungslose Benutzer zu gefälschten Websites zu locken.

Damit Benutzer diese Art von Phishing-Angriffen verstehen können, zeigt Blogger Xudong Zheng auf seiner Seite ein Beispiel mit der folgenden Punycode-Domain:

www.xn--80ak6aa92e.com

Dadurch werden Benutzer zu einer Seite mit der folgenden IDN weitergeleitet:

www.?????.com

Diese URL entspricht jedoch nicht der offiziellen Website des kalifornischen Technologieunternehmens Apple Inc., sondern einer Phishing-Website, die nur als Beispiel erstellt wurde.

Anstelle des ASCII-Zeichens? A? Bei Unicode U + 0061 wird das kyrillische Zeichen? a? (U + 0430). Obwohl es auf den ersten Blick sehr schwierig ist, diese beiden Zeichen zu unterscheiden, interpretieren Browser sie als unterschiedliche Zeichen.

Auch die Tatsache, dass nicht einmal Zertifikate Sicherheit bieten können, wird für Benutzer zu einem großen Nachteil. Für moderne Phishing-Kampagnen registrieren Kriminelle gültige SSL-Zertifikate, die dem erstellten Web ein Erscheinungsbild von Sicherheit und Professionalität verleihen.

Um solche Angriffe zu verhindern, wird in aktuellen Versionen von Chrome und Opera die ACE-Zeichenfolge anstelle der internationalisierten Domäne angezeigt. Internet-Explorer und Microsoft Edge verhindern den Zugriff auf diese Arten von Domänen vollständig. Firefox ist der einzige Browser, der keinen Schutz gegen Punycode-Phishing bietet.

Beispiel eines homografischen Angriffs
Beispiel für eine homografische Domain: Die URL entspricht optisch der offiziellen Apple-Website. Es wurde jedoch das Unicode-Zeichen U + 0430 verwendet, das einem kyrillischen Buchstaben entspricht, der dem ASCII-Zeichen „A“ auffallend ähnlich ist.

Wenn Sie ein Firefox-Benutzer sind, können Sie das Risiko von Phishing-Angriffen verringern, indem Sie die Übersetzung von Punycode in IDN generell verhindern. Für diese temporäre Lösung sind nur zwei Schritte zu befolgen:

  • Zugriff auf Editoreinstellungen : Geben Sie about: config in die Adressleiste des Webbrowsers ein, um den Firefox-Konfigurationseditor zu öffnen.
  • Punycode erzwingen Suchen Sie die Einstellung network.IDN_show_punycode und ändern Sie den Wert von false in true .

Nach der Konfiguration zeigt Firefox die internationalisierten Domänen in der Adressleiste als ACE-Zeichenfolgen an.

administrator

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.