Punycodes selitetty

Punycodes selitetty

Lähdesolmu: 1903509

Kun käytät vain ASCII:tä, kuinka voit esittää monimutkaisempia asioita, kuten hymiöitä tai ei-latinalaisia ​​merkkejä? Yksi vastaus on Punycode, joka on tapa edustaa Unicode-merkkejä ASCII:ssa. Voit kuitenkin koodata Unicoden raakabitit teknisesti merkeiksi, kuten BASE64, siinä on pulma. DNS (Domain Name System) edellyttää yleensä, että isäntänimien kirjainkoolla ei ole merkitystä, joten kirjoititpa sitten osoitteeseen HACKADAY.com, HackADay.com tai vain hackaday.com, kaikki menee samaan paikkaan.

[A. Costello] Kalifornian yliopistossa Berkleyssä ehdotti ideaa Punycodesta vuonna RFC 3492 maaliskuussa 2003. Se hahmottelee yksinkertaisen algoritmin, jossa kaikki tavalliset ASCII-merkit vedetään ulos ja kiinnitetään yhdelle puolelle erottimella, tässä tapauksessa tavuviivalla. Sitten Unicode-merkit koodataan ja kiinnitetään merkkijonon loppuun.

Ensin numeerinen koodipiste ja sijainti merkkijonossa kerrotaan yhteen. Sitten numero koodataan muodossa a Pohja-36 (az ja 0-9) muuttuvapituinen kokonaisluku. Esimerkiksi tervehdys ja kreikkalainen kiitos, "Hei, ευχαριστώ” tulee "Hei, -mxahn5algcq2″. Samoin kaunis kaupunki München tulee mnchen-3ya.

Kuten saatat huomata kreikkalaisessa esimerkissä, mikään ei auta dekooderia tietämään, mitkä 36 perusmerkit kuuluvat mihinkin alkuperäiseen Unicode-symboliin. Muuttuvan pituisten kokonaislukujen ansiosta jokainen merkitsevä numero on tunnistettavissa, koska on olemassa kynnys sille, mitä lukuja voidaan koodata. Äärillisen tilan kone tulee apuun. RFC antaa esimerkillisen pseudokoodin, joka hahmottelee algoritmin. Se on melko näppärä, ja se käyttää harhaa, joka pyörii dekoodauksen edetessä. Koska se kasvaa jatkuvasti, se on monotoninen toiminto, jolla on joitain älykkäitä ominaisuuksia.

Tietenkin URL-osoitteilla on erityinen pieni etuliite, jotta tavallisia URL-osoitteita ei tulkita pienimuotoisiksi koodeiksi xn-- ilmoittaa selaimelle, että se on koodi. Tämä sisältää kaikki Unicode-merkit, joten emojit ovat myös voimassa. Joten miksi et voi mennä xn--mnchen-3ya.de? Jos kirjoitat sen selaimeesi tai napsautat linkkiä, saatat nähdä selaimesi muuntavan tuon hämmentävän kirjekeiton kauniiksi URL-osoitteeksi (kaikki selaimet eivät tee tätä). Suurin ongelma on itse Unicode.

Vaikka Unicode tarjoaakin uskomattoman tuen, joka mahdollistaa satojen Internetissä päivittäin käytettävien kielten mahdollistamisen, ja uskaltaa sanoa, että jopa melko suoraviivaisia, joitain syyliä esiintyy. Kyrilliset, nollaleveät kirjaimet ja muut Unicode-omituisuudet antavat niille, joilla on pahemmat aikomukset, perustaa verkkotunnuksen, joka hahmonnettaessa näkyy tunnettuna verkkosivustona. SSL-varmenteet ovat voimassa, ja kaikki muu tarkistetaan. Kyrillisellä kirjaimella on merkkejä, jotka näyttävät visuaalisesti samanlaisilta latinalaisten vastineidensa kanssa, mutta jotka esitetään eri tavalla. Hakkereiden ja tietojenkalasteluyritysten mahdollisuudet ovat liian suuret, ja toistaiseksi punycode-koodeja ei ole sallittu useimmilla verkkotunnuksilla.

Voitko esimerkiksi kertoa eron näiden kahden verkkotunnuksen välillä?

hackaday.com

hackаday.com

Jotkut selaimet näyttävät hiiritekstin Punycode-koodina, ja toiset säilyttävät sen UTF-8-vastineena. "a" (U+0061) on korvattu kyrillisellä "a":lla (U+0430), jonka useimmat tietokoneet tekevät täsmälleen samalla merkillä.

Tämä on IDN-homografihyökkäys, jossa he luottavat siihen, että käyttäjä napsauttaa linkkiä, jota he eivät voi erottaa toisistaan. Vuonna 2001 kaksi tietoturvatutkijaa julkaisi aiheesta artikkelin, jossa "microsoft.com" rekisteröitiin kyrillisillä kirjaimilla todisteeksi ideasta. Vastauksena ylätason verkkotunnuksiin suositeltiin hyväksymään vain latinalaisia ​​merkkejä sisältävät Unicode-merkit ja kyseisessä maassa käytettyjen kielten merkit. Tämän seurauksena monet yleiset Yhdysvalloissa sijaitsevat ylätason verkkotunnukset eivät hyväksy Unicode-verkkotunnuksia ollenkaan. Ainakin ei-näytettävät hahmot on sidottu erityisesti ICANN:iin, mikä välttää suuren matotölkin, mutta visuaalisesti identtisten, mutta hieman erilaisten hahmojen esiintyminen aiheuttaa hämmennystä.

Tämäntyyppisten hyökkäysten lievennyksiä otetaan kuitenkin hitaasti käyttöön. Ensimmäisenä suojakerroksena Firefox- ja Chromium-pohjaiset selaimet näyttävät vain ei-Punycode-version, jos kaikki merkit ovat samasta kielestä. Jotkut selaimet muuntavat kaikki Unicode-URL-osoitteet Punycodeksi. Muut tekniikat käyttävät optista merkintunnistusta (OCR) määrittääkseen, voidaanko URL-osoite tulkita eri tavalla. Selaimen ulkopuolella tekstiviestillä tai sähköpostilla lähetetyillä linkeillä ei välttämättä ole samaa älykkyyttä, etkä tiedä, ennen kuin olet avannut ne selaimessasi. Ja silloin on liian myöhäistä.

Haasteet syrjään, saavatko Punycodes aikansa auringossa? Saako Hackaday koskaan osoitteen ☠️📅.com? Kuka tietää. Mutta sillä välin voimme nauttia näppärästä ratkaisusta, joka ehdotettiin vuonna 2003 verkkotunnusten kansainvälistymisen hankalaan ongelmaan, jota emme ole vieläkään täysin ratkaisseet.

Aikaleima:

Lisää aiheesta Hack päivä