Take the 2-minute tour ×
Information Security Stack Exchange is a question and answer site for Information security professionals. It's 100% free, no registration required.

I'm working on a project whereby a certain level of anonymity is required for users. One of stipulations is that no email is used at all, as it makes the barrier to entry too high for people who want anonymity in this service but don't have an anonymous email account to hand.

One of the issues with this is that account recovery becomes painful if someone forgets their password. Security questions would end up being a massive security hole, as there isn't the burden upon the attacker to compromise the email account as well as guess the answers.

A potential method I'm considering is to give the user a file full of random data upon account creation, and have them use that as a token for resetting their account. The only issue I can see with that, though, is that people would likely lose the file.

What other options do I have?

share|improve this question

3 Answers 3

You could encourage your users to put their passwords in a secure password storage system such as KeePass. The system requires that the hold on to something anyway, better just have them hold onto the password and not add another piece (they would have to somehow secure the token file you give them to prevent it from being stolen/intercepted). You may also run into issues with the way your random tokens are created if the algorithm was not implemented correctly and some correlation or predication became possible.

There may be some potential to use a certificate based system for authentication, then they just hold onto their key, which is more likely to be held onto then a reset token (I can't even remember where my TrueCrypt recovery CD went). Maybe you tell them to put it in KeePass or jsut a encrypted file and then put it in their dropbox - it will be in multiple places, but accessible only in an encrypted/protected format.

I think your users need to make the tradeoff between convenience and security. (a) If the data on the site is so important, than you must be responsible enough to hold onto your password (b) If its not that important, you give up the convenience of a reset for the safety of knowing no one else will likely be able to get into your account.

share|improve this answer

A potential method I'm considering is to give the user a file full of random data upon account creation, and have them use that as a token for resetting their account. The only issue I can see with that, though, is that people would likely lose the file.

Let the user upload this verification file and verify the hash. So a potential attacker need to know the username and the file.

EDIT: Hopefully they lose their own file less likely than a generated

share|improve this answer
    
That was the point of what I was saying. –  Polynomial Mar 21 at 16:57
    
I think this is the best solution so far. User nominates one of their own files to be uploaded, the server stores a hash of it. The server can prompt with a partial file name for a reset. –  scuzzy-delta Mar 22 at 11:23
    
@Polynomial your statement was that the server generates a random file, not the user chooses a file. –  Dr.Ü Mar 22 at 15:19

It Depends on the value of the account and Implications of Deanonomization

Possible solutions

  • Store a mobile phone number to text the unlock id.
  • Store the hash of a email address, so that the user must prove that they know the email address before emailing the unlock id.

Notes on your proposed solution:

Yes you could:

  • Force them to construct a private/public key pair.
  • Hand you their public key at account creation.
  • And use their private key to authenticate themselves.

But: there is no way to do that easily, unless javascript can be used.

General Notes:

But why would you try all this for an anonymous account !!!!!!!!

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.