Hoe een .onion-adres op Tor te genereren
Op internet, zoals de meeste mensen het gebruiken, wordt een domeinnaam (bijvoorbeeld expressvpn.com) geregistreerd via een registrar. Meestal betaal je hiervoor een vergoeding.
Het gedeelte na de stip rechts van het domein, zoals ‘.com’ of ‘.ca’, wordt het hoofddomein genoemd. Het is vaak de code van een land, maar er bestaan ook enkele generieke topleveldomeinen zoals “.website”. Onlangs hebben bedrijven zelfs hun eigen topleveldomeinen kunnen registreren, zoals ‘.apple’.
Deze topleveldomeinen worden toegewezen door de Internet Corporation for Assigned Names and Numbers (ICANN). Als u uw eigen topleveldomein wilt maken, moet u uw voorstel indienen en betaalt u er waarschijnlijk veel geld voor.
Het gedeelte vóór de stip links van het domein is het subdomein. Wanneer u een domeinnaam koopt, zoals uwnaam.com, bent u vrij om subdomeinen te maken en deze naar verschillende servers te wijzen (bijvoorbeeld blog.uwnaam.com of chat.uwnaam.com).
Nadat u uw eigen domein hebt geregistreerd bij een registrar (of zelfs een hoofddomein bij ICANN), kunt u dit domein met een nameserver naar het IP-adres van uw website verwijzen.
Voor een gratis en open internet levert dit verschillende problemen op.
Als ICANN om welke reden dan ook een hekel aan u heeft, kunnen ze uw domein eenvoudig wegnemen en aan iemand anders geven.
Een aanvaller kan toegang krijgen tot uw account bij de registrar en deze op zijn eigen server richten. Ze kunnen dit gebruiken om wachtwoorden en andere bevoorrechte informatie van uw gebruikers te phishing. Uw server is altijd gemakkelijk identificeerbaar via uw domein, waardoor het gemakkelijk is om uw service te censureren of in beslag te nemen.
.ui-diensten pakken al deze problemen aan door slimme cryptografie en een paar trucs.
Een hash van een openbare sleutel
.uiensites, zoals tp7q4m5ln4yhk5os.onion, zijn niet geregistreerd. In plaats daarvan zijn ze een hash van een openbare sleutel.
Om precies te zijn, ze zijn de eerste helft van de base32-gecodeerde SHA-1 hash van een openbare sleutel, van een 1024-bits RSA-sleutelpaar met het achtervoegsel “.onion”.
Het resultaat is dat een .onion-domeinnaam 16 tekens lang is en alleen kleine letters a tot z en de cijfers 2 tot en met 7 kan bevatten.
Wanneer u een .onion-adres in uw Tor-browser typt, zoekt u geen IP-adres op een DNS-server, anders dan bij een normaal domein. In plaats daarvan vraagt u een directory met verborgen services, die door iedereen kan worden uitgevoerd.
Als de Hidden Service-directory die u aanvraagt weet hoe u de server kunt vinden die u zoekt, wordt u doorgestuurd naar de website, zonder dat de locatie wordt onthuld (lees hier meer over hoe Tor werkt).
.ui-herkenning van internetregisters
Omdat deze functionaliteit alleen werkt in het Tor-netwerk, kunt u alleen .onion-websites opzoeken via de Tor-browser. Als ICANN ooit domeinen zou uitgeven met het einde .onion, zou dit echter voor veel verwarring kunnen zorgen, omdat verborgen services en sites in het reguliere net hetzelfde adres op twee verschillende manieren zouden oplossen, wat zou leiden tot twee verschillende sites.
Dit is echter niet erg waarschijnlijk, aangezien ICANN waarschijnlijk de brede acceptatie en het gebruik van het Tor-netwerk zal herkennen en zeker verwarring over het domeinnaamsysteem wil voorkomen.
De Internet Engineering Task Force, IETF, die internetstandaarden zoals TCP / IP ontwikkelt en onderhoudt, heeft het .onion-domein al officieel erkend in wat in 2015 werd aangemerkt als een mijlpaalbeslissing. Deze beslissing kwam na een zware lobby van het Tor-project en maakte het mogelijk voor Facebook om een digitaal TLS-certificaat te ontvangen.
TLS is niet nodig in het Tor-netwerk voor codering, omdat de verbinding al end-to-end is gecodeerd tussen een .onion-server en de gebruiker. Een certificaat maakt het echter gemakkelijker voor de gebruiker om te controleren of ze verbinding maken met de juiste server en biedt een extra barrière voor een aanvaller.
Een ijdelheid .onion-adres krijgen
Wanneer u een .onion-adres genereert, ziet het er nogal willekeurig uit, zoals bij elke hash. Statistisch gezien zul je echter, als je genoeg van dergelijke adressen maakt, af en toe een willekeurige tegenkomen die daadwerkelijk leesbaar is.
Voor elke positie zijn er 32 mogelijke tekens. Als u een adres wilt vinden dat begint met e, moet u ongeveer 16 keer raden. Als u een adres wilt dat begint met ex, moet u al raden (32 * 32) / 2 = 512 keer. Voor exp zijn meer dan 16.000 gissingen nodig.
Een moderne computer kan met behulp van een script gemakkelijk 1-2 miljoen adressen per seconde raden. Van hieruit kunnen we gemakkelijk inschatten hoe lang het zou duren om de gewenste domeinnaam te vinden. We kunnen hetzelfde proces gebruiken om te proberen het adres van iemand anders te kraken, maar de volgende grafieken laten zien dat dit niet haalbaar zou zijn.
Om een goed, memorabel en esthetisch .onion-adres te genereren, beperkt u zich niet alleen tot het kijken naar de eerste tekens. U kunt reguliere expressies gebruiken om patronen te maken die gemakkelijk te lezen en te onthouden zijn.
Om hun .onion-domein facebookcorewwwi.onion te genereren, nam Facebook een nieuw datacenter en gebruikte het meer dan 500.000 cores om steeds opnieuw domeinen te genereren totdat ze er een vonden die ze leuk vonden.
Het kostte Facebook meer dan een week om hun .onion-domein te genereren, en de rekenkracht zou ongeveer US $ 100.000 aan elektriciteit hebben gekost.
Nik Cubrilovic, die de verborgen service voor Blockchain heeft opgezet, zegt dat het hen slechts 200-300 USD en ongeveer 24 uur kostte om hun domein (blockchainbdgpzk.onion) te bedenken met behulp van een AWS G1-instantie en een cluster van zes ATi-kaarten.
ExpressVPN gebruikte slechts één computer met een nieuw geïnstalleerd besturingssysteem. De computer was niet verbonden met internet om het risico te beperken dat een derde de sleutels in handen kreeg. Het duurde ongeveer twee weken om expressobutiolem.onion te genereren, evenals een paar andere, minder mooie domeinen.
.Ui adres beveiliging
Hoewel je een .onion-sleutel niet zou kunnen kraken met je laptop of zelfs duizend laptops, kun je misschien wel als je een miljoen computers vindt die elk ongeveer 10.000 keer de rekenkracht van je laptop hebben vandaag.
Zelfs dan kan het een paar jaar duren, maar wat vandaag waanzinnig duur klinkt, komt misschien binnenkort binnen het bereik van een goed gefinancierd en gemotiveerd drieletterbureau.
In de toekomst moeten .onion-adressen worden geüpgraded of moet een nieuw schema worden gevonden. Op zijn minst zal de RSA-sleutel moeten worden uitgebreid (ExpressVPN gebruikt al RSA-sleutels met een lengte van 4096 bits voor zijn VPN-service) en het hashing-algoritme zou kunnen worden opgewaardeerd naar een SHA-2-algoritme.
Bitcoin-adressen zijn bijvoorbeeld zeer vergelijkbaar met .onion-adressen, maar Bitcoin gebruikt de ECDSA-elliptische curve om sleutels van 256 bits te genereren en past de SHA-256-hashfunctie twee keer toe om het adres af te leiden.
Waar daarna voor Tor en .onion?
We weten niet wat de toekomst zal brengen voor .onion-adres TLS-certificaten. Omdat .onion-adressen moeilijk te berekenen zijn, is er weinig risico dat ze worden gekopieerd, maar gebruikers kunnen nog steeds worden misleid om een soortgelijk adres te volgen en phishing te krijgen. Om dit te voorkomen, moet de gebruiker de integriteit van het hele domein controleren, niet alleen de eerste paar overeenkomende tekens.
TLS-certificaten maken dit proces mogelijk eenvoudiger, maar het vereist ook dat de houder van de .onion-sleutel zijn echte identiteit onthult. Dat zou het doel van de verborgen service ondermijnen.
Een alternatief zou zijn om mapping services zoals Namecoin of Blockstack te gebruiken om een gedecentraliseerde DNS-vervanging te creëren. Het is echter onduidelijk hoe een dergelijk systeem kan omgaan met het kraken van namen en phishing. Uiteindelijk kan de toekomst zelfs behoren tot eenvoudige combinaties van lange cryptografische hashes en gewone adresboeken.
Heeft u eigen theorieën over de toekomst van .onion-domeinen? Deel uw mening in de reacties hieronder!