2

Need an idea for not storing private key to sign transactions (on public server/database file system).

The private key is needed to sign the transactions for transfer function ERC20 standard.

To accomplish, my initial thoughts are (for bip39 and bip44 wallets):

  • Generate all the address with master key.

  • store only public keys for different users.

  • Record the list of transactions to be done for the day and store details on database (list of addresses and amount transferred).

  • On a local server (say a 4gb RAM laptop with private master key) get the transaction details and execute transaction.

  • keep the geth RPC options off.

Is this approach in any ways more secure than storing private key on server?

3

If your server is compromised, an attacker could easily manipulate the transaction details and make you empty an account to his designated address so your approach closes an attack vector but opens up a new one.

Most wallets are client-side for the security reason you mentioned, storing the private key server side securely.

One approach you could implement is keeping the private key encrypted server side and by utilising the Shamir's Secret-Sharing Scheme with 2 out of X keys, one being your server-side key and the other being the client side key of each owner of the wallet, decrypting the key.

This should provide sufficient security for server compromisation but not for real-time attacks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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