Is dit deze beveiliging de moeite waard?
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.
Gewijzigd op 13/08/2015 12:29:50 door Mark Hogeveen
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...?
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 ;-)
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.
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 ;-)
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.
Gewijzigd op 13/08/2015 14:23:23 door Mark Hogeveen
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.
Scheelt al iets als de gebruiker niet met zijn emailadres in moet loggen, maar met een gebuikersnaam.
Dat lijkt me vergezocht. Als een hacker het wachtwoord van jouw mailbox weet, kun je beter meteen stoppen.
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.
Gewijzigd op 13/08/2015 15:43:27 door Richard Snijders
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.
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
Quote:
Eigenlijk zou je gewoon een sms met een code moeten sturen naar een telefoon.
Ook dat is mogelijk via een SMS gateway
Gewijzigd op 13/08/2015 16:14:56 door Randy vsf
>> Wat heeft de verificatie dan voor zin via email?
Dan zit dáár dus de (gebruikers)fout. Stompzinnigheid van een gebruiker kun je niet tegengaan.
Als een hacker het wachtwoord van de mailbox heeft, dan kan hij dus ook makkelijk het wachtwoord van de site verkrijgen. Als je als developer er rekening mee moet gaan houden dat iemands mailbox misschien is gehackt, dan kun je maar beter per direct stoppen met programmeren, want dan kun je niks meer fatsoenlijk beveiligen.
Er zijn genoeg sites met gevoelige informatie die gebruik maken van zo'n soort systeem.
Dus om te zeggen dat die mensen dan per direct moeten stoppen met programmeren is een beetje krom :)
Digid geeft je ook de keuze om voor de veiligheid nog eens met SMS te bevestigen
Gewijzigd op 13/08/2015 16:19:09 door Randy vsf
Als je iemand een mail stuurt dan moet je er vanuit kunnen gaan dat die alleen wordt gelezen door de ontvanger en niet door een hacker. En als de hacker al zover is dat hij kan inloggen in de site, dan kan hij waars. ook de 2 staps verificatie uitschakelen of het tel.nr. wijzigen enz. Lijkt me lastig om daar allemaal rekening mee te houden.
Maar stel dat je een verstandige gebruiker bent, en je gebruikt een verschillend wachtwoord voor de site om in te loggen, en je email.
Om dan toegang tot het account op de site te krijgen, heb je 2 verschillende wachtwoorden nodig (van site, en van email)
Je kunt dan net zo goed bij registratie of accountinstellingen op die site 2 wachtwoorden in laten vullen, en dan bij de login ook die 2 wachtwoorden vragen. Dan staat het helemaal los van een email.
(En natuurlijk gebruik je niet het wachtwoord van je email als één van die 2 wachtwoorden)
Het komt er dus op neer dat je gewoon een login hebt met een extra wachtwoord.
Maar goed.
Weet iemand hoe je een SMS gateway kunt opzetten? Ik ga er van uit dat je dan via een ander bedrijf een sms moet laten versturen tegen betaling? (Want het lijkt me natuurlijk raar als je gratis kunt sms'sen).
Of kan het wel gratis?
Gewijzigd op 13/08/2015 17:44:43 door Mark Hogeveen
Euh ... ik snap niet wat je bedoelt. Om in te loggen heb ik alleen het wachtwoord van de site nodig, niet van de mail.
>> Het komt er dus op neer dat je gewoon een login hebt met een extra wachtwoord.
Nee dus.
Quote:
Ik ga er van uit dat je dan via een ander bedrijf een sms moet laten versturen
Je kunt ook zelf gaan lopen pielen met een simkaart en die aansturen etc. Via bedrijf sowieso makkelijker.
Quote:
Of kan het wel gratis?
Als het een stabiel netwerk moet zijn en dus iets waar je van op aan kan, zou ik niet gaan zoeken naar iets gratis.
Deze biedt bijvoorbeeld iets gratis aan: http://www.earthsms.net/
Maar heel degelijk komt het op mij al niet over.