I will never be able to log in to Flickr again
ngzhian.github.io
ngzhian.github.io
Yahoo usernames were required in 2007: http://news.bbc.co.uk/2/hi/technology/6316761.stm
All CAPTCHAS are a pain, but the reasons for having one are fair.
The phone verification is a more interesting issue. When I created an account yesterday, it never asked anything about phone verification. And some people don't perhaps have phone access who could be trying to register? If it is randomly mandatory, that's a decent pain and privacy issue. I'm guessing it's probably opt-in or opt-out though
Do I agree with all their decisions? Not really, but I can see why they were made
Maybe instead of spending billions buying and "sunsetting" random mobile apps or mediocre blog platforms Marissa should dedicate a single high school dropouts salary to fixing the damned thing.
I've all but given up on logging into any Yahoo! property at this point.
Maybe some day, Yahoo will get their heads out of their asses and restore access to my old photos. I'm not holding my breath.
Otherwise, the more I read about these experts who can get 90% of a 16k password hash list figured out in a few hours, I can't think how MyAuntSally1 is any safer than donkey
It merely means that they are most likely looking for spaces with client-side JavaScript, and rejecting any string that contains spaces.
Or, they're checking the string server-side, before hashing and storing the hash to their persistent data store.
Either way, as long as the connection is secure, it's reasonable to inspect the string in plain-text, both client-side and server-side, before creating the hash, as long as they actually create the hash when they do actually decide to save a representation of the password, rather than saving the plain-text password itself.
Part of me would like to guess that the reason spaces might be forbidden in passwords (and pass phrases) would be to prevent frequency analysis. But that doesn't really make much sense, when it comes to hashes, does it? So then, might the case be that they are storing the passwords with reversible encryption, and decrypting the token for a match? In my mind of minds, I doubt it, but you never know. What I really think is that the password policy is simply contrived and idiotic, and whatever rationale they've used to forbid spaces is silly and ill-conceived.
Either way, I agree with the author, whole-heartedly. That is a damned frustrating sign-up process. Two-factor account creation AND a CAPTCHA check? Holy moly!
> they're checking the string server-side, before hashing and storing the hash to their persistent data store.
But why? People don't just add a rule because they feel like it, I'm suggesting that they are storing it in a stupid way that is not hashed and does not allow spaces.
> part of me would like to guess that the reason spaces might be forbidden in passwords (and pass phrases) would be to prevent frequency analysis.
The output of a cryptographic hash is completely random, you can't do any sort of analysis except for determining H(a) == H(b). You don't even know if H(b) was the same input as H(a) or just a collision against it.
> But why?
Because you cannot trust any checks performed on the client-side, since the user may have total control over the client-side system, and possess the ability to (somehow) bypass or spoof client-side validation.Client-side validation only exists to pluck the low-hanging fruit, and provide convenience to the majority of users. You cannot rely on any client-side events, when attempting to secure server-side resources.
All user input must be considered evil until proven otherwise.
If they hashed the user input, it wouldn't matter what the client gave them in terms of password requirements. Spaces, special characters, arbitrary lengths up to tens of thousands of characters would all be fine with a cryptographic hash, there's no way the resulting hash would be anything but a fixed length of n bytes. Nothing "evil" can make it through being hashed.
The password requirements Flickr has set show that they are not using a cryptographic hash, the limitations on length and character set imply that they are being stored incorrectly, either in plain text or a space delimited format. There's no reason to have these limitations if this were not the case.
And there is a reason to limit length, the very obvious reason being that short passwords are easier to brute force.
Reduced character sets (numeric only, for example) are also easier to brute force, so by forbidding spaces, technically, they've reduced the character set of their passwords by at least one character (not that it's of any particular concern, all things considered).
By the way, I made mention that perhaps they're encrypting the string, and not hashing it. Did you miss that part?
> By the way, I made mention that perhaps they're encrypting the string, and not hashing it.
Encryption is the same, it's content agnostic. 20 characters doesn't make any sense with the size of a block cipher.
But, as you mentioned, hash funtions always produce a fixed-length string as their output, so, hypothetically, if an evil-doer comprised the whole Yahoo! password database, and saw randomized byte values of varying length stored for the password data, it would be obvious that the passwords were encrypted, and not hashed. In which case, you'd be right: they weren't hashed, they were encrypted.
But still, I don't think forbidding spaces necessarily precludes the use of hashes. I also don't think Yahoo! is using a space-delimited data format for storing password data. Or at least if they were, I'd be as shocked at that as I would be to find out that they protected passwords with ROT13 or triple DES (encrypting a password with AES might be conscionable though).
To answer your question:
> When did I suggest that?
I think I may have misinterpretted the following: > If they hashed the user input, it wouldn't matter
what the client gave them in terms of password
requirements.
To me, I read that as "If they (being the client) hashed the user input, it wouldn't matter what the client gave..." my mistake.Perhaps eliminating a frequently made mistake by people who don't have much computer expertise is the reason. Wouldn't it be possible that they have found that a large number of support requests for newly created accounts are due to people accidentally adding spaces? So by eliminating spaces, they can still hash the contents without a problem however they also reduce the support load and increase the usability by a subset of their users.
Now, to be fair, that's an uncharitable interpretation of the comment you're complaining about. But you helpfully make clear in a later comment that that was what you meant:
> I'm saying that because they're disallowing the submission of spaces, they aren't hashing their passwords when they get to the server.
And that just doesn't follow, and that's probably why your comment is getting downvoted, but not why I downvoted it just now. I don't downvote for content, but only for rudeness, unfunny jokes, and complaining about downvotes.
To be fair, any other way would be lead to convoluted rules like "no consecutive spaces", "no leading/trailing spaces" or "spaces don't count towards the password length".
This is exactly why forcing users to use strong passwords is a shit idea in the first places. The rules either become ridiculously complicated or you disallow perfectly good passwords. There's no middle ground.
In MD5 "String with spaces" yields eab431cd212fb8b5ae223acbcfe58cca
"Stringwithspaces" gives 3cd297b2d7e48709d92890f88abdde0a
(Users should never store passwords in plain text or email them to one-another but the reality is they do.)
You're drawing conclusions from information that doesn't lead you to one.