Skip to content

New strategy for managing, sharing and documenting release keys needed #1913

Closed

Description

@rvagg

Arising from @canterberry's comments @ nodejs/node#709 (comment)

I haven't really paid too much attention to the SKS issues except that OpenPGP mentioned it the other day, but it seems like we need a new strategy for distributing our release keys for verifying signatures and therefore shasums of downloads.

This is a tracking issue that we could use for discussion and just to make sure it doesn't get fully lost. Someone needs to take the horns of this bull and come up with a strategy, even if that's just putting the keys into the nodejs/node codebase and recommending them from there, or getting all releasers keys onto the new OpenPGP server. Docs will need to change too.

@nodejs/build @nodejs/releasers @nodejs/tsc (FYI)

Activity

  1. MylesBorins commented on Sep 12, 2019

    @MylesBorins
    Contributor

    I'm a big +1 on documenting releasers + keys in the repo. We already do so in the readme. We could make adding / removing the keys part of the process of adding / removing releasers.

  2. rvagg commented on Sep 12, 2019

    @rvagg
    MemberAuthor

    I'm a little concerned about them going into nodejs/node given the very large collaborator group and the pace of change which means that very few people (if anyone?) see everything that goes in. An alternative might be dedicated nodejs/keys that's got very restricted write access, TSC-only probably.

  3. canterberry commented on Sep 12, 2019

    @canterberry

    There is already a nodejs/Release repo. This repo is pretty sparse and updated relatively infrequently. Would that be a reasonable place to keep the keys of the authorized release team? I know I find myself checking there first whenever I want to see who the authorized releasers are.

    I second the notion of a dedicated repo, too, with restricted access.

  4. rvagg commented on Sep 12, 2019

    @rvagg
    MemberAuthor

    might work but I think it has at least 2 additional teams that have access, Releasers (which is fine, it's their keys anyway), and LTS, or maybe it's called Release now (the repo used to be called LTS). That's still a broad group that could be pared back; but maybe it's time to revisit the purpose of that repo and who runs it.

  5. mhdawson commented on Sep 12, 2019

    @mhdawson
    Member

    A dedicated nodejs/keys repo makes sense to me.

  6. canterberry commented on Sep 12, 2019

    @canterberry

    If a nodejs maintainer creates the repo, I'll create a PR to pull in the keys.

  7. canterberry commented on Sep 12, 2019

    @canterberry

    I created a prototype repo for review here: https://github.com/canterberry/nodejs-keys
    This repo contains a few different patterns that don't all necessarily need to exist, but are included for completeness:

    • A keys.list that contains just a newline-delimited list of signing key IDs.
    • A GPG keyring preloaded with all release signing keys, for use with GNUPGHOME= in scripts that need a keyring for verification.
    • A keys/ directory with ASCII-armor outputs of each release signing key, named according to the key ID.
    • A README initialized (verbatim) from the Release Keys section of the nodejs/node repo's README.

    I'm putting together a revised script to import all release signing keys now.

    Edit: The repo now incudes a CLI for managing Node.js release signing keys, and the README now includes instructions on how to import these keys and/or use the preloaded GPG keychain.

  8. sam-github commented on Sep 12, 2019

    @sam-github
    Contributor

    @canterberry @rvagg We recently had difficulty talking to Mitre because they wanted to gpg email info to the node.js project. Sorry if this is a tangent, but I wonder if a security contact public key could go in there, too? The private part could go in nodejs-private/secrets. Or, perhaps releasers or TSC members GPG pub keys should be in there, and the sec page can say "contact any TSC member"?

    I'm not sure how well gpg identities work for an organizational role, the seem more tied to an individual, and if there was a gpg identity for node.js security, it raises the issue of revocation -- if someone leaves the sec or tsc teams, how can their access to the secrets be revoked? Is this something we deal with in nodejs/build? I know that once my key is removed from the build secrets, I won't be able to decrypt them anymore, but I think if I have decrypted versions sitting on my laptop, I remain in possession. Do we care? Is there any way to deal with this?

  9. canterberry commented on Sep 12, 2019

    @canterberry

    @sam-github I don't think it's too much of a tangent at all. If there are other teams apart from the release team (e.g: security) that need a repository to publish their keys, then such a repo could serve those keys as well, at least until keys.openpgp.org matures and/or there are more reliable public keyservers available.

    Secrets management is a complex subject that I do think probably extends beyond the scope of this particular thread. I'd be happy to continue that discussion in a separate thread, @sam-github.

  10. rvagg commented on Sep 13, 2019

    @rvagg
    MemberAuthor

    Nice work @canterberry, I'm +1 on just pulling that over into the org. I added an issue about auditing needed post move just as a reminder.

    @sam-github I think that repo could serve the same purpose, and yes, into nodejs-private/secrets with the private. We'd have to figure out who gets access to that though, probably not in the current "test", "release" and "infra" categories we have now, something new probably.

    There have also been suggestions in the past to delegate from an "official" key to the releasers keys to establish the trust so that could be explored too if we go that way. I'm not super keen on one-key-to-rule-them-all but having an org like Mitre want to connect to another org does make it difficult when we don't have the same type of organisational hierarchy that they anticipate. I'm +1 if you want to go ahead and make that happen. @bnoordhuis has opinions here too IIRC.

  11. rvagg commented on Sep 13, 2019

    @rvagg
    MemberAuthor

    @sam-github @mhdawson @MylesBorins over to you re adopting https://github.com/canterberry/nodejs-keys, maybe take it to a TSC meeting to get agreement on the approach?

  12. MylesBorins commented on Sep 13, 2019

    @MylesBorins
    Contributor
  13. richardlau commented on Oct 31, 2019

    @richardlau
    Member

    This appears to have stalled? The last comments suggest taking to @nodejs/tsc but that doesn't appear to have happened (unless there were private discussions).

    I'll tag tsc-agendatsc-review -- Maybe this falls under the repsonsibilities delegated to the Release WG? @nodejs/tsc This issue relates to nodejs/node#29531 and relates to the current method of distributing the @nodejs/releasers keys used to sign releases via the SKS keyserver network being no longer being viable. The proposed solution is to publish the keys somewhere under our control.

  14. richardlau commented on Nov 5, 2019

    @richardlau
    Member

    ping @nodejs/tsc

  15. mcollina commented on Nov 9, 2019

    @mcollina
    SponsorMember

    I'm +1 on the approach @canterberry is proposing.

  16. mhdawson commented on Nov 20, 2019

    @mhdawson
    Member

    Discussed in TSC meeting. @BethGriggs will add to agenda for Release WG and come back with a recommendation.

  17. sam-github commented on Nov 20, 2019

    @sam-github
    Contributor

    I'm fine with the canterberry approach, the Release WG's recommendation is fine by me.

  18. BethGriggs commented on Dec 5, 2019

    @BethGriggs
    Member

    We discussed this in the release meeting today - we were all +1 on the dedicated "nodejs-keys" repository approach.

  19. sam-github commented on Dec 27, 2019

    @sam-github
    Contributor

    Should build-agenda be removed? The discussions all seemed to point towards an agreed approach, now it just has to be taken up by someone.

    It doesn't look like anything needs to be resolved.

  20. sam-github commented on Dec 28, 2019

    @sam-github
    Contributor

    And if the ask is to move https://github.com/canterberry/nodejs-keys into the nodejs/ org, follow the procedure described in https://github.com/nodejs/admin/blob/master/GITHUB_ORG_MANGEMENT_POLICY.md#repositories

    @canterberry Open an issue as described in above link, reference this, it should get approved pretty quickly.

  21. richardlau commented on Dec 29, 2019

    @richardlau
    Member

    nodejs/admin#456 has been opened.

  22. github-actions commented on Oct 24, 2020

    @github-actions

    This issue is stale because it has been open many days with no activity. It will be closed soon unless the stale label is removed or a comment is made.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions