GithubHelp home page GithubHelp logo

Comments (5)

tgeoghegan avatar tgeoghegan commented on August 10, 2024

Further, we should run the key generation and rotation tasks in the Kubernetes cluster as a cronjob, so that secrets never need to be exposed to our operator computers. This will involve building a Docker image for the key rotator and putting a kubectl run invocation in a makefile, I think.

from prio-server.

tgeoghegan avatar tgeoghegan commented on August 10, 2024

Retitled; this is about validating and finishing our implementation of key rotation (deploy-operator, manifest-updater, etc.), and then deploying it in all the prio-server deployments (ISRG/prod-us, ISRG/prod-intl, NCI/prod-us, Google/prod-intl).

from prio-server.

tgeoghegan avatar tgeoghegan commented on August 10, 2024

When we do this, we should also consider automating key backups (relatedly, see #935). For operational smoothness, it'd be nice if key backups were automated. On the other hand, if we empower some Kubernetes job to do this, then we have to be careful to configure ACLs on the backups so that they cannot be deleted or tainted with by a bug somewhere in prio-server. Maybe the versioning features offered by the each cloud platform's secrets storage products suffices.

from prio-server.

branlwyd avatar branlwyd commented on August 10, 2024

Some thoughts on validations that the key rotation infrastructure will need to implement:

  • Keys must either have no versions, or exactly one primary version.
  • Post-rotation, keys must have at least one version.
  • When being used to update keys in a manifest, keys must have at least one version.
  • When being used to update keys in a manifest, keys must have versions with distinct creation times.
  • When being used to update keys in a manifest, existing key versions' public portions should match with the public keys written to the manifest, matching by creation time/key ID (both of which would provide the same matching).
  • Post-update, manifests must have exactly one packet encryption key version.
  • Post-update, manifests must have at least one batch signing key version.
  • Post-update, manifests' non-key data must match the pre-update manifest data exactly.
  • Post-update, manifests' key data for key versions that exist both pre- & post-update must match exactly.

from prio-server.

branlwyd avatar branlwyd commented on August 10, 2024

From discussion in #1114:

Specifically, if a packet encryption key got so far ahead of its related manifests that the key did not include the version advertised as primary in the manifest, we would be asking clients to encrypt with a key we no longer consider valid for decryption. And if a batch signing key got so far ahead of its related manifests that the primary key was not included in the manifest, we would be trying to sign data with a key that we do not recognize as valid for verification.

Both of these conditions can be detected by the key-rotator. We should include in our validations not writing keys that, if the key-rotator fails to write updated manifests, would leave the system in a non-working configuration.

from prio-server.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.