Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!
Taki znaczek: link do str. zewnętrznej oznacza, że link prowadzi do strony zewnętrznej.
A taki: link prowadzi do podstrony oznacza, że link prowadzi do podstrony w tym serwisie.

Ogonki i inne znaki narodowe w domenach – jak działa www.żółw.pl

W internecie każda maszyna ma swój numer IP, podobnie jak każdy posiadacz telefonu ma swój numer. Numer IP ciężko jest jednak zapamiętać. Dawno temu stworzony został mechanizm zwany DNS (Domain Name System), który pozwalał na przypisanie każdemu numerowi IP ciągu alfanumerycznego (składającego się z pewnego podzbioru znaków US-ASCII). Ciągi te to domeny. Do jednego numeru IP może prowadzić dowolna ilość domen, ale jedna domena zawsze wskazuje na dokładnie jeden numer IP (choć istnieją mechanizmy pozwalające na dynamiczną zmianę tego numeru IP w czasie rzeczywistym, zapewniając możliwość użycia farmy serwerów i łączenie się z serwerem najmniej obciążonym w danym momencie, ale to wykracza poza tematykę). Mechanizm ten można porównać do wybierania głosowego w telefonach komórkowych – na przykład telefon słysząc „na ryby” wybierze numer kumpla, z którym chodzimy na wódkę, a słysząc „ropucha” bądź „stara klempa” wybierze numer szefowej lub teściowej (co kto sobie ustawił). Ponieważ mechanizm zamieniania domeny na numer IP został stworzony w Stanach i do tego bardzo dawno temu, jak łatwo się domyślić nie obsługuje żadnych znaków, które nie są używane w amerykańskim angielskim. Aby uniknąć konieczności wymiany infrastruktury leżącej u podstaw internetu i poważnych zakłóceń w działaniu sieci, trzeba było stworzyc mechanizm takiego kodowania znaków narodowych i specjalnych, by dla serwerów wyglądały one tak, jakby składały się tylko z legalnych znaków dopuszczonych dotychczas. Obecnie używany system jest sukcesywnie wprowadzany od 2003, pierwsze alternatywne domeny narodowe używające znaków narodowych (np. .рф, używana równolegle z .ru) zostały wprowadzone w połowie 2010.

Technikalia

Z powodów historycznych domena może zawierać wyłącznie litery łacińskie, cyfry i minus, przy czym musi zaczynać się od litery. Wielkość liter nie gra roli – www.domena.pl, Www.Domena.PL, WWW.DOMENA.PL i WwW.dOmEnA.pL to ta sama domena. Domena nie może przekraczać 36 bajtów. Jak widać nie ma żadnej możliwości użycia znaków narodowych i specjalnych bez ich odpowiedniego zakodowania. Wymienione ograniczenia DNS stawiają algorytmowi kodującemu następujące wymagania:

  1. Kod wynikowy musi być możliwie najkrótszy, by nie ograniczać długości nazw domen zawierajacych znaki narodowe i specjalne,
  2. Kod wynikowy musi używać jedynie 37 dozwolonych znaków,
  3. Algorytm musi gwarantować, że pierwszym znakiem dowolnego kodu będzie litera.

Spełnienie tych wymagań nie było łatwe, o czym świadczy imponująca lista projektów. Opracowany mechanizm, który został przyjęty w marcu 2003, produkuje kod zwany punycode.

Skrócony opis

