2FA only helps in preventing people to break in in your email account.
I am not feeling I am getting my point across in this discussion about 2FA and "you should change your password anyway":
Let me put it this way: I am system developer, I would never design password reset functionality that ends up sending a password in plain text, as this is considered extremely bad practise (and I will likely get fired). Why it is considered bad practise:
- Email is
extremely insecure protocol. The email is very likely going in plain text over the internet (and no 2FA is going to stop that).
- Most local email clients (outlook, thunderbird, etc) do not encrypt emails locally, which means everyone who gets access to your machine has your password.
- In order for a system to mail the password, the password is touching a lot of different moving parts of the system which can all be compromised (the email sending module, the email daemon / SMTP server sending the actual email. I would not be surprised of all those emails are cached somewhere as well (are you resending in case of bounce, or just fire and forget?).
- Sending an email with a
temporary token offers even
better UX since the user can immediately enter a new password him/her self.
- Saying people should be using 2FA severely limits how one might use email, for all practical purposes this only works for email hosted in the cloud. (Are we talking about security at all?)
For a bitcoin forum, I think the following would be workable:
In the reset password page, require that the requestor sign a message using their bitcoin address from their profile. The website must construct this message, and could be as simple as "password reset request for forum.bitcoin.com for user arnoudk. Requested by IP 123.321.123.321 at date and time". The cryptographic signature of exactly this message must be valid. The forum already has the bitcoin address field against which to validate. Only then will an email with reset link be sent. To actually change the password you could sign another message ie "password reset request with activation code ANHGUYFGHKGFDETHHHDUSH for forum.bitcoin.com for user arnoudk".
I think this forum is meant to be a starting point for Bitcoin. Which means that these more complex procedures could not be completed by the average user. Also what if users have not filled in a bitcoin address (like me), or one from an online wallet provider?
A seperatie process should exist for users who have forgotten their password AND lost access to their keys.
I think normally this would mean you lose your account, same goes for your bitcoin.
EDIT:
for all the people who don't believe me: check out this random pdf I found after 12 seconds of googling:
https://securabit.com/wp-content/upload ... t_v5-1.pdf
EDIT 2:
I think this is one and the same. If someone has access to your plaintext emails then either way they would have access to your account.
No because:
- If the attacker changes the password before you, you can't do it anymore since the token is invalidated.
- If you change it before an attacker he can't do anything because the token is invalidated.
In the first case, you know your account is compromised.