An attacker will want to try all 216,553 english words.
Plus another 12 bits of effort for the common variations, which lets say gives a list of 887,001,088 (229) possible passwords.
BCrypt takes about 4,342,912 (i.e. 222) operations to calculate one hash (at cost=12).
A core today provides about 231 cycles/sec; the state of the art is 8 = 23 cores per processor for a total of 23 * 231 = 234 cycles/sec. A server typically has 4 processors, increasing the total to 22 * 234 = 236 cycles/sec.
222 cycles to calculate one hash * 229 possible (common) passwords = 251 cycles to run through all (common) passwords.
This means that it would take a 4-processor, octo-core, server about 251 / 236 = 215 seconds (9 hours) to run through all common passwords.
In reality my password is not common, and uses about 44-bits. 244 passwords * 222 cycles per password = 266 cycles to try all uncommon passwords. 266 / 236 cycles/second = 230 seconds (34 years) to find my password.
Moore's Law's says the processing power doubles every 18 months.
- today: 34 years to find my uncommon password
- 1.5 years: 17 years
- 3 years: 8.5 years
- 4.5: 4.25 years
- 6 years: 2.125 years
- 7.5 years: 1 year
- 9 years: 6 months
- 10.5 years: 3 months
- 12 years: 6 weeks
- 13.5 years: 3 weeks
- 15 years: 10 days
- 17.5 years: 5 days
- 19 years: 63 hours
- 20.5 years: 31 hours
That's now bcrypt holds up against Moore's Law.
Increase the cost factor from 12 to 13 and that will double the times involved.