nettverk og infrastruktur
Punicode ga oss blåbærsyltetøy.no, men også et betydelig sikkerhetsproblem
Les andre del i serien om hvordan de ulike delene av URL-en ble skapt.
I den første artikkelen i denne artikkelserien om historien til URL-en og komponentene den består av, var det i praksis bare verts- og domenenavnene vi omtalte. I denne andre artikkelen i serien kikker vi nærmere på blant annet toppdomener og internasjonaliserte domenenavn.
Der vi avsluttet sist, i 1982, var domenenavn blitt tatt i bruk, men fortsatt fantes det ikke noe sentralt domenenavnsystem som kunne oversette («resolve») mellom domenenavn og IP-adresser.
Domain Name System
Selv om ideene om et slikt system selvfølgelig hadde blitt luftet lenge, var det først i november 1983 at spesifikasjonen for det vi i dag kjenner som DNS (Domain Name System), ble presentert. Spesifikasjonen er skrevet av Paul Mockapetris, som sammen med Jon Postel fant opp DNS.
DNS er satt opp som et hierarkisk system med 13 rotservere i det øverste nivået. For brukere i Norge, befinner den nærmeste seg hos Netnod i Sverige. Men som digi.no nylig skrev, finnes det en kopi av både denne og minst to andre, i Oslo.
Vi skal i denne artikkelen ikke gå inn på hvordan DNS fungerer, utover å peke på en detalj som kanskje ikke er så velkjent.
Nedenfor kan man se DNS-oppføringene for www.digi.no og digi.no, hentet fram med verktøyet dig.
I alle de tre linjene over, er det en kolonne med tekst IN. I denne kolonnen skal DNS-klassen være oppført. IN står for «Internet». Ifølge spesifikasjonen er i alle fall også CH og HS gyldige verdier. CH står for Chaosnet, som vi så vidt omtalte i forrige artikkel. Dette eksisterer ikke lenger. HS er en forkortelse for Hesiod, som var navne- og katalogtjenesten i Project Athena, som var et internt nettverk ved MIT.
Toppdomener
Den bakerste delen av domenenavn som www.digi.no, altså .no, er det som kalles for toppdomene eller toppnivådomene – på originalspråket heter dette «top level domains» (TLD).
Også de mer konkrete tankene om å innføre et slikt toppnivå ser ut til å stamme fra november 1983. Og igjen var Jon Postel, som vi omtalte i den første artikkelen i denne serien, som presenterte ideen. I en RFC (Request for Comments) skriver han blant annet de første vertene på internett vil være i domenet «ARPA».
Han nevner også at det neste toppdomenet, vil være DDN. I 1983 etablerte det amerikanske forsvarsdepartementet nemlig et nytt nettverk, Defense Data Network (DDN), som var basert på Arpanet-teknologien og ble delt inn i fire globale undernett for forskjellige nivåer av gradert informasjon. Ett av disse undernettene var MILNET, som var for ugradert informasjon.
I oktober 1984 presenterte Postel og kollegaen Joyce Kathleen Reynolds det som omtales som det første settet med toppdomener. Dette omfattet generiske toppdomener som GOV, EDU, COM, MIL og ORG, de nasjonale toppdomenene, slik som NO, DK og US, samt det som ble kalt multiorganisasjonsdomener. Dette kunne eksempelvis være et fellesskap av organisasjoner, for eksempel universiteter, lokalisert i ulike land.
I et notat Postel skrev i mars 1994, var de generiske toppdomenene blitt noen flere. NET og INT var blitt lagt til. Tanken om multiorganisasjonsdomener ser ut til å være forlatt, og Postel ser ut til å ha kommet til at det ikke er behov for flere toppdomener:
It is extremely unlikely that any other TLDs will be created.
Men det skulle ikke gå lang tid før det kom forslag om nye, generiske toppdomener. Digi.no omtalte dette i 1997. De fleste av disse ble i første omgang forkastet, slik at det bare var BIZ, INFO og NAME som ble tilgjengelige 1. oktober 2001.
I ettertid har det derimot vært et stort frislipp, og listen til Internet Assigned Numbers Authority (IANA), som nevnte Postel i sin tid var sjef for, består nå av mer enn 1500 toppdomener, inkludert de nasjonale og infrastrukturtoppdomenet som ARPA.
Internasjonalisering av domenenavn
Arpanet-teknologien, som internett bygger på, ble utviklet i USA for å dekke amerikanske behov. Dette innebar blant annet at domenenavn bare kunne inneholde tegn fra ASCII-tegnsettet (American Standard Code for Information Interchange). For eksempel kunne ikke de særnorske bokstavene æ, ø og å brukes i domenenavn.
Noe av det samme problemet gjaldt også selve webinnholdet. Fram til og med HTML 3.2 var kun tegn som var med i tegnsettet ISO-8859-1/Latin-1, tillatt i HTML. Det dette ble løst med HTML 4, som hadde støtte for Universal Coded Character Set (UCS), også kjent som ISO/IEC 10646. Dette er dessuten kompatibelt tegn for tegn med Unicode-standarden, som blant annet definerer UTF-8, det tegnsettet som i mange år har vært det soleklart mest brukte på weben.
Fordi det er enklere å oppdatere programvare som nettlesere og HTTP-servere, enn å bytte ut alt gammelt nettverksutstyr som forholder seg til domenenavn, har det ikke vært mulig å gjøre noe tilsvarende når det gjelder domenenavnene. Likevel er det i dag mulig å bruke Unicode-tegnene i domenenavn.
Punicode
Før for eksempel Norid kunne begynne å godkjenne domenenavn med blant annet særnorske tegn i februar 2004, som en del av det som kalles for IDN (Internationalized Domain Names), måtte en løsning komme på plass. For domenenavn må fortsatt kunne gjengis som ASCII-tegnene A-Z, 0-9 og - (bindestrek). Dessuten er lengden på domenenavnet fortsatt begrenset til 63 tegn.
Løsningen ble noe som fikk det pussige navnet Punicode, som kan kode tallverdiene som Unicode-tegnene har på en temmelig kompakt måte. Selv om nettleseren viser domenenavnet med Unicode-tegnene, så kodes det i bakgrunnen til Punicode. For å markere at et domenenavn er gjengitt i Punicode, brukes prefikset «xn--».
Domenenavnet bøker.no blir da til xn--bker-gra.no.
Også emotikoner er definert som egne Unicode-tegn og kan dermed brukes i domenenavn. Lenken nedenfor leder brukeren til forsiden av digi.no, via tjenesten Linkmoji.
Kikker du på kildekoden til denne artikkelen, ser du at adressen i lenken over er gjengitt akkurat slik den vises. Men holder du muspekeren over lenken, ser du trolig at adressen er konvertert til: http://xn--e6h1669n7a4tlsfl03a07z.xn--vi8hiv.ws/
Homografisk sikkerhetsfelle
Det er et alvorlig sikkerhetsproblem knyttet til internasjonaliserte domenenavn, nemlig at en rekke tegn i ulike alfabeter ser til forveksling like ut. Spesielt ikke minst de kyrilliske og latinske alfabetene. Ja, i noen skrifttyper kan det være vanskelig nok å se forskjell på l og 1, og O og 0. Men i Source Sans Pro-fonten som brukes i brødteksten i digi.no-artiklene for tiden, bør ikke det være et problem.
Verre er det å se forskjell på de to lenkene nedenfor:
Holder du musepekeren over disse, ser du at den første oversettes til Punicode, mens den andre leder til Wikipedia. Forskjellen på disse to er a-en i wikipedia-domenet er byttet ut med minuskelen av den første bokstaven i det kyrilliske alfabetet, а.
Det at det er vanskelig å se forskjell på slike tegn, blir ofte utnyttet av svindlere, ikke minst via e-post. Dette kalles for homografiske eller homoglyfiske angrep. Dersom brukeren ikke kontrollerer at lenken ikke er i Punicode, ved å holde muspekeren over den, er det vanskelig å oppdage at man lokkes til et falskt nettsted. På mobiler og nettbrett er det ofte enda vanskeligere.
Dermed er vi ferdige med domenenavnene. I neste artikkel skal vi i alle fall ta for oss protokoller og hvor // stammer fra. Et stikkord for det siste, er Apollo.
Denne artikkelserien er inspirert av et blogginnlegg som Cloudflare publiserte i begynnelsen av mars.