The rainbow table would have to include every four word combination. At around half a million words in the English dictionary, that's not a small number.
As another XKCD comic illustrates, it's cheaper to use a wrench.
Dictionary attacks have been around for a long time, but It's still quite strong especially if you throw in a number.
A fully random 8 character password has about 10^14 brute force combinations (assuming upper and lower case + the normal special characters). 4 words choosen at random from the top 3000 words (which is a very small vocabulary really) is 10^13 dictionary attack combinations, add a single number or account for variations in word style (I.e maybe don't always use camel case) and you've matched the difficulty. If you use 5 words it's 10^17 combinations.
A password manager and a hard password is a better idea but there are cases where you can't use a password manager (like the password to said manager).
I do a passphrase like the comic followed by 56 characters of gibberish using an https://onlykey.io/ (acts as a USB keyboard) that has a 10 digit pin (6 characters to choose from) and a kill switch pin (if I were ever forced to unlock it). I use this method for my disk encryption, main account login, and password manager.
I also use a https://www.themooltipass.com/ for vendor diversity (4 digit pin but all hex characters). I prefer the onlykey.
I rotate the gibberish monthly and the passphrase 2-3 times a year.
Once a year I change up the pin codes.
I figure that gives me enough entropy from brute force on all my systems with a balanced level of convienence and security. I literally don't know a single one of my passwords.
Yeah I thought about adding a note that it's pretty outdated - and dictionary based scans were always possible even if less common in the old days - like those infamous passwords "God", "Love", "secret", or like "admin".
The artist is pretty smart most of the time though so I presume they were aware of that possibility and meant that on a more basic level there are multiple ways to make passwords easier for a user to remember, not necessarily just this one rather simplistic take but as part of a whole approach. Then again, they didn't say that, and instead said this, thus the controversy.
Personally I gave up entirely and now I don't even know what any of my own passwords are, though my password manager does:-). I guess... if you cannot beat them, join them!?:-P
My current favorite "memorizable" method (obviously a random hash from a PW manager is still better) is to take a sentence of moderate complexity that includes the name of the service you're signing up for in it, and use the first letter of each word as your password.
For example, "When I wake up in the morning, the first thing I do is go to pawb.social."
Password would be "WIwuitm,tftIdigtps."
Easy to remember, immune to dictionary attacks, and you get a (mostly) unique password for each service, so stolen passwords can only access that one thing.
I dunno, all I do is hit copy, then go to the website and hit paste, and that's pretty easy as well:-P.
I do need to step up my game for work though, b/c it keeps asking me a password multiple times a day so if I could rattle one off that would be better than having to open up my password manager and get it.
It's surprisingly easy to memorize. The sentence basically acts as a mnemonic device to remember the password, and it's a lot easier to memorize a sentence that makes sense to you than to memorize something like "Tr0ub4d0r&8".
I have a strict, "do I give a fuck" policy when it comes to security.
I keep the harder to crack passwords for critical things like banking, etc... since there's only a few I can remember them. I also always use MFA.
For all the other shit that I don't give a fuck if it's hacked it's the good old *Banana$1234" type password that I reuse for decades and save to firefox's password manager.
Example of what My passwords are like : %*7EfOLkN@6AP28!8Dl#
or potentially if allowed : W@c2wYnN9J3xGcyc47#ZkHJvt&Hm%q&Ad0b&Xwz#jnl4Th%6UBexD16a$YBFc@svnVrCBxXP0EpwLp6%Gk*Lom%@Qq#DjY1zsf0CzIrHHqPc8gt4edDVsg!omj*kIsIJ
Good luck guessing my shit.
I suspect if the cracking code was constructed such that it had more weight on trying combinations of common words then this would be much easier to crack
I would naively think that as well - you would expand your alphabet of "symbols" to include both single letters and numbers and punctuation but also common words as well. It is still a lot of combinations to have to try though, even if less than each letter by itself.