Hallo,

Ik was bezig met een 2 step login te maken.
Een 2 step login bestaat altijd uit iets dat de gebruiker weet, zoals een gebruikersnaam/email en wachtwoord, en iets dat de gebruiker heeft. Zoals een telefoon, random reader, vinger afdruk of usb-stick.
Ik dacht dus het volgende te maken:

Inloggen met emailadres en wachtwoord. Als gegevens correct zijn, dan naar stap 2.

Bij stap 2 wordt een code (van bijv. 8 cijfers) gemaakt en in een sessie gezet.
Dan wordt die code versleuteld met rijndael.

De cipher van die 8 cijferige code is redelijk kort, waardoor deze in een QR code past.

rijndael encryptie is symmetrisch. De sleutel van het account staat opgeslagen op de telefoon van de gebruiker van dat account.
Met een app op de telefoon wordt de QR code gelezen, waardoor de app de cipher heeft. De sleutel heeft de app ook en zo wordt de cipher ontsleuteld en verschijnt de 8 cijferige code op het scherm van de telefoon.
De gebruiker vult de cijfercode in op de web pagina op de pc. De code staat ook in de sessie, dus PHP kan controleren of het de juiste code is.

Heeft dit zin?
De rijndael sleutel is altijd hetzelfde voor het account, dus je zou eigenlijk geen 8 cijferige code hoeven te gebruiken om een telefoon te identificeren. Je zou net zo goed de sleutel kunnen laten overtypen van het telefoon scherm naar de computer, maar dan is het weer meer iets dat de gebruiker "weet" en opgeslagen staat op de telefoon, dan dat het iets is dat de gebruiker heeft

Ik wilde dat het telefoon gedeelte per-see zonder internet kon, vandaar de QR code om gegevens uit te wisselen tussen webpagina op pc en app op telefoon.

Als ooit iemand de sleutel uit de telefoon krijgt, maakt het niet eens meer uit of er een cijfercode wordt gevraagd... Iemand hoeft maar even je telefoon te hebben en de sleutel uit het geheugen te kopieren.
--> Zoals een telefoon, random reader, vinger afdruk of usb-stick.

Je gehele onderwerp gaat over het gebruik van een telefoon... hoe wil je dat voor de rest oplossen?

Bijkomend iets: wat als de telefoon nou geen smartphone is...?
>> Een 2 step login bestaat altijd uit iets dat de gebruiker weet, zoals een gebruikersnaam/email en wachtwoord, en iets dat de gebruiker heeft. ... of krijgt toegestuurd.

Gebruiker vult e-mailadres en wachtwoord in en krijgt naar het mailadres (die hij zowel op computer als telefoon kan ontvangen) een willekeurige logincode toegestuurd. Die logincode invoeren is dan stap 2. Na x keer de code fout invoeren kan de gebruiker x minuten niet meer inloggen.

You're welcome ;-)
maak je voor de app gebruik van een framework? zoja, welke?
ik gebruik zelf ionic voor apps. Met ionic kan je de telefoon in de app laten identificeren.

dan kan je dus als de gebruiker zich identificeert een random code laten genereren en naar de server sturen, die je vervolgens kan kopppelen aan de gebruiker, en laten gebruiken om in te loggen.
"De cipher van die 8 cijferige code is redelijk kort, waardoor deze in een QR code past."

In een QR code kan een heel visitekaartje, dus voor de lengte hoeft het geen probleem te zijn, lijkt me.

Via een QR code heeft wel beperkingen
je gebruiker moet een smartphone hebben met de mogelijkheid om barcodes te lezen en moet ook nog de betreffende app kunnen draaien.
Vraag me af wat voor soort site het is, maar in elk geval beperk je de gebruikersgroep.


De werkwijze kan wel, maar dan moet de app op een voorspelbare manier reageren op de code.
Bijvoorbeeld de sleutel is 32 van de app.
Dan zal de barcode 123456 beantwoord worden met het verhogen van elk 2e cijfer met de waarde 3