Każdy segment (część domeny oddzielona od innych kropkami, np. w domenie www.domena.pl domena to taki przykładowy segment) traktowany jest osobno. Najpierw z segmentu usuwane są znaki spoza dozwolonego zestawu, przy czym zapamiętywany jest numer pozycji każdego znaku w unikodzie (np. polska litera ą to pozycja 261) i pozycja tego znaku w segmencie. Na podstawie tych dwóch liczb generowany jest kod, który następnie dołączany jest do tego przetworzonego segmentu, z którego usunięto znaki do zakodowania. Zakodowany segment składa się ze znacznika xn--, dozwolonych znaków, minusa oddzielającego znaki dozwolone od kodu, i właściwego kodu zawierającego informacje o znakach narodowych i ich pozycji w segmencie. W przypadku wystąpienia w segmencie więcej niż jednego minusa ostatni minus oddziela część ze znakami dozwolonymi od kodu. Kod używa 36 znaków – 26 liter łacińskich (nie rozróżnia się wielkich i małych liter, np. a i A to ten sam znak) oraz 10 cyfr. Sam algorytm jest na tyle skomplikowany, że nie będzie tu opisany (jest zbyt trudny do ręcznego kodowania i dekodowania), jedynie podana zostanie mała ilustracja kodowania z użyciem segmentu z przykładowej domeny www.ogórek.pl:

  1. ogórek ⇒ ogrek + znak nr 243 na pozycji nr 3
  2. znak nr 243 na pozycji nr 3 ⇒ -1ta
  3. ogrek + -1ta ⇒ xn--ogrek-1ta

Jeżeli segment składa się tylko ze znaków niedozwolonych (żółć), rzecz jasna w postaci zakodowanej będzie obecny tylko kod poprzedzony znacznikiem xn--: żółć ⇒ xn--kda4b0koi.

Dekodowanie odbywa się w odwrotnej kolejności. Gdy domena zawiera więcej niż jeden segment wymagający kodowania, każdy z nich jest kodowany oddzielnie i niezależnie od innych.

Problemy

Brak jest jakiegokolwiek mechanizmu przekodowania. W przypadku braku możliwości wpisania przez użytkownika danych znaków narodowych nie ma on możliwości połączenia się z daną domeną, o ile nie pamięta lub nie może znaleźć postaci punycode tej domeny. Nie uwzględnia się wariantowości zapisu – zapisu polskiego i polskawego (www.żółw.pl – www.zolw.pl), umlautów (www.müller.name.de – www.mueller.name.de), transliteracji (яндекс.рф – yandex.ru) i innych tego typu problemów istniejących w innych językach (www.māori.org.nz – www.mäori.org.nz – www.maori.org.nz). Mechanizm rozróżnia znaki chińskie w zapisie tradycyjnym (Tajwan) i uproszczonym (Chiny komunistyczne) mimo tego, że mają to samo znaczenie. Pociąga to za sobą konieczność rejestracji domen w różnych wariantach. Rejestracja każdego wariantu domeny jest traktowana jako rejestracja nowej, osobnej domeny, co podwyższa koszty i stwarza dużo możliwości cybersquattingu. Należy również pamiętać, że wciąż używane są przestarzałe programy nieobsługujące IDN, oraz że niektórzy użytkownicy internetu nie mają możliwości wprowadzania znaków narodowych (np. podczas podróży zagranicznej).

O ile przeglądarki i programy pocztowe radzą sobie coraz lepiej z IDN, narzędzia sieciowe (ping, traceroute, nslookup itd.) pozostają w tyle, na przykład w Windowsach w wersji 2000 i wcześniejszych (prawdopodobnie w nowszych też) nie obsługują IDN.

Zagrożenia

Znaki o identycznych lub bardzo podobnych kształtach mogą istnieć w różnych skryptach, na różnych pozycjach Unikodu. W szczególności groźne jest pomylenie małych liter łacińskich (w tym liter ze znakami diakrytycznymi) z identycznie wyglądającymi małymi literami cyrylicy, a nawet greki. Poniższa tabela, choć niekompletna, ilustruje problem (stopień podobieństwa znaków zależy od czcionki użytej do wyświetlenia treści; zatrzymaj kursor nad komórką, by zobaczyć kod Unicode danego znaku):

Znak (lub ciąg znaków) z zakresów unikodu „alfabet łaciński podstawowy” i „dodatek Latin-1” (wiersz 00)Znak z zakresu unikodu „cyrylica” (wiersz 04)Znak z zakresu unikodu „alfabet grecki” (wiersz 03)Znak specjalny (w tym ligatura)
3З
aа
bЬ
blы
cс
d
eе
ff
ffi
ffl
fi
fl
iі
jј
l
m
oоο
pр
sѕ
xх
yуγ
èѐ
ëё
ïї
óό
ßβ
AАΑ
BВΒ
CС
EЕΕ
FϜ
HНΗ
IІΙ
KКΚ
MМΜ
NΝ
OОΟ
PРΡ
SЅ
XХΧ
YУ, ҮΥ
ZΖ
ÈЀ
ËЁ
ÏЇ
ГΓ
ПΠ

