# SQRL

SQRL of Secure, Quick, Reliable Login (uitspraak "squirrel" [/ˈskwɝl/] en) is een ontwerp van een open standaard voor het veilig inloggen en authentiseren met websites of apps. De softwareoplossing gebruikt een link die begint met sqrl://, of een QR-code. Hiermee identificeert een persoon zich vervolgens met een code die uniek is per gebruiker en website, zonder dat een gebruikersnaam en wachtwoord hoeft te worden gegeven. Deze methode is ontworpen om brute force aanvallen en datalekken te weerstaan. Het verplaatst de beveiliging van de website of app naar de hardware van de gebruiker. De website hoeft alleen de unieke code op te slaan, als de gebruiker terug komt kan deze bewijzen dat deze dezelfde persoon is als de vorige keer. SQRL is voorgesteld door Steve Gibson van Gibson Research Corporation in oktober 2013 om het authenticatie protocol ter vereenvoudigen zonder een derde partij die mogelijk informatie kan inzien of de gebruiker kan volgen.

## Motivatie

Het protocol is een antwoord op het identiteitsfragmentatieprobleem. Het is een verbetering van protocollen zoals OAuth en OpenID, omdat het geen derde partij nodig heeft. Daarnaast geeft het geen geheimen (zoals een gebruikersnaam of wachtwoord) aan de website of app om te beschermen.
Bovendien is het een standaard die vrij gebruikt kan worden in bijvoorbeeld wachtwoord managers zoals 1Password en LastPass. Nog belangrijker is dat het een vrije standaard is die niet van één organisatie is. Volgens de website van Gibson moet deze robuuste technologie beschikbaar zijn in het publiek domein om de veiligheid en cryptografie te verifiëren en dus niet bewust afgeschermd voor commerciële redenen.

## Techniek

De techniek in SQRL is een toepassing gebaseerd op het werk van Daniel J. Bernstein, Tanja Lange, Bo-Yin Yang, Niels Duif en Peter Schwabe aan de 25519 elliptic curve. Het team van Bernstein heeft een software component gemaakt welke ingezet kan worden om willekeurige informatie om te zetten naar een zogenaamd sleutelpaar dat gebruikt kan worden voor authenticatie door middel van een digitale handtekening.
SQRL gebruikt een keten van deze sleutels. De keten bestaat uit een moedersleutel en één of meerdere 'kinderen'. Een 'kind' wordt dagelijks gebruikt om voor elke website unieke kleinkinderen te maken. Een belangrijke eigenschap van de keten is de onmogelijkheid om op basis van een kind te bepalen wat de moedersleutel is, maar dat er wel altijd een zelfde kind gegenereerd kan worden met dezelfde invoer bij de moeder.
Het kleinkind wordt afgeleid van de dochtersleutel én van de websiteadres waarmee geauthentiseerd wordt. Deze methode zorgt er voor dat er geen ´kleinkind´ sleutelparen bewaard hoeven te worden en dat het publieke deel van de code alleen maar iets betekent voor de website waarmee wordt geauthentiseerd.
De website waarop wordt aangemeld krijgt in basis alleen de publieke informatie van het kleinkind. Het privé deel van de sleutel wordt bij elke aanmeldingspoging opnieuw gemaakt in de software. De website kan met de publieke informatie controleren dat de aanmelder een sleutel heeft uit de bekende moeder-dochter-kleinkind keten, zonder over andere details te beschikken. De authenticatie app hoeft de sleutel niet te onthouden omdat het privé deel opnieuw uitgerekend kan worden.
Mocht het onverhoopt gebeuren dat een 'kind' bekend wordt (iemand steelt de telefoon en het wachtwoord van SQRL), heeft SQRL een mechanisme om een nieuw kind af te leiden van de moedersleutel. Met dit kind worden nieuwe kleinkinderen gegenereerd welke automatisch de plaats innemen van het oude kleinkinderen.
Deze 'herstel na verlies' functie is wel afhankelijk van een speciaal wachtwoord dat samen met de moedersleutel is gegenereerd. Dit maakt het onmogelijk voor een andere partij een nieuw ´kind´ te maken en het maakt de eigenaar van de moedersleutel dus zelf verantwoordelijk voor de beveiliging van de gehele sleutel.

## Implementaties

De ontwikkeling van SQRL is momenteel (februari 2019) nog bezig. Er is een ISAPI-module gemaakt voor integratie in een website, er zijn apps voor Android en iPhone en er is ook een Windows-applicatie.

## Externe link

* Officiële website