dus 153759
Waarbij je als phpscript moet weten dat de sleutel 32 is
Eventueel aan te vullen met de beveiliging dat sommige andere cijfers random mogen wijzigen.

Toevoeging op 13/08/2015 13:43:04:

wbt Randy´s opmerking

in Android kun je inderdaad een uniek id van de telefoon opvragen. Los of je een framework gebruikt.
Die sleutel kun je meegebruiken in het unieke antwoord dat de app geeft op een gegeven code.
Ozzie PHP op 13/08/2015 13:18:05

>> Een 2 step login bestaat altijd uit iets dat de gebruiker weet, zoals een gebruikersnaam/email en wachtwoord, en iets dat de gebruiker heeft. ... of krijgt toegestuurd.

Gebruiker vult e-mailadres en wachtwoord in en krijgt naar het mailadres (die hij zowel op computer als telefoon kan ontvangen) een willekeurige logincode toegestuurd. Die logincode invoeren is dan stap 2. Na x keer de code fout invoeren kan de gebruiker x minuten niet meer inloggen.

You're welcome ;-)


Heb ik al aan gedacht, maar mensen gebruiken vaak hetzelfde wachtwoord, dus het zelfde wachtwoord voor hun email. Het emailadres is dan ook nog eens hetzelfde als dat wat je in de login invult op de site.

Eigenlijk zou je gewoon een sms met een code moeten sturen naar een telefoon.
>> Heb ik al aan gedacht, maar mensen gebruiken vaak hetzelfde wachtwoord, dus het zelfde wachtwoord voor hun email. Het emailadres is dan ook nog eens hetzelfde als dat wat je in de login invult op de site.

Ik kan even niet volgen wat je bedoelt. Mijn wachtwoord voor jouw site is 123. Ik vul op jouw site mijn e-mailadres (of gebruikersnaam in) + mijn wachtwoord 123. Vervolgens stuur jij een willekeurige code abc naar mijn mailadres, die ik vervolgens als stap 2 op jouw website moet invoeren.
Randy wil afvangen, dat als jij dezelfde login gebruikt voor de site, als voor je emailadres de "hacker" ook direct in kan loggen op de email om de betreffende code te zien.

Scheelt al iets als de gebruiker niet met zijn emailadres in moet loggen, maar met een gebuikersnaam.
>> Randy wil afvangen, dat als jij dezelfde login gebruikt voor de site, als voor je emailadres de "hacker" ook direct in kan loggen op de email om de betreffende code te zien.

Dat lijkt me vergezocht. Als een hacker het wachtwoord van jouw mailbox weet, kun je beter meteen stoppen.
Klinkt een beetje als symptoombestrijden als je je user systeem verantwoordelijk wilt maken voor de veiligheid van het e-mailaccount van een gebruiker. Natuurlijk is het wel 'veiliger' om in te loggen met een verificatiecode, maar ten koste van veel gebruiksvriendelijkheid. Ik wil namelijk als ik ergens inlog meteen alle features kunnen gebruiken die ik daarbij krijg.
Kortom, het is waarschijnlijk wel de moeite waard om zoiets te bouwen, maar het is beter om zoiets optioneel te maken. De veiligheid van gebruikersaccounts is namelijk zijn/haar eigen verantwoordelijkheid.
Ozzie PHP op 13/08/2015 15:37:59

>> Randy wil afvangen, dat als jij dezelfde login gebruikt voor de site, als voor je emailadres de "hacker" ook direct in kan loggen op de email om de betreffende code te zien.

Dat lijkt me vergezocht. Als een hacker het wachtwoord van jouw mailbox weet, kun je beter meteen stoppen.


Heel veel mensen gebruiken hetzelfde wachtwoord voor de site en email.
Wat heeft de verificatie dan voor zin via email?

Dus zover gezocht vind ik het niet


Eigenlijk zou je gewoon een sms met een code moeten sturen naar een telefoon.


Ook dat is mogelijk via een SMS gateway

Reageren