I've long believed that the core problem with social security numbers is that they're used for
both identification and authentication. It's like letting unix users log in with only a
username, then trying to prevent the users from leaking their names to each other.
It'd be much safer to make all SSNs public, and let anyone use them for identification. To act
on behalf of someone with a given SSN, you'd need the corresponding secret code. Since most
places that record SSNs use them only for identification, this scheme would hugely reduce the
incidence of identity theft.