Równie groźne jest pomylenie:

Podobieństwa te mogą zostać użyte do popełnienia przestępstwa – skłaniając kogoś do kliknięcia na odsyłacz, który wygląda na prawidłowy. W przeciwieństwie do phishingu opartego o użycie w tekście klikalnym prawidłowego adresu i umieszczeniu w kodzie HTML adresu do strony oszusta, co zwykle widać od razu po najechaniu kursorem na odsyłacz, a w każdym wypadku może zostać zweryfikowane przez podgląd źródła i zwróćenie uwagi na adres w pasku adresu przegladarki, wykrycie phishingu homograficznego (wykorzystującego identycznie wyglądające znaki) jest niemożliwe dla zwykłego użytkownika. Bezpieczeństwo systemu opiera się wyłącznie na dobrych praktykach rejestratorów, którzy nie rejestrują domen różniących się jedynie identycznie wyglądającymi znakami lub zawierającymi znaki identyczne ze znakami specjalnymi. Typowa polityka godna zaufania to zezwolenie na stosowanie w jednym segmencie jedynie znaków z jednej grupy: tylko litery łacińskie (bez ogonków i z ogonkami), albo tylko litery grażdanki, albo tylko litery greckie, albo tylko litery arabskie, albo tylko litery hebrajskie itd.; dopuszczalne jest użycie cyfr z literami łacińskimi, grażdanki i greckimi. Niestety, nie wszyscy rejestratorzy są godni zaufania, niesławnym przykładem jest Verisign rejestrujący domeny .com i .net, który zarejestrował domenę www.pаypal.com – pierwsze a to a cyrylicy, nie łacińskie. Domena ta na szczęście została użyta do demonstracji zagrożenia, ale nic nie stoi na przeszkodzie, by prawdziwi oszuści w podobny sposób spreparowali domenę banku i weszli dzięki temu w posiadanie loginów i haseł klientów tego banku. Przeglądarki mają też wbudowane mechanizmy pozwalające na redukcję (ale nie na całkowitą eliminację) zagrożenia, typowe mechanizmy to biała lista domen najwyższego rzędu (polska domena też jest bezpieczna pod tym względem) i czarna lista zakazanych znaków oraz czarna lista kombinacji dozwolonych znaków. W przeglądarce Firefox obsługę IDN można wyłączyć całkowicie, można też edytować białą listę domen i czarną listę znaków niedozwolonych. W przeglądarce Opera można również edytować białą listę domen, choć przy standardowych ustawieniach jest ona co jakiś czas automatycznie uaktualniana i zmiany są tracone.

Podobne zagrożenia istniały (i istnieją) również w dotychczasowym systemie, gdyż niektóre znaki ASCII lub kombinacje znaków są do siebie mniej lub bardziej podobne, najbardziej znany efekt to podobieństwo zera i wielkiej litery O oraz podobieństwo jedynki i małej litery el w czcionkach szeryfowych, podobieństwo wielkiej litery I i małej litery el w czcionkach bezszeryfowych, i parę innych:

0O
1l
Il
rnm
hnlm
cld

Historia – RACE

Przed punycode pojawiły się różne inne systemy kodowania znaków narodowych. Jedyny system, który przez pewien czas był używany, to RACE (ang. Row-based ASCII Compatible Encoding), którego pierwszy projekt opublikowano 18 czerwca 2000, a czwarty (ostatni) – 22 listopada tego samego roku. Od 2003 wycofywany i sukcesywnie zastępowany obecnym systemem. Dla zainteresowanych tematem dostępny jest opis na podstronie link prowadzi do podstrony

Linki:

licznik