livepeer / go-livepeer

Official Go implementation of the Livepeer protocol
http://livepeer.org
MIT License
546 stars 171 forks source link

add the creation of an encrypted config file containing the password of the ETH wallet used. #2239

Open Franck-UltimaRatio opened 2 years ago

Franck-UltimaRatio commented 2 years ago

add the creation during the first launch of the livepeer executable of an encrypted config file containing the password of the ETH wallet used.

That will increase the security of your node's ETH Wallet and avoid to keep the wallet and its password in clear on the server's node.

chrishobcroft commented 2 years ago

I'm not sure I completely understand this.

During the first launch, Livepeer will create a "keystore file" encrypted with a password. This password is then required when a node starts up, either entered manually (twice), or provided in the startup command/config file.

It seems that this request for livepeer to create another file, let's call it a "password file", encrypted with a second password. In this case, the second password would still be required when a node starts up.

But perhaps I misunderstood something on this. Always happy to discuss ways to help secure node operations in Livepeer Public Network.

Franck-UltimaRatio commented 2 years ago

This not the idea. You can already create an encrypted password using for exemple openssl, restrict the access to file created with chmod 600, then add a varianble in a bach to decrypt the file with an another password, but effectively this password stay clear and accessible in the batch. This idea is more at the fisrt launch, the livepeer node ask for the password then encrypt it in a file that only him can decrypt, with no external password to ask to the user. i dont know if it s something that could be done i m not developer, i just know that having the password of his wallet in a batch file is a big security hole

hthillman commented 2 years ago

@Cianha

can you clarify what you mean by batch file?

one solution for this could be system-level secret storage so that the private key is never stored in plaintext (e.g. https://wiki.gnome.org/action/show/Projects/GnomeKeyring)

Franck-UltimaRatio commented 2 years ago

i mean Bash file sorry, actually the -EthPassword flag is stored (and not encrypted) in a shell script. GnomeKeyring could be a solution for sure. i ll have a look to that thanks

hthillman commented 2 years ago

cc @yondonfu does this answer your question from yesterday? what does the lift look like for system-level secret storage?

RyanC92 commented 2 years ago

not sure if this is handled by Gnomekeyring, but if you're going to startup your orchestrator with a service, it needs to point to the file that contains a password, in plain text or it would be written into the config, again in plain text. if there were some way that it could encrypt the password into a hash or something similar that is not easily accessible in case your server gets compromised would be ideal.