# Authenticatie gebaseerd op een geheime gedeelde sleutel

Authenticatie is de techniek waarmee een proces controleert of degene met wie het communiceert werkelijk degene is die hij zegt te zijn en geen bedrieger.
Het model dat in alle authenticatieprotocollen wordt gebruikt, is het volgende: Alice begint met sturen van een bericht aan Bob. Vervolgens volgen er verschillende uitwisselingen van berichten. Tijdens het uitwisselen van de berichten kan een indringer, Trudy, deze berichten onderscheppen, wijzigen of herhalen.
In de meeste protocollen hebben Alice en Bob een geheime sessiesleutel gemaakt voor gebruik in het uitwisselen van berichten. De reden voor het gebruik van een nieuwe, volgens het toeval gekozen sessiesleutel voor elke nieuwe verbinding is:
* het beperken van de hoeveelheid verkeer die met de geheime of openbare sleutel van de gebruikers wordt verzonden,
* het verkleinen van de hoeveelheid vercijferde tekst die een indringer te pakken kan krijgen en
* het terugdringen van de schade die wordt geleden als een proces uitvalt en de inhoud van het proces in verkeerde handen valt.
Voor dit authenticatieprotocol is de aanname dat Alice en Bob al een gedeelde geheime sleutel hebben afgesproken, Kab. Deze gedeelde sleutel is afgesproken via de telefoon, in levenden lijve of wat dan ook behalve via het (onveilige) netwerk. Dit protocol is gebaseerd op een principe dat geldt voor veel authenticatieprotocollen: een partij stuurt een willekeurig nummer naar een andere partij, deze transformeert het op een speciale manier en stuurt vervolgens het resultaat terug. Deze protocollen worden challenge-reponse protocollen genoemd.
In de voorbeelden wordt de volgende notaties:
* A, B, T zijn de identiteiten van Alice, Bob en Trudy
* Ri's zijn de uitdagingen, waar de subscript de uitdager identificeert
* Ki zijn sleutels, waar i de eigenaar representeert
* Ks is de sessie sleutel<

## Authenticatie op basis van een gemeenschappelijke geheime sleutel

In onderstaande figuur 1 stuurt Alice in bericht 1 haar identiteit A naar Bob. Bob kan niet weten of dit bericht van Alice of van Trudy komt en kiest daarom een uitdaging (een groot willekeurig getal Rb) en stuurt dit ongecodeerd naar Alice in bericht 2. Alice vercijfert het bericht met de sleutel die ze met Bob gemeenschappelijk heeft afgesproken en stuurt de vercijferde tekst Kab(Rb) terug in bericht 3. Wanneer Bob dit bericht ziet weet hij onmiddellijk dat het van Alice komt, want Trudy kent Kab niet en zou het bericht dus niet kunnen produceren.
Bob weet nu zeker dat hij met Alice spreekt, maar Alice weet nog niets zeker. Trudy zou mogelijk bericht 1 hebben kunnen onderscheppen en Rb als reactie hebben verzonden. Om erachter te komen met wie ze spreekt, kiest Alice een willekeurig getal Ra en zendt dit ongecodeerd naar Bob als bericht 4. Wanneer Bob vervolgens met Kab(Ra) reageert weet Alice dat ze met Bob spreekt. Wanneer Alice nu een sessiesleutel (Ks) af wil spreken kan deze via Kab(Ks) naar Bob worden verzonden.
Het protocol in figuur 1 werkt, maar bevat te veel berichten. Een aantal berichten kunnen worden verwijderd door informatie te combineren, zoals in figuur 2. Alice start hier het challenge-response protocol in plaats van te wachten tot Bob dit doet. En terwijl Bob reageert op de uitdaging van Alice, zendt hij zijn eigen uitdaging. Op deze manier kan het hele protocol tot 3 in plaats van 5 berichten worden gereduceerd.
Dit protocol is korter dan het protocol uit figuur 1, maar het is helaas niet veiliger. Trudy kan namelijk onder bepaalde omstandigheden het protocol aanvallen met een zogenaamde spiegelaanval (mirror attack). Trudy kan dan het protocol kraken als het mogelijk is meerdere sessies tegelijk met bob te starten.

## Spiegelaanval

Trudy's spiegelaanval is weergegeven in figuur 3. De attack begint dat Trudy zich voor dat als Alice en ze stuurt Rt. Bob reageert, zoals normaal, met zijn eigen uitdaging. Rb. Trudy kan nu niets meer want ze kent niet Kab(Rb).
Ze kan wel een tweede sessie met Bob starten. Zodanig dat Rb uit sessie 1 gebruikt wordt als de uitdaging van Trudy. Bob versleuteld de uitdaging en stuurt het terug, Kab(Rb). Nu heeft Trudy de ontbrekende informatie. Ze kan nu de tweede sessie afbreken en de eerste oppakken en afmaken. Bob is nu van overtuigd dat Trudy Alice is. Trudy kan nu alles vragen aan Bob, zodanig dat Bob niet in de gaten heeft dat hij niet met Alice communiceert.

## Regels voor een correct authenticatieprotocol

Het ontwerpen van een correct authenticatieprotocol is moeilijker dan het lijkt. Er zijn 4 regels die hierbij helpen. Het protocol kan gekraakt worden, wanneer één van deze regels geschonden wordt.
* Degene die het initiatief neemt moet zich eerst identificeren voordat de ander dat hoeft te doen. In dit geval geeft Bob waardevolle informatie weg voordat Trudy heeft bewezen wie ze is.
* Laat degene die het initiatief neemt en degene die antwoordt verschillende sleutels gebruiken voor het bewijs, ook al betekent dit dat er twee gemeenschappelijke sleutels Kab en K'ab nodig zijn.
* Beide partijen moeten hun uitdaging uit verschillende verzamelingen trekken. De initiator moet bijvoorbeeld even getallen gebruiken en de ander oneven getallen.
* Zorg ervoor dat het protocol bestand is tegen aanvallen waarbij een tweede parallelle sessie gebruikt kan worden waarbij informatie die in de ene sessie verkregen is, wordt gebruikt in een andere.

## Literatuur

Andrew S. Tanenbaum (2003) Authentication Protocols. Andrew S. Tanenbaum, Computer Networks (785 - 798). Amsterdam, The Netherlands: Pearson Education International.