Posted
by
ScuttleMonkeyon Monday October 22, 2007 @04:19PM
from the brute-force-just-means-get-a-bigger-hammer dept.

BaCa writes to mention that a new hardware/software combination has been created by a company called ElcomSoft that will reportedly allow cryptography professionals to build cheap PCs that work like supercomputers for the specific task of retrieving lost passwords. Utilizing a combination of the CPU and the GPU the task of brute forcing a password may be reduced by as much as a factor of 25. "Until recently, graphic cards' GPUs couldn't be used for applications such as password recovery. Older graphics chips could only perform floating-point calculations, and most cryptography algorithms require fixed-point mathematics. Today's chips can process fixed-point calculations. And with as much as 1.5 Gb of onboard video memory and up to 128 processing units, these powerful GPU chips are much more effective than CPUs in performing many of these calculations."

Cthon98> hey, if you type in your pw, it will show as starsCthon98> ********* see!AzureDiamond> hunter2AzureDiamond> doesnt look like stars to meCthon98> AzureDiamond> *******Cthon98> thats what I seeAzureDiamond> oh, really?Cthon98> AbsolutelyAzureDiamond> you can go hunter2 my hunter2-ing hunter2AzureDiamond> haha, does that look funny to you?Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******AzureDiamond> thats neat, I didnt know IRC did thatCthon98> yep, no matter how many times you type hunter2, it will show to us as ******AzureDiamond> awesome!AzureDiamond> wait, how do you know my pw?Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 ause its your pwAzureDiamond> oh, ok.

now IT departments will require passwords to be 30 characters long, with at least 2 digits, at least 2 puncuation marks, mixed case, and use Unicode characters from at least 8 different international languages.

I used to think the same. "Eight characters is enough for now, but it's only a matter of time..."

Then I realized that this doesn't mean IT departments will require longer passwords. Rather, this is the death of the password, in place of other authentication methods (smartcard, biometrics, others, and combinations of everything).

It won't be immediate, or close to it... but a 25x increase in the speed of bruteforcing passwords will certaintly speed up the process by which passwords are obseleted.

I wonder why a restriction couldn't be put on how many times passwords are tried? Why is somebody able to get the password file to loop on in the first place? Rather than a file, perhaps the password manager needs to be a device and only a device (chip?), not a file, which limits the number of tries per second. Either don't use or don't allow access to passords in declarative (data) form. Make all access have to go thru an interface. And, if the interface is used too many times per minute, it can throttle i

That's not the problem. The problem is primarily people who gain physical access to the hashes, and load them onto much beefier machines to do the processing for them. 100% CPU for days on end will eventually warrant a call to the help desk stating that their computer is "too slow."While I agree that for this to be a problem, a previous security hole has to exist somewhere, it's more the "what if that happens" that is the problem. If a hash, and just a hash is stolen, it's not exactly going to set off alarm

Add 1 letter and you've increased the time it takes to hack by 26x (although it's probably closer to 100x with punctuation and the like). So 25x is irrelevant. So is 250x. Only something that makes it non-exponential would really make a difference.

The time it takes to calculate the hash is insignificant for a real user, but an increase of even a tenth of a second to an attacker could mean the difference between a day and a week to crack a hash.

bluefish hashes take a long time (relative to md5 and sha1) to computer because the initialization takes a long time, there is no way to accelerate this initialization it must be preformed synchronously.

Happily, it seems some companies are finally getting the message that longer passwords does not necessarily mean a more secure system. I know of at least one well-known security software company that has recently revised its stringent password policy from "super long, with numbers and punctuation, changed every 30 days" down to "less long, and you don't have to change it nearly as often".

I'm guessing they had a security audit quietly done, wherein it was discovered that paying a janitor $20 to look for

Anyway, since a network login can be done with a smartcard, why not an authentication mechanism using a USB stick drive containing the private RSA key?

Because putting your pretty USB stick in a compromised system would void the security of your key. Anyone can just copy it an use it for himself. You can't do that with a smart card, since the key never leaves the card.

"now IT departments will require passwords to be 30 characters long, with at least 2 digits, at least 2 puncuation marks, mixed case, and use Unicode characters from at least 8 different international languages."

I never got why people have so much trouble making up and remembering long passwords. I'm going to assume everyone here understands leetspeak, and enjoys something (i apologize to all the chronically depressed, i'm not trying to be an insensitive clod).

