# Onion routing

Onion routing (OR) is een techniek voor anonieme communicatie via een computernetwerk. Berichten worden herhaaldelijk versleuteld en vervolgens verzonden via verschillende netwerknodes genaamd onion routers. Het valt te vergelijken met het pellen van een ui: elke onion router verwijdert een laag van encryptie om de navigatie-instructies te ontdekken en stuurt het bericht naar de volgende router, waar dit wordt herhaald. Dit voorkomt dat intermediaire nodes in het netwerk de herkomst, bestemming, en inhoud van het bericht kunnen achterhalen.
Onion routing werd ontwikkeld door Michael G. Reed (voorheen van Extreme Networks), Paul F. Syverson en David M. Goldschlag en in 1998 gepatenteerd door de United States Navy. Het Tor-netwerk is de meest gebruikte technologie die op onion routing gebaseerd is.

## Mogelijkheden

Het idee van onion routing is om de privacy van de afzender en ontvanger van een bericht te beschermen, terwijl het ook bescherming biedt voor de inhoud van de boodschap terwijl het een netwerk doorkruist.
Onion routing doet dit volgens het principe van David Chaums mixnetwerken: berichten reizen van bron naar bestemming via een opeenvolging van proxy's (zogenaamde onion routers), die de berichten verder sturen via een onvoorspelbaar pad. Om te voorkomen dat een bericht kan worden afgeluisterd, worden deze versleuteld verzonden tussen de routers. Het voordeel van onion routing is dat het onnodig is om elke tussenliggende router te vertrouwen; ook als een router onbetrouwbaar is, kan anonieme communicatie nog steeds worden bereikt. Dit komt doordat elke router in het netwerk berichten accepteert, her-versleutelt en naar een andere onion router stuurt. Een aanvaller met de mogelijkheid om elke onion router in een netwerk te monitoren, zou het pad van een bericht kunnen achterhalen, maar voor een aanvaller met beperktere mogelijkheden zal dit moeilijk zijn, zelfs als hij of zij controle heeft over meerdere routers op het pad van het bericht.
Onion routing kan niet zorgen voor perfecte anonimiteit van zender of ontvanger tegen alle mogelijke afluisteraars. In het bijzonder een lokale afluisteraar kan vaststellen dat een bepaald individu een bericht heeft verstuurd of ontvangen. De techniek zorgt vooral voor een sterke mate van unlinkability, het idee dat een afluisteraar niet gemakkelijk zowel de verzender als de ontvanger van een bepaalde boodschap kan bepalen. Zelfs binnen deze grenzen is onion routing geen enkele garantie van privacy, maar veeleer een continuüm, waarin de mate van privacy afhankelijk is van het aantal deelnemende routers ten opzichte van het aantal gecompromitteerde of kwaadwillende routers.

## Onions
### Routing onions

Een routeringsonion (of gewoon onion) is een datastructuur die wordt gevormd door een leesbaar bericht te verpakken in opeenvolgende lagen van encryptie, zodanig dat elke laag door een van de tussenliggende routers 'uitgepakt' (gedecodeerd) kan worden. Het oorspronkelijke bericht kan op zijn hoogst gelezen worden door:
* de afzender
* de laatste tussenpersoon
* de ontvanger
Wanneer tussen de zender en de ontvanger end-to-endencryptie (bijvoorbeeld SSL) wordt toegepast, is het zelfs voor de laatste tussenpersoon onmogelijk het oorspronkelijke bericht te lezen.
Een tussenpersoon heet van oudsher een knoop of router.
Voor het maken en geven van een onion, worden de volgende stappen genomen:
* De afzender haalt knooppunten uit een lijst, die door een speciale knoop genaamd het directoryknooppunt wordt geleverd (verkeer tussen de zender en het directoryknooppunt kan ook worden versleuteld of anderszins geanonimiseerd of gedecentraliseerd). De gekozen knooppunten worden gebruikt om een pad te creëren waarlangs het bericht kan worden verzonden. De volgorde van de knooppunten wordt een ketting of een circuit genoemd.
* Door middel van asymmetrische encryptie versleutelt de afzender met behulp van de publieke sleutel van elk knooppunt het leesbare bericht in de noodzakelijke lagen van encryptie. De publieke sleutels worden opgehaald uit een gepubliceerde lijst of direct opgehaald voor tijdelijk gebruik, en de lagen worden toegepast in de omgekeerde volgorde van het pad van het bericht van zender naar ontvanger. Elke laag bevat informatie voor het corresponderende knooppunt ten aanzien van het volgende knooppunt waarop de onions moeten worden doorgegeven.
* Terwijl de onion over elk knooppunt in de keten gaat, is een laag van encryptie afgepeld door het ontvangende knooppunt (met behulp van de private sleutel die overeenkomt met de publieke sleutel waarmee de laag werd gecodeerd), waarna de deels afgepelde onion verzonden wordt naar het volgende knooppunt in de keten.
* De laatste node in de keten pelt de laatste laag af en zendt het oorspronkelijke bericht naar de beoogde ontvanger.
Deze aanpak betekent dat elk knooppunt in de keten uitsluitend op de hoogte is van slechts twee andere knooppunten:
* het vorige knooppunt van waaruit de onion was verzonden
* het volgende knooppunt waaraan de onion moet worden doorgegeven.
Het afpellen van de lagen van de onion maakt het moeilijk of onmogelijk om de "ui" te volgen zonder controle te hebben over een groot aantal knooppunten.

