Author

Topic: Could a Bitcoin wallet replace online passwords? (Read 1627 times)

legendary
Activity: 1708
Merit: 1036
To mitigate these risks one could implement the following ideas:
1. 2FA.
2. Still require a (non-trivial) username to be manually entered with each login. Users would be educated to not store their usernames with their master password. (In essence usernames _are_ another password, if you keep yours private.)
3. A spin on the 2FA idea would be to have a multi-sig solution, where you have two security apps that need to sign to gain access, each stored separate from one another. For example, one could be stored in a secure cloud location and another on your desktop, or one on your phone and the other on a laptop.  

I think that what you have in mind would make the whole password thing seamless and 'painless'.

Personally I use Keepass to keep all my strong passwords and this is linked to Chrome through the extension so it automatically logs into sites. Sites offering 2FA needs the additional code from either the google/auth apps on my phone. Keepass runs from a USB drive and the 2FA's on my phone so stored in 2 different locations.

This comes close to what you are explaining but it might be way too complex for the average Joe so your solution and or idea would be great as it would make the whole password process painless.


Thanks; how do you like the Keepass, any complaints with it? My only objection to solutions like it is that I'm a cheapskate and Keepass typically means carrying a USB drive. Hardware generally costs something, whereas software is often free (if you aren't picky).
sr. member
Activity: 336
Merit: 251
To mitigate these risks one could implement the following ideas:
1. 2FA.
2. Still require a (non-trivial) username to be manually entered with each login. Users would be educated to not store their usernames with their master password. (In essence usernames _are_ another password, if you keep yours private.)
3. A spin on the 2FA idea would be to have a multi-sig solution, where you have two security apps that need to sign to gain access, each stored separate from one another. For example, one could be stored in a secure cloud location and another on your desktop, or one on your phone and the other on a laptop. 

I think that what you have in mind would make the whole password thing seamless and 'painless'.

Personally I use Keepass to keep all my strong passwords and this is linked to Chrome through the extension so it automatically logs into sites. Sites offering 2FA needs the additional code from either the google/auth apps on my phone. Keepass runs from a USB drive and the 2FA's on my phone so stored in 2 different locations.

This comes close to what you are explaining but it might be way too complex for the average Joe so your solution and or idea would be great as it would make the whole password process painless.
legendary
Activity: 1708
Merit: 1036
A few more afterthoughts on my proposal. On the one hand it removes passwords from online systems; however it puts all your eggs in one basket. A thief who obtains your password and the security software (holding the private key) you are using to log into online systems would have open access to all your accounts that could not be shut off without your talking to each online sites' reps and jumping through hoops to get them to lock down the account.

This would be exacerbated if the security software maintained an accessible list of sites that it records public keys for (to prevent spoofing) - in other words, a list of all the places where you had an account. A thief who obtained your security software and password for it would not only be able to log into all your accounts, he'd know exactly where those accounts were located. Not good.

To mitigate these risks one could implement the following ideas:
1. 2FA.
2. Still require a (non-trivial) username to be manually entered with each login. Users would be educated to not store their usernames with their master password. (In essence usernames _are_ another password, if you keep yours private.)
3. A spin on the 2FA idea would be to have a multi-sig solution, where you have two security apps that need to sign to gain access, each stored separate from one another. For example, one could be stored in a secure cloud location and another on your desktop, or one on your phone and the other on a laptop. 
legendary
Activity: 1708
Merit: 1036

There's a good summary here - the comments are worth a read, too.
http://pilif.github.io/2008/05/why-is-nobody-using-ssl-client-certificates/

Yep, this is very similar to what I'm proposing. The only real difference I can see is in my suggestion to use a encrypted (password protected) bitcoin wallet with this added functionality. Which speaks to his complaint that the current certificate process is browser-dependent.

As the author mentions, the security tool should have a convenient and easily understood way to list out all the online systems you have set up authentification with, so you can terminate (or modify) the login credentials as needed. Just put things in plain language and make it simple to use, which should be an obtainable goal.

The requirement for a password on the security tool on your own computer/phone addresses the point in the first comment about having possession and knowledge to gain access. The security for that one password would need to be extremely high though, as hackers would have access to all your accounts if they could obtain your private/public keys and that one password. So that would need to be addressed carefully.

EDIT: Perhaps a good solution would be to use 2FA in tandem with this approach, at least for financial systems and others you would want to be the most strongly secured. That way even if you had your password stolen you'd still be OK, in principle.
legendary
Activity: 1708
Merit: 1036
The beauty of a username password authentication is simplicity. I don't need to carry anything with me to log into my account. As soon as I need to carry something else with me to login, I would prefer it to be an app on my phone, and there is a nice Google authenticator app to do just that. Using a bitcoin wallet to replace online password is possible, but is it practical? I think username+password+2FA works very well.



Hmm... my problem is that I _do_ need to carry something around with me to log in with passwords, and be secure with my accounts. It's standard advice to use a different password with every online system so hackers stealing one set of passwords can't use them on your accounts on other sites. And passwords should be fairly long and not be drawn from a dictionary. And then there are the systems that make me change my password every 90 days.

The upshot is there is no way I can remember all my unique, long, gobbledegook, varying over time, passwords. So I wind up having to store all my passwords in a secure manner, and then carry them around with me so I can pull up the correct password for each site. A seamless authentification as described above would be lovely for me and reduce a lot of risk.

(I use 2FA as well where possible and appreciate the added security it provides, though I've heard it can be defeated. But it doesn't eliminate the rigamarole with passwords. It adds to the complexity of the situation.)
hero member
Activity: 672
Merit: 508
LOTEO
The beauty of a username password authentication is simplicity. I don't need to carry anything with me to log into my account. As soon as I need to carry something else with me to login, I would prefer it to be an app on my phone, and there is a nice Google authenticator app to do just that. Using a bitcoin wallet to replace online password is possible, but is it practical? I think username+password+2FA works very well.



This simplicity is also the weakness of the system. Passwords are usually short and consist of real words or simple number combinations.  It used to be simple years ago, but today you have 100+ accounts for every website and you have to remember each password or use a password manager. I think this proposal could make life easier for many users.
hero member
Activity: 672
Merit: 500
The beauty of a username password authentication is simplicity. I don't need to carry anything with me to log into my account. As soon as I need to carry something else with me to login, I would prefer it to be an app on my phone, and there is a nice Google authenticator app to do just that. Using a bitcoin wallet to replace online password is possible, but is it practical? I think username+password+2FA works very well.
sr. member
Activity: 352
Merit: 250
https://www.realitykeys.com
The real-world implementation of the keypairs-instead-of-passwords idea is client-side SSL certificates. The ability to do this has been in servers and browsers since forever.

Unfortunately the user experience has generally been a massive PITA, with the result that they're mostly confined to corporate or government systems where the security-conscious IT Department can mandate their use and the users have to suck it up. A lot of these problems are probably fixable, but as with bitcoin, the UX issues involved in generating keys and storing them securely without bollocksing it up aren't trivial.

There's a good summary here - the comments are worth a read, too.
http://pilif.github.io/2008/05/why-is-nobody-using-ssl-client-certificates/

Thanks, I'll have to dig into this. I figured I wasn't treading new ground, just can't figure out why it should be so difficult.

The depressing thing about this is that the tag (for creating keypairs on the browser and sending the public key to the server) has been around since 1996, but here we are in 2015 and we're still waiting for something without horribly broken usability.

If some smart marketer can turn the whole bitcoin-technology-but-not-bitcoin hype into a way to get this old technology actually usefully adopted that would be a huge win... We should tell people Satoshi invented a basic authentication logout button while we're at it...
legendary
Activity: 1708
Merit: 1036
The real-world implementation of the keypairs-instead-of-passwords idea is client-side SSL certificates. The ability to do this has been in servers and browsers since forever.

Unfortunately the user experience has generally been a massive PITA, with the result that they're mostly confined to corporate or government systems where the security-conscious IT Department can mandate their use and the users have to suck it up. A lot of these problems are probably fixable, but as with bitcoin, the UX issues involved in generating keys and storing them securely without bollocksing it up aren't trivial.

There's a good summary here - the comments are worth a read, too.
http://pilif.github.io/2008/05/why-is-nobody-using-ssl-client-certificates/

Thanks, I'll have to dig into this. I figured I wasn't treading new ground, just can't figure out why it should be so difficult.
legendary
Activity: 1708
Merit: 1036

Your idea is very interesting. BitID is a bit like that, but I think you want a level beyond that. The system you mention is based on public key cryptography as I understand it, how does the blockchain come into play? 

This is how I understand it: If all sites would use the same chain, I'll call it Keychain for now. The network would be decentralized and sites could simply query the keychain. The system would not rely on a server. You can use the same keys for all the sites you want to use. You simply have a keychain private key, that you use to generate a keychain public key or keychain address.  Singing is then the authentication.
Did I understand correctly?



I don't think a blockchain is needed, just a common cryptographic method between the security app and the online system. Before I went to sleep last night I realized that the security would need to be 2-way, to prevent hackers from spoofing an online site and tricking your security app into providing login access to the hacker. So the system would work like this:

1. You log into your security app on your own computer (or tablet/phone/whatever - could even be online for convenience), to get it running.
2. You register for an account with somebody, say, Fidelity. You provide a public key from your security app (modified bitcoin wallet or something similar).
3. Fidelity provides a public key back to your app which is retained by it for future use.
4. Later, you visit "fidelity.com"; concurrently your security app sends a random code to the Fidelity site "2F2asF23".
5. The Fidelity site signs a message using the code back to your security app with the public key you have on file for Fidelity proving the site is the correct one (not a spoofed "F1delity.com" site or something.) The one-time code only has a valid lifespan of a few seconds, BTW.
6. Fidelity's signed response also has a one-time random code back to your app: "8Gjs9Fu9".
7. Your app then signs a message with the public key for your Fidelity account back to Fidelity with the one-time code to authenticate you. As above, the one-time code only has a few seconds lifespan.
8. You are automatically logged into the Fidelity website. The whole sequence was invisible to you, except for the original login to the security app on your own computer.
sr. member
Activity: 352
Merit: 250
https://www.realitykeys.com
The real-world implementation of the keypairs-instead-of-passwords idea is client-side SSL certificates. The ability to do this has been in servers and browsers since forever.

Unfortunately the user experience has generally been a massive PITA, with the result that they're mostly confined to corporate or government systems where the security-conscious IT Department can mandate their use and the users have to suck it up. A lot of these problems are probably fixable, but as with bitcoin, the UX issues involved in generating keys and storing them securely without bollocksing it up aren't trivial.

There's a good summary here - the comments are worth a read, too.
http://pilif.github.io/2008/05/why-is-nobody-using-ssl-client-certificates/
hero member
Activity: 672
Merit: 508
LOTEO
Hi everyone,
For the past few months I've been brainstorming an idea involving blockchain technology to greatly improve a common online activity, but I'll say no more about that for now. In the course of my designs (and redesigns - lots of crumpled up paper in the wastebasket), quite a few ideas have been fermenting and budding off on the side. Here's one of them.

It's clear that there is something of a crisis going on with password-based online security systems. Over and over we're reading about hacks of major organizations with up to millions of passwords lost and all the trouble that implies. But what if an online organization could secure user's accounts without the bother of storing a password? I think this is possible with blockchain technology.

