Get your signature in as many
places as possible
• GPG can auto-download keys to verify sigs
• More ways to establish trust
Slide 30
Slide 30 text
It’s easy, so
why not?
Slide 31
Slide 31 text
Gems
Slide 32
Slide 32 text
x
Slide 33
Slide 33 text
Gem::Security
Slide 34
Slide 34 text
Default no verification
when installing gems
Slide 35
Slide 35 text
Uses OpenSSL keys
• Same sort of keys used for SSL / HTTPS keys
• Unfortunately, same sort of keys used for
SSL/HTTPS keys, which have no good
distribution system
Slide 36
Slide 36 text
Uses certificate authorities
• Doesn’t take advantage of much larger PGP
WoT
• Requires you to trust a CA manually
Slide 37
Slide 37 text
Private keys not
encrypted
Slide 38
Slide 38 text
Keys are self-signed
Slide 39
Slide 39 text
Need Trust Path
Slide 40
Slide 40 text
No Keyservers
Slide 41
Slide 41 text
Can't specify
system-wide trust
Slide 42
Slide 42 text
Signatures included in gem
pg-0.18.1.gem
!"" checksums.yaml.gz
!"" checksums.yaml.gz.sig
!"" data.tar.gz
!"" data.tar.gz.sig
!"" metadata.gz
#"" metadata.gz.sig
Slide 43
Slide 43 text
Required Reading
• Signing gems on Gem::Security docs (formatted)
• rubygems-developers mailing list thread on gem signing
• rubygems-openpgp
• We Need to Sign Ruby Gems! But How?
• Nobody Cares About Signed Gems (archive.org)
Slide 44
Slide 44 text
Who else?
Slide 45
Slide 45 text
Manually
Slide 46
Slide 46 text
Aptitude, Homebrew, etc.
automate this
• aptitude uses gpg to verify
• Homebrew checks SHAs of installed packages
• RVM distributes signature and automatically
verifies during installation
Slide 47
Slide 47 text
Need automatic verification
before installation
• Should verify signature
• Should be configurable to verify trust
• Should fail to install if unverifiable
Slide 48
Slide 48 text
Need stronger
Web of Trust
connections
throughout the community
Slide 49
Slide 49 text
Need stronger
Web of Trust
connections
throughout the community
Slide 50
Slide 50 text
better
tools
support
Slide 51
Slide 51 text
Rubygems
Slide 52
Slide 52 text
GitHub
commit 84d9f998dbbb514c6c127ba91e800c34e8885e35
gpg: Signature made Wed Jan 14 09:56:52 2015 CST using RSA key ID A0ACE70A
gpg: Good signature from "Caleb Thompson " [ultimate]
gpg: aka "Caleb Thompson " [ultimate]
gpg: aka "Caleb Thompson " [ultimate]
Author: Caleb Thompson
Date: Wed Jan 14 09:55:45 2015 -0600
Connect A0ACE70A and @calebthompson