### Reply onions

Onion routing bevat ook een techniek die de ontvangers antwoorden laat terugsturen naar de afzender, zonder afbreuk te doen aan de identiteit van beide partijen. Dit is opgenomen in het concept van een reply onion, die vergelijkbaar is met een normale onion, behalve dat een reply onion codeert voor het pad van de ontvanger terug naar de afzender.
Om communicatie in beide richtingen mogelijk te maken, genereert een zender zowel een normale onion als een reply onion. De reply onion wordt doorgegeven aan de laatste knoop van de keten, die deze dan gebruikt om een pad terug naar de verzender te genereren. Omdat de reply onion meerdere malen versleuteld is, biedt deze weinig informatie die de zender in gevaar zou kunnen brengen (een aanvaller moet ofwel alle lagen van de publiekesleutelencryptie kraken of alle knooppunten in de keten onder controle hebben).

### Zwakke punten

* Timinganalyse: Inkomende en uitgaande berichten over een relatief onbelaste node kunnen worden gekoppeld door het observeren van hoe dicht bij elkaar in de tijd ze ontvangen en opnieuw verzonden worden. Dit kan echter overwonnen worden door verschillende berichten te bufferen en te verzenden met behulp van een pseudo-timingalgoritme.
* Intersectionaanvallen: Knooppunten verlaten soms tijdelijk het netwerk. Een keten die nog bestaat, kan niet worden gerouteerd over de knooppunten die verdwenen of nieuw zijn, waardoor de kans op een succesvolle analyse van het pad toeneemt.
* Voorgangeraanvallen: Een gecompromitteerd knooppunt kan een sessie bijhouden als zich meerdere ketenhervormingen voordoen (ketens worden periodiek afgebroken en weer opgebouwd). Als dezelfde sessie wordt waargenomen in de loop van voldoende hervormingen, heeft het besmette knooppunt de neiging om vaker verbinding te maken met een bepaalde afzender dan elk ander knooppunt, waardoor de kans op een succesvolle analyse van het verkeer toeneemt.
* Exit-knooppunt-sniffing: een exitknooppunt (de laatste node in een keten) heeft volledige toegang tot de inhoud die wordt overgedragen van de afzender aan de ontvanger. Dan Egerstad, een Zweedse onderzoeker, heeft met een dergelijke aanval de wachtwoorden van meer dan 100 e-mailaccounts met betrekking tot buitenlandse ambassades verzameld. Deze zwakte kan echter worden opgelost door gebruik van end-to-endencryptie (dat wil zeggen, encryptie tussen de zender en de ontvanger), zoals SSL.

## Tor

Op 13 augustus 2004 werd Tor (The Onion Router) gepresenteerd op het 13e USENIX-beveiligingssymposium door Roger Dingledine, Nick Mathewson en Paul Syverson. Tor is een tweede generatie onion router.
Tor valt niet onder het oorspronkelijke onion-routingpatent, omdat het gebruikmaakt van telescopische circuits. Tor biedt perfecte voorwaartse geheimhouding en plaatst protocol cleaning buiten de onion-routinglaag, waardoor het algemeen gebruikt kan worden in TCP communicatie. Het biedt ook een lage latency, directory servers, end-to-endcontrole van de integriteit en variabele exit policy voor routers. Reply onions zijn vervangen door een rendez-voussysteem, waardoor verborgen diensten en websites gebruikt kunnen worden. Het pseudo-topleveldomein .onion wordt gebruikt voor adressen in het Tornetwerk.
De broncode van Tor is gepubliceerd onder de BSD-licentie. In april 2011 waren er ongeveer 2600 voor het publiek toegankelijke onion routers.