Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.
Data publikacji: 06-10-2022 | Autor: | Adam Kamiński |
W epoce przedkomputerowej wizualne podobieństwo pewnych znaków pisanych pozwalało uprościć konstrukcję maszyn do pisania, ograniczając liczbę klawiszy w klawiaturach, co dawało pewne oszczędności. Dzisiaj te podobieństwa wykorzystują cyberprzestępcy.
Wspomniana oszczędność dotyczyła pozbawienia klawiatur klawiszy „0” i „1”, które z powodzeniem były zastępowane przez duże „o” oraz małe „l”, pozostawiając człowiekowi interpretację, czy chodziło o cyfry, czy litery. Potrzeba uniknięcia mylenia zera z „o” dała początek tradycji krzyżowania zer, tak aby operator komputera nie miał wątpliwości, co wpisuje. Omawiane podobieństwo określa się jako homografy (gdy chodzi o wyrazy) lub homoglify, gdy dotyczy pojedynczych znaków.
Celowe zastępowanie wyglądających podobnie znaków różnymi alfabetami praktykowane było w celach rozrywkowych (np. faux Cyrillic), a kodowanie Volapük, w którym znaki łacińskie reprezentują te z cyrylicy na zasadzie podobieństwa, zostało wykorzystane we wczesnych dniach internetu jako sposób na przezwyciężenie braku wsparcia dla cyrylicy. Problem pojawił się, gdy cyberprzestępcy w homografach i tym, że użytkownicy optycznie nie odróżniają tych znaków od siebie, dostrzegli potencjał na kolejny wektor ataku.
ASCII i Unicode
Homografy występują także w systemach kodowania. ASCII, czyli siedmiobitowy system kodowania znaków używany we współczesnych komputerach oraz sieciach komputerowych, ma kilka znaków lub par znaków, które wyglądają podobnie. Połączenia liter „r” oraz „n” wyglądają jak „m”, co daje możliwość domenie np. „rnicrosoft.com” podszycia się pod „microsoft.com”. Innym przykładem może być „googIe.com” lub „paypaI.com”, w których zamiast „l” użyto dużego „i”. W niektórych wąskich fontach, takich jak Tahoma, umieszczenie „c” przed „j”, „l” lub „i” spowoduje powstanie homoglifów wyglądających jak: „d” (cl), „g” (cj), „a” (ci). Standard ASCII projektowany był pod kątem obsługi języka angielskiego, dlatego pozbawiony jest liter diakrytyzowanych, i istnieje tylko 95 znaków drukowanych, które można w nim zapisać. Ogranicza to liczbę kombinacji i stron, pod które można się za jego pomocą podszyć.
Wprowadzenie wielojęzycznych systemów komputerowych (takich jak Unicode) wielokrotnie zwiększyło możliwości hackerów.
System Unicode obsługuje znacznie większą liczbę znaków, dzięki czemu wszystkie alfabety używane na świecie mogą zostać umieszczone w jednym kodowaniu, z uwzględnieniem ich znaków diakrytycznych, akcentów, kilku rodzajów myślników itd. Zwiększyło to zatem liczbę znaków logicznych w nich zawartych, które mogą mieć identyczny wygląd. Na przykład małe łacińskie „a” (Unicode U+0061) może wyglądać identycznie jak małe „a” z cyrylicy o oznaczeniu Unicode U+0430. Tak subtelna różnica wystarczy, by zawarty w adresie odpowiednik „a” przeniósł nas na zupełnie inną stronę. Podobnie wyglądające znaki, takie jak greckie „O”, łacińskie „O” i cyrylica „O”, z wielu powodów nie zostały przypisane do tego samego kodu. Innym przykładem może być litera „t”, która w cyrylicy wygląda jak łacińskie „m”. Z powodzeniem wykorzystywany jest również znak „ω” zamiast „w”. Ich nieprawidłowe lub złośliwe użycie stwarza możliwość ataków bezpieczeństwa.
Problem wynika z odmiennego traktowania znaków w umyśle użytkownika i w programowaniu komputera. Z punktu widzenia użytkownika „a” z cyrylicy w ciągu łacińskich znaków nie różni się od łacińskiego „a”. W większości fontów nie ma różnicy w glifach dla tych znaków. Jednak komputer traktuje je inaczej podczas przetwarzania ciągu znaków jako identyfikatora. Dlatego przekonanie użytkownika o zgodności jeden do jednego pomiędzy wizualnym wyglądem nazwy a nazwanym podmiotem może być błędne.
[...]
Artykuł pochodzi z miesięcznika: IT Professional
Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.
Transmisje online zapewnia: StreamOnline