Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

verify janus on client side #5

Open
splix opened this issue Jul 21, 2017 · 3 comments
Open

verify janus on client side #5

splix opened this issue Jul 21, 2017 · 3 comments

Comments

@splix
Copy link

splix commented Jul 21, 2017

Currently all verification of Janus files is made by janus itself. Which means that if a hacker got access to Janus git repo, he can change verification process too, including changing PGP pubkey. So you shouldn't download and verify from same place, because if it will be compromised, it will be everything at once.

So more secure installation process should look like:

gpg --import .janus-gpg.txt
curl -O https://raw.githubusercontent.com/ethereumproject/janus/master/get-windows.sh
curl -O https://raw.githubusercontent.com/ethereumproject/janus/master/get-windows.sh.asc
gpg --verify get-windows.sh.asc
bash get-windows.sh

Where .janus-gpg.txt MUST be provided with application sources (i.e. committed into Geth/Emerald/etc).

But that brings another problem, you need a versioning for that stuff. Because if you'll decide to to change your PGP key at some point, every dependent project will stop working until they will import your new key. As a workaround you can give a link pointing to a tag, instead of master branch. (also, just realised, a link to particular commit maybe a useful for security too, because it will be hard to forge a commit, but I don't think it supposed to be used this way)

@whilei
Copy link
Contributor

whilei commented Jul 22, 2017

Noted. Thinking about it.

whilei added a commit to whilei/janus that referenced this issue Jul 24, 2017
solution: link to commit for signing gpg key (at separate repo)
and include signatures installer script (an optional added layer of security)

Rel ETCDEVTeam#5
@whilei
Copy link
Contributor

whilei commented Jul 24, 2017

The installer scripts use the ethereumproject/volunteer repo to download my signing GPG key, I've updated them to use a specific commit: https://github.com/ethereumproject/janus/blob/master/get.sh#L18.

I've also provided signatures for the installer scripts themselves, which can be used similarly to the verification for the release binary itself.

@splix
Copy link
Author

splix commented Jul 24, 2017

I mean this get.sh is still in same repo, so if a hacker will get access, he can edit both get.sh file to remove validation, and add any extra stuff he needs, like patching geth build to log all private keys to a remote server

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants