To Keep Passwords Safe from Hackers, Just Break Them into Bits
technologyreview.com
technologyreview.com
gem 'devise'
into a textfile.
The failure here is just that whoever wrote the auth code didn't know that it was a problem, or thought (incorrectly) that using something like bcrypt would be significantly more effort.
Security announcement: Devise v2.2.3, v2.1.3, v2.0.5 and v1.5.4 released
http://blog.plataformatec.com.br/2013/01/security-announceme...
So using a real database mitigated the entire issue. Secondly, this security issue doesn't allow you to retrieve every user's password in 8 hours.
https://github.com/stripe-ctf/stripe-ctf-2.0/tree/master/lev...
I thought that an adaptation of something like Shamir's Secret Share could work.
The attack was akin to a timing attack (but definitely not a timing attack).
In reality, it would probably be difficult to execute on a live production server via the TCP port method. The artificial delay they added in to prevent timing attacks might cause a heavy load on the server, so if they leave that out that would be another possible attack vector.
So the solution is to run a second set of servers. Why would those be any better or differently secured?
or
sudo port install ssss
It is true that if the password is one of the most common such as "pass" or "password" then you'll be to tell if that is the case in a reasonable amount of time. However you could trivially do that testing without going to the lengths of breaking into and compromising systems.
All this RSA mechanism does is split the password verification into two halves each with knowledge of about half the information necessary to compromise. In theory compromising one system won't help you - you need to do both. But that doesn't help against the weakest passwords since they can just be tried against the system.
There are some good presentations on the bcrypt wikipedia page. Of note is that 1,000 password guesses per second per system is roughly what happens now, and that scrypt is better for some circumstances. By contrast legacy schemes have rates from 10 million to 2 billion per second - even something as modern as WPA has 100,000 guesses per second per system crackers.
But back to the original point - a company with weak administration and security practises isn't going to get any better by doing more of it.
This is from a crypto startup called Envault that was founded on the idea of splitting data in pieces - they keep a fraction of the ciphertext somewhere "in the cloud" and off the local storage of your device when not in use. This is advertised as being very very safe.
I never heard any crypto guy with credentials comment on their tech though which is usually a bad sign...
[1] http://blog.linkedin.com/2012/06/06/linkedin-member-password...
I actually think the originally described system is more vulnerable to a timing attack, since you could determine which crypto system a user's password is using based on the timing.
I don't see this scenario presenting any more risk from a timing attack vector than a bare implementation using weak crypto, and it offers a balance between having no option to upgrade your crypto algorithm, and an option that involves some trade off.
Four simple steps:
1) You add a new password column to your DB (secure_pass) and modify your account creation / password change code to store bcrypt(md5(password)) in that column in parallel with just md5(password) in the old insecure_pass column.
2) You run a job that migrates insecure_pass to secure_pass by calculating bcrypt(insecure_pass) and storing that in secure_pass.
3) You turn on "dark reads" for secure_pass on login and log if there are any cases where validation against secure_pass failed when validation against insecure_pass succeeded. If a log message shows up, you did something wrong.
4) You move over to "light reads" for secure_pass and stop updating/validating insecure_pass. Once that's deployed, you drop the insecure_pass column from your DB.
The real question from linkedin's point of view is how many profitable people stopped using the service because they stored the passwords in MD5?
Based on some of the systems I have seen over the years I will say that there is a very strong chance that some company you have bought something from at some point has a copy of your credit card number + CCV2 stored in plaintext in a mysql database somewhere.
It doesn't hurt that there are a lot of rainbow tables available to access for free on the Internet.
[1] That's putting it a bit kindly. 'that we were told exists' might be more fair.
Or organizations who are vulnerable to the RSA sales person attack. ;)
As others have hinted - once you have folks sophisticated enough to do tricks like using multiple operating systems, you'd hope they're going to catch the basics...
You can change banks easier than you can migrate all your contacts to another social network.
"No, Bob, if you lost the private key associated with your ssh credentials you can send me a gpg-signed email or wait until morning when you can verify your identity physically."
It relies on the fact that k points are necessary to reconstruct a k-1 order polynomial. So if you hand out n points, with n > k, then any k of these points can be used to reconstruct the polynomial, whose y-intercept is the "secret". The coefficients of the polynomial are random.
There are other [3] sharing schemes, and for the trivial k = n case, Shamir's scheme is probably overkill.
[1] http://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing
[2, PDF] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.80....
[3] http://en.wikipedia.org/wiki/Secret_sharing
UPDATE: Here are some links to RSA's "Distributed Credential Protection" offering [4] and the white paper [5] describing it.
[4] http://www.emc.com/security/rsa-distributed-credential-prote...
[5, PDF] http://www.emc.com/collateral/software/white-papers/h11013-r...
by Adi Shamir, the "S" in RSA