It Is Time for Passwordless Login (2015)
medium.com
medium.com
It is even designed to inherently resist tracking across services by using unique keypairs per service in a clever way. No device identifier is ever shared.
"It superficially appears to offer a user experience similar to SQRL. However, as is every other such system, what's going on is actually far more complex and involves/requires establishing “shared secret” account credentials with the authenticating website. As they explain on their technical page, TiQr is based on the OATH (open authentication) OCRA protocol suite, which was standardized by RFC6287."
I was originally going to complain that anyone who has access to your email now has access to all of your accounts, but upon further thought I don't know how much of a concern this really. First, the vast majority of people use the same password everywhere anyways. Second, most services use your email to reset your password anyways. The only security difference I can think of is if someone uses your email for a password reset and changes your password, it becomes very obvious there might have been a security issue when you try to log in and your password doesn't work. If all someone has to do is follow the link, there's nothing to create that suspicion.
A few other things to consider: - How long does the token emailed to you last for?
- If I send a new token, do previous sessions expire? ---- If so, how can I be logged in via multiple browsers/computers? ---- If not, does an attacker have permanent access to my account if they got access to a single link?
1 hour login email expire time by default, tunable. I'd make it shorter, but it has to get around greylisting.
Sending a login mail and logging in does not affect existing browser sessions.
Only allow a login email to be used one time.
Only allow the last login email sent to be used, not old ones. This and the expiry keep email archives from becoming a problem.
Another thing you could do is set a cookie and have the login link check for the cookie. That makes the link worthless even if the attacker intercepts it. But, it lets the attacker DOS a user and prevent them from logging in by continually requesting new login emails, so you'd probably want to allow previous login emails to be used.
Of course, as a user, how do I know which of these security tradeoffs a site has chosen? It's as bad as using a password and hoping they don't store in clear text. It would be better to have a protocol for login that makes clear choices.
I'm thinking a checkbox saying "Shared Computer" and issues a link with a different session length (or logout on window close) if checked?
Personally I love this idea as managing passwords has become really unwieldy and I don't trust any password manager service. Plus for a few sites that require really bizarre password length/character requirements/etc., I just reset them overtime I want to log in anyway.
I'm definitely in favor of making people create fewer passwords. It's a nuisance that probably has a net negative affect on security by encouraging people to re-use weak passwords.
http://www.howtogeek.com/137466/how-to-always-start-any-brow...
http://www.tekrevue.com/tip/incognito-mode-shortcut/
Firefox similarly offers a -private flag:
https://developer.mozilla.org/en-US/docs/Mozilla/Command_Lin...
Edge does not currently support the same, but there's a UserVoice request on the topic:
https://wpdev.uservoice.com/forums/257854-microsoft-edge-dev...
The generated url-login-tokens on the other hand will be long random strings and harder to impossible to crack.
If you'd want to use two-factor authentication by verifying access to the mailbox, you have to make sure that that (the connection to) the mail box is safe as well, which can potentially be very hard.
The mailbox still is a safe, but only from the moment that the mail has been sent to the moment the page has been requested. Mind that a safe connection to your mailbox does not also mean a safe connection to the server, but that is something that is covered by https+certificates (mostly).
TLS is already an under-spoken requisite of SMTP communications from any webserver doing "Forgot Your Password" workflows. TLS between mail servers is also already a de facto SMTP requirement for most bare minimum spam fighting mechanisms.
Let's not forget that most of the email system is still not encrypted (last time I checked anyway) even though the last mile between your mail server and your client may be.
There are also already a growing number of users that use "Forgot Your Password"-only login (most accidentally; human memory is porous) day to day.
Which is not to say that we shouldn't make email better and more secure, but that the security of our email infrastructure is a red herring of sorts in the larger security discussions of "passwordless" login, given that we are already equally insecure in every website that has a "Forgot Your Password" button that accepts anyone's email address.
But this isn't a password, it's a shared secret. Which IS a good solution (not GREAT, but better), it just shifts the problem into communicating the shared secret. This is where TOTP comes in for most 2FA implementations. This particular scheme just uses email.
That said, I implemented it a while ago, since there's no widely deployed distributed alternative, and as seen with OpenID, attempts to create one will be frustrated by entrenched interests and technical debt.
I still think that Mozilla could have gotten around that problem with Persona if they had built it right into the browser. Pity.
1. Password database 2. Password UX 3. Forgot Your Password UX 4. Forgot Your Password one-time-use token via email/SMS
This drops 1 and 2, leaving 3 and 4 as the remaining security footprint.
(I also think that Persona was heading in the right direction and wish it had received better traction.)
It's a little more inconvenient in the second instance that traditional password entry (given that all my passwords are saved in Chrome), but sounds a lot more secure. Especially since I use a hard gmail password and two factor authentication to access email.
Would be nice to add a 'log out on all machines' link to the email with the password button as well.
The benefit here for you, though, is that you get "free two factor" on these sorts of sites, without those sites having to implement it, simply because you use a two factor email. It's a rising security tide, of a sort.
https://wordpress.org/plugins/passwordless-login/
http://www.cozmoslabs.com/31550-wordpress-passwordless-login...
https://www.npmjs.com/package/koa-signed-url
It introduces the idea of a "signed URL", which can be verified or rejected based on checking a signature query parameter. You can send such a signed URL via email, text message, etc.
Another way could be to send an intent to the right app using some special email header (X-App-Scheme) by the mail app.
The current email login flows force the user to open the mail app and to click the link inside the mail (which then normally opens the app using a registered scheme).
See http://www.drzon.net/passwordless-login-in-mobile-apps/ for what I mean
Instead of logging in by opening a password safe, I now have to log in by opening email... and have a new source of email clutter... and can't share an account with other people... and disposable emails for signing up to less reputable services becomes less of an option.
And what happens when you move email addresses? Or there's a problem with email (delays are common)? A password safe that relies on an asynchronous messaging protocol? Yuck.
Login on new machine (Email + password)
They send me an email with a short code (~6 characters)
I copy/paste those few characters
They remember that machine for ${a-long-time}