Suppose we have a web-service with this workflow :
-
the users logs in, and this create public/private keys. These are stored in the browser
-
the user clicks on some button, and this sends a transaction on the bitcoin network
however, I want to prevent the admin from creating a pair of key and invent users and act on behalf of them. We suppose in the following that user emails comes from a mailing list, there are trusted, i.e. they corresponds to some real non faked users and they have not already pair of keys.
-> So, I have to bind the transaction with the email. I can add a hash in the user transaction corresponding to the user email signed by his private key.
-> but still the administrator can do that with some random pair of keys.
-> so we could for example send a transaction to NameCoin and then bind an email bound to a public keys. At least, this will ensure that one and only one pair of keys usage happens on behalf of a user. If an other similar transaction happens, that we can choose to discard this user.
Since this is not satisfactory, is there a way to ensure that emails are effectively sent by the administrator. I may think that for gmail
or microsoft
or whatever know mail providers, there is some encryption signing that ensures that the email passed through their servers. Even in that case, how to get this information and more generally how to build a universal solution ?