Hardware authentication tokens Door: Gerben Aalvanger 1.Inleiding Hardware authentication is begonnen met een opmars. Nadat Google in 2011 als een van de eerste internetservices de two-step verificatie beschikbaar heeft gesteld, zijn verschillende grote internetbedrijven (Facebook, Twitter, Dropbox) gevolgd. Met het gebruik van hardware authentication tokens gaat versleuteling weer terug naar waar het ooit begonnen is, met fysieke beveiliging van objecten. De sleutel van vroeger is nu een een stukje hardware. Tegelijk met de terugkeer van het object als vereiste voor authenticatie blijft in de veelgebruikte two-step verificatie ook de kennis van een wachtwoord vereist. In dit paper wordt ingegaan op verschillende vormen van hardware-authenticatie en de technische aspecten hiervan. Zowel authenticatie met als zonder kennis van een wachtwoord wordt besproken. 2. Authenticatievormen Om hardware authenticatie goed te definieeren moet eerst duidelijk geschetst worden in welke vormen authenticatie voorkomt en op welke van deze vormen hardwareauthenticatie betrekking heeft. Authenticatie bestaat uit drie factoren, die op zichzelf of in combinatie gebruikt kunnen worden als een authenticatiemiddel. De drie factoren zijn allen al bekend sinds de oudheid, maar worden in dit digitale tijdperk op een heel ander niveau gebruikt. De eerste authenticatiefactor is kennis, in de oudheid bestond het concept wachtwoord al. Een Romeinse soldaat komt het legerkamp niet binnen als hij het geheime wachtwoord niet weet. Tegenwoordig zien wij deze vorm van authenticatie terug in het invoeren van een wachtwoord voor bijvoorbeeld de mail. De tweede authenticatiefactor is gebaseerd op persoonlijke eigenschappen. De Romeinse soldaat uit het voorbeeld zal ook binnen gelaten worden als zijn beste maat op wacht staat. Hier is namelijk sprake van authenticatie door wie iemand is, in plaats van wat iemand weet. Deze vorm van authenticatie is erg sterk: een wachtwoord kan afgeluistert worden, maar in iemands huid kruipen is nog niet zo eenvoudig. Deze vorm van authenticatie is nu terug te zien in iris-scans of vingerafdrukscans. Op deze vorm van authenticatie wordt in het vervolg van dit verslag niet verder op ingegaan. De laatste authenticatiefactor is gebaseerd op bezit. Deze factor is te vergelijken met de bekende sleutel voor het slot op je voordeur of op je fiets. Hardware authentication tokens maken altijd gebruik van deze vorm van authenticatie. Two-step verificatie (of: two-factor authentication) maakt gebruik van de factoren Kennis en Bezit. 3. Werking van hardwareauthenticatie Hardware authentication tokens kunnen gebruikt worden voor de authenticatie of identificatie van de gebruiker. Hardware authenticatie maakt altijd gebruik van een One Time Password (OTP). Het stukje hardware dat voor authenticatie zorgt, maakt gebruik van een algoritme dat bij elke nieuwe authenticatiepoging een ander wachtwoord gebruikt. Dit is belangrijk, omdat een wachtwoord dat altijd gelijk is, eenvoudig nagebootst kan worden door hackers. Voor het gebruik van een OTP zijn er drie manieren om te werken met een One Time Password: 1. Mathematisch algoritmisch op vorig wachtwoord Deze vorm van het genereren van een wachtwoord is als volgt. Het authentication token heeft een initieele seed, die we s noemen. Na elke keer dat het wachtwoord wordt gevraagt, wordt over het laatst gebruikte wachtwoord een One-Way functie f gedaan, die het nieuwe wachtwoord oplevert. De eerste keer dat het wachtwoord gevraagd wordt, wordt f(s) weergeven, de tweede keer f(f(s)) enz. Deze vorm van OTP gebruik wordt in Linux ondersteunt via het S/KEY OTP systeem. In hardwareauthenticatie komt deze vorm terug bij authenticatiesystemen met RFIDtags 2. Tijdsynchronisatie-mechanisch algoritme Deze vorm van het genereren van een wachtwoord maakt gebruik van de tijd. Afhankelijk van het moment in de tijd genereerd dit algoritme een ander wachtwoord. Deze vorm van OTP authenticatie wordt het meest gebruikt bij hardware authenticatie. Een veelgebruikt algoritme hiervoor is TOTP (Time-based One-Time-Password) algoritme. Dit algoritme is een standaard. TOTP wordt in verschillende 2-factor authenticatiesystemen gebruikt. TOTP is afgeleid van HOTP, maar verschilt slechts hierin dat TOTP in plaats van een counter gebruik maakt van een tijdswaarde. De tijdswaarde TC is gedefinieerd als (unixtime(now) – unixtime(T0))/TS, Hierbij wordt gebruik gemaakt van een stapgrootte TS, zodat er een tijdsmarge is waarin het password geldig is. Zowel server als client kent een secret key K. Als de Client zich wil identificeren bij de server, berekend hij de HMAC(K, TC), waarna deze gereduceerd wordt tot 4 bytes. Van deze vier bytes wordt de eerste bit om praktische redenen altijd op 0 gezet. De server ontvangt de TOTP-waarde van de client en vergelijkt deze met de TOTP van zijn TC, ± 1. Dit voorkomt dat een verhoging van de TC tussen verzenden en ontvangen leidt tot een foutieve login. Bovendien kan het zijn dat de klokken van server en client niet exact gelijk zijn, dit is nu geen probleem. Bekende organisaties als Google en Microsoft maken gebruik van TOTP. KADER: Hoe en waarom werkt HMAC? In HOTP/TOTP wordt gebruik gemaakt van de HMAC: Hash-based Message Authentication code. HMAC is een methode om een hash te genereren die zowel dataintegriteit als authenticatie van een bericht regelt. Voor een webshop die wil controleren dat de juiste gebruiker de juiste items besteld kan zo'n controlehash toegevoerd worden, door HMAC(Key, items) te berekenen. HMAC kan gebruikt worden in combinatie met elke willekeurige hashfunctie, vandaar dat ook gesproken wordt van specifiek HMAC-MD5 of HMAC-SHA1. De HMAC-functie is als volgt gedefinieerd: HMAC (K,m) = H((K XOR opad) | H((K XOR ipad) | m)) Deze functie lijkt overbodig onhandig, omdat een functie HMAC(K,m) = H(K | m) voldoende lijkt. Soortgelijke functies blijken echter gevoelig voor length-extention attacks, of ze hebben andere onveilige plekken. De binnenste hash zorgt voor een maskering van het tussenresultaat. De opad en ipad zijn constanten, die zorgen voor een verschil tussen de inner en outer key. Opad en ipad zijn gekozen zodat zij een grote onderlinge hamming-distance hebben en de keys dus minder op elkaar lijken. De veiligheid van het algoritme is ook gegarandeerd zonder de opad en ipad. 3. Challenge type OTP Deze vorm van OTP-generatie is net als de eerste vorm een mathematisch algoritme. Het wachtwoord dat gegenereerd wordt in challenge-OTP is gebaseerd op een identiteitsvraag van de server en een tegenvraag van de client. De server en de client kiezen beide een willekeurig getal sc en cc en kennen beide een key K. De server stuurt zijn getal naar de client, die antwoord met het sturen van cc en hash(cc + sc + K). De server kan nu bevestigen dat k juist is, omdat hij cc en sc weet. De servers stuurt naar de client hash(sc + cc + K), en de client kan bevestigen dat de server inderdaad kennis heeft van K. Beide systemen weten nu dat ze communiceren met een geauthenticeerd station. 4. Gebruik van Hardware Authenticatie Google authenticator, RSA SecurID en de Random Reader van Rabobank maken gebruik van een vorm van hardware authenticatie. Al deze authenticatiemethoden zijn verschillend. Om een goed beeld te krijgen van hardware authenticatie worden een XTAL authenticatievormen hieronder besproken. Google Authenticator Met Google Authenticator is behalve een wachtwoord en inlognaam ook het bezit van een specifieke smartphone nodig. Google Authenticator vraagt eerst om de logingegevens, daarna stuurt hij een 6-cijferige code, die ingevoerd kan worden op de site. De 6-cijferige code wordt gegenereerd met behulp van het ingevoerde wachtwoord en het tijdstip/een teller. Met behulp van HMAC-SHA1 wordt een lange hash gemaakt, die teruggebracht wordt tot 6 cijfers. Als het mobiele device gehackt is, zijn man-in-the-middle aanvallen mogelijk op het systeem van Google Authenticator. RSA SecurID RSA SecurID is de marktleider op het gebied van hardware authenticatie. Ongeveer 70% van de hardware authenticatiedevices komt bij RSA SecurID vandaan. RSA SecurID levert een token, die elke 60 seconden een nieuwe token genereerd, gebaseerd op tijd en een seed van 64/128 bits. Deze seed is bekend bij RSA SecurId. Als een gebruiker wil inloggen, voert hij zijn unieke ID en wachtwoord in en de code die op zijn scherm staat. Via de algemene database van RSA kan gekeken worden of op dit tijdstip met die seed de juiste code gegeven is. In tegenstelling tot Google Authenticator kan een RSA SecurID device niet zomaar voorzien worden van een trojan, die de code verklapt, daarom is RSA SecurID veiliger dan Google Authenticator. De RSA SecureID is in opspraak gekomen, toen de database gehackt is. Een groot aantal seeds en het algoritme zijn toen buitgemaakt. Hier ligt een groot gevaar van de hardware authenticatietokens. Als de seeds bekend zijn, is het hele gedeelte van de hardware niet meer nodig. Nu is enkel het wachtwoord nog geheim. RSA SecureID maakt gebruik van het principe 'security door obscurity', in plaats van Kerkhoffs' 'veiligheid in de key alleen'. Nu één hacker het algoritme kent, kan hij lekken hierin zoeken, maar het publiek kan deze niet zoeken om ze te fixen. Op RSA SecurID is ook verschillende malen kritiek geweest, zo zouden de tokencodes niet geheel random gegenereerd worden en zouden er teveel collisions zijn. Random Reader van Rabobank De Rabobank gebruikt voor internetbankieren ook een hardware authenticatie token. De random reader van VASCO. In tegenstelling tot de vorige besproken authenticators heeft deze reader geen unieke seed. De unieke informatie bevind zich allemaal in de pinpas van de persoon die wil internetbankieren. De pinpas bevat de pincode, pasnummer en rekeningnummer. Als een transactie plaatsvind, genereert de transactieserver een willekeurig getal van 8 cijfers. Na invoer van de pincode in de reader, voert de gebruiker ook deze 8 cijfers en het transactiebedrag in. De reader genereert nu met behulp van deze informatie en met de huidige tijd een nieuw nummer, dat ingevoerd moet worden bij de transactie. Behalve transacties kan ook ingelogd worden bij internetbankieren. Hiervoor hoeft de gebruiker geen bedrag op te geven, maar wel een gegenereerde code van 8 cijfers op basis van een random getal en informatie van de kaart. Ook moet dan de pincode gegeven worden. Transacties zijn extra beveiligd, omdat de gebruiker niet via een phishingsite meer geld kan overmaken dan hij denkt te doen. Als een hacker het bedrag wil verhogen, dan zal dit bedrag ook ingevoerd moeten worden in de random reader. Het exacte algoritme is niet bekend bij het publiek, ook hier wordt gebruik gemaakt van 'security door obscurity'. RFID authenticatie In tegenstelling tot de andere genoemde authenticatiemiddelen maakt RFID (Radio Frequency Authentication) geen gebruik van de gebruiker die een numerieke code moet overbrengen. De RFID-tag zelf zorgt voor de communicatie tussen zichzelf en het authenticatieplatform. Er wordt onderscheid gemaakt tusssen twee soorten RFIDchips: read-only of read/write. Voor beide vormen van RFID-chips wordt hieronder een protocol beschreven die de authenticatie afhandeld met behulp van symmetrische encryptie. RFID authenticatie is een erg lastig probleem, omdat de draadloze communicatie afgeluisterd kan worden. Het eerst beschreven protocol zal theoretisch kwetsbaar zijn in de privacy en in security, het tweede protocol heeft hier praktisch geen last van. Protocol 1: Het eerste protocol voor RFID authenticatie maakt gebruik van het in hoofdstuk 3 genoemde mathematische-chaining principe. Het protocol is in 2003 door Ohkubo, Suzuki en Kinoshita gepubliceerd. Voor het gemak noemen we dit protocol in het vervolg het OSK-protocol. Het OSK-protocol kent een station (S) en een tag (T). In de tag is een code si opgeslagen. Op het moment dat de tag een bericht van een station ontvangt, antwoord de tag met het opsturen van zijn M = g(si). De server gaat nu op zijn beurt de hele tabel van mogelijke tags met hun chains af, om te berekenen welke tag gereageerd kan hebben met dit antwoord. In het geval dat enkel de eindpunten van de chains opgeslagen zijn, kost dit dus O(mn) tijd, waarbij m de lengte van de chain is en n het aantal chains. Een mogelijke oplossing voor deze O(mn) complexiteit is het introduceren van tussenpunten: als precomputatie berekent een station alle m*n elementen en slaat van elke chain een aantal tussenpunten op. Met het gebruik van deze lookup table kan een complexiteit van O(n) bereikt worden ten koste van opslaggeheugen in het station. (Avoine and Oechslin) Het OSK-protocol heeft nog enkele tekortkomingen: een tag kan afgeluisterd worden en vervolgens kan de reactie van de tag geimiteerd worden en op deze manier kan authenticatie verkregen worden. Dit probleem wordt opgelost door een aanpassing aan te brengen in het protocol, hierbij wordt een random challenge toegevoegd, waarbij nu M = g(si XOR r) geld. Nu kan de tag enkel geimiteerd worden met een gelijke challenge. Het grote voordeel van dit OSK-protocol is het feit dat een bezitter van een RFID-tag niet getraced kan worden doordat hij voortdurend antwoord met zijn identificatienummer. In plaats hiervan antwoord hij telkens met een nieuwe waarde uit zijn hashchain. Deze waarde kan niet zonder bijkomende kennis tot een specifieke RFID-tag teruggebracht worden. Protocol 2 Het tweede protocol is een stuk geavanceerde dan het eerst beschreven protocol. In dit protocol heeft de tag slechts één waarde opgeslagen, van tag i is dit ti. Doordat ti wisselt per geslaagde check-in poging, is de privacy gewaarborgd. Daarnaast geldt dat de authenticatie van zowel server als clientside gedaan wordt. Dit gebeurt doordat challenges over en weer gestuurt worden, die de ander dient te beantwoorden. Berichten kunnen geblokkeerd worden door een DoS aanval, maar omdat de server ook de oude waarden van si en ti onthoud, zal dit geen probleem zijn. In tegenstelling tot de eerder besproken hardware authenticatiemethoden wordt RFID authenticatie niet gebruikt met 2-factor authenticatie. Hierin vervangt de RFID dus helemaal de authenticatie, in plaats dat het een extra laag authenticatie levert. In het volgende hoofdstuk zal een apart gedeelte komen met gevaren voor RFID authenticatie, omdat hierin veel valkuilen zitten. 5. Gevaren in Hardware Authenticatie Hardwareauthenticatie heeft verschillende gevaren in zich. Omdat hardwareauthenticatie in veel gevallen samen gaat met het bekende passwordauthenticatiesysteem, zijn verschillende gevaren van hardwareauthenticatie voorkomen. Te denken valt aan het stelen van het hardwaredevice. De toegang is op dat moment nog volledig toegesloten voor de dief. Voor RFID-tags geld dit echter niet, daarom zal in dit hoofdstuk apart ingegaan worden op 2-factor authenticatiegevaren en RFID-authenticatiegevaren. In dit laatste deel zal ook rekening gehouden worden met het versturen van data over een onderschepbaar medium en met het simuleren van het zijn van een geldig serverstation. Allereerst zal de veiligheid van een stuk hardware zelf onder de loep genomen worden: kan hardware nagebootst worden of uitgelezen worden? Aanvallen op de hardware Voor een smartcard zoals deze gebruikt word voor je pinpas en je simkaart is een stevige beveiliging nodig om indringers buiten te houden. Een smartcard bevat geheugen cpu en contactpunten. Een indringer heeft er belang bij om te weten hoe een smartcard exact in elkaar zit. Helaas voor de eenvoudige indringer: een smartcard is 'tamper resistant', resistent tegen 'tampering', indringers. Een 'tamper resistant' smartcard valt echter niet te bestempelen als 100% veilig. Er bestaan technieken om met behlp van zuren en andere chemische stoffen toegang te krijgen tot het CPU. Daarnaast zou met differential power analysis gemeten kunnen worden wat de private key van de versleuteling is. Zulke zware aanvallen zijn echter niet heel realistisch. Ook RSA SecurID claimt dat zijn tokens tamper resistant zijn. Ook RFID Tags kunnen tamper resistant zijn. Door tamper resistance kan een eenvoudige aanval op de hardware afgeslagen worden. Een onderdel van tamper resistance is vaak het selfdestruction: als een poging gedaan wordt om iets uit te lezen, vernietig je de kaart zelf ook. 2-factor authenticatiegevaren Het meest voor de hand liggende gevaar van de 2-factor authenticatie is het kwijtraken van je hardware token. Dit heeft niet automatisch een ongeoorloofde authenticatie van de vinder van het token tot gevolg. Op dat moment houd de password protected tweede laag van authenticatie de inbreker tegen. Een reeël gevaar van de 2-factor authenticatie zijn de phishingsites. Een gebruiker die niet goed oplet en raobank.nl ipv rabobank.nl intoetst in zijn browser kan zomaar op een phishingsite terecht komen. Als de gebruiker een transactie denkt te doen bij de rabobank, kan deze transactie in werkelijkheid door de phisher gecontroleerd worden. De aanvallen die dit ook kunnen zijn 'man-in-the-middle', 'man-in-the-browser' en keyloggers. Ondanks deze aanvallen is 2-factor authentication niet nutteloos, verschillende aanvallen kunnen worden afgeslagen door middel van 2-factor authentication. Te beginnen bij het simpele wachtwoord aflezen. Daarnaast moeten de genoemde aanvallen geavanceerder zijn dan wanneer er geen gebruik gemaakt wordt van 2factor authentication. RFID-authenticatiegevaren RFID authenticatie heeft verschillende gevaren, deze zitten in de privacy en in de security. Wat betreft privacy is het van belang dat er geen informatie van de gebruiker uit de tag lekt en dat de tag niet achtervolgt kan worden. Het is niet de bedoeling dat iemand weet dat jij met je RFID-tag elke dag om 12 uur incheckt. Wat betreft de security zijn er een zes verschillende gevaren. Dit zijn: – Iemand kan zich voordoen alsof hij jou tag is, zonder dat hij je communicatie ziet – Iemand kan aan de hand van eerdere authenticaties een succesvolle authenticatie doen – Iemand kan berichten vervormen – Iemand kan met een DoS berichten blokkeren – Iemand kan voorspellen/achterhalen wat er gebeurt (is) met jouw tag na het zien van één of meerdere communicaties – Iemand kan zich voordoen als een server/station Deze zes gevaren worden allen opgevangen door het tweede beschreven RFIDprotocol. Het eerste protocol kan met zijn aanpassing redelijk goed overweg met deze zaken, maar de laatste twee gevaren kunnen niet voorkomen worden met dit eerste protocol. Het protocol is dan ook ontwikkeld voor de privacy en is minder gericht op veiligheid. Daarnaast is het gevaarlijk dat een RFID-token gestolen kan worden, op dat moment moet in de server aangegeven kunnen worden dat een token niet meer voldoet, deze moet eenvoudig gewist kunnen worden uit de database. Dit is echter geen groot probleem, de tijd tussen verdwijnen van de tag en het wissen van de token is echter wel een probleem. 6. Samenvatting Hardware authentication tokens werken niet op een heel eenvoudige manier en veel bedrijven die authenticatie tokens leveren, vertellen hun algoritme niet uit veiligheidsoverwegingen. Met behulp van one time passwords geeft een hardware authentication token een hogere veiligheid dan een gewoon wachtwoord/gebruikersnaam combinatie. Met behulp van het TOTP van Google Authenticator kan veilig ingelogd worden, mits de app veilig is op de smartphone van de gebruiker. RFID authenticatie bevat naast authenticatiegevaren ook gevaren in de privacy, hiervan hebben we een protocol beschreven. Smardcards zijn tamperresistant gemaakt, om het uitlezen van de hardware onmogelijk te maken. 7. Bronnen: [1] OWASP: testing multiple factor authentication [2] Gildas Avoine and Philippe Oechslin, A Scalable and Provably Secure Hash-Based RFID Protocol [3] Boyeon Song, RFID Authentication Protocols using Symmetric Cryptography [4] Mudge and Kingpin, Initial Cryptanalysis of the RSA SecurID Algorithm [5] Smart Card Alliance, Strong Authentication Using Smart Card Technology for Logical Access [6] Google, Google Authenticator, Google.code [7] Wikipedia, One Time Password [8] IETF, TOTP: Time-Based One-time Password Algorithm [9] IETF, HOTP: Keyed-Hashing for Message Authentication
© Copyright 2024 ExpyDoc