If you like music, use lyrics and translate them into leet. Example: WelcomeToTheJungle becomes W31c0m3707h3Jung13
If you like movies, use famous quotes and translate them into leet. Example: FranklyMyDearIJustDontGiveADamn becomes Fr4nk1yMyD34r1Jus7D0n7G1

I remember VMS (not tried the open version so not sure if it did this). There was a parameter to set password that'd give a list of completely unreadable junk passwords to use.. the problem was they were so damned complex there was no was a normal human being could remember them.. so nobody ever used it (except a few nutters, and they wrote their passwords down!).

For example, the logon password for Windows Vista might be an eight-character string composed of uppercase and lowercase alphabetic characters. There would about 55 trillion (52 to the eighth power) possible passwords. Windows Vista uses NTLM hashing by default, so using a modern dual-core PC you could test up to 10,000,000 passwords per second, and perform a complete analysis in about two months. With ElcomSoft's new technology, the process would take only three to five days, depending upon the CPU and GPU.

I can't tell if the proper response to this is to recommend longer passwords or advise against using Windows Vista

True, but it you create an easy way for a user to disable their own account this isn't as much of a problem. Create a 1.800 where you put in a (much easier) password that will allow you to disable access to your account. This way, if your key gets stolen, you just go into I.T. in the morning and have them issue you a new one.

Not to mention the fact that when talking about password, your biggest enemy is some phiser sitting in russia....who is NOT very likely to fly to the states to steal your key. If your data actually is important enough to justify a hiring somebody to steal it, then chances are you are using biometrics/bullets to lock people out anyhow. If you're not, then tell you CIO to stop spending money on frosted glass NOCs that are suspended from the ceiling above your data center that is kept at a constant 42 degress and tell him to start spending it on real engineers.

lUser: 1.800.pas.swrdPhone Operator: Hello, this is Ryan in the I.T. department, how may I help you?lUser: Omg! i left my purse on the table in the restaurant, my key was in there....will you disable my account?Phone Operator: Sure may i have the password?lUser: The password is bananasPhone Operator: No, thats not the password, you only get two more tries before I call the number we have on file for this user and ask her what the problem is.lUser: AHHH AHHA AHHHHHH is the password, uhhh....... *click*

Nowadays the locks in the cars are nearly impossible to open without the key. So what do criminals do? They steal the keys. So USB key is obviously not the perfect solution for this problem.

It's a great solution to the problem. They have to get physical access to you. That will stop 99.99% of all password cracks. Almost all are done remotely, often through security vulnerabilities (including stupid users). Only the most targeted attacks (someone that doesn't want random computers for bots or to break

Well, I can't be the only one who would run that sort of thing through the washer and dryer... Perhaps that with a backup/secondary USB key would suffice? Furthermore, people would require some training/guidance on physical security with that sort of thing (i.e. telling them to keep it with their house/car keys). People already write their passwords and leave that on their desk, and leaving the physical usb key on the desk would be no better. What could be really cool, however, is if the device doubled

If you are connecting to Linux or a BSD or anything else that runs openssh, then you can have something along these lines now. Setup an openssh DSA key, copy the public key to whatever machines you need to log into and then you can disable password logins in/etc/ssh/sshd_config altogether. If you are running Linux then for extra credit configure pam_ssh to get single sign on with an ssh key agent. If you are running windows as your client then you will have to make do with putty and pagent.

Because USB is insecure.(assuming XP) When you plug in your USB key to login to your banking website it reads the signed key/password/whatever and signs you in. Great. Meanwhile... your screen-saver and the 'search bar' you installed also read your key and upload it to Mr. Nasty.

What you would need is a USB key with a processor to do the signing/challenge response internally.

No they will not.Because, as a matter of fact, on devices like this the key never leaves the device. The device has an RSA engine and the actual public key cryptography happens on the key. If implemented correctly the request travels all the way from the server to the key and back. Not particularly difficult to do. I have an account with a bank in an ex-soc block backwater that does that for the electronic banking. It even uses a third party "national id" smart card for the purpose.

Why can't I login with a USB key that has some piece of information which is signed using my private key on it?

Better: a CAC reader (~ $25) and a smartcard. I can use my military ID to log into my AKO (an awful Army portal web site) account from Safari (on OS X 10.4) without installing any software on the client side. And, of course, if you install lots of crap and have an elaborate set up you can use it to log into Windows. Without much work, I can use it to sign code and emails and what not.

