Skip to content

Notary x.x.x Project Page

David Lawrence edited this page Jul 23, 2015 · 28 revisions

Schedule


  • 07/21/2015 - Code Freeze
  • 08/04/2015 - Release

Release Goals


Ship Notary Server "Alpha"

  • Release an “alpha” of a local key management tool that can sign and verify binary content.

Accommodate signing and verification in the Docker 1.8 client

The scope of these changes will be limited to the docker push and docker pull commands as these represent publishing and acquiring data to and from the public internet where the highest probability of tampering exists. This involves:

  • Updates to the CLI client to interact with Notary Server.
  • Updates to the CLI to interact with the local key management tool.
  • Updates to the interactions between the CLI and daemon to make use of, and provide, the information necessary to Trust.
  • Minor updates to the engine to make use of the known content size the Trust system will provide (N.B. the engine is already capable of pull by digest, the Trust system will make this the default way of acquiring content).

Ship Notary Server "Production"

  • Ship and deploy production ready versions of Notary Server and Rufus

Low Level Breakdown


FINAL TODOs FOR RELEASE:

  • Add key persistence with encryption to notary-signer.
  • Add upload validation to notary server (confirm TUF data is structurally correct and signed correctly).
  • Documentation (gotuf, notary-{server,signer,client}).
  • Sign all official repositories
  • CRITICAL: Re-enable expiry check in signature verification. It was disabled to test against the PyPI sample.
  • rewrite repo.go
  • make verifiers configurable for multiple algorithms
  • switch out to a better sql database and remove most of the transactions Users will sign targets. No need for SQL backend any more.
  • fix up dbstore to be more dynamic
  • integrate the idea of a caching location for the JSON files separate from the storage location of the unsigned targets No longer required. The server will not deal in unsigned targets metadata.
  • BONUS: add targets delegations, currently not supported
  • finish up the restart stuff to clean up old connections, possibly just integrate something pre-built
  • garant token authentication
  • integration with rewritten TUF code
  • finish and productionize "trustmanager" (key management client library/binary)
  • requires timestamping
  • client work (support export, etc)
  • test Publish
  • add support for key export
  • create keymanagement abstraction around keys (NotaryKeyManager)
  • Add support for targets key encryption
  • review and document keychain validation process
  • get rid of "TODOALGORITHM"
  • sort out Diogo's "XXX Remove this before shipping" item(s)
  • update key ID generation to match TUF methodology.
  • add persistence with encrypted storage of software private keys
  • move into notary repo
  • refactor cryptoservice to deduplicate with rufus
  • make rufus use data.KeyAlgorithms

docker (PRs are in)

  • Integration of TUF client
  • Integration of trustmanager
  • Updates to client <-> daemon communication to use/support TUF verification and signing
  • Updates to push and pull commands to do signing and verification of TUF data

Cross Repo

  • unify data types (especially keys) between rufus, vetinari, and go-tuf
  • documentation!
  • unify how we log
  • unify how we configure - Viper
  • ensure all integration points use interfaces to support future flexibility and dependency injection

New Code

  • custom cert validation tools for QDN scheme? (Diogo)
  • engine refactor to isolate distribution code (Derek completing for 1.8)
  • image signing Users will sign TUF targets. Functionally replaces image signing.

Acceptance Criteria

  • >80% test coverage

Sprint Goals


Sprint 19

(29 Jun 2015 - 10 Jul 2015)

Goal: the implementation is fully testable with pending merges:

  • docker UX is PR-ed
  • docker cli integration of notary library is PR-ed

Sprint 20

(13 Jul 2015 - 24 Jul 2015)

Tracking