100x100 SQRL Logo   Secure Quick Reliable Login
A highly secure, comprehensive, easy-to-use replacement
for usernames, passwords, reminders, one-time-code
authenticators . . . and everything else.
With SQRL (Secure Quick Reliable Login)
you either tap, snap, or click a login page's
QR code and YOU are securely logged in.
The SQRL system (pronounced “squirrel”) revolutionizes
web site login and authentication. It eliminates many
problems inherent in traditional login techniques.
The user experience:
Wishing to login to an online service where an “SQRL” code appears nearby:
  • The user can tap or click directly on the SQRL code to login,
    or launch their smartphone's SQRL app, and scan the QR code.
  • For verification, SQRL displays the domain name contained in the SQRL code.
  • After verifying the domain, the user permits the SQRL app to authenticate their identity.
  • Leaving the login information blank, the user clicks the “Log in” button... and is logged in.
    (A bit of page automation could even eliminate the need to click the “Log in” button.)

Even though it is THAT simple, it is FAR
more secure than any other login solution.
(We'll define exactly what “far more secure” means, below.)

What happened behind the scenes?(This is intended to quickly inform crypto-aware
readers. Complete details are provided below.)
  • The QR code presented near the login prompt contains the URL of the authentication service for the site. The URL includes a securely generated long random number so that every presentation of the login page displays a different QR code. (In crypto circles this long random number is known as a “nonce.”)
  • The smartphone's SQRL authentication app cryptographically hashes the domain name of the site keyed by the user's master key to produce a site-specific public key pair.
  • The app cryptographically signs the entire URL contained in the QR code using the site-specific private key. Since the URL includes a secure long random number (the nonce), the signature is unique for that site and QR code.
  • The app issues a secure HTTPS POST query to the QR code's URL, which is the authentication service for the site. The POST provides the site-specific public key and the matching cryptographic signature of the QR code's URL.
  • The authenticating web site receives and acknowledges the POST query by returning a standard HTTP “200 OK” with no other content. The SQRL app acknowledges the successful submission of the user-signed QR code.
  • The authenticating site has the URL containing the nonce which came back from the login page via the user's smartphone. It also has a cryptographic signature of that URL, and the user's site-specific public key. It uses the public key to verify that the signature is valid for the URL. This confirms that the user who produced the signature used the private key corresponding to the public key. After verifying the signature, the authenticating site recognizes the now-authenticated user by their site-specific public key.
SQRL Public Key Generation and Authentication
Summarizing this for your next cocktail party: “The website's login presents a QR code containing the URL of its authentication service, plus a nonce. The user's smartphone signs the login URL using a private key derived from its master secret and the URL's domain name. The Smartphone sends the matching public key to identify the user, and the signature to authenticate it.”

This simple and straightforward SQRL protocol
yields a surprising array of features and benefits:

Anonymous Identification & Authentication:
SQRL ID:  Visitors to a website are uniquely identified by an absolutely anonymous SQRL ID. Their “SQRL ID” is simply their public key, described above, a 256-bit number. The same visitor always presents the same ID every time they visit the same site. But no two visitors will ever have the same ID. Thus a single website can uniquely and anonymously identify every one of their visitors.
SQRL IDs are both user AND site specific:  Although the same user always presents the same ID to the same site, they present an entirely different ID to every other site they visit. There is NO WAY TO ASSOCIATE the SQRL ID presented to one site with those presented to any other sites. In other words, there is absolutely no cross-site coupling of identity. Users are free to use their SQRL identity anywhere and everywhere because every site receives its own unique SQRL ID.
No annoying account creation: Suppose you wish to simply comment on a blog posting. Rather than going through the annoying process of “creating an account” to uniquely identify yourself to a new website (which such websites know causes them to lose valuable feedback traffic), you can login using your SQRL identity. If the site hasn't encountered your SQRL ID before, it might prompt you for a “handle name” to use for your postings. But either way, you immediately have an absolutely secure and unique identity on that system where no one can possibly impersonate you, and any time you ever return, you will be immediately and uniquely known. No account, no usernames or passwords. Nothing to remember or to forget. Your SQRL identity eliminates all of that.
An important note about anonymity: To be clear, virtually nothing else about the use of the Internet is securely anonymous. A web browser's collection and regurgitation of cookies and other telltale debris, your connection IP address, your ISP, etc. all provide potentially identifying and de-anonymizing data. This SQRL system does not, and is not intended to, circumvent, defeat, or resolve any of those problems. This system simply generates a highly secure persistent “opaque identification token” which is dynamically authenticated to prevent impersonation... and it does so instantly, with startling ease-of-use.
Inherent Protection From Hackers:
Identification vs Authentication:  SQRL-enabled websites have only your unique SQRL ID to disclose, and it is useful only to that single site since every users SQRL ID is automatically unique for every site they visit. There need not be any username or password for sites to have compromised, lost or stolen. Your SQRL ID does not authenticate your identity, it only identifies you to that single website. Authentication requires the SQRL smartphone app to cryptographically sign a long random number and return it with your SQRL ID (your public key). Thus, even if a hacker were to obtain your stored SQRL ID, it is useless for impersonating you—even to that one site—because the private key required to create the signature never leaves your smartphone.
The opportunity for strong anti-phishing countermeasures:  This is significant enough that it has its own page: “How SQRL Can Thwart Phishing Attacks” (page 5 in the link block at the bottom of this page.) SQRL can be used for “same-device” login, where a desktop, laptop, tablet, or smartphone user wishes to login securely on the same device they are using. (This is different than the “cross-device” login we have been examining where an optical QR code is scanned. “Same-device” login is also discussed below.) In same-device login, the IP address of the SQRL login authentication will be identical to the IP address that received the login page's QR code image. This means that a sophisticated website spoofing/phishing attack, which SQRL already makes much more difficult, will be detectable and easily blocked.
“Identity Lock” prevents identity change & allows recovery:  This is also significant enough to deserve its own detailed description page: “The identity lock protocol” (page 4 in the link block at the bottom of this page.) Once a user's identity has been established with a web server, the SQRL client is unable to change that identity. This means that if the worst happened, and a very weak and easily guessed password was used, or a user's phone or desktop was hacked to obtain their identity master key and password, no malicious third party can change the user's online identity to lock them out of their own online accounts. And, moreover, by then loading an a normally offline “Identity Unlock Key”, the true owner of their identity can retire and replace their lost or stolen online identity to essentially take it back from any attacker, rendering their previous identity useless. Please see page 4 for all the details.
No keyboard interaction:  Imagine that you want to login to a computer at an unsafe location such as a library or a hotel. With SQRL, your login occurs without entering any personal credential information into the computer. You provide no username or password that might be captured by a keystroke logger or resident malware. The website issues an “SQRL authentication challenge” in the form of a unique SQRL graphic code. If you have an SQRL smartphone app, it takes up the challenge and sends the website a unique challenge response that can only have come from you. The website then logs you in when you click “Log in” under the still-empty login form. From the standpoint of that computer—and anything it might contain that's attempting to spy on you—you are magically logged in without your credentials ever appearing or passing through. Your smartphone's SQRL application saw the site's SQRL code, instantly identified you to the site, and provided cryptographic proof that the person who just clicked the “Log in” button . . . is you.
No “shared secrets” with websites:  Six-digit time-based authenticators are based upon a cryptographic secret known only (we hope) to your smartphone and the authenticating website. This allows the website and your phone to agree upon which six-digits will be shown at any time. While this has the benefit of always changing, it repeats the username and password problem of needing to always be kept secret . . . which websites continuously demonstrate is beyond them. (And remember, the employees of those websites do have access to your credentials.) Also like passwords, because they are not truly secure, you must employ a separate and unique authentication sequence for every website you use. If this were to become popular and widespread, you would soon be scrolling through hundreds of six-digit numbers to find the right one.
SQRL gives websites no secrets to keep.
Out-of-band authentication:  In the context of an untrusted computer, we mentioned above how website visitors were almost magically logged in without touching the computer's keyboard. This is one aspect of an important security principle known as “out of band.” The principle is that it is generally more secure not to send all aspects of a secure communication through a single channel because the security of that channel may be compromised. Entering your username, password, and one-time password all through the same keyboard is worrisome “all in band” authentication. Difficult though it might be to compromise the security of any single channel, it is vastly more difficult to simultaneously compromise two very different forms of communication. Since SQRL uses a smartphone's connection to the internet, perhaps even a cellular carrier, it avoids reusing most or all of the local computer's channel. Authentication often occurs completely “out of band”, and thus invisible to any intruder monitoring the computer's communications.
Protection From Hostile Authorities:
No third-party involvement:  In this era of pervasive government surveillance and US NSA coercion, who is going to trust any third-party with their identity? Other identity systems and solutions attempt to “federate” trust by creating a role for themselves as a third party with whom you establish a separate trust relationship. Then the authenticating website asks that third party to verify your identity on your behalf. It would be one thing if there were no alternative. But this page, and the pages that follow, demonstrate that secure and practical anonymous identification can use an entirely first-party protocol while delivering extreme ease of use.
Easily scram and recover:  SQRL's inherently stateless operation creates additional security benefits. Imagine that you and your smartphone are be crossing a country's border with potentially nosey or hostile authorities. If you are not comfortable relying upon SQRL's very strong and brute-force-proof (see following pages) password protections, you can simply delete your user account from the SQRL app, or even delete the SQRL app from the phone completely. There will be nothing for any authorities to find. Then, since SQRL's entire state (containing your identity master key, ID lock, etc.) is backed up on a single low-resolution small QR code patch, you can later reinstall the app, retrieve the QR code from your wallet, shoe, the back of your watch, the tattoo on the bottom of your foot . . . or wherever you had creatively hidden it. You scan your master key, apply your password, wait a minute for the deliberately slow import decryption process to complete (which massively retards guessing) . . . and your ability to identity and authenticate yourself to every SQRL-supporting site in the Internet is fully restored.

Secure and practical anonymous identity
authentication can use a first-party protocol
while delivering extreme ease of use.

The LACK of third-party involvement
The use of a third-party “middleman” transfers much of the responsibility for the management of your online identity to an external facility. In an era of secret national security letters compelling the disclosure of whatever the government desires, that's a serious liability (as mentioned above), but it can also be a significant benefit: If your smartphone escapes from your control, you need only tell the third-party to cancel the phone's authentication authority and you're immediately protected from malicious use of your smartphone's identity assertion.
This SQRL system concentrates ALL authentication authority into the smartphone. The benefit is that no one else has the keys to your online identity.  No one.  But the liability is that YOU are then absolutely responsible for maintaining the security of your online identity.

Ultimately, someone has to be responsible for your identity.
Should it be you, or someone else?

This is a serious issue that needed to be addressed. Our solution is to provide the user with a conceptually simple set of tools to dramatically ease the burden of assuming and managing this responsibility. As subsequent pages detail, the system provides extensive cloning, backup, local password protection and reset capability.

Hold on a second . . .  We send the website a signed bunch of gibberish?  That's it?

Yes.  And that's exactly the point.  SQRL provides absolutely anonymous identity authentication (IA). Users are identified only by a random “opaque token” and each unique combination of user and website creates a unique identity token. Thus, every user presents a unique identity to every website they visit. It is up to the user and the website to then (optionally) bind the user's unique SQRL identity to a real-world account on the website.

For example, Amazon's account management might have an option to associate a logged in user with their Amazon SQRL identity. So Amazon would present a unique SQRL code on the account management page. The user simply snaps it with their smartphone's SQRL app and now Amazon can add their SQRL ID to their account. From now on, the user can login to Amazon anywhere with vastly improved security just that easily.

And it would probably work the other way around too: Amazon's login page would present traditional login fields and a SQRL code on the side. An existing Amazon user who is establishing their SQRL identity snaps the SQRL code with their new smartphone app and Amazon replies that it does not recognize the user. If they wish to create a new account, they may do so here, or if they are an existing user, please use traditional login one last time to associate their new SQRL identity with their existing Amazon account.

Defending against the dark forces
Why we prominently display the domain name BEFORE authenticating:  The smartphone has no way of knowing the website the user is visiting. It only receives the domain contained in the QR code displayed by that page. In one of the possible "Evil Website" attacks (discussed on the attacks page), a malicious website pretends to offer an SQRL login for itself (www.evilsite.com), but instead it obtains and displays a login QR code from some other domain (www.amazon.com) where an SQRL user may be known. The SQRL app always identifies and authenticates its user to the domain contained within the (human unreadable) QR code. So an unwitting user, who didn't know the domain they were about to login and authenticate to, could be logging themselves into a session initiated and controlled by the Evil Website, thus allowing the Evil Website to impersonate them.

Note that even in this instance, none of the user's login credentials ever become known to the Evil Website. The Evil Website only gets a spontaneously logged-in session (though that's clearly not a good thing!)

This risk can be easily mitigated, however, simply by having the user's smartphone first prominently display the domain name it will authenticate to only if the user gives it permission to proceed. The user knows they are visiting “www.evilsite.com.” So if their phone asks for permission to login to “www.amazon.com” they just say no.
Trusting the app:  Though it should go without saying, it's better to say it: Until SQRL support is moved into the underlying smartphone OS, and is then curated perhaps more carefully, users will be responsible for choosing and installing an SQRL client into their smartphones. As the SQRL system gains in popularity, it is foreseeable that malicious developers might create malicious applications to steal their users' credentials. This is not a problem that's in any way unique to SQRL. Any sort of identity or password manager needs to be carefully vetted before it is entrusted with important information. The standard advice here is to stick with the herd and go with the solution that's been most thoroughly examined, checked out, and proven.

On the lighter side:
With some prescience, the always wonderful XKCD foresaw a problem that may have already occurred to readers of this page:

Courtesy of XKCD at http://xkcd.com/

Three Ways to Go . . . smartphone optional:
(And we solve the XKCD problem above!) Although the original inspiration for the development of this system was a smartphone scanning a QR code on a website's login page, a small addition to that model enables two more significant modes of operation: Simply make the QR code image also a clickable link to the same URL that's encoded into the QR code. This yields three ways to login:

512-bit-master-key Practical Considerations:

A SQRL follower named Ben Cooper created a very nice
non-technical Illustrated Guide to SQRL. Check it out!

So what's left?

We're JUST getting started!

What we've seen so far are only the broad outlines of the solution, enough to provide an overview of the system's operation to interested parties, to perhaps convince skeptics that such a system CAN operate, and to create a foundation and interest in the further detailed pages that follow.

Among the problems we have solved to create a practical solution, are:

There are workable solutions to every one of those problems, and more. The full implementation of the system protects the user's identities even if their smartphone is stolen and every secret it contains, becomes known.

The following pages continue to describe this SQRL system:

Secure QR Login (SQRL) Documentation:

Jump to top of page
Gibson Research Corporation is owned and operated by Steve Gibson.  The contents
of this page are Copyright (c) 2016 Gibson Research Corporation. SpinRite, ShieldsUP,
NanoProbe, and any other indicated trademarks are registered trademarks of Gibson
Research Corporation, Laguna Hills, CA, USA. GRC's web and customer privacy policy.
Jump to top of page

Last Edit: Variable 'HTTP_LASTMOD' cannot be found
(Variable 'HTTP_AGE' cannot be found
days ago)
Viewed Variable 'HTTP_PERDAY' cannot be found
times per day