And you can't forget to factor in the fact that on average a password will be found in half the time of an exhaustive search, so you're looking at a day and a half to two and a half days per password. When you're hacking the right computer, that's completely and perfectly acceptable.

Pricing for these apps is pretty steep [elcomsoft.com] at $1,299 per machine license. Well, maybe not so steep if you consider how valuable it could be for you. It doesn't say if that has the GPU utilization with it yet or not.

Also, I wonder if they've investigated using SLI & CrossFire with these. That seems like something obvious to me but not included in the article. I'm unaware of their implementation but it sounds like it could be parallelized--and accross 2 or even 4 cards, that could get hilariously powerful.

Actually this could really speed up generating those tables, really RT's is a clever way of indexing the results of a brute force attack. It still takes piles of disk space to keep the tables around though I can fit a lot of them on cheap disk these days.

Nvidia's CUDA, which is what they're talking about, supports multiple graphics cards in the same computer. You don't actually use SLI, just run programs on multiple graphics cards. They've demoed systems with 3 8800GTXs (they take up 2 expansion card slots each, so you can't fit more than that in a single normal sized desktop case).

I am not sure this could be patented. (IANAL, etc.)This looks like a new spin on the old Commodore 64 trick of pushing computation tasks off to the CPU in the model 1541 floppy drive. It is interesting that someone has done it. I am sure many of us have thought about this, but the folks at ElcomSoft actually did it.

Pretty cool, IMHO. Also, somewhat frightening.

And, just for fun, I need to add the obligatory "...but imagine a Beowulf cluster of these!"

What seems to have been missed in the discussion so far is that this company is applying for a patent on their technique, which they claim is "revolutionary." I really hope that this doesn't get granted, as it would open a whole new realm of stupid patents for "X on a graphics card," which is about as stupid a patent as "X on the internet."

I've read the article (such as it is), and it keeps claiming that this is a technique to recover "lost passwords". But I don't really believe that is the purpose of this software, and I have to ask "What is the difference between a 'lost password" and a password that belongs to someone else and not you?". Does anyone else really believe that the actual use of this software will be to assist the majority of users recover their own passwords? I do not. I suspect it might be harder to patent a tool for identity theft than for recovering "lost passwords" though.

The difference between a "lost password" and "cracking someone else's password" revolves around the legal right to access the information."lost password" situations (obviously, not an exhaustive list):

I could forget a password for something. I've done it before, and I'm sure I'll do it again.

I could be hit by a bus and my employer will need access to my encrypted files. (Granted, we have a better system to handle this, but I think you understand.)

One word (at least on any decent UNIX-like system):/etc/shadow. That reduces the set of dangerous inside people to just those who don't need to crack because they can bypass/read anyway. Sure, even those might have a use for actually cracking your system password and trying to use it to decrypt stuff for which their mere root powers won't help, but you simply always have to trust somebody. Unless you're so paranoid you only want to be a one-(wo)man shop, of course.

FPGAs (Field-Programmable Gate Arrays) sound like they would be just the ticket for SIMD (single-instruction-multiple-data) calculations such as this. Configure up a bunch of FPGA chips to do the encryption calculations on a zillion combinations in parallel...

I'm just wondering, should I take the summary as intentionally ironic (i.e. as if it had referred to an operating system "by a company called Microsoft"), or should I assume it was written by someone *fascinatingly* oblivious to the recent history of decryption software and the disputed legalities thereof? An informed, non-ironic summary would simply say, "...by ElcomSoft...", of course.

For any of you who may have been living under a rock (possibly on another planet), ElcomSoft is the company that was employing Dmitry Sklyarov, who was arrested in the US on DMCA charges when he'd come to present at a conference. Wikipedia has more [wikipedia.org].

> arrested in the US on DMCA charges when he'd come to present at a conference.

Something particularly notable since at the time, the DMCA was a very new law. It was, I believe, the first notable case putting the DMCA to test in court. Furthermore, the case was a particular rallying point amongst geeks, not only because of the potential consequences it had for US Citizens, but also for visitors to the US; Dmitry had at worst provided a presentation in the US. (he did not develop or design anything on

Like searching chess positions or recognizing text? I was under the impression it very limited and requires specific types of input with restrictions on which operations can be used.

GPUs aren't very good at algorithms that require a lot of indirection or a lot of jumps. They work because they arrange incoming data in a stream and process large chunks of it in parallel. Both of the applications you suggest are unlikely to benefit hugely from GPUs. Chess position ranking could probably work well; set up a

GPUs were foremost designed to execute large numbers of linearly-ordered simple matrix/vector operations per clock cycle. When it comes to generating 3D, there isn't much in the way of branching, recursion or conditional execution involved. I haven't checked recently, but it used to be that a "pixel pipeline" referred to a unit that could do a 4x4 * 4x1 operation in a single clock (16 multiplies and 12 adds).Coincidentally this also helps a large number of scientific applications, such as molecular dynamics

GPUs were foremost designed to execute large numbers of linearly-ordered simple matrix/vector operations per clock cycle.

Minor correction - I know what you mean when you say "linearly-ordered" but a more accurate way to describe it would be: large sets of independent operations per clock-cycle. The sequential encoding that happens between clock cycles is true of most processors, and not specific to GPUs. The key is high performance is the lack of communication between separate instances of the pixel shader

Anyone car to point me to one of these mythical video cards with 128 processors and 1.5 gig of fast on board memory? Also, at the price point they are asking for this software (1200USD per seat) it seems like this is hardly cost competitive with doing this same sort of thing using commercially available FPGA dev/prototype boards and open source software designed for this EXACT task.

Video cards don't have 128 processors exactly, but each processor can have 128 separate instruction pipelines (SIMD 'stream' processors) which can run in parallel http://www.nvidia.com/page/geforce_8800.html [nvidia.com]. The programmer just loads a small amount of code into each of these stream processors and lets it crank away at the data. In graphics processing, these stream processors are used for per-pixel and per-vertex shading.

ElcomSoft has discovered and filed for a US patent on a breakthrough technology... harnessed the combined power of a PC's Central Processing Unit and its video card's Graphics Processing Unit. The resulting hardware/software powerhouse will...

Referring to the (obvious) use of a new library/sdk from NVIDIA to improve performance of an existing application as the "discovery of a breakthrough technology" ==Fail.

...allow cryptology professionals to build affordable PCs that will work like supercomputers when recovering lost passwords.

Cut and pasted from "How to write with spin for dummies"Fail.

...will be incorporating this patent-pending technology into their entire family of enterprise password recovery applications.

It's because CPUs are designed to run long streams of sequential instructions very, very quickly, with utterly random access to data, while GPUs are designed to run huge numbers of instructions in parallel very, very quickly, with relatively restricted access to data.A huge amount of modern CPU design is taken up simply by attempts to predict what will happen next, and attempts to allow blazing through a single long instruction stream as fast as possible. Parallelization gives tremendous speedups, as long a

CPU designers are held back by trying to give good performance to general purpose programs at the same time as supporting these specialised uses. They've tried, we have 3DNOW, SSE, SSE2, SSE3 and others but it is too hard for them to compete with a GPU which doesn't have to support general purpose use. A GPU doesn't even have to deal with things like interrupts or memory protection!

Why is the GPU a processor dedicated to nothing but "pretty graphics" so much more powerful than the central multi-purpose processor even at the things like number-crunching?

You need to rephrase your question, because it makes an incorrect assumption. Here:

Why is the GPU a processor dedicated to nothing but "pretty graphics" so much more powerful than the central multi-purpose processor especially at the things like number-crunching?

The answer is obvious if you think about it: those "pretty graphics" are a huge number crunching problem. That's all there is to it. GPU's, however, aren't very good at tasks that don't do exactly the same thing huge numbers of times. This is true of most applications. Including the applications that run on the PC to control what the GPU does in stuff like what the story's talking about.

Is it because the GPU engineers can completely redo the thing from scratch whenever they want to, whereas the CPU-designers are held back by the backwards-compatibility issues?

Partially. Modern GPUs have (I think -- I don't keep up to date) 256 bit wide memory interfaces, running at close to gigahertz speed. This means they can transfer to and from their memory at about 4 times the rate a PC can. This is possible because (1) graphics card manufacturers don't mind the types of memory they use changing on a virtually model-by-model basis and (2) they also don't mind being stuck with non-expandable memory that's soldered directly onto the card right next to the GPU.

It's also because GPU engineers can sacrifice a lot of the flexibility of a PC. So what if the pipeline stalls if all 32 threads aren't doing exactly the same thing at the same time? Most of the time, they will be.

Computer Science teaches, programmers aren't supposed to have to do "tricks" like this -- you code, and the translator (compiler or intepreter) will translate from your programming language to the hardware instructions.

So why did my CS course have a module where we learned how the hardware worked? About memory hierarchies? About SISD, SIMD and MIMD processors? Why does Knuth's The Art of Computer Programming, possibly the most important book ever written on CS, approach problems at an assembly language level? Why, in my CS course, did I learn two different kinds of assembly language (one CISC, one RISC)?

Because CS is concerned with a holistic view of computers. With the fact that they are machines for executing instructions, and what can be done with those instructions. With the fact that it may be more efficient not to specify that much detail, but also the fact that, from time to time, you do need to do that.

Modern GPUs have (I think -- I don't keep up to date) 256 bit wide memory interfaces, running at close to gigahertz speed. This means they can transfer to and from their memory at about 4 times the rate a PC can.

Correction: modern GPUs have a 384 bit wide interface, running at 800MHz *dual-pumped*. Compare with the Intel Core 2's 128-bit wide, 333MHz dual-pumped interface, and you'll see that it's actually over 6 times faster at accessing memory.

Hello, I would like to order one of your _cheap_ PCs, specifically the one with 128 GPU:s which I will turn into a supercomputer with this great software. I need it to recover my lost windows password. Thank you.
And by the way do you still have those low-energy, standard socket 1.21 gigawatt bulbs?

unless you're using a crappy password scheme like Vista's, for example.

This is a process that lets you brute-force passwords 25 times faster. That's pretty neat, I'm not arguing that. It's extremely clever. But this speed [i]shouldn't matter[/i], because cracking passwords a mere 25 times faster shouldn't matter either. The problem comes down to how people are designing a lot of password schemes. They're aiming for speed. The article says the new technique can try ten million passwords per second on a single computer. Division tells us that, beforehand, the computer could process 400,000 passwords per second.

When was the last time you had four hundred thousand users logging into a single computer per second?

Checking a password should be slow. Brutally slow. I mean, quite literally, that just checking to see if the user's password hashes correctly should take at least a hundredth of a second. You're not going to have a hundred users logging in per second on a single computer anyway, our modern database-driven sites couldn't handle the load of displaying the login pages, so why are we making our password schemes so flimsy?

If you use a slow password hash generation - and this can be something as simple as iterating MD5 over itself ten thousand times - whoever's trying to brute-force your password scheme is going to have a horrible, horrible time of it. Add a basic salt to the mix and you will not have anything to worry about from this. If your password checker takes a hundredth of a second, then 25 times faster means your adversary is going to spend $1300 on software in order to try 2500 passwords per second. If you have an appropriate salting system that's 2500 passwords for a single user. This is not the death knell for passwords, or anywhere near it. If anything, it's the death knell for crappy password hashes - but it's not even that, since you could trivially foresee things like this years in advance.

Brute-force password cracking, by its very nature, is millions of times more expensive than merely verifying a valid user. From there, it's up to you to determine how safe you want your passwords to be. Personally? I'm fine with wasting a few extra hundredths of a second per user.

All password checks on my machines take 10 seconds minimum. A strategic 'sleep(10)' does the trick. There is no need to calculate MD5 hashes repeatedly to waste an attacker's time. A nice sleep() allows the server to go do something more useful.

This is the company with which Dmitry Sklyarov was employed at the time of his arrest by the FBI, back in 2001. Before his arrest, at a conference, Dmitry made a presentation on cracking Adobe's eBook DRM. The method used for this crack was utilized in Elcomsoft's Advanced eBook Processor software.

This was really big news back in 2001-2002, although I guess thats a bit too long ago for most slashdot readers, since I (surprisingly) haven't seen any other comments mentioning this.

I was just going to post it. You are right, I was also wondering how few people remember it.Elcomsoft produces probably the best crackers for MSFT password protected files. In one of my previous companies we used to own a copy just in case someone from marketing managed to password protect something in a state of inebriation or someone from sales was marched out of the door leaving a pile of encrypted quotes and tenders.

That is probably the only legitimate use I know for their stuff (quite a popular one act

Speaking as someone who's worked in outsourced IT support, having a faster way to hack my clients' computers is *really useful*. Because if there's one thing that's guaranteed, it's that the users will forget their passwords. Sometimes the admin ones.