rubygems/rubygems — pull request #719 by tarcieri (2013-11-22 22:19:09+00:00)
Title: Support for The Upgrade Framework (TUF)

This PR contains an implementation of a client for The Upgrade Framework (TUF) which provides a complementary/supplemental security system for the existing metadata used by RubyGems.

Similar work is being done in Python to integrate TUF with PyPI:

https://github.com/theupdateframework/pep-on-pypi-with-tuf

TUF provides a security model for software update systems which uses a "least authority" approach with multiple roles with limited power and a combination of online and offline keys:

![TUF Trust Model](https://raw.github.com/theupdateframework/pep-on-pypi-with-tuf/master/figure1.png)

We (by which I mean @xaviershay ;) have also implemented server support for RubyGems.org which we'll be submitting in a separate PR.

There are a number of roles in TUF and the existing work doesn't implement all of them. Here's a checklist of what's been accomplished and what's needed:

- [ ] Gem::TUF::PublicKey
- [ ] Gem::TUF::PrivateKey/KeyStore?
- [ ] Gem::TUF::Signer/Verifier
- [ ] Gem::TUF::Root
- [ ] Gem::TUF::Targets
- [ ] Gem::TUF::Targets::Claimed (offline delegation to offline developer keys)
- [ ] Gem::TUF::Targets::RecentlyClaimed (online delegation to offline developer keys)
- [ ] Gem::TUF::Targets::Unclaimed (grandfather in old gems)
- [ ] Gem::TUF::Releases
- [ ] Gem::TUF::Timestamp
- [ ] Gem::RemoteFetcher support for TUF