As I see it, the method would look like this: When you signed up for an account, the online system would ask for a public key, not a password. You would provide it, and then whenever you logged into the system, it would generate a one-time small random character string. Your bitcoin wallet (or something similar) would provide a signed message using the public key and the character string. You provide the signed message back to the online system, proving you are the owner of the public key, and it logs you in.

So instead of 27 pages of login information to scores of different online systems (actual example for myself!), you'd just need a single strongly secured bitcoin client on your own computer to keep safe. Hackers could steal public keys all they want, but they wouldn't be able to log into anything anywhere without providing signed messages proving their ownership of the keys. There would be no online password information that could be stolen, compromising your accounts.

And this could all be automated, so that once you signed into your bitcoin client (which need not actually have any bitcoins stored in it), as  you visit any site requiring login it could just send the random character string via API to your client, which would provide the signed message back automatically without so much as a press of a button from yourself. Logging in to as many sites as you wanted using the client would be completely invisible and seamless.

The one big downside to this approach is that you would truly be in control of your own accounts - no one could save you if you lost the password to your bitcoin client or lost the client and all backups of the keys. Which is just how bitcoin works now so we should be familiar with that concept.

What does everyone think? Am I overlooking any technical or methodological flaws? Anyone want to take this idea and run with it? (I'm not a programmer but the work involved doesn't strike me as treading much new ground or being terribly complicated.) Even if a good chunk of the population didn't want to trust itself to safely maintain their own PW/keys (which is understandable), the benefits for those of us who do would be huge, as well as for organizations dealing with password theft. Recent articles highlight the problem of relying on passwords but the security industry seems to be simply trading passwords for other technologies that are just passwords in a different form.

I'd vastly prefer this signed-message approach over systems that purport to scan eyes or fingerprints, with the inevitable scanning errors and potential (over a lifetime) for injuries that would lock you out of your accounts, not to mention potential for criminals to simply obtain your fingerprints, etc. by many methods and mold a finger from a high-res 3D printer or something. (Imagine being unable to access any of your financial accounts for a couple weeks while waiting for a burned finger to heal...)

Your idea is very interesting. BitID is a bit like that, but I think you want a level beyond that. The system you mention is based on public key cryptography as I understand it, how does the blockchain come into play? 

This is how I understand it: If all sites would use the same chain, I'll call it Keychain for now. The network would be decentralized and sites could simply query the keychain. The system would not rely on a server. You can use the same keys for all the sites you want to use. You simply have a keychain private key, that you use to generate a keychain public key or keychain address.  Singing is then the authentication.
Did I understand correctly?

legendary
Activity: 1135
Merit: 1166
Sounds like NameID: https://nameid.org/ (although that uses Namecoin, since it lets you connect a human-readable alias for your online identity as well)

I think other projects are trying to do that as well, BitID and OneName being the ones I know of.
legendary
Activity: 1708
Merit: 1036

"But thanks to the entire security design and unique hardware features of TREZOR, we are introducing the most secure and convenient way of user authentication. TREZOR Connect expands the use of the wallet beyond bitcoin and digital currencies."

OK, they don't describe enough to understand their method, but it may be roughly similar. The method I describe would not require a specialized piece of hardware like the Trezor though, just an app. (Hmm. An advantage of dedicated hardware like the Trezor would be that an app on your own computer/tablet/phone would be vulnerable to hacking. So if hackers stole both your password and obtained your private key they could gain access to every account you had online through it.)
legendary
Activity: 1456
Merit: 1018
HoneybadgerOfMoney.com Weed4bitcoin.com
legendary
Activity: 1708
Merit: 1036
I think the idea is intriguing. I wouldn't mind using my pub key everywhere instead of always having to come up with new passwords. I think there should be some sort of back up/recovery built into a website that uses this method. Perhaps similar to the ones we already use like security questions, and email verification and if you answer those you can provide a new public key incase you lost access to your old one. The downside is it is very techy, no way would my grandma be able to login with this miethod.

It would be easy to simplify it. You technically don't need a "real" bitcoin wallet, just an app that would perform the same cryptography as a bitcoin wallet. And as mentioned, it could be configured so that you just enter your password once into the app on your computer, and it would handle logging into the websites automatically, without even the bother of a login screen.

I tend to agree that some kind of backup method for logging in would be needed, realistically. I'd prefer the method not involve a password on the site though, as that would undermine the security advantage of having this method in the first place. But since what I have in mind would be for all kinds of websites, not just cryptocurrency websites, it's probably safe to say that they would still have their own admin-level passwords for master level access. So having security questions and so forth for them to verify your identity, and then reset your account for you to re-enable access, that would work as a general method.

This concept is pretty simple, so I'm guessing I'm not the first to have thought of it. If that's the case, I'm wondering if there are already products that more or less use this methodology, or if there is a good reason it is not more widely adopted.
legendary
Activity: 1442
Merit: 1186
I think the idea is intriguing. I wouldn't mind using my pub key everywhere instead of always having to come up with new passwords. I think there should be some sort of back up/recovery built into a website that uses this method. Perhaps similar to the ones we already use like security questions, and email verification and if you answer those you can provide a new public key incase you lost access to your old one. The downside is it is very techy, no way would my grandma be able to login with this miethod.
legendary
Activity: 1708
Merit: 1036
Hi everyone,
For the past few months I've been brainstorming an idea involving blockchain technology to greatly improve a common online activity, but I'll say no more about that for now. In the course of my designs (and redesigns - lots of crumpled up paper in the wastebasket), quite a few ideas have been fermenting and budding off on the side. Here's one of them.

It's clear that there is something of a crisis going on with password-based online security systems. Over and over we're reading about hacks of major organizations with up to millions of passwords lost and all the trouble that implies. But what if an online organization could secure user's accounts without the bother of storing a password? I think this is possible with blockchain technology.

As I see it, the method would look like this: When you signed up for an account, the online system would ask for a public key, not a password. You would provide it, and then whenever you logged into the system, it would generate a one-time small random character string. Your bitcoin wallet (or something similar) would provide a signed message using the public key and the character string. You provide the signed message back to the online system, proving you are the owner of the public key, and it logs you in.

So instead of 27 pages of login information to scores of different online systems (actual example for myself!), you'd just need a single strongly secured bitcoin client on your own computer to keep safe. Hackers could steal public keys all they want, but they wouldn't be able to log into anything anywhere without providing signed messages proving their ownership of the keys. There would be no online password information that could be stolen, compromising your accounts.

And this could all be automated, so that once you signed into your bitcoin client (which need not actually have any bitcoins stored in it), as  you visit any site requiring login it could just send the random character string via API to your client, which would provide the signed message back automatically without so much as a press of a button from yourself. Logging in to as many sites as you wanted using the client would be completely invisible and seamless.

The one big downside to this approach is that you would truly be in control of your own accounts - no one could save you if you lost the password to your bitcoin client or lost the client and all backups of the keys. Which is just how bitcoin works now so we should be familiar with that concept.

What does everyone think? Am I overlooking any technical or methodological flaws? Anyone want to take this idea and run with it? (I'm not a programmer but the work involved doesn't strike me as treading much new ground or being terribly complicated.) Even if a good chunk of the population didn't want to trust itself to safely maintain their own PW/keys (which is understandable), the benefits for those of us who do would be huge, as well as for organizations dealing with password theft. Recent articles highlight the problem of relying on passwords but the security industry seems to be simply trading passwords for other technologies that are just passwords in a different form.

I'd vastly prefer this signed-message approach over systems that purport to scan eyes or fingerprints, with the inevitable scanning errors and potential (over a lifetime) for injuries that would lock you out of your accounts, not to mention potential for criminals to simply obtain your fingerprints, etc. by many methods and mold a finger from a high-res 3D printer or something. (Imagine being unable to access any of your financial accounts for a couple weeks while waiting for a burned finger to heal...)